<?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>100997</bug_id>
          
          <creation_ts>2012-11-01 16:12:23 -0700</creation_ts>
          <short_desc>Add application occlusion criterion to enable/disable process suppression on Mac</short_desc>
          <delta_ts>2012-12-07 14:50:41 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kiran Muppala">cmuppala</reporter>
          <assigned_to name="Kiran Muppala">cmuppala</assigned_to>
          <cc>abecsi</cc>
    
    <cc>ap</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>menard</cc>
    
    <cc>mrowe</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>756706</commentid>
    <comment_count>0</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-01 16:12:23 -0700</bug_when>
    <thetext>When App is occluded all WebKit2 processes should be eligible for suppression.  This behavior should be disabled by default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756707</commentid>
    <comment_count>1</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-01 16:12:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/12583536&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756730</commentid>
    <comment_count>2</comment_count>
      <attachid>171954</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-01 16:53:06 -0700</bug_when>
    <thetext>Created attachment 171954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756744</commentid>
    <comment_count>3</comment_count>
      <attachid>171954</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2012-11-01 17:13:36 -0700</bug_when>
    <thetext>Comment on attachment 171954
Patch

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

I&apos;ll let someone with more WebKit2 familiarity comment on the bulk of the patch, which is all about the IPC side of things. I&apos;ve provided feedback on some aspects related to process suppression.

&gt; Source/WebKit2/ChangeLog:3
&gt; +        Add App occlusion criterion to enable/disable process suppression on mac

App -&gt; application
mac -&gt; Mac

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.messages.in:33
&gt; +    SetAppIsOccluded(bool flag)

The abbreviation here isn&apos;t worth it IMO. App should be &quot;Application&quot; here and elsewhere in this patch.

&gt; Source/WebKit2/Shared/mac/ChildProcessMac.mm:29
&gt; +#import &lt;Foundation/Foundation.h&gt;

This #import isn&apos;t necessary. This is pulled in by our prefix headers.

&gt; Source/WebKit2/Shared/mac/ChildProcessMac.mm:36
&gt; +    if (m_appIsOccluded != flag) {
&gt; +        m_appIsOccluded = flag;

Our usual style is to prefer an early return rather than nesting the body of the method in an if like this.

&gt; Source/WebKit2/Shared/mac/ChildProcessMac.mm:41
&gt; +            enableSuppression(@&quot;App became Occluded&quot;);
&gt; +        else
&gt; +            disableSuppression(@&quot;App became Visible&quot;);

I don&apos;t think occluded and visible should be capitalized in this message.

&gt; Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.cpp:29
&gt; +#include &quot;WKAPICast.h&quot;

Is this include needed? I don&apos;t see anything that obviously uses it in this file.

&gt; Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp:168
&gt; +    if (WebContext::appIsOccluded())
&gt; +        m_connection-&gt;send(Messages::NetworkProcess::SetAppIsOccluded(true), 0);

The network process already disables suppression when it launches. Why does it need to be done again in didFinishLaunching?

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:234
&gt; +    if (WebContext::appIsOccluded())
&gt; +        m_connection-&gt;send(Messages::PluginProcess::SetAppIsOccluded(true), 0);

Same question here as with the network process case.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:278
&gt; +        for (size_t i = 0, count = contexts.size(); i &lt; count; ++i) {
&gt; +            contexts[i]-&gt;sendToAllProcesses(Messages::WebProcess::SetAppIsOccluded(false));
&gt; +        }

The braces aren&apos;t needed around the body of this loop.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:299
&gt; +        for (size_t i = 0, count = contexts.size(); i &lt; count; ++i) {
&gt; +            contexts[i]-&gt;sendToAllProcesses(Messages::WebProcess::SetAppIsOccluded(true));
&gt; +        }

The braces aren&apos;t needed around the body of this loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756808</commentid>
    <comment_count>4</comment_count>
      <attachid>171969</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-01 18:47:45 -0700</bug_when>
    <thetext>Created attachment 171969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756810</commentid>
    <comment_count>5</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-01 18:54:10 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 171954 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171954&amp;action=review
&gt; 
&gt; I&apos;ll let someone with more WebKit2 familiarity comment on the bulk of the patch, which is all about the IPC side of things. I&apos;ve provided feedback on some aspects related to process suppression.
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:3
&gt; &gt; +        Add App occlusion criterion to enable/disable process suppression on mac
&gt; 
&gt; App -&gt; application
&gt; mac -&gt; Mac
&gt; 

Fixed.

&gt; &gt; Source/WebKit2/NetworkProcess/NetworkProcess.messages.in:33
&gt; &gt; +    SetAppIsOccluded(bool flag)
&gt; 
&gt; The abbreviation here isn&apos;t worth it IMO. App should be &quot;Application&quot; here and elsewhere in this patch.
&gt; 

Fixed.

&gt; &gt; Source/WebKit2/Shared/mac/ChildProcessMac.mm:29
&gt; &gt; +#import &lt;Foundation/Foundation.h&gt;
&gt; 
&gt; This #import isn&apos;t necessary. This is pulled in by our prefix headers.
&gt; 

You are right, the file compiled without this and hence removed it.

&gt; &gt; Source/WebKit2/Shared/mac/ChildProcessMac.mm:36
&gt; &gt; +    if (m_appIsOccluded != flag) {
&gt; &gt; +        m_appIsOccluded = flag;
&gt; 
&gt; Our usual style is to prefer an early return rather than nesting the body of the method in an if like this.
&gt; 

Added early return and eliminated nesting.

&gt; &gt; Source/WebKit2/Shared/mac/ChildProcessMac.mm:41
&gt; &gt; +            enableSuppression(@&quot;App became Occluded&quot;);
&gt; &gt; +        else
&gt; &gt; +            disableSuppression(@&quot;App became Visible&quot;);
&gt; 
&gt; I don&apos;t think occluded and visible should be capitalized in this message.
&gt; 

Fixed.

&gt; &gt; Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.cpp:29
&gt; &gt; +#include &quot;WKAPICast.h&quot;
&gt; 
&gt; Is this include needed? I don&apos;t see anything that obviously uses it in this file.
&gt; 

Yeah, this wasn&apos;t necessary.  Removed in updated patch.

&gt; &gt; Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp:168
&gt; &gt; +    if (WebContext::appIsOccluded())
&gt; &gt; +        m_connection-&gt;send(Messages::NetworkProcess::SetAppIsOccluded(true), 0);
&gt; 
&gt; The network process already disables suppression when it launches. Why does it need to be done again in didFinishLaunching?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:234
&gt; &gt; +    if (WebContext::appIsOccluded())
&gt; &gt; +        m_connection-&gt;send(Messages::PluginProcess::SetAppIsOccluded(true), 0);
&gt; 
&gt; Same question here as with the network process case.

If during process launch, the application became occluded, then this will let the process know about it so that suppression can be enabled.  Unlike WebProcess, PluginProcess, NetworkProcess and SharedWorkerProcess don&apos;t queue messages during launch, so adding this check in didFinishLaunching is a sure way to update the process after launch.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:278
&gt; &gt; +        for (size_t i = 0, count = contexts.size(); i &lt; count; ++i) {
&gt; &gt; +            contexts[i]-&gt;sendToAllProcesses(Messages::WebProcess::SetAppIsOccluded(false));
&gt; &gt; +        }
&gt; 
&gt; The braces aren&apos;t needed around the body of this loop.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:299
&gt; &gt; +        for (size_t i = 0, count = contexts.size(); i &lt; count; ++i) {
&gt; &gt; +            contexts[i]-&gt;sendToAllProcesses(Messages::WebProcess::SetAppIsOccluded(true));
&gt; &gt; +        }
&gt; 
&gt; The braces aren&apos;t needed around the body of this loop.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756867</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2012-11-01 20:43:12 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; Same question here as with the network process case.
&gt; 
&gt; If during process launch, the application became occluded, then this will let the process know about it so that suppression can be enabled.  Unlike WebProcess, PluginProcess, NetworkProcess and SharedWorkerProcess don&apos;t queue messages during launch, so adding this check in didFinishLaunching is a sure way to update the process after launch.

My concern is that the calls to -disableAutomaticTermination: / -enableAutomaticTermination: need to be balanced. If -disableAutomaticTermination: is called twice during launch, once by the process during its launch, and once as a result of receiving the message sent within didFinishLaunching, how will the extra call be balanced out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756869</commentid>
    <comment_count>7</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-01 20:58:27 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; Same question here as with the network process case.
&gt; &gt; 
&gt; &gt; If during process launch, the application became occluded, then this will let the process know about it so that suppression can be enabled.  Unlike WebProcess, PluginProcess, NetworkProcess and SharedWorkerProcess don&apos;t queue messages during launch, so adding this check in didFinishLaunching is a sure way to update the process after launch.
&gt; 
&gt; My concern is that the calls to -disableAutomaticTermination: / -enableAutomaticTermination: need to be balanced. If -disableAutomaticTermination: is called twice during launch, once by the process during its launch, and once as a result of receiving the message sent within didFinishLaunching, how will the extra call be balanced out?

The member variable m_isApplicationOccluded protects against this.  Only when a message with occlusion state differing from the current value of m_isApplicationOccluded is received, is the assertion taken or released.  If the state matches current value, then the message has no effect.  This keeps the assertion balanced even if the messages are not balanced.  In fact the didFinishLaunching method first checks if the application has become occluded before sending a message, since otherwise the message has no effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756871</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2012-11-01 21:03:21 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; In fact the didFinishLaunching method first checks if the application has become occluded before sending a message, since otherwise the message has no effect.

Yeah, looking over the patch again I can see that my concern is nonsense. The application suppression parts of it look good. Hopefully you can find someone to look at the WebKit2 aspects soon!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757358</commentid>
    <comment_count>9</comment_count>
      <attachid>171969</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-11-02 11:11:17 -0700</bug_when>
    <thetext>Comment on attachment 171969
Patch

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

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.messages.in:33
&gt; +    SetApplicationIsOccluded(bool flag)

Receiving this message with true flag results in an -enableAutomaticTermination call. Why is it OK to ever automatically terminate NetworkProcess (or any of the other processes, for that matter)?

&gt; Source/WebKit2/Shared/ChildProcess.h:32
&gt; +OBJC_CLASS NSString;

I think that this should be in PLATFORM(MAC) for clarity.

&gt; Source/WebKit2/Shared/ChildProcess.h:67
&gt; +    static void disableSuppression(NSString *reason);
&gt; +    static void enableSuppression(NSString *reason);

Not sure why this is in ChildProcess. Won&apos;t main process need the same functionality?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757794</commentid>
    <comment_count>10</comment_count>
      <attachid>172185</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-02 17:39:09 -0700</bug_when>
    <thetext>Created attachment 172185
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757800</commentid>
    <comment_count>11</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-02 17:44:40 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 171969 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171969&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/NetworkProcess/NetworkProcess.messages.in:33
&gt; &gt; +    SetApplicationIsOccluded(bool flag)
&gt; 
&gt; Receiving this message with true flag results in an -enableAutomaticTermination call. Why is it OK to ever automatically terminate NetworkProcess (or any of the other processes, for that matter)?

The naming of the assertion is causing unnecessary confusion.

&gt; 
&gt; &gt; Source/WebKit2/Shared/ChildProcess.h:32
&gt; &gt; +OBJC_CLASS NSString;
&gt; 
&gt; I think that this should be in PLATFORM(MAC) for clarity.

I agree, although moving the below methods to a new Mac specific file made this issue go away.

&gt; 
&gt; &gt; Source/WebKit2/Shared/ChildProcess.h:67
&gt; &gt; +    static void disableSuppression(NSString *reason);
&gt; &gt; +    static void enableSuppression(NSString *reason);
&gt; 
&gt; Not sure why this is in ChildProcess. Won&apos;t main process need the same functionality?

Although it isn&apos;t needed in this patch, you are right, UI process will also need these.  So, I moved them to a new file called ProcessUtilities.h  under Platform/mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757817</commentid>
    <comment_count>12</comment_count>
      <attachid>172188</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-02 18:06:23 -0700</bug_when>
    <thetext>Created attachment 172188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757821</commentid>
    <comment_count>13</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-02 18:08:15 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Created an attachment (id=172188) [details]
&gt; Patch

Added a comment to the assertion helper methods to reduce confusion.  Could not use a assertion because the UI process can have automatic termination support enabled already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757884</commentid>
    <comment_count>14</comment_count>
      <attachid>172188</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-11-02 21:21:06 -0700</bug_when>
    <thetext>Comment on attachment 172188
Patch

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

&gt; Source/WebKit2/ChangeLog:15
&gt; +        * Platform/mac/ProcessUtilities.h: Added.
&gt; +        (WebKit): Added helper methods to take and release assertion for process suppression.

A somewhat more common model is to have a shared header, and per-port implementations. In cases when most functions are different, we sometimes use separate headers with the same name, but I don&apos;t expect this to be the case for process utilities.

&gt; Source/WebKit2/Platform/mac/ProcessUtilities.mm:34
&gt; +    // Note: AutoTerminationSupport is currently not enabled for ChildProcesses.

I don&apos;t think that &quot;Note&quot; is useful in comment text. All comments are notes. Also, this should be stronger: &quot;The below call assumes that AutoTerminationSupport is not enabled for ChildProcesses&quot;. Otherwise, this factual statement sounds like it&apos;s suggesting that auto termination should be enabled.

&gt; Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.h:35
&gt; +WK_EXPORT void WKContextSetProcessSuppressionSupportEnabled(bool);

Shouldn&apos;t WKContext functions be per-context?

This really looks like a preference to me, in fact. Can you use WKPreferences for it?

&gt; Source/WebKit2/UIProcess/Network/NetworkProcessManager.h:61
&gt; +template&lt;typename U&gt; inline void NetworkProcessManager::sendToProcess(const U&amp; message)

I&apos;m not sure why this is needed. We already have per-process messages such as InitializeNetworkProcess, how is this different?

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h:70
&gt; +template&lt;typename U&gt; inline void PluginProcessManager::sendToAllProcesses(const U&amp; message)

We should really think about a better name for these. A &quot;sendToAllProcesses&quot; function is too tempting to use everywhere, while in reality, there are many potential flavors - drop or queue messages to invalid processes, wake suspended processes to message them or not...

&gt; Source/WebKit2/UIProcess/SharedWorkers/SharedWorkerProcessProxy.cpp:171
&gt; +#if PLATFORM(MAC)
&gt; +    if (WebContext::applicationIsOccluded())
&gt; +        m_connection-&gt;send(Messages::SharedWorkerProcess::SetApplicationIsOccluded(true), 0);
&gt; +#endif

All this copy/pasted code is making me sad.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:63
&gt; +bool WebContext::s_processSuppressionSupportEnabled = false;

This too should be in preferences, not a standalone boolean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758910</commentid>
    <comment_count>15</comment_count>
      <attachid>172410</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-05 14:35:12 -0800</bug_when>
    <thetext>Created attachment 172410
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758933</commentid>
    <comment_count>16</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-05 14:59:12 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 172188 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172188&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:15
&gt; &gt; +        * Platform/mac/ProcessUtilities.h: Added.
&gt; &gt; +        (WebKit): Added helper methods to take and release assertion for process suppression.
&gt; 
&gt; A somewhat more common model is to have a shared header, and per-port implementations. In cases when most functions are different, we sometimes use separate headers with the same name, but I don&apos;t expect this to be the case for process utilities.
&gt; 

Fixed. Moved ProcessUtilities.h to Platform folder and renamed ProcessUtilities.mm to ProcessUtilitiesMac.mm.

&gt; &gt; Source/WebKit2/Platform/mac/ProcessUtilities.mm:34
&gt; &gt; +    // Note: AutoTerminationSupport is currently not enabled for ChildProcesses.
&gt; 
&gt; I don&apos;t think that &quot;Note&quot; is useful in comment text. All comments are notes. Also, this should be stronger: &quot;The below call assumes that AutoTerminationSupport is not enabled for ChildProcesses&quot;. Otherwise, this factual statement sounds like it&apos;s suggesting that auto termination should be enabled.
&gt; 

Yeah, my comment did incorrectly suggest that AutoTerminationSupport should be enabled for ChildProcesses.  Thanks for providing a better one to replace it with.

&gt; &gt; Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.h:35
&gt; &gt; +WK_EXPORT void WKContextSetProcessSuppressionSupportEnabled(bool);
&gt; 
&gt; Shouldn&apos;t WKContext functions be per-context?
&gt; 
&gt; This really looks like a preference to me, in fact. Can you use WKPreferences for it?

I did look into WKPreferences after your feedback, but I could not move the function since WKPreferences is tied to a page group, but this particular setting is global and applies to all contexts and processes.  ProcessModel is a similar setting that applies to contexts but unlike ProcessModel process suppression support is easier to set across all child processes regardless of context or process type.

It is possible to provide a setting on a per context basis too, but then a similar setting would be needed for each process type.  This added granularity of enabling or disabling process suppression is unlikely to be used.  Since, the goal is to enable it for all processes and fix any bugs using assertions rather than disabling it on a per context or process type basis.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Network/NetworkProcessManager.h:61
&gt; &gt; +template&lt;typename U&gt; inline void NetworkProcessManager::sendToProcess(const U&amp; message)
&gt; 
&gt; I&apos;m not sure why this is needed. We already have per-process messages such as InitializeNetworkProcess, how is this different?

This is only there because NetworkProcessManager does not expose the pointer to the NetworkProcess itself.  Since PluginProcessManager and SharedWorkerProcessManager also didn&apos;t expose pointers to their underlying processes, I didn&apos;t add a getter to NetworkProcessManager either.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h:70
&gt; &gt; +template&lt;typename U&gt; inline void PluginProcessManager::sendToAllProcesses(const U&amp; message)
&gt; 
&gt; We should really think about a better name for these. A &quot;sendToAllProcesses&quot; function is too tempting to use everywhere, while in reality, there are many potential flavors - drop or queue messages to invalid processes, wake suspended processes to message them or not...
&gt; 

Ok, I renamed this and SharedWorkerProcessManger::sendToAllProcesses to &quot;sendToAllValidProcesses&quot; and also added as similar method to WebContext.

&gt; &gt; Source/WebKit2/UIProcess/SharedWorkers/SharedWorkerProcessProxy.cpp:171
&gt; &gt; +#if PLATFORM(MAC)
&gt; &gt; +    if (WebContext::applicationIsOccluded())
&gt; &gt; +        m_connection-&gt;send(Messages::SharedWorkerProcess::SetApplicationIsOccluded(true), 0);
&gt; &gt; +#endif
&gt; 
&gt; All this copy/pasted code is making me sad.
&gt; 

Yeah, the copy/pasted code speaks to a more fundamental problem.  As far as I know, it isn&apos;t possible to specify messages common to all child processes.  So, the actual message type is distinct even though they all convey the same information.  This means, even if I add a base class, say ChildProcessProxy, the actual message needs to be sent in the derived class to preserve the type information of the Message.  i.e Messages::SharedWorkerProcess::SetApplicationIsOccluded vs Messages::WebProcess::SetApplicationIsOccluded.  I am sure it would be possible to add support for specifying messages received by ChildProcess itself.  But, that is not a trivial change and I don&apos;t claim to know how to do it either.

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:63
&gt; &gt; +bool WebContext::s_processSuppressionSupportEnabled = false;
&gt; 
&gt; This too should be in preferences, not a standalone boolean.

This is tied to the method WKContextSetProcessSuppressionSupportEnabled(bool) that I commented on above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759009</commentid>
    <comment_count>17</comment_count>
      <attachid>172433</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-05 16:26:20 -0800</bug_when>
    <thetext>Created attachment 172433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759011</commentid>
    <comment_count>18</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-05 16:27:20 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Created an attachment (id=172433) [details]
&gt; Patch

Fixed merge conflict in WebKit2.xcodeproj/project.pbxproj.  No other changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759026</commentid>
    <comment_count>19</comment_count>
      <attachid>172433</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-11-05 16:45:22 -0800</bug_when>
    <thetext>Comment on attachment 172433
Patch

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

&gt; This is only there because NetworkProcessManager does not expose the pointer to the NetworkProcess itself.  Since PluginProcessManager and SharedWorkerProcessManager also didn&apos;t expose pointers to their underlying processes, I didn&apos;t add a getter to NetworkProcessManager either.

I see. I suggest following the existing model then, and adding a function that sends the message internally, instead of exposing a &quot;sendToProcess&quot; function. For example, it may well make sense to send a blunt SIGSTOP to some of the processes instead of enabling automatic suspension. Knowledge about this should be encapsulated in process manager.

&gt; Source/WebKit2/Platform/mac/ProcessUtilitiesMac.mm:34
&gt; +    // The following call assumes that AutoTerminationSupport is not enabled for ChildProcesses.

This is the text I suggested, but mentioning ChildProcess does not make sense in ProcessUtilities. This applies to any process where this is called, whether it is a child process or not.

&gt; Source/WebKit2/UIProcess/API/C/WKContext.cpp:332
&gt; +void WKContextSetProcessSuppressionSupportEnabled(bool enable)
&gt; +{
&gt; +    WebContext::setProcessSuppressionSupportEnabled(enable);
&gt; +}

As long as the function name starts with &quot;WKContext&quot;, it should operate on WKContexts. It&apos;s just a naming scheme.

But this doesn&apos;t really feel like a per-context API.

I&apos;m sorry that I cannot suggest what to do here. Perhaps you should consider how the feature will evolve in near future, and make an API for that, even if not fully implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760042</commentid>
    <comment_count>20</comment_count>
      <attachid>172647</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-06 14:18:23 -0800</bug_when>
    <thetext>Created attachment 172647
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760050</commentid>
    <comment_count>21</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-06 14:25:41 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 172433 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172433&amp;action=review
&gt; 
&gt; &gt; This is only there because NetworkProcessManager does not expose the pointer to the NetworkProcess itself.  Since PluginProcessManager and SharedWorkerProcessManager also didn&apos;t expose pointers to their underlying processes, I didn&apos;t add a getter to NetworkProcessManager either.
&gt; 
&gt; I see. I suggest following the existing model then, and adding a function that sends the message internally, instead of exposing a &quot;sendToProcess&quot; function. For example, it may well make sense to send a blunt SIGSTOP to some of the processes instead of enabling automatic suspension. Knowledge about this should be encapsulated in process manager.

Removed generic send to process methods and replaced it with specific method for application occlusion message on network, plugin and shared worker process.  For WebProcess, since the generic message send function already exists, i used that itself.

&gt; 
&gt; &gt; Source/WebKit2/Platform/mac/ProcessUtilitiesMac.mm:34
&gt; &gt; +    // The following call assumes that AutoTerminationSupport is not enabled for ChildProcesses.
&gt; 
&gt; This is the text I suggested, but mentioning ChildProcess does not make sense in ProcessUtilities. This applies to any process where this is called, whether it is a child process or not.
&gt; 

I replaced these two functions with a class to manage the assertion.  Added a more general comment too.

&gt; &gt; Source/WebKit2/UIProcess/API/C/WKContext.cpp:332
&gt; &gt; +void WKContextSetProcessSuppressionSupportEnabled(bool enable)
&gt; &gt; +{
&gt; &gt; +    WebContext::setProcessSuppressionSupportEnabled(enable);
&gt; &gt; +}
&gt; 
&gt; As long as the function name starts with &quot;WKContext&quot;, it should operate on WKContexts. It&apos;s just a naming scheme.
&gt; 
&gt; But this doesn&apos;t really feel like a per-context API.
&gt; 
&gt; I&apos;m sorry that I cannot suggest what to do here. Perhaps you should consider how the feature will evolve in near future, and make an API for that, even if not fully implemented.

I removed the API methods.  As you said, they should operate on WKContexts and making the implementation complex, I am using a private default for now.  Sam Weinig said it is ok to do this when we don&apos;t expect users to change the setting.  Once process suppression is enabled by default, it will be easier to correctly interpret a per-context setting and hence I will add a API at that time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760051</commentid>
    <comment_count>22</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-06 14:27:42 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #19)
&gt; &gt; (From update of attachment 172433 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172433&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; This is only there because NetworkProcessManager does not expose the pointer to the NetworkProcess itself.  Since PluginProcessManager and SharedWorkerProcessManager also didn&apos;t expose pointers to their underlying processes, I didn&apos;t add a getter to NetworkProcessManager either.
&gt; &gt; 
&gt; &gt; I see. I suggest following the existing model then, and adding a function that sends the message internally, instead of exposing a &quot;sendToProcess&quot; function. For example, it may well make sense to send a blunt SIGSTOP to some of the processes instead of enabling automatic suspension. Knowledge about this should be encapsulated in process manager.
&gt; 
&gt; Removed generic send to process methods and replaced it with specific method for application occlusion message on network, plugin and shared worker process.  For WebProcess, since the generic message send function already exists, i used that itself.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/Platform/mac/ProcessUtilitiesMac.mm:34
&gt; &gt; &gt; +    // The following call assumes that AutoTerminationSupport is not enabled for ChildProcesses.
&gt; &gt; 
&gt; &gt; This is the text I suggested, but mentioning ChildProcess does not make sense in ProcessUtilities. This applies to any process where this is called, whether it is a child process or not.
&gt; &gt; 
&gt; 
&gt; I replaced these two functions with a class to manage the assertion.  Added a more general comment too.
&gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/C/WKContext.cpp:332
&gt; &gt; &gt; +void WKContextSetProcessSuppressionSupportEnabled(bool enable)
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    WebContext::setProcessSuppressionSupportEnabled(enable);
&gt; &gt; &gt; +}
&gt; &gt; 
&gt; &gt; As long as the function name starts with &quot;WKContext&quot;, it should operate on WKContexts. It&apos;s just a naming scheme.
&gt; &gt; 
&gt; &gt; But this doesn&apos;t really feel like a per-context API.
&gt; &gt; 
&gt; &gt; I&apos;m sorry that I cannot suggest what to do here. Perhaps you should consider how the feature will evolve in near future, and make an API for that, even if not fully implemented.
&gt; 
&gt; I removed the API methods.  As you said, they should operate on WKContexts and making the implementation complex, I am using a private default for now.  Sam Weinig said it is ok to do this when we don&apos;t expect users to change the setting.  Once process suppression is enabled by default, it will be easier to correctly interpret a per-context setting and hence I will add a API at that time.

I meant to say, and *instead of* making the implementation complex, above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760072</commentid>
    <comment_count>23</comment_count>
      <attachid>172647</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-11-06 14:48:58 -0800</bug_when>
    <thetext>Comment on attachment 172647
Patch

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

&gt; I replaced these two functions with a class to manage the assertion.

I don&apos;t like this change. In object oriented design, a class is supposed to be something that encapsulates state and behaviors. A  &quot;suppression disabler&quot; is hardly such a thing, and it barely parses as English.

This design pattern is so useful for RAII that it&apos;s widely used anyway, but there is no RAII here as far as I can tell, just a function call disguised as method call.

Looks good to me otherwise.

&gt; Source/WebKit2/ChangeLog:33
&gt; +        * Shared/ChildProcess.h:
&gt; +        (WebKit):
&gt; +        (ChildProcess):

ChangeLogs are meant to be read (and sometimes searched) by humans, so if prepare-ChangeLog generates useless lines like these, it&apos;s desirable to correct it manually for best results.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:314
&gt; +    // A secret default until process suppression is enabled by default, at which point a context setting can be added with the

I would have said &quot;temporary&quot;, not &quot;secret&quot;. It&apos;s right here in plain sight, not secret at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760145</commentid>
    <comment_count>24</comment_count>
      <attachid>172667</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-06 15:59:13 -0800</bug_when>
    <thetext>Created attachment 172667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760154</commentid>
    <comment_count>25</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-06 16:05:04 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 172647 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172647&amp;action=review
&gt; 
&gt; &gt; I replaced these two functions with a class to manage the assertion.
&gt; 
&gt; I don&apos;t like this change. In object oriented design, a class is supposed to be something that encapsulates state and behaviors. A  &quot;suppression disabler&quot; is hardly such a thing, and it barely parses as English.
&gt; 
&gt; This design pattern is so useful for RAII that it&apos;s widely used anyway, but there is no RAII here as far as I can tell, just a function call disguised as method call.
&gt; 
&gt; Looks good to me otherwise.
&gt; 

I removed this class and replaced it with member functions within ChildProcess.  You commented in a previous patch that these functions could be used in UI process and hence I had moved them out of here.  But i don&apos;t foresee using these functions without the use of a RAII class in the UI process.  I will add the class back when needed for the UI process.

&gt; &gt; Source/WebKit2/ChangeLog:33
&gt; &gt; +        * Shared/ChildProcess.h:
&gt; &gt; +        (WebKit):
&gt; &gt; +        (ChildProcess):
&gt; 
&gt; ChangeLogs are meant to be read (and sometimes searched) by humans, so if prepare-ChangeLog generates useless lines like these, it&apos;s desirable to correct it manually for best results.
&gt; 

Fixed.  Thanks for explaining that output of prepare-changelog acts as a guide rather than being final.

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:314
&gt; &gt; +    // A secret default until process suppression is enabled by default, at which point a context setting can be added with the
&gt; 
&gt; I would have said &quot;temporary&quot;, not &quot;secret&quot;. It&apos;s right here in plain sight, not secret at all.

Changed to &quot;temporary&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760161</commentid>
    <comment_count>26</comment_count>
      <attachid>172667</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-11-06 16:13:07 -0800</bug_when>
    <thetext>Comment on attachment 172667
Patch

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

r=mw, thank you for your patience.

&gt; Source/WebKit2/ChangeLog:38
&gt; +        (NetworkProcessProxy):

I didn&apos;t make it clear that my comment was general, not just about those two lines.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:293
&gt; +            contexts[i]-&gt;sendToAllProcesses(Messages::WebProcess::SetApplicationIsOccluded(true));

Yes, it makes sense to keep the message sent directly to WebProcesses, because WebContext is a &quot;manager&quot; for those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760174</commentid>
    <comment_count>27</comment_count>
      <attachid>172673</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-06 16:18:30 -0800</bug_when>
    <thetext>Created attachment 172673
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760179</commentid>
    <comment_count>28</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-06 16:22:08 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 172667 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172667&amp;action=review
&gt; 
&gt; r=mw, thank you for your patience.
&gt; 

No worries.  I learnt a lot about WKPreferences, API convention among other things due to your feedback.

&gt; &gt; Source/WebKit2/ChangeLog:38
&gt; &gt; +        (NetworkProcessProxy):
&gt; 
&gt; I didn&apos;t make it clear that my comment was general, not just about those two lines.
&gt; 

My bad.  I thought I removed all of them.  I removed this and couple more similar lines.

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:293
&gt; &gt; +            contexts[i]-&gt;sendToAllProcesses(Messages::WebProcess::SetApplicationIsOccluded(true));
&gt; 
&gt; Yes, it makes sense to keep the message sent directly to WebProcesses, because WebContext is a &quot;manager&quot; for those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760180</commentid>
    <comment_count>29</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-06 16:22:36 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; Created an attachment (id=172673) [details]
&gt; Patch

Removed unhelpful lines in ChangeLog.  No other changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760230</commentid>
    <comment_count>30</comment_count>
      <attachid>172673</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-06 17:18:20 -0800</bug_when>
    <thetext>Comment on attachment 172673
Patch

Clearing flags on attachment: 172673

Committed r133699: &lt;http://trac.webkit.org/changeset/133699&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760231</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-06 17:18:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786175</commentid>
    <comment_count>32</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-07 14:39:51 -0800</bug_when>
    <thetext>&gt; I see. I suggest following the existing model then, and adding a function that sends the message internally, instead of exposing a &quot;sendToProcess&quot; function. For example, it may well make sense to send a blunt SIGSTOP to some of the processes instead of enabling automatic suspension. Knowledge about this should be encapsulated in process manager.

FWIW, I&apos;m adding a process() accessor to NetworkProcessManager now, so that messages to it could be sent easier.

But it probably still makes sense to keep setApplicationIsOccluded() as function on NetworkProcessManager, as it&apos;s part of process management that may or may not be implemented by sending a regular message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786190</commentid>
    <comment_count>33</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-12-07 14:50:41 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; &gt; I see. I suggest following the existing model then, and adding a function that sends the message internally, instead of exposing a &quot;sendToProcess&quot; function. For example, it may well make sense to send a blunt SIGSTOP to some of the processes instead of enabling automatic suspension. Knowledge about this should be encapsulated in process manager.
&gt; 
&gt; FWIW, I&apos;m adding a process() accessor to NetworkProcessManager now, so that messages to it could be sent easier.
&gt; 
&gt; But it probably still makes sense to keep setApplicationIsOccluded() as function on NetworkProcessManager, as it&apos;s part of process management that may or may not be implemented by sending a regular message.

Another reason to keep it in the process manager is if there is a network process per context in the future.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171954</attachid>
            <date>2012-11-01 16:53:06 -0700</date>
            <delta_ts>2012-11-01 18:47:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100997-20121101165127.patch</filename>
            <type>text/plain</type>
            <size>42947</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWMyMzg3OTQwZTAwZWQz
ZGNhYmIyNDI3ZTM1MDRkMGFlZGU1NjMwZC4uMzdlMzMzNDI5NTg5MTg3NTM3Nzk1YTAyZWQ5ODUw
NzZiMWQyZDFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEyLTExLTAxICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBBcHAgb2NjbHVz
aW9uIGNyaXRlcmlvbiB0byBlbmFibGUvZGlzYWJsZSBwcm9jZXNzIHN1cHByZXNzaW9uIG9uIG1h
YworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwOTk3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlk
ZSBzdXBwb3J0IGZvciBlbmFibGluZyBhbmQgZGlzYWJsaW5nIHByb2Nlc3Mgc3VwcHJlc3Npb24g
d2hlbiBhcHAgaXMgY29tcGxldGVseSBvY2NsdWRlZCBvbiBtYWMuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjogQWRkZWQgbWVzc2FnZSB0byB1
cGRhdGUgYXBwIG9jY2x1c2lvbiBzdGF0dXMuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFj
L05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbTogCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzTWFpbik6IFJlcGxhY2VkIGRpcmVjdCBjYWxsIHRvIHRha2UgYXNzZXJ0aW9uIHdpdGggYQor
ICAgICAgICBlcXVpdmFsZW50LCBzaW1wbGVyIHRvIHVzZSwgaGVscGVyIG1ldGhvZCBpbiBDaGls
ZFByb2Nlc3MuCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLm1lc3NhZ2Vz
LmluOiBBZGRlZCBtZXNzYWdlIHRvIHVwZGF0ZSBhcHAgb2NjbHVzaW9uIHN0YXR1cy4KKyAgICAg
ICAgKiBQbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFpbk1hYy5tbTogCisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluKTogUmVwbGFjZWQgZGlyZWN0IGNhbGwgdG8gdGFr
ZSBhc3NlcnRpb24gd2l0aCBhCisgICAgICAgIGVxdWl2YWxlbnQsIHNpbXBsZXIgdG8gdXNlLCBo
ZWxwZXIgbWV0aG9kIGluIENoaWxkUHJvY2Vzcy4KKyAgICAgICAgKiBTaGFyZWQvQ2hpbGRQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpDaGlsZFByb2Nlc3MpOiBJ
bml0aWFsaXplIGFwcCBvY2NsdXNpb24gc3RhdHVzIHRvIGZhbHNlLgorICAgICAgICAqIFNoYXJl
ZC9DaGlsZFByb2Nlc3MuaDoKKyAgICAgICAgKENoaWxkUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OkNoaWxkUHJvY2Vzczo6YXBwSXNPY2NsdWRlZCk6CisgICAgICAgICogU2hhcmVkL21hYy9D
aGlsZFByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpD
aGlsZFByb2Nlc3M6OnNldEFwcElzT2NjbHVkZWQpOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFBy
b2Nlc3M6OmRpc2FibGVTdXBwcmVzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vz
czo6ZW5hYmxlU3VwcHJlc3Npb24pOgorICAgICAgICBBZGRlZCBnZXR0ZXIgYW5kIHNldHRlciBm
b3IgYXBwIG9jY2x1c2lvbiBzdGF0dXMgYW5kIGhlbHBlciBtZXRob2RzIHRvIGVuYWJsZSBhbmQg
ZGlzYWJsZSBzdXBwcmVzc2lvbi4KKyAgICAgICAgKiBTaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJl
ZFdvcmtlclByb2Nlc3MubWVzc2FnZXMuaW46IEFkZGVkIG1lc3NhZ2UgdG8gdXBkYXRlIGFwcCBv
Y2NsdXNpb24gc3RhdHVzLgorICAgICAgICAqIFNoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJl
ZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tOiAKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkV29ya2Vy
UHJvY2Vzc01haW4pOiBSZXBsYWNlZCBkaXJlY3QgY2FsbCB0byB0YWtlIGFzc2VydGlvbiB3aXRo
IGEKKyAgICAgICAgZXF1aXZhbGVudCwgc2ltcGxlciB0byB1c2UsIGhlbHBlciBtZXRob2QgaW4g
Q2hpbGRQcm9jZXNzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJp
dmF0ZU1hYy5jcHA6CisgICAgICAgIChXS0NvbnRleHRTZXRQcm9jZXNzU3VwcHJlc3Npb25TdXBw
b3J0RW5hYmxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2
YXRlTWFjLmg6CisgICAgICAgIEFkZGVkIHByaXZhdGUgQVBJIHRvIGVuYWJsZSBwcm9jZXNzIHN1
cHByZXNzaW9uIHN1cHBvcnQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NNYW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoTmV0d29ya1Byb2Nl
c3NNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NNYW5hZ2VyOjpzZW5k
VG9Qcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNo
TGF1bmNoaW5nKTogVXBkYXRlIGFwcCBvY2NsdXNpb24gc3RhdHVzIHBvc3QgbGF1bmNoLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6aXNWYWxpZCk6CisgICAgICAgIChOZXR3b3Jr
UHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OnNlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NNYW5hZ2VyLmg6CisgICAgICAgIChQbHVnaW5Qcm9jZXNzTWFuYWdlcik6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzZW5kVG9BbGxQcm9jZXNzZXMpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEZp
bmlzaExhdW5jaGluZyk6IFVwZGF0ZSBhcHAgb2NjbHVzaW9uIHN0YXR1cyBwb3N0IGxhdW5jaC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5Ojppc1ZhbGlkKToKKyAgICAgICAgKFBsdWdp
blByb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzUHJveHk6OnNlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TaGFyZWRXb3JrZXJz
L1NoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRX
b3JrZXJQcm9jZXNzTWFuYWdlcjo6c2VuZFRvQWxsUHJvY2Vzc2VzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6
IFVwZGF0ZSBhcHAgb2NjbHVzaW9uIHN0YXR1cyBwb3N0IGxhdW5jaC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5Ojppc1ZhbGlkKToKKyAgICAgICAgKFNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OnNlbmQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJDb250ZXh0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmFwcElzT2NjbHVk
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpwcm9jZXNzU3VwcHJlc3Npb25TdXBw
b3J0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb250ZXh0KToKKyAgICAgICAgQWRkZWQgZ2V0dGVy
IGZvciBhcHAgb2NjbHVzaW9uIHN0YXR1cyBhbmQgcHJvY2VzcyBzdXBwcmVzc2lvbiBzdXBwb3J0
IGVuYWJsZWQgc3RhdHVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6
IFVwZGF0ZSBhcHAgb2NjbHVzaW9uIHN0YXR1cyBwb3N0IGxhdW5jaC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW06CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZXh0OjphcHBCZWNhbWVWaXNpYmxlKTogCisgICAgICAgIChXZWJLaXQ6
OldlYkNvbnRleHQ6OmFwcEJlY2FtZU9jY2x1ZGVkKToKKyAgICAgICAgQWRkZWQgbm90aWZpY2F0
aW9uIGhhbmRsZXJzIHRvIG5vdGlmeSBub24gVUkgV2ViS2l0MiBwcm9jZXNzZXMgb2YgdGhlIGNo
YW5nZSBpbiBhcHAgb2NjbHVzaW9uIHN0YXR1cy4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dDo6cmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHQ6OnVucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycyk6
CisgICAgICAgIEhlbHBlciBmdW5jdGlvbnMgdG8gcmVnaXN0ZXIgYW5kIHVucmVnaXN0ZXIgYXBw
IG9jY2x1c2lvbiBub3RpZmljYXRpb24gaGFuZGxlcnMuCisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHQ6OnNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKTogQWRkZWQgc2V0dGVy
IGZvciBwcm9jZXNzIHN1cHByZXNzaW9uCisgICAgICAgIHN1cHBvcnQgZW5hYmxlZC4gIFJlZ2lz
dGVycyBvciB1bnJlZ2lzdGVycyBvY2NsdXNpb24gbm90aWZpY2F0aW9uIGhhbmRsZXJzIGFjY29y
ZGluZyB0byB0aGUgbmV3IHNldHRpbmcuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bjogQWRkZWQgbWVzc2FnZSB0byB1cGRhdGUgYXBwIG9jY2x1c2lvbiBzdGF0dXMuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tOgorICAgICAgICAo
V2ViS2l0OjpJbml0aWFsaXplV2ViUHJvY2Vzcyk6IFJlcGxhY2VkIGRpcmVjdCBjYWxsIHRvIHRh
a2UgYXNzZXJ0aW9uIHdpdGggYQorICAgICAgICBlcXVpdmFsZW50LCBzaW1wbGVyIHRvIHVzZSwg
aGVscGVyIG1ldGhvZCBpbiBDaGlsZFByb2Nlc3MuCisKIDIwMTItMTAtMzEgIEFsZXhhbmRydSBD
aGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgogCiAgICAgICAgIEN1c3RvbUZpbHRlck9wZXJh
dGlvbiBwYXJhbWV0ZXJzIGxpc3QgaXMgbm90IGRlY29kZWQgY29ycmVjdGx5IGluIENvb3JkaW5h
dGVkR3JhcGhpY3NBcmd1bWVudENvZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAwMjk1MzZhMzQx
MjA1ZTQyNDVjMmE4MjY1YWQ3YzFhOGYyODI5MzVmLi43YzJlNWMzYmFhYWY3YmNhN2NkNDFkOGQ0
NzJjNmZhYzU0YmQxN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjgsNiArMjgsMTAgQEAgbWVz
c2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgewogCiAgICAgIyBDcmVhdGVzIGEgY29ubmVjdGlvbiBm
b3IgY29tbXVuaWNhdGlvbiB3aXRoIGEgV2ViUHJvY2VzcwogICAgIENyZWF0ZU5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCkKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBTZXRBcHBJc09j
Y2x1ZGVkKGJvb2wgZmxhZykKKyNlbmRpZgogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9O
ZXR3b3JrUHJvY2Vzc01haW5NYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9t
YWMvTmV0d29ya1Byb2Nlc3NNYWluTWFjLm1tCmluZGV4IDdjMzhiOTYwODg5MGI3ZjIxNGVkN2Nh
YTg3NjAwMzFhNjJjNjFlZWEuLjM0NjQ2MzlhMWM1NjUxOWY0MmEyOGI5ZDk5YjU5MDhkNGNiZjIw
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3Jr
UHJvY2Vzc01haW5NYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFj
L05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbQpAQCAtODMsOSArODMsNyBAQCBpbnQgTmV0d29ya1By
b2Nlc3NNYWluKGNvbnN0IENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkKICAgICBXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7
CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLSAgICBbW05T
UHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRpc2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjpAIkRp
c2FibGUgTmV0d29ya1Byb2Nlc3MgQXV0byBUZXJtaW5hdGlvbiJdOwotI2VuZGlmCisgICAgQ2hp
bGRQcm9jZXNzOjpkaXNhYmxlU3VwcHJlc3Npb24oQCJOZXR3b3JrUHJvY2VzcyBMYXVuY2giKTsK
IAogICAgIC8vIEluaXRpYWxpemUgdGhlIG5ldHdvcmsgcHJvY2VzcyBjb25uZWN0aW9uLgogICAg
IE5ldHdvcmtQcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplKENvcmVJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIoc2VydmVyUG9ydCksIFJ1bkxvb3A6Om1haW4oKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggZTRlZjQ1MDcyNGJhMGE1ZWMwMTM5MjY1NzBlZjI0NTljNGM3ZDQ2My4uODFhNmUzNTIyNzhj
NTgzYThhMjRiMzllMzc5YWFjMTgxZDAyNzU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzgsNiArMzgs
MTAgQEAgbWVzc2FnZXMgLT4gUGx1Z2luUHJvY2VzcyB7CiAgICAgIyBBc2tzIHRoZSBwbHVnLWlu
IHRvIGNsZWFyIGRhdGEgZm9yIHRoZSBnaXZlbiBzaXRlcy4gVGhlIHBsdWctaW4gcHJvY2VzcyBz
ZW5kcyBiYWNrCiAgICAgIyBhIERpZENsZWFyU2l0ZURhdGEgbWVzc2FnZSB3aGVuIGRvbmUuCiAg
ICAgQ2xlYXJTaXRlRGF0YShWZWN0b3I8V1RGOjpTdHJpbmc+IHNpdGVzLCB1aW50NjRfdCBmbGFn
cywgdWludDY0X3QgbWF4QWdlSW5TZWNvbmRzLCB1aW50NjRfdCBjYWxsYmFja0lEKQorCisjaWYg
UExBVEZPUk0oTUFDKQorICAgIFNldEFwcElzT2NjbHVkZWQoYm9vbCBmbGFnKTsKKyNlbmRpZgog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFj
L1BsdWdpblByb2Nlc3NNYWluTWFjLm1tIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9t
YWMvUGx1Z2luUHJvY2Vzc01haW5NYWMubW0KaW5kZXggOTEyYjFjNGZiNWJiZjI0NWMxZWJmYWRi
OTQ3MjAwODlhZTJhMWRhMC4uYmU1MjkwMjgyYzcwYmQ1MGFhMGJlMzFlMWZhM2U2NThiZmJiY2Yw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJv
Y2Vzc01haW5NYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1
Z2luUHJvY2Vzc01haW5NYWMubW0KQEAgLTExNyw5ICsxMTcsNyBAQCBpbnQgUGx1Z2luUHJvY2Vz
c01haW4oY29uc3QgQ29tbWFuZExpbmUmIGNvbW1hbmRMaW5lKQogICAgIFdURjo6aW5pdGlhbGl6
ZU1haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIAot
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAotICAgIFtbTlNQcm9j
ZXNzSW5mbyBwcm9jZXNzSW5mb10gZGlzYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uOkAiRGlzYWJs
ZSBQbHVnaW5Qcm9jZXNzIEF1dG8gVGVybWluYXRpb24iXTsKLSNlbmRpZgorICAgIENoaWxkUHJv
Y2Vzczo6ZGlzYWJsZVN1cHByZXNzaW9uKEAiUGx1Z2luUHJvY2VzcyBMYXVuY2giKTsKIAogI2lm
IGRlZmluZWQoX19pMzg2X18pCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgc2hpbSBmb3IgMzItYml0
IG9ubHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCmluZGV4IGI2NWVlYmUy
Y2U0MjU1NzU0YTM0NzE3NWY4NjU5YWNiODNmNTMxMWUuLjg2NDFlZTRiMTMzN2E5MTZlYmQxYjFk
MjA1MmI1Nzc4ZDc5MDMyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGls
ZFByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3Bw
CkBAIC02MCw2ICs2MCw5IEBAIENoaWxkUHJvY2Vzczo6Q2hpbGRQcm9jZXNzKCkKICAgICA6IG1f
dGVybWluYXRpb25UaW1lb3V0KDApCiAgICAgLCBtX3Rlcm1pbmF0aW9uQ291bnRlcigwKQogICAg
ICwgbV90ZXJtaW5hdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNoaWxkUHJvY2Vz
czo6dGVybWluYXRpb25UaW1lckZpcmVkKQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1fYXBw
SXNPY2NsdWRlZChmYWxzZSkKKyNlbmRpZgogewogICAgIC8vIEZJWE1FOiBUaGUgdGVybWluYXRp
b24gdGltZXIgc2hvdWxkIG5vdCBiZSBzY2hlZHVsZWQgb24gdGhlIG1haW4gcnVuIGxvb3AuCiAg
ICAgLy8gSXQgd29uJ3Qgd29yayB3aXRoIHRoZSB0aHJlYWRlZCBtb2RlLCBidXQgaXQncyBub3Qg
cmVhbGx5IHVzZWZ1bCBhbnl3YXkgYXMgaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ2hpbGRQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNz
LmgKaW5kZXggOWVjMWE1MGQ5OTJmODAxY2U2NzQ0YzBhODQ1MjhmYjJmMWRiNzliNC4uODVjOGY3
ZDM5MmFjZWMzZTdjNjUzZTgxNTgyZTY5OWRjMjk5MTVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
aGlsZFByb2Nlc3MuaApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KIAorT0JKQ19DTEFTUyBOU1N0cmluZzsKKwog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIENoaWxkUHJvY2VzcyA6IHByb3RlY3RlZCBDb3Jl
SVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewpAQCAtNTcsNiArNTksMTQgQEAgcHVibGljOgogICAg
ICAgICBDaGlsZFByb2Nlc3MmIG1fY2hpbGRQcm9jZXNzOwogICAgIH07CiAKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgYm9vbCBhcHBJc09jY2x1ZGVkKCkgY29uc3QgeyByZXR1cm4gbV9hcHBJc09j
Y2x1ZGVkOyB9CisgICAgdm9pZCBzZXRBcHBJc09jY2x1ZGVkKGJvb2wgZmxhZyk7CisKKyAgICBz
dGF0aWMgdm9pZCBkaXNhYmxlU3VwcHJlc3Npb24oTlNTdHJpbmcgKnJlYXNvbik7CisgICAgc3Rh
dGljIHZvaWQgZW5hYmxlU3VwcHJlc3Npb24oTlNTdHJpbmcgKnJlYXNvbik7CisjZW5kaWYKKwog
ICAgIHN0YXRpYyB2b2lkIGRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKFdvcmtRdWV1ZSYs
IENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKIAogcHJvdGVjdGVkOgpAQCAtODAsNiArOTAsMTAgQEAg
cHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3Rlcm1pbmF0aW9uQ291bnRlcjsKIAogICAgIFdlYkNv
cmU6OlJ1bkxvb3A6OlRpbWVyPENoaWxkUHJvY2Vzcz4gbV90ZXJtaW5hdGlvblRpbWVyOworCisj
aWYgUExBVEZPUk0oTUFDKQorICAgIGJvb2wgbV9hcHBJc09jY2x1ZGVkOworI2VuZGlmCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9DaGls
ZFByb2Nlc3NNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE0ODA1ZDA1NzU1M2EwMTMyYjQ5ZWI0OTJmNjJl
YWZlMWM1MGVlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
Q2hpbGRQcm9jZXNzTWFjLm1tCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIkNoaWxkUHJvY2Vzcy5oIgorCisjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgQ2hpbGRQcm9j
ZXNzOjpzZXRBcHBJc09jY2x1ZGVkKGJvb2wgZmxhZykKK3sKKyAgICBpZiAobV9hcHBJc09jY2x1
ZGVkICE9IGZsYWcpIHsKKyAgICAgICAgbV9hcHBJc09jY2x1ZGVkID0gZmxhZzsKKyNpZiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICAgICAgaWYgKG1fYXBwSXNP
Y2NsdWRlZCkKKyAgICAgICAgICAgIGVuYWJsZVN1cHByZXNzaW9uKEAiQXBwIGJlY2FtZSBPY2Ns
dWRlZCIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkaXNhYmxlU3VwcHJlc3Npb24oQCJB
cHAgYmVjYW1lIFZpc2libGUiKTsKKyNlbmRpZgorICAgIH0KK30KKwordm9pZCBDaGlsZFByb2Nl
c3M6OmRpc2FibGVTdXBwcmVzc2lvbihOU1N0cmluZyAqcmVhc29uKQoreworI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIFtbTlNQcm9jZXNzSW5mbyBwcm9j
ZXNzSW5mb10gZGlzYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uOnJlYXNvbl07CisjZW5kaWYKK30K
Kwordm9pZCBDaGlsZFByb2Nlc3M6OmVuYWJsZVN1cHByZXNzaW9uKE5TU3RyaW5nICpyZWFzb24p
Cit7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisgICAgW1tO
U1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBlbmFibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjpyZWFz
b25dOworI2VuZGlmCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdv
cmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCAzY2Q3NTMzN2I3ZmVlODQ2OWIwOTRlODE0OGVhNTVjMzY5MjQ5ODlhLi5iMzZlMmExZWNi
YzUwNzZiOTZmZTU0ODQyNDdmNzAyMGUwYjc0Mzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC0zMCw2ICszMCwxMCBAQCBtZXNzYWdlcyAtPiBTaGFyZWRXb3JrZXJQ
cm9jZXNzIHsKICAgICAjIFRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3Mgc2VuZHMgYmFjayBhIERp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uIG1lc3NhZ2Ugd2l0aAogICAgICMgYSBjb25uZWN0
aW9uIGlkZW50aWZpZXIuCiAgICAgQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQorCisjaWYg
UExBVEZPUk0oTUFDKQorICAgIFNldEFwcElzT2NjbHVkZWQoYm9vbCBmbGFnKQorI2VuZGlmCiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vz
c01haW5NYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFy
ZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbQppbmRleCAzMGY4YTc0OTY0ZDZkMWNjMjg3OWYzMTk3
YzU0NWJhNmMwNTk1YWRiLi4xODkwNDQwYzdlZjgzY2YxYjA1MTkxNDc5YjdhODU5NzgzYmEwOWM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFy
ZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3Jr
ZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbQpAQCAtOTYsOSArOTYs
NyBAQCBpbnQgU2hhcmVkV29ya2VyUHJvY2Vzc01haW4oY29uc3QgQ29tbWFuZExpbmUmIGNvbW1h
bmRMaW5lKQogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjpp
bml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA5MAotICAgIFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gZGlzYWJsZUF1
dG9tYXRpY1Rlcm1pbmF0aW9uOkAiRGlzYWJsZSBTaGFyZWRXb3JrZXJQcm9jZXNzIEF1dG8gVGVy
bWluYXRpb24iXTsKLSNlbmRpZgorICAgIENoaWxkUHJvY2Vzczo6ZGlzYWJsZVN1cHByZXNzaW9u
KEAiU2hhcmVkV29ya2VyUHJvY2VzcyBMYXVuY2giKTsKIAogICAgIC8vIEluaXRpYWxpemUgdGhl
IHNoYXJlZCB3b3JrZXIgcHJvY2VzcyBjb25uZWN0aW9uLgogICAgIFNoYXJlZFdvcmtlclByb2Nl
c3M6OnNoYXJlZCgpLmluaXRpYWxpemUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihz
ZXJ2ZXJQb3J0KSwgUnVuTG9vcDo6bWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg2ZDVmZDM4ZmFmNWM4YzM1Y2M1ZDM5ZmFlOGE5OGMxOGM0MDU4NDAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZh
dGVNYWMuY3BwCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0ZU1hYy5oIgorCisjaW5jbHVkZSAiV0tBUElD
YXN0LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OworCit2b2lkIFdLQ29udGV4dFNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKGJv
b2wgZmxhZykKK3sKKyAgICBXZWJDb250ZXh0OjpzZXRQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0
RW5hYmxlZChmbGFnKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGRkNGU3YTFiNzA5
ZGVjODJiYWIzM2E4YTNjYTdhZTY1ZGI4YTgzZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oCkBAIC0wLDAg
KzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLQ29udGV4dFByaXZhdGVNYWNfaAorI2Rl
ZmluZSBXS0NvbnRleHRQcml2YXRlTWFjX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JU
IHZvaWQgV0tDb250ZXh0U2V0UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQoYm9vbCk7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS0NvbnRleHRQ
cml2YXRlTWFjX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmgKaW5kZXggYjhiNDUzNGNlZmNmM2JhMTQ2MmE3
YjBjMzY1ZTkwYTFkNjE3ZTZkZi4uYTk1ZTI0YjU3Yjg0YjdmYTQzNjQ4YTAxZWE4YWM3ZmZlM2U5
NDA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC0zNiw3ICszNyw2IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOwotY2xhc3MgTmV0d29ya1Byb2Nlc3NQcm94eTsKIGNsYXNzIFdl
YlByb2Nlc3NQcm94eTsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3NNYW5hZ2VyIHsKQEAgLTUwLDEy
ICs1MCwyMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCByZW1vdmVOZXR3b3JrUHJvY2Vzc1By
b3h5KE5ldHdvcmtQcm9jZXNzUHJveHkqKTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZv
aWQgc2VuZFRvUHJvY2Vzcyhjb25zdCBVJiBtZXNzYWdlKTsKKwogcHJpdmF0ZToKICAgICBOZXR3
b3JrUHJvY2Vzc01hbmFnZXIoKTsKIAogICAgIFJlZlB0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBt
X25ldHdvcmtQcm9jZXNzOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5lIHZvaWQg
TmV0d29ya1Byb2Nlc3NNYW5hZ2VyOjpzZW5kVG9Qcm9jZXNzKGNvbnN0IFUmIG1lc3NhZ2UpCit7
CisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MgJiYgbV9uZXR3b3JrUHJvY2Vzcy0+aXNWYWxpZCgp
KQorICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKG1lc3NhZ2UsIDApOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCmluZGV4IDI4OTM0NWE0NjU3Y2ExYWExOWNiMDMzMGJjZGJmOTIzYzNkZjk1
ZGYuLmI0NDUwZDIzZmIxNWI2MTk3YzIwYjQzNDk4OGI4M2EzMjVmN2YzMDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCkBAIC0xNjIsNiArMTYyLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlk
RmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3RpCiAgICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCksIDApOwogICAgIAogICAgIG1fbnVtUGVuZGlu
Z0Nvbm5lY3Rpb25SZXF1ZXN0cyA9IDA7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKFdl
YkNvbnRleHQ6OmFwcElzT2NjbHVkZWQoKSkKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0QXBwSXNPY2NsdWRlZCh0cnVlKSwgMCk7CisjZW5k
aWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNDdjY2JhY2Jm
NzMzNGE2N2Q1YTYyYjJlNzAzNjUxN2VmMjcwNzcwNy4uMjU0Yzg4ZDMyZjcxMjQ2ZmY2YWNlZDgy
YmQ0Mjk4ZmFjZmNiYTRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtNDUsNiArNDUsMTAgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5
ZWRSZXBseT4pOwogCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0
aW9uOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoY29uc3QgVCYgbWVz
c2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncyA9
IDApOworCiBwcml2YXRlOgogICAgIE5ldHdvcmtQcm9jZXNzUHJveHkoTmV0d29ya1Byb2Nlc3NN
YW5hZ2VyKik7CiAKQEAgLTc3LDYgKzgxLDE3IEBAIHByaXZhdGU6CiAgICAgRGVxdWU8UmVmUHRy
PE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5PiA+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOwogfTsKIAordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK2Jvb2wgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZChjb25zdCBUJiBt
ZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdz
KQoreworICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVk
KTsKKyAgICAKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPnNlbmQobWVzc2FnZSwgZGVzdGluYXRpb25JRCwg
bWVzc2FnZVNlbmRGbGFncyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oCmluZGV4IDM3ODI0YzRhYTNi
NGRhYjFjYjIxMzg3MDY2OWQyNTljMDgwZDg2ZTAuLmRhOWJiN2Q1MWM1MzNiNTdhZDA3ODhiNGZk
NzkwZWZkZTNhNTY5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVO
QUJMRShQTFVHSU5fUFJPQ0VTUykKIAogI2luY2x1ZGUgIlBsdWdpbk1vZHVsZUluZm8uaCIKKyNp
bmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CkBAIC01Niw2ICs1Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNpdGVzV2l0
aERhdGEoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIFdlYlBsdWdpblNpdGVEYXRhTWFuYWdlcios
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgY2xlYXJTaXRlRGF0YShjb25zdCBQbHVn
aW5Nb2R1bGVJbmZvJiwgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyKiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHNpdGVzLCB1aW50NjRfdCBmbGFncywgdWludDY0X3QgbWF4QWdlSW5TZWNvbmRzLCB1
aW50NjRfdCBjYWxsYmFja0lEKTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgc2Vu
ZFRvQWxsUHJvY2Vzc2VzKGNvbnN0IFUmIG1lc3NhZ2UpOworCiBwcml2YXRlOgogICAgIFBsdWdp
blByb2Nlc3NNYW5hZ2VyKCk7CiAKQEAgLTY1LDYgKzY4LDE3IEBAIHByaXZhdGU6CiAgICAgVmVj
dG9yPFJlZlB0cjxQbHVnaW5Qcm9jZXNzUHJveHk+ID4gbV9wbHVnaW5Qcm9jZXNzZXM7CiB9Owog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgdm9pZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6
c2VuZFRvQWxsUHJvY2Vzc2VzKGNvbnN0IFUmIG1lc3NhZ2UpCit7CisgICAgY29uc3QgVmVjdG9y
PFJlZlB0cjxQbHVnaW5Qcm9jZXNzUHJveHk+ID4mIHByb2Nlc3NlcyA9IG1fcGx1Z2luUHJvY2Vz
c2VzOworICAgIHNpemVfdCBwcm9jZXNzQ291bnQgPSBwcm9jZXNzZXMuc2l6ZSgpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvY2Vzc0NvdW50OyArK2kpIHsKKyAgICAgICAgUGx1Z2lu
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzID0gcHJvY2Vzc2VzW2ldLmdldCgpOworICAgICAgICBpZiAo
cHJvY2Vzcy0+aXNWYWxpZCgpKQorICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChtZXNzYWdlLCAw
KTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxF
KFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKaW5kZXggODExOTdjZTM2YzRiM2JkMTUyOTcx
M2E5OTIwZTdkNzRjYzI1NjI3Yi4uMTU4NzIxMmY4ZTg0MGZmNmYxNjJkOTBmNTllNGY3MjFmODBi
ODcwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzUHJveHkuY3BwCkBAIC0yMjgsNiArMjI4LDExIEBAIHZvaWQgUGx1Z2luUHJv
Y2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQQzo6
Q29ubmVjdGlvCiAgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJv
Y2Vzczo6Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgMCk7CiAgICAgCiAgICAgbV9udW1Q
ZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzID0gMDsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBp
ZiAoV2ViQ29udGV4dDo6YXBwSXNPY2NsdWRlZCgpKQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3M6OlNldEFwcElzT2NjbHVkZWQodHJ1ZSksIDApOwor
I2VuZGlmCiB9CiAKIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNz
Q29ubmVjdGlvbihjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uSWRlbnRpZmll
ciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHku
aAppbmRleCBmNzc1MDNkOGQ0MmQ5MGNiZWI4Y2RhNjRjOTc5ZGVkZGVlMmYyMGFhLi4wYjNmZTMy
YzRkYjMxMTRlZDgwNTliYTAzZjhjZjQ5ZGU4ZDYzMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaApAQCAtNjcsNiAr
NjcsMTAgQEAgcHVibGljOgogCiAgICAgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luSW5m
bygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luSW5mbzsgfQogCisgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBib29sIHNlbmQoY29uc3QgVCYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdW5z
aWduZWQgbWVzc2FnZVNlbmRGbGFncyA9IDApOworCiAgICAgLy8gQXNrcyB0aGUgcGx1Zy1pbiBw
cm9jZXNzIHRvIGNyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIHRvIGEgd2ViIHByb2Nlc3MuIFRoZSBj
b25uZWN0aW9uIGlkZW50aWZpZXIgd2lsbCBiZSAKICAgICAvLyBlbmNvZGVkIGluIHRoZSBnaXZl
biBhcmd1bWVudCBlbmNvZGVyIGFuZCBzZW50IGJhY2sgdG8gdGhlIGNvbm5lY3Rpb24gb2YgdGhl
IGdpdmVuIHdlYiBwcm9jZXNzLgogICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24o
UGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7CkBAIC0xNjksNiArMTczLDE3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citib29sIFBsdWdpblByb2Nlc3NQcm94
eTo6c2VuZChjb25zdCBUJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1bnNpZ25l
ZCBtZXNzYWdlU2VuZEZsYWdzKQoreworICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFz
eW5jTWVzc2FnZUV4cGVjdGVkKTsKKworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5zZW5kKG1lc3NhZ2UsIGRlc3Rp
bmF0aW9uSUQsIG1lc3NhZ2VTZW5kRmxhZ3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQ
cm9jZXNzTWFuYWdlci5oCmluZGV4IGJhMDZjN2NiYjgwOTgyNDM0NGNlNzljYzQ5YWI0MWI3MWZk
M2M4NDguLmY0YzRjM2VkZjZlZDUwY2IwZmE3ZWVjMjQ3MTgwZDFlNWNlYTQ3NGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclBy
b2Nlc3NNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtl
cnMvU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVO
QUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCiAKICNpbmNsdWRlICJQbHVnaW5Nb2R1bGVJbmZv
LmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNDEsNyArNDIsNiBAQCBuYW1lc3BhY2UgQ29yZUlQ
QyB7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUGx1Z2luSW5mb1N0b3JlOwotY2xhc3Mg
U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogY2xhc3Mg
V2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyOwogCkBAIC01Myw2ICs1Myw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGdldFNoYXJlZFdvcmtlclByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6R2V0U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOwogICAg
IHZvaWQgcmVtb3ZlU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KFNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eSopOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBzZW5kVG9BbGxQcm9jZXNz
ZXMoY29uc3QgVSYgbWVzc2FnZSk7CisKIHByaXZhdGU6CiAgICAgU2hhcmVkV29ya2VyUHJvY2Vz
c01hbmFnZXIoKTsKIApAQCAtNjEsNiArNjMsMTcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVm
UHRyPFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eT4gPiBtX3NoYXJlZFdvcmtlclByb2Nlc3NlczsK
IH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSB2b2lkIFNoYXJlZFdvcmtlclByb2Nl
c3NNYW5hZ2VyOjpzZW5kVG9BbGxQcm9jZXNzZXMoY29uc3QgVSYgbWVzc2FnZSkKK3sKKyAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eT4gPiYgcHJvY2Vzc2Vz
ID0gbV9zaGFyZWRXb3JrZXJQcm9jZXNzZXM7CisgICAgc2l6ZV90IHByb2Nlc3NDb3VudCA9IHBy
b2Nlc3Nlcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9jZXNzQ291bnQ7
ICsraSkgeworICAgICAgICBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkqIHByb2Nlc3MgPSBwcm9j
ZXNzZXNbaV0uZ2V0KCk7CisgICAgICAgIGlmIChwcm9jZXNzLT5pc1ZhbGlkKCkpCisgICAgICAg
ICAgICBwcm9jZXNzLT5zZW5kKG1lc3NhZ2UsIDApOworICAgIH0KK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29y
a2VyUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5jcHAKaW5kZXggMDMwZTNmZmM4OTE1MWYxNDBh
OTRkODcwZjMzNjUyMmQ5ZmUxMWU5My4uMjE0ZTMzMWI1MWI5NTRiMzNlOTJmMmI3OTNjZjkzMDNm
ZDI3ZTk2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtl
cnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNjQs
NiArMTY0LDExIEBAIHZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVu
Y2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQQzo6Q29uCiAgICAgICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2hhcmVkV29ya2VyUHJvY2Vzczo6Q3JlYXRlV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24oKSwgMCk7CiAgICAgCiAgICAgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3Rz
ID0gMDsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoV2ViQ29udGV4dDo6YXBwSXNPY2Ns
dWRlZCgpKQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNoYXJlZFdvcmtl
clByb2Nlc3M6OlNldEFwcElzT2NjbHVkZWQodHJ1ZSksIDApOworI2VuZGlmCiB9CiAKIHZvaWQg
U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihj
b25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uSWRlbnRpZmllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclBy
b2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5LmgKaW5kZXggOWYwYzVkMmFjZWIzOWUyYzY4Njc4OGQ3MjQy
ODRkYTVkOWE1ODk1NS4uZTMwYjk4OTE4ZTdjNWFmZjRmZDllOTVmNjAzYWQwOTUwYTgzNTc2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVk
V29ya2VyUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJl
ZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmgKQEAgLTU2LDYgKzU2LDEwIEBAIHB1
YmxpYzoKICAgICAvLyBUZXJtaW5hdGVzIHRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3MuCiAgICAg
dm9pZCB0ZXJtaW5hdGUoKTsKIAorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29ubmVjdGlvbjsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKGNvbnN0
IFQmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVuc2lnbmVkIG1lc3NhZ2VTZW5k
RmxhZ3MgPSAwKTsKKwogcHJpdmF0ZToKICAgICBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkoU2hh
cmVkV29ya2VyUHJvY2Vzc01hbmFnZXIqLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBuYW1lKTsKIApAQCAtOTEsNiArOTUsMTcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX251
bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHM7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
Ym9vbCBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OnNlbmQoY29uc3QgVCYgbWVzc2FnZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncykKK3sKKyAgICBD
T01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CisKKyAgICBp
ZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fY29u
bmVjdGlvbi0+c2VuZChtZXNzYWdlLCBkZXN0aW5hdGlvbklELCBtZXNzYWdlU2VuZEZsYWdzKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dP
UktFUl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggMGQ0
NDQ1NGJhYjYzYTYxNjNiMzYzNmY4NjFhMzViNDdlYjAzNDQ4Zi4uYjcwOTk3ODdiMTllNDBlNGNl
MmRkNzBhN2VhYmU1MjVhZDkyMGNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5oCkBAIC0yNDAsNiArMjQwLDkgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IHN0YXRpYyBib29sIG9taXRQREZTdXBwb3J0KCk7CisgICAgc3RhdGljIGJvb2wgYXBwSXNPY2Ns
dWRlZCgpIHsgcmV0dXJuIHNfYXBwSXNPY2NsdWRlZDsgfQorICAgIHN0YXRpYyBib29sIHByb2Nl
c3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKCkgeyByZXR1cm4gc19wcm9jZXNzU3VwcHJlc3Np
b25TdXBwb3J0RW5hYmxlZDsgfQorICAgIHN0YXRpYyB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lv
blN1cHBvcnRFbmFibGVkKGJvb2wpOwogI2VuZGlmCiAKICAgICB2b2lkIGZ1bGxLZXlib2FyZEFj
Y2Vzc01vZGVDaGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCk7CkBAIC0zMDIs
NiArMzA1LDEzIEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGNvb2tpZVN0b3JhZ2VEaXJlY3Rvcnko
KSBjb25zdDsKICAgICBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9y
eSgpIGNvbnN0OwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0YXRpYyB2b2lkIGFwcEJlY2Ft
ZVZpc2libGUodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KTsKKyAg
ICBzdGF0aWMgdm9pZCBhcHBCZWNhbWVPY2NsdWRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90
LCB2b2lkKiwgdWludDMyX3QpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyT2NjbHVzaW9uTm90
aWZpY2F0aW9uSGFuZGxlcnMoKTsKKyAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyT2NjbHVzaW9u
Tm90aWZpY2F0aW9uSGFuZGxlcnMoKTsKKyNlbmRpZgorCiAgICAgUHJvY2Vzc01vZGVsIG1fcHJv
Y2Vzc01vZGVsOwogICAgIAogICAgIFZlY3RvcjxSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiA+IG1f
cHJvY2Vzc2VzOwpAQCAtMzk2LDYgKzQwNiwxMSBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxEaWN0aW9uYXJ5Q2FsbGJhY2s+ID4gbV9kaWN0aW9uYXJ5Q2FsbGJhY2tz
OwogCiAgICAgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyTWFwIG1fbWVzc2FnZVJlY2VpdmVyTWFw
OworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0YXRpYyBib29sIHNfYXBwSXNPY2NsdWRlZDsK
KyAgICBzdGF0aWMgYm9vbCBzX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkOworI2Vu
ZGlmCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgdm9pZCBXZWJDb250ZXh0Ojpz
ZW5kVG9BbGxQcm9jZXNzZXMoY29uc3QgVSYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggNmJmNjU0M2I5ZGY5NjQ1NGM1NjMwZjc1
NGEyNzk2OGRkNWY2MzE0My4uMDAyMTY5NDdmZDg2MTNiY2VmMDRmNTE1Njg4YzQ3NWJlOGE3YWQy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAg
LTUzMiw2ICs1MzIsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGlu
ZyhDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3QKIAogICAgIC8vIFRlbGwg
dGhlIGNvbnRleHQgdGhhdCB3ZSBmaW5pc2hlZCBsYXVuY2hpbmcuCiAgICAgbV9jb250ZXh0LT5w
cm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKHRoaXMpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAg
IGlmIChXZWJDb250ZXh0OjphcHBJc09jY2x1ZGVkKCkpCisgICAgICAgIGNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0QXBwSXNPY2NsdWRlZCh0cnVlKSwgMCk7Cisj
ZW5kaWYKIH0KIAogV2ViRnJhbWVQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJGcmFtZSh1aW50
NjRfdCBmcmFtZUlEKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJDb250ZXh0TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJD
b250ZXh0TWFjLm1tCmluZGV4IDAwYzAyY2QwMmQxY2M1Njg2M2ExNTk4ZjNiZDkxMDJlM2Q1ZTY4
ZDkuLjEzOWM5OWFhODliYmQ4YzNiY2E1MTIyODBiMjU1MTIwYTM3Mjg5ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KQEAgLTI1LDYgKzI1LDEz
IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29udGV4dC5oIgorI2ltcG9y
dCAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc01hbmFnZXIu
aCIKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbXBvcnQgIlBsdWdpblBy
b2Nlc3NNYW5hZ2VyLmgiCisjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzTWVzc2FnZXMuaCIKKyNpbXBv
cnQgIlNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmgiCisjaW1wb3J0ICJTaGFyZWRXb3JrZXJQ
cm9jZXNzTWVzc2FnZXMuaCIKIAogI2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCiAj
aW1wb3J0ICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCkBAIC01Miw2ICs1OSw5IEBA
IE5TU3RyaW5nICpXZWJJY29uRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViSWNv
bkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitib29sIFdl
YkNvbnRleHQ6OnNfYXBwSXNPY2NsdWRlZCA9IGZhbHNlOworYm9vbCBXZWJDb250ZXh0OjpzX3By
b2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkID0gZmFsc2U7CisKIFN0cmluZyBXZWJDb250
ZXh0OjphcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKICAgICBOU1N0cmluZyAqYXBwTmFt
ZSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07CkBAIC0yNTcsNSAr
MjY3LDg1IEBAIHZvaWQgV2ViQ29udGV4dDo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJvYXJkVHlwZSk7
CiB9CiAKK3ZvaWQgV2ViQ29udGV4dDo6YXBwQmVjYW1lVmlzaWJsZSh1aW50MzJfdCwgdm9pZCos
IHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCit7CisgICAgaWYgKHNfYXBwSXNPY2NsdWRlZCkg
eworICAgICAgICBzX2FwcElzT2NjbHVkZWQgPSBmYWxzZTsKKworICAgICAgICBjb25zdCBWZWN0
b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9IFdlYkNvbnRleHQ6OmFsbENvbnRleHRzKCk7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRleHRzLnNpemUoKTsgaSA8IGNv
dW50OyArK2kpIHsKKyAgICAgICAgICAgIGNvbnRleHRzW2ldLT5zZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldEFwcElzT2NjbHVkZWQoZmFsc2UpKTsKKyAgICAgICAg
fQorCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorICAgICAgICBQbHVnaW5Qcm9jZXNzTWFu
YWdlcjo6c2hhcmVkKCkuc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNz
OjpTZXRBcHBJc09jY2x1ZGVkKGZhbHNlKSk7CisjZW5kaWYKKyNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQorICAgICAgICBOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNlbmRUb1By
b2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBJc09jY2x1ZGVkKGZhbHNlKSk7
CisjZW5kaWYKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQorICAgICAgICBTaGFy
ZWRXb3JrZXJQcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3Nh
Z2VzOjpTaGFyZWRXb3JrZXJQcm9jZXNzOjpTZXRBcHBJc09jY2x1ZGVkKGZhbHNlKSk7CisjZW5k
aWYKKyAgICB9Cit9CisKK3ZvaWQgV2ViQ29udGV4dDo6YXBwQmVjYW1lT2NjbHVkZWQodWludDMy
X3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KQoreworICAgIGlmICghc19hcHBJ
c09jY2x1ZGVkKSB7CisgICAgICAgIHNfYXBwSXNPY2NsdWRlZCA9IHRydWU7CisgICAgICAgIGNv
bnN0IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4
dHMoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgp
OyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICAgICAgY29udGV4dHNbaV0tPnNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0QXBwSXNPY2NsdWRlZCh0cnVlKSk7Cisg
ICAgICAgIH0KKworI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKKyAgICAgICAgUGx1Z2luUHJv
Y2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6UGx1Z2lu
UHJvY2Vzczo6U2V0QXBwSXNPY2NsdWRlZCh0cnVlKSk7CisjZW5kaWYKKyNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQorICAgICAgICBOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNl
bmRUb1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBJc09jY2x1ZGVkKHRy
dWUpKTsKKyNlbmRpZgorI2lmIEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCisgICAgICAg
IFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OlNoYXJlZFdvcmtlclByb2Nlc3M6OlNldEFwcElzT2NjbHVkZWQodHJ1ZSkpOwor
I2VuZGlmCisgICAgfQorfQorCit2b2lkIFdlYkNvbnRleHQ6OnJlZ2lzdGVyT2NjbHVzaW9uTm90
aWZpY2F0aW9uSGFuZGxlcnMoKQoreworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA5MAorICAgIGlmICghV0tSZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRs
ZXIoV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwQmVjYW1lVmlzaWJsZSwgYXBwQmVjYW1l
VmlzaWJsZSkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJSZWdpc3RlcmF0aW9uIG9mIFwiQXBw
IEJlY2FtZSBWaXNpYmxlXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxuIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIVdLUmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmlj
YXRpb25IYW5kbGVyKFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcEJlY2FtZU9jY2x1ZGVk
LCBhcHBCZWNhbWVPY2NsdWRlZCkpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiUmVnaXN0ZXJhdGlv
biBvZiBcIkFwcCBCZWNhbWUgT2NjbHVkZWRcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQu
XG4iKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkNvbnRleHQ6OnVucmVnaXN0ZXJPY2NsdXNpb25O
b3RpZmljYXRpb25IYW5kbGVycygpCit7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDkwCisgICAgaWYgKCFXS1VucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25I
YW5kbGVyKFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcEJlY2FtZU9jY2x1ZGVkLCBhcHBC
ZWNhbWVPY2NsdWRlZCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJSZW1vdmFsIG9mIFwiQXBw
IEJlY2FtZSBPY2NsdWRlZFwiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFXS1VucmVnaXN0ZXJPY2NsdXNpb25Ob3Rp
ZmljYXRpb25IYW5kbGVyKFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcEJlY2FtZVZpc2li
bGUsIGFwcEJlY2FtZVZpc2libGUpKQorICAgICAgICBXVEZMb2dBbHdheXMoIlJlbW92YWwgb2Yg
XCJBcHAgQmVjYW1lIFZpc2libGVcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4iKTsK
KyNlbmRpZgorfQorCit2b2lkIFdlYkNvbnRleHQ6OnNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBv
cnRFbmFibGVkKGJvb2wgZmxhZykKK3sKKyAgICBpZiAoc19wcm9jZXNzU3VwcHJlc3Npb25TdXBw
b3J0RW5hYmxlZCAhPSBmbGFnKSB7CisgICAgICAgIHNfcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9y
dEVuYWJsZWQgPSBmbGFnOworICAgICAgICBpZiAoZmxhZykKKyAgICAgICAgICAgIHJlZ2lzdGVy
T2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgdW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCk7CisgICAgfQorfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQzZmJiMTQ0MjJjMWViZDk1Yzg3MzRiOGNi
MTcyNTFjYzRhZTg5ZDcuLjliNDhkM2U5ZmJkODdjZjU2MTY3NzQ0MDE1OWE3ZTgwMDliMmU1YmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTUzMSw2ICs1MzEsOSBAQAogCQk5M0ZDNjdCRTEyRDNDQ0YyMDBBNjA2MTAgLyogRGVj
b2RlckFkYXB0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzRkM2NzlFMTJEM0NDNzQwMEE2MDYxMCAvKiBEZWNvZGVyQWRhcHRlci5oICovOyB9Owog
CQk5M0ZDNjdCRjEyRDNDQ0YyMDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGQzY3OUYxMkQzQ0M3NDAw
QTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmNwcCAqLzsgfTsKIAkJOTNGQzY3QzAxMkQzQ0NGMjAw
QTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0ZDNjdBMDEyRDNDQzc0MDBBNjA2MTAgLyogRW5jb2RlckFkYXB0
ZXIuaCAqLzsgfTsKKwkJOUY1NEY4ODAxNjQyMDk5MzAwN0RGODFBIC8qIFdLQ29udGV4dFByaXZh
dGVNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUY1NEY4N0UxNjQyMDk5MzAwN0RGODFBIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuY3BwICovOyB9
OworCQk5RjU0Rjg4MTE2NDIwOTkzMDA3REY4MUEgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY1NEY4N0YxNjQy
MDk5MzAwN0RGODFBIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5RjU0Rjg4MzE2NDIwOUNEMDA3REY4MUEg
LyogQ2hpbGRQcm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUY1NEY4ODIxNjQyMDlDRDAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5t
bSAqLzsgfTsKIAkJQjYyRTczMTAxNDMwNDdBNjAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjJFNzMw
RjE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCAqLzsgfTsKIAkJQjYyRTcz
MTIxNDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjYyRTczMTExNDMwNDdCMDAwNjlFQzM1IC8q
IFdLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUI2MzQwM0Y5MTQ5MTBENTcwMDEwNzBCNSAvKiBBUElPYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjYzNDAzRjgxNDkx
MEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5jcHAgKi87IH07CkBAIC0xNzM4LDYgKzE3NDEsOSBA
QAogCQk5M0ZDNjc5RTEyRDNDQzc0MDBBNjA2MTAgLyogRGVjb2RlckFkYXB0ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RlckFkYXB0ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNGQzY3OUYxMkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29kZXJBZGFw
dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVuY29kZXJBZGFw
dGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGQzY3QTAxMkQzQ0M3NDAw
QTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEVuY29kZXJBZGFwdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlGNTRG
ODdFMTY0MjA5OTMwMDdERjgxQSAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdLQ29udGV4dFByaXZhdGVNYWMuY3BwOyBwYXRo
ID0gbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5RjU0Rjg3RjE2NDIwOTkzMDA3REY4MUEgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0NvbnRleHRQcml2YXRlTWFjLmg7IHBh
dGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5RjU0Rjg4MjE2NDIwOUNEMDA3REY4MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ2hpbGRQcm9jZXNzTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzJENUQ3RjEyMzZDQkE4MDBBODhCMTUgLyog
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCMzk2RUE1NTEyRTBFRDJEMDBGNEZFQjcgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCNjJFNzMwRjE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLSGl0VGVzdFJlc3VsdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTY0LDYgKzMxNzAsOCBAQAogCQk2RUU4NDlDNDEz
NjhEOTA0MDAzOEQ0ODEgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQk5RjU0Rjg3RTE2NDIwOTkzMDA3REY4MUEgLyogV0tDb250ZXh0UHJpdmF0
ZU1hYy5jcHAgKi8sCisJCQkJOUY1NEY4N0YxNjQyMDk5MzAwN0RGODFBIC8qIFdLQ29udGV4dFBy
aXZhdGVNYWMuaCAqLywKIAkJCQk2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0
b3JQcml2YXRlTWFjLmggKi8sCiAJCQkJQkNFMTdCN0IxMzgxRjExNzAwMTJBNjQxIC8qIFdLUGFn
ZVByaXZhdGVNYWMuY3BwICovLAogCQkJCUJDRTE3QjdDMTM4MUYxMTcwMDEyQTY0MSAvKiBXS1Bh
Z2VQcml2YXRlTWFjLmggKi8sCkBAIC0zNjMwLDYgKzM2MzgsNyBAQAogCQkJCUUxNzlGRDlFMTM0
RDM4MjUwMDE1Qjg4MyAvKiBBcmd1bWVudENvZGVyc01hYy5tbSAqLywKIAkJCQlFMUEzMTczMTEz
NENFQTZDMDA3QzlBNEYgLyogQXR0cmlidXRlZFN0cmluZy5oICovLAogCQkJCUUxQTMxNzM0MTM0
Q0VBODAwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLm1tICovLAorCQkJCTlGNTRGODgyMTY0
MjA5Q0QwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi8sCiAJCQkJMUEyQTRBRkUxNTg2
OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLmggKi8sCiAJCQkJMUEyQTRBRkQxNTg2OTM5
MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLm1tICovLAogCQkJCTFBNkY5RkI2MTFFMTQwODUw
MERCMTM3MSAvKiBDb21tYW5kTGluZU1hYy5jcHAgKi8sCkBAIC00ODEwLDYgKzQ4MTksNyBAQAog
CQkJCTUxN0NGMEUwMTYzQTQ0NEMwMEMyOTUwRSAvKiBOZXR3b3JrUmVxdWVzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE3Q0YwRTQxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUI3ODQ3MTE2M0YyNDY5MDAw
N0I2OTIgLyogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTlG
NTRGODgxMTY0MjA5OTMwMDdERjgxQSAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggaW4gSGVhZGVy
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKQEAgLTU3NDAsNiArNTc1MCw4IEBACiAJCQkJMkQyQURGMDkxNjM2MkRENTAwMTk3RTQ3
IC8qIFBERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQyQURG
MEIxNjM2MkREQjAwMTk3RTQ3IC8qIFBERlBsdWdpbkFubm90YXRpb24ubW0gaW4gU291cmNlcyAq
LywKIAkJCQkyRDJBREYxMDE2MzY0RDgyMDAxOTdFNDcgLyogUERGUGx1Z2luQ2hvaWNlQW5ub3Rh
dGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTlGNTRGODgwMTY0MjA5OTMwMDdERjgxQSAvKiBX
S0NvbnRleHRQcml2YXRlTWFjLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlGNTRGODgzMTY0MjA5
Q0QwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyY2Mx
ZTYyODA0NjMyODEzMTE0MDU4ZmFjYmVhMTUwMDU3MzVjYzI0Li45ZGI2NGE3OTE1ZGI3NjYyMGIw
NjExNTFlNmY4N2QxNjFmZmRiNjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC05Nyw0ICs5Nyw4IEBAIG1lc3NhZ2VzIC0+IFdl
YlByb2Nlc3MgewogICAgIFNlY0l0ZW1SZXNwb25zZSh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYktp
dDo6U2VjSXRlbVJlc3BvbnNlRGF0YSByZXNwb25zZSkgRGlzcGF0Y2hPbkNvbm5lY3Rpb25RdWV1
ZQogICAgIFNlY0tleWNoYWluSXRlbVJlc3BvbnNlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0
OjpTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGEgcmVzcG9uc2UpIERpc3BhdGNoT25Db25uZWN0
aW9uUXVldWUKICNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFNldEFwcElzT2NjbHVk
ZWQoYm9vbCBmbGFnKTsKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tCmluZGV4IDJhZjU5NDhm
ZDllMTc3YTQ1MGQ4Njk2MWRmZjU5NmU4NTcwMTI2OGMuLmY0YjQxNzQyNGMwNzU1MmQ5OTI1YmQ1
MDkzNGVmZjY1MDU1Nzk1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
bWFjL1dlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW0KQEAgLTQ2LDkgKzQ2LDcgQEAg
dm9pZCBJbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIs
IENvcmVJUEM6OkNvbm5lY3Rpb246OkkKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7
CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKLSNpZiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLSAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vz
c0luZm9dIGRpc2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjpAIkRpc2FibGUgV2ViUHJvY2VzcyBB
dXRvIFRlcm1pbmF0aW9uIl07Ci0jZW5kaWYKKyAgICBDaGlsZFByb2Nlc3M6OmRpc2FibGVTdXBw
cmVzc2lvbihAIldlYlByb2Nlc3MgTGF1bmNoIik7CiAKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5pbml0aWFsaXplU2hpbSgpOwogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemVT
YW5kYm94KGNsaWVudElkZW50aWZpZXIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171969</attachid>
            <date>2012-11-01 18:47:45 -0700</date>
            <delta_ts>2012-11-02 17:39:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100997-20121101184606.patch</filename>
            <type>text/plain</type>
            <size>43600</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWMyMzg3OTQwZTAwZWQz
ZGNhYmIyNDI3ZTM1MDRkMGFlZGU1NjMwZC4uNjQ4YzUzYzcxZGNjYmFlNjdlZjAxYzAzYWRjMzQ0
MzBkYzI3MGE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEyLTExLTAxICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhcHBsaWNhdGlv
biBvY2NsdXNpb24gY3JpdGVyaW9uIHRvIGVuYWJsZS9kaXNhYmxlIHByb2Nlc3Mgc3VwcHJlc3Np
b24gb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDA5OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQcm92aWRlIHN1cHBvcnQgZm9yIGVuYWJsaW5nIGFuZCBkaXNhYmxpbmcgcHJvY2VzcyBzdXBw
cmVzc2lvbiB3aGVuIGFwcGxpY2F0aW9uIGlzIGNvbXBsZXRlbHkgb2NjbHVkZWQgb24gTWFjLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46IEFk
ZGVkIG1lc3NhZ2UgdG8gdXBkYXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMuCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NNYWluKTogUmVwbGFjZWQgZGlyZWN0IGNhbGwgdG8g
dGFrZSBhc3NlcnRpb24gd2l0aCBhCisgICAgICAgIGVxdWl2YWxlbnQsIHNpbXBsZXIgdG8gdXNl
LCBoZWxwZXIgbWV0aG9kIGluIENoaWxkUHJvY2Vzcy4KKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNz
L1BsdWdpblByb2Nlc3MubWVzc2FnZXMuaW46IEFkZGVkIG1lc3NhZ2UgdG8gdXBkYXRlIGFwcGxp
Y2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMuCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1
Z2luUHJvY2Vzc01haW5NYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWlu
KTogUmVwbGFjZWQgZGlyZWN0IGNhbGwgdG8gdGFrZSBhc3NlcnRpb24gd2l0aCBhCisgICAgICAg
IGVxdWl2YWxlbnQsIHNpbXBsZXIgdG8gdXNlLCBoZWxwZXIgbWV0aG9kIGluIENoaWxkUHJvY2Vz
cy4KKyAgICAgICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Q2hpbGRQcm9jZXNzOjpDaGlsZFByb2Nlc3MpOiBJbml0aWFsaXplIGFwcGxpY2F0aW9uIG9jY2x1
c2lvbiBzdGF0dXMgdG8gZmFsc2UuCisgICAgICAgICogU2hhcmVkL0NoaWxkUHJvY2Vzcy5oOgor
ICAgICAgICAoQ2hpbGRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjph
cHBsaWNhdGlvbklzT2NjbHVkZWQpOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ2hpbGRQcm9jZXNz
TWFjLm1tOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNz
OjpzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQpOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nl
c3M6OmRpc2FibGVTdXBwcmVzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6
ZW5hYmxlU3VwcHJlc3Npb24pOgorICAgICAgICBBZGRlZCBnZXR0ZXIgYW5kIHNldHRlciBmb3Ig
YXBwbGljYXRpb24gb2NjbHVzaW9uIHN0YXR1cyBhbmQgaGVscGVyIG1ldGhvZHMgdG8gZW5hYmxl
IGFuZCBkaXNhYmxlIHN1cHByZXNzaW9uLgorICAgICAgICAqIFNoYXJlZFdvcmtlclByb2Nlc3Mv
U2hhcmVkV29ya2VyUHJvY2Vzcy5tZXNzYWdlcy5pbjogQWRkZWQgbWVzc2FnZSB0byB1cGRhdGUg
YXBwbGljYXRpb24gb2NjbHVzaW9uIHN0YXR1cy4KKyAgICAgICAgKiBTaGFyZWRXb3JrZXJQcm9j
ZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVkV29ya2VyUHJvY2Vzc01haW4pOiBSZXBsYWNlZCBkaXJlY3QgY2FsbCB0byB0YWtlIGFz
c2VydGlvbiB3aXRoIGEKKyAgICAgICAgZXF1aXZhbGVudCwgc2ltcGxlciB0byB1c2UsIGhlbHBl
ciBtZXRob2QgaW4gQ2hpbGRQcm9jZXNzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMv
V0tDb250ZXh0UHJpdmF0ZU1hYy5jcHA6CisgICAgICAgIChXS0NvbnRleHRTZXRQcm9jZXNzU3Vw
cHJlc3Npb25TdXBwb3J0RW5hYmxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9X
S0NvbnRleHRQcml2YXRlTWFjLmg6CisgICAgICAgIEFkZGVkIHByaXZhdGUgQVBJIHRvIGVuYWJs
ZSBwcm9jZXNzIHN1cHByZXNzaW9uIHN1cHBvcnQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
TmV0d29ya1Byb2Nlc3NNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NN
YW5hZ2VyOjpzZW5kVG9Qcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6ZGlkRmluaXNoTGF1bmNoaW5nKTogVXBkYXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0
dXMgcG9zdCBsYXVuY2guCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojppc1ZhbGlk
KToKKyAgICAgICAgKE5ldHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaDoKKyAgICAgICAgKFBsdWdpblBy
b2Nlc3NNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNl
bmRUb0FsbFByb2Nlc3Nlcyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKTogVXBkYXRlIGFwcGxpY2F0aW9uIG9j
Y2x1c2lvbiBzdGF0dXMgcG9zdCBsYXVuY2guCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94
eTo6aXNWYWxpZCk6CisgICAgICAgIChQbHVnaW5Qcm9jZXNzUHJveHkpOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpzZW5kKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5o
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2Vy
KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6OnNlbmRUb0Fs
bFByb2Nlc3Nlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29y
a2VyUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOiBVcGRhdGUgYXBwbGljYXRpb24gb2NjbHVzaW9u
IHN0YXR1cyBwb3N0IGxhdW5jaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9T
aGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5Ojppc1ZhbGlkKToKKyAgICAgICAgKFNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHk6OnNlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmFwcGxpY2F0aW9uSXNPY2NsdWRlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHQ6OnByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvbnRleHQpOgorICAgICAgICBBZGRlZCBnZXR0ZXIgZm9yIGFwcGxpY2F0
aW9uIG9jY2x1c2lvbiBzdGF0dXMgYW5kIHByb2Nlc3Mgc3VwcHJlc3Npb24gc3VwcG9ydCBlbmFi
bGVkIHN0YXR1cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOiBVcGRh
dGUgYXBwbGljYXRpb24gb2NjbHVzaW9uIHN0YXR1cyBwb3N0IGxhdW5jaC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW06CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0OjphcHBsaWNhdGlvbkJlY2FtZVZpc2libGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0OjphcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKToKKyAgICAg
ICAgQWRkZWQgbm90aWZpY2F0aW9uIGhhbmRsZXJzIHRvIG5vdGlmeSBub24gVUkgV2ViS2l0MiBw
cm9jZXNzZXMgb2YgdGhlIGNoYW5nZSBpbiBhcHBsaWNhdGlvbiBvY2NsdXNpb24gc3RhdHVzLgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlv
bkhhbmRsZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6dW5yZWdpc3Rlck9jY2x1
c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKToKKyAgICAgICAgSGVscGVyIGZ1bmN0aW9ucyB0byBy
ZWdpc3RlciBhbmQgdW5yZWdpc3RlciBhcHBsaWNhdGlvbiBvY2NsdXNpb24gbm90aWZpY2F0aW9u
IGhhbmRsZXJzLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZXRQcm9jZXNzU3VwcHJl
c3Npb25TdXBwb3J0RW5hYmxlZCk6IEFkZGVkIHNldHRlciBmb3IgcHJvY2VzcyBzdXBwcmVzc2lv
bgorICAgICAgICBzdXBwb3J0IGVuYWJsZWQuICBSZWdpc3RlcnMgb3IgdW5yZWdpc3RlcnMgb2Nj
bHVzaW9uIG5vdGlmaWNhdGlvbiBoYW5kbGVycyBhY2NvcmRpbmcgdG8gdGhlIG5ldyBzZXR0aW5n
LgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46IEFkZGVkIG1lc3NhZ2UgdG8gdXBk
YXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMuCisgICAgICAgICogV2ViUHJvY2Vzcy9t
YWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpJbml0aWFs
aXplV2ViUHJvY2Vzcyk6IFJlcGxhY2VkIGRpcmVjdCBjYWxsIHRvIHRha2UgYXNzZXJ0aW9uIHdp
dGggYQorICAgICAgICBlcXVpdmFsZW50LCBzaW1wbGVyIHRvIHVzZSwgaGVscGVyIG1ldGhvZCBp
biBDaGlsZFByb2Nlc3MuCisKIDIwMTItMTAtMzEgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hp
Y3VAYWRvYmUuY29tPgogCiAgICAgICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbiBwYXJhbWV0ZXJz
IGxpc3QgaXMgbm90IGRlY29kZWQgY29ycmVjdGx5IGluIENvb3JkaW5hdGVkR3JhcGhpY3NBcmd1
bWVudENvZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAwMjk1MzZhMzQxMjA1ZTQyNDVjMmE4MjY1
YWQ3YzFhOGYyODI5MzVmLi5kMjQzYmQ0NGY2MDA2MzRiZGQyMjUwYzM0NzE3YjE3NWViMTNiMzU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjgsNiArMjgsMTAgQEAgbWVzc2FnZXMgLT4gTmV0d29y
a1Byb2Nlc3MgewogCiAgICAgIyBDcmVhdGVzIGEgY29ubmVjdGlvbiBmb3IgY29tbXVuaWNhdGlv
biB3aXRoIGEgV2ViUHJvY2VzcwogICAgIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKCkKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQo
Ym9vbCBmbGFnKQorI2VuZGlmCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQ
cm9jZXNzTWFpbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3
b3JrUHJvY2Vzc01haW5NYWMubW0KaW5kZXggN2MzOGI5NjA4ODkwYjdmMjE0ZWQ3Y2FhODc2MDAz
MWE2MmM2MWVlYS4uMzQ2NDYzOWExYzU2NTE5ZjQyYTI4YjlkOTliNTkwOGQ0Y2JmMjBiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNz
TWFpbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29y
a1Byb2Nlc3NNYWluTWFjLm1tCkBAIC04Myw5ICs4Myw3IEBAIGludCBOZXR3b3JrUHJvY2Vzc01h
aW4oY29uc3QgQ29tbWFuZExpbmUmIGNvbW1hbmRMaW5lKQogICAgIFdURjo6aW5pdGlhbGl6ZU1h
aW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIAotI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAotICAgIFtbTlNQcm9jZXNz
SW5mbyBwcm9jZXNzSW5mb10gZGlzYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uOkAiRGlzYWJsZSBO
ZXR3b3JrUHJvY2VzcyBBdXRvIFRlcm1pbmF0aW9uIl07Ci0jZW5kaWYKKyAgICBDaGlsZFByb2Nl
c3M6OmRpc2FibGVTdXBwcmVzc2lvbihAIk5ldHdvcmtQcm9jZXNzIExhdW5jaCIpOwogCiAgICAg
Ly8gSW5pdGlhbGl6ZSB0aGUgbmV0d29yayBwcm9jZXNzIGNvbm5lY3Rpb24uCiAgICAgTmV0d29y
a1Byb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllcihzZXJ2ZXJQb3J0KSwgUnVuTG9vcDo6bWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlNGVm
NDUwNzI0YmEwYTVlYzAxMzkyNjU3MGVmMjQ1OWM0YzdkNDYzLi40MTIyNmIxNGQ1M2UzNzEwNmY1
NDFiZDFkYWE1M2VhODhjYWRjYzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL1BsdWdpblByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zOCw2ICszOCwxMCBAQCBt
ZXNzYWdlcyAtPiBQbHVnaW5Qcm9jZXNzIHsKICAgICAjIEFza3MgdGhlIHBsdWctaW4gdG8gY2xl
YXIgZGF0YSBmb3IgdGhlIGdpdmVuIHNpdGVzLiBUaGUgcGx1Zy1pbiBwcm9jZXNzIHNlbmRzIGJh
Y2sKICAgICAjIGEgRGlkQ2xlYXJTaXRlRGF0YSBtZXNzYWdlIHdoZW4gZG9uZS4KICAgICBDbGVh
clNpdGVEYXRhKFZlY3RvcjxXVEY6OlN0cmluZz4gc2l0ZXMsIHVpbnQ2NF90IGZsYWdzLCB1aW50
NjRfdCBtYXhBZ2VJblNlY29uZHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgU2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wgZmxhZyk7CisjZW5kaWYK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21h
Yy9QbHVnaW5Qcm9jZXNzTWFpbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
bWFjL1BsdWdpblByb2Nlc3NNYWluTWFjLm1tCmluZGV4IDkxMmIxYzRmYjViYmYyNDVjMWViZmFk
Yjk0NzIwMDg5YWUyYTFkYTAuLmJlNTI5MDI4MmM3MGJkNTBhYTBiZTMxZTFmYTNlNjU4YmZiYmNm
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblBy
b2Nlc3NNYWluTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1Bs
dWdpblByb2Nlc3NNYWluTWFjLm1tCkBAIC0xMTcsOSArMTE3LDcgQEAgaW50IFBsdWdpblByb2Nl
c3NNYWluKGNvbnN0IENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkKICAgICBXVEY6OmluaXRpYWxp
emVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAK
LSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLSAgICBbW05TUHJv
Y2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRpc2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjpAIkRpc2Fi
bGUgUGx1Z2luUHJvY2VzcyBBdXRvIFRlcm1pbmF0aW9uIl07Ci0jZW5kaWYKKyAgICBDaGlsZFBy
b2Nlc3M6OmRpc2FibGVTdXBwcmVzc2lvbihAIlBsdWdpblByb2Nlc3MgTGF1bmNoIik7CiAKICNp
ZiBkZWZpbmVkKF9faTM4Nl9fKQogICAgIC8vIEluaXRpYWxpemUgdGhlIHNoaW0gZm9yIDMyLWJp
dCBvbmx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcAppbmRleCBiNjVlZWJl
MmNlNDI1NTc1NGEzNDcxNzVmODY1OWFjYjgzZjUzMTFlLi4yOGNkOWU4ODM4MmE0NDgyZjQwNDY0
ZGZlMDY1YjNhNzJiNmM1Yjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hp
bGRQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNw
cApAQCAtNjAsNiArNjAsOSBAQCBDaGlsZFByb2Nlc3M6OkNoaWxkUHJvY2VzcygpCiAgICAgOiBt
X3Rlcm1pbmF0aW9uVGltZW91dCgwKQogICAgICwgbV90ZXJtaW5hdGlvbkNvdW50ZXIoMCkKICAg
ICAsIG1fdGVybWluYXRpb25UaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZDaGlsZFByb2Nl
c3M6OnRlcm1pbmF0aW9uVGltZXJGaXJlZCkKKyNpZiBQTEFURk9STShNQUMpCisgICAgLCBtX2Fw
cGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSkKKyNlbmRpZgogewogICAgIC8vIEZJWE1FOiBUaGUg
dGVybWluYXRpb24gdGltZXIgc2hvdWxkIG5vdCBiZSBzY2hlZHVsZWQgb24gdGhlIG1haW4gcnVu
IGxvb3AuCiAgICAgLy8gSXQgd29uJ3Qgd29yayB3aXRoIHRoZSB0aHJlYWRlZCBtb2RlLCBidXQg
aXQncyBub3QgcmVhbGx5IHVzZWZ1bCBhbnl3YXkgYXMgaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hp
bGRQcm9jZXNzLmgKaW5kZXggOWVjMWE1MGQ5OTJmODAxY2U2NzQ0YzBhODQ1MjhmYjJmMWRiNzli
NC4uNGZjM2NkNzZjMWJkMjUxMjRmZGNhMmQzODA5OWY1M2YzYmUxMWNjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9DaGlsZFByb2Nlc3MuaApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KIAorT0JKQ19DTEFTUyBOU1N0
cmluZzsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIENoaWxkUHJvY2VzcyA6IHByb3Rl
Y3RlZCBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewpAQCAtNTcsNiArNTksMTQgQEAgcHVi
bGljOgogICAgICAgICBDaGlsZFByb2Nlc3MmIG1fY2hpbGRQcm9jZXNzOwogICAgIH07CiAKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgYm9vbCBhcHBsaWNhdGlvbklzT2NjbHVkZWQoKSBjb25zdCB7
IHJldHVybiBtX2FwcGxpY2F0aW9uSXNPY2NsdWRlZDsgfQorICAgIHZvaWQgc2V0QXBwbGljYXRp
b25Jc09jY2x1ZGVkKGJvb2wgZmxhZyk7CisKKyAgICBzdGF0aWMgdm9pZCBkaXNhYmxlU3VwcHJl
c3Npb24oTlNTdHJpbmcgKnJlYXNvbik7CisgICAgc3RhdGljIHZvaWQgZW5hYmxlU3VwcHJlc3Np
b24oTlNTdHJpbmcgKnJlYXNvbik7CisjZW5kaWYKKwogICAgIHN0YXRpYyB2b2lkIGRpZENsb3Nl
T25Db25uZWN0aW9uV29ya1F1ZXVlKFdvcmtRdWV1ZSYsIENvcmVJUEM6OkNvbm5lY3Rpb24qKTsK
IAogcHJvdGVjdGVkOgpAQCAtODAsNiArOTAsMTAgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBt
X3Rlcm1pbmF0aW9uQ291bnRlcjsKIAogICAgIFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyPENoaWxk
UHJvY2Vzcz4gbV90ZXJtaW5hdGlvblRpbWVyOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGJv
b2wgbV9hcHBsaWNhdGlvbklzT2NjbHVkZWQ7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9DaGlsZFByb2Nl
c3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MzRlOWYxMzNlMzAwZTA0ZGQxODJkZDAzNTg5YjM5MjBkOTgzNmU3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMu
bW0KQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiQ2hpbGRQcm9jZXNzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIENoaWxk
UHJvY2Vzczo6c2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wgZmxhZykKK3sKKyAgICBpZiAo
bV9hcHBsaWNhdGlvbklzT2NjbHVkZWQgPT0gZmxhZykKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9hcHBsaWNhdGlvbklzT2NjbHVkZWQgPSBmbGFnOworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIGlmIChtX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkKKyAg
ICAgICAgZW5hYmxlU3VwcHJlc3Npb24oQCJBcHBsaWNhdGlvbiBiZWNhbWUgb2NjbHVkZWQiKTsK
KyAgICBlbHNlCisgICAgICAgIGRpc2FibGVTdXBwcmVzc2lvbihAIkFwcGxpY2F0aW9uIGJlY2Ft
ZSB2aXNpYmxlIik7CisjZW5kaWYKK30KKwordm9pZCBDaGlsZFByb2Nlc3M6OmRpc2FibGVTdXBw
cmVzc2lvbihOU1N0cmluZyAqcmVhc29uKQoreworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTA5MAorICAgIFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gZGlzYWJs
ZUF1dG9tYXRpY1Rlcm1pbmF0aW9uOnJlYXNvbl07CisjZW5kaWYKK30KKwordm9pZCBDaGlsZFBy
b2Nlc3M6OmVuYWJsZVN1cHByZXNzaW9uKE5TU3RyaW5nICpyZWFzb24pCit7CisjaWYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisgICAgW1tOU1Byb2Nlc3NJbmZvIHBy
b2Nlc3NJbmZvXSBlbmFibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjpyZWFzb25dOworI2VuZGlmCit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hh
cmVkV29ya2VyUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtl
clByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAzY2Q3NTMzN2I3
ZmVlODQ2OWIwOTRlODE0OGVhNTVjMzY5MjQ5ODlhLi43ODliYmIzMTgxNGM0ZTE0YzgzYWU2Y2Ey
MGYxMDVmNjQ2ZDRiY2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQ
cm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLm1lc3NhZ2VzLmluCkBA
IC0zMCw2ICszMCwxMCBAQCBtZXNzYWdlcyAtPiBTaGFyZWRXb3JrZXJQcm9jZXNzIHsKICAgICAj
IFRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3Mgc2VuZHMgYmFjayBhIERpZENyZWF0ZVdlYlByb2Nl
c3NDb25uZWN0aW9uIG1lc3NhZ2Ugd2l0aAogICAgICMgYSBjb25uZWN0aW9uIGlkZW50aWZpZXIu
CiAgICAgQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQorCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIFNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29sIGZsYWcpCisjZW5kaWYKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtl
clByb2Nlc3NNYWluTWFjLm1tCmluZGV4IDMwZjhhNzQ5NjRkNmQxY2MyODc5ZjMxOTdjNTQ1YmE2
YzA1OTVhZGIuLjE4OTA0NDBjN2VmODNjZjFiMDUxOTE0NzliN2E4NTk3ODNiYTA5YzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtl
clByb2Nlc3NNYWluTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nl
c3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tCkBAIC05Niw5ICs5Niw3IEBAIGlu
dCBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbihjb25zdCBDb21tYW5kTGluZSYgY29tbWFuZExpbmUp
CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxp
emVNYWluUnVuTG9vcCgpOwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDkwCi0gICAgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBkaXNhYmxlQXV0b21hdGlj
VGVybWluYXRpb246QCJEaXNhYmxlIFNoYXJlZFdvcmtlclByb2Nlc3MgQXV0byBUZXJtaW5hdGlv
biJdOwotI2VuZGlmCisgICAgQ2hpbGRQcm9jZXNzOjpkaXNhYmxlU3VwcHJlc3Npb24oQCJTaGFy
ZWRXb3JrZXJQcm9jZXNzIExhdW5jaCIpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgc2hhcmVk
IHdvcmtlciBwcm9jZXNzIGNvbm5lY3Rpb24uCiAgICAgU2hhcmVkV29ya2VyUHJvY2Vzczo6c2hh
cmVkKCkuaW5pdGlhbGl6ZShDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKHNlcnZlclBv
cnQpLCBSdW5Mb29wOjptYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUz
ODRkZmQ0MmI3YWIxODM5YWM4NmVjZTcxNTdlODliZDBlNDJmNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5j
cHAKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXS0NvbnRleHRQcml2YXRlTWFjLmgiCisKKyNpbmNsdWRlICJXZWJDb250ZXh0Lmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3ZvaWQgV0tDb250ZXh0U2V0UHJvY2Vzc1N1
cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQoYm9vbCBmbGFnKQoreworICAgIFdlYkNvbnRleHQ6OnNl
dFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKGZsYWcpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wZGQ0ZTdhMWI3MDlkZWM4MmJhYjMzYThhM2NhN2FlNjVkYjhhODNlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0Nv
bnRleHRQcml2YXRlTWFjLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V0tDb250ZXh0UHJpdmF0ZU1hY19oCisjZGVmaW5lIFdLQ29udGV4dFByaXZhdGVNYWNfaAorCisj
aW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4g
IkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRQcm9jZXNzU3VwcHJl
c3Npb25TdXBwb3J0RW5hYmxlZChib29sKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5k
aWYKKworI2VuZGlmIC8qIFdLQ29udGV4dFByaXZhdGVNYWNfaCAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc01hbmFnZXIuaApp
bmRleCBiOGI0NTM0Y2VmY2YzYmExNDYyYTdiMGMzNjVlOTBhMWQ2MTdlNmRmLi5hOTVlMjRiNTdi
ODRiN2ZhNDM2NDhhMDFlYThhYzdmZmUzZTk0MDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc01hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc01hbmFnZXIuaApAQCAtMjks
NiArMjksNyBAQAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTM2LDcgKzM3LDYgQEAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247Ci1jbGFzcyBOZXR3
b3JrUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiBjbGFzcyBOZXR3b3Jr
UHJvY2Vzc01hbmFnZXIgewpAQCAtNTAsMTIgKzUwLDIwIEBAIHB1YmxpYzoKICAgICAKICAgICB2
b2lkIHJlbW92ZU5ldHdvcmtQcm9jZXNzUHJveHkoTmV0d29ya1Byb2Nlc3NQcm94eSopOwogCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBzZW5kVG9Qcm9jZXNzKGNvbnN0IFUmIG1lc3Nh
Z2UpOworCiBwcml2YXRlOgogICAgIE5ldHdvcmtQcm9jZXNzTWFuYWdlcigpOwogCiAgICAgUmVm
UHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IG1fbmV0d29ya1Byb2Nlc3M7CiB9OwogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiBpbmxpbmUgdm9pZCBOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OnNlbmRUb1By
b2Nlc3MoY29uc3QgVSYgbWVzc2FnZSkKK3sKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcyAmJiBt
X25ldHdvcmtQcm9jZXNzLT5pc1ZhbGlkKCkpCisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNl
bmQobWVzc2FnZSwgMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMjg5MzQ1YTQ2NTdj
YTFhYTE5Y2IwMzMwYmNkYmY5MjNjM2RmOTVkZi4uMWY5Y2U4OWVkMjQxYmYxMTQxMGNiNDgzOGNm
NmE5ZWRkZmNlOGE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE2Miw2ICsxNjIsMTEgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVy
KiwgQ29yZUlQQzo6Q29ubmVjdGkKICAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSwg
MCk7CiAgICAgCiAgICAgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzID0gMDsKKworI2lm
IFBMQVRGT1JNKE1BQykKKyAgICBpZiAoV2ViQ29udGV4dDo6YXBwbGljYXRpb25Jc09jY2x1ZGVk
KCkpCisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKSwgMCk7CisjZW5kaWYKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNDdjY2JhY2JmNzMzNGE2N2Q1YTYyYjJl
NzAzNjUxN2VmMjcwNzcwNy4uMjU0Yzg4ZDMyZjcxMjQ2ZmY2YWNlZDgyYmQ0Mjk4ZmFjZmNiYTRi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaApAQCAtNDUsNiArNDUsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBn
ZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOwogCisg
ICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoY29uc3QgVCYgbWVzc2FnZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncyA9IDApOworCiBwcml2YXRl
OgogICAgIE5ldHdvcmtQcm9jZXNzUHJveHkoTmV0d29ya1Byb2Nlc3NNYW5hZ2VyKik7CiAKQEAg
LTc3LDYgKzgxLDE3IEBAIHByaXZhdGU6CiAgICAgRGVxdWU8UmVmUHRyPE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiA+
IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K2Jvb2wgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZChjb25zdCBUJiBtZXNzYWdlLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKQoreworICAgIENPTVBJ
TEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKKyAgICAKKyAgICBp
ZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBt
X2Nvbm5lY3Rpb24tPnNlbmQobWVzc2FnZSwgZGVzdGluYXRpb25JRCwgbWVzc2FnZVNlbmRGbGFn
cyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oCmluZGV4IDM3ODI0YzRhYTNiNGRhYjFjYjIxMzg3MDY2
OWQyNTljMDgwZDg2ZTAuLjU2ZGQ5NTFhMzE4MmNkMmVjMGU4YWY1ZTE0ZDZiOWVmNGY1ZjU1NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc01hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShQTFVHSU5fUFJP
Q0VTUykKIAogI2luY2x1ZGUgIlBsdWdpbk1vZHVsZUluZm8uaCIKKyNpbmNsdWRlICJQbHVnaW5Q
cm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC00
MSw3ICs0Miw2IEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBQbHVnaW5JbmZvU3RvcmU7Ci1jbGFzcyBQbHVnaW5Qcm9jZXNzUHJveHk7CiBjbGFzcyBX
ZWJQcm9jZXNzUHJveHk7CiBjbGFzcyBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI7CiAKQEAgLTU2
LDYgKzU2LDggQEAgcHVibGljOgogICAgIHZvaWQgZ2V0U2l0ZXNXaXRoRGF0YShjb25zdCBQbHVn
aW5Nb2R1bGVJbmZvJiwgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyKiwgdWludDY0X3QgY2FsbGJh
Y2tJRCk7CiAgICAgdm9pZCBjbGVhclNpdGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBX
ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIqLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVp
bnQ2NF90IGZsYWdzLCB1aW50NjRfdCBtYXhBZ2VJblNlY29uZHMsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBzZW5kVG9BbGxQcm9jZXNzZXMo
Y29uc3QgVSYgbWVzc2FnZSk7CisKIHByaXZhdGU6CiAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXIo
KTsKIApAQCAtNjUsNiArNjcsMTcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmUHRyPFBsdWdp
blByb2Nlc3NQcm94eT4gPiBtX3BsdWdpblByb2Nlc3NlczsKIH07CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIFU+IGlubGluZSB2b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzZW5kVG9BbGxQcm9jZXNz
ZXMoY29uc3QgVSYgbWVzc2FnZSkKK3sKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFBsdWdpblBy
b2Nlc3NQcm94eT4gPiYgcHJvY2Vzc2VzID0gbV9wbHVnaW5Qcm9jZXNzZXM7CisgICAgc2l6ZV90
IHByb2Nlc3NDb3VudCA9IHByb2Nlc3Nlcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwcm9jZXNzQ291bnQ7ICsraSkgeworICAgICAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBy
b2Nlc3MgPSBwcm9jZXNzZXNbaV0uZ2V0KCk7CisgICAgICAgIGlmIChwcm9jZXNzLT5pc1ZhbGlk
KCkpCisgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKG1lc3NhZ2UsIDApOworICAgIH0KK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCA4MTE5N2NlMzZjNGIzYmQxNTI5NzEzYTk5MjBlN2Q3NGNjMjU2
MjdiLi4wYzJlODY4OWU2NDg4NzY4MGU0MmExMzQ5M2MwZjNlNTBlMGJiMTJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94
eS5jcHAKQEAgLTIyOCw2ICsyMjgsMTEgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEZp
bmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBDb3JlSVBDOjpDb25uZWN0aW8KICAgICAg
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzOjpDcmVhdGVXZWJQ
cm9jZXNzQ29ubmVjdGlvbigpLCAwKTsKICAgICAKICAgICBtX251bVBlbmRpbmdDb25uZWN0aW9u
UmVxdWVzdHMgPSAwOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChXZWJDb250ZXh0Ojph
cHBsaWNhdGlvbklzT2NjbHVkZWQoKSkKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpQbHVnaW5Qcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSksIDApOwor
I2VuZGlmCiB9CiAKIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNz
Q29ubmVjdGlvbihjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uSWRlbnRpZmll
ciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHku
aAppbmRleCBmNzc1MDNkOGQ0MmQ5MGNiZWI4Y2RhNjRjOTc5ZGVkZGVlMmYyMGFhLi4wYjNmZTMy
YzRkYjMxMTRlZDgwNTliYTAzZjhjZjQ5ZGU4ZDYzMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaApAQCAtNjcsNiAr
NjcsMTAgQEAgcHVibGljOgogCiAgICAgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luSW5m
bygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luSW5mbzsgfQogCisgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBib29sIHNlbmQoY29uc3QgVCYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdW5z
aWduZWQgbWVzc2FnZVNlbmRGbGFncyA9IDApOworCiAgICAgLy8gQXNrcyB0aGUgcGx1Zy1pbiBw
cm9jZXNzIHRvIGNyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIHRvIGEgd2ViIHByb2Nlc3MuIFRoZSBj
b25uZWN0aW9uIGlkZW50aWZpZXIgd2lsbCBiZSAKICAgICAvLyBlbmNvZGVkIGluIHRoZSBnaXZl
biBhcmd1bWVudCBlbmNvZGVyIGFuZCBzZW50IGJhY2sgdG8gdGhlIGNvbm5lY3Rpb24gb2YgdGhl
IGdpdmVuIHdlYiBwcm9jZXNzLgogICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24o
UGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7CkBAIC0xNjksNiArMTczLDE3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citib29sIFBsdWdpblByb2Nlc3NQcm94
eTo6c2VuZChjb25zdCBUJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1bnNpZ25l
ZCBtZXNzYWdlU2VuZEZsYWdzKQoreworICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFz
eW5jTWVzc2FnZUV4cGVjdGVkKTsKKworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5zZW5kKG1lc3NhZ2UsIGRlc3Rp
bmF0aW9uSUQsIG1lc3NhZ2VTZW5kRmxhZ3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQ
cm9jZXNzTWFuYWdlci5oCmluZGV4IGJhMDZjN2NiYjgwOTgyNDM0NGNlNzljYzQ5YWI0MWI3MWZk
M2M4NDguLmY0YzRjM2VkZjZlZDUwY2IwZmE3ZWVjMjQ3MTgwZDFlNWNlYTQ3NGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclBy
b2Nlc3NNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtl
cnMvU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVO
QUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCiAKICNpbmNsdWRlICJQbHVnaW5Nb2R1bGVJbmZv
LmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNDEsNyArNDIsNiBAQCBuYW1lc3BhY2UgQ29yZUlQ
QyB7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUGx1Z2luSW5mb1N0b3JlOwotY2xhc3Mg
U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogY2xhc3Mg
V2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyOwogCkBAIC01Myw2ICs1Myw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGdldFNoYXJlZFdvcmtlclByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6R2V0U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOwogICAg
IHZvaWQgcmVtb3ZlU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KFNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eSopOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBzZW5kVG9BbGxQcm9jZXNz
ZXMoY29uc3QgVSYgbWVzc2FnZSk7CisKIHByaXZhdGU6CiAgICAgU2hhcmVkV29ya2VyUHJvY2Vz
c01hbmFnZXIoKTsKIApAQCAtNjEsNiArNjMsMTcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVm
UHRyPFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eT4gPiBtX3NoYXJlZFdvcmtlclByb2Nlc3NlczsK
IH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSB2b2lkIFNoYXJlZFdvcmtlclByb2Nl
c3NNYW5hZ2VyOjpzZW5kVG9BbGxQcm9jZXNzZXMoY29uc3QgVSYgbWVzc2FnZSkKK3sKKyAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eT4gPiYgcHJvY2Vzc2Vz
ID0gbV9zaGFyZWRXb3JrZXJQcm9jZXNzZXM7CisgICAgc2l6ZV90IHByb2Nlc3NDb3VudCA9IHBy
b2Nlc3Nlcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9jZXNzQ291bnQ7
ICsraSkgeworICAgICAgICBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkqIHByb2Nlc3MgPSBwcm9j
ZXNzZXNbaV0uZ2V0KCk7CisgICAgICAgIGlmIChwcm9jZXNzLT5pc1ZhbGlkKCkpCisgICAgICAg
ICAgICBwcm9jZXNzLT5zZW5kKG1lc3NhZ2UsIDApOworICAgIH0KK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29y
a2VyUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5jcHAKaW5kZXggMDMwZTNmZmM4OTE1MWYxNDBh
OTRkODcwZjMzNjUyMmQ5ZmUxMWU5My4uYjgwOGVmYmFjZGZhYjg4ODZhZmM4YTE1N2Y1MGNlODhl
ODkxYTA0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtl
cnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNjQs
NiArMTY0LDExIEBAIHZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVu
Y2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQQzo6Q29uCiAgICAgICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2hhcmVkV29ya2VyUHJvY2Vzczo6Q3JlYXRlV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24oKSwgMCk7CiAgICAgCiAgICAgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3Rz
ID0gMDsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoV2ViQ29udGV4dDo6YXBwbGljYXRp
b25Jc09jY2x1ZGVkKCkpCisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2hh
cmVkV29ya2VyUHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUpLCAwKTsKKyNl
bmRpZgogfQogCiB2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24oY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50
aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vy
cy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9T
aGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5oCmluZGV4IDlmMGM1ZDJhY2Vi
MzllMmM2ODY3ODhkNzI0Mjg0ZGE1ZDlhNTg5NTUuLmUzMGI5ODkxOGU3YzVhZmY0ZmQ5ZTk1ZjYw
M2FkMDk1MGE4MzU3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFy
ZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5oCkBAIC01
Niw2ICs1NiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gVGVybWluYXRlcyB0aGUgc2hhcmVkIHdvcmtl
ciBwcm9jZXNzLgogICAgIHZvaWQgdGVybWluYXRlKCk7CiAKKyAgICBib29sIGlzVmFsaWQoKSBj
b25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGJvb2wgc2VuZChjb25zdCBUJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1bnNp
Z25lZCBtZXNzYWdlU2VuZEZsYWdzID0gMCk7CisKIHByaXZhdGU6CiAgICAgU2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5KFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyKiwgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKQEAgLTkxLDYgKzk1LDE3IEBAIHByaXZhdGU6CiAg
ICAgdW5zaWduZWQgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzOwogfTsKIAordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK2Jvb2wgU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpzZW5kKGNvbnN0
IFQmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVuc2lnbmVkIG1lc3NhZ2VTZW5k
RmxhZ3MpCit7CisgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhw
ZWN0ZWQpOworCisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPnNlbmQobWVzc2FnZSwgZGVzdGluYXRpb25JRCwgbWVz
c2FnZVNlbmRGbGFncyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
RU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5oCmluZGV4IDBkNDQ0NTRiYWI2M2E2MTYzYjM2MzZmODYxYTM1YjQ3ZWIwMzQ0OGYuLjBk
NDk3MWM1YjY4OWM0ZWRjMzdkNzhiMzIwZjBkYjg4ZjFkMDYwYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuaApAQCAtMjQwLDYgKzI0MCw5IEBAIHB1YmxpYzoKIAogI2lmIFBM
QVRGT1JNKE1BQykKICAgICBzdGF0aWMgYm9vbCBvbWl0UERGU3VwcG9ydCgpOworICAgIHN0YXRp
YyBib29sIGFwcGxpY2F0aW9uSXNPY2NsdWRlZCgpIHsgcmV0dXJuIHNfYXBwbGljYXRpb25Jc09j
Y2x1ZGVkOyB9CisgICAgc3RhdGljIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJs
ZWQoKSB7IHJldHVybiBzX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkOyB9CisgICAg
c3RhdGljIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQoYm9vbCk7CiAj
ZW5kaWYKIAogICAgIHZvaWQgZnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBmdWxs
S2V5Ym9hcmRBY2Nlc3NFbmFibGVkKTsKQEAgLTMwMiw2ICszMDUsMTMgQEAgcHJpdmF0ZToKICAg
ICBTdHJpbmcgY29va2llU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogICAgIFN0cmluZyBwbGF0
Zm9ybURlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgc3RhdGljIHZvaWQgYXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKHVpbnQzMl90
LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCk7CisgICAgc3RhdGljIHZvaWQgYXBw
bGljYXRpb25CZWNhbWVPY2NsdWRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwg
dWludDMyX3QpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9u
SGFuZGxlcnMoKTsKKyAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0
aW9uSGFuZGxlcnMoKTsKKyNlbmRpZgorCiAgICAgUHJvY2Vzc01vZGVsIG1fcHJvY2Vzc01vZGVs
OwogICAgIAogICAgIFZlY3RvcjxSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiA+IG1fcHJvY2Vzc2Vz
OwpAQCAtMzk2LDYgKzQwNiwxMSBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxEaWN0aW9uYXJ5Q2FsbGJhY2s+ID4gbV9kaWN0aW9uYXJ5Q2FsbGJhY2tzOwogCiAgICAg
Q29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyTWFwIG1fbWVzc2FnZVJlY2VpdmVyTWFwOworCisjaWYg
UExBVEZPUk0oTUFDKQorICAgIHN0YXRpYyBib29sIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkOwor
ICAgIHN0YXRpYyBib29sIHNfcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQ7CisjZW5k
aWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSB2b2lkIFdlYkNvbnRleHQ6OnNl
bmRUb0FsbFByb2Nlc3Nlcyhjb25zdCBVJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA2YmY2NTQzYjlkZjk2NDU0YzU2MzBmNzU0
YTI3OTY4ZGQ1ZjYzMTQzLi40YWQwZGViNGMyNDM2MTQ1N2FjODYzODI0ZGUxNTYxMTVlNWJkYWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAt
NTMyLDYgKzUzMiwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5n
KENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdAogCiAgICAgLy8gVGVsbCB0
aGUgY29udGV4dCB0aGF0IHdlIGZpbmlzaGVkIGxhdW5jaGluZy4KICAgICBtX2NvbnRleHQtPnBy
b2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcodGhpcyk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAg
aWYgKFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uSXNPY2NsdWRlZCgpKQorICAgICAgICBjb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRl
ZCh0cnVlKSwgMCk7CisjZW5kaWYKIH0KIAogV2ViRnJhbWVQcm94eSogV2ViUHJvY2Vzc1Byb3h5
Ojp3ZWJGcmFtZSh1aW50NjRfdCBmcmFtZUlEKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCmluZGV4IDAwYzAyY2QwMmQxY2M1Njg2M2ExNTk4
ZjNiZDkxMDJlM2Q1ZTY4ZDkuLmQ0MjVmZjdmZGExYzU4OGExM2NjMDVjN2RlNmQyMzJiMTI4MGY0
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0K
QEAgLTI1LDYgKzI1LDEzIEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29u
dGV4dC5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW1wb3J0ICJOZXR3b3Jr
UHJvY2Vzc01hbmFnZXIuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKKyNp
bXBvcnQgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCisjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzTWVz
c2FnZXMuaCIKKyNpbXBvcnQgIlNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmgiCisjaW1wb3J0
ICJTaGFyZWRXb3JrZXJQcm9jZXNzTWVzc2FnZXMuaCIKIAogI2ltcG9ydCAiV2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCkBA
IC01Miw2ICs1OSw5IEBAIE5TU3RyaW5nICpXZWJJY29uRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0
c0tleSA9IEAiV2ViSWNvbkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsCiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCitib29sIFdlYkNvbnRleHQ6OnNfYXBwbGljYXRpb25Jc09jY2x1ZGVkID0gZmFsc2U7
Citib29sIFdlYkNvbnRleHQ6OnNfcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQgPSBm
YWxzZTsKKwogU3RyaW5nIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQog
ewogICAgIE5TU3RyaW5nICphcHBOYW1lID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJ
ZGVudGlmaWVyXTsKQEAgLTI1Nyw1ICsyNjcsODMgQEAgdm9pZCBXZWJDb250ZXh0OjpzZXRQYXN0
ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdAog
ICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShi
dWZmZXIsIHBhc3RlYm9hcmRUeXBlKTsKIH0KIAordm9pZCBXZWJDb250ZXh0OjphcHBsaWNhdGlv
bkJlY2FtZVZpc2libGUodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90
KQoreworICAgIGlmIChzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkgeworICAgICAgICBzX2FwcGxp
Y2F0aW9uSXNPY2NsdWRlZCA9IGZhbHNlOworCisgICAgICAgIGNvbnN0IFZlY3RvcjxXZWJDb250
ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMoKTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkK
KyAgICAgICAgICAgIGNvbnRleHRzW2ldLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSkpOworCisjaWYgRU5BQkxF
KFBMVUdJTl9QUk9DRVNTKQorICAgICAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCku
c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzOjpTZXRBcHBsaWNhdGlv
bklzT2NjbHVkZWQoZmFsc2UpKTsKKyNlbmRpZgorI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CisgICAgICAgIE5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2VuZFRvUHJvY2VzcyhN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSkp
OworI2VuZGlmCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKKyAgICAgICAgU2hh
cmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNz
YWdlczo6U2hhcmVkV29ya2VyUHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGZhbHNl
KSk7CisjZW5kaWYKKyAgICB9Cit9CisKK3ZvaWQgV2ViQ29udGV4dDo6YXBwbGljYXRpb25CZWNh
bWVPY2NsdWRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCit7
CisgICAgaWYgKCFzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkgeworICAgICAgICBzX2FwcGxpY2F0
aW9uSXNPY2NsdWRlZCA9IHRydWU7CisgICAgICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0Kj4m
IGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMoKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkKKyAgICAg
ICAgICAgIGNvbnRleHRzW2ldLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKSk7CisKKyNpZiBFTkFCTEUoUExVR0lO
X1BST0NFU1MpCisgICAgICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZW5kVG9B
bGxQcm9jZXNzZXMoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2Ns
dWRlZCh0cnVlKSk7CisjZW5kaWYKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorICAgICAg
ICBOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNlbmRUb1Byb2Nlc3MoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSkpOworI2VuZGlm
CisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKKyAgICAgICAgU2hhcmVkV29ya2Vy
UHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6U2hh
cmVkV29ya2VyUHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUpKTsKKyNlbmRp
ZgorICAgIH0KK30KKwordm9pZCBXZWJDb250ZXh0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNh
dGlvbkhhbmRsZXJzKCkKK3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwOTAKKyAgICBpZiAoIVdLUmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKFdL
T2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSwgYXBwbGlj
YXRpb25CZWNhbWVWaXNpYmxlKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIlJlZ2lzdGVyYXRp
b24gb2YgXCJBcHAgQmVjYW1lIFZpc2libGVcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQu
XG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghV0tSZWdpc3Rlck9jY2x1
c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGlj
YXRpb25CZWNhbWVPY2NsdWRlZCwgYXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCkpCisgICAgICAg
IFdURkxvZ0Fsd2F5cygiUmVnaXN0ZXJhdGlvbiBvZiBcIkFwcCBCZWNhbWUgT2NjbHVkZWRcIiBu
b3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4iKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkNv
bnRleHQ6OnVucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycygpCit7CisjaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisgICAgaWYgKCFXS1VucmVn
aXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKFdLT2NjbHVzaW9uTm90aWZpY2F0aW9u
VHlwZUFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQsIGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQp
KSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiUmVtb3ZhbCBvZiBcIkFwcGxpY2F0aW9uIEJlY2Ft
ZSBPY2NsdWRlZFwiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKCFXS1VucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRp
b25IYW5kbGVyKFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVjYW1lVmlz
aWJsZSwgYXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKSkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJS
ZW1vdmFsIG9mIFwiQXBwbGljYXRpb24gQmVjYW1lIFZpc2libGVcIiBub3RpZmljYXRpb24gaGFu
ZGxlciBmYWlsZWQuXG4iKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkNvbnRleHQ6OnNldFByb2Nl
c3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKGJvb2wgZmxhZykKK3sKKyAgICBpZiAoc19wcm9j
ZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCAhPSBmbGFnKSB7CisgICAgICAgIHNfcHJvY2Vz
c1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQgPSBmbGFnOworICAgICAgICBpZiAoZmxhZykKKyAg
ICAgICAgICAgIHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgdW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRs
ZXJzKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQzZmJiMTQ0
MjJjMWViZDk1Yzg3MzRiOGNiMTcyNTFjYzRhZTg5ZDcuLjliNDhkM2U5ZmJkODdjZjU2MTY3NzQ0
MDE1OWE3ZTgwMDliMmU1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUzMSw2ICs1MzEsOSBAQAogCQk5M0ZDNjdCRTEyRDND
Q0YyMDBBNjA2MTAgLyogRGVjb2RlckFkYXB0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkM2NzlFMTJEM0NDNzQwMEE2MDYxMCAvKiBEZWNvZGVy
QWRhcHRlci5oICovOyB9OwogCQk5M0ZDNjdCRjEyRDNDQ0YyMDBBNjA2MTAgLyogRW5jb2RlckFk
YXB0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNGQzY3OUYxMkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmNwcCAqLzsgfTsKIAkJ
OTNGQzY3QzAxMkQzQ0NGMjAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZDNjdBMDEyRDNDQzc0MDBBNjA2
MTAgLyogRW5jb2RlckFkYXB0ZXIuaCAqLzsgfTsKKwkJOUY1NEY4ODAxNjQyMDk5MzAwN0RGODFB
IC8qIFdLQ29udGV4dFByaXZhdGVNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUY1NEY4N0UxNjQyMDk5MzAwN0RGODFBIC8qIFdLQ29udGV4dFBy
aXZhdGVNYWMuY3BwICovOyB9OworCQk5RjU0Rjg4MTE2NDIwOTkzMDA3REY4MUEgLyogV0tDb250
ZXh0UHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUY1NEY4N0YxNjQyMDk5MzAwN0RGODFBIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5RjU0Rjg4
MzE2NDIwOUNEMDA3REY4MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY1NEY4ODIxNjQyMDlDRDAwN0RGODFBIC8q
IENoaWxkUHJvY2Vzc01hYy5tbSAqLzsgfTsKIAkJQjYyRTczMTAxNDMwNDdBNjAwNjlFQzM1IC8q
IFdLSGl0VGVzdFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCNjJFNzMwRjE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNw
cCAqLzsgfTsKIAkJQjYyRTczMTIxNDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjYyRTczMTEx
NDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUI2MzQwM0Y5MTQ5MTBENTcwMDEwNzBCNSAv
KiBBUElPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjYzNDAzRjgxNDkxMEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5jcHAgKi87IH07CkBA
IC0xNzM4LDYgKzE3NDEsOSBAQAogCQk5M0ZDNjc5RTEyRDNDQzc0MDBBNjA2MTAgLyogRGVjb2Rl
ckFkYXB0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RlckFkYXB0
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGQzY3OUYxMkQzQ0M3NDAwQTYw
NjEwIC8qIEVuY29kZXJBZGFwdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEVuY29kZXJBZGFwdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNGQzY3QTAxMkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVuY29kZXJBZGFwdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTlGNTRGODdFMTY0MjA5OTMwMDdERjgxQSAvKiBXS0NvbnRleHRQcml2YXRl
TWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdLQ29udGV4dFBy
aXZhdGVNYWMuY3BwOyBwYXRoID0gbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5RjU0Rjg3RjE2NDIwOTkzMDA3REY4MUEgLyogV0tDb250
ZXh0UHJpdmF0ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0NvbnRl
eHRQcml2YXRlTWFjLmg7IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5RjU0Rjg4MjE2NDIwOUNEMDA3REY4MUEgLyogQ2hpbGRQ
cm9jZXNzTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ2hp
bGRQcm9jZXNzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzJENUQ3RjEy
MzZDQkE4MDBBODhCMTUgLyogV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMzk2RUE1NTEyRTBFRDJEMDBGNEZFQjcgLyogY29uZmln
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCNjJFNzMwRjE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0
UmVzdWx0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLSGl0VGVz
dFJlc3VsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTY0LDYgKzMxNzAs
OCBAQAogCQk2RUU4NDlDNDEzNjhEOTA0MDAzOEQ0ODEgLyogbWFjICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5RjU0Rjg3RTE2NDIwOTkzMDA3REY4MUEg
LyogV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAgKi8sCisJCQkJOUY1NEY4N0YxNjQyMDk5MzAwN0RG
ODFBIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLywKIAkJCQk2RUU4NDlDNjEzNjhEOTJEMDAz
OEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggKi8sCiAJCQkJQkNFMTdCN0IxMzgxRjEx
NzAwMTJBNjQxIC8qIFdLUGFnZVByaXZhdGVNYWMuY3BwICovLAogCQkJCUJDRTE3QjdDMTM4MUYx
MTcwMDEyQTY0MSAvKiBXS1BhZ2VQcml2YXRlTWFjLmggKi8sCkBAIC0zNjMwLDYgKzM2MzgsNyBA
QAogCQkJCUUxNzlGRDlFMTM0RDM4MjUwMDE1Qjg4MyAvKiBBcmd1bWVudENvZGVyc01hYy5tbSAq
LywKIAkJCQlFMUEzMTczMTEzNENFQTZDMDA3QzlBNEYgLyogQXR0cmlidXRlZFN0cmluZy5oICov
LAogCQkJCUUxQTMxNzM0MTM0Q0VBODAwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLm1tICov
LAorCQkJCTlGNTRGODgyMTY0MjA5Q0QwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi8s
CiAJCQkJMUEyQTRBRkUxNTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLmggKi8sCiAJ
CQkJMUEyQTRBRkQxNTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLm1tICovLAogCQkJ
CTFBNkY5RkI2MTFFMTQwODUwMERCMTM3MSAvKiBDb21tYW5kTGluZU1hYy5jcHAgKi8sCkBAIC00
ODEwLDYgKzQ4MTksNyBAQAogCQkJCTUxN0NGMEUwMTYzQTQ0NEMwMEMyOTUwRSAvKiBOZXR3b3Jr
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3Q0YwRTQxNjNBNDg2QzAwQzI5NTBFIC8q
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MUI3ODQ3MTE2M0YyNDY5MDAwN0I2OTIgLyogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTlGNTRGODgxMTY0MjA5OTMwMDdERjgxQSAvKiBXS0NvbnRleHRQcml2
YXRlTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTU3NDAsNiArNTc1MCw4IEBACiAJCQkJMkQyQURG
MDkxNjM2MkRENTAwMTk3RTQ3IC8qIFBERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkQyQURGMEIxNjM2MkREQjAwMTk3RTQ3IC8qIFBERlBsdWdpbkFubm90YXRp
b24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDJBREYxMDE2MzY0RDgyMDAxOTdFNDcgLyogUERG
UGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTlGNTRGODgwMTY0
MjA5OTMwMDdERjgxQSAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTlGNTRGODgzMTY0MjA5Q0QwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCAyY2MxZTYyODA0NjMyODEzMTE0MDU4ZmFjYmVhMTUwMDU3MzVjYzI0Li4y
YzFiNDMwNTIzNjRkMzZmYjYyYTZlZDdlOWJjMmFmNGMzZDgwNWViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC05Nyw0ICs5Nyw4
IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgewogICAgIFNlY0l0ZW1SZXNwb25zZSh1aW50NjRf
dCByZXF1ZXN0SUQsIFdlYktpdDo6U2VjSXRlbVJlc3BvbnNlRGF0YSByZXNwb25zZSkgRGlzcGF0
Y2hPbkNvbm5lY3Rpb25RdWV1ZQogICAgIFNlY0tleWNoYWluSXRlbVJlc3BvbnNlKHVpbnQ2NF90
IHJlcXVlc3RJRCwgV2ViS2l0OjpTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGEgcmVzcG9uc2Up
IERpc3BhdGNoT25Db25uZWN0aW9uUXVldWUKICNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIFNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29sIGZsYWcpOworI2VuZGlmCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6
YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlh
bGl6YXRpb24ubW0KaW5kZXggMmFmNTk0OGZkOWUxNzdhNDUwZDg2OTYxZGZmNTk2ZTg1NzAxMjY4
Yy4uZjRiNDE3NDI0YzA3NTUyZDk5MjViZDUwOTM0ZWZmNjUwNTU3OTU0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NJbml0aWFsaXph
dGlvbi5tbQpAQCAtNDYsOSArNDYsNyBAQCB2b2lkIEluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0
IFN0cmluZyYgY2xpZW50SWRlbnRpZmllciwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SQogICAgIFdU
Rjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1
bkxvb3AoKTsKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAot
ICAgIFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gZGlzYWJsZUF1dG9tYXRpY1Rlcm1pbmF0
aW9uOkAiRGlzYWJsZSBXZWJQcm9jZXNzIEF1dG8gVGVybWluYXRpb24iXTsKLSNlbmRpZgorICAg
IENoaWxkUHJvY2Vzczo6ZGlzYWJsZVN1cHByZXNzaW9uKEAiV2ViUHJvY2VzcyBMYXVuY2giKTsK
IAogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemVTaGltKCk7CiAgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZVNhbmRib3goY2xpZW50SWRlbnRpZmllcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172185</attachid>
            <date>2012-11-02 17:39:09 -0700</date>
            <delta_ts>2012-11-02 18:06:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100997-20121102173728.patch</filename>
            <type>text/plain</type>
            <size>49346</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWMyMzg3OTQwZTAwZWQz
ZGNhYmIyNDI3ZTM1MDRkMGFlZGU1NjMwZC4uYTY0ODM0ZTJkMGE3MmMwYzFlMTQ1ZjIxNDkzNjM2
MDUwZWIzMTE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDEyLTExLTAyICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhcHBsaWNhdGlv
biBvY2NsdXNpb24gY3JpdGVyaW9uIHRvIGVuYWJsZS9kaXNhYmxlIHByb2Nlc3Mgc3VwcHJlc3Np
b24gb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDA5OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQcm92aWRlIHN1cHBvcnQgZm9yIGVuYWJsaW5nIGFuZCBkaXNhYmxpbmcgcHJvY2VzcyBzdXBw
cmVzc2lvbiB3aGVuIGFwcGxpY2F0aW9uIGlzIGNvbXBsZXRlbHkgb2NjbHVkZWQgb24gTWFjLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46IEFk
ZGVkIG1lc3NhZ2UgdG8gdXBkYXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMuCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NNYWluKTogUmVwbGFjZWQgZGlyZWN0IGNhbGwgdG8g
dGFrZSBhc3NlcnRpb24gd2l0aCBhIGNhbGwgdG8KKyAgICAgICAgYW4gZXF1aXZhbGVudCwgc2lt
cGxlciB0byB1c2UsIGhlbHBlciBtZXRob2QuCisgICAgICAgICogUGxhdGZvcm0vbWFjL1Byb2Nl
c3NVdGlsaXRpZXMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOiBBZGRlZCBoZWxwZXIgbWV0
aG9kcyB0byB0YWtlIGFuZCByZWxlYXNlIGFzc2VydGlvbiBmb3IgcHJvY2VzcyBzdXBwcmVzc2lv
bi4KKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvUHJvY2Vzc1V0aWxpdGllcy5tbTogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpkaXNhYmxlUHJvY2Vzc1N1cHByZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6ZW5hYmxlUHJvY2Vzc1N1cHByZXNzaW9uKToKKyAgICAg
ICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MubWVzc2FnZXMuaW46IEFkZGVkIG1lc3Nh
Z2UgdG8gdXBkYXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMuCisgICAgICAgICogUGx1
Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01haW5NYWMubW06CisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblByb2Nlc3NNYWluKTogUmVwbGFjZWQgZGlyZWN0IGNhbGwgdG8gdGFrZSBhc3NlcnRp
b24gd2l0aCBhIGNhbGwgdG8KKyAgICAgICAgYW4gZXF1aXZhbGVudCwgc2ltcGxlciB0byB1c2Us
IGhlbHBlciBtZXRob2QuCisgICAgICAgICogU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6Q2hpbGRQcm9jZXNzKTogSW5pdGlhbGl6ZSBhcHBs
aWNhdGlvbiBvY2NsdXNpb24gc3RhdHVzIHRvIGZhbHNlLgorICAgICAgICAqIFNoYXJlZC9DaGls
ZFByb2Nlc3MuaDoKKyAgICAgICAgKENoaWxkUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkNo
aWxkUHJvY2Vzczo6YXBwbGljYXRpb25Jc09jY2x1ZGVkKToKKyAgICAgICAgKiBTaGFyZWQvbWFj
L0NoaWxkUHJvY2Vzc01hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpDaGlsZFByb2Nlc3M6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCk6CisgICAgICAg
IEFkZGVkIGdldHRlciBhbmQgc2V0dGVyIGZvciBhcHBsaWNhdGlvbiBvY2NsdXNpb24gc3RhdHVz
LgorICAgICAgICAqIFNoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5tZXNz
YWdlcy5pbjogQWRkZWQgbWVzc2FnZSB0byB1cGRhdGUgYXBwbGljYXRpb24gb2NjbHVzaW9uIHN0
YXR1cy4KKyAgICAgICAgKiBTaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9j
ZXNzTWFpbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkV29ya2VyUHJvY2Vzc01haW4p
OiBSZXBsYWNlZCBkaXJlY3QgY2FsbCB0byB0YWtlIGFzc2VydGlvbiB3aXRoIGEgY2FsbCB0bwor
ICAgICAgICBhbiBlcXVpdmFsZW50LCBzaW1wbGVyIHRvIHVzZSwgaGVscGVyIG1ldGhvZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdLQ29udGV4dFNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaDog
QWRkZWQuCisgICAgICAgIEFkZGVkIHByaXZhdGUgQVBJIHRvIGVuYWJsZSBwcm9jZXNzIHN1cHBy
ZXNzaW9uIHN1cHBvcnQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NNYW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoTmV0d29ya1Byb2Nlc3NN
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NNYW5hZ2VyOjpzZW5kVG9Q
cm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1
bmNoaW5nKTogVXBkYXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMgcG9zdCBsYXVuY2gu
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojppc1ZhbGlkKToKKyAgICAgICAgKE5l
dHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZCk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc01hbmFnZXIuaDoKKyAgICAgICAgKFBsdWdpblByb2Nlc3NNYW5hZ2VyKToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNlbmRUb0FsbFByb2Nlc3Nl
cyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6
ZGlkRmluaXNoTGF1bmNoaW5nKTogVXBkYXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMg
cG9zdCBsYXVuY2guCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6aXNWYWxpZCk6Cisg
ICAgICAgIChQbHVnaW5Qcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpzZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
U2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyKToKKyAgICAgICAgKFdl
YktpdDo6U2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6OnNlbmRUb0FsbFByb2Nlc3Nlcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpkaWRGaW5p
c2hMYXVuY2hpbmcpOiBVcGRhdGUgYXBwbGljYXRpb24gb2NjbHVzaW9uIHN0YXR1cyBwb3N0IGxh
dW5jaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5Ojpp
c1ZhbGlkKToKKyAgICAgICAgKFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSk6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OnNlbmQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6OmFwcGxpY2F0aW9uSXNPY2NsdWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHQ6OnByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
bnRleHQpOgorICAgICAgICBBZGRlZCBnZXR0ZXIgZm9yIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBz
dGF0dXMgYW5kIHByb2Nlc3Mgc3VwcHJlc3Npb24gc3VwcG9ydCBlbmFibGVkIHN0YXR1cy4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOiBVcGRhdGUgYXBwbGljYXRpb24g
b2NjbHVzaW9uIHN0YXR1cyBwb3N0IGxhdW5jaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNYWMubW06CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0OjphcHBsaWNhdGlvbkJlY2FtZVZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0OjphcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKToKKyAgICAgICAgQWRkZWQgbm90aWZp
Y2F0aW9uIGhhbmRsZXJzIHRvIG5vdGlmeSBub24gVUkgV2ViS2l0MiBwcm9jZXNzZXMgb2YgdGhl
IGNoYW5nZSBpbiBhcHBsaWNhdGlvbiBvY2NsdXNpb24gc3RhdHVzLgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6dW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlv
bkhhbmRsZXJzKToKKyAgICAgICAgSGVscGVyIGZ1bmN0aW9ucyB0byByZWdpc3RlciBhbmQgdW5y
ZWdpc3RlciBhcHBsaWNhdGlvbiBvY2NsdXNpb24gbm90aWZpY2F0aW9uIGhhbmRsZXJzLgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZXRQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5h
YmxlZCk6IEFkZGVkIHNldHRlciBmb3IgcHJvY2VzcyBzdXBwcmVzc2lvbgorICAgICAgICBzdXBw
b3J0IGVuYWJsZWQuICBSZWdpc3RlcnMgb3IgdW5yZWdpc3RlcnMgb2NjbHVzaW9uIG5vdGlmaWNh
dGlvbiBoYW5kbGVycyBhY2NvcmRpbmcgdG8gdGhlIG5ldyBzZXR0aW5nLgorICAgICAgICAqIFdl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW46IEFkZGVkIG1lc3NhZ2UgdG8gdXBkYXRlIGFwcGxpY2F0aW9u
IG9jY2x1c2lvbiBzdGF0dXMuCisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0lu
aXRpYWxpemF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpJbml0aWFsaXplV2ViUHJvY2Vzcyk6
IFJlcGxhY2VkIGRpcmVjdCBjYWxsIHRvIHRha2UgYXNzZXJ0aW9uIHdpdGggYSBjYWxsIHRvCisg
ICAgICAgIGFuIGVxdWl2YWxlbnQsIHNpbXBsZXIgdG8gdXNlLCBoZWxwZXIgbWV0aG9kLgorCiAy
MDEyLTEwLTMxICBBbGV4YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KIAogICAg
ICAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb24gcGFyYW1ldGVycyBsaXN0IGlzIG5vdCBkZWNvZGVk
IGNvcnJlY3RseSBpbiBDb29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggMDI5NTM2YTM0MTIwNWU0MjQ1YzJhODI2NWFkN2MxYThmMjgyOTM1Zi4uZDI0
M2JkNDRmNjAwNjM0YmRkMjI1MGMzNDcxN2IxNzVlYjEzYjM1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4K
QEAgLTI4LDYgKzI4LDEwIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIHsKIAogICAgICMg
Q3JlYXRlcyBhIGNvbm5lY3Rpb24gZm9yIGNvbW11bmljYXRpb24gd2l0aCBhIFdlYlByb2Nlc3MK
ICAgICBDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCisKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgU2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wgZmxhZykKKyNlbmRpZgog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01haW5NYWMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWluTWFjLm1t
CmluZGV4IDdjMzhiOTYwODg5MGI3ZjIxNGVkN2NhYTg3NjAwMzFhNjJjNjFlZWEuLjFkMDFlODQ4
MDRmY2YzYmU3YmJkMWI0NTYwYWUwNTMwNTlhMjlhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01haW5NYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbQpA
QCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAiQ29tbWFuZExpbmUuaCIKICNpbXBvcnQgIkVudmly
b25tZW50VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgorI2ltcG9ydCAi
UHJvY2Vzc1V0aWxpdGllcy5oIgogI2ltcG9ydCA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW1wb3J0
IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPG1hY2gvbWFjaF9lcnJvci5oPgpA
QCAtODMsOSArODQsNyBAQCBpbnQgTmV0d29ya1Byb2Nlc3NNYWluKGNvbnN0IENvbW1hbmRMaW5l
JiBjb21tYW5kTGluZSkKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgUnVu
TG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwOTAKLSAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRp
c2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjpAIkRpc2FibGUgTmV0d29ya1Byb2Nlc3MgQXV0byBU
ZXJtaW5hdGlvbiJdOwotI2VuZGlmCisgICAgZGlzYWJsZVByb2Nlc3NTdXBwcmVzc2lvbihAIk5l
dHdvcmtQcm9jZXNzIExhdW5jaCIpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgbmV0d29yayBw
cm9jZXNzIGNvbm5lY3Rpb24uCiAgICAgTmV0d29ya1Byb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxp
emUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihzZXJ2ZXJQb3J0KSwgUnVuTG9vcDo6
bWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Qcm9jZXNz
VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvUHJvY2Vzc1V0aWxpdGll
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM2MmRlNDBlMjhiYmVhOTM0NWY1N2M4YTI0ZTcyNzBlYjA5NjE1Y2EK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvUHJvY2Vzc1V0
aWxpdGllcy5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFByb2Nlc3NV
dGlsaXRpZXNfaAorI2RlZmluZSBQcm9jZXNzVXRpbGl0aWVzX2gKKworT0JKQ19DTEFTUyBOU1N0
cmluZzsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgZGlzYWJsZVByb2Nlc3NTdXBwcmVz
c2lvbihOU1N0cmluZyAqcmVhc29uKTsKK3ZvaWQgZW5hYmxlUHJvY2Vzc1N1cHByZXNzaW9uKE5T
U3RyaW5nICpyZWFzb24pOworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBy
b2Nlc3NVdGlsaXRpZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFj
L1Byb2Nlc3NVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvUHJvY2Vz
c1V0aWxpdGllcy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGEwMmMyYWUyYTU0OTQxMzAzMGI0YWU0YWE0MzNi
Y2E4Mjc5NTNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFj
L1Byb2Nlc3NVdGlsaXRpZXMubW0KQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUHJvY2Vzc1V0aWxpdGllcy5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordm9pZCBkaXNhYmxlUHJvY2Vzc1N1cHByZXNzaW9uKE5TU3RyaW5nICpyZWFz
b24pCit7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisgICAg
W1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBkaXNhYmxlQXV0b21hdGljVGVybWluYXRpb246
cmVhc29uXTsKKyNlbmRpZgorfQorCit2b2lkIGVuYWJsZVByb2Nlc3NTdXBwcmVzc2lvbihOU1N0
cmluZyAqcmVhc29uKQoreworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA5MAorICAgIFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gZW5hYmxlQXV0b21hdGljVGVy
bWluYXRpb246cmVhc29uXTsKKyNlbmRpZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZTRlZjQ1
MDcyNGJhMGE1ZWMwMTM5MjY1NzBlZjI0NTljNGM3ZDQ2My4uNDEyMjZiMTRkNTNlMzcxMDZmNTQx
YmQxZGFhNTNlYTg4Y2FkY2MxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Qcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzgsNiArMzgsMTAgQEAgbWVz
c2FnZXMgLT4gUGx1Z2luUHJvY2VzcyB7CiAgICAgIyBBc2tzIHRoZSBwbHVnLWluIHRvIGNsZWFy
IGRhdGEgZm9yIHRoZSBnaXZlbiBzaXRlcy4gVGhlIHBsdWctaW4gcHJvY2VzcyBzZW5kcyBiYWNr
CiAgICAgIyBhIERpZENsZWFyU2l0ZURhdGEgbWVzc2FnZSB3aGVuIGRvbmUuCiAgICAgQ2xlYXJT
aXRlRGF0YShWZWN0b3I8V1RGOjpTdHJpbmc+IHNpdGVzLCB1aW50NjRfdCBmbGFncywgdWludDY0
X3QgbWF4QWdlSW5TZWNvbmRzLCB1aW50NjRfdCBjYWxsYmFja0lEKQorCisjaWYgUExBVEZPUk0o
TUFDKQorICAgIFNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29sIGZsYWcpOworI2VuZGlmCiB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMv
UGx1Z2luUHJvY2Vzc01haW5NYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21h
Yy9QbHVnaW5Qcm9jZXNzTWFpbk1hYy5tbQppbmRleCA5MTJiMWM0ZmI1YmJmMjQ1YzFlYmZhZGI5
NDcyMDA4OWFlMmExZGEwLi5jODdhZDE0MGVjN2Q2Y2E1ZTNjYTVlNjhlYzFmMjE3YjhlNWMxM2Jh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9j
ZXNzTWFpbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVn
aW5Qcm9jZXNzTWFpbk1hYy5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiRW52aXJvbm1l
bnRVdGlsaXRpZXMuaCIKICNpbXBvcnQgIk5ldHNjYXBlUGx1Z2luTW9kdWxlLmgiCiAjaW1wb3J0
ICJQbHVnaW5Qcm9jZXNzLmgiCisjaW1wb3J0ICJQcm9jZXNzVXRpbGl0aWVzLmgiCiAjaW1wb3J0
IDxGb3VuZGF0aW9uL05TVXNlckRlZmF1bHRzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bkxvb3Au
aD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgpAQCAtMTE3LDkgKzExOCw3IEBA
IGludCBQbHVnaW5Qcm9jZXNzTWFpbihjb25zdCBDb21tYW5kTGluZSYgY29tbWFuZExpbmUpCiAg
ICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVN
YWluUnVuTG9vcCgpOwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDkwCi0gICAgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBkaXNhYmxlQXV0b21hdGljVGVy
bWluYXRpb246QCJEaXNhYmxlIFBsdWdpblByb2Nlc3MgQXV0byBUZXJtaW5hdGlvbiJdOwotI2Vu
ZGlmCisgICAgZGlzYWJsZVByb2Nlc3NTdXBwcmVzc2lvbihAIlBsdWdpblByb2Nlc3MgTGF1bmNo
Iik7CiAKICNpZiBkZWZpbmVkKF9faTM4Nl9fKQogICAgIC8vIEluaXRpYWxpemUgdGhlIHNoaW0g
Zm9yIDMyLWJpdCBvbmx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxk
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcAppbmRl
eCBiNjVlZWJlMmNlNDI1NTc1NGEzNDcxNzVmODY1OWFjYjgzZjUzMTFlLi4yOGNkOWU4ODM4MmE0
NDgyZjQwNDY0ZGZlMDY1YjNhNzJiNmM1Yjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ2hpbGRQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQ
cm9jZXNzLmNwcApAQCAtNjAsNiArNjAsOSBAQCBDaGlsZFByb2Nlc3M6OkNoaWxkUHJvY2Vzcygp
CiAgICAgOiBtX3Rlcm1pbmF0aW9uVGltZW91dCgwKQogICAgICwgbV90ZXJtaW5hdGlvbkNvdW50
ZXIoMCkKICAgICAsIG1fdGVybWluYXRpb25UaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZD
aGlsZFByb2Nlc3M6OnRlcm1pbmF0aW9uVGltZXJGaXJlZCkKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgLCBtX2FwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSkKKyNlbmRpZgogewogICAgIC8vIEZJ
WE1FOiBUaGUgdGVybWluYXRpb24gdGltZXIgc2hvdWxkIG5vdCBiZSBzY2hlZHVsZWQgb24gdGhl
IG1haW4gcnVuIGxvb3AuCiAgICAgLy8gSXQgd29uJ3Qgd29yayB3aXRoIHRoZSB0aHJlYWRlZCBt
b2RlLCBidXQgaXQncyBub3QgcmVhbGx5IHVzZWZ1bCBhbnl3YXkgYXMgaXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ2hpbGRQcm9jZXNzLmgKaW5kZXggOWVjMWE1MGQ5OTJmODAxY2U2NzQ0YzBhODQ1Mjhm
YjJmMWRiNzliNC4uOGFlNTFiZmMwNzYwNTU3NzUzNGFjMmQwZjVlYmM4NjVjOGQ4MzIwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuaApAQCAtNTcsNiArNTcsMTEgQEAgcHVibGlj
OgogICAgICAgICBDaGlsZFByb2Nlc3MmIG1fY2hpbGRQcm9jZXNzOwogICAgIH07CiAKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgYm9vbCBhcHBsaWNhdGlvbklzT2NjbHVkZWQoKSBjb25zdCB7IHJl
dHVybiBtX2FwcGxpY2F0aW9uSXNPY2NsdWRlZDsgfQorICAgIHZvaWQgc2V0QXBwbGljYXRpb25J
c09jY2x1ZGVkKGJvb2wgZmxhZyk7CisjZW5kaWYKKwogICAgIHN0YXRpYyB2b2lkIGRpZENsb3Nl
T25Db25uZWN0aW9uV29ya1F1ZXVlKFdvcmtRdWV1ZSYsIENvcmVJUEM6OkNvbm5lY3Rpb24qKTsK
IAogcHJvdGVjdGVkOgpAQCAtODAsNiArODUsMTAgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBt
X3Rlcm1pbmF0aW9uQ291bnRlcjsKIAogICAgIFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyPENoaWxk
UHJvY2Vzcz4gbV90ZXJtaW5hdGlvblRpbWVyOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGJv
b2wgbV9hcHBsaWNhdGlvbklzT2NjbHVkZWQ7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9DaGlsZFByb2Nl
c3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hOWU0YjcwMDc0MTlhYjU0MTNlYWNkMGE5Mzk0YmM4NGNiZTQ4Mzk5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMu
bW0KQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiQ2hpbGRQcm9jZXNzLmgiCisKKyNpbXBvcnQgIlByb2Nlc3NVdGlsaXRpZXMuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgQ2hpbGRQcm9jZXNzOjpzZXRBcHBsaWNhdGlvbklz
T2NjbHVkZWQoYm9vbCBmbGFnKQoreworICAgIGlmIChtX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9
PSBmbGFnKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9
IGZsYWc7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisgICAg
aWYgKG1fYXBwbGljYXRpb25Jc09jY2x1ZGVkKQorICAgICAgICBlbmFibGVQcm9jZXNzU3VwcHJl
c3Npb24oQCJBcHBsaWNhdGlvbiBiZWNhbWUgb2NjbHVkZWQiKTsKKyAgICBlbHNlCisgICAgICAg
IGRpc2FibGVQcm9jZXNzU3VwcHJlc3Npb24oQCJBcHBsaWNhdGlvbiBiZWNhbWUgdmlzaWJsZSIp
OworI2VuZGlmCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtl
clByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRl
eCAzY2Q3NTMzN2I3ZmVlODQ2OWIwOTRlODE0OGVhNTVjMzY5MjQ5ODlhLi43ODliYmIzMTgxNGM0
ZTE0YzgzYWU2Y2EyMGYxMDVmNjQ2ZDRiY2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0zMCw2ICszMCwxMCBAQCBtZXNzYWdlcyAtPiBTaGFyZWRXb3JrZXJQcm9j
ZXNzIHsKICAgICAjIFRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3Mgc2VuZHMgYmFjayBhIERpZENy
ZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uIG1lc3NhZ2Ugd2l0aAogICAgICMgYSBjb25uZWN0aW9u
IGlkZW50aWZpZXIuCiAgICAgQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQorCisjaWYgUExB
VEZPUk0oTUFDKQorICAgIFNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29sIGZsYWcpCisjZW5k
aWYKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQ
cm9jZXNzTWFpbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvbWFj
L1NoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tCmluZGV4IDMwZjhhNzQ5NjRkNmQxY2MyODc5
ZjMxOTdjNTQ1YmE2YzA1OTVhZGIuLjVmZjg2ZDZhNjk4ZTY0MmVlOTNiYTc1NWI2OTQwNWQxYjBk
YzQwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvbWFj
L1NoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tCkBAIC0zMCw2
ICszMCw3IEBACiAKICNpbXBvcnQgIkNvbW1hbmRMaW5lLmgiCiAjaW1wb3J0ICJFbnZpcm9ubWVu
dFV0aWxpdGllcy5oIgorI2ltcG9ydCAiUHJvY2Vzc1V0aWxpdGllcy5oIgogI2ltcG9ydCAiU2hh
cmVkV29ya2VyUHJvY2Vzcy5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VzZXJEZWZhdWx0cy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9SdW5Mb29wLmg+CkBAIC05Niw5ICs5Nyw3IEBAIGludCBTaGFy
ZWRXb3JrZXJQcm9jZXNzTWFpbihjb25zdCBDb21tYW5kTGluZSYgY29tbWFuZExpbmUpCiAgICAg
V1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWlu
UnVuTG9vcCgpOwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkw
Ci0gICAgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBkaXNhYmxlQXV0b21hdGljVGVybWlu
YXRpb246QCJEaXNhYmxlIFNoYXJlZFdvcmtlclByb2Nlc3MgQXV0byBUZXJtaW5hdGlvbiJdOwot
I2VuZGlmCisgICAgZGlzYWJsZVByb2Nlc3NTdXBwcmVzc2lvbihAIlNoYXJlZFdvcmtlclByb2Nl
c3MgTGF1bmNoIik7CiAKICAgICAvLyBJbml0aWFsaXplIHRoZSBzaGFyZWQgd29ya2VyIHByb2Nl
c3MgY29ubmVjdGlvbi4KICAgICBTaGFyZWRXb3JrZXJQcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFs
aXplKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIoc2VydmVyUG9ydCksIFJ1bkxvb3A6
Om1haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFj
L1dLQ29udGV4dFByaXZhdGVNYWMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTM4NGRmZDQyYjdhYjE4
MzlhYzg2ZWNlNzE1N2U4OWJkMGU0MmY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmNwcApAQCAtMCwwICsx
LDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLQ29u
dGV4dFByaXZhdGVNYWMuaCIKKworI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKKwordm9pZCBXS0NvbnRleHRTZXRQcm9jZXNzU3VwcHJlc3Npb25TdXBw
b3J0RW5hYmxlZChib29sIGZsYWcpCit7CisgICAgV2ViQ29udGV4dDo6c2V0UHJvY2Vzc1N1cHBy
ZXNzaW9uU3VwcG9ydEVuYWJsZWQoZmxhZyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBkZDRlN2ExYjcwOWRlYzgyYmFiMzNhOGEzY2E3YWU2NWRiOGE4M2UKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVN
YWMuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0NvbnRleHRQcml2
YXRlTWFjX2gKKyNkZWZpbmUgV0tDb250ZXh0UHJpdmF0ZU1hY19oCisKKyNpbmNsdWRlIDxXZWJL
aXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlm
CisKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRF
bmFibGVkKGJvb2wpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYg
LyogV0tDb250ZXh0UHJpdmF0ZU1hY19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzTWFuYWdlci5oCmluZGV4IGI4YjQ1MzRj
ZWZjZjNiYTE0NjJhN2IwYzM2NWU5MGExZDYxN2U2ZGYuLmE5NWUyNGI1N2I4NGI3ZmE0MzY0OGEw
MWVhOGFjN2ZmZTNlOTQwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzTWFuYWdlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpAQCAtMzYsNyArMzcsNiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKLWNsYXNzIE5ldHdvcmtQcm9jZXNzUHJv
eHk7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzTWFuYWdl
ciB7CkBAIC01MCwxMiArNTAsMjAgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcmVtb3ZlTmV0
d29ya1Byb2Nlc3NQcm94eShOZXR3b3JrUHJvY2Vzc1Byb3h5Kik7CiAKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiB2b2lkIHNlbmRUb1Byb2Nlc3MoY29uc3QgVSYgbWVzc2FnZSk7CisKIHByaXZh
dGU6CiAgICAgTmV0d29ya1Byb2Nlc3NNYW5hZ2VyKCk7CiAKICAgICBSZWZQdHI8TmV0d29ya1By
b2Nlc3NQcm94eT4gbV9uZXR3b3JrUHJvY2VzczsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFU+
IGlubGluZSB2b2lkIE5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6c2VuZFRvUHJvY2Vzcyhjb25zdCBV
JiBtZXNzYWdlKQoreworICAgIGlmIChtX25ldHdvcmtQcm9jZXNzICYmIG1fbmV0d29ya1Byb2Nl
c3MtPmlzVmFsaWQoKSkKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChtZXNzYWdlLCAw
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyODkzNDVhNDY1N2NhMWFhMTljYjAzMzBi
Y2RiZjkyM2MzZGY5NWRmLi4xZjljZTg5ZWQyNDFiZjExNDEwY2I0ODM4Y2Y2YTllZGRmY2U4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTYyLDYgKzE2MiwxMSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBDb3JlSVBDOjpD
b25uZWN0aQogICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpLCAwKTsKICAgICAKICAg
ICBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMgPSAwOworCisjaWYgUExBVEZPUk0oTUFD
KQorICAgIGlmIChXZWJDb250ZXh0OjphcHBsaWNhdGlvbklzT2NjbHVkZWQoKSkKKyAgICAgICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0QXBwbGljYXRp
b25Jc09jY2x1ZGVkKHRydWUpLCAwKTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAppbmRleCA0N2NjYmFjYmY3MzM0YTY3ZDVhNjJiMmU3MDM2NTE3ZWYyNzA3
NzA3Li4yNTRjODhkMzJmNzEyNDZmZjZhY2VkODJiZDQyOThmYWNmY2JhNGI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCkBAIC00NSw2ICs0NSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7CiAKKyAgICBib29sIGlzVmFs
aWQoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGJvb2wgc2VuZChjb25zdCBUJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
LCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzID0gMCk7CisKIHByaXZhdGU6CiAgICAgTmV0d29y
a1Byb2Nlc3NQcm94eShOZXR3b3JrUHJvY2Vzc01hbmFnZXIqKTsKIApAQCAtNzcsNiArODEsMTcg
QEAgcHJpdmF0ZToKICAgICBEZXF1ZTxSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+ID4gbV9wZW5kaW5nQ29u
bmVjdGlvblJlcGxpZXM7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorYm9vbCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpzZW5kKGNvbnN0IFQmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCit7CisgICAgQ09NUElMRV9BU1NFUlQoIVQ6
OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOworICAgIAorICAgIGlmICghaXNWYWxpZCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi0+
c2VuZChtZXNzYWdlLCBkZXN0aW5hdGlvbklELCBtZXNzYWdlU2VuZEZsYWdzKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NNYW5hZ2VyLmgKaW5kZXggMzc4MjRjNGFhM2I0ZGFiMWNiMjEzODcwNjY5ZDI1OWMwODBkODZl
MC4uNTZkZDk1MWEzMTgyY2QyZWMwZThhZjVlMTRkNmI5ZWY0ZjVmNTU3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdl
ci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogCiAjaW5j
bHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgorI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NQcm94eS5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTQxLDcgKzQyLDYgQEAg
bmFtZXNwYWNlIENvcmVJUEMgewogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFBsdWdpbklu
Zm9TdG9yZTsKLWNsYXNzIFBsdWdpblByb2Nlc3NQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94
eTsKIGNsYXNzIFdlYlBsdWdpblNpdGVEYXRhTWFuYWdlcjsKIApAQCAtNTYsNiArNTYsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBnZXRTaXRlc1dpdGhEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8m
LCBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIqLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2
b2lkIGNsZWFyU2l0ZURhdGEoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIFdlYlBsdWdpblNpdGVE
YXRhTWFuYWdlciosIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRlcywgdWludDY0X3QgZmxhZ3Ms
IHVpbnQ2NF90IG1heEFnZUluU2Vjb25kcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIHNlbmRUb0FsbFByb2Nlc3Nlcyhjb25zdCBVJiBtZXNz
YWdlKTsKKwogcHJpdmF0ZToKICAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcigpOwogCkBAIC02NSw2
ICs2NywxNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8UGx1Z2luUHJvY2Vzc1Byb3h5
PiA+IG1fcGx1Z2luUHJvY2Vzc2VzOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5l
IHZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNlbmRUb0FsbFByb2Nlc3Nlcyhjb25zdCBVJiBt
ZXNzYWdlKQoreworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UGx1Z2luUHJvY2Vzc1Byb3h5PiA+
JiBwcm9jZXNzZXMgPSBtX3BsdWdpblByb2Nlc3NlczsKKyAgICBzaXplX3QgcHJvY2Vzc0NvdW50
ID0gcHJvY2Vzc2VzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2Nlc3ND
b3VudDsgKytpKSB7CisgICAgICAgIFBsdWdpblByb2Nlc3NQcm94eSogcHJvY2VzcyA9IHByb2Nl
c3Nlc1tpXS5nZXQoKTsKKyAgICAgICAgaWYgKHByb2Nlc3MtPmlzVmFsaWQoKSkKKyAgICAgICAg
ICAgIHByb2Nlc3MtPnNlbmQobWVzc2FnZSwgMCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3Bw
CmluZGV4IDgxMTk3Y2UzNmM0YjNiZDE1Mjk3MTNhOTkyMGU3ZDc0Y2MyNTYyN2IuLjBjMmU4Njg5
ZTY0ODg3NjgwZTQyYTEzNDkzYzBmM2U1MGUwYmIxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcApAQCAtMjI4
LDYgKzIyOCwxMSBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5n
KFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3RpbwogICAgICAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3M6OkNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKCksIDApOwogICAgIAogICAgIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cyA9IDA7
CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uSXNP
Y2NsdWRlZCgpKQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlBsdWdpblBy
b2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKSwgMCk7CisjZW5kaWYKIH0KIAog
dm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNv
bnN0IENvcmVJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBv
cnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCmluZGV4IGY3NzUw
M2Q4ZDQyZDkwY2JlYjhjZGE2NGM5NzlkZWRkZWUyZjIwYWEuLjBiM2ZlMzJjNGRiMzExNGVkODA1
OWJhMDNmOGNmNDlkZThkNjMxMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCkBAIC02Nyw2ICs2NywxMCBAQCBwdWJs
aWM6CiAKICAgICBjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW5JbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9wbHVnaW5JbmZvOyB9CiAKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVy
biBtX2Nvbm5lY3Rpb247IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZChj
b25zdCBUJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1bnNpZ25lZCBtZXNzYWdl
U2VuZEZsYWdzID0gMCk7CisKICAgICAvLyBBc2tzIHRoZSBwbHVnLWluIHByb2Nlc3MgdG8gY3Jl
YXRlIGEgbmV3IGNvbm5lY3Rpb24gdG8gYSB3ZWIgcHJvY2Vzcy4gVGhlIGNvbm5lY3Rpb24gaWRl
bnRpZmllciB3aWxsIGJlIAogICAgIC8vIGVuY29kZWQgaW4gdGhlIGdpdmVuIGFyZ3VtZW50IGVu
Y29kZXIgYW5kIHNlbnQgYmFjayB0byB0aGUgY29ubmVjdGlvbiBvZiB0aGUgZ2l2ZW4gd2ViIHBy
b2Nlc3MuCiAgICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk+KTsKQEAgLTE2OSw2ICsxNzMsMTcgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK2Jvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5OjpzZW5kKGNvbnN0
IFQmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVuc2lnbmVkIG1lc3NhZ2VTZW5k
RmxhZ3MpCit7CisgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhw
ZWN0ZWQpOworCisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPnNlbmQobWVzc2FnZSwgZGVzdGluYXRpb25JRCwgbWVz
c2FnZVNlbmRGbGFncyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
RU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2Vy
LmgKaW5kZXggYmEwNmM3Y2JiODA5ODI0MzQ0Y2U3OWNjNDlhYjQxYjcxZmQzYzg0OC4uZjRjNGMz
ZWRmNmVkNTBjYjBmYTdlZWMyNDcxODBkMWU1Y2VhNDc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3Jr
ZXJQcm9jZXNzTWFuYWdlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFNIQVJFRF9X
T1JLRVJfUFJPQ0VTUykKIAogI2luY2x1ZGUgIlBsdWdpbk1vZHVsZUluZm8uaCIKKyNpbmNsdWRl
ICJTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CkBAIC00MSw3ICs0Miw2IEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBQbHVnaW5JbmZvU3RvcmU7Ci1jbGFzcyBTaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBjbGFzcyBXZWJQbHVnaW5TaXRl
RGF0YU1hbmFnZXI7CiAKQEAgLTUzLDYgKzUzLDggQEAgcHVibGljOgogICAgIHZvaWQgZ2V0U2hh
cmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTaGFyZWRX
b3JrZXJQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7CiAgICAgdm9pZCByZW1vdmVT
aGFyZWRXb3JrZXJQcm9jZXNzUHJveHkoU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5Kik7CiAKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIHNlbmRUb0FsbFByb2Nlc3Nlcyhjb25zdCBVJiBt
ZXNzYWdlKTsKKwogcHJpdmF0ZToKICAgICBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcigpOwog
CkBAIC02MSw2ICs2MywxNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkV29y
a2VyUHJvY2Vzc1Byb3h5PiA+IG1fc2hhcmVkV29ya2VyUHJvY2Vzc2VzOwogfTsKIAordGVtcGxh
dGU8dHlwZW5hbWUgVT4gaW5saW5lIHZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6OnNl
bmRUb0FsbFByb2Nlc3Nlcyhjb25zdCBVJiBtZXNzYWdlKQoreworICAgIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5PiA+JiBwcm9jZXNzZXMgPSBtX3NoYXJlZFdv
cmtlclByb2Nlc3NlczsKKyAgICBzaXplX3QgcHJvY2Vzc0NvdW50ID0gcHJvY2Vzc2VzLnNpemUo
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2Nlc3NDb3VudDsgKytpKSB7CisgICAg
ICAgIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSogcHJvY2VzcyA9IHByb2Nlc3Nlc1tpXS5nZXQo
KTsKKyAgICAgICAgaWYgKHByb2Nlc3MtPmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHByb2Nlc3Mt
PnNlbmQobWVzc2FnZSwgMCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29y
a2VyUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwMzBlM2ZmYzg5MTUxZjE0MGE5NGQ4NzBmMzM2NTIy
ZDlmZTExZTkzLi5iODA4ZWZiYWNkZmFiODg4NmFmYzhhMTU3ZjUwY2U4OGU4OTFhMDQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRX
b3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5jcHAKQEAgLTE2NCw2ICsxNjQsMTEgQEAg
dm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNz
TGF1bmNoZXIqLCBDb3JlSVBDOjpDb24KICAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTaGFyZWRXb3JrZXJQcm9jZXNzOjpDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbigpLCAw
KTsKICAgICAKICAgICBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMgPSAwOworCisjaWYg
UExBVEZPUk0oTUFDKQorICAgIGlmIChXZWJDb250ZXh0OjphcHBsaWNhdGlvbklzT2NjbHVkZWQo
KSkKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTaGFyZWRXb3JrZXJQcm9j
ZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSksIDApOworI2VuZGlmCiB9CiAKIHZv
aWQgU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
bihjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uSWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtl
clByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMv
U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmgKaW5kZXggOWYwYzVkMmFjZWIzOWUyYzY4Njc4OGQ3
MjQyODRkYTVkOWE1ODk1NS4uZTMwYjk4OTE4ZTdjNWFmZjRmZDllOTVmNjAzYWQwOTUwYTgzNTc2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1No
YXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmgKQEAgLTU2LDYgKzU2LDEwIEBA
IHB1YmxpYzoKICAgICAvLyBUZXJtaW5hdGVzIHRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3MuCiAg
ICAgdm9pZCB0ZXJtaW5hdGUoKTsKIAorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29ubmVjdGlvbjsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKGNv
bnN0IFQmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVuc2lnbmVkIG1lc3NhZ2VT
ZW5kRmxhZ3MgPSAwKTsKKwogcHJpdmF0ZToKICAgICBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHko
U2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIqLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKIApAQCAtOTEsNiArOTUsMTcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBt
X251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHM7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorYm9vbCBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OnNlbmQoY29uc3QgVCYgbWVzc2FnZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncykKK3sKKyAg
ICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CisKKyAg
ICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1f
Y29ubmVjdGlvbi0+c2VuZChtZXNzYWdlLCBkZXN0aW5hdGlvbklELCBtZXNzYWdlU2VuZEZsYWdz
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0hBUkVE
X1dPUktFUl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXgg
MGQ0NDQ1NGJhYjYzYTYxNjNiMzYzNmY4NjFhMzViNDdlYjAzNDQ4Zi4uMGQ0OTcxYzViNjg5YzRl
ZGMzN2Q3OGIzMjBmMGRiODhmMWQwNjBiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5oCkBAIC0yNDAsNiArMjQwLDkgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIHN0YXRpYyBib29sIG9taXRQREZTdXBwb3J0KCk7CisgICAgc3RhdGljIGJvb2wgYXBwbGlj
YXRpb25Jc09jY2x1ZGVkKCkgeyByZXR1cm4gc19hcHBsaWNhdGlvbklzT2NjbHVkZWQ7IH0KKyAg
ICBzdGF0aWMgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCgpIHsgcmV0dXJu
IHNfcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQ7IH0KKyAgICBzdGF0aWMgdm9pZCBz
ZXRQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZChib29sKTsKICNlbmRpZgogCiAgICAg
dm9pZCBmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vz
c0VuYWJsZWQpOwpAQCAtMzAyLDYgKzMwNSwxMyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBjb29r
aWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAgICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdENv
b2tpZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBz
dGF0aWMgdm9pZCBhcHBsaWNhdGlvbkJlY2FtZVZpc2libGUodWludDMyX3QsIHZvaWQqLCB1aW50
MzJfdCwgdm9pZCosIHVpbnQzMl90KTsKKyAgICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbkJlY2Ft
ZU9jY2x1ZGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCk7Cisg
ICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycygpOwor
ICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycygp
OworI2VuZGlmCisKICAgICBQcm9jZXNzTW9kZWwgbV9wcm9jZXNzTW9kZWw7CiAgICAgCiAgICAg
VmVjdG9yPFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+ID4gbV9wcm9jZXNzZXM7CkBAIC0zOTYsNiAr
NDA2LDExIEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPERpY3Rpb25h
cnlDYWxsYmFjaz4gPiBtX2RpY3Rpb25hcnlDYWxsYmFja3M7CiAKICAgICBDb3JlSVBDOjpNZXNz
YWdlUmVjZWl2ZXJNYXAgbV9tZXNzYWdlUmVjZWl2ZXJNYXA7CisKKyNpZiBQTEFURk9STShNQUMp
CisgICAgc3RhdGljIGJvb2wgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQ7CisgICAgc3RhdGljIGJv
b2wgc19wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZDsKKyNlbmRpZgogfTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVT4gaW5saW5lIHZvaWQgV2ViQ29udGV4dDo6c2VuZFRvQWxsUHJvY2Vz
c2VzKGNvbnN0IFUmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCmluZGV4IDZiZjY1NDNiOWRmOTY0NTRjNTYzMGY3NTRhMjc5NjhkZDVmNjMx
NDMuLjRhZDBkZWI0YzI0MzYxNDU3YWM4NjM4MjRkZTE1NjExNWU1YmRhYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC01MzIsNiArNTMyLDEx
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoQ29yZUlQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0CiAKICAgICAvLyBUZWxsIHRoZSBjb250ZXh0IHRo
YXQgd2UgZmluaXNoZWQgbGF1bmNoaW5nLgogICAgIG1fY29udGV4dC0+cHJvY2Vzc0RpZEZpbmlz
aExhdW5jaGluZyh0aGlzKTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoV2ViQ29udGV4
dDo6YXBwbGljYXRpb25Jc09jY2x1ZGVkKCkpCisgICAgICAgIGNvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUpLCAwKTsK
KyNlbmRpZgogfQogCiBXZWJGcmFtZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OndlYkZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYkNvbnRleHRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNYWMubW0KaW5kZXggMDBjMDJjZDAyZDFjYzU2ODYzYTE1OThmM2JkOTEwMmUzZDVl
NjhkOS4uZDQyNWZmN2ZkYTFjNTg4YTEzY2MwNWM3ZGU2ZDIzMmIxMjgwZjRmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQpAQCAtMjUsNiArMjUs
MTMgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0LmgiCisjaW1w
b3J0ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzTWFuYWdl
ci5oIgorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgorI2ltcG9ydCAiUGx1Z2lu
UHJvY2Vzc01hbmFnZXIuaCIKKyNpbXBvcnQgIlBsdWdpblByb2Nlc3NNZXNzYWdlcy5oIgorI2lt
cG9ydCAiU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIuaCIKKyNpbXBvcnQgIlNoYXJlZFdvcmtl
clByb2Nlc3NNZXNzYWdlcy5oIgogCiAjaW1wb3J0ICJXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaCIK
ICNpbXBvcnQgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKQEAgLTUyLDYgKzU5LDkg
QEAgTlNTdHJpbmcgKldlYkljb25EYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJJ
Y29uRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWwKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2Jvb2wg
V2ViQ29udGV4dDo6c19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPSBmYWxzZTsKK2Jvb2wgV2ViQ29u
dGV4dDo6c19wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCA9IGZhbHNlOworCiBTdHJp
bmcgV2ViQ29udGV4dDo6YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiB7CiAgICAgTlNTdHJp
bmcgKmFwcE5hbWUgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdOwpA
QCAtMjU3LDUgKzI2Nyw4MyBAQCB2b2lkIFdlYkNvbnRleHQ6OnNldFBhc3RlYm9hcmRCdWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0CiAgICAgUGxhdGZvcm1Q
YXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlciwgcGFzdGVi
b2FyZFR5cGUpOwogfQogCit2b2lkIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQmVjYW1lVmlzaWJs
ZSh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCit7CisgICAgaWYg
KHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKSB7CisgICAgICAgIHNfYXBwbGljYXRpb25Jc09jY2x1
ZGVkID0gZmFsc2U7CisKKyAgICAgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4
dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAg
Y29udGV4dHNbaV0tPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0
QXBwbGljYXRpb25Jc09jY2x1ZGVkKGZhbHNlKSk7CisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NF
U1MpCisgICAgICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZW5kVG9BbGxQcm9j
ZXNzZXMoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChm
YWxzZSkpOworI2VuZGlmCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyAgICAgICAgTmV0
d29ya1Byb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZW5kVG9Qcm9jZXNzKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGZhbHNlKSk7CisjZW5kaWYKKyNp
ZiBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQorICAgICAgICBTaGFyZWRXb3JrZXJQcm9j
ZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpTaGFyZWRX
b3JrZXJQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoZmFsc2UpKTsKKyNlbmRpZgor
ICAgIH0KK30KKwordm9pZCBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKHVp
bnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKK3sKKyAgICBpZiAoIXNf
YXBwbGljYXRpb25Jc09jY2x1ZGVkKSB7CisgICAgICAgIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVk
ID0gdHJ1ZTsKKyAgICAgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBX
ZWJDb250ZXh0OjphbGxDb250ZXh0cygpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291
bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgY29udGV4
dHNbaV0tPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0QXBwbGlj
YXRpb25Jc09jY2x1ZGVkKHRydWUpKTsKKworI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKKyAg
ICAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNlbmRUb0FsbFByb2Nlc3NlcyhN
ZXNzYWdlczo6UGx1Z2luUHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUpKTsK
KyNlbmRpZgorI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisgICAgICAgIE5ldHdvcmtQcm9j
ZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2VuZFRvUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKSk7CisjZW5kaWYKKyNpZiBFTkFCTEUo
U0hBUkVEX1dPUktFUl9QUk9DRVNTKQorICAgICAgICBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdl
cjo6c2hhcmVkKCkuc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpTaGFyZWRXb3JrZXJQcm9j
ZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSkpOworI2VuZGlmCisgICAgfQorfQor
Cit2b2lkIFdlYkNvbnRleHQ6OnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMo
KQoreworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIGlm
ICghV0tSZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoV0tPY2NsdXNpb25Ob3Rp
ZmljYXRpb25UeXBlQXBwbGljYXRpb25CZWNhbWVWaXNpYmxlLCBhcHBsaWNhdGlvbkJlY2FtZVZp
c2libGUpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiUmVnaXN0ZXJhdGlvbiBvZiBcIkFwcCBC
ZWNhbWUgVmlzaWJsZVwiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFXS1JlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0
aW9uSGFuZGxlcihXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbkJlY2FtZU9j
Y2x1ZGVkLCBhcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKSkKKyAgICAgICAgV1RGTG9nQWx3YXlz
KCJSZWdpc3RlcmF0aW9uIG9mIFwiQXBwIEJlY2FtZSBPY2NsdWRlZFwiIG5vdGlmaWNhdGlvbiBo
YW5kbGVyIGZhaWxlZC5cbiIpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViQ29udGV4dDo6dW5yZWdp
c3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCkKK3sKKyNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICBpZiAoIVdLVW5yZWdpc3Rlck9jY2x1c2lv
bk5vdGlmaWNhdGlvbkhhbmRsZXIoV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRp
b25CZWNhbWVPY2NsdWRlZCwgYXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCkpIHsKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCJSZW1vdmFsIG9mIFwiQXBwbGljYXRpb24gQmVjYW1lIE9jY2x1ZGVkXCIg
bm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoIVdLVW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoV0tP
Y2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25CZWNhbWVWaXNpYmxlLCBhcHBsaWNh
dGlvbkJlY2FtZVZpc2libGUpKQorICAgICAgICBXVEZMb2dBbHdheXMoIlJlbW92YWwgb2YgXCJB
cHBsaWNhdGlvbiBCZWNhbWUgVmlzaWJsZVwiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5c
biIpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViQ29udGV4dDo6c2V0UHJvY2Vzc1N1cHByZXNzaW9u
U3VwcG9ydEVuYWJsZWQoYm9vbCBmbGFnKQoreworICAgIGlmIChzX3Byb2Nlc3NTdXBwcmVzc2lv
blN1cHBvcnRFbmFibGVkICE9IGZsYWcpIHsKKyAgICAgICAgc19wcm9jZXNzU3VwcHJlc3Npb25T
dXBwb3J0RW5hYmxlZCA9IGZsYWc7CisgICAgICAgIGlmIChmbGFnKQorICAgICAgICAgICAgcmVn
aXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycygpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICB1bnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKTsKKyAgICB9
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDNmYmIxNDQyMmMxZWJkOTVjODcz
NGI4Y2IxNzI1MWNjNGFlODlkNy4uMGFhNTFiNWI4MTMyY2YxOGUxNjdkY2IyNjZiYzg1MmU4ODdk
Mjc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNTMxLDYgKzUzMSwxMSBAQAogCQk5M0ZDNjdCRTEyRDNDQ0YyMDBBNjA2MTAg
LyogRGVjb2RlckFkYXB0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzRkM2NzlFMTJEM0NDNzQwMEE2MDYxMCAvKiBEZWNvZGVyQWRhcHRlci5oICov
OyB9OwogCQk5M0ZDNjdCRjEyRDNDQ0YyMDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGQzY3OUYxMkQz
Q0M3NDAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmNwcCAqLzsgfTsKIAkJOTNGQzY3QzAxMkQz
Q0NGMjAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZDNjdBMDEyRDNDQzc0MDBBNjA2MTAgLyogRW5jb2Rl
ckFkYXB0ZXIuaCAqLzsgfTsKKwkJOUY1NEY4ODAxNjQyMDk5MzAwN0RGODFBIC8qIFdLQ29udGV4
dFByaXZhdGVNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUY1NEY4N0UxNjQyMDk5MzAwN0RGODFBIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuY3Bw
ICovOyB9OworCQk5RjU0Rjg4MTE2NDIwOTkzMDA3REY4MUEgLyogV0tDb250ZXh0UHJpdmF0ZU1h
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY1NEY4
N0YxNjQyMDk5MzAwN0RGODFBIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5RjU0Rjg4NjE2NDQ5NjQ5MDA3
REY4MUEgLyogUHJvY2Vzc1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUY1NEY4ODQxNjQ0OTY0NzAwN0RGODFBIC8qIFByb2Nlc3NVdGls
aXRpZXMuaCAqLzsgfTsKKwkJOUY1NEY4ODcxNjQ0OTY0OTAwN0RGODFBIC8qIFByb2Nlc3NVdGls
aXRpZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
RjU0Rjg4NTE2NDQ5NjQ4MDA3REY4MUEgLyogUHJvY2Vzc1V0aWxpdGllcy5tbSAqLzsgfTsKKwkJ
OUY1NEY4ODkxNjQ0OTcwQzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNTRGODg4MTY0NDk3MEMwMDdE
RjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi87IH07CiAJCUI2MkU3MzEwMTQzMDQ3QTYwMDY5
RUMzNSAvKiBXS0hpdFRlc3RSZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjYyRTczMEYxNDMwNDdBNjAwNjlFQzM1IC8qIFdLSGl0VGVzdFJl
c3VsdC5jcHAgKi87IH07CiAJCUI2MkU3MzEyMTQzMDQ3QjAwMDY5RUMzNSAvKiBXS0hpdFRlc3RS
ZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2
MkU3MzExMTQzMDQ3QjAwMDY5RUMzNSAvKiBXS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCNjM0MDNGOTE0OTEwRDU3MDAx
MDcwQjUgLyogQVBJT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEI2MzQwM0Y4MTQ5MTBENTcwMDEwNzBCNSAvKiBBUElPYmplY3QuY3BwICov
OyB9OwpAQCAtMTczOCw2ICsxNzQzLDExIEBACiAJCTkzRkM2NzlFMTJEM0NDNzQwMEE2MDYxMCAv
KiBEZWNvZGVyQWRhcHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWNv
ZGVyQWRhcHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0ZDNjc5RjEyRDND
Qzc0MDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRW5jb2RlckFkYXB0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5M0ZDNjdBMDEyRDNDQzc0MDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW5jb2RlckFkYXB0ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUY1NEY4N0UxNjQyMDk5MzAwN0RGODFBIC8qIFdLQ29udGV4
dFByaXZhdGVNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV0tD
b250ZXh0UHJpdmF0ZU1hYy5jcHA7IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlGNTRGODdGMTY0MjA5OTMwMDdERjgxQSAv
KiBXS0NvbnRleHRQcml2YXRlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFdLQ29udGV4dFByaXZhdGVNYWMuaDsgcGF0aCA9IG1hYy9XS0NvbnRleHRQcml2YXRlTWFjLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlGNTRGODg0MTY0NDk2NDcwMDdERjgxQSAv
KiBQcm9jZXNzVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBy
b2Nlc3NVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUY1NEY4ODUx
NjQ0OTY0ODAwN0RGODFBIC8qIFByb2Nlc3NVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5RjU0Rjg4ODE2NDQ5NzBDMDA3REY4MUEgLyogQ2hpbGRQcm9jZXNz
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ2hpbGRQcm9j
ZXNzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzJENUQ3RjEyMzZDQkE4
MDBBODhCMTUgLyogV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMzk2RUE1NTEyRTBFRDJEMDBGNEZFQjcgLyogY29uZmlnLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCNjJFNzMwRjE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLSGl0VGVzdFJlc3Vs
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjI5LDYgKzI2MzksOCBAQAog
CQkJCUMwRTNBQTQ4MTIwOUU0NTAwMEE0OUQwMSAvKiBNb2R1bGVNYWMubW0gKi8sCiAJCQkJQkNF
MDkzNzUxNEZCMTI4QjAwMTEzOEQ5IC8qIExheWVySG9zdGluZ0NvbnRleHQubW0gKi8sCiAJCQkJ
QkNFMDkzNzYxNEZCMTI4QjAwMTEzOEQ5IC8qIExheWVySG9zdGluZ0NvbnRleHQuaCAqLywKKwkJ
CQk5RjU0Rjg4NDE2NDQ5NjQ3MDA3REY4MUEgLyogUHJvY2Vzc1V0aWxpdGllcy5oICovLAorCQkJ
CTlGNTRGODg1MTY0NDk2NDgwMDdERjgxQSAvKiBQcm9jZXNzVXRpbGl0aWVzLm1tICovLAogCQkJ
CTFBMjRCRjM5MTIwODk2QTYwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnlNYWMuY3BwICovLAogCQkJ
CTI5NkJEODVCMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMuaCAqLywKIAkJCQky
OTZCRDg1QzE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLm1tICovLApAQCAtMzE2
NCw2ICszMTc2LDggQEAKIAkJNkVFODQ5QzQxMzY4RDkwNDAwMzhENDgxIC8qIG1hYyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOUY1NEY4N0UxNjQyMDk5
MzAwN0RGODFBIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuY3BwICovLAorCQkJCTlGNTRGODdGMTY0
MjA5OTMwMDdERjgxQSAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggKi8sCiAJCQkJNkVFODQ5QzYx
MzY4RDkyRDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oICovLAogCQkJCUJDRTE3
QjdCMTM4MUYxMTcwMDEyQTY0MSAvKiBXS1BhZ2VQcml2YXRlTWFjLmNwcCAqLywKIAkJCQlCQ0Ux
N0I3QzEzODFGMTE3MDAxMkE2NDEgLyogV0tQYWdlUHJpdmF0ZU1hYy5oICovLApAQCAtMzYzMCw2
ICszNjQ0LDcgQEAKIAkJCQlFMTc5RkQ5RTEzNEQzODI1MDAxNUI4ODMgLyogQXJndW1lbnRDb2Rl
cnNNYWMubW0gKi8sCiAJCQkJRTFBMzE3MzExMzRDRUE2QzAwN0M5QTRGIC8qIEF0dHJpYnV0ZWRT
dHJpbmcuaCAqLywKIAkJCQlFMUEzMTczNDEzNENFQTgwMDA3QzlBNEYgLyogQXR0cmlidXRlZFN0
cmluZy5tbSAqLywKKwkJCQk5RjU0Rjg4ODE2NDQ5NzBDMDA3REY4MUEgLyogQ2hpbGRQcm9jZXNz
TWFjLm1tICovLAogCQkJCTFBMkE0QUZFMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0
YS5oICovLAogCQkJCTFBMkE0QUZEMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5t
bSAqLywKIAkJCQkxQTZGOUZCNjExRTE0MDg1MDBEQjEzNzEgLyogQ29tbWFuZExpbmVNYWMuY3Bw
ICovLApAQCAtNDgxMCw2ICs0ODI1LDggQEAKIAkJCQk1MTdDRjBFMDE2M0E0NDRDMDBDMjk1MEUg
LyogTmV0d29ya1JlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0NGMEU0MTYzQTQ4NkMw
MEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTFCNzg0NzExNjNGMjQ2OTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250
ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQk5RjU0Rjg4MTE2NDIwOTkzMDA3REY4MUEgLyogV0tD
b250ZXh0UHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUY1NEY4ODYxNjQ0OTY0OTAw
N0RGODFBIC8qIFByb2Nlc3NVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNTc0MCw2ICs1
NzU3LDkgQEAKIAkJCQkyRDJBREYwOTE2MzYyREQ1MDAxOTdFNDcgLyogUERGUGx1Z2luVGV4dEFu
bm90YXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDJBREYwQjE2MzYyRERCMDAxOTdFNDcg
LyogUERGUGx1Z2luQW5ub3RhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEMkFERjEwMTYz
NjREODIwMDE5N0U0NyAvKiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJOUY1NEY4ODAxNjQyMDk5MzAwN0RGODFBIC8qIFdLQ29udGV4dFByaXZhdGVNYWMu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOUY1NEY4ODcxNjQ0OTY0OTAwN0RGODFBIC8qIFByb2Nl
c3NVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKKwkJCQk5RjU0Rjg4OTE2NDQ5NzBDMDA3REY4
MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMmNjMWU2MjgwNDYz
MjgxMzExNDA1OGZhY2JlYTE1MDA1NzM1Y2MyNC4uMmMxYjQzMDUyMzY0ZDM2ZmI2MmE2ZWQ3ZTli
YzJhZjRjM2Q4MDVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgpAQCAtOTcsNCArOTcsOCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNz
IHsKICAgICBTZWNJdGVtUmVzcG9uc2UodWludDY0X3QgcmVxdWVzdElELCBXZWJLaXQ6OlNlY0l0
ZW1SZXNwb25zZURhdGEgcmVzcG9uc2UpIERpc3BhdGNoT25Db25uZWN0aW9uUXVldWUKICAgICBT
ZWNLZXljaGFpbkl0ZW1SZXNwb25zZSh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYktpdDo6U2VjS2V5
Y2hhaW5JdGVtUmVzcG9uc2VEYXRhIHJlc3BvbnNlKSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1ZXVl
CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBTZXRBcHBsaWNhdGlvbklzT2NjbHVk
ZWQoYm9vbCBmbGFnKTsKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tCmluZGV4IDJhZjU5NDhm
ZDllMTc3YTQ1MGQ4Njk2MWRmZjU5NmU4NTcwMTI2OGMuLmEzMzI3YzViZDM1NTEyODNmODQ5YjQz
NmZlZjU4NjQ3OTQ5ZTAzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
bWFjL1dlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW0KQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLmgi
CiAKKyNpbXBvcnQgIlByb2Nlc3NVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIK
ICNpbXBvcnQgIldlYlN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9SdW5Mb29w
Lmg+CkBAIC00Niw5ICs0Nyw3IEBAIHZvaWQgSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgU3Ry
aW5nJiBjbGllbnRJZGVudGlmaWVyLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJCiAgICAgV1RGOjpp
bml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9v
cCgpOwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi0gICAg
W1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBkaXNhYmxlQXV0b21hdGljVGVybWluYXRpb246
QCJEaXNhYmxlIFdlYlByb2Nlc3MgQXV0byBUZXJtaW5hdGlvbiJdOwotI2VuZGlmCisgICAgZGlz
YWJsZVByb2Nlc3NTdXBwcmVzc2lvbihAIldlYlByb2Nlc3MgTGF1bmNoIik7CiAKICAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplU2hpbSgpOwogICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmluaXRpYWxpemVTYW5kYm94KGNsaWVudElkZW50aWZpZXIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172188</attachid>
            <date>2012-11-02 18:06:23 -0700</date>
            <delta_ts>2012-11-05 14:35:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100997-20121102180442.patch</filename>
            <type>text/plain</type>
            <size>49510</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWMyMzg3OTQwZTAwZWQz
ZGNhYmIyNDI3ZTM1MDRkMGFlZGU1NjMwZC4uYTY0ODM0ZTJkMGE3MmMwYzFlMTQ1ZjIxNDkzNjM2
MDUwZWIzMTE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDEyLTExLTAyICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhcHBsaWNhdGlv
biBvY2NsdXNpb24gY3JpdGVyaW9uIHRvIGVuYWJsZS9kaXNhYmxlIHByb2Nlc3Mgc3VwcHJlc3Np
b24gb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDA5OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQcm92aWRlIHN1cHBvcnQgZm9yIGVuYWJsaW5nIGFuZCBkaXNhYmxpbmcgcHJvY2VzcyBzdXBw
cmVzc2lvbiB3aGVuIGFwcGxpY2F0aW9uIGlzIGNvbXBsZXRlbHkgb2NjbHVkZWQgb24gTWFjLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46IEFk
ZGVkIG1lc3NhZ2UgdG8gdXBkYXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMuCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NNYWluKTogUmVwbGFjZWQgZGlyZWN0IGNhbGwgdG8g
dGFrZSBhc3NlcnRpb24gd2l0aCBhIGNhbGwgdG8KKyAgICAgICAgYW4gZXF1aXZhbGVudCwgc2lt
cGxlciB0byB1c2UsIGhlbHBlciBtZXRob2QuCisgICAgICAgICogUGxhdGZvcm0vbWFjL1Byb2Nl
c3NVdGlsaXRpZXMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOiBBZGRlZCBoZWxwZXIgbWV0
aG9kcyB0byB0YWtlIGFuZCByZWxlYXNlIGFzc2VydGlvbiBmb3IgcHJvY2VzcyBzdXBwcmVzc2lv
bi4KKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvUHJvY2Vzc1V0aWxpdGllcy5tbTogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpkaXNhYmxlUHJvY2Vzc1N1cHByZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6ZW5hYmxlUHJvY2Vzc1N1cHByZXNzaW9uKToKKyAgICAg
ICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MubWVzc2FnZXMuaW46IEFkZGVkIG1lc3Nh
Z2UgdG8gdXBkYXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMuCisgICAgICAgICogUGx1
Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01haW5NYWMubW06CisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblByb2Nlc3NNYWluKTogUmVwbGFjZWQgZGlyZWN0IGNhbGwgdG8gdGFrZSBhc3NlcnRp
b24gd2l0aCBhIGNhbGwgdG8KKyAgICAgICAgYW4gZXF1aXZhbGVudCwgc2ltcGxlciB0byB1c2Us
IGhlbHBlciBtZXRob2QuCisgICAgICAgICogU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6Q2hpbGRQcm9jZXNzKTogSW5pdGlhbGl6ZSBhcHBs
aWNhdGlvbiBvY2NsdXNpb24gc3RhdHVzIHRvIGZhbHNlLgorICAgICAgICAqIFNoYXJlZC9DaGls
ZFByb2Nlc3MuaDoKKyAgICAgICAgKENoaWxkUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkNo
aWxkUHJvY2Vzczo6YXBwbGljYXRpb25Jc09jY2x1ZGVkKToKKyAgICAgICAgKiBTaGFyZWQvbWFj
L0NoaWxkUHJvY2Vzc01hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpDaGlsZFByb2Nlc3M6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCk6CisgICAgICAg
IEFkZGVkIGdldHRlciBhbmQgc2V0dGVyIGZvciBhcHBsaWNhdGlvbiBvY2NsdXNpb24gc3RhdHVz
LgorICAgICAgICAqIFNoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5tZXNz
YWdlcy5pbjogQWRkZWQgbWVzc2FnZSB0byB1cGRhdGUgYXBwbGljYXRpb24gb2NjbHVzaW9uIHN0
YXR1cy4KKyAgICAgICAgKiBTaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9j
ZXNzTWFpbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkV29ya2VyUHJvY2Vzc01haW4p
OiBSZXBsYWNlZCBkaXJlY3QgY2FsbCB0byB0YWtlIGFzc2VydGlvbiB3aXRoIGEgY2FsbCB0bwor
ICAgICAgICBhbiBlcXVpdmFsZW50LCBzaW1wbGVyIHRvIHVzZSwgaGVscGVyIG1ldGhvZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdLQ29udGV4dFNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaDog
QWRkZWQuCisgICAgICAgIEFkZGVkIHByaXZhdGUgQVBJIHRvIGVuYWJsZSBwcm9jZXNzIHN1cHBy
ZXNzaW9uIHN1cHBvcnQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NNYW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoTmV0d29ya1Byb2Nlc3NN
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NNYW5hZ2VyOjpzZW5kVG9Q
cm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1
bmNoaW5nKTogVXBkYXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMgcG9zdCBsYXVuY2gu
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojppc1ZhbGlkKToKKyAgICAgICAgKE5l
dHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZCk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc01hbmFnZXIuaDoKKyAgICAgICAgKFBsdWdpblByb2Nlc3NNYW5hZ2VyKToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNlbmRUb0FsbFByb2Nlc3Nl
cyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6
ZGlkRmluaXNoTGF1bmNoaW5nKTogVXBkYXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMg
cG9zdCBsYXVuY2guCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6aXNWYWxpZCk6Cisg
ICAgICAgIChQbHVnaW5Qcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpzZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
U2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyKToKKyAgICAgICAgKFdl
YktpdDo6U2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6OnNlbmRUb0FsbFByb2Nlc3Nlcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpkaWRGaW5p
c2hMYXVuY2hpbmcpOiBVcGRhdGUgYXBwbGljYXRpb24gb2NjbHVzaW9uIHN0YXR1cyBwb3N0IGxh
dW5jaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5Ojpp
c1ZhbGlkKToKKyAgICAgICAgKFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSk6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OnNlbmQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6OmFwcGxpY2F0aW9uSXNPY2NsdWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHQ6OnByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
bnRleHQpOgorICAgICAgICBBZGRlZCBnZXR0ZXIgZm9yIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBz
dGF0dXMgYW5kIHByb2Nlc3Mgc3VwcHJlc3Npb24gc3VwcG9ydCBlbmFibGVkIHN0YXR1cy4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOiBVcGRhdGUgYXBwbGljYXRpb24g
b2NjbHVzaW9uIHN0YXR1cyBwb3N0IGxhdW5jaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNYWMubW06CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0OjphcHBsaWNhdGlvbkJlY2FtZVZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0OjphcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKToKKyAgICAgICAgQWRkZWQgbm90aWZp
Y2F0aW9uIGhhbmRsZXJzIHRvIG5vdGlmeSBub24gVUkgV2ViS2l0MiBwcm9jZXNzZXMgb2YgdGhl
IGNoYW5nZSBpbiBhcHBsaWNhdGlvbiBvY2NsdXNpb24gc3RhdHVzLgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6dW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlv
bkhhbmRsZXJzKToKKyAgICAgICAgSGVscGVyIGZ1bmN0aW9ucyB0byByZWdpc3RlciBhbmQgdW5y
ZWdpc3RlciBhcHBsaWNhdGlvbiBvY2NsdXNpb24gbm90aWZpY2F0aW9uIGhhbmRsZXJzLgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZXRQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5h
YmxlZCk6IEFkZGVkIHNldHRlciBmb3IgcHJvY2VzcyBzdXBwcmVzc2lvbgorICAgICAgICBzdXBw
b3J0IGVuYWJsZWQuICBSZWdpc3RlcnMgb3IgdW5yZWdpc3RlcnMgb2NjbHVzaW9uIG5vdGlmaWNh
dGlvbiBoYW5kbGVycyBhY2NvcmRpbmcgdG8gdGhlIG5ldyBzZXR0aW5nLgorICAgICAgICAqIFdl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW46IEFkZGVkIG1lc3NhZ2UgdG8gdXBkYXRlIGFwcGxpY2F0aW9u
IG9jY2x1c2lvbiBzdGF0dXMuCisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0lu
aXRpYWxpemF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpJbml0aWFsaXplV2ViUHJvY2Vzcyk6
IFJlcGxhY2VkIGRpcmVjdCBjYWxsIHRvIHRha2UgYXNzZXJ0aW9uIHdpdGggYSBjYWxsIHRvCisg
ICAgICAgIGFuIGVxdWl2YWxlbnQsIHNpbXBsZXIgdG8gdXNlLCBoZWxwZXIgbWV0aG9kLgorCiAy
MDEyLTEwLTMxICBBbGV4YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KIAogICAg
ICAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb24gcGFyYW1ldGVycyBsaXN0IGlzIG5vdCBkZWNvZGVk
IGNvcnJlY3RseSBpbiBDb29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggMDI5NTM2YTM0MTIwNWU0MjQ1YzJhODI2NWFkN2MxYThmMjgyOTM1Zi4uZDI0
M2JkNDRmNjAwNjM0YmRkMjI1MGMzNDcxN2IxNzVlYjEzYjM1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4K
QEAgLTI4LDYgKzI4LDEwIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIHsKIAogICAgICMg
Q3JlYXRlcyBhIGNvbm5lY3Rpb24gZm9yIGNvbW11bmljYXRpb24gd2l0aCBhIFdlYlByb2Nlc3MK
ICAgICBDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCisKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgU2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wgZmxhZykKKyNlbmRpZgog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01haW5NYWMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWluTWFjLm1t
CmluZGV4IDdjMzhiOTYwODg5MGI3ZjIxNGVkN2NhYTg3NjAwMzFhNjJjNjFlZWEuLjFkMDFlODQ4
MDRmY2YzYmU3YmJkMWI0NTYwYWUwNTMwNTlhMjlhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01haW5NYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbQpA
QCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAiQ29tbWFuZExpbmUuaCIKICNpbXBvcnQgIkVudmly
b25tZW50VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgorI2ltcG9ydCAi
UHJvY2Vzc1V0aWxpdGllcy5oIgogI2ltcG9ydCA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW1wb3J0
IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPG1hY2gvbWFjaF9lcnJvci5oPgpA
QCAtODMsOSArODQsNyBAQCBpbnQgTmV0d29ya1Byb2Nlc3NNYWluKGNvbnN0IENvbW1hbmRMaW5l
JiBjb21tYW5kTGluZSkKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgUnVu
TG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwOTAKLSAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRp
c2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjpAIkRpc2FibGUgTmV0d29ya1Byb2Nlc3MgQXV0byBU
ZXJtaW5hdGlvbiJdOwotI2VuZGlmCisgICAgZGlzYWJsZVByb2Nlc3NTdXBwcmVzc2lvbihAIk5l
dHdvcmtQcm9jZXNzIExhdW5jaCIpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgbmV0d29yayBw
cm9jZXNzIGNvbm5lY3Rpb24uCiAgICAgTmV0d29ya1Byb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxp
emUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihzZXJ2ZXJQb3J0KSwgUnVuTG9vcDo6
bWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Qcm9jZXNz
VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvUHJvY2Vzc1V0aWxpdGll
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM2MmRlNDBlMjhiYmVhOTM0NWY1N2M4YTI0ZTcyNzBlYjA5NjE1Y2EK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvUHJvY2Vzc1V0
aWxpdGllcy5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFByb2Nlc3NV
dGlsaXRpZXNfaAorI2RlZmluZSBQcm9jZXNzVXRpbGl0aWVzX2gKKworT0JKQ19DTEFTUyBOU1N0
cmluZzsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgZGlzYWJsZVByb2Nlc3NTdXBwcmVz
c2lvbihOU1N0cmluZyAqcmVhc29uKTsKK3ZvaWQgZW5hYmxlUHJvY2Vzc1N1cHByZXNzaW9uKE5T
U3RyaW5nICpyZWFzb24pOworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBy
b2Nlc3NVdGlsaXRpZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFj
L1Byb2Nlc3NVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvUHJvY2Vz
c1V0aWxpdGllcy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWQ2MjUyYjgyMDVhOWU0MTg2ZDEyZTFhMjU0OGU1
NzUwYjNjMjg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFj
L1Byb2Nlc3NVdGlsaXRpZXMubW0KQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUHJvY2Vzc1V0aWxpdGllcy5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordm9pZCBkaXNhYmxlUHJvY2Vzc1N1cHByZXNzaW9uKE5TU3RyaW5nICpyZWFz
b24pCit7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisgICAg
Ly8gTm90ZTogQXV0b1Rlcm1pbmF0aW9uU3VwcG9ydCBpcyBjdXJyZW50bHkgbm90IGVuYWJsZWQg
Zm9yIENoaWxkUHJvY2Vzc2VzLgorICAgIFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gZGlz
YWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uOnJlYXNvbl07CisjZW5kaWYKK30KKwordm9pZCBlbmFi
bGVQcm9jZXNzU3VwcHJlc3Npb24oTlNTdHJpbmcgKnJlYXNvbikKK3sKKyNpZiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICAvLyBOb3RlOiBBdXRvVGVybWluYXRp
b25TdXBwb3J0IGlzIGN1cnJlbnRseSBub3QgZW5hYmxlZCBmb3IgQ2hpbGRQcm9jZXNzZXMuCisg
ICAgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBlbmFibGVBdXRvbWF0aWNUZXJtaW5hdGlv
bjpyZWFzb25dOworI2VuZGlmCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlNGVmNDUwNzI0YmEw
YTVlYzAxMzkyNjU3MGVmMjQ1OWM0YzdkNDYzLi40MTIyNmIxNGQ1M2UzNzEwNmY1NDFiZDFkYWE1
M2VhODhjYWRjYzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1Bs
dWdpblByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Qcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zOCw2ICszOCwxMCBAQCBtZXNzYWdlcyAt
PiBQbHVnaW5Qcm9jZXNzIHsKICAgICAjIEFza3MgdGhlIHBsdWctaW4gdG8gY2xlYXIgZGF0YSBm
b3IgdGhlIGdpdmVuIHNpdGVzLiBUaGUgcGx1Zy1pbiBwcm9jZXNzIHNlbmRzIGJhY2sKICAgICAj
IGEgRGlkQ2xlYXJTaXRlRGF0YSBtZXNzYWdlIHdoZW4gZG9uZS4KICAgICBDbGVhclNpdGVEYXRh
KFZlY3RvcjxXVEY6OlN0cmluZz4gc2l0ZXMsIHVpbnQ2NF90IGZsYWdzLCB1aW50NjRfdCBtYXhB
Z2VJblNlY29uZHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgU2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wgZmxhZyk7CisjZW5kaWYKIH0KIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Q
cm9jZXNzTWFpbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdp
blByb2Nlc3NNYWluTWFjLm1tCmluZGV4IDkxMmIxYzRmYjViYmYyNDVjMWViZmFkYjk0NzIwMDg5
YWUyYTFkYTAuLmM4N2FkMTQwZWM3ZDZjYTVlM2NhNWU2OGVjMWYyMTdiOGU1YzEzYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWlu
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nl
c3NNYWluTWFjLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJFbnZpcm9ubWVudFV0aWxp
dGllcy5oIgogI2ltcG9ydCAiTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIKICNpbXBvcnQgIlBsdWdp
blByb2Nlc3MuaCIKKyNpbXBvcnQgIlByb2Nlc3NVdGlsaXRpZXMuaCIKICNpbXBvcnQgPEZvdW5k
YXRpb24vTlNVc2VyRGVmYXVsdHMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVuTG9vcC5oPgogI2lt
cG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CkBAIC0xMTcsOSArMTE4LDcgQEAgaW50IFBs
dWdpblByb2Nlc3NNYWluKGNvbnN0IENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkKICAgICBXVEY6
OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5M
b29wKCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLSAg
ICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRpc2FibGVBdXRvbWF0aWNUZXJtaW5hdGlv
bjpAIkRpc2FibGUgUGx1Z2luUHJvY2VzcyBBdXRvIFRlcm1pbmF0aW9uIl07Ci0jZW5kaWYKKyAg
ICBkaXNhYmxlUHJvY2Vzc1N1cHByZXNzaW9uKEAiUGx1Z2luUHJvY2VzcyBMYXVuY2giKTsKIAog
I2lmIGRlZmluZWQoX19pMzg2X18pCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgc2hpbSBmb3IgMzIt
Yml0IG9ubHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCmluZGV4IGI2NWVl
YmUyY2U0MjU1NzU0YTM0NzE3NWY4NjU5YWNiODNmNTMxMWUuLjI4Y2Q5ZTg4MzgyYTQ0ODJmNDA0
NjRkZmUwNjViM2E3MmI2YzViODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
aGlsZFByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3Mu
Y3BwCkBAIC02MCw2ICs2MCw5IEBAIENoaWxkUHJvY2Vzczo6Q2hpbGRQcm9jZXNzKCkKICAgICA6
IG1fdGVybWluYXRpb25UaW1lb3V0KDApCiAgICAgLCBtX3Rlcm1pbmF0aW9uQ291bnRlcigwKQog
ICAgICwgbV90ZXJtaW5hdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNoaWxkUHJv
Y2Vzczo6dGVybWluYXRpb25UaW1lckZpcmVkKQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1f
YXBwbGljYXRpb25Jc09jY2x1ZGVkKGZhbHNlKQorI2VuZGlmCiB7CiAgICAgLy8gRklYTUU6IFRo
ZSB0ZXJtaW5hdGlvbiB0aW1lciBzaG91bGQgbm90IGJlIHNjaGVkdWxlZCBvbiB0aGUgbWFpbiBy
dW4gbG9vcC4KICAgICAvLyBJdCB3b24ndCB3b3JrIHdpdGggdGhlIHRocmVhZGVkIG1vZGUsIGJ1
dCBpdCdzIG5vdCByZWFsbHkgdXNlZnVsIGFueXdheSBhcyBpcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
aGlsZFByb2Nlc3MuaAppbmRleCA5ZWMxYTUwZDk5MmY4MDFjZTY3NDRjMGE4NDUyOGZiMmYxZGI3
OWI0Li44YWU1MWJmYzA3NjA1NTc3NTM0YWMyZDBmNWViYzg2NWM4ZDgzMjA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oCkBAIC01Nyw2ICs1NywxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIENoaWxkUHJvY2VzcyYgbV9jaGlsZFByb2Nlc3M7CiAgICAgfTsKIAorI2lmIFBMQVRGT1JN
KE1BQykKKyAgICBib29sIGFwcGxpY2F0aW9uSXNPY2NsdWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
YXBwbGljYXRpb25Jc09jY2x1ZGVkOyB9CisgICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzT2NjbHVk
ZWQoYm9vbCBmbGFnKTsKKyNlbmRpZgorCiAgICAgc3RhdGljIHZvaWQgZGlkQ2xvc2VPbkNvbm5l
Y3Rpb25Xb3JrUXVldWUoV29ya1F1ZXVlJiwgQ29yZUlQQzo6Q29ubmVjdGlvbiopOwogCiBwcm90
ZWN0ZWQ6CkBAIC04MCw2ICs4NSwxMCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fdGVybWlu
YXRpb25Db3VudGVyOwogCiAgICAgV2ViQ29yZTo6UnVuTG9vcDo6VGltZXI8Q2hpbGRQcm9jZXNz
PiBtX3Rlcm1pbmF0aW9uVGltZXI7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgYm9vbCBtX2Fw
cGxpY2F0aW9uSXNPY2NsdWRlZDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE5ZTRiNzAwNzQxOWFiNTQxM2VhY2QwYTkzOTRiYzg0Y2JlNDgzOTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQpAQCAt
MCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJD
aGlsZFByb2Nlc3MuaCIKKworI2ltcG9ydCAiUHJvY2Vzc1V0aWxpdGllcy5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordm9pZCBDaGlsZFByb2Nlc3M6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRl
ZChib29sIGZsYWcpCit7CisgICAgaWYgKG1fYXBwbGljYXRpb25Jc09jY2x1ZGVkID09IGZsYWcp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fYXBwbGljYXRpb25Jc09jY2x1ZGVkID0gZmxhZzsK
KyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICBpZiAobV9h
cHBsaWNhdGlvbklzT2NjbHVkZWQpCisgICAgICAgIGVuYWJsZVByb2Nlc3NTdXBwcmVzc2lvbihA
IkFwcGxpY2F0aW9uIGJlY2FtZSBvY2NsdWRlZCIpOworICAgIGVsc2UKKyAgICAgICAgZGlzYWJs
ZVByb2Nlc3NTdXBwcmVzc2lvbihAIkFwcGxpY2F0aW9uIGJlY2FtZSB2aXNpYmxlIik7CisjZW5k
aWYKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vz
cy9TaGFyZWRXb3JrZXJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
V29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDNjZDc1
MzM3YjdmZWU4NDY5YjA5NGU4MTQ4ZWE1NWMzNjkyNDk4OWEuLjc4OWJiYjMxODE0YzRlMTRjODNh
ZTZjYTIwZjEwNWY2NDZkNGJjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdv
cmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTMwLDYgKzMwLDEwIEBAIG1lc3NhZ2VzIC0+IFNoYXJlZFdvcmtlclByb2Nlc3Mgewog
ICAgICMgVGhlIHNoYXJlZCB3b3JrZXIgcHJvY2VzcyBzZW5kcyBiYWNrIGEgRGlkQ3JlYXRlV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24gbWVzc2FnZSB3aXRoCiAgICAgIyBhIGNvbm5lY3Rpb24gaWRlbnRp
Zmllci4KICAgICBDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbigpCisKKyNpZiBQTEFURk9STShN
QUMpCisgICAgU2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wgZmxhZykKKyNlbmRpZgogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NN
YWluTWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVk
V29ya2VyUHJvY2Vzc01haW5NYWMubW0KaW5kZXggMzBmOGE3NDk2NGQ2ZDFjYzI4NzlmMzE5N2M1
NDViYTZjMDU5NWFkYi4uNWZmODZkNmE2OThlNjQyZWU5M2JhNzU1YjY5NDA1ZDFiMGRjNDBkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVk
V29ya2VyUHJvY2Vzc01haW5NYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2Vy
UHJvY2Vzcy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW0KQEAgLTMwLDYgKzMwLDcg
QEAKIAogI2ltcG9ydCAiQ29tbWFuZExpbmUuaCIKICNpbXBvcnQgIkVudmlyb25tZW50VXRpbGl0
aWVzLmgiCisjaW1wb3J0ICJQcm9jZXNzVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJTaGFyZWRXb3Jr
ZXJQcm9jZXNzLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVXNlckRlZmF1bHRzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1J1bkxvb3AuaD4KQEAgLTk2LDkgKzk3LDcgQEAgaW50IFNoYXJlZFdvcmtl
clByb2Nlc3NNYWluKGNvbnN0IENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkKICAgICBXVEY6Omlu
aXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29w
KCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLSAgICBb
W05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRpc2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjpA
IkRpc2FibGUgU2hhcmVkV29ya2VyUHJvY2VzcyBBdXRvIFRlcm1pbmF0aW9uIl07Ci0jZW5kaWYK
KyAgICBkaXNhYmxlUHJvY2Vzc1N1cHByZXNzaW9uKEAiU2hhcmVkV29ya2VyUHJvY2VzcyBMYXVu
Y2giKTsKIAogICAgIC8vIEluaXRpYWxpemUgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2VzcyBjb25u
ZWN0aW9uLgogICAgIFNoYXJlZFdvcmtlclByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUoQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihzZXJ2ZXJQb3J0KSwgUnVuTG9vcDo6bWFpbigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250
ZXh0UHJpdmF0ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dL
Q29udGV4dFByaXZhdGVNYWMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1Mzg0ZGZkNDJiN2FiMTgzOWFjODZl
Y2U3MTU3ZTg5YmQwZTQyZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuY3BwCkBAIC0wLDAgKzEsMzYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tDb250ZXh0UHJp
dmF0ZU1hYy5oIgorCisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OworCit2b2lkIFdLQ29udGV4dFNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFi
bGVkKGJvb2wgZmxhZykKK3sKKyAgICBXZWJDb250ZXh0OjpzZXRQcm9jZXNzU3VwcHJlc3Npb25T
dXBwb3J0RW5hYmxlZChmbGFnKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGRkNGU3
YTFiNzA5ZGVjODJiYWIzM2E4YTNjYTdhZTY1ZGI4YTgzZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oCkBA
IC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLQ29udGV4dFByaXZhdGVNYWNf
aAorI2RlZmluZSBXS0NvbnRleHRQcml2YXRlTWFjX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tC
YXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tf
RVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQo
Ym9vbCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS0Nv
bnRleHRQcml2YXRlTWFjX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmgKaW5kZXggYjhiNDUzNGNlZmNmM2Jh
MTQ2MmE3YjBjMzY1ZTkwYTFkNjE3ZTZkZi4uYTk1ZTI0YjU3Yjg0YjdmYTQzNjQ4YTAxZWE4YWM3
ZmZlM2U5NDA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CkBAIC0zNiw3ICszNyw2IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOwotY2xhc3MgTmV0d29ya1Byb2Nlc3NQcm94eTsKIGNs
YXNzIFdlYlByb2Nlc3NQcm94eTsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3NNYW5hZ2VyIHsKQEAg
LTUwLDEyICs1MCwyMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCByZW1vdmVOZXR3b3JrUHJv
Y2Vzc1Byb3h5KE5ldHdvcmtQcm9jZXNzUHJveHkqKTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IHZvaWQgc2VuZFRvUHJvY2Vzcyhjb25zdCBVJiBtZXNzYWdlKTsKKwogcHJpdmF0ZToKICAg
ICBOZXR3b3JrUHJvY2Vzc01hbmFnZXIoKTsKIAogICAgIFJlZlB0cjxOZXR3b3JrUHJvY2Vzc1By
b3h5PiBtX25ldHdvcmtQcm9jZXNzOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5l
IHZvaWQgTmV0d29ya1Byb2Nlc3NNYW5hZ2VyOjpzZW5kVG9Qcm9jZXNzKGNvbnN0IFUmIG1lc3Nh
Z2UpCit7CisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MgJiYgbV9uZXR3b3JrUHJvY2Vzcy0+aXNW
YWxpZCgpKQorICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKG1lc3NhZ2UsIDApOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDI4OTM0NWE0NjU3Y2ExYWExOWNiMDMzMGJjZGJmOTIz
YzNkZjk1ZGYuLjFmOWNlODllZDI0MWJmMTE0MTBjYjQ4MzhjZjZhOWVkZGZjZThhOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCkBAIC0xNjIsNiArMTYyLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3Rp
CiAgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNy
ZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCksIDApOwogICAgIAogICAgIG1fbnVt
UGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cyA9IDA7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAg
aWYgKFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uSXNPY2NsdWRlZCgpKQorICAgICAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2Nj
bHVkZWQodHJ1ZSksIDApOworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCmluZGV4IDQ3Y2NiYWNiZjczMzRhNjdkNWE2MmIyZTcwMzY1MTdlZjI3MDc3MDcuLjI1
NGM4OGQzMmY3MTI0NmZmNmFjZWQ4MmJkNDI5OGZhY2ZjYmE0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAg
LTQ1LDYgKzQ1LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKIAorICAgIGJvb2wgaXNWYWxpZCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbjsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
Ym9vbCBzZW5kKGNvbnN0IFQmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVuc2ln
bmVkIG1lc3NhZ2VTZW5kRmxhZ3MgPSAwKTsKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2Vz
c1Byb3h5KE5ldHdvcmtQcm9jZXNzTWFuYWdlciopOwogCkBAIC03Nyw2ICs4MSwxNyBAQCBwcml2
YXRlOgogICAgIERlcXVlPFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gPiBtX3BlbmRpbmdDb25uZWN0aW9u
UmVwbGllczsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citib29sIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnNlbmQoY29uc3QgVCYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdW5z
aWduZWQgbWVzc2FnZVNlbmRGbGFncykKK3sKKyAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5j
LCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CisgICAgCisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5zZW5kKG1l
c3NhZ2UsIGRlc3RpbmF0aW9uSUQsIG1lc3NhZ2VTZW5kRmxhZ3MpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFn
ZXIuaAppbmRleCAzNzgyNGM0YWEzYjRkYWIxY2IyMTM4NzA2NjlkMjU5YzA4MGQ4NmUwLi41NmRk
OTUxYTMxODJjZDJlYzBlOGFmNWUxNGQ2YjllZjRmNWY1NTcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgKQEAg
LTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAKICNpbmNsdWRlICJQ
bHVnaW5Nb2R1bGVJbmZvLmgiCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc1Byb3h5LmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNDEsNyArNDIsNiBAQCBuYW1lc3Bh
Y2UgQ29yZUlQQyB7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUGx1Z2luSW5mb1N0b3Jl
OwotY2xhc3MgUGx1Z2luUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogY2xh
c3MgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyOwogCkBAIC01Niw2ICs1Niw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGdldFNpdGVzV2l0aERhdGEoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIFdlYlBs
dWdpblNpdGVEYXRhTWFuYWdlciosIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgY2xl
YXJTaXRlRGF0YShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiwgV2ViUGx1Z2luU2l0ZURhdGFNYW5h
Z2VyKiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBmbGFncywgdWludDY0
X3QgbWF4QWdlSW5TZWNvbmRzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKIAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+IHZvaWQgc2VuZFRvQWxsUHJvY2Vzc2VzKGNvbnN0IFUmIG1lc3NhZ2UpOwor
CiBwcml2YXRlOgogICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyKCk7CiAKQEAgLTY1LDYgKzY3LDE3
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxQbHVnaW5Qcm9jZXNzUHJveHk+ID4gbV9w
bHVnaW5Qcm9jZXNzZXM7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgdm9pZCBQ
bHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2VuZFRvQWxsUHJvY2Vzc2VzKGNvbnN0IFUmIG1lc3NhZ2Up
Cit7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxQbHVnaW5Qcm9jZXNzUHJveHk+ID4mIHByb2Nl
c3NlcyA9IG1fcGx1Z2luUHJvY2Vzc2VzOworICAgIHNpemVfdCBwcm9jZXNzQ291bnQgPSBwcm9j
ZXNzZXMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvY2Vzc0NvdW50OyAr
K2kpIHsKKyAgICAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBwcm9jZXNzID0gcHJvY2Vzc2VzW2ld
LmdldCgpOworICAgICAgICBpZiAocHJvY2Vzcy0+aXNWYWxpZCgpKQorICAgICAgICAgICAgcHJv
Y2Vzcy0+c2VuZChtZXNzYWdlLCAwKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKaW5kZXgg
ODExOTdjZTM2YzRiM2JkMTUyOTcxM2E5OTIwZTdkNzRjYzI1NjI3Yi4uMGMyZTg2ODllNjQ4ODc2
ODBlNDJhMTM0OTNjMGYzZTUwZTBiYjEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCkBAIC0yMjgsNiArMjI4
LDExIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vz
c0xhdW5jaGVyKiwgQ29yZUlQQzo6Q29ubmVjdGlvCiAgICAgICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzczo6Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKSwg
MCk7CiAgICAgCiAgICAgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzID0gMDsKKworI2lm
IFBMQVRGT1JNKE1BQykKKyAgICBpZiAoV2ViQ29udGV4dDo6YXBwbGljYXRpb25Jc09jY2x1ZGVk
KCkpCisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzczo6
U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUpLCAwKTsKKyNlbmRpZgogfQogCiB2b2lkIFBs
dWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgQ29y
ZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3lu
Y2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKaW5kZXggZjc3NTAzZDhkNDJk
OTBjYmViOGNkYTY0Yzk3OWRlZGRlZTJmMjBhYS4uMGIzZmUzMmM0ZGIzMTE0ZWQ4MDU5YmEwM2Y4
Y2Y0OWRlOGQ2MzEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKQEAgLTY3LDYgKzY3LDEwIEBAIHB1YmxpYzoKIAog
ICAgIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbkluZm8oKSBjb25zdCB7IHJldHVybiBt
X3BsdWdpbkluZm87IH0KIAorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
bmVjdGlvbjsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKGNvbnN0IFQm
IG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxh
Z3MgPSAwKTsKKwogICAgIC8vIEFza3MgdGhlIHBsdWctaW4gcHJvY2VzcyB0byBjcmVhdGUgYSBu
ZXcgY29ubmVjdGlvbiB0byBhIHdlYiBwcm9jZXNzLiBUaGUgY29ubmVjdGlvbiBpZGVudGlmaWVy
IHdpbGwgYmUgCiAgICAgLy8gZW5jb2RlZCBpbiB0aGUgZ2l2ZW4gYXJndW1lbnQgZW5jb2RlciBh
bmQgc2VudCBiYWNrIHRvIHRoZSBjb25uZWN0aW9uIG9mIHRoZSBnaXZlbiB3ZWIgcHJvY2Vzcy4K
ICAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4pOwpAQCAtMTY5LDYgKzE3MywxNyBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorYm9vbCBQbHVnaW5Qcm9jZXNzUHJveHk6OnNlbmQoY29uc3QgVCYgbWVz
c2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncykK
K3sKKyAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7
CisKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIG1fY29ubmVjdGlvbi0+c2VuZChtZXNzYWdlLCBkZXN0aW5hdGlvbklELCBtZXNzYWdlU2Vu
ZEZsYWdzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
UExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hh
cmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIuaAppbmRl
eCBiYTA2YzdjYmI4MDk4MjQzNDRjZTc5Y2M0OWFiNDFiNzFmZDNjODQ4Li5mNGM0YzNlZGY2ZWQ1
MGNiMGZhN2VlYzI0NzE4MGQxZTVjZWE0NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nl
c3NNYW5hZ2VyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUl9Q
Uk9DRVNTKQogCiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgorI2luY2x1ZGUgIlNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KQEAgLTQxLDcgKzQyLDYgQEAgbmFtZXNwYWNlIENvcmVJUEMgewogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIFBsdWdpbkluZm9TdG9yZTsKLWNsYXNzIFNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIGNsYXNzIFdlYlBsdWdpblNpdGVEYXRhTWFu
YWdlcjsKIApAQCAtNTMsNiArNTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTaGFyZWRXb3Jr
ZXJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFNoYXJlZFdvcmtlclBy
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKICAgICB2b2lkIHJlbW92ZVNoYXJlZFdv
cmtlclByb2Nlc3NQcm94eShTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkqKTsKIAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IHZvaWQgc2VuZFRvQWxsUHJvY2Vzc2VzKGNvbnN0IFUmIG1lc3NhZ2Up
OworCiBwcml2YXRlOgogICAgIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyKCk7CiAKQEAgLTYx
LDYgKzYzLDE3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHk+ID4gbV9zaGFyZWRXb3JrZXJQcm9jZXNzZXM7CiB9OwogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiBpbmxpbmUgdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcjo6c2VuZFRvQWxs
UHJvY2Vzc2VzKGNvbnN0IFUmIG1lc3NhZ2UpCit7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxT
aGFyZWRXb3JrZXJQcm9jZXNzUHJveHk+ID4mIHByb2Nlc3NlcyA9IG1fc2hhcmVkV29ya2VyUHJv
Y2Vzc2VzOworICAgIHNpemVfdCBwcm9jZXNzQ291bnQgPSBwcm9jZXNzZXMuc2l6ZSgpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvY2Vzc0NvdW50OyArK2kpIHsKKyAgICAgICAgU2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5KiBwcm9jZXNzID0gcHJvY2Vzc2VzW2ldLmdldCgpOworICAg
ICAgICBpZiAocHJvY2Vzcy0+aXNWYWxpZCgpKQorICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZCht
ZXNzYWdlLCAwKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHkuY3BwCmluZGV4IDAzMGUzZmZjODkxNTFmMTQwYTk0ZDg3MGYzMzY1MjJkOWZlMTFl
OTMuLmI4MDhlZmJhY2RmYWI4ODg2YWZjOGExNTdmNTBjZTg4ZTg5MWEwNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMv
U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTY0LDYgKzE2NCwxMSBAQCB2b2lkIFNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hl
ciosIENvcmVJUEM6OkNvbgogICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNo
YXJlZFdvcmtlclByb2Nlc3M6OkNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCksIDApOwogICAg
IAogICAgIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cyA9IDA7CisKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgaWYgKFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uSXNPY2NsdWRlZCgpKQorICAg
ICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNoYXJlZFdvcmtlclByb2Nlc3M6OlNl
dEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKSwgMCk7CisjZW5kaWYKIH0KIAogdm9pZCBTaGFy
ZWRXb3JrZXJQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0
IENvcmVJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb25JZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRX
b3JrZXJQcm9jZXNzUHJveHkuaAppbmRleCA5ZjBjNWQyYWNlYjM5ZTJjNjg2Nzg4ZDcyNDI4NGRh
NWQ5YTU4OTU1Li5lMzBiOTg5MThlN2M1YWZmNGZkOWU5NWY2MDNhZDA5NTBhODM1NzY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29y
a2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuaApAQCAtNTYsNiArNTYsMTAgQEAgcHVibGlj
OgogICAgIC8vIFRlcm1pbmF0ZXMgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2Vzcy4KICAgICB2b2lk
IHRlcm1pbmF0ZSgpOwogCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb25u
ZWN0aW9uOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoY29uc3QgVCYg
bWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFn
cyA9IDApOworCiBwcml2YXRlOgogICAgIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eShTaGFyZWRX
b3JrZXJQcm9jZXNzTWFuYWdlciosIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5h
bWUpOwogCkBAIC05MSw2ICs5NSwxNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbnVtUGVu
ZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0czsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citib29s
IFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6c2VuZChjb25zdCBUJiBtZXNzYWdlLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKQoreworICAgIENPTVBJ
TEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKKworICAgIGlmICgh
aXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9jb25uZWN0
aW9uLT5zZW5kKG1lc3NhZ2UsIGRlc3RpbmF0aW9uSUQsIG1lc3NhZ2VTZW5kRmxhZ3MpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VS
X1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCAwZDQ0NDU0
YmFiNjNhNjE2M2IzNjM2Zjg2MWEzNWI0N2ViMDM0NDhmLi4wZDQ5NzFjNWI2ODljNGVkYzM3ZDc4
YjMyMGYwZGI4OGYxZDA2MGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgK
QEAgLTI0MCw2ICsyNDAsOSBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgc3Rh
dGljIGJvb2wgb21pdFBERlN1cHBvcnQoKTsKKyAgICBzdGF0aWMgYm9vbCBhcHBsaWNhdGlvbklz
T2NjbHVkZWQoKSB7IHJldHVybiBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZDsgfQorICAgIHN0YXRp
YyBib29sIHByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKCkgeyByZXR1cm4gc19wcm9j
ZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZDsgfQorICAgIHN0YXRpYyB2b2lkIHNldFByb2Nl
c3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKGJvb2wpOwogI2VuZGlmCiAKICAgICB2b2lkIGZ1
bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxl
ZCk7CkBAIC0zMDIsNiArMzA1LDEzIEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGNvb2tpZVN0b3Jh
Z2VEaXJlY3RvcnkoKSBjb25zdDsKICAgICBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0Q29va2llU3Rv
cmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0YXRpYyB2
b2lkIGFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2
b2lkKiwgdWludDMyX3QpOworICAgIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVk
ZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KTsKKyAgICBzdGF0
aWMgdm9pZCByZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCk7CisgICAgc3Rh
dGljIHZvaWQgdW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCk7CisjZW5k
aWYKKwogICAgIFByb2Nlc3NNb2RlbCBtX3Byb2Nlc3NNb2RlbDsKICAgICAKICAgICBWZWN0b3I8
UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gPiBtX3Byb2Nlc3NlczsKQEAgLTM5Niw2ICs0MDYsMTEg
QEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8RGljdGlvbmFyeUNhbGxi
YWNrPiA+IG1fZGljdGlvbmFyeUNhbGxiYWNrczsKIAogICAgIENvcmVJUEM6Ok1lc3NhZ2VSZWNl
aXZlck1hcCBtX21lc3NhZ2VSZWNlaXZlck1hcDsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBz
dGF0aWMgYm9vbCBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZDsKKyAgICBzdGF0aWMgYm9vbCBzX3By
b2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkOworI2VuZGlmCiB9OwogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiBpbmxpbmUgdm9pZCBXZWJDb250ZXh0OjpzZW5kVG9BbGxQcm9jZXNzZXMoY29u
c3QgVSYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKaW5kZXggNmJmNjU0M2I5ZGY5NjQ1NGM1NjMwZjc1NGEyNzk2OGRkNWY2MzE0My4uNGFk
MGRlYjRjMjQzNjE0NTdhYzg2MzgyNGRlMTU2MTE1ZTViZGFhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTUzMiw2ICs1MzIsMTEgQEAgdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhDb3JlSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyIGNvbm5lY3QKIAogICAgIC8vIFRlbGwgdGhlIGNvbnRleHQgdGhhdCB3ZSBm
aW5pc2hlZCBsYXVuY2hpbmcuCiAgICAgbV9jb250ZXh0LT5wcm9jZXNzRGlkRmluaXNoTGF1bmNo
aW5nKHRoaXMpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChXZWJDb250ZXh0OjphcHBs
aWNhdGlvbklzT2NjbHVkZWQoKSkKKyAgICAgICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSksIDApOworI2VuZGlm
CiB9CiAKIFdlYkZyYW1lUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6d2ViRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViQ29udGV4dE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4
dE1hYy5tbQppbmRleCAwMGMwMmNkMDJkMWNjNTY4NjNhMTU5OGYzYmQ5MTAyZTNkNWU2OGQ5Li5k
NDI1ZmY3ZmRhMWM1ODhhMTNjYzA1YzdkZTZkMjMyYjEyODBmNGZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCkBAIC0yNSw2ICsyNSwxMyBAQAog
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkNvbnRleHQuaCIKKyNpbXBvcnQgIldl
YlByb2Nlc3NNZXNzYWdlcy5oIgorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmgiCisj
aW1wb3J0ICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW1wb3J0ICJQbHVnaW5Qcm9jZXNz
TWFuYWdlci5oIgorI2ltcG9ydCAiUGx1Z2luUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW1wb3J0ICJT
aGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oIgorI2ltcG9ydCAiU2hhcmVkV29ya2VyUHJvY2Vz
c01lc3NhZ2VzLmgiCiAKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9y
dCAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgpAQCAtNTIsNiArNTksOSBAQCBOU1N0
cmluZyAqV2ViSWNvbkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYkljb25EYXRh
YmFzZURpcmVjdG9yeURlZmF1bAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorYm9vbCBXZWJDb250
ZXh0OjpzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9IGZhbHNlOworYm9vbCBXZWJDb250ZXh0Ojpz
X3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkID0gZmFsc2U7CisKIFN0cmluZyBXZWJD
b250ZXh0OjphcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKICAgICBOU1N0cmluZyAqYXBw
TmFtZSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07CkBAIC0yNTcs
NSArMjY3LDgzIEBAIHZvaWQgV2ViQ29udGV4dDo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QKICAgICBQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJvYXJkVHlw
ZSk7CiB9CiAKK3ZvaWQgV2ViQ29udGV4dDo6YXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKHVpbnQz
Ml90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKK3sKKyAgICBpZiAoc19hcHBs
aWNhdGlvbklzT2NjbHVkZWQpIHsKKyAgICAgICAgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPSBm
YWxzZTsKKworICAgICAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9IFdl
YkNvbnRleHQ6OmFsbENvbnRleHRzKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3Vu
dCA9IGNvbnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICBjb250ZXh0
c1tpXS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRBcHBsaWNh
dGlvbklzT2NjbHVkZWQoZmFsc2UpKTsKKworI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKKyAg
ICAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNlbmRUb0FsbFByb2Nlc3NlcyhN
ZXNzYWdlczo6UGx1Z2luUHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGZhbHNlKSk7
CisjZW5kaWYKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorICAgICAgICBOZXR3b3JrUHJv
Y2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNlbmRUb1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoZmFsc2UpKTsKKyNlbmRpZgorI2lmIEVOQUJM
RShTSEFSRURfV09SS0VSX1BST0NFU1MpCisgICAgICAgIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5h
Z2VyOjpzaGFyZWQoKS5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OlNoYXJlZFdvcmtlclBy
b2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSkpOworI2VuZGlmCisgICAgfQor
fQorCit2b2lkIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQodWludDMyX3Qs
IHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KQoreworICAgIGlmICghc19hcHBsaWNh
dGlvbklzT2NjbHVkZWQpIHsKKyAgICAgICAgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPSB0cnVl
OworICAgICAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9IFdlYkNvbnRl
eHQ6OmFsbENvbnRleHRzKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNv
bnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICBjb250ZXh0c1tpXS0+
c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklz
T2NjbHVkZWQodHJ1ZSkpOworCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorICAgICAgICBQ
bHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpQbHVnaW5Qcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSkpOworI2VuZGlm
CisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyAgICAgICAgTmV0d29ya1Byb2Nlc3NNYW5h
Z2VyOjpzaGFyZWQoKS5zZW5kVG9Qcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0
QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUpKTsKKyNlbmRpZgorI2lmIEVOQUJMRShTSEFSRURf
V09SS0VSX1BST0NFU1MpCisgICAgICAgIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyOjpzaGFy
ZWQoKS5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OlNoYXJlZFdvcmtlclByb2Nlc3M6OlNl
dEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKSk7CisjZW5kaWYKKyAgICB9Cit9CisKK3ZvaWQg
V2ViQ29udGV4dDo6cmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycygpCit7Cisj
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisgICAgaWYgKCFXS1Jl
Z2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihXS09jY2x1c2lvbk5vdGlmaWNhdGlv
blR5cGVBcHBsaWNhdGlvbkJlY2FtZVZpc2libGUsIGFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSkp
IHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJSZWdpc3RlcmF0aW9uIG9mIFwiQXBwIEJlY2FtZSBW
aXNpYmxlXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxuIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoIVdLUmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5k
bGVyKFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQs
IGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQpKQorICAgICAgICBXVEZMb2dBbHdheXMoIlJlZ2lz
dGVyYXRpb24gb2YgXCJBcHAgQmVjYW1lIE9jY2x1ZGVkXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIg
ZmFpbGVkLlxuIik7CisjZW5kaWYKK30KKwordm9pZCBXZWJDb250ZXh0Ojp1bnJlZ2lzdGVyT2Nj
bHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKQoreworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIGlmICghV0tVbnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZp
Y2F0aW9uSGFuZGxlcihXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbkJlY2Ft
ZU9jY2x1ZGVkLCBhcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKSkgeworICAgICAgICBXVEZMb2dB
bHdheXMoIlJlbW92YWwgb2YgXCJBcHBsaWNhdGlvbiBCZWNhbWUgT2NjbHVkZWRcIiBub3RpZmlj
YXRpb24gaGFuZGxlciBmYWlsZWQuXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmICghV0tVbnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihXS09jY2x1c2lv
bk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbkJlY2FtZVZpc2libGUsIGFwcGxpY2F0aW9uQmVj
YW1lVmlzaWJsZSkpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiUmVtb3ZhbCBvZiBcIkFwcGxpY2F0
aW9uIEJlY2FtZSBWaXNpYmxlXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxuIik7Cisj
ZW5kaWYKK30KKwordm9pZCBXZWJDb250ZXh0OjpzZXRQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0
RW5hYmxlZChib29sIGZsYWcpCit7CisgICAgaWYgKHNfcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9y
dEVuYWJsZWQgIT0gZmxhZykgeworICAgICAgICBzX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRF
bmFibGVkID0gZmxhZzsKKyAgICAgICAgaWYgKGZsYWcpCisgICAgICAgICAgICByZWdpc3Rlck9j
Y2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHVucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycygpOworICAgIH0KK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkM2ZiYjE0NDIyYzFlYmQ5NWM4NzM0YjhjYjE3
MjUxY2M0YWU4OWQ3Li4wYWE1MWI1YjgxMzJjZjE4ZTE2N2RjYjI2NmJjODUyZTg4N2QyNzViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC01MzEsNiArNTMxLDExIEBACiAJCTkzRkM2N0JFMTJEM0NDRjIwMEE2MDYxMCAvKiBEZWNv
ZGVyQWRhcHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNGQzY3OUUxMkQzQ0M3NDAwQTYwNjEwIC8qIERlY29kZXJBZGFwdGVyLmggKi87IH07CiAJ
CTkzRkM2N0JGMTJEM0NDRjIwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZDNjc5RjEyRDNDQzc0MDBB
NjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuY3BwICovOyB9OwogCQk5M0ZDNjdDMDEyRDNDQ0YyMDBB
NjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRkM2N0EwMTJEM0NDNzQwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRl
ci5oICovOyB9OworCQk5RjU0Rjg4MDE2NDIwOTkzMDA3REY4MUEgLyogV0tDb250ZXh0UHJpdmF0
ZU1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
RjU0Rjg3RTE2NDIwOTkzMDA3REY4MUEgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAgKi87IH07
CisJCTlGNTRGODgxMTY0MjA5OTMwMDdERjgxQSAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjU0Rjg3RjE2NDIw
OTkzMDA3REY4MUEgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTlGNTRGODg2MTY0NDk2NDkwMDdERjgxQSAv
KiBQcm9jZXNzVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5RjU0Rjg4NDE2NDQ5NjQ3MDA3REY4MUEgLyogUHJvY2Vzc1V0aWxpdGllcy5o
ICovOyB9OworCQk5RjU0Rjg4NzE2NDQ5NjQ5MDA3REY4MUEgLyogUHJvY2Vzc1V0aWxpdGllcy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNTRGODg1
MTY0NDk2NDgwMDdERjgxQSAvKiBQcm9jZXNzVXRpbGl0aWVzLm1tICovOyB9OworCQk5RjU0Rjg4
OTE2NDQ5NzBDMDA3REY4MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY1NEY4ODgxNjQ0OTcwQzAwN0RGODFBIC8q
IENoaWxkUHJvY2Vzc01hYy5tbSAqLzsgfTsKIAkJQjYyRTczMTAxNDMwNDdBNjAwNjlFQzM1IC8q
IFdLSGl0VGVzdFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCNjJFNzMwRjE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNw
cCAqLzsgfTsKIAkJQjYyRTczMTIxNDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjYyRTczMTEx
NDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUI2MzQwM0Y5MTQ5MTBENTcwMDEwNzBCNSAv
KiBBUElPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjYzNDAzRjgxNDkxMEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5jcHAgKi87IH07CkBA
IC0xNzM4LDYgKzE3NDMsMTEgQEAKIAkJOTNGQzY3OUUxMkQzQ0M3NDAwQTYwNjEwIC8qIERlY29k
ZXJBZGFwdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlY29kZXJBZGFw
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRkM2NzlGMTJEM0NDNzQwMEE2
MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBFbmNvZGVyQWRhcHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzRkM2N0EwMTJEM0NDNzQwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBFbmNvZGVyQWRhcHRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5RjU0Rjg3RTE2NDIwOTkzMDA3REY4MUEgLyogV0tDb250ZXh0UHJpdmF0
ZU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXS0NvbnRleHRQ
cml2YXRlTWFjLmNwcDsgcGF0aCA9IG1hYy9XS0NvbnRleHRQcml2YXRlTWFjLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUY1NEY4N0YxNjQyMDk5MzAwN0RGODFBIC8qIFdLQ29u
dGV4dFByaXZhdGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tDb250
ZXh0UHJpdmF0ZU1hYy5oOyBwYXRoID0gbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUY1NEY4ODQxNjQ0OTY0NzAwN0RGODFBIC8qIFByb2Nl
c3NVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc1V0
aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5RjU0Rjg4NTE2NDQ5NjQ4
MDA3REY4MUEgLyogUHJvY2Vzc1V0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFByb2Nlc3NVdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTlGNTRGODg4MTY0NDk3MEMwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MkQ1RDdGMTIzNkNCQTgwMEE4OEIx
NSAvKiBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIzOTZFQTU1MTJFMEVEMkQwMEY0RkVCNyAvKiBjb25maWcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUI2MkU3MzBGMTQzMDQ3QTYwMDY5RUMzNSAvKiBXS0hpdFRlc3RSZXN1bHQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tIaXRUZXN0UmVzdWx0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2MjksNiArMjYzOSw4IEBACiAJCQkJQzBF
M0FBNDgxMjA5RTQ1MDAwQTQ5RDAxIC8qIE1vZHVsZU1hYy5tbSAqLywKIAkJCQlCQ0UwOTM3NTE0
RkIxMjhCMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5tbSAqLywKIAkJCQlCQ0UwOTM3
NjE0RkIxMjhCMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5oICovLAorCQkJCTlGNTRG
ODg0MTY0NDk2NDcwMDdERjgxQSAvKiBQcm9jZXNzVXRpbGl0aWVzLmggKi8sCisJCQkJOUY1NEY4
ODUxNjQ0OTY0ODAwN0RGODFBIC8qIFByb2Nlc3NVdGlsaXRpZXMubW0gKi8sCiAJCQkJMUEyNEJG
MzkxMjA4OTZBNjAwRkJCMDU5IC8qIFNoYXJlZE1lbW9yeU1hYy5jcHAgKi8sCiAJCQkJMjk2QkQ4
NUIxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oICovLAogCQkJCTI5NkJEODVD
MTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi8sCkBAIC0zMTY0LDYgKzMx
NzYsOCBAQAogCQk2RUU4NDlDNDEzNjhEOTA0MDAzOEQ0ODEgLyogbWFjICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5RjU0Rjg3RTE2NDIwOTkzMDA3REY4
MUEgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAgKi8sCisJCQkJOUY1NEY4N0YxNjQyMDk5MzAw
N0RGODFBIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLywKIAkJCQk2RUU4NDlDNjEzNjhEOTJE
MDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggKi8sCiAJCQkJQkNFMTdCN0IxMzgx
RjExNzAwMTJBNjQxIC8qIFdLUGFnZVByaXZhdGVNYWMuY3BwICovLAogCQkJCUJDRTE3QjdDMTM4
MUYxMTcwMDEyQTY0MSAvKiBXS1BhZ2VQcml2YXRlTWFjLmggKi8sCkBAIC0zNjMwLDYgKzM2NDQs
NyBAQAogCQkJCUUxNzlGRDlFMTM0RDM4MjUwMDE1Qjg4MyAvKiBBcmd1bWVudENvZGVyc01hYy5t
bSAqLywKIAkJCQlFMUEzMTczMTEzNENFQTZDMDA3QzlBNEYgLyogQXR0cmlidXRlZFN0cmluZy5o
ICovLAogCQkJCUUxQTMxNzM0MTM0Q0VBODAwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLm1t
ICovLAorCQkJCTlGNTRGODg4MTY0NDk3MEMwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0g
Ki8sCiAJCQkJMUEyQTRBRkUxNTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLmggKi8s
CiAJCQkJMUEyQTRBRkQxNTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLm1tICovLAog
CQkJCTFBNkY5RkI2MTFFMTQwODUwMERCMTM3MSAvKiBDb21tYW5kTGluZU1hYy5jcHAgKi8sCkBA
IC00ODEwLDYgKzQ4MjUsOCBAQAogCQkJCTUxN0NGMEUwMTYzQTQ0NEMwMEMyOTUwRSAvKiBOZXR3
b3JrUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3Q0YwRTQxNjNBNDg2QzAwQzI5NTBF
IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMUI3ODQ3MTE2M0YyNDY5MDAwN0I2OTIgLyogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCBp
biBIZWFkZXJzICovLAorCQkJCTlGNTRGODgxMTY0MjA5OTMwMDdERjgxQSAvKiBXS0NvbnRleHRQ
cml2YXRlTWFjLmggaW4gSGVhZGVycyAqLywKKwkJCQk5RjU0Rjg4NjE2NDQ5NjQ5MDA3REY4MUEg
LyogUHJvY2Vzc1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC01NzQwLDYgKzU3NTcsOSBA
QAogCQkJCTJEMkFERjA5MTYzNjJERDUwMDE5N0U0NyAvKiBQREZQbHVnaW5UZXh0QW5ub3RhdGlv
bi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEMkFERjBCMTYzNjJEREIwMDE5N0U0NyAvKiBQREZQ
bHVnaW5Bbm5vdGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQyQURGMTAxNjM2NEQ4MjAw
MTk3RTQ3IC8qIFBERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0gaW4gU291cmNlcyAqLywKKwkJ
CQk5RjU0Rjg4MDE2NDIwOTkzMDA3REY4MUEgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk5RjU0Rjg4NzE2NDQ5NjQ5MDA3REY4MUEgLyogUHJvY2Vzc1V0aWxp
dGllcy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTlGNTRGODg5MTY0NDk3MEMwMDdERjgxQSAvKiBD
aGlsZFByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyY2MxZTYyODA0NjMyODEzMTE0
MDU4ZmFjYmVhMTUwMDU3MzVjYzI0Li4yYzFiNDMwNTIzNjRkMzZmYjYyYTZlZDdlOWJjMmFmNGMz
ZDgwNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC05Nyw0ICs5Nyw4IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgewogICAg
IFNlY0l0ZW1SZXNwb25zZSh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYktpdDo6U2VjSXRlbVJlc3Bv
bnNlRGF0YSByZXNwb25zZSkgRGlzcGF0Y2hPbkNvbm5lY3Rpb25RdWV1ZQogICAgIFNlY0tleWNo
YWluSXRlbVJlc3BvbnNlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0OjpTZWNLZXljaGFpbkl0
ZW1SZXNwb25zZURhdGEgcmVzcG9uc2UpIERpc3BhdGNoT25Db25uZWN0aW9uUXVldWUKICNlbmRp
ZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29s
IGZsYWcpOworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW0KaW5kZXggMmFmNTk0OGZkOWUxNzdh
NDUwZDg2OTYxZGZmNTk2ZTg1NzAxMjY4Yy4uYTMzMjdjNWJkMzU1MTI4M2Y4NDliNDM2ZmVmNTg2
NDc5NDllMDNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2Vi
UHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
bWFjL1dlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24uaCIKIAorI2lt
cG9ydCAiUHJvY2Vzc1V0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2ltcG9y
dCAiV2ViU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1J1bkxvb3AuaD4KQEAg
LTQ2LDkgKzQ3LDcgQEAgdm9pZCBJbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBTdHJpbmcmIGNs
aWVudElkZW50aWZpZXIsIENvcmVJUEM6OkNvbm5lY3Rpb246OkkKICAgICBXVEY6OmluaXRpYWxp
emVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAK
LSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLSAgICBbW05TUHJv
Y2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRpc2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjpAIkRpc2Fi
bGUgV2ViUHJvY2VzcyBBdXRvIFRlcm1pbmF0aW9uIl07Ci0jZW5kaWYKKyAgICBkaXNhYmxlUHJv
Y2Vzc1N1cHByZXNzaW9uKEAiV2ViUHJvY2VzcyBMYXVuY2giKTsKIAogICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLmluaXRpYWxpemVTaGltKCk7CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5p
dGlhbGl6ZVNhbmRib3goY2xpZW50SWRlbnRpZmllcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172410</attachid>
            <date>2012-11-05 14:35:12 -0800</date>
            <delta_ts>2012-11-05 16:26:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100997-20121105143326.patch</filename>
            <type>text/plain</type>
            <size>50045</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTllYzc2MzFiYzhkODhk
OWRkZWM0YWU1YjZjYTYwMzdkMDA4YjFmYS4uMDc4ODYwOGJjODcwNTE5YWZiYmRlNGExYjQ4NWY4
ZDY1NWZmM2MxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxMi0xMS0wNSAgS2ly
YW4gTXVwcGFsYSAgPGNtdXBwYWxhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYXBwbGljYXRp
b24gb2NjbHVzaW9uIGNyaXRlcmlvbiB0byBlbmFibGUvZGlzYWJsZSBwcm9jZXNzIHN1cHByZXNz
aW9uIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAwOTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUHJvdmlkZSBzdXBwb3J0IGZvciBlbmFibGluZyBhbmQgZGlzYWJsaW5nIHByb2Nlc3Mgc3Vw
cHJlc3Npb24gd2hlbiBhcHBsaWNhdGlvbiBpcyBjb21wbGV0ZWx5IG9jY2x1ZGVkIG9uIE1hYy4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46IEFkZGVkIG1lc3NhZ2UgdG8gdXBkYXRlIGFw
cGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFj
L05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NNYWluKTogUmVwbGFjZWQgZGlyZWN0IGNhbGwgdG8gdGFrZSBhc3NlcnRpb24gd2l0aCBhIGNh
bGwgdG8KKyAgICAgICAgYW4gZXF1aXZhbGVudCwgc2ltcGxlciB0byB1c2UsIGhlbHBlciBtZXRo
b2QuCisgICAgICAgICogUGxhdGZvcm0vUHJvY2Vzc1V0aWxpdGllcy5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdCk6IEFkZGVkIGhlbHBlciBtZXRob2RzIHRvIHRha2UgYW5kIHJlbGVhc2UgYXNz
ZXJ0aW9uIGZvciBwcm9jZXNzIHN1cHByZXNzaW9uLgorICAgICAgICAqIFBsYXRmb3JtL21hYy9Q
cm9jZXNzVXRpbGl0aWVzTWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OmRpc2FibGVQcm9jZXNzU3VwcHJlc3Npb24pOgorICAgICAgICAoV2ViS2l0Ojpl
bmFibGVQcm9jZXNzU3VwcHJlc3Npb24pOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2lu
UHJvY2Vzcy5tZXNzYWdlcy5pbjogQWRkZWQgbWVzc2FnZSB0byB1cGRhdGUgYXBwbGljYXRpb24g
b2NjbHVzaW9uIHN0YXR1cy4KKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9j
ZXNzTWFpbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW4pOiBSZXBs
YWNlZCBkaXJlY3QgY2FsbCB0byB0YWtlIGFzc2VydGlvbiB3aXRoIGEgY2FsbCB0bworICAgICAg
ICBhbiBlcXVpdmFsZW50LCBzaW1wbGVyIHRvIHVzZSwgaGVscGVyIG1ldGhvZC4KKyAgICAgICAg
KiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNz
OjpDaGlsZFByb2Nlc3MpOiBJbml0aWFsaXplIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMg
dG8gZmFsc2UuCisgICAgICAgICogU2hhcmVkL0NoaWxkUHJvY2Vzcy5oOgorICAgICAgICAoQ2hp
bGRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjphcHBsaWNhdGlvbklz
T2NjbHVkZWQpOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6c2V0
QXBwbGljYXRpb25Jc09jY2x1ZGVkKToKKyAgICAgICAgQWRkZWQgZ2V0dGVyIGFuZCBzZXR0ZXIg
Zm9yIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMuCisgICAgICAgICogU2hhcmVkV29ya2Vy
UHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLm1lc3NhZ2VzLmluOiBBZGRlZCBtZXNzYWdlIHRv
IHVwZGF0ZSBhcHBsaWNhdGlvbiBvY2NsdXNpb24gc3RhdHVzLgorICAgICAgICAqIFNoYXJlZFdv
cmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbik6IFJlcGxhY2VkIGRpcmVjdCBjYWxsIHRv
IHRha2UgYXNzZXJ0aW9uIHdpdGggYSBjYWxsIHRvCisgICAgICAgIGFuIGVxdWl2YWxlbnQsIHNp
bXBsZXIgdG8gdXNlLCBoZWxwZXIgbWV0aG9kLgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0
UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgIEFkZGVkIHByaXZhdGUgQVBJIHRvIGVu
YWJsZSBwcm9jZXNzIHN1cHByZXNzaW9uIHN1cHBvcnQuCisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoTmV0d29ya1Byb2Nlc3NNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NNYW5hZ2VyOjpzZW5kVG9Qcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKTogVXBkYXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBz
dGF0dXMgcG9zdCBsYXVuY2guCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojppc1Zh
bGlkKToKKyAgICAgICAgKE5ldHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZCk6CisgICAgICAgICog
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaDoKKyAgICAgICAgKFBsdWdp
blByb2Nlc3NNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6
OnNlbmRUb0FsbFZhbGlkUHJvY2Vzc2VzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICog
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOiBVcGRhdGUgYXBwbGlj
YXRpb24gb2NjbHVzaW9uIHN0YXR1cyBwb3N0IGxhdW5jaC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJv
Y2Vzc1Byb3h5Ojppc1ZhbGlkKToKKyAgICAgICAgKFBsdWdpblByb2Nlc3NQcm94eSk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnNlbmQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NN
YW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoU2hhcmVkV29ya2VyUHJvY2Vz
c01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcjo6
c2VuZFRvQWxsVmFsaWRQcm9jZXNzZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKTogVXBkYXRlIGFwcGxpY2F0
aW9uIG9jY2x1c2lvbiBzdGF0dXMgcG9zdCBsYXVuY2guCisgICAgICAgICogVUlQcm9jZXNzL1No
YXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6aXNWYWxpZCk6CisgICAgICAgIChTaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6U2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpzZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnByb2Nlc3NTdXBwcmVzc2lv
blN1cHBvcnRFbmFibGVkKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6OnNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKToKKyAgICAgICAg
QWRkZWQgZ2V0dGVyIGFuZCBzZXR0ZXIgZm9yIHByb2Nlc3Mgc3VwcHJlc3Npb24gc3VwcG9ydCBl
bmFibGVkIHN0YXR1cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0OjphcHBsaWNhdGlvbklzT2NjbHVkZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZXh0OjpzZW5kVG9BbGxWYWxpZFByb2Nlc3Nlcyk6CisgICAgICAgIChX
ZWJDb250ZXh0KToKKyAgICAgICAgQWRkZWQgZ2V0dGVyIGZvciBhcHBsaWNhdGlvbiBvY2NsdXNp
b24gc3RhdHVzIGFuZCBoZWxwZXIgbWV0aG9kIHRvIHNlbmQgYSBtZXNzYWdlIHRvIGFsbCB3ZWIg
cHJvY2Vzc2VzCisgICAgICAgIHRoYXQgaGF2ZSBhIGNvbm5lY3Rpb24gZXN0YWJsaXNoZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKTogVXBkYXRlIGFwcGxpY2F0aW9u
IG9jY2x1c2lvbiBzdGF0dXMgcG9zdCBsYXVuY2guCisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
ZWJDb250ZXh0TWFjLm1tOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dDo6YXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dDo6YXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCk6CisgICAgICAgIEFkZGVkIG5vdGlm
aWNhdGlvbiBoYW5kbGVycyB0byBub3RpZnkgbm9uIFVJIFdlYktpdDIgcHJvY2Vzc2VzIG9mIHRo
ZSBjaGFuZ2UgaW4gYXBwbGljYXRpb24gb2NjbHVzaW9uIHN0YXR1cy4KKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6cmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnVucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRp
b25IYW5kbGVycyk6CisgICAgICAgIEhlbHBlciBmdW5jdGlvbnMgdG8gcmVnaXN0ZXIgYW5kIHVu
cmVnaXN0ZXIgYXBwbGljYXRpb24gb2NjbHVzaW9uIG5vdGlmaWNhdGlvbiBoYW5kbGVycy4KKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJs
ZWRDaGFuZ2VkKTogSGVscGVyIG1ldGhvZCB0byByZWdpc3RlciBvciB1bnJlZ2lzdGVyIG9jY2x1
c2lvbgorICAgICAgICBub3RpZmljYXRpb24gaGFuZGxlcnMgYWNjb3JkaW5nIHRvIHRoZSB2YWx1
ZSBvZiBwcm9jZXNzIHN1cHByZXNzaW9uIHN1cHBvcnQgZW5hYmxlZC4KKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluOiBBZGRlZCBtZXNzYWdlIHRvIHVwZGF0ZSBhcHBsaWNhdGlvbiBv
Y2NsdXNpb24gc3RhdHVzLgorICAgICAgICAqIFdlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NJbml0
aWFsaXphdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6SW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBS
ZXBsYWNlZCBkaXJlY3QgY2FsbCB0byB0YWtlIGFzc2VydGlvbiB3aXRoIGEgY2FsbCB0bworICAg
ICAgICBhbiBlcXVpdmFsZW50LCBzaW1wbGVyIHRvIHVzZSwgaGVscGVyIG1ldGhvZC4KKyAgICAg
ICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisKIDIwMTItMTEtMDUgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0IHJpZCBvZiBzZXRDb29raWVTdG9yYWdl
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDlkNDdiNzY4ZGIzZjYyZWFlZDBjZTdmMDZjMDA1N2Q5YzdkMDg0MTAuLmZhNmFhNDFlOTYwOGU5
MzE0M2Y0ZjM0NmI0NGFiZTZkMzM1OWFiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtMjc4LDYgKzI3OCw3IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vTW9kdWxlLmNwcCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vTW9kdWxl
LmggXAogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIu
aCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUHJvY2Vzc1V0aWxpdGllcy5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBcCiAJU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vV29ya1F1ZXVlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDAyOTUzNmEzNDEyMDVlNDI0
NWMyYTgyNjVhZDdjMWE4ZjI4MjkzNWYuLmQyNDNiZDQ0ZjYwMDYzNGJkZDIyNTBjMzQ3MTdiMTc1
ZWIxM2IzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yOCw2ICsyOCwxMCBAQCBtZXNzYWdlcyAt
PiBOZXR3b3JrUHJvY2VzcyB7CiAKICAgICAjIENyZWF0ZXMgYSBjb25uZWN0aW9uIGZvciBjb21t
dW5pY2F0aW9uIHdpdGggYSBXZWJQcm9jZXNzCiAgICAgQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoKQorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFNldEFwcGxpY2F0aW9uSXNP
Y2NsdWRlZChib29sIGZsYWcpCisjZW5kaWYKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMv
TmV0d29ya1Byb2Nlc3NNYWluTWFjLm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
bWFjL05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbQppbmRleCAxMzM2MzhhNjIzNGU3MTExMGQ5ZmU3
NDg2NmE3ZjcwYTEwNzcyNjA0Li40ZjE4NDM0MzhjYTJlMzNhZmQ3YmU3MzFmYTgxZTRlMTNhZmQ1
OTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29y
a1Byb2Nlc3NNYWluTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21h
Yy9OZXR3b3JrUHJvY2Vzc01haW5NYWMubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIkNv
bW1hbmRMaW5lLmgiCiAjaW1wb3J0ICJFbnZpcm9ubWVudFV0aWxpdGllcy5oIgogI2ltcG9ydCAi
TmV0d29ya1Byb2Nlc3MuaCIKKyNpbXBvcnQgIlByb2Nlc3NVdGlsaXRpZXMuaCIKICNpbXBvcnQg
PFdlYkNvcmUvUnVuTG9vcC5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAj
aW1wb3J0IDxXZWJTeXN0ZW1JbnRlcmZhY2UuaD4KQEAgLTg0LDkgKzg1LDcgQEAgaW50IE5ldHdv
cmtQcm9jZXNzTWFpbihjb25zdCBDb21tYW5kTGluZSYgY29tbWFuZExpbmUpCiAgICAgV1RGOjpp
bml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9v
cCgpOwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi0gICAg
W1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBkaXNhYmxlQXV0b21hdGljVGVybWluYXRpb246
QCJEaXNhYmxlIE5ldHdvcmtQcm9jZXNzIEF1dG8gVGVybWluYXRpb24iXTsKLSNlbmRpZgorICAg
IGRpc2FibGVQcm9jZXNzU3VwcHJlc3Npb24oQCJOZXR3b3JrUHJvY2VzcyBMYXVuY2giKTsKIAog
ICAgIC8vIEluaXRpYWxpemUgdGhlIG5ldHdvcmsgcHJvY2VzcyBjb25uZWN0aW9uLgogICAgIE5l
dHdvcmtQcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplKENvcmVJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIoc2VydmVyUG9ydCksIFJ1bkxvb3A6Om1haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Qcm9jZXNzVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Qcm9jZXNzVXRpbGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA4YjNkMDcwMjM2N2NkNjcw
MjM0MWU0YzVkNTk3OWJkMTYzOTY0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL1Byb2Nlc3NVdGlsaXRpZXMuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBQcm9jZXNzVXRpbGl0aWVzX2gKKyNkZWZpbmUgUHJvY2Vzc1V0aWxpdGllc19o
CisKKyNpZiBQTEFURk9STShNQUMpCitPQkpDX0NMQVNTIE5TU3RyaW5nOworI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCisjaWYgUExBVEZPUk0oTUFDKQordm9pZCBkaXNhYmxlUHJvY2Vz
c1N1cHByZXNzaW9uKE5TU3RyaW5nICpyZWFzb24pOwordm9pZCBlbmFibGVQcm9jZXNzU3VwcHJl
c3Npb24oTlNTdHJpbmcgKnJlYXNvbik7CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBQcm9jZXNzVXRpbGl0aWVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL21hYy9Qcm9jZXNzVXRpbGl0aWVzTWFjLm1tIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vbWFjL1Byb2Nlc3NVdGlsaXRpZXNNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGIwNzNjMTE4
ZTY3MWUwOGE1YjA5MmNjMTJkMmM1NTFjN2ExZjFlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Qcm9jZXNzVXRpbGl0aWVzTWFjLm1tCkBAIC0wLDAgKzEs
NDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlByb2Nlc3NV
dGlsaXRpZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgZGlzYWJsZVByb2Nlc3NT
dXBwcmVzc2lvbihOU1N0cmluZyAqcmVhc29uKQoreworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIC8vIFRoZSBmb2xsb3dpbmcgY2FsbCBhc3N1bWVzIHRo
YXQgQXV0b1Rlcm1pbmF0aW9uU3VwcG9ydCBpcyBub3QgZW5hYmxlZCBmb3IgQ2hpbGRQcm9jZXNz
ZXMuCisgICAgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBkaXNhYmxlQXV0b21hdGljVGVy
bWluYXRpb246cmVhc29uXTsKKyNlbmRpZgorfQorCit2b2lkIGVuYWJsZVByb2Nlc3NTdXBwcmVz
c2lvbihOU1N0cmluZyAqcmVhc29uKQoreworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA5MAorICAgIC8vIFRoZSBmb2xsb3dpbmcgY2FsbCBhc3N1bWVzIHRoYXQgQXV0
b1Rlcm1pbmF0aW9uU3VwcG9ydCBpcyBub3QgZW5hYmxlZCBmb3IgQ2hpbGRQcm9jZXNzZXMuCisg
ICAgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBlbmFibGVBdXRvbWF0aWNUZXJtaW5hdGlv
bjpyZWFzb25dOworI2VuZGlmCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlNGVmNDUwNzI0YmEw
YTVlYzAxMzkyNjU3MGVmMjQ1OWM0YzdkNDYzLi40MTIyNmIxNGQ1M2UzNzEwNmY1NDFiZDFkYWE1
M2VhODhjYWRjYzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1Bs
dWdpblByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Qcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zOCw2ICszOCwxMCBAQCBtZXNzYWdlcyAt
PiBQbHVnaW5Qcm9jZXNzIHsKICAgICAjIEFza3MgdGhlIHBsdWctaW4gdG8gY2xlYXIgZGF0YSBm
b3IgdGhlIGdpdmVuIHNpdGVzLiBUaGUgcGx1Zy1pbiBwcm9jZXNzIHNlbmRzIGJhY2sKICAgICAj
IGEgRGlkQ2xlYXJTaXRlRGF0YSBtZXNzYWdlIHdoZW4gZG9uZS4KICAgICBDbGVhclNpdGVEYXRh
KFZlY3RvcjxXVEY6OlN0cmluZz4gc2l0ZXMsIHVpbnQ2NF90IGZsYWdzLCB1aW50NjRfdCBtYXhB
Z2VJblNlY29uZHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgU2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wgZmxhZyk7CisjZW5kaWYKIH0KIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Q
cm9jZXNzTWFpbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdp
blByb2Nlc3NNYWluTWFjLm1tCmluZGV4IDkxMmIxYzRmYjViYmYyNDVjMWViZmFkYjk0NzIwMDg5
YWUyYTFkYTAuLmM4N2FkMTQwZWM3ZDZjYTVlM2NhNWU2OGVjMWYyMTdiOGU1YzEzYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWlu
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nl
c3NNYWluTWFjLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJFbnZpcm9ubWVudFV0aWxp
dGllcy5oIgogI2ltcG9ydCAiTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIKICNpbXBvcnQgIlBsdWdp
blByb2Nlc3MuaCIKKyNpbXBvcnQgIlByb2Nlc3NVdGlsaXRpZXMuaCIKICNpbXBvcnQgPEZvdW5k
YXRpb24vTlNVc2VyRGVmYXVsdHMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVuTG9vcC5oPgogI2lt
cG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CkBAIC0xMTcsOSArMTE4LDcgQEAgaW50IFBs
dWdpblByb2Nlc3NNYWluKGNvbnN0IENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkKICAgICBXVEY6
OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5M
b29wKCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLSAg
ICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRpc2FibGVBdXRvbWF0aWNUZXJtaW5hdGlv
bjpAIkRpc2FibGUgUGx1Z2luUHJvY2VzcyBBdXRvIFRlcm1pbmF0aW9uIl07Ci0jZW5kaWYKKyAg
ICBkaXNhYmxlUHJvY2Vzc1N1cHByZXNzaW9uKEAiUGx1Z2luUHJvY2VzcyBMYXVuY2giKTsKIAog
I2lmIGRlZmluZWQoX19pMzg2X18pCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgc2hpbSBmb3IgMzIt
Yml0IG9ubHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCmluZGV4IGI2NWVl
YmUyY2U0MjU1NzU0YTM0NzE3NWY4NjU5YWNiODNmNTMxMWUuLjI4Y2Q5ZTg4MzgyYTQ0ODJmNDA0
NjRkZmUwNjViM2E3MmI2YzViODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
aGlsZFByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3Mu
Y3BwCkBAIC02MCw2ICs2MCw5IEBAIENoaWxkUHJvY2Vzczo6Q2hpbGRQcm9jZXNzKCkKICAgICA6
IG1fdGVybWluYXRpb25UaW1lb3V0KDApCiAgICAgLCBtX3Rlcm1pbmF0aW9uQ291bnRlcigwKQog
ICAgICwgbV90ZXJtaW5hdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNoaWxkUHJv
Y2Vzczo6dGVybWluYXRpb25UaW1lckZpcmVkKQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1f
YXBwbGljYXRpb25Jc09jY2x1ZGVkKGZhbHNlKQorI2VuZGlmCiB7CiAgICAgLy8gRklYTUU6IFRo
ZSB0ZXJtaW5hdGlvbiB0aW1lciBzaG91bGQgbm90IGJlIHNjaGVkdWxlZCBvbiB0aGUgbWFpbiBy
dW4gbG9vcC4KICAgICAvLyBJdCB3b24ndCB3b3JrIHdpdGggdGhlIHRocmVhZGVkIG1vZGUsIGJ1
dCBpdCdzIG5vdCByZWFsbHkgdXNlZnVsIGFueXdheSBhcyBpcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
aGlsZFByb2Nlc3MuaAppbmRleCA5ZWMxYTUwZDk5MmY4MDFjZTY3NDRjMGE4NDUyOGZiMmYxZGI3
OWI0Li44YWU1MWJmYzA3NjA1NTc3NTM0YWMyZDBmNWViYzg2NWM4ZDgzMjA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oCkBAIC01Nyw2ICs1NywxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIENoaWxkUHJvY2VzcyYgbV9jaGlsZFByb2Nlc3M7CiAgICAgfTsKIAorI2lmIFBMQVRGT1JN
KE1BQykKKyAgICBib29sIGFwcGxpY2F0aW9uSXNPY2NsdWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
YXBwbGljYXRpb25Jc09jY2x1ZGVkOyB9CisgICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzT2NjbHVk
ZWQoYm9vbCBmbGFnKTsKKyNlbmRpZgorCiAgICAgc3RhdGljIHZvaWQgZGlkQ2xvc2VPbkNvbm5l
Y3Rpb25Xb3JrUXVldWUoV29ya1F1ZXVlJiwgQ29yZUlQQzo6Q29ubmVjdGlvbiopOwogCiBwcm90
ZWN0ZWQ6CkBAIC04MCw2ICs4NSwxMCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fdGVybWlu
YXRpb25Db3VudGVyOwogCiAgICAgV2ViQ29yZTo6UnVuTG9vcDo6VGltZXI8Q2hpbGRQcm9jZXNz
PiBtX3Rlcm1pbmF0aW9uVGltZXI7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgYm9vbCBtX2Fw
cGxpY2F0aW9uSXNPY2NsdWRlZDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE5ZTRiNzAwNzQxOWFiNTQxM2VhY2QwYTkzOTRiYzg0Y2JlNDgzOTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQpAQCAt
MCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJD
aGlsZFByb2Nlc3MuaCIKKworI2ltcG9ydCAiUHJvY2Vzc1V0aWxpdGllcy5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordm9pZCBDaGlsZFByb2Nlc3M6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRl
ZChib29sIGZsYWcpCit7CisgICAgaWYgKG1fYXBwbGljYXRpb25Jc09jY2x1ZGVkID09IGZsYWcp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fYXBwbGljYXRpb25Jc09jY2x1ZGVkID0gZmxhZzsK
KyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICBpZiAobV9h
cHBsaWNhdGlvbklzT2NjbHVkZWQpCisgICAgICAgIGVuYWJsZVByb2Nlc3NTdXBwcmVzc2lvbihA
IkFwcGxpY2F0aW9uIGJlY2FtZSBvY2NsdWRlZCIpOworICAgIGVsc2UKKyAgICAgICAgZGlzYWJs
ZVByb2Nlc3NTdXBwcmVzc2lvbihAIkFwcGxpY2F0aW9uIGJlY2FtZSB2aXNpYmxlIik7CisjZW5k
aWYKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vz
cy9TaGFyZWRXb3JrZXJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
V29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDNjZDc1
MzM3YjdmZWU4NDY5YjA5NGU4MTQ4ZWE1NWMzNjkyNDk4OWEuLjc4OWJiYjMxODE0YzRlMTRjODNh
ZTZjYTIwZjEwNWY2NDZkNGJjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdv
cmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTMwLDYgKzMwLDEwIEBAIG1lc3NhZ2VzIC0+IFNoYXJlZFdvcmtlclByb2Nlc3Mgewog
ICAgICMgVGhlIHNoYXJlZCB3b3JrZXIgcHJvY2VzcyBzZW5kcyBiYWNrIGEgRGlkQ3JlYXRlV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24gbWVzc2FnZSB3aXRoCiAgICAgIyBhIGNvbm5lY3Rpb24gaWRlbnRp
Zmllci4KICAgICBDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbigpCisKKyNpZiBQTEFURk9STShN
QUMpCisgICAgU2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wgZmxhZykKKyNlbmRpZgogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NN
YWluTWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVk
V29ya2VyUHJvY2Vzc01haW5NYWMubW0KaW5kZXggMzBmOGE3NDk2NGQ2ZDFjYzI4NzlmMzE5N2M1
NDViYTZjMDU5NWFkYi4uNWZmODZkNmE2OThlNjQyZWU5M2JhNzU1YjY5NDA1ZDFiMGRjNDBkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVk
V29ya2VyUHJvY2Vzc01haW5NYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2Vy
UHJvY2Vzcy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW0KQEAgLTMwLDYgKzMwLDcg
QEAKIAogI2ltcG9ydCAiQ29tbWFuZExpbmUuaCIKICNpbXBvcnQgIkVudmlyb25tZW50VXRpbGl0
aWVzLmgiCisjaW1wb3J0ICJQcm9jZXNzVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJTaGFyZWRXb3Jr
ZXJQcm9jZXNzLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVXNlckRlZmF1bHRzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1J1bkxvb3AuaD4KQEAgLTk2LDkgKzk3LDcgQEAgaW50IFNoYXJlZFdvcmtl
clByb2Nlc3NNYWluKGNvbnN0IENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkKICAgICBXVEY6Omlu
aXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29w
KCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLSAgICBb
W05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRpc2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjpA
IkRpc2FibGUgU2hhcmVkV29ya2VyUHJvY2VzcyBBdXRvIFRlcm1pbmF0aW9uIl07Ci0jZW5kaWYK
KyAgICBkaXNhYmxlUHJvY2Vzc1N1cHByZXNzaW9uKEAiU2hhcmVkV29ya2VyUHJvY2VzcyBMYXVu
Y2giKTsKIAogICAgIC8vIEluaXRpYWxpemUgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2VzcyBjb25u
ZWN0aW9uLgogICAgIFNoYXJlZFdvcmtlclByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUoQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihzZXJ2ZXJQb3J0KSwgUnVuTG9vcDo6bWFpbigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0
Mi9UYXJnZXQucHJpCmluZGV4IGFhMjM3NDhkMjdmNDk3NWU2ZmY4ODc0NGFlZWUxNTI0Y2VhMjky
MWQuLjkxY2E4OTA1ZWZjNmE4NGJlNDcxNjFlYTI3ZTEzMWRmZGI2NjM5ZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnBy
aQpAQCAtMzUsNiArMzUsNyBAQCBIRUFERVJTICs9IFwKICAgICBQbGF0Zm9ybS9Mb2dnaW5nLmgg
XAogICAgIFBsYXRmb3JtL01vZHVsZS5oIFwKICAgICBQbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJ
ZGVudGlmaWVyLmggXAorICAgIFBsYXRmb3JtL1Byb2Nlc3NVdGlsaXRpZXMuaCBcCiAgICAgUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmggXAogICAgIFBsYXRmb3JtL1dvcmtRdWV1ZS5oIFwKICAgICBQ
bHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggMTE3YmJlZGEzMTRkMWRiZTZiMGM2
NTU1YTFmZjI4MGNjNzU0MDIyNS4uYTA2MjM2OTFjOGZkZTcxZGY4NGE5N2I0YjQ2Y2UwMGM2ZTBh
Y2ViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAK
QEAgLTMyNiw2ICszMjYsMTEgQEAgdm9pZCBXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3Mo
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGJvb2wgdXNlc05ldHdvcmtQcm8KICAgICB0b0ltcGwo
Y29udGV4dFJlZiktPnNldFVzZXNOZXR3b3JrUHJvY2Vzcyh1c2VzTmV0d29ya1Byb2Nlc3MpOwog
fQogCit2b2lkIFdLQ29udGV4dFNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKGJv
b2wgZW5hYmxlKQoreworICAgIFdlYkNvbnRleHQ6OnNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBv
cnRFbmFibGVkKGVuYWJsZSk7Cit9CisKIC8vIERlcHJlY2F0ZWQgZnVuY3Rpb25zLgogdm9pZCBf
V0tDb250ZXh0U2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3RvcnkoV0tDb250ZXh0UmVmIGNvbnRl
eHQsIFdLU3RyaW5nUmVmIHBsdWdpbnNEaXJlY3RvcnkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAppbmRleCA3OWMyZWY1MGY4NTE3
ZThkY2FkM2RhOWQ3ZjJmYTBmY2RhMjM0ZTIwLi4wZTMzYTk1ZWIzZTM3MDE4NTEyM2UyNjM1OTQ3
YjJiZDNhMTlmNDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHRQcml2YXRlLmgKQEAgLTc2LDYgKzc2LDggQEAgV0tfRVhQT1JUIHZvaWQgV0tDb250
ZXh0V2FybUluaXRpYWxQcm9jZXNzKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIC8vIEF0IHNvbWUg
cG9pbnQgaXQgc2hvdWxkIGJlIHJlbW92ZWQuCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRV
c2VzTmV0d29ya1Byb2Nlc3MoV0tDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgdXNlc05ldHdvcmtQ
cm9jZXNzKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0UHJvY2Vzc1N1cHByZXNzaW9u
U3VwcG9ydEVuYWJsZWQoYm9vbCBlbmFibGUpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc01hbmFnZXIuaAppbmRleCBiOGI0NTM0Y2VmY2YzYmExNDYyYTdiMGMzNjVlOTBh
MWQ2MTdlNmRmLi5kZWMwYzA2ZmIwMjAzNWVlNjUzY2MwOWRlMzhmNTJlMzQ3OGFiZDZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc01h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc01hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQ
cm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTM2
LDcgKzM3LDYgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb247Ci1jbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1By
b3h5OwogCiBjbGFzcyBOZXR3b3JrUHJvY2Vzc01hbmFnZXIgewpAQCAtNTAsMTIgKzUwLDIxIEBA
IHB1YmxpYzoKICAgICAKICAgICB2b2lkIHJlbW92ZU5ldHdvcmtQcm9jZXNzUHJveHkoTmV0d29y
a1Byb2Nlc3NQcm94eSopOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kVG9Q
cm9jZXNzKGNvbnN0IFUmIG1lc3NhZ2UpOworCiBwcml2YXRlOgogICAgIE5ldHdvcmtQcm9jZXNz
TWFuYWdlcigpOwogCiAgICAgUmVmUHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IG1fbmV0d29ya1By
b2Nlc3M7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBOZXR3b3JrUHJv
Y2Vzc01hbmFnZXI6OnNlbmRUb1Byb2Nlc3MoY29uc3QgVSYgbWVzc2FnZSkKK3sKKyAgICBpZiAo
bV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQo
bWVzc2FnZSwgMCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IDI4OTM0NWE0NjU3Y2ExYWExOWNiMDMzMGJjZGJmOTIzYzNkZjk1ZGYuLjFmOWNlODllZDI0
MWJmMTE0MTBjYjQ4MzhjZjZhOWVkZGZjZThhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xNjIs
NiArMTYyLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5n
KFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3RpCiAgICAgICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCksIDApOwogICAgIAogICAgIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1
ZXN0cyA9IDA7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKFdlYkNvbnRleHQ6OmFwcGxp
Y2F0aW9uSXNPY2NsdWRlZCgpKQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSksIDApOworI2Vu
ZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDQ3Y2NiYWNi
ZjczMzRhNjdkNWE2MmIyZTcwMzY1MTdlZjI3MDc3MDcuLjI1NGM4OGQzMmY3MTI0NmZmNmFjZWQ4
MmJkNDI5OGZhY2ZjYmE0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTQ1LDYgKzQ1LDEwIEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk+KTsKIAorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVj
dGlvbjsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKGNvbnN0IFQmIG1l
c3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3Mg
PSAwKTsKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KE5ldHdvcmtQcm9jZXNz
TWFuYWdlciopOwogCkBAIC03Nyw2ICs4MSwxNyBAQCBwcml2YXRlOgogICAgIERlcXVlPFJlZlB0
cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseT4gPiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllczsKIH07CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+Citib29sIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmQoY29uc3QgVCYg
bWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFn
cykKK3sKKyAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3Rl
ZCk7CisgICAgCisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5zZW5kKG1lc3NhZ2UsIGRlc3RpbmF0aW9uSUQs
IG1lc3NhZ2VTZW5kRmxhZ3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlm
IC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaAppbmRleCAzNzgyNGM0YWEz
YjRkYWIxY2IyMTM4NzA2NjlkMjU5YzA4MGQ4NmUwLi4zZTg3NTRiZDNmZGRhZWFkODQyOGI0N2E0
YzYyNmVhMzUzM2Y0Y2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBF
TkFCTEUoUExVR0lOX1BST0NFU1MpCiAKICNpbmNsdWRlICJQbHVnaW5Nb2R1bGVJbmZvLmgiCisj
aW5jbHVkZSAiUGx1Z2luUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgpAQCAtNDEsNyArNDIsNiBAQCBuYW1lc3BhY2UgQ29yZUlQQyB7CiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgUGx1Z2luSW5mb1N0b3JlOwotY2xhc3MgUGx1Z2luUHJvY2Vz
c1Byb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2ViUGx1Z2luU2l0ZURhdGFN
YW5hZ2VyOwogCkBAIC01Niw2ICs1Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNpdGVzV2l0
aERhdGEoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIFdlYlBsdWdpblNpdGVEYXRhTWFuYWdlcios
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgY2xlYXJTaXRlRGF0YShjb25zdCBQbHVn
aW5Nb2R1bGVJbmZvJiwgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyKiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHNpdGVzLCB1aW50NjRfdCBmbGFncywgdWludDY0X3QgbWF4QWdlSW5TZWNvbmRzLCB1
aW50NjRfdCBjYWxsYmFja0lEKTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgc2Vu
ZFRvQWxsVmFsaWRQcm9jZXNzZXMoY29uc3QgVSYgbWVzc2FnZSk7CisKIHByaXZhdGU6CiAgICAg
UGx1Z2luUHJvY2Vzc01hbmFnZXIoKTsKIApAQCAtNjUsNiArNjcsMTggQEAgcHJpdmF0ZToKICAg
ICBWZWN0b3I8UmVmUHRyPFBsdWdpblByb2Nlc3NQcm94eT4gPiBtX3BsdWdpblByb2Nlc3NlczsK
IH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFU+CitpbmxpbmUgdm9pZCBQbHVnaW5Qcm9jZXNzTWFu
YWdlcjo6c2VuZFRvQWxsVmFsaWRQcm9jZXNzZXMoY29uc3QgVSYgbWVzc2FnZSkKK3sKKyAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPFBsdWdpblByb2Nlc3NQcm94eT4gPiYgcHJvY2Vzc2VzID0gbV9w
bHVnaW5Qcm9jZXNzZXM7CisgICAgc2l6ZV90IHByb2Nlc3NDb3VudCA9IHByb2Nlc3Nlcy5zaXpl
KCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9jZXNzQ291bnQ7ICsraSkgeworICAg
ICAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHByb2Nlc3MgPSBwcm9jZXNzZXNbaV0uZ2V0KCk7Cisg
ICAgICAgIGlmIChwcm9jZXNzLT5pc1ZhbGlkKCkpCisgICAgICAgICAgICBwcm9jZXNzLT5zZW5k
KG1lc3NhZ2UsIDApOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRp
ZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA4MTE5N2NlMzZj
NGIzYmQxNTI5NzEzYTk5MjBlN2Q3NGNjMjU2MjdiLi4wYzJlODY4OWU2NDg4NzY4MGU0MmExMzQ5
M2MwZjNlNTBlMGJiMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKQEAgLTIyOCw2ICsyMjgsMTEgQEAgdm9p
ZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIq
LCBDb3JlSVBDOjpDb25uZWN0aW8KICAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpQbHVnaW5Qcm9jZXNzOjpDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbigpLCAwKTsKICAgICAK
ICAgICBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMgPSAwOworCisjaWYgUExBVEZPUk0o
TUFDKQorICAgIGlmIChXZWJDb250ZXh0OjphcHBsaWNhdGlvbklzT2NjbHVkZWQoKSkKKyAgICAg
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzOjpTZXRBcHBsaWNh
dGlvbklzT2NjbHVkZWQodHJ1ZSksIDApOworI2VuZGlmCiB9CiAKIHZvaWQgUGx1Z2luUHJvY2Vz
c1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBDb3JlSVBDOjpBdHRh
Y2htZW50JiBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1Bs
dWdpbkluaXRpYWxpemF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAppbmRleCBmNzc1MDNkOGQ0MmQ5MGNiZWI4Y2Rh
NjRjOTc5ZGVkZGVlMmYyMGFhLi4wYjNmZTMyYzRkYjMxMTRlZDgwNTliYTAzZjhjZjQ5ZGU4ZDYz
MTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzUHJveHkuaApAQCAtNjcsNiArNjcsMTAgQEAgcHVibGljOgogCiAgICAgY29uc3Qg
UGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luSW5m
bzsgfQogCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoY29uc3QgVCYgbWVzc2FnZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncyA9IDApOwor
CiAgICAgLy8gQXNrcyB0aGUgcGx1Zy1pbiBwcm9jZXNzIHRvIGNyZWF0ZSBhIG5ldyBjb25uZWN0
aW9uIHRvIGEgd2ViIHByb2Nlc3MuIFRoZSBjb25uZWN0aW9uIGlkZW50aWZpZXIgd2lsbCBiZSAK
ICAgICAvLyBlbmNvZGVkIGluIHRoZSBnaXZlbiBhcmd1bWVudCBlbmNvZGVyIGFuZCBzZW50IGJh
Y2sgdG8gdGhlIGNvbm5lY3Rpb24gb2YgdGhlIGdpdmVuIHdlYiBwcm9jZXNzLgogICAgIHZvaWQg
Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7CkBAIC0x
NjksNiArMTczLDE3IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+Citib29sIFBsdWdpblByb2Nlc3NQcm94eTo6c2VuZChjb25zdCBUJiBtZXNzYWdlLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklELCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKQoreworICAgIENP
TVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKKworICAgIGlm
ICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9jb25u
ZWN0aW9uLT5zZW5kKG1lc3NhZ2UsIGRlc3RpbmF0aW9uSUQsIG1lc3NhZ2VTZW5kRmxhZ3MpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJP
Q0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJz
L1NoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
U2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oCmluZGV4IGJhMDZjN2Ni
YjgwOTgyNDM0NGNlNzljYzQ5YWI0MWI3MWZkM2M4NDguLjVlMzQxY2E3M2M1ZjViZjZlNmE2YzIz
MzIzNzYzNjI1OWZjNGM5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9T
aGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIu
aApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCiAK
ICNpbmNsdWRlICJQbHVnaW5Nb2R1bGVJbmZvLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJv
Y2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNDEs
NyArNDIsNiBAQCBuYW1lc3BhY2UgQ29yZUlQQyB7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgUGx1Z2luSW5mb1N0b3JlOwotY2xhc3MgU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OwogY2xh
c3MgV2ViUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyOwogCkBA
IC01Myw2ICs1Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNoYXJlZFdvcmtlclByb2Nlc3ND
b25uZWN0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQ
dHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5l
Y3Rpb246OkRlbGF5ZWRSZXBseT4pOwogICAgIHZvaWQgcmVtb3ZlU2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5KFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSopOwogCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVT4gdm9pZCBzZW5kVG9BbGxWYWxpZFByb2Nlc3Nlcyhjb25zdCBVJiBtZXNzYWdlKTsKKwog
cHJpdmF0ZToKICAgICBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcigpOwogCkBAIC02MSw2ICs2
MywxNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkV29ya2VyUHJvY2Vzc1By
b3h5PiA+IG1fc2hhcmVkV29ya2VyUHJvY2Vzc2VzOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUg
VT4gaW5saW5lIHZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6OnNlbmRUb0FsbFZhbGlk
UHJvY2Vzc2VzKGNvbnN0IFUmIG1lc3NhZ2UpCit7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxT
aGFyZWRXb3JrZXJQcm9jZXNzUHJveHk+ID4mIHByb2Nlc3NlcyA9IG1fc2hhcmVkV29ya2VyUHJv
Y2Vzc2VzOworICAgIHNpemVfdCBwcm9jZXNzQ291bnQgPSBwcm9jZXNzZXMuc2l6ZSgpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvY2Vzc0NvdW50OyArK2kpIHsKKyAgICAgICAgU2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5KiBwcm9jZXNzID0gcHJvY2Vzc2VzW2ldLmdldCgpOworICAg
ICAgICBpZiAocHJvY2Vzcy0+aXNWYWxpZCgpKQorICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZCht
ZXNzYWdlLCAwKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHkuY3BwCmluZGV4IDAzMGUzZmZjODkxNTFmMTQwYTk0ZDg3MGYzMzY1MjJkOWZlMTFl
OTMuLmI4MDhlZmJhY2RmYWI4ODg2YWZjOGExNTdmNTBjZTg4ZTg5MWEwNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMv
U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTY0LDYgKzE2NCwxMSBAQCB2b2lkIFNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hl
ciosIENvcmVJUEM6OkNvbgogICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNo
YXJlZFdvcmtlclByb2Nlc3M6OkNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCksIDApOwogICAg
IAogICAgIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cyA9IDA7CisKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgaWYgKFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uSXNPY2NsdWRlZCgpKQorICAg
ICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNoYXJlZFdvcmtlclByb2Nlc3M6OlNl
dEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKSwgMCk7CisjZW5kaWYKIH0KIAogdm9pZCBTaGFy
ZWRXb3JrZXJQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0
IENvcmVJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb25JZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRX
b3JrZXJQcm9jZXNzUHJveHkuaAppbmRleCA5ZjBjNWQyYWNlYjM5ZTJjNjg2Nzg4ZDcyNDI4NGRh
NWQ5YTU4OTU1Li5lMzBiOTg5MThlN2M1YWZmNGZkOWU5NWY2MDNhZDA5NTBhODM1NzY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29y
a2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuaApAQCAtNTYsNiArNTYsMTAgQEAgcHVibGlj
OgogICAgIC8vIFRlcm1pbmF0ZXMgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2Vzcy4KICAgICB2b2lk
IHRlcm1pbmF0ZSgpOwogCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb25u
ZWN0aW9uOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoY29uc3QgVCYg
bWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFn
cyA9IDApOworCiBwcml2YXRlOgogICAgIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eShTaGFyZWRX
b3JrZXJQcm9jZXNzTWFuYWdlciosIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5h
bWUpOwogCkBAIC05MSw2ICs5NSwxNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbnVtUGVu
ZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0czsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citib29s
IFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6c2VuZChjb25zdCBUJiBtZXNzYWdlLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKQoreworICAgIENPTVBJ
TEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKKworICAgIGlmICgh
aXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9jb25uZWN0
aW9uLT5zZW5kKG1lc3NhZ2UsIGRlc3RpbmF0aW9uSUQsIG1lc3NhZ2VTZW5kRmxhZ3MpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VS
X1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggZmU2
OWYyYjdlMDNiZDliMTdkNTI2OTYzZDgzYzA1YmM1N2M0ZjAxMS4uMmMxMTg2N2JmNDY1MTE5YWJh
ZDRmNWMxOGRmMmNmYjFlYTJkYTNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcApAQCAtMTA0Nyw0ICsxMDQ3LDI1IEBAIHZvaWQgV2ViQ29udGV4dDo6c2V0SmF2YVNj
cmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoYm9vbCBmbGFnKQogICAgIHNlbmRUb0Fs
bFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xs
ZWN0b3JUaW1lckVuYWJsZWQoZmxhZykpOwogfQogCitib29sIFdlYkNvbnRleHQ6OnByb2Nlc3NT
dXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgcmV0
dXJuIHNfcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQ7CisjZWxzZQorICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkNvbnRleHQ6OnNldFByb2Nlc3NTdXBwcmVz
c2lvblN1cHBvcnRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgaWYgKHNfcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQgIT0gZW5hYmxlZCkgewor
ICAgICAgICBzX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkID0gZW5hYmxlZDsKKyAg
ICAgICAgcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWRDaGFuZ2VkKCk7CisgICAgfQor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCAwZDQ0
NDU0YmFiNjNhNjE2M2IzNjM2Zjg2MWEzNWI0N2ViMDM0NDhmLi5mMTI1YmE5MzMyNzhiNTcxMGJk
OTRkODNkNTFlYTk3ODc5NzMzZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmgKQEAgLTEwNSw2ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBkZXBy
ZWNhdGVkU2hhcmVkUHJvY2VzcygpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBz
ZW5kVG9BbGxQcm9jZXNzZXMoY29uc3QgVSYgbWVzc2FnZSk7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVT4gdm9pZCBzZW5kVG9BbGxWYWxpZFByb2Nlc3Nlcyhjb25zdCBVJiBtZXNzYWdlKTsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIHNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5n
VGhlbUlmTmVjZXNzYXJ5KGNvbnN0IFUmIG1lc3NhZ2UpOwogICAgIAogICAgIHZvaWQgcHJvY2Vz
c0RpZEZpbmlzaExhdW5jaGluZyhXZWJQcm9jZXNzUHJveHkqKTsKQEAgLTI0OCw2ICsyNDksMTIg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRVc2VzTmV0d29ya1Byb2Nlc3MoYm9vbCk7CiAKKyAg
ICBzdGF0aWMgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCgpOworICAgIHN0
YXRpYyB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKGJvb2wpOworI2lm
IFBMQVRGT1JNKE1BQykKKyAgICBzdGF0aWMgYm9vbCBhcHBsaWNhdGlvbklzT2NjbHVkZWQoKSB7
IHJldHVybiBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZDsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAg
ICAgV2ViQ29udGV4dChQcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQ
YXRoKTsKIApAQCAtMzAyLDYgKzMwOSwxNCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBjb29raWVT
dG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAgICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdENvb2tp
ZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGF0
aWMgdm9pZCBwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZENoYW5nZWQoKTsKKyAgICBz
dGF0aWMgdm9pZCBhcHBsaWNhdGlvbkJlY2FtZVZpc2libGUodWludDMyX3QsIHZvaWQqLCB1aW50
MzJfdCwgdm9pZCosIHVpbnQzMl90KTsKKyAgICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbkJlY2Ft
ZU9jY2x1ZGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCk7Cisg
ICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycygpOwor
ICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycygp
OworI2VuZGlmCisKICAgICBQcm9jZXNzTW9kZWwgbV9wcm9jZXNzTW9kZWw7CiAgICAgCiAgICAg
VmVjdG9yPFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+ID4gbV9wcm9jZXNzZXM7CkBAIC0zOTYsNiAr
NDExLDExIEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPERpY3Rpb25h
cnlDYWxsYmFjaz4gPiBtX2RpY3Rpb25hcnlDYWxsYmFja3M7CiAKICAgICBDb3JlSVBDOjpNZXNz
YWdlUmVjZWl2ZXJNYXAgbV9tZXNzYWdlUmVjZWl2ZXJNYXA7CisKKyNpZiBQTEFURk9STShNQUMp
CisgICAgc3RhdGljIGJvb2wgc19wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZDsKKyAg
ICBzdGF0aWMgYm9vbCBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZDsKKyNlbmRpZgogfTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVT4gaW5saW5lIHZvaWQgV2ViQ29udGV4dDo6c2VuZFRvQWxsUHJvY2Vz
c2VzKGNvbnN0IFUmIG1lc3NhZ2UpCkBAIC00MDgsNiArNDI4LDE2IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFU+IGlubGluZSB2b2lkIFdlYkNvbnRleHQ6OnNlbmRUb0FsbFByb2Nlc3Nlcyhjb25zdCBV
JiBtZXNzYWdlCiAgICAgfQogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgdm9pZCBX
ZWJDb250ZXh0OjpzZW5kVG9BbGxWYWxpZFByb2Nlc3Nlcyhjb25zdCBVJiBtZXNzYWdlKQorewor
ICAgIHNpemVfdCBwcm9jZXNzQ291bnQgPSBtX3Byb2Nlc3Nlcy5zaXplKCk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwcm9jZXNzQ291bnQ7ICsraSkgeworICAgICAgICBXZWJQcm9jZXNz
UHJveHkqIHByb2Nlc3MgPSBtX3Byb2Nlc3Nlc1tpXS5nZXQoKTsKKyAgICAgICAgaWYgKHByb2Nl
c3MtPmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQobWVzc2FnZSwgMCk7Cisg
ICAgfQorfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIFdlYkNvbnRleHQ6OnNlbmRUb0Fs
bFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KGNvbnN0IFUmIG1lc3NhZ2UpCiB7
CiAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IFdlYkNvbnRleHQgZG9lc24ndCB0cmFjayBw
cm9jZXNzZXMgdGhhdCBoYXZlIGV4aXRlZCwgc28gaXQgY2Fubm90IHJlbGF1bmNoIHRoZXNlLiBQ
ZXJoYXBzIHRoaXMgZnVuY3Rpb25hbGl0eSB3b24ndCBiZSBuZWVkZWQgaW4gdGhpcyBtb2RlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBlOGEz
OWJkMmJjMWFjM2Q4OWYwNmNiM2Q1MjJkOWNmYjhhMmUwODkyLi4zOWI2OTlhZTYyMGRiMmQzZjVh
NjhiM2NjZjE3MTM0MTZlOGUyYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcApAQCAtNTMxLDYgKzUzMSwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGlkRmluaXNoTGF1bmNoaW5nKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29u
bmVjdAogCiAgICAgLy8gVGVsbCB0aGUgY29udGV4dCB0aGF0IHdlIGZpbmlzaGVkIGxhdW5jaGlu
Zy4KICAgICBtX2NvbnRleHQtPnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcodGhpcyk7CisKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgaWYgKFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uSXNPY2NsdWRl
ZCgpKQorICAgICAgICBjb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNl
dEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKSwgMCk7CisjZW5kaWYKIH0KIAogV2ViRnJhbWVQ
cm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJGcmFtZSh1aW50NjRfdCBmcmFtZUlEKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCmluZGV4IDAw
YzAyY2QwMmQxY2M1Njg2M2ExNTk4ZjNiZDkxMDJlM2Q1ZTY4ZDkuLjI4Yzg1MDhlMjRjNTZjOTBl
ZWEwMjFhZWVkZmY2MTMyZjdlYjVhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYkNvbnRleHRNYWMubW0KQEAgLTI1LDYgKzI1LDEzIEBACiAKICNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiV2ViQ29udGV4dC5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc01lc3NhZ2Vz
LmgiCisjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc01hbmFnZXIuaCIKKyNpbXBvcnQgIk5ldHdvcmtQ
cm9jZXNzTWVzc2FnZXMuaCIKKyNpbXBvcnQgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCisjaW1w
b3J0ICJQbHVnaW5Qcm9jZXNzTWVzc2FnZXMuaCIKKyNpbXBvcnQgIlNoYXJlZFdvcmtlclByb2Nl
c3NNYW5hZ2VyLmgiCisjaW1wb3J0ICJTaGFyZWRXb3JrZXJQcm9jZXNzTWVzc2FnZXMuaCIKIAog
I2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgiCkBAIC01Miw2ICs1OSw5IEBAIE5TU3RyaW5nICpXZWJJY29uRGF0
YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViSWNvbkRhdGFiYXNlRGlyZWN0b3J5RGVm
YXVsCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitib29sIFdlYkNvbnRleHQ6OnNfcHJvY2Vzc1N1
cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQgPSBmYWxzZTsKK2Jvb2wgV2ViQ29udGV4dDo6c19hcHBs
aWNhdGlvbklzT2NjbHVkZWQgPSBmYWxzZTsKKwogU3RyaW5nIFdlYkNvbnRleHQ6OmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKQogewogICAgIE5TU3RyaW5nICphcHBOYW1lID0gW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXTsKQEAgLTI1Nyw1ICsyNjcsODIgQEAgdm9p
ZCBXZWJDb250ZXh0OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdAogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBhc3RlYm9hcmRUeXBlKTsKIH0KIAotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Cit2b2lkIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQmVjYW1lVmlzaWJs
ZSh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCit7CisgICAgaWYg
KHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKSB7CisgICAgICAgIHNfYXBwbGljYXRpb25Jc09jY2x1
ZGVkID0gZmFsc2U7CisKKyAgICAgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4
dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAg
Y29udGV4dHNbaV0tPnNlbmRUb0FsbFZhbGlkUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoZmFsc2UpKTsKKworI2lmIEVOQUJMRShQTFVHSU5f
UFJPQ0VTUykKKyAgICAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNlbmRUb0Fs
bFZhbGlkUHJvY2Vzc2VzKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklz
T2NjbHVkZWQoZmFsc2UpKTsKKyNlbmRpZgorI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisg
ICAgICAgIE5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2VuZFRvUHJvY2VzcyhNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSkpOwor
I2VuZGlmCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKKyAgICAgICAgU2hhcmVk
V29ya2VyUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNlbmRUb0FsbFZhbGlkUHJvY2Vzc2VzKE1l
c3NhZ2VzOjpTaGFyZWRXb3JrZXJQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoZmFs
c2UpKTsKKyNlbmRpZgorICAgIH0KK30KKwordm9pZCBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkJl
Y2FtZU9jY2x1ZGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkK
K3sKKyAgICBpZiAoIXNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKSB7CisgICAgICAgIHNfYXBwbGlj
YXRpb25Jc09jY2x1ZGVkID0gdHJ1ZTsKKyAgICAgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQq
PiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOworICAgICAgICBmb3IgKHNp
emVfdCBpID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKQorICAg
ICAgICAgICAgY29udGV4dHNbaV0tPnNlbmRUb0FsbFZhbGlkUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSkpOworCisjaWYgRU5BQkxF
KFBMVUdJTl9QUk9DRVNTKQorICAgICAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCku
c2VuZFRvQWxsVmFsaWRQcm9jZXNzZXMoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3M6OlNldEFwcGxp
Y2F0aW9uSXNPY2NsdWRlZCh0cnVlKSk7CisjZW5kaWYKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQorICAgICAgICBOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNlbmRUb1Byb2Nl
c3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1
ZSkpOworI2VuZGlmCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKKyAgICAgICAg
U2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNlbmRUb0FsbFZhbGlkUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpTaGFyZWRXb3JrZXJQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVk
ZWQodHJ1ZSkpOworI2VuZGlmCisgICAgfQorfQorCit2b2lkIFdlYkNvbnRleHQ6OnJlZ2lzdGVy
T2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKQoreworI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIGlmICghV0tSZWdpc3Rlck9jY2x1c2lvbk5vdGlm
aWNhdGlvbkhhbmRsZXIoV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25CZWNh
bWVWaXNpYmxlLCBhcHBsaWNhdGlvbkJlY2FtZVZpc2libGUpKSB7CisgICAgICAgIFdURkxvZ0Fs
d2F5cygiUmVnaXN0ZXJhdGlvbiBvZiBcIkFwcCBCZWNhbWUgVmlzaWJsZVwiIG5vdGlmaWNhdGlv
biBoYW5kbGVyIGZhaWxlZC5cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KCFXS1JlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihXS09jY2x1c2lvbk5vdGlm
aWNhdGlvblR5cGVBcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkLCBhcHBsaWNhdGlvbkJlY2FtZU9j
Y2x1ZGVkKSkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJSZWdpc3RlcmF0aW9uIG9mIFwiQXBwIEJl
Y2FtZSBPY2NsdWRlZFwiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOworI2VuZGlm
Cit9CiAKK3ZvaWQgV2ViQ29udGV4dDo6dW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhh
bmRsZXJzKCkKK3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAK
KyAgICAvLyBSZXNldCBvY2NsdXNpb24gc3RhdGUuCisgICAgYXBwbGljYXRpb25CZWNhbWVWaXNp
YmxlKDAsIDAsIDAsIDAsIDApOworCisgICAgaWYgKCFXS1VucmVnaXN0ZXJPY2NsdXNpb25Ob3Rp
ZmljYXRpb25IYW5kbGVyKFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVj
YW1lT2NjbHVkZWQsIGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQpKSB7CisgICAgICAgIFdURkxv
Z0Fsd2F5cygiUmVtb3ZhbCBvZiBcIkFwcGxpY2F0aW9uIEJlY2FtZSBPY2NsdWRlZFwiIG5vdGlm
aWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKCFXS1VucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKFdLT2NjbHVz
aW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSwgYXBwbGljYXRpb25C
ZWNhbWVWaXNpYmxlKSkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJSZW1vdmFsIG9mIFwiQXBwbGlj
YXRpb24gQmVjYW1lIFZpc2libGVcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4iKTsK
KyNlbmRpZgorfQorCit2b2lkIFdlYkNvbnRleHQ6OnByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRF
bmFibGVkQ2hhbmdlZCgpCit7CisgICAgaWYgKHNfcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVu
YWJsZWQpCisgICAgICAgIHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKTsK
KyAgICBlbHNlCisgICAgICAgIHVucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVy
cygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkM2ZiYjE0NDIyYzFlYmQ5NWM4
NzM0YjhjYjE3MjUxY2M0YWU4OWQ3Li4zMWQwY2E2NTRmNGEyN2Y0ZDNkODdiNDE4MDZmZDJlMGIz
YTMyYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC01MzEsNiArNTMxLDkgQEAKIAkJOTNGQzY3QkUxMkQzQ0NGMjAwQTYwNjEw
IC8qIERlY29kZXJBZGFwdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0ZDNjc5RTEyRDNDQzc0MDBBNjA2MTAgLyogRGVjb2RlckFkYXB0ZXIuaCAq
LzsgfTsKIAkJOTNGQzY3QkYxMkQzQ0NGMjAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkM2NzlGMTJE
M0NDNzQwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5jcHAgKi87IH07CiAJCTkzRkM2N0MwMTJE
M0NDRjIwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGQzY3QTAxMkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29k
ZXJBZGFwdGVyLmggKi87IH07CisJCTlGNTRGODg5MTY0NDk3MEMwMDdERjgxQSAvKiBDaGlsZFBy
b2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5RjU0Rjg4ODE2NDQ5NzBDMDA3REY4MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1tICovOyB9Owor
CQk5RjU0Rjg4QjE2NDY1MDJCMDA3REY4MUEgLyogUHJvY2Vzc1V0aWxpdGllc01hYy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNTRGODhBMTY0NjUw
MkEwMDdERjgxQSAvKiBQcm9jZXNzVXRpbGl0aWVzTWFjLm1tICovOyB9OworCQk5RjU0Rjg4RDE2
NDY1MDU5MDA3REY4MUEgLyogUHJvY2Vzc1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY1NEY4OEMxNjQ2NTA1NzAwN0RGODFBIC8qIFBy
b2Nlc3NVdGlsaXRpZXMuaCAqLzsgfTsKIAkJQjYyRTczMTAxNDMwNDdBNjAwNjlFQzM1IC8qIFdL
SGl0VGVzdFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCNjJFNzMwRjE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCAq
LzsgfTsKIAkJQjYyRTczMTIxNDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjYyRTczMTExNDMw
NDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUI2MzQwM0Y5MTQ5MTBENTcwMDEwNzBCNSAvKiBB
UElPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjYzNDAzRjgxNDkxMEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5jcHAgKi87IH07CkBAIC0x
NzM4LDYgKzE3NDEsOSBAQAogCQk5M0ZDNjc5RTEyRDNDQzc0MDBBNjA2MTAgLyogRGVjb2RlckFk
YXB0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RlckFkYXB0ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGQzY3OUYxMkQzQ0M3NDAwQTYwNjEw
IC8qIEVuY29kZXJBZGFwdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEVuY29kZXJBZGFwdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNG
QzY3QTAxMkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEVuY29kZXJBZGFwdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTlGNTRGODg4MTY0NDk3MEMwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlGNTRGODhBMTY0NjUwMkEwMDdERjgx
QSAvKiBQcm9jZXNzVXRpbGl0aWVzTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUHJvY2Vzc1V0aWxpdGllc01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOUY1NEY4OEMxNjQ2NTA1NzAwN0RGODFBIC8qIFByb2Nlc3NVdGlsaXRpZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc1V0aWxpdGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzJENUQ3RjEyMzZDQkE4MDBBODhCMTUgLyogV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCMzk2RUE1NTEyRTBFRDJEMDBGNEZFQjcgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
NjJFNzMwRjE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLSGl0VGVzdFJlc3VsdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjI5LDYgKzI2MzUsNyBAQAogCQkJCUMwRTNBQTQ4MTIw
OUU0NTAwMEE0OUQwMSAvKiBNb2R1bGVNYWMubW0gKi8sCiAJCQkJQkNFMDkzNzUxNEZCMTI4QjAw
MTEzOEQ5IC8qIExheWVySG9zdGluZ0NvbnRleHQubW0gKi8sCiAJCQkJQkNFMDkzNzYxNEZCMTI4
QjAwMTEzOEQ5IC8qIExheWVySG9zdGluZ0NvbnRleHQuaCAqLywKKwkJCQk5RjU0Rjg4QTE2NDY1
MDJBMDA3REY4MUEgLyogUHJvY2Vzc1V0aWxpdGllc01hYy5tbSAqLywKIAkJCQkxQTI0QkYzOTEy
MDg5NkE2MDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5TWFjLmNwcCAqLywKIAkJCQkyOTZCRDg1QjE1
MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLmggKi8sCiAJCQkJMjk2QkQ4NUMxNTAx
OUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5tbSAqLywKQEAgLTM2MzAsNiArMzYzNyw3
IEBACiAJCQkJRTE3OUZEOUUxMzREMzgyNTAwMTVCODgzIC8qIEFyZ3VtZW50Q29kZXJzTWFjLm1t
ICovLAogCQkJCUUxQTMxNzMxMTM0Q0VBNkMwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLmgg
Ki8sCiAJCQkJRTFBMzE3MzQxMzRDRUE4MDAwN0M5QTRGIC8qIEF0dHJpYnV0ZWRTdHJpbmcubW0g
Ki8sCisJCQkJOUY1NEY4ODgxNjQ0OTcwQzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSAq
LywKIAkJCQkxQTJBNEFGRTE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JTcGFjZURhdGEuaCAqLywK
IAkJCQkxQTJBNEFGRDE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JTcGFjZURhdGEubW0gKi8sCiAJ
CQkJMUE2RjlGQjYxMUUxNDA4NTAwREIxMzcxIC8qIENvbW1hbmRMaW5lTWFjLmNwcCAqLywKQEAg
LTM3OTcsNiArMzgwNSw3IEBACiAJCQkJQzBFM0FBNDUxMjA5RTJCQTAwQTQ5RDAxIC8qIE1vZHVs
ZS5jcHAgKi8sCiAJCQkJQzBFM0FBNDQxMjA5RTJCQTAwQTQ5RDAxIC8qIE1vZHVsZS5oICovLAog
CQkJCUJDODc4MEZCMTE2MUMyQjgwMENDMjc2OCAvKiBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVy
LmggKi8sCisJCQkJOUY1NEY4OEMxNjQ2NTA1NzAwN0RGODFBIC8qIFByb2Nlc3NVdGlsaXRpZXMu
aCAqLywKIAkJCQkxQTI0QkVEMzEyMDg5NEQxMDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5LmggKi8s
CiAJCQkJQkMyRTZFN0QxMTQxOTcwQzAwQTYzQjFFIC8qIFdvcmtRdWV1ZS5jcHAgKi8sCiAJCQkJ
QkMyRTZFN0UxMTQxOTcwQzAwQTYzQjFFIC8qIFdvcmtRdWV1ZS5oICovLApAQCAtNDgxMCw2ICs0
ODE5LDcgQEAKIAkJCQk1MTdDRjBFMDE2M0E0NDRDMDBDMjk1MEUgLyogTmV0d29ya1JlcXVlc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0NGMEU0MTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCNzg0NzEx
NjNGMjQ2OTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVhZGVycyAq
LywKKwkJCQk5RjU0Rjg4RDE2NDY1MDU5MDA3REY4MUEgLyogUHJvY2Vzc1V0aWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC01NzQwLDYgKzU3NTAsOCBAQAogCQkJCTJEMkFERjA5MTYzNjJERDUw
MDE5N0U0NyAvKiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTJEMkFERjBCMTYzNjJEREIwMDE5N0U0NyAvKiBQREZQbHVnaW5Bbm5vdGF0aW9uLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQyQURGMTAxNjM2NEQ4MjAwMTk3RTQ3IC8qIFBERlBsdWdpbkNob2lj
ZUFubm90YXRpb24ubW0gaW4gU291cmNlcyAqLywKKwkJCQk5RjU0Rjg4OTE2NDQ5NzBDMDA3REY4
MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOUY1NEY4OEIxNjQ2
NTAyQjAwN0RGODFBIC8qIFByb2Nlc3NVdGlsaXRpZXNNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRl
eCAyY2MxZTYyODA0NjMyODEzMTE0MDU4ZmFjYmVhMTUwMDU3MzVjYzI0Li4yYzFiNDMwNTIzNjRk
MzZmYjYyYTZlZDdlOWJjMmFmNGMzZDgwNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC05Nyw0ICs5Nyw4IEBAIG1lc3NhZ2Vz
IC0+IFdlYlByb2Nlc3MgewogICAgIFNlY0l0ZW1SZXNwb25zZSh1aW50NjRfdCByZXF1ZXN0SUQs
IFdlYktpdDo6U2VjSXRlbVJlc3BvbnNlRGF0YSByZXNwb25zZSkgRGlzcGF0Y2hPbkNvbm5lY3Rp
b25RdWV1ZQogICAgIFNlY0tleWNoYWluSXRlbVJlc3BvbnNlKHVpbnQ2NF90IHJlcXVlc3RJRCwg
V2ViS2l0OjpTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGEgcmVzcG9uc2UpIERpc3BhdGNoT25D
b25uZWN0aW9uUXVldWUKICNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFNldEFwcGxp
Y2F0aW9uSXNPY2NsdWRlZChib29sIGZsYWcpOworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW0gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW0K
aW5kZXggMmFmNTk0OGZkOWUxNzdhNDUwZDg2OTYxZGZmNTk2ZTg1NzAxMjY4Yy4uYTMzMjdjNWJk
MzU1MTI4M2Y4NDliNDM2ZmVmNTg2NDc5NDllMDNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5tbQpAQCAt
MjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzSW5p
dGlhbGl6YXRpb24uaCIKIAorI2ltcG9ydCAiUHJvY2Vzc1V0aWxpdGllcy5oIgogI2ltcG9ydCAi
V2ViUHJvY2Vzcy5oIgogI2ltcG9ydCAiV2ViU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxX
ZWJDb3JlL1J1bkxvb3AuaD4KQEAgLTQ2LDkgKzQ3LDcgQEAgdm9pZCBJbml0aWFsaXplV2ViUHJv
Y2Vzcyhjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIsIENvcmVJUEM6OkNvbm5lY3Rpb246
OkkKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlh
bGl6ZU1haW5SdW5Mb29wKCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwOTAKLSAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRpc2FibGVBdXRvbWF0
aWNUZXJtaW5hdGlvbjpAIkRpc2FibGUgV2ViUHJvY2VzcyBBdXRvIFRlcm1pbmF0aW9uIl07Ci0j
ZW5kaWYKKyAgICBkaXNhYmxlUHJvY2Vzc1N1cHByZXNzaW9uKEAiV2ViUHJvY2VzcyBMYXVuY2gi
KTsKIAogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemVTaGltKCk7CiAgICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZVNhbmRib3goY2xpZW50SWRlbnRpZmllcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2ogYi9Tb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKaW5kZXggMDU3Y2JmM2RiMzZmZTgzZGNiNTM5NjhkMDAw
YTZlZTc0OTE5YzU5Yi4uYjI5ZDY5MGY0YjYzYWQ2NTdkM2YwZDJiZjEyMWU1MmNmMmI0ZmVkZSAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagpAQCAtMzk2Myw2ICszOTYzLDEwIEBACiAJCQkJ
PgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBsYXRmb3JtXFBy
b2Nlc3NVdGlsaXRpZXMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0
aXZlUGF0aD0iLi5cUGxhdGZvcm1cU2hhcmVkTWVtb3J5LmgiCiAJCQkJPgogCQkJPC9GaWxlPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172433</attachid>
            <date>2012-11-05 16:26:20 -0800</date>
            <delta_ts>2012-11-06 14:18:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100997-20121105162434.patch</filename>
            <type>text/plain</type>
            <size>50080</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzFkYjVmNzA3ZWMzNWE1
MWYzOTEyZWFjMGIwM2VmN2FiMzVlMDcwZS4uY2JmYjRhYmUyZWIwYjkzMTM3OTA5ZDdmZTQ4YzA1
YWI2NGRhMmQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxMi0xMS0wNSAgS2ly
YW4gTXVwcGFsYSAgPGNtdXBwYWxhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYXBwbGljYXRp
b24gb2NjbHVzaW9uIGNyaXRlcmlvbiB0byBlbmFibGUvZGlzYWJsZSBwcm9jZXNzIHN1cHByZXNz
aW9uIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAwOTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUHJvdmlkZSBzdXBwb3J0IGZvciBlbmFibGluZyBhbmQgZGlzYWJsaW5nIHByb2Nlc3Mgc3Vw
cHJlc3Npb24gd2hlbiBhcHBsaWNhdGlvbiBpcyBjb21wbGV0ZWx5IG9jY2x1ZGVkIG9uIE1hYy4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46IEFkZGVkIG1lc3NhZ2UgdG8gdXBkYXRlIGFw
cGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFj
L05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NNYWluKTogUmVwbGFjZWQgZGlyZWN0IGNhbGwgdG8gdGFrZSBhc3NlcnRpb24gd2l0aCBhIGNh
bGwgdG8KKyAgICAgICAgYW4gZXF1aXZhbGVudCwgc2ltcGxlciB0byB1c2UsIGhlbHBlciBtZXRo
b2QuCisgICAgICAgICogUGxhdGZvcm0vUHJvY2Vzc1V0aWxpdGllcy5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdCk6IEFkZGVkIGhlbHBlciBtZXRob2RzIHRvIHRha2UgYW5kIHJlbGVhc2UgYXNz
ZXJ0aW9uIGZvciBwcm9jZXNzIHN1cHByZXNzaW9uLgorICAgICAgICAqIFBsYXRmb3JtL21hYy9Q
cm9jZXNzVXRpbGl0aWVzTWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OmRpc2FibGVQcm9jZXNzU3VwcHJlc3Npb24pOgorICAgICAgICAoV2ViS2l0Ojpl
bmFibGVQcm9jZXNzU3VwcHJlc3Npb24pOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2lu
UHJvY2Vzcy5tZXNzYWdlcy5pbjogQWRkZWQgbWVzc2FnZSB0byB1cGRhdGUgYXBwbGljYXRpb24g
b2NjbHVzaW9uIHN0YXR1cy4KKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9j
ZXNzTWFpbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW4pOiBSZXBs
YWNlZCBkaXJlY3QgY2FsbCB0byB0YWtlIGFzc2VydGlvbiB3aXRoIGEgY2FsbCB0bworICAgICAg
ICBhbiBlcXVpdmFsZW50LCBzaW1wbGVyIHRvIHVzZSwgaGVscGVyIG1ldGhvZC4KKyAgICAgICAg
KiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNz
OjpDaGlsZFByb2Nlc3MpOiBJbml0aWFsaXplIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMg
dG8gZmFsc2UuCisgICAgICAgICogU2hhcmVkL0NoaWxkUHJvY2Vzcy5oOgorICAgICAgICAoQ2hp
bGRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjphcHBsaWNhdGlvbklz
T2NjbHVkZWQpOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6c2V0
QXBwbGljYXRpb25Jc09jY2x1ZGVkKToKKyAgICAgICAgQWRkZWQgZ2V0dGVyIGFuZCBzZXR0ZXIg
Zm9yIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMuCisgICAgICAgICogU2hhcmVkV29ya2Vy
UHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLm1lc3NhZ2VzLmluOiBBZGRlZCBtZXNzYWdlIHRv
IHVwZGF0ZSBhcHBsaWNhdGlvbiBvY2NsdXNpb24gc3RhdHVzLgorICAgICAgICAqIFNoYXJlZFdv
cmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbik6IFJlcGxhY2VkIGRpcmVjdCBjYWxsIHRv
IHRha2UgYXNzZXJ0aW9uIHdpdGggYSBjYWxsIHRvCisgICAgICAgIGFuIGVxdWl2YWxlbnQsIHNp
bXBsZXIgdG8gdXNlLCBoZWxwZXIgbWV0aG9kLgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0
UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgIEFkZGVkIHByaXZhdGUgQVBJIHRvIGVu
YWJsZSBwcm9jZXNzIHN1cHByZXNzaW9uIHN1cHBvcnQuCisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoTmV0d29ya1Byb2Nlc3NNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NNYW5hZ2VyOjpzZW5kVG9Qcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKTogVXBkYXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBz
dGF0dXMgcG9zdCBsYXVuY2guCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojppc1Zh
bGlkKToKKyAgICAgICAgKE5ldHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZCk6CisgICAgICAgICog
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaDoKKyAgICAgICAgKFBsdWdp
blByb2Nlc3NNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6
OnNlbmRUb0FsbFZhbGlkUHJvY2Vzc2VzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICog
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOiBVcGRhdGUgYXBwbGlj
YXRpb24gb2NjbHVzaW9uIHN0YXR1cyBwb3N0IGxhdW5jaC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJv
Y2Vzc1Byb3h5Ojppc1ZhbGlkKToKKyAgICAgICAgKFBsdWdpblByb2Nlc3NQcm94eSk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnNlbmQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NN
YW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoU2hhcmVkV29ya2VyUHJvY2Vz
c01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcjo6
c2VuZFRvQWxsVmFsaWRQcm9jZXNzZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKTogVXBkYXRlIGFwcGxpY2F0
aW9uIG9jY2x1c2lvbiBzdGF0dXMgcG9zdCBsYXVuY2guCisgICAgICAgICogVUlQcm9jZXNzL1No
YXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6aXNWYWxpZCk6CisgICAgICAgIChTaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6U2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpzZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnByb2Nlc3NTdXBwcmVzc2lv
blN1cHBvcnRFbmFibGVkKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6OnNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKToKKyAgICAgICAg
QWRkZWQgZ2V0dGVyIGFuZCBzZXR0ZXIgZm9yIHByb2Nlc3Mgc3VwcHJlc3Npb24gc3VwcG9ydCBl
bmFibGVkIHN0YXR1cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0OjphcHBsaWNhdGlvbklzT2NjbHVkZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZXh0OjpzZW5kVG9BbGxWYWxpZFByb2Nlc3Nlcyk6CisgICAgICAgIChX
ZWJDb250ZXh0KToKKyAgICAgICAgQWRkZWQgZ2V0dGVyIGZvciBhcHBsaWNhdGlvbiBvY2NsdXNp
b24gc3RhdHVzIGFuZCBoZWxwZXIgbWV0aG9kIHRvIHNlbmQgYSBtZXNzYWdlIHRvIGFsbCB3ZWIg
cHJvY2Vzc2VzCisgICAgICAgIHRoYXQgaGF2ZSBhIGNvbm5lY3Rpb24gZXN0YWJsaXNoZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKTogVXBkYXRlIGFwcGxpY2F0aW9u
IG9jY2x1c2lvbiBzdGF0dXMgcG9zdCBsYXVuY2guCisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
ZWJDb250ZXh0TWFjLm1tOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dDo6YXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dDo6YXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCk6CisgICAgICAgIEFkZGVkIG5vdGlm
aWNhdGlvbiBoYW5kbGVycyB0byBub3RpZnkgbm9uIFVJIFdlYktpdDIgcHJvY2Vzc2VzIG9mIHRo
ZSBjaGFuZ2UgaW4gYXBwbGljYXRpb24gb2NjbHVzaW9uIHN0YXR1cy4KKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6cmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnVucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRp
b25IYW5kbGVycyk6CisgICAgICAgIEhlbHBlciBmdW5jdGlvbnMgdG8gcmVnaXN0ZXIgYW5kIHVu
cmVnaXN0ZXIgYXBwbGljYXRpb24gb2NjbHVzaW9uIG5vdGlmaWNhdGlvbiBoYW5kbGVycy4KKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJs
ZWRDaGFuZ2VkKTogSGVscGVyIG1ldGhvZCB0byByZWdpc3RlciBvciB1bnJlZ2lzdGVyIG9jY2x1
c2lvbgorICAgICAgICBub3RpZmljYXRpb24gaGFuZGxlcnMgYWNjb3JkaW5nIHRvIHRoZSB2YWx1
ZSBvZiBwcm9jZXNzIHN1cHByZXNzaW9uIHN1cHBvcnQgZW5hYmxlZC4KKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluOiBBZGRlZCBtZXNzYWdlIHRvIHVwZGF0ZSBhcHBsaWNhdGlvbiBv
Y2NsdXNpb24gc3RhdHVzLgorICAgICAgICAqIFdlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NJbml0
aWFsaXphdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6SW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBS
ZXBsYWNlZCBkaXJlY3QgY2FsbCB0byB0YWtlIGFzc2VydGlvbiB3aXRoIGEgY2FsbCB0bworICAg
ICAgICBhbiBlcXVpdmFsZW50LCBzaW1wbGVyIHRvIHVzZSwgaGVscGVyIG1ldGhvZC4KKyAgICAg
ICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisKIDIwMTItMTEtMDUgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBCZWdpbiBzdHViYmluZyBvdXQgdGhlIG5l
dyByZW1vdGUgbGF5ZXIgdHJlZSBkcmF3aW5nIGFyZWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0
LmFtCmluZGV4IDlkNDdiNzY4ZGIzZjYyZWFlZDBjZTdmMDZjMDA1N2Q5YzdkMDg0MTAuLmZhNmFh
NDFlOTYwOGU5MzE0M2Y0ZjM0NmI0NGFiZTZkMzM1OWFiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUubGlzdC5hbQpAQCAtMjc4LDYgKzI3OCw3IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vTW9kdWxlLmNwcCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vTW9kdWxlLmggXAogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lk
ZW50aWZpZXIuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUHJvY2Vzc1V0aWxpdGllcy5o
IFwKIAlTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBcCiAJU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcCBcCiAJU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vV29ya1F1ZXVlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDAyOTUzNmEz
NDEyMDVlNDI0NWMyYTgyNjVhZDdjMWE4ZjI4MjkzNWYuLmQyNDNiZDQ0ZjYwMDYzNGJkZDIyNTBj
MzQ3MTdiMTc1ZWIxM2IzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yOCw2ICsyOCwxMCBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyB7CiAKICAgICAjIENyZWF0ZXMgYSBjb25uZWN0aW9u
IGZvciBjb21tdW5pY2F0aW9uIHdpdGggYSBXZWJQcm9jZXNzCiAgICAgQ3JlYXRlTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFNldEFwcGxp
Y2F0aW9uSXNPY2NsdWRlZChib29sIGZsYWcpCisjZW5kaWYKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWluTWFjLm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbQppbmRleCAxMzM2MzhhNjIzNGU3
MTExMGQ5ZmU3NDg2NmE3ZjcwYTEwNzcyNjA0Li40ZjE4NDM0MzhjYTJlMzNhZmQ3YmU3MzFmYTgx
ZTRlMTNhZmQ1OTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9t
YWMvTmV0d29ya1Byb2Nlc3NNYWluTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01haW5NYWMubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNp
bXBvcnQgIkNvbW1hbmRMaW5lLmgiCiAjaW1wb3J0ICJFbnZpcm9ubWVudFV0aWxpdGllcy5oIgog
I2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbXBvcnQgIlByb2Nlc3NVdGlsaXRpZXMuaCIK
ICNpbXBvcnQgPFdlYkNvcmUvUnVuTG9vcC5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJm
YWNlLmg+CiAjaW1wb3J0IDxXZWJTeXN0ZW1JbnRlcmZhY2UuaD4KQEAgLTg0LDkgKzg1LDcgQEAg
aW50IE5ldHdvcmtQcm9jZXNzTWFpbihjb25zdCBDb21tYW5kTGluZSYgY29tbWFuZExpbmUpCiAg
ICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVN
YWluUnVuTG9vcCgpOwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDkwCi0gICAgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBkaXNhYmxlQXV0b21hdGljVGVy
bWluYXRpb246QCJEaXNhYmxlIE5ldHdvcmtQcm9jZXNzIEF1dG8gVGVybWluYXRpb24iXTsKLSNl
bmRpZgorICAgIGRpc2FibGVQcm9jZXNzU3VwcHJlc3Npb24oQCJOZXR3b3JrUHJvY2VzcyBMYXVu
Y2giKTsKIAogICAgIC8vIEluaXRpYWxpemUgdGhlIG5ldHdvcmsgcHJvY2VzcyBjb25uZWN0aW9u
LgogICAgIE5ldHdvcmtQcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplKENvcmVJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIoc2VydmVyUG9ydCksIFJ1bkxvb3A6Om1haW4oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Qcm9jZXNzVXRpbGl0aWVzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Qcm9jZXNzVXRpbGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA4YjNkMDcw
MjM2N2NkNjcwMjM0MWU0YzVkNTk3OWJkMTYzOTY0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL1Byb2Nlc3NVdGlsaXRpZXMuaApAQCAtMCwwICsxLDQyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBQcm9jZXNzVXRpbGl0aWVzX2gKKyNkZWZpbmUgUHJvY2Vzc1V0
aWxpdGllc19oCisKKyNpZiBQTEFURk9STShNQUMpCitPQkpDX0NMQVNTIE5TU3RyaW5nOworI2Vu
ZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjaWYgUExBVEZPUk0oTUFDKQordm9pZCBkaXNh
YmxlUHJvY2Vzc1N1cHByZXNzaW9uKE5TU3RyaW5nICpyZWFzb24pOwordm9pZCBlbmFibGVQcm9j
ZXNzU3VwcHJlc3Npb24oTlNTdHJpbmcgKnJlYXNvbik7CisjZW5kaWYKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQcm9jZXNzVXRpbGl0aWVzX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Qcm9jZXNzVXRpbGl0aWVzTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vbWFjL1Byb2Nlc3NVdGlsaXRpZXNNYWMubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGIwNzNjMTE4ZTY3MWUwOGE1YjA5MmNjMTJkMmM1NTFjN2ExZjFlMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Qcm9jZXNzVXRpbGl0aWVzTWFjLm1tCkBA
IC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
IlByb2Nlc3NVdGlsaXRpZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgZGlzYWJs
ZVByb2Nlc3NTdXBwcmVzc2lvbihOU1N0cmluZyAqcmVhc29uKQoreworI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIC8vIFRoZSBmb2xsb3dpbmcgY2FsbCBh
c3N1bWVzIHRoYXQgQXV0b1Rlcm1pbmF0aW9uU3VwcG9ydCBpcyBub3QgZW5hYmxlZCBmb3IgQ2hp
bGRQcm9jZXNzZXMuCisgICAgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBkaXNhYmxlQXV0
b21hdGljVGVybWluYXRpb246cmVhc29uXTsKKyNlbmRpZgorfQorCit2b2lkIGVuYWJsZVByb2Nl
c3NTdXBwcmVzc2lvbihOU1N0cmluZyAqcmVhc29uKQoreworI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIC8vIFRoZSBmb2xsb3dpbmcgY2FsbCBhc3N1bWVz
IHRoYXQgQXV0b1Rlcm1pbmF0aW9uU3VwcG9ydCBpcyBub3QgZW5hYmxlZCBmb3IgQ2hpbGRQcm9j
ZXNzZXMuCisgICAgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBlbmFibGVBdXRvbWF0aWNU
ZXJtaW5hdGlvbjpyZWFzb25dOworI2VuZGlmCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlNGVm
NDUwNzI0YmEwYTVlYzAxMzkyNjU3MGVmMjQ1OWM0YzdkNDYzLi40MTIyNmIxNGQ1M2UzNzEwNmY1
NDFiZDFkYWE1M2VhODhjYWRjYzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL1BsdWdpblByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zOCw2ICszOCwxMCBAQCBt
ZXNzYWdlcyAtPiBQbHVnaW5Qcm9jZXNzIHsKICAgICAjIEFza3MgdGhlIHBsdWctaW4gdG8gY2xl
YXIgZGF0YSBmb3IgdGhlIGdpdmVuIHNpdGVzLiBUaGUgcGx1Zy1pbiBwcm9jZXNzIHNlbmRzIGJh
Y2sKICAgICAjIGEgRGlkQ2xlYXJTaXRlRGF0YSBtZXNzYWdlIHdoZW4gZG9uZS4KICAgICBDbGVh
clNpdGVEYXRhKFZlY3RvcjxXVEY6OlN0cmluZz4gc2l0ZXMsIHVpbnQ2NF90IGZsYWdzLCB1aW50
NjRfdCBtYXhBZ2VJblNlY29uZHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgU2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wgZmxhZyk7CisjZW5kaWYK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21h
Yy9QbHVnaW5Qcm9jZXNzTWFpbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
bWFjL1BsdWdpblByb2Nlc3NNYWluTWFjLm1tCmluZGV4IDkxMmIxYzRmYjViYmYyNDVjMWViZmFk
Yjk0NzIwMDg5YWUyYTFkYTAuLmM4N2FkMTQwZWM3ZDZjYTVlM2NhNWU2OGVjMWYyMTdiOGU1YzEz
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblBy
b2Nlc3NNYWluTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1Bs
dWdpblByb2Nlc3NNYWluTWFjLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJFbnZpcm9u
bWVudFV0aWxpdGllcy5oIgogI2ltcG9ydCAiTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIKICNpbXBv
cnQgIlBsdWdpblByb2Nlc3MuaCIKKyNpbXBvcnQgIlByb2Nlc3NVdGlsaXRpZXMuaCIKICNpbXBv
cnQgPEZvdW5kYXRpb24vTlNVc2VyRGVmYXVsdHMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVuTG9v
cC5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CkBAIC0xMTcsOSArMTE4LDcg
QEAgaW50IFBsdWdpblByb2Nlc3NNYWluKGNvbnN0IENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkK
ICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6
ZU1haW5SdW5Mb29wKCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwOTAKLSAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRpc2FibGVBdXRvbWF0aWNU
ZXJtaW5hdGlvbjpAIkRpc2FibGUgUGx1Z2luUHJvY2VzcyBBdXRvIFRlcm1pbmF0aW9uIl07Ci0j
ZW5kaWYKKyAgICBkaXNhYmxlUHJvY2Vzc1N1cHByZXNzaW9uKEAiUGx1Z2luUHJvY2VzcyBMYXVu
Y2giKTsKIAogI2lmIGRlZmluZWQoX19pMzg2X18pCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgc2hp
bSBmb3IgMzItYml0IG9ubHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hp
bGRQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCmlu
ZGV4IGI2NWVlYmUyY2U0MjU1NzU0YTM0NzE3NWY4NjU5YWNiODNmNTMxMWUuLjI4Y2Q5ZTg4Mzgy
YTQ0ODJmNDA0NjRkZmUwNjViM2E3MmI2YzViODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGls
ZFByb2Nlc3MuY3BwCkBAIC02MCw2ICs2MCw5IEBAIENoaWxkUHJvY2Vzczo6Q2hpbGRQcm9jZXNz
KCkKICAgICA6IG1fdGVybWluYXRpb25UaW1lb3V0KDApCiAgICAgLCBtX3Rlcm1pbmF0aW9uQ291
bnRlcigwKQogICAgICwgbV90ZXJtaW5hdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywg
JkNoaWxkUHJvY2Vzczo6dGVybWluYXRpb25UaW1lckZpcmVkKQorI2lmIFBMQVRGT1JNKE1BQykK
KyAgICAsIG1fYXBwbGljYXRpb25Jc09jY2x1ZGVkKGZhbHNlKQorI2VuZGlmCiB7CiAgICAgLy8g
RklYTUU6IFRoZSB0ZXJtaW5hdGlvbiB0aW1lciBzaG91bGQgbm90IGJlIHNjaGVkdWxlZCBvbiB0
aGUgbWFpbiBydW4gbG9vcC4KICAgICAvLyBJdCB3b24ndCB3b3JrIHdpdGggdGhlIHRocmVhZGVk
IG1vZGUsIGJ1dCBpdCdzIG5vdCByZWFsbHkgdXNlZnVsIGFueXdheSBhcyBpcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9DaGlsZFByb2Nlc3MuaAppbmRleCA5ZWMxYTUwZDk5MmY4MDFjZTY3NDRjMGE4NDUy
OGZiMmYxZGI3OWI0Li44YWU1MWJmYzA3NjA1NTc3NTM0YWMyZDBmNWViYzg2NWM4ZDgzMjA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oCkBAIC01Nyw2ICs1NywxMSBAQCBwdWJs
aWM6CiAgICAgICAgIENoaWxkUHJvY2VzcyYgbV9jaGlsZFByb2Nlc3M7CiAgICAgfTsKIAorI2lm
IFBMQVRGT1JNKE1BQykKKyAgICBib29sIGFwcGxpY2F0aW9uSXNPY2NsdWRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fYXBwbGljYXRpb25Jc09jY2x1ZGVkOyB9CisgICAgdm9pZCBzZXRBcHBsaWNhdGlv
bklzT2NjbHVkZWQoYm9vbCBmbGFnKTsKKyNlbmRpZgorCiAgICAgc3RhdGljIHZvaWQgZGlkQ2xv
c2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoV29ya1F1ZXVlJiwgQ29yZUlQQzo6Q29ubmVjdGlvbiop
OwogCiBwcm90ZWN0ZWQ6CkBAIC04MCw2ICs4NSwxMCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fdGVybWluYXRpb25Db3VudGVyOwogCiAgICAgV2ViQ29yZTo6UnVuTG9vcDo6VGltZXI8Q2hp
bGRQcm9jZXNzPiBtX3Rlcm1pbmF0aW9uVGltZXI7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAg
Ym9vbCBtX2FwcGxpY2F0aW9uSXNPY2NsdWRlZDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJv
Y2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE5ZTRiNzAwNzQxOWFiNTQxM2VhY2QwYTkzOTRiYzg0Y2JlNDgzOTkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01h
Yy5tbQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJDaGlsZFByb2Nlc3MuaCIKKworI2ltcG9ydCAiUHJvY2Vzc1V0aWxpdGllcy5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBDaGlsZFByb2Nlc3M6OnNldEFwcGxpY2F0aW9u
SXNPY2NsdWRlZChib29sIGZsYWcpCit7CisgICAgaWYgKG1fYXBwbGljYXRpb25Jc09jY2x1ZGVk
ID09IGZsYWcpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYXBwbGljYXRpb25Jc09jY2x1ZGVk
ID0gZmxhZzsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAg
ICBpZiAobV9hcHBsaWNhdGlvbklzT2NjbHVkZWQpCisgICAgICAgIGVuYWJsZVByb2Nlc3NTdXBw
cmVzc2lvbihAIkFwcGxpY2F0aW9uIGJlY2FtZSBvY2NsdWRlZCIpOworICAgIGVsc2UKKyAgICAg
ICAgZGlzYWJsZVByb2Nlc3NTdXBwcmVzc2lvbihAIkFwcGxpY2F0aW9uIGJlY2FtZSB2aXNpYmxl
Iik7CisjZW5kaWYKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkV29y
a2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLm1lc3NhZ2VzLmluCmlu
ZGV4IDNjZDc1MzM3YjdmZWU4NDY5YjA5NGU4MTQ4ZWE1NWMzNjkyNDk4OWEuLjc4OWJiYjMxODE0
YzRlMTRjODNhZTZjYTIwZjEwNWY2NDZkNGJjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTMwLDYgKzMwLDEwIEBAIG1lc3NhZ2VzIC0+IFNoYXJlZFdvcmtlclBy
b2Nlc3MgewogICAgICMgVGhlIHNoYXJlZCB3b3JrZXIgcHJvY2VzcyBzZW5kcyBiYWNrIGEgRGlk
Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gbWVzc2FnZSB3aXRoCiAgICAgIyBhIGNvbm5lY3Rp
b24gaWRlbnRpZmllci4KICAgICBDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbigpCisKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgU2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wgZmxhZykKKyNl
bmRpZgogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtl
clByb2Nlc3NNYWluTWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9t
YWMvU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW0KaW5kZXggMzBmOGE3NDk2NGQ2ZDFjYzI4
NzlmMzE5N2M1NDViYTZjMDU5NWFkYi4uNWZmODZkNmE2OThlNjQyZWU5M2JhNzU1YjY5NDA1ZDFi
MGRjNDBkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9t
YWMvU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW0KQEAgLTMw
LDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiQ29tbWFuZExpbmUuaCIKICNpbXBvcnQgIkVudmlyb25t
ZW50VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJQcm9jZXNzVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJT
aGFyZWRXb3JrZXJQcm9jZXNzLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVXNlckRlZmF1bHRz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bkxvb3AuaD4KQEAgLTk2LDkgKzk3LDcgQEAgaW50IFNo
YXJlZFdvcmtlclByb2Nlc3NNYWluKGNvbnN0IENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkKICAg
ICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1h
aW5SdW5Mb29wKCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
OTAKLSAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRpc2FibGVBdXRvbWF0aWNUZXJt
aW5hdGlvbjpAIkRpc2FibGUgU2hhcmVkV29ya2VyUHJvY2VzcyBBdXRvIFRlcm1pbmF0aW9uIl07
Ci0jZW5kaWYKKyAgICBkaXNhYmxlUHJvY2Vzc1N1cHByZXNzaW9uKEAiU2hhcmVkV29ya2VyUHJv
Y2VzcyBMYXVuY2giKTsKIAogICAgIC8vIEluaXRpYWxpemUgdGhlIHNoYXJlZCB3b3JrZXIgcHJv
Y2VzcyBjb25uZWN0aW9uLgogICAgIFNoYXJlZFdvcmtlclByb2Nlc3M6OnNoYXJlZCgpLmluaXRp
YWxpemUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihzZXJ2ZXJQb3J0KSwgUnVuTG9v
cDo6bWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3Vy
Y2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IGFhMjM3NDhkMjdmNDk3NWU2ZmY4ODc0NGFlZWUx
NTI0Y2VhMjkyMWQuLjkxY2E4OTA1ZWZjNmE4NGJlNDcxNjFlYTI3ZTEzMWRmZGI2NjM5ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIv
VGFyZ2V0LnByaQpAQCAtMzUsNiArMzUsNyBAQCBIRUFERVJTICs9IFwKICAgICBQbGF0Zm9ybS9M
b2dnaW5nLmggXAogICAgIFBsYXRmb3JtL01vZHVsZS5oIFwKICAgICBQbGF0Zm9ybS9QbGF0Zm9y
bVByb2Nlc3NJZGVudGlmaWVyLmggXAorICAgIFBsYXRmb3JtL1Byb2Nlc3NVdGlsaXRpZXMuaCBc
CiAgICAgUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggXAogICAgIFBsYXRmb3JtL1dvcmtRdWV1ZS5o
IFwKICAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggMTE3YmJlZGEzMTRk
MWRiZTZiMGM2NTU1YTFmZjI4MGNjNzU0MDIyNS4uYTA2MjM2OTFjOGZkZTcxZGY4NGE5N2I0YjQ2
Y2UwMGM2ZTBhY2ViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5jcHAKQEAgLTMyNiw2ICszMjYsMTEgQEAgdm9pZCBXS0NvbnRleHRTZXRVc2VzTmV0d29y
a1Byb2Nlc3MoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGJvb2wgdXNlc05ldHdvcmtQcm8KICAg
ICB0b0ltcGwoY29udGV4dFJlZiktPnNldFVzZXNOZXR3b3JrUHJvY2Vzcyh1c2VzTmV0d29ya1By
b2Nlc3MpOwogfQogCit2b2lkIFdLQ29udGV4dFNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRF
bmFibGVkKGJvb2wgZW5hYmxlKQoreworICAgIFdlYkNvbnRleHQ6OnNldFByb2Nlc3NTdXBwcmVz
c2lvblN1cHBvcnRFbmFibGVkKGVuYWJsZSk7Cit9CisKIC8vIERlcHJlY2F0ZWQgZnVuY3Rpb25z
Lgogdm9pZCBfV0tDb250ZXh0U2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3RvcnkoV0tDb250ZXh0
UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIHBsdWdpbnNEaXJlY3RvcnkpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAppbmRleCA3OWMy
ZWY1MGY4NTE3ZThkY2FkM2RhOWQ3ZjJmYTBmY2RhMjM0ZTIwLi4wZTMzYTk1ZWIzZTM3MDE4NTEy
M2UyNjM1OTQ3YjJiZDNhMTlmNDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgKQEAgLTc2LDYgKzc2LDggQEAgV0tfRVhQT1JUIHZv
aWQgV0tDb250ZXh0V2FybUluaXRpYWxQcm9jZXNzKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIC8v
IEF0IHNvbWUgcG9pbnQgaXQgc2hvdWxkIGJlIHJlbW92ZWQuCiBXS19FWFBPUlQgdm9pZCBXS0Nv
bnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MoV0tDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgdXNl
c05ldHdvcmtQcm9jZXNzKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0UHJvY2Vzc1N1
cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQoYm9vbCBlbmFibGUpOworCiAjaWZkZWYgX19jcGx1c3Bs
dXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc01hbmFnZXIuaAppbmRleCBiOGI0NTM0Y2VmY2YzYmExNDYyYTdi
MGMzNjVlOTBhMWQ2MTdlNmRmLi5kZWMwYzA2ZmIwMjAzNWVlNjUzY2MwOWRlMzhmNTJlMzQ3OGFi
ZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc01hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KQEAgLTM2LDcgKzM3LDYgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb247Ci1jbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2Vi
UHJvY2Vzc1Byb3h5OwogCiBjbGFzcyBOZXR3b3JrUHJvY2Vzc01hbmFnZXIgewpAQCAtNTAsMTIg
KzUwLDIxIEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHJlbW92ZU5ldHdvcmtQcm9jZXNzUHJv
eHkoTmV0d29ya1Byb2Nlc3NQcm94eSopOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9v
bCBzZW5kVG9Qcm9jZXNzKGNvbnN0IFUmIG1lc3NhZ2UpOworCiBwcml2YXRlOgogICAgIE5ldHdv
cmtQcm9jZXNzTWFuYWdlcigpOwogCiAgICAgUmVmUHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IG1f
bmV0d29ya1Byb2Nlc3M7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBO
ZXR3b3JrUHJvY2Vzc01hbmFnZXI6OnNlbmRUb1Byb2Nlc3MoY29uc3QgVSYgbWVzc2FnZSkKK3sK
KyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nl
c3MtPnNlbmQobWVzc2FnZSwgMCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IDI4OTM0NWE0NjU3Y2ExYWExOWNiMDMzMGJjZGJmOTIzYzNkZjk1ZGYuLjFm
OWNlODllZDI0MWJmMTE0MTBjYjQ4MzhjZjZhOWVkZGZjZThhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CkBAIC0xNjIsNiArMTYyLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNo
TGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3RpCiAgICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKCksIDApOwogICAgIAogICAgIG1fbnVtUGVuZGluZ0Nvbm5l
Y3Rpb25SZXF1ZXN0cyA9IDA7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKFdlYkNvbnRl
eHQ6OmFwcGxpY2F0aW9uSXNPY2NsdWRlZCgpKQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSks
IDApOworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4
IDQ3Y2NiYWNiZjczMzRhNjdkNWE2MmIyZTcwMzY1MTdlZjI3MDc3MDcuLjI1NGM4OGQzMmY3MTI0
NmZmNmFjZWQ4MmJkNDI5OGZhY2ZjYmE0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTQ1LDYgKzQ1LDEw
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFBhc3NS
ZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uOjpEZWxheWVkUmVwbHk+KTsKIAorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29ubmVjdGlvbjsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKGNv
bnN0IFQmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVuc2lnbmVkIG1lc3NhZ2VT
ZW5kRmxhZ3MgPSAwKTsKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KE5ldHdv
cmtQcm9jZXNzTWFuYWdlciopOwogCkBAIC03Nyw2ICs4MSwxNyBAQCBwcml2YXRlOgogICAgIERl
cXVlPFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gPiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllczsKIH07
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citib29sIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmQo
Y29uc3QgVCYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2Fn
ZVNlbmRGbGFncykKK3sKKyAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3Nh
Z2VFeHBlY3RlZCk7CisgICAgCisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5zZW5kKG1lc3NhZ2UsIGRlc3Rp
bmF0aW9uSUQsIG1lc3NhZ2VTZW5kRmxhZ3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaAppbmRleCAz
NzgyNGM0YWEzYjRkYWIxY2IyMTM4NzA2NjlkMjU5YzA4MGQ4NmUwLi4zZTg3NTRiZDNmZGRhZWFk
ODQyOGI0N2E0YzYyNmVhMzUzM2Y0Y2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgKQEAgLTI5LDYgKzI5LDcg
QEAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAKICNpbmNsdWRlICJQbHVnaW5Nb2R1bGVJ
bmZvLmgiCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNDEsNyArNDIsNiBAQCBuYW1lc3BhY2UgQ29yZUlQQyB7
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUGx1Z2luSW5mb1N0b3JlOwotY2xhc3MgUGx1
Z2luUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2ViUGx1Z2lu
U2l0ZURhdGFNYW5hZ2VyOwogCkBAIC01Niw2ICs1Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGdl
dFNpdGVzV2l0aERhdGEoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIFdlYlBsdWdpblNpdGVEYXRh
TWFuYWdlciosIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgY2xlYXJTaXRlRGF0YShj
b25zdCBQbHVnaW5Nb2R1bGVJbmZvJiwgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyKiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBmbGFncywgdWludDY0X3QgbWF4QWdlSW5T
ZWNvbmRzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IHZvaWQgc2VuZFRvQWxsVmFsaWRQcm9jZXNzZXMoY29uc3QgVSYgbWVzc2FnZSk7CisKIHByaXZh
dGU6CiAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXIoKTsKIApAQCAtNjUsNiArNjcsMTggQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8UmVmUHRyPFBsdWdpblByb2Nlc3NQcm94eT4gPiBtX3BsdWdpblBy
b2Nlc3NlczsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFU+CitpbmxpbmUgdm9pZCBQbHVnaW5Q
cm9jZXNzTWFuYWdlcjo6c2VuZFRvQWxsVmFsaWRQcm9jZXNzZXMoY29uc3QgVSYgbWVzc2FnZSkK
K3sKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFBsdWdpblByb2Nlc3NQcm94eT4gPiYgcHJvY2Vz
c2VzID0gbV9wbHVnaW5Qcm9jZXNzZXM7CisgICAgc2l6ZV90IHByb2Nlc3NDb3VudCA9IHByb2Nl
c3Nlcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9jZXNzQ291bnQ7ICsr
aSkgeworICAgICAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHByb2Nlc3MgPSBwcm9jZXNzZXNbaV0u
Z2V0KCk7CisgICAgICAgIGlmIChwcm9jZXNzLT5pc1ZhbGlkKCkpCisgICAgICAgICAgICBwcm9j
ZXNzLT5zZW5kKG1lc3NhZ2UsIDApOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA4
MTE5N2NlMzZjNGIzYmQxNTI5NzEzYTk5MjBlN2Q3NGNjMjU2MjdiLi4wYzJlODY4OWU2NDg4NzY4
MGU0MmExMzQ5M2MwZjNlNTBlMGJiMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKQEAgLTIyOCw2ICsyMjgs
MTEgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNz
TGF1bmNoZXIqLCBDb3JlSVBDOjpDb25uZWN0aW8KICAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzOjpDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbigpLCAw
KTsKICAgICAKICAgICBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMgPSAwOworCisjaWYg
UExBVEZPUk0oTUFDKQorICAgIGlmIChXZWJDb250ZXh0OjphcHBsaWNhdGlvbklzT2NjbHVkZWQo
KSkKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzOjpT
ZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSksIDApOworI2VuZGlmCiB9CiAKIHZvaWQgUGx1
Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBDb3Jl
SVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBwb3J0c0FzeW5j
aHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAppbmRleCBmNzc1MDNkOGQ0MmQ5
MGNiZWI4Y2RhNjRjOTc5ZGVkZGVlMmYyMGFhLi4wYjNmZTMyYzRkYjMxMTRlZDgwNTliYTAzZjhj
ZjQ5ZGU4ZDYzMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaApAQCAtNjcsNiArNjcsMTAgQEAgcHVibGljOgogCiAg
ICAgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1f
cGx1Z2luSW5mbzsgfQogCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb25u
ZWN0aW9uOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoY29uc3QgVCYg
bWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFn
cyA9IDApOworCiAgICAgLy8gQXNrcyB0aGUgcGx1Zy1pbiBwcm9jZXNzIHRvIGNyZWF0ZSBhIG5l
dyBjb25uZWN0aW9uIHRvIGEgd2ViIHByb2Nlc3MuIFRoZSBjb25uZWN0aW9uIGlkZW50aWZpZXIg
d2lsbCBiZSAKICAgICAvLyBlbmNvZGVkIGluIHRoZSBnaXZlbiBhcmd1bWVudCBlbmNvZGVyIGFu
ZCBzZW50IGJhY2sgdG8gdGhlIGNvbm5lY3Rpb24gb2YgdGhlIGdpdmVuIHdlYiBwcm9jZXNzLgog
ICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6
V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5
Pik7CkBAIC0xNjksNiArMTczLDE3IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+Citib29sIFBsdWdpblByb2Nlc3NQcm94eTo6c2VuZChjb25zdCBUJiBtZXNz
YWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKQor
eworICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsK
KworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gbV9jb25uZWN0aW9uLT5zZW5kKG1lc3NhZ2UsIGRlc3RpbmF0aW9uSUQsIG1lc3NhZ2VTZW5k
RmxhZ3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShQ
TFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFy
ZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oCmluZGV4
IGJhMDZjN2NiYjgwOTgyNDM0NGNlNzljYzQ5YWI0MWI3MWZkM2M4NDguLjVlMzQxY2E3M2M1ZjVi
ZjZlNmE2YzIzMzIzNzYzNjI1OWZjNGM5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vz
c01hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSX1BS
T0NFU1MpCiAKICNpbmNsdWRlICJQbHVnaW5Nb2R1bGVJbmZvLmgiCisjaW5jbHVkZSAiU2hhcmVk
V29ya2VyUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgpAQCAtNDEsNyArNDIsNiBAQCBuYW1lc3BhY2UgQ29yZUlQQyB7CiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgUGx1Z2luSW5mb1N0b3JlOwotY2xhc3MgU2hhcmVkV29ya2VyUHJvY2Vzc1By
b3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2ViUGx1Z2luU2l0ZURhdGFNYW5h
Z2VyOwogCkBAIC01Myw2ICs1Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNoYXJlZFdvcmtl
clByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUs
IFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U2hhcmVkV29ya2VyUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOwogICAgIHZvaWQgcmVtb3ZlU2hhcmVkV29y
a2VyUHJvY2Vzc1Byb3h5KFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSopOwogCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVT4gdm9pZCBzZW5kVG9BbGxWYWxpZFByb2Nlc3Nlcyhjb25zdCBVJiBtZXNz
YWdlKTsKKwogcHJpdmF0ZToKICAgICBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcigpOwogCkBA
IC02MSw2ICs2MywxNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5PiA+IG1fc2hhcmVkV29ya2VyUHJvY2Vzc2VzOwogfTsKIAordGVtcGxhdGU8
dHlwZW5hbWUgVT4gaW5saW5lIHZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6OnNlbmRU
b0FsbFZhbGlkUHJvY2Vzc2VzKGNvbnN0IFUmIG1lc3NhZ2UpCit7CisgICAgY29uc3QgVmVjdG9y
PFJlZlB0cjxTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk+ID4mIHByb2Nlc3NlcyA9IG1fc2hhcmVk
V29ya2VyUHJvY2Vzc2VzOworICAgIHNpemVfdCBwcm9jZXNzQ291bnQgPSBwcm9jZXNzZXMuc2l6
ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvY2Vzc0NvdW50OyArK2kpIHsKKyAg
ICAgICAgU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KiBwcm9jZXNzID0gcHJvY2Vzc2VzW2ldLmdl
dCgpOworICAgICAgICBpZiAocHJvY2Vzcy0+aXNWYWxpZCgpKQorICAgICAgICAgICAgcHJvY2Vz
cy0+c2VuZChtZXNzYWdlLCAwKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRX
b3JrZXJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDAzMGUzZmZjODkxNTFmMTQwYTk0ZDg3MGYzMzY1
MjJkOWZlMTFlOTMuLmI4MDhlZmJhY2RmYWI4ODg2YWZjOGExNTdmNTBjZTg4ZTg5MWEwNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdv
cmtlclByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJl
ZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTY0LDYgKzE2NCwxMSBA
QCB2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nl
c3NMYXVuY2hlciosIENvcmVJUEM6OkNvbgogICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNoYXJlZFdvcmtlclByb2Nlc3M6OkNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCks
IDApOwogICAgIAogICAgIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cyA9IDA7CisKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgaWYgKFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uSXNPY2NsdWRl
ZCgpKQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNoYXJlZFdvcmtlclBy
b2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKSwgMCk7CisjZW5kaWYKIH0KIAog
dm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKGNvbnN0IENvcmVJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb25JZGVudGlmaWVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29y
a2VyUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vy
cy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuaAppbmRleCA5ZjBjNWQyYWNlYjM5ZTJjNjg2Nzg4
ZDcyNDI4NGRhNWQ5YTU4OTU1Li5lMzBiOTg5MThlN2M1YWZmNGZkOWU5NWY2MDNhZDA5NTBhODM1
NzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9T
aGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
U2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuaApAQCAtNTYsNiArNTYsMTAg
QEAgcHVibGljOgogICAgIC8vIFRlcm1pbmF0ZXMgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2Vzcy4K
ICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1
cm4gbV9jb25uZWN0aW9uOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQo
Y29uc3QgVCYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2Fn
ZVNlbmRGbGFncyA9IDApOworCiBwcml2YXRlOgogICAgIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eShTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlciosIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwogCkBAIC05MSw2ICs5NSwxNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0czsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+Citib29sIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6c2VuZChjb25zdCBUJiBtZXNzYWdl
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKQorewor
ICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKKwor
ICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
bV9jb25uZWN0aW9uLT5zZW5kKG1lc3NhZ2UsIGRlc3RpbmF0aW9uSUQsIG1lc3NhZ2VTZW5kRmxh
Z3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTSEFS
RURfV09SS0VSX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAK
aW5kZXggZmU2OWYyYjdlMDNiZDliMTdkNTI2OTYzZDgzYzA1YmM1N2M0ZjAxMS4uMmMxMTg2N2Jm
NDY1MTE5YWJhZDRmNWMxOGRmMmNmYjFlYTJkYTNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcApAQCAtMTA0Nyw0ICsxMDQ3LDI1IEBAIHZvaWQgV2ViQ29udGV4dDo6
c2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoYm9vbCBmbGFnKQogICAg
IHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0SmF2YVNjcmlwdEdh
cmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoZmxhZykpOwogfQogCitib29sIFdlYkNvbnRleHQ6
OnByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKCkKK3sKKyNpZiBQTEFURk9STShNQUMp
CisgICAgcmV0dXJuIHNfcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQ7CisjZWxzZQor
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkNvbnRleHQ6OnNldFByb2Nl
c3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgaWYgKHNfcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQgIT0gZW5h
YmxlZCkgeworICAgICAgICBzX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkID0gZW5h
YmxlZDsKKyAgICAgICAgcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWRDaGFuZ2VkKCk7
CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CisjZW5kaWYKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApp
bmRleCAwZDQ0NDU0YmFiNjNhNjE2M2IzNjM2Zjg2MWEzNWI0N2ViMDM0NDhmLi5mMTI1YmE5MzMy
NzhiNTcxMGJkOTRkODNkNTFlYTk3ODc5NzMzZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmgKQEAgLTEwNSw2ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgV2ViUHJvY2Vzc1By
b3h5KiBkZXByZWNhdGVkU2hhcmVkUHJvY2VzcygpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4gdm9pZCBzZW5kVG9BbGxQcm9jZXNzZXMoY29uc3QgVSYgbWVzc2FnZSk7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVT4gdm9pZCBzZW5kVG9BbGxWYWxpZFByb2Nlc3Nlcyhjb25zdCBVJiBtZXNz
YWdlKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIHNlbmRUb0FsbFByb2Nlc3Nlc1Jl
bGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KGNvbnN0IFUmIG1lc3NhZ2UpOwogICAgIAogICAgIHZv
aWQgcHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyhXZWJQcm9jZXNzUHJveHkqKTsKQEAgLTI0OCw2
ICsyNDksMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRVc2VzTmV0d29ya1Byb2Nlc3MoYm9v
bCk7CiAKKyAgICBzdGF0aWMgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCgp
OworICAgIHN0YXRpYyB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKGJv
b2wpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGF0aWMgYm9vbCBhcHBsaWNhdGlvbklzT2Nj
bHVkZWQoKSB7IHJldHVybiBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZDsgfQorI2VuZGlmCisKIHBy
aXZhdGU6CiAgICAgV2ViQ29udGV4dChQcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0
ZWRCdW5kbGVQYXRoKTsKIApAQCAtMzAyLDYgKzMwOSwxNCBAQCBwcml2YXRlOgogICAgIFN0cmlu
ZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAgICAgU3RyaW5nIHBsYXRmb3JtRGVm
YXVsdENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAorI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBzdGF0aWMgdm9pZCBwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZENoYW5nZWQo
KTsKKyAgICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbkJlY2FtZVZpc2libGUodWludDMyX3QsIHZv
aWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KTsKKyAgICBzdGF0aWMgdm9pZCBhcHBsaWNh
dGlvbkJlY2FtZU9jY2x1ZGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50
MzJfdCk7CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5k
bGVycygpOworICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25I
YW5kbGVycygpOworI2VuZGlmCisKICAgICBQcm9jZXNzTW9kZWwgbV9wcm9jZXNzTW9kZWw7CiAg
ICAgCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+ID4gbV9wcm9jZXNzZXM7CkBA
IC0zOTYsNiArNDExLDExIEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PERpY3Rpb25hcnlDYWxsYmFjaz4gPiBtX2RpY3Rpb25hcnlDYWxsYmFja3M7CiAKICAgICBDb3Jl
SVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAgbV9tZXNzYWdlUmVjZWl2ZXJNYXA7CisKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgc3RhdGljIGJvb2wgc19wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5h
YmxlZDsKKyAgICBzdGF0aWMgYm9vbCBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZDsKKyNlbmRpZgog
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5lIHZvaWQgV2ViQ29udGV4dDo6c2VuZFRv
QWxsUHJvY2Vzc2VzKGNvbnN0IFUmIG1lc3NhZ2UpCkBAIC00MDgsNiArNDI4LDE2IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IGlubGluZSB2b2lkIFdlYkNvbnRleHQ6OnNlbmRUb0FsbFByb2Nlc3Nl
cyhjb25zdCBVJiBtZXNzYWdlCiAgICAgfQogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxp
bmUgdm9pZCBXZWJDb250ZXh0OjpzZW5kVG9BbGxWYWxpZFByb2Nlc3Nlcyhjb25zdCBVJiBtZXNz
YWdlKQoreworICAgIHNpemVfdCBwcm9jZXNzQ291bnQgPSBtX3Byb2Nlc3Nlcy5zaXplKCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9jZXNzQ291bnQ7ICsraSkgeworICAgICAgICBX
ZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgPSBtX3Byb2Nlc3Nlc1tpXS5nZXQoKTsKKyAgICAgICAg
aWYgKHByb2Nlc3MtPmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQobWVzc2Fn
ZSwgMCk7CisgICAgfQorfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIFdlYkNvbnRleHQ6
OnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KGNvbnN0IFUmIG1l
c3NhZ2UpCiB7CiAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IFdlYkNvbnRleHQgZG9lc24n
dCB0cmFjayBwcm9jZXNzZXMgdGhhdCBoYXZlIGV4aXRlZCwgc28gaXQgY2Fubm90IHJlbGF1bmNo
IHRoZXNlLiBQZXJoYXBzIHRoaXMgZnVuY3Rpb25hbGl0eSB3b24ndCBiZSBuZWVkZWQgaW4gdGhp
cyBtb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCBlOGEzOWJkMmJjMWFjM2Q4OWYwNmNiM2Q1MjJkOWNmYjhhMmUwODkyLi4zOWI2OTlhZTYy
MGRiMmQzZjVhNjhiM2NjZjE3MTM0MTZlOGUyYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTMxLDYgKzUzMSwxMSBAQCB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIgY29ubmVjdAogCiAgICAgLy8gVGVsbCB0aGUgY29udGV4dCB0aGF0IHdlIGZpbmlzaGVk
IGxhdW5jaGluZy4KICAgICBtX2NvbnRleHQtPnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcodGhp
cyk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9u
SXNPY2NsdWRlZCgpKQorICAgICAgICBjb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKSwgMCk7CisjZW5kaWYKIH0KIAog
V2ViRnJhbWVQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJGcmFtZSh1aW50NjRfdCBmcmFtZUlE
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250
ZXh0TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1t
CmluZGV4IDAwYzAyY2QwMmQxY2M1Njg2M2ExNTk4ZjNiZDkxMDJlM2Q1ZTY4ZDkuLjI4Yzg1MDhl
MjRjNTZjOTBlZWEwMjFhZWVkZmY2MTMyZjdlYjVhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KQEAgLTI1LDYgKzI1LDEzIEBACiAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29udGV4dC5oIgorI2ltcG9ydCAiV2ViUHJvY2Vz
c01lc3NhZ2VzLmgiCisjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc01hbmFnZXIuaCIKKyNpbXBvcnQg
Ik5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbXBvcnQgIlBsdWdpblByb2Nlc3NNYW5hZ2Vy
LmgiCisjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzTWVzc2FnZXMuaCIKKyNpbXBvcnQgIlNoYXJlZFdv
cmtlclByb2Nlc3NNYW5hZ2VyLmgiCisjaW1wb3J0ICJTaGFyZWRXb3JrZXJQcm9jZXNzTWVzc2Fn
ZXMuaCIKIAogI2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCkBAIC01Miw2ICs1OSw5IEBAIE5TU3RyaW5nICpX
ZWJJY29uRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViSWNvbkRhdGFiYXNlRGly
ZWN0b3J5RGVmYXVsCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitib29sIFdlYkNvbnRleHQ6OnNf
cHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQgPSBmYWxzZTsKK2Jvb2wgV2ViQ29udGV4
dDo6c19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPSBmYWxzZTsKKwogU3RyaW5nIFdlYkNvbnRleHQ6
OmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogewogICAgIE5TU3RyaW5nICphcHBOYW1lID0g
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXTsKQEAgLTI1Nyw1ICsyNjcs
ODIgQEAgdm9pZCBXZWJDb250ZXh0OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdAogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBhc3RlYm9hcmRUeXBlKTsKIH0K
IAotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit2b2lkIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQmVj
YW1lVmlzaWJsZSh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCit7
CisgICAgaWYgKHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKSB7CisgICAgICAgIHNfYXBwbGljYXRp
b25Jc09jY2x1ZGVkID0gZmFsc2U7CisKKyAgICAgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQq
PiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOworICAgICAgICBmb3IgKHNp
emVfdCBpID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKQorICAg
ICAgICAgICAgY29udGV4dHNbaV0tPnNlbmRUb0FsbFZhbGlkUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoZmFsc2UpKTsKKworI2lmIEVOQUJM
RShQTFVHSU5fUFJPQ0VTUykKKyAgICAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgp
LnNlbmRUb0FsbFZhbGlkUHJvY2Vzc2VzKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzOjpTZXRBcHBs
aWNhdGlvbklzT2NjbHVkZWQoZmFsc2UpKTsKKyNlbmRpZgorI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCisgICAgICAgIE5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2VuZFRvUHJv
Y2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChm
YWxzZSkpOworI2VuZGlmCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKKyAgICAg
ICAgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNlbmRUb0FsbFZhbGlkUHJv
Y2Vzc2VzKE1lc3NhZ2VzOjpTaGFyZWRXb3JrZXJQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2Nj
bHVkZWQoZmFsc2UpKTsKKyNlbmRpZgorICAgIH0KK30KKwordm9pZCBXZWJDb250ZXh0OjphcHBs
aWNhdGlvbkJlY2FtZU9jY2x1ZGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1
aW50MzJfdCkKK3sKKyAgICBpZiAoIXNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKSB7CisgICAgICAg
IHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkID0gdHJ1ZTsKKyAgICAgICAgY29uc3QgVmVjdG9yPFdl
YkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBjb3VudDsg
KytpKQorICAgICAgICAgICAgY29udGV4dHNbaV0tPnNlbmRUb0FsbFZhbGlkUHJvY2Vzc2VzKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSkpOworCisj
aWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorICAgICAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6
c2hhcmVkKCkuc2VuZFRvQWxsVmFsaWRQcm9jZXNzZXMoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3M6
OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKSk7CisjZW5kaWYKKyNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQorICAgICAgICBOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNl
bmRUb1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2Nj
bHVkZWQodHJ1ZSkpOworI2VuZGlmCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykK
KyAgICAgICAgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNlbmRUb0FsbFZh
bGlkUHJvY2Vzc2VzKE1lc3NhZ2VzOjpTaGFyZWRXb3JrZXJQcm9jZXNzOjpTZXRBcHBsaWNhdGlv
bklzT2NjbHVkZWQodHJ1ZSkpOworI2VuZGlmCisgICAgfQorfQorCit2b2lkIFdlYkNvbnRleHQ6
OnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKQoreworI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIGlmICghV0tSZWdpc3Rlck9jY2x1
c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGlj
YXRpb25CZWNhbWVWaXNpYmxlLCBhcHBsaWNhdGlvbkJlY2FtZVZpc2libGUpKSB7CisgICAgICAg
IFdURkxvZ0Fsd2F5cygiUmVnaXN0ZXJhdGlvbiBvZiBcIkFwcCBCZWNhbWUgVmlzaWJsZVwiIG5v
dGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCFXS1JlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihXS09jY2x1
c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkLCBhcHBsaWNhdGlv
bkJlY2FtZU9jY2x1ZGVkKSkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJSZWdpc3RlcmF0aW9uIG9m
IFwiQXBwIEJlY2FtZSBPY2NsdWRlZFwiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIp
OworI2VuZGlmCit9CiAKK3ZvaWQgV2ViQ29udGV4dDo6dW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlm
aWNhdGlvbkhhbmRsZXJzKCkKK3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwOTAKKyAgICAvLyBSZXNldCBvY2NsdXNpb24gc3RhdGUuCisgICAgYXBwbGljYXRpb25C
ZWNhbWVWaXNpYmxlKDAsIDAsIDAsIDAsIDApOworCisgICAgaWYgKCFXS1VucmVnaXN0ZXJPY2Ns
dXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxp
Y2F0aW9uQmVjYW1lT2NjbHVkZWQsIGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQpKSB7CisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiUmVtb3ZhbCBvZiBcIkFwcGxpY2F0aW9uIEJlY2FtZSBPY2NsdWRl
ZFwiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKCFXS1VucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVy
KFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSwgYXBw
bGljYXRpb25CZWNhbWVWaXNpYmxlKSkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJSZW1vdmFsIG9m
IFwiQXBwbGljYXRpb24gQmVjYW1lIFZpc2libGVcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWls
ZWQuXG4iKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkNvbnRleHQ6OnByb2Nlc3NTdXBwcmVzc2lv
blN1cHBvcnRFbmFibGVkQ2hhbmdlZCgpCit7CisgICAgaWYgKHNfcHJvY2Vzc1N1cHByZXNzaW9u
U3VwcG9ydEVuYWJsZWQpCisgICAgICAgIHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFu
ZGxlcnMoKTsKKyAgICBlbHNlCisgICAgICAgIHVucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRp
b25IYW5kbGVycygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MDdhOTMzNjIy
OTBlNGQ4YmE2NjQ0ZmZmN2I2OTYzMGQ5ZTM2ODc4Li5jZGNiOTIxNjNmYzhkNjdmNWJjYWRiZTM3
MTE1NzAzZWJkNTBhY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MzUsNiArNTM1LDkgQEAKIAkJOTNGQzY3QkUxMkQzQ0NG
MjAwQTYwNjEwIC8qIERlY29kZXJBZGFwdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZDNjc5RTEyRDNDQzc0MDBBNjA2MTAgLyogRGVjb2RlckFk
YXB0ZXIuaCAqLzsgfTsKIAkJOTNGQzY3QkYxMkQzQ0NGMjAwQTYwNjEwIC8qIEVuY29kZXJBZGFw
dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RkM2NzlGMTJEM0NDNzQwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5jcHAgKi87IH07CiAJCTkz
RkM2N0MwMTJEM0NDRjIwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGQzY3QTAxMkQzQ0M3NDAwQTYwNjEw
IC8qIEVuY29kZXJBZGFwdGVyLmggKi87IH07CisJCTlGNTRGODhGMTY0ODhFODcwMDdERjgxQSAv
KiBDaGlsZFByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1t
ICovOyB9OworCQk5RjU0Rjg5MTE2NDg4RUZBMDA3REY4MUEgLyogUHJvY2Vzc1V0aWxpdGllcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY1NEY4OTAx
NjQ4OEVGQTAwN0RGODFBIC8qIFByb2Nlc3NVdGlsaXRpZXMuaCAqLzsgfTsKKwkJOUY1NEY4OTMx
NjQ4OEYxMzAwN0RGODFBIC8qIFByb2Nlc3NVdGlsaXRpZXNNYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjU0Rjg5MjE2NDg4RjEzMDA3REY4MUEg
LyogUHJvY2Vzc1V0aWxpdGllc01hYy5tbSAqLzsgfTsKIAkJQjYyRTczMTAxNDMwNDdBNjAwNjlF
QzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCNjJFNzMwRjE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVz
dWx0LmNwcCAqLzsgfTsKIAkJQjYyRTczMTIxNDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJl
c3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjYy
RTczMTExNDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUI2MzQwM0Y5MTQ5MTBENTcwMDEw
NzBCNSAvKiBBUElPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjYzNDAzRjgxNDkxMEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5jcHAgKi87
IH07CkBAIC0xNzQ2LDYgKzE3NDksOSBAQAogCQk5M0ZDNjc5RTEyRDNDQzc0MDBBNjA2MTAgLyog
RGVjb2RlckFkYXB0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2Rl
ckFkYXB0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGQzY3OUYxMkQzQ0M3
NDAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEVuY29kZXJBZGFwdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNGQzY3QTAxMkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVuY29kZXJBZGFwdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nl
c3NNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFBy
b2Nlc3NNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlGNTRGODkwMTY0ODhF
RkEwMDdERjgxQSAvKiBQcm9jZXNzVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFByb2Nlc3NVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOUY1NEY4OTIxNjQ4OEYxMzAwN0RGODFBIC8qIFByb2Nlc3NVdGlsaXRpZXNNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzVXRpbGl0aWVzTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzJENUQ3RjEyMzZDQkE4MDBBODhC
MTUgLyogV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCMzk2RUE1NTEyRTBFRDJEMDBGNEZFQjcgLyogY29uZmlnLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCNjJFNzMwRjE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLSGl0VGVzdFJlc3VsdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjM3LDYgKzI2NDMsNyBAQAogCQkJCUMw
RTNBQTQ4MTIwOUU0NTAwMEE0OUQwMSAvKiBNb2R1bGVNYWMubW0gKi8sCiAJCQkJQkNFMDkzNzUx
NEZCMTI4QjAwMTEzOEQ5IC8qIExheWVySG9zdGluZ0NvbnRleHQubW0gKi8sCiAJCQkJQkNFMDkz
NzYxNEZCMTI4QjAwMTEzOEQ5IC8qIExheWVySG9zdGluZ0NvbnRleHQuaCAqLywKKwkJCQk5RjU0
Rjg5MjE2NDg4RjEzMDA3REY4MUEgLyogUHJvY2Vzc1V0aWxpdGllc01hYy5tbSAqLywKIAkJCQkx
QTI0QkYzOTEyMDg5NkE2MDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5TWFjLmNwcCAqLywKIAkJCQky
OTZCRDg1QjE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLmggKi8sCiAJCQkJMjk2
QkQ4NUMxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5tbSAqLywKQEAgLTM2Mzgs
NiArMzY0NSw3IEBACiAJCQkJRTE3OUZEOUUxMzREMzgyNTAwMTVCODgzIC8qIEFyZ3VtZW50Q29k
ZXJzTWFjLm1tICovLAogCQkJCUUxQTMxNzMxMTM0Q0VBNkMwMDdDOUE0RiAvKiBBdHRyaWJ1dGVk
U3RyaW5nLmggKi8sCiAJCQkJRTFBMzE3MzQxMzRDRUE4MDAwN0M5QTRGIC8qIEF0dHJpYnV0ZWRT
dHJpbmcubW0gKi8sCisJCQkJOUY1NEY4OEUxNjQ4OEU4NzAwN0RGODFBIC8qIENoaWxkUHJvY2Vz
c01hYy5tbSAqLywKIAkJCQkxQTJBNEFGRTE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JTcGFjZURh
dGEuaCAqLywKIAkJCQkxQTJBNEFGRDE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JTcGFjZURhdGEu
bW0gKi8sCiAJCQkJMUE2RjlGQjYxMUUxNDA4NTAwREIxMzcxIC8qIENvbW1hbmRMaW5lTWFjLmNw
cCAqLywKQEAgLTM4MDUsNiArMzgxMyw3IEBACiAJCQkJQzBFM0FBNDUxMjA5RTJCQTAwQTQ5RDAx
IC8qIE1vZHVsZS5jcHAgKi8sCiAJCQkJQzBFM0FBNDQxMjA5RTJCQTAwQTQ5RDAxIC8qIE1vZHVs
ZS5oICovLAogCQkJCUJDODc4MEZCMTE2MUMyQjgwMENDMjc2OCAvKiBQbGF0Zm9ybVByb2Nlc3NJ
ZGVudGlmaWVyLmggKi8sCisJCQkJOUY1NEY4OTAxNjQ4OEVGQTAwN0RGODFBIC8qIFByb2Nlc3NV
dGlsaXRpZXMuaCAqLywKIAkJCQkxQTI0QkVEMzEyMDg5NEQxMDBGQkIwNTkgLyogU2hhcmVkTWVt
b3J5LmggKi8sCiAJCQkJQkMyRTZFN0QxMTQxOTcwQzAwQTYzQjFFIC8qIFdvcmtRdWV1ZS5jcHAg
Ki8sCiAJCQkJQkMyRTZFN0UxMTQxOTcwQzAwQTYzQjFFIC8qIFdvcmtRdWV1ZS5oICovLApAQCAt
NDgyNCw2ICs0ODMzLDcgQEAKIAkJCQlFMUI3ODQ3MTE2M0YyNDY5MDAwN0I2OTIgLyogUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjE2QURFMTY0ODU5ODQw
MDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFCMTZBRTIxNjQ4NjU2RDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTlGNTRGODkxMTY0ODhFRkEwMDdERjgxQSAvKiBQ
cm9jZXNzVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTU3NTYsNiArNTc2Niw4IEBACiAJ
CQkJMkQyQURGMTAxNjM2NEQ4MjAwMTk3RTQ3IC8qIFBERlBsdWdpbkNob2ljZUFubm90YXRpb24u
bW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUIxNkFERDE2NDg1OTg0MDAyOTBENjIgLyogUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUIxNkFFMTE2NDg2
NTZEMDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTlGNTRGODhGMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMu
bW0gaW4gU291cmNlcyAqLywKKwkJCQk5RjU0Rjg5MzE2NDg4RjEzMDA3REY4MUEgLyogUHJvY2Vz
c1V0aWxpdGllc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDJjYzFlNjI4MDQ2MzI4MTMxMTQw
NThmYWNiZWExNTAwNTczNWNjMjQuLjJjMWI0MzA1MjM2NGQzNmZiNjJhNmVkN2U5YmMyYWY0YzNk
ODA1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTk3LDQgKzk3LDggQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyB7CiAgICAg
U2VjSXRlbVJlc3BvbnNlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0OjpTZWNJdGVtUmVzcG9u
c2VEYXRhIHJlc3BvbnNlKSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1ZXVlCiAgICAgU2VjS2V5Y2hh
aW5JdGVtUmVzcG9uc2UodWludDY0X3QgcmVxdWVzdElELCBXZWJLaXQ6OlNlY0tleWNoYWluSXRl
bVJlc3BvbnNlRGF0YSByZXNwb25zZSkgRGlzcGF0Y2hPbkNvbm5lY3Rpb25RdWV1ZQogI2VuZGlm
CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgU2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wg
ZmxhZyk7CisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
bWFjL1dlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvbWFjL1dlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5tbQppbmRleCAyYWY1OTQ4ZmQ5ZTE3N2E0
NTBkODY5NjFkZmY1OTZlODU3MDEyNjhjLi5hMzMyN2M1YmQzNTUxMjgzZjg0OWI0MzZmZWY1ODY0
Nzk0OWUwM2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQ
cm9jZXNzSW5pdGlhbGl6YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9t
YWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5oIgogCisjaW1w
b3J0ICJQcm9jZXNzVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAjaW1wb3J0
ICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPFdlYkNvcmUvUnVuTG9vcC5oPgpAQCAt
NDYsOSArNDcsNyBAQCB2b2lkIEluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFN0cmluZyYgY2xp
ZW50SWRlbnRpZmllciwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SQogICAgIFdURjo6aW5pdGlhbGl6
ZU1haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIAot
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAotICAgIFtbTlNQcm9j
ZXNzSW5mbyBwcm9jZXNzSW5mb10gZGlzYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uOkAiRGlzYWJs
ZSBXZWJQcm9jZXNzIEF1dG8gVGVybWluYXRpb24iXTsKLSNlbmRpZgorICAgIGRpc2FibGVQcm9j
ZXNzU3VwcHJlc3Npb24oQCJXZWJQcm9jZXNzIExhdW5jaCIpOwogCiAgICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkuaW5pdGlhbGl6ZVNoaW0oKTsKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5pbml0
aWFsaXplU2FuZGJveChjbGllbnRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL3dpbi9XZWJLaXQyLnZjcHJvaiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJv
agppbmRleCAwNTdjYmYzZGIzNmZlODNkY2I1Mzk2OGQwMDBhNmVlNzQ5MTljNTliLi5iMjlkNjkw
ZjRiNjNhZDY1N2QzZjBkMmJmMTIxZTUyY2YyYjRmZWRlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIu
dmNwcm9qCkBAIC0zOTYzLDYgKzM5NjMsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGxhdGZvcm1cUHJvY2Vzc1V0aWxpdGllcy5oIgorCQkJ
CT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxQbGF0Zm9ybVxT
aGFyZWRNZW1vcnkuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172647</attachid>
            <date>2012-11-06 14:18:23 -0800</date>
            <delta_ts>2012-11-06 15:59:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100997-20121106141635.patch</filename>
            <type>text/plain</type>
            <size>55404</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzFkYjVmNzA3ZWMzNWE1
MWYzOTEyZWFjMGIwM2VmN2FiMzVlMDcwZS4uYTU3MTlhZGNmNjE1MDFiYmJhMmU5YmY1MTI2ZmUw
Yjk3ZjgxYjViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0xMS0wNiAgS2ly
YW4gTXVwcGFsYSAgPGNtdXBwYWxhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYXBwbGljYXRp
b24gb2NjbHVzaW9uIGNyaXRlcmlvbiB0byBlbmFibGUvZGlzYWJsZSBwcm9jZXNzIHN1cHByZXNz
aW9uIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAwOTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUHJvdmlkZSBzdXBwb3J0IGZvciBlbmFibGluZyBhbmQgZGlzYWJsaW5nIHByb2Nlc3Mgc3Vw
cHJlc3Npb24gd2hlbiBhcHBsaWNhdGlvbiBpcyBjb21wbGV0ZWx5IG9jY2x1ZGVkIG9uIE1hYy4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOiBB
ZGRlZCBtZXNzYWdlIHRvIHVwZGF0ZSBhcHBsaWNhdGlvbiBvY2NsdXNpb24gc3RhdHVzLgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01haW5NYWMubW06CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzTWFpbik6IFJlbW92ZWQgY2FsbCB0byB0YWtlIHBy
b2Nlc3Mgc3VwcHJlc3Npb24gYXNzZXJ0aW9uIHNpbmNlIENoaWxkUHJvY2VzcworICAgICAgICB0
YWtlcyBvbmUgb24gY29uc3RydXRpb24uCisgICAgICAgICogUGxhdGZvcm0vbWFjL1Byb2Nlc3NT
dXBwcmVzc2lvbkRpc2FibGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVyKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1N1
cHByZXNzaW9uRGlzYWJsZXI6OmNyZWF0ZSk6CisgICAgICAgICogUGxhdGZvcm0vbWFjL1Byb2Nl
c3NTdXBwcmVzc2lvbkRpc2FibGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OlByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVyOjpQcm9jZXNzU3VwcHJlc3Np
b25EaXNhYmxlcik6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVy
Ojp+UHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZXIpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNz
U3VwcHJlc3Npb25EaXNhYmxlcjo6ZGlzYWJsZVByb2Nlc3NTdXBwcmVzc2lvbik6CisgICAgICAg
IChXZWJLaXQ6OlByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVyOjplbmFibGVQcm9jZXNzU3VwcHJl
c3Npb24pOgorICAgICAgICBBZGRlZCBjbGFzcyB0byB0YWtlIHByb2Nlc3Mgc3VwcHJlc3Npb24g
YXNzZXJ0aW9uIG9uIGNyZWF0aW9uIGFuZCByZWxlYXNlIGl0IG9uIGRlc3RydWN0aW9uLgorICAg
ICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5tZXNzYWdlcy5pbjogQWRkZWQgbWVz
c2FnZSB0byB1cGRhdGUgYXBwbGljYXRpb24gb2NjbHVzaW9uIHN0YXR1cy4KKyAgICAgICAgKiBQ
bHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFpbk1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc01haW4pOiBSZW1vdmVkIGNhbGwgdG8gdGFrZSBwcm9jZXNzIHN1cHBy
ZXNzaW9uIGFzc2VydGlvbiBzaW5jZSBDaGlsZFByb2Nlc3MKKyAgICAgICAgdGFrZXMgb25lIG9u
IGNvbnN0cnVjdGlvbi4KKyAgICAgICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpDaGlsZFByb2Nlc3MpOiBUYWtlIHByb2Nlc3Mgc3Vw
cHJlc3Npb24gYXNzZXJ0aW9uIG9uIGNvbnN0cnVjdGlvbi4KKyAgICAgICAgKiBTaGFyZWQvQ2hp
bGRQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQ2hpbGRQcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjphcHBsaWNhdGlvbklzT2NjbHVkZWQpOgor
ICAgICAgICAqIFNoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6c2V0QXBwbGljYXRpb25J
c09jY2x1ZGVkKTogUmVsZWFzZSBwcm9jZXNzIHN1cHByZXNzaW9uIGFzc2VydGlvbiBpZiBhcHBs
aWNhdGlvbgorICAgICAgICBiZWNvbWVzIG9jY2x1ZGVkIG9yIHRha2UgYSBuZXcgYXNzZXJ0aW9u
IGlmIGFwcGxpY2F0aW9uIGJlY29tZXMgdmlzaWJsZS4KKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQ
cm9jZXNzOjpjcmVhdGVQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlcik6CisgICAgICAgICogU2hh
cmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLm1lc3NhZ2VzLmluOiBBZGRlZCBt
ZXNzYWdlIHRvIHVwZGF0ZSBhcHBsaWNhdGlvbiBvY2NsdXNpb24gc3RhdHVzLgorICAgICAgICAq
IFNoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbik6IFJlbW92ZWQgY2FsbCB0
byB0YWtlIHByb2Nlc3Mgc3VwcHJlc3Npb24gYXNzZXJ0aW9uIHNpbmNlIENoaWxkUHJvY2Vzcwor
ICAgICAgICB0YWtlcyBvbmUgb24gY29uc3RydWN0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzTWFuYWdlci5oOgorICAgICAgICAoTmV0d29ya1Byb2Nlc3NN
YW5hZ2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1
bmNoaW5nKTogVXBkYXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMgcG9zdCBsYXVuY2gu
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojppc1ZhbGlkKToKKyAgICAgICAgKE5l
dHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL21hYy9OZXR3
b3JrUHJvY2Vzc01hbmFnZXJNYWMubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NNYW5hZ2VyOjpzZXRBcHBsaWNhdGlvbklzT2NjbHVk
ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL21hYy9OZXR3b3JrUHJvY2Vzc1Byb3h5
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRBcHBsaWNh
dGlvbklzT2NjbHVkZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oOgorICAgICAgICAoUGx1Z2luUHJvY2Vzc01h
bmFnZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNo
aW5nKTogVXBkYXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMgcG9zdCBsYXVuY2guCisg
ICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAg
IChQbHVnaW5Qcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJv
eHk6OmlzVmFsaWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9j
ZXNzTWFuYWdlck1hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnNldEFwcGxpY2F0aW9uSXNPY2Ns
dWRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJv
Y2Vzc01hbmFnZXIuaDoKKyAgICAgICAgKFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OmRpZEZpbmlz
aExhdW5jaGluZyk6IFVwZGF0ZSBhcHBsaWNhdGlvbiBvY2NsdXNpb24gc3RhdHVzIHBvc3QgbGF1
bmNoLgorICAgICAgICAqIFVJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nl
c3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6Omlz
VmFsaWQpOgorICAgICAgICAoU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvU2hhcmVkV29ya2Vycy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXJNYWMu
bW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkV29y
a2VyUHJvY2Vzc01hbmFnZXI6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1hYy5t
bTogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHk6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVh
dGUpOiBBZGRlZCBjYWxsIHRvIGluaXRpYWxpemUgcHJvY2VzcyBzdXBwcmVzc2lvbiBzdXBwb3J0
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb250ZXh0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6YXBwbGljYXRpb25Jc09jY2x1ZGVkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOiBVcGRhdGUgYXBwbGljYXRp
b24gb2NjbHVzaW9uIHN0YXR1cyBwb3N0IGxhdW5jaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dlYkNvbnRleHRNYWMubW06CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0OjphcHBsaWNhdGlvbkJlY2FtZVZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0OjphcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKToKKyAgICAgICAgTm90aWZpY2F0
aW9uIGhhbmRsZXJzIGZvciBpbmZvcm1pbmcgbm9uIFVJIFdlYktpdDIgcHJvY2Vzc2VzIG9mIGNo
YW5nZXMgdG8gYXBwbGljYXRpb24gb2NjbHVzaW9uIHN0YXRlLgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGV4dDo6aW5pdGlhbGl6ZVByb2Nlc3NTdXBwcmVzc2lvblN1cHBv
cnQpOgorICAgICAgICBIZWxwZXIgbWV0aG9kIHRvIHJlZ2lzdGVyIG9jY2x1c2lvbiBub3RpZmlj
YXRpb24gaGFuZGxlcnMgaWYgcHJvY2VzcyBzdXBwcmVzc2lvbiBzdXBwb3J0IGlzIGVuYWJsZWQu
CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjogQWRkZWQgbWVzc2FnZSB0byB1cGRh
dGUgYXBwbGljYXRpb24gb2NjbHVzaW9uIHN0YXR1cy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL21h
Yy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6OkluaXRpYWxp
emVXZWJQcm9jZXNzKTogUmVtb3ZlZCBjYWxsIHRvIHRha2UgcHJvY2VzcyBzdXByZXNzaW9uIGFz
c2VydGlvbiBzaW5jZSBDaGlsZFByb2Nlc3MKKyAgICAgICAgdGFrZXMgb25lIG9uIGNvbnN0cnVj
dGlvbi4KKwogMjAxMi0xMS0wNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgogCiAgICAgICAgIEJlZ2luIHN0dWJiaW5nIG91dCB0aGUgbmV3IHJlbW90ZSBsYXllciB0cmVl
IGRyYXdpbmcgYXJlYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAwMjk1MzZhMzQxMjA1ZTQyNDVjMmE4
MjY1YWQ3YzFhOGYyODI5MzVmLi5kMjQzYmQ0NGY2MDA2MzRiZGQyMjUwYzM0NzE3YjE3NWViMTNi
MzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjgsNiArMjgsMTAgQEAgbWVzc2FnZXMgLT4gTmV0
d29ya1Byb2Nlc3MgewogCiAgICAgIyBDcmVhdGVzIGEgY29ubmVjdGlvbiBmb3IgY29tbXVuaWNh
dGlvbiB3aXRoIGEgV2ViUHJvY2VzcwogICAgIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKCkKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBTZXRBcHBsaWNhdGlvbklzT2NjbHVk
ZWQoYm9vbCBmbGFnKQorI2VuZGlmCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdv
cmtQcm9jZXNzTWFpbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9O
ZXR3b3JrUHJvY2Vzc01haW5NYWMubW0KaW5kZXggMTMzNjM4YTYyMzRlNzExMTBkOWZlNzQ4NjZh
N2Y3MGExMDc3MjYwNC4uYzU2ZjgwYTJhOWVmMzdiNDgyN2MwYzU4OWEwMDk4NzU1YmZmZDNmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9j
ZXNzTWFpbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0
d29ya1Byb2Nlc3NNYWluTWFjLm1tCkBAIC04NCwxMCArODQsNiBAQCBpbnQgTmV0d29ya1Byb2Nl
c3NNYWluKGNvbnN0IENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkKICAgICBXVEY6OmluaXRpYWxp
emVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAK
LSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLSAgICBbW05TUHJv
Y2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRpc2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjpAIkRpc2Fi
bGUgTmV0d29ya1Byb2Nlc3MgQXV0byBUZXJtaW5hdGlvbiJdOwotI2VuZGlmCi0KICAgICAvLyBJ
bml0aWFsaXplIHRoZSBuZXR3b3JrIHByb2Nlc3MgY29ubmVjdGlvbi4KICAgICBOZXR3b3JrUHJv
Y2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZShDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
KHNlcnZlclBvcnQpLCBSdW5Mb29wOjptYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9tYWMvUHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZXIuaCBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL21hYy9Qcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmEwZWY1NWQ2ZmQwN2ExODEzMDk5ZmJlNzg4NmNhM2MyMzdkMDIyM2UKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvUHJvY2Vzc1N1cHByZXNzaW9uRGlz
YWJsZXIuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQcm9jZXNzU3Vw
cHJlc3Npb25EaXNhYmxlcl9oCisjZGVmaW5lIFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVyX2gK
KworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIE5TU3RyaW5nOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZXIg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVyKTsK
KyAgICAKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxQcm9jZXNzU3VwcHJlc3Npb25E
aXNhYmxlcj4gY3JlYXRlKE5TU3RyaW5nICpyZWFzb24pIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBQ
cm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlcihyZWFzb24pKTsgfQorICAgIAorICAgIFByb2Nlc3NT
dXBwcmVzc2lvbkRpc2FibGVyKE5TU3RyaW5nICpyZWFzb24pOworICAgIH5Qcm9jZXNzU3VwcHJl
c3Npb25EaXNhYmxlcigpOworCitwcml2YXRlOgorICAgIHZvaWQgZGlzYWJsZVByb2Nlc3NTdXBw
cmVzc2lvbigpOworICAgIHZvaWQgZW5hYmxlUHJvY2Vzc1N1cHByZXNzaW9uKCk7CisKKyAgICBS
ZXRhaW5QdHI8TlNTdHJpbmc+IG1fcmVhc29uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvUHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvUHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZXIu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWMwZDYzNTdiZGE2Njg4YjNiNDVjYzcyY2QxNDdiMGVjNGY5MzIyYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Qcm9jZXNzU3Vw
cHJlc3Npb25EaXNhYmxlci5tbQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlci5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworUHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZXI6OlByb2Nlc3NT
dXBwcmVzc2lvbkRpc2FibGVyKE5TU3RyaW5nICpyZWFzb24pCisgICAgOiBtX3JlYXNvbihBZG9w
dE5TLCByZWFzb24pCit7CisgICAgZGlzYWJsZVByb2Nlc3NTdXBwcmVzc2lvbigpOworfQorCitQ
cm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlcjo6flByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVyKCkK
K3sKKyAgICBlbmFibGVQcm9jZXNzU3VwcHJlc3Npb24oKTsKK30KKwordm9pZCBQcm9jZXNzU3Vw
cHJlc3Npb25EaXNhYmxlcjo6ZGlzYWJsZVByb2Nlc3NTdXBwcmVzc2lvbigpCit7CisjaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisgICAgLy8gVGhlIGZvbGxvd2lu
ZyBhc3N1bWVzIHRoYXQgYSBwcm9jZXNzIGVuYWJsaW5nIEF1dG9tYXRpY1Rlcm1pbmF0aW9uU3Vw
cG9ydCBhbHNvCisgICAgLy8gdGFrZXMgYSBBdXRvbWF0aWNUZXJtaW5hdGlvbiBhc3NlcnRpb24g
Zm9yIHRoZSBsaWZldGltZSBvZiB0aGUgcHJvY2Vzcy4KKyAgICBbW05TUHJvY2Vzc0luZm8gcHJv
Y2Vzc0luZm9dIGRpc2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjptX3JlYXNvbi5nZXQoKV07Cisj
ZW5kaWYKK30KKwordm9pZCBQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlcjo6ZW5hYmxlUHJvY2Vz
c1N1cHByZXNzaW9uKCkKK3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwOTAKKyAgICAvLyBUaGUgZm9sbG93aW5nIGFzc3VtZXMgdGhhdCBhIHByb2Nlc3MgZW5hYmxp
bmcgQXV0b21hdGljVGVybWluYXRpb25TdXBwb3J0IGFsc28KKyAgICAvLyB0YWtlcyBhIEF1dG9t
YXRpY1Rlcm1pbmF0aW9uIGFzc2VydGlvbiBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBwcm9jZXNz
LgorICAgIFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gZW5hYmxlQXV0b21hdGljVGVybWlu
YXRpb246bV9yZWFzb24uZ2V0KCldOworI2VuZGlmCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBl
NGVmNDUwNzI0YmEwYTVlYzAxMzkyNjU3MGVmMjQ1OWM0YzdkNDYzLi40MTIyNmIxNGQ1M2UzNzEw
NmY1NDFiZDFkYWE1M2VhODhjYWRjYzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zOCw2ICszOCwxMCBA
QCBtZXNzYWdlcyAtPiBQbHVnaW5Qcm9jZXNzIHsKICAgICAjIEFza3MgdGhlIHBsdWctaW4gdG8g
Y2xlYXIgZGF0YSBmb3IgdGhlIGdpdmVuIHNpdGVzLiBUaGUgcGx1Zy1pbiBwcm9jZXNzIHNlbmRz
IGJhY2sKICAgICAjIGEgRGlkQ2xlYXJTaXRlRGF0YSBtZXNzYWdlIHdoZW4gZG9uZS4KICAgICBD
bGVhclNpdGVEYXRhKFZlY3RvcjxXVEY6OlN0cmluZz4gc2l0ZXMsIHVpbnQ2NF90IGZsYWdzLCB1
aW50NjRfdCBtYXhBZ2VJblNlY29uZHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgU2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wgZmxhZyk7CisjZW5k
aWYKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L21hYy9QbHVnaW5Qcm9jZXNzTWFpbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvbWFjL1BsdWdpblByb2Nlc3NNYWluTWFjLm1tCmluZGV4IDkxMmIxYzRmYjViYmYyNDVjMWVi
ZmFkYjk0NzIwMDg5YWUyYTFkYTAuLmZmZTFlMmRkMzRjNzVlMmU4ZjBiNWEyYWI4MWJmN2ViZmZh
ZDk3ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdp
blByb2Nlc3NNYWluTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFj
L1BsdWdpblByb2Nlc3NNYWluTWFjLm1tCkBAIC0xMTcsMTAgKzExNyw2IEBAIGludCBQbHVnaW5Q
cm9jZXNzTWFpbihjb25zdCBDb21tYW5kTGluZSYgY29tbWFuZExpbmUpCiAgICAgV1RGOjppbml0
aWFsaXplTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgp
OwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi0gICAgW1tO
U1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBkaXNhYmxlQXV0b21hdGljVGVybWluYXRpb246QCJE
aXNhYmxlIFBsdWdpblByb2Nlc3MgQXV0byBUZXJtaW5hdGlvbiJdOwotI2VuZGlmCi0KICNpZiBk
ZWZpbmVkKF9faTM4Nl9fKQogICAgIC8vIEluaXRpYWxpemUgdGhlIHNoaW0gZm9yIDMyLWJpdCBv
bmx5LgogICAgIFBsdWdpblByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemVTaGltKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCmluZGV4IGI2NWVlYmUyY2U0MjU1NzU0YTM0
NzE3NWY4NjU5YWNiODNmNTMxMWUuLmIyMWFjMTQzZTIzYjlkNGE2MzA5MmZhMTMxOWZhODZmZTZi
MTZjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCkBAIC0zMCw2ICsz
MCwxMCBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMp
CisjaW5jbHVkZSAiUHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZXIuaCIKKyNlbmRpZgorCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02MCw2ICs2NCw5
IEBAIENoaWxkUHJvY2Vzczo6Q2hpbGRQcm9jZXNzKCkKICAgICA6IG1fdGVybWluYXRpb25UaW1l
b3V0KDApCiAgICAgLCBtX3Rlcm1pbmF0aW9uQ291bnRlcigwKQogICAgICwgbV90ZXJtaW5hdGlv
blRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNoaWxkUHJvY2Vzczo6dGVybWluYXRpb25U
aW1lckZpcmVkKQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1fcHJvY2Vzc1N1cHByZXNzaW9u
RGlzYWJsZXIoY3JlYXRlUHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZXIoKSkKKyNlbmRpZgogewog
ICAgIC8vIEZJWE1FOiBUaGUgdGVybWluYXRpb24gdGltZXIgc2hvdWxkIG5vdCBiZSBzY2hlZHVs
ZWQgb24gdGhlIG1haW4gcnVuIGxvb3AuCiAgICAgLy8gSXQgd29uJ3Qgd29yayB3aXRoIHRoZSB0
aHJlYWRlZCBtb2RlLCBidXQgaXQncyBub3QgcmVhbGx5IHVzZWZ1bCBhbnl3YXkgYXMgaXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgKaW5kZXggOWVjMWE1MGQ5OTJmODAxY2U2NzQ0
YzBhODQ1MjhmYjJmMWRiNzliNC4uZjk4NzFhNTc2MDRjMjNjZGY1YjkwYzE1NzA1N2I2YmQ4NTNi
ZTliNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuaApAQCAtMzEsNiArMzEsMTAg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKKyNpZiBQTEFURk9STShNQUMpCitjbGFzcyBQcm9j
ZXNzU3VwcHJlc3Npb25EaXNhYmxlcjsKKyNlbmRpZgorCiBjbGFzcyBDaGlsZFByb2Nlc3MgOiBw
cm90ZWN0ZWQgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShDaGlsZFByb2Nlc3MpOwogCkBAIC01Nyw2ICs2MSwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIENoaWxkUHJvY2VzcyYgbV9jaGlsZFByb2Nlc3M7CiAgICAgfTsKIAorI2lmIFBMQVRGT1JN
KE1BQykKKyAgICBib29sIGFwcGxpY2F0aW9uSXNPY2NsdWRlZCgpIGNvbnN0IHsgcmV0dXJuICFt
X3Byb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVyOyB9CisgICAgdm9pZCBzZXRBcHBsaWNhdGlvbklz
T2NjbHVkZWQoYm9vbCBmbGFnKTsKKyNlbmRpZgorCiAgICAgc3RhdGljIHZvaWQgZGlkQ2xvc2VP
bkNvbm5lY3Rpb25Xb3JrUXVldWUoV29ya1F1ZXVlJiwgQ29yZUlQQzo6Q29ubmVjdGlvbiopOwog
CiBwcm90ZWN0ZWQ6CkBAIC03MSw2ICs4MCwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRUZXJtaW5hdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZSgpOwog
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPFByb2Nlc3NTdXBwcmVz
c2lvbkRpc2FibGVyPiBjcmVhdGVQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlcigpOworI2VuZGlm
CisKICAgICAvLyBUaGUgdGltZW91dCwgaW4gc2Vjb25kcywgYmVmb3JlIHRoaXMgcHJvY2VzcyB3
aWxsIGJlIHRlcm1pbmF0ZWQgaWYgdGVybWluYXRpb24KICAgICAvLyBoYXMgYmVlbiBlbmFibGVk
LiBJZiB0aGUgdGltZW91dCBpcyAwIHNlY29uZHMsIHRoZSBwcm9jZXNzIHdpbGwgYmUgdGVybWlu
YXRlZCBpbW1lZGlhdGVseS4KICAgICBkb3VibGUgbV90ZXJtaW5hdGlvblRpbWVvdXQ7CkBAIC04
MCw2ICs5MywxMCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fdGVybWluYXRpb25Db3VudGVy
OwogCiAgICAgV2ViQ29yZTo6UnVuTG9vcDo6VGltZXI8Q2hpbGRQcm9jZXNzPiBtX3Rlcm1pbmF0
aW9uVGltZXI7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgT3duUHRyPFByb2Nlc3NTdXBwcmVz
c2lvbkRpc2FibGVyPiBtX3Byb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVyOworI2VuZGlmCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9DaGls
ZFByb2Nlc3NNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDUzMDMzMzYyYTRhOTIwN2MwNWQwMmJkMGQ3MDMw
YmU1NzZmNzk0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
Q2hpbGRQcm9jZXNzTWFjLm1tCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIkNoaWxkUHJvY2Vzcy5oIgorCisjaW1wb3J0ICJQcm9jZXNz
U3VwcHJlc3Npb25EaXNhYmxlci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBDaGls
ZFByb2Nlc3M6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29sIGZsYWcpCit7CisgICAgaWYg
KGFwcGxpY2F0aW9uSXNPY2NsdWRlZCgpID09IGZsYWcpCisgICAgICAgIHJldHVybjsKKworI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIGlmIChmbGFnKQor
ICAgICAgICBtX3Byb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVyLnJlbGVhc2UoKTsKKyAgICBlbHNl
CisgICAgICAgIG1fcHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZXIgPSBjcmVhdGVQcm9jZXNzU3Vw
cHJlc3Npb25EaXNhYmxlcigpOworI2VuZGlmCit9CisKK1Bhc3NPd25QdHI8UHJvY2Vzc1N1cHBy
ZXNzaW9uRGlzYWJsZXI+IENoaWxkUHJvY2Vzczo6Y3JlYXRlUHJvY2Vzc1N1cHByZXNzaW9uRGlz
YWJsZXIoKQoreworICAgIHJldHVybiBQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlcjo6Y3JlYXRl
KEAiQXBwbGljYXRpb24gaXMgVmlzaWJsZSIpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nl
c3MubWVzc2FnZXMuaW4KaW5kZXggM2NkNzUzMzdiN2ZlZTg0NjliMDk0ZTgxNDhlYTU1YzM2OTI0
OTg5YS4uNzg5YmJiMzE4MTRjNGUxNGM4M2FlNmNhMjBmMTA1ZjY0NmQ0YmNjNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNz
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hh
cmVkV29ya2VyUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzAsNiArMzAsMTAgQEAgbWVzc2FnZXMg
LT4gU2hhcmVkV29ya2VyUHJvY2VzcyB7CiAgICAgIyBUaGUgc2hhcmVkIHdvcmtlciBwcm9jZXNz
IHNlbmRzIGJhY2sgYSBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiBtZXNzYWdlIHdpdGgK
ICAgICAjIGEgY29ubmVjdGlvbiBpZGVudGlmaWVyLgogICAgIENyZWF0ZVdlYlByb2Nlc3NDb25u
ZWN0aW9uKCkKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBTZXRBcHBsaWNhdGlvbklzT2NjbHVk
ZWQoYm9vbCBmbGFnKQorI2VuZGlmCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktF
Ul9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vz
cy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbQppbmRleCAz
MGY4YTc0OTY0ZDZkMWNjMjg3OWYzMTk3YzU0NWJhNmMwNTk1YWRiLi5kOTRkNDhiNDVhNWQwZDA3
MDg5OTkwYjgzNWEwZjU2Nzk4YzZlZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNz
TWFpbk1hYy5tbQpAQCAtOTYsMTAgKzk2LDYgQEAgaW50IFNoYXJlZFdvcmtlclByb2Nlc3NNYWlu
KGNvbnN0IENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkKICAgICBXVEY6OmluaXRpYWxpemVNYWlu
VGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKLSNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLSAgICBbW05TUHJvY2Vzc0lu
Zm8gcHJvY2Vzc0luZm9dIGRpc2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjpAIkRpc2FibGUgU2hh
cmVkV29ya2VyUHJvY2VzcyBBdXRvIFRlcm1pbmF0aW9uIl07Ci0jZW5kaWYKLQogICAgIC8vIElu
aXRpYWxpemUgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2VzcyBjb25uZWN0aW9uLgogICAgIFNoYXJl
ZFdvcmtlclByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllcihzZXJ2ZXJQb3J0KSwgUnVuTG9vcDo6bWFpbigpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc01hbmFnZXIu
aAppbmRleCBiOGI0NTM0Y2VmY2YzYmExNDYyYTdiMGMzNjVlOTBhMWQ2MTdlNmRmLi45NTdlNDVm
M2U2NWU4YTM5ZGU4YzA2OWE5ZmIwM2MwZTJmOTdlMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc01hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc01hbmFnZXIuaApAQCAt
NTAsNiArNTAsMTAgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcmVtb3ZlTmV0d29ya1Byb2Nl
c3NQcm94eShOZXR3b3JrUHJvY2Vzc1Byb3h5Kik7CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAg
dm9pZCBzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYm9vbCk7CisjZW5kaWYKKwogcHJpdmF0ZToK
ICAgICBOZXR3b3JrUHJvY2Vzc01hbmFnZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyODkz
NDVhNDY1N2NhMWFhMTljYjAzMzBiY2RiZjkyM2MzZGY5NWRmLi4xZjljZTg5ZWQyNDFiZjExNDEw
Y2I0ODM4Y2Y2YTllZGRmY2U4YTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTYyLDYgKzE2Miwx
MSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNz
TGF1bmNoZXIqLCBDb3JlSVBDOjpDb25uZWN0aQogICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcygpLCAwKTsKICAgICAKICAgICBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMgPSAw
OworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChXZWJDb250ZXh0OjphcHBsaWNhdGlvbklz
T2NjbHVkZWQoKSkKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUpLCAwKTsKKyNlbmRpZgogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA0N2NjYmFjYmY3MzM0YTY3
ZDVhNjJiMmU3MDM2NTE3ZWYyNzA3NzA3Li4xM2ZkZmQ4OWEwY2RkZTFjNTlmMzQ5OTJlMzhiNTM3
NDAzYzYwZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC00NSw2ICs0NSwxMiBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5
Pik7CiAKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0K
KworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2b2lkIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChi
b29sKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5ldHdvcmtQcm9jZXNzUHJveHkoTmV0d29y
a1Byb2Nlc3NNYW5hZ2VyKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9OZXR3b3JrL21hYy9OZXR3b3JrUHJvY2Vzc01hbmFnZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyTWFjLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmVhZjk4ODhhNTBmZjk0NTYxYzAwODNiMmZjZTcxMGZiZGU0ZDA1NzYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1By
b2Nlc3NNYW5hZ2VyTWFjLm1tCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzTWFuYWdlci5oIgorCisjaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKKworI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OnNldEFw
cGxpY2F0aW9uSXNPY2NsdWRlZChib29sIGFwcGxpY2F0aW9uSXNPY2NsdWRlZCkKK3sKKyAgICBp
ZiAobV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPnNl
dEFwcGxpY2F0aW9uSXNPY2NsdWRlZChhcHBsaWNhdGlvbklzT2NjbHVkZWQpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1By
b2Nlc3NQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL21hYy9O
ZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tCmluZGV4IDQ0MGNjNDI5ZjA4YzM0YjZkYTk2ZmE4MTEy
ZDNkZjUxOWQzOWRkYjcuLjAyNTM0ZTliOTFlNjM2YzdhZDUzMzI0YzNmNTFjYWNmOTIyNzJhZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL21hYy9OZXR3b3Jr
UHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L21hYy9OZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0
ICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCiAKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAKICNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogCkBAIC0zOSw2ICs0MCwxNCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpbwogICAgIHBhcmFtZXRlcnMucGFyZW50UHJvY2Vzc05hbWUgPSBbW05TUHJv
Y2Vzc0luZm8gcHJvY2Vzc0luZm9dIHByb2Nlc3NOYW1lXTsKIH0KIAordm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYm9vbCBhcHBsaWNhdGlvbklzT2Nj
bHVkZWQpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBsaWNh
dGlvbklzT2NjbHVkZWQoYXBwbGljYXRpb25Jc09jY2x1ZGVkKSwgMCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFu
YWdlci5oCmluZGV4IDM3ODI0YzRhYTNiNGRhYjFjYjIxMzg3MDY2OWQyNTljMDgwZDg2ZTAuLjVl
NTE5NDI3YmEzZjFkZGZiMzdiZDhiZTgzZjMyOTc4YzQ3YjhiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaApA
QCAtNTYsNiArNTYsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0U2l0ZXNXaXRoRGF0YShjb25z
dCBQbHVnaW5Nb2R1bGVJbmZvJiwgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyKiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CiAgICAgdm9pZCBjbGVhclNpdGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUlu
Zm8mLCBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIqLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0
ZXMsIHVpbnQ2NF90IGZsYWdzLCB1aW50NjRfdCBtYXhBZ2VJblNlY29uZHMsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQgc2V0QXBwbGljYXRpb25J
c09jY2x1ZGVkKGJvb2wpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgUGx1Z2luUHJvY2Vzc01h
bmFnZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NQcm94eS5jcHAKaW5kZXggODExOTdjZTM2YzRiM2JkMTUyOTcxM2E5OTIw
ZTdkNzRjYzI1NjI3Yi4uMGMyZTg2ODllNjQ4ODc2ODBlNDJhMTM0OTNjMGYzZTUwZTBiYjEyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzUHJveHkuY3BwCkBAIC0yMjgsNiArMjI4LDExIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1By
b3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQQzo6Q29ubmVj
dGlvCiAgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzczo6
Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgMCk7CiAgICAgCiAgICAgbV9udW1QZW5kaW5n
Q29ubmVjdGlvblJlcXVlc3RzID0gMDsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoV2Vi
Q29udGV4dDo6YXBwbGljYXRpb25Jc09jY2x1ZGVkKCkpCisgICAgICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRy
dWUpLCAwKTsKKyNlbmRpZgogfQogCiB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlv
bklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc1Byb3h5LmgKaW5kZXggZjc3NTAzZDhkNDJkOTBjYmViOGNkYTY0Yzk3OWRlZGRlZTJmMjBh
YS4uMTM1N2U2YzdmNWI0OTBmN2I0MjQ4ZWM3NmY1YTUwNGUyYmYwMGVhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgK
QEAgLTgwLDcgKzgwLDExIEBAIHB1YmxpYzoKICAgICAvLyBUZXJtaW5hdGVzIHRoZSBwbHVnLWlu
IHByb2Nlc3MuCiAgICAgdm9pZCB0ZXJtaW5hdGUoKTsKIAorICAgIGJvb2wgaXNWYWxpZCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbjsgfQorCiAjaWYgUExBVEZPUk0oTUFDKQorICAgIHZv
aWQgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wpOworCiAgICAgLy8gUmV0dXJucyB3aGV0
aGVyIHRoZSBwbHVnLWluIG5lZWRzIHRoZSBoZWFwIHRvIGJlIG1hcmtlZCBleGVjdXRhYmxlLgog
ICAgIHN0YXRpYyBib29sIHBsdWdpbk5lZWRzRXhlY3V0YWJsZUhlYXAoY29uc3QgUGx1Z2luTW9k
dWxlSW5mbyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9tYWMvUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE5
NzRkYWQ3YTgyOWQ4MTM4OTUzYzY0NzQ2YjIzOGQyOGI4ZmFhOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzTWFuYWdl
ck1hYy5tbQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgorCisjaWYgRU5BQkxFKFBMVUdJTl9Q
Uk9DRVNTKQorCisjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3ZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNldEFwcGxpY2F0aW9uSXNPY2Ns
dWRlZChib29sIGFwcGxpY2F0aW9uSXNPY2NsdWRlZCkKK3sKKyAgICBzaXplX3QgcHJvY2Vzc0Nv
dW50ID0gbV9wbHVnaW5Qcm9jZXNzZXMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcHJvY2Vzc0NvdW50OyArK2kpCisgICAgICAgIG1fcGx1Z2luUHJvY2Vzc2VzW2ldLT5zZXRB
cHBsaWNhdGlvbklzT2NjbHVkZWQoYXBwbGljYXRpb25Jc09jY2x1ZGVkKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vz
c1Byb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdp
blByb2Nlc3NQcm94eU1hYy5tbQppbmRleCAyMDdlY2EyYzk3ZDNmMjRiZDViZjM0MzY5OWJjZDUz
OGFiNDVmNDA4Li5lOTJlZjllNzZkNGQxZDU0ODQ2ZDUyZjI4OTQxYzJmZDk4YTMyZThmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vz
c1Byb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9Q
bHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiRW52
aXJvbm1lbnRWYXJpYWJsZXMuaCIKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaCIKKyNpbXBvcnQgIlBsdWdpblByb2Nlc3NNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2Vi
S2l0U3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bXBvcnQgPHNwYXduLmg+CkBAIC0zMTUsNiArMzE2LDEzIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1By
b3h5OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiAgICAgbWFrZVBsdWdpblByb2Nlc3NU
aGVGcm9udFByb2Nlc3MoKTsKIH0KIAordm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnNldEFwcGxp
Y2F0aW9uSXNPY2NsdWRlZChib29sIGFwcGxpY2F0aW9uSXNPY2NsdWRlZCkKK3sKKyAgICBpZiAo
IWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpQbHVnaW5Qcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYXBwbGljYXRp
b25Jc09jY2x1ZGVkKSwgMCk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQ
cm9jZXNzTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMv
U2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIuaAppbmRleCBiYTA2YzdjYmI4MDk4MjQzNDRjZTc5
Y2M0OWFiNDFiNzFmZDNjODQ4Li5jMjU1NWVhNGUyYTE3NGY1NjNhMDIwNjMxY2NhOWUzNjc2ZjE0
ZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9T
aGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmgKQEAgLTUzLDYgKzUz
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNoYXJlZFdvcmtlclByb2Nlc3NDb25uZWN0aW9u
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8TWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseT4pOwogICAgIHZvaWQgcmVtb3ZlU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KFNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eSopOwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQg
c2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAg
U2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nl
c3NQcm94eS5jcHAKaW5kZXggMDMwZTNmZmM4OTE1MWYxNDBhOTRkODcwZjMzNjUyMmQ5ZmUxMWU5
My4uYjgwOGVmYmFjZGZhYjg4ODZhZmM4YTE1N2Y1MGNlODhlODkxYTA0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9T
aGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNjQsNiArMTY0LDExIEBAIHZvaWQgU2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVy
KiwgQ29yZUlQQzo6Q29uCiAgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2hh
cmVkV29ya2VyUHJvY2Vzczo6Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgMCk7CiAgICAg
CiAgICAgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzID0gMDsKKworI2lmIFBMQVRGT1JN
KE1BQykKKyAgICBpZiAoV2ViQ29udGV4dDo6YXBwbGljYXRpb25Jc09jY2x1ZGVkKCkpCisgICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2hhcmVkV29ya2VyUHJvY2Vzczo6U2V0
QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUpLCAwKTsKKyNlbmRpZgogfQogCiB2b2lkIFNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3Qg
Q29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdv
cmtlclByb2Nlc3NQcm94eS5oCmluZGV4IDlmMGM1ZDJhY2ViMzllMmM2ODY3ODhkNzI0Mjg0ZGE1
ZDlhNTg5NTUuLjZlOWYyMGE4NjRhNTJjNTU1Y2JiMDk5NDY5MmNjMjQ0MGExZDZjOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtl
clByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5oCkBAIC01Niw2ICs1NiwxMiBAQCBwdWJsaWM6
CiAgICAgLy8gVGVybWluYXRlcyB0aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzLgogICAgIHZvaWQg
dGVybWluYXRlKCk7CiAKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5l
Y3Rpb247IH0KKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2b2lkIHNldEFwcGxpY2F0aW9uSXNP
Y2NsdWRlZChib29sKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eShTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlciosIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIG5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvU2hhcmVkV29ya2Vycy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXJNYWMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9tYWMvU2hhcmVkV29ya2VyUHJv
Y2Vzc01hbmFnZXJNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTYzOTA3Y2U2ZDVlMjljODhlOWQxYmM0ZjI0
Y2MxM2Y1NGM5Yzc1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9TaGFyZWRXb3JrZXJzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlck1hYy5tbQpAQCAt
MCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJT
aGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oIgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJf
UFJPQ0VTUykKKworI2ltcG9ydCAiU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyOjpzZXRBcHBs
aWNhdGlvbklzT2NjbHVkZWQoYm9vbCBhcHBsaWNhdGlvbklzT2NjbHVkZWQpCit7CisgICAgc2l6
ZV90IHByb2Nlc3NDb3VudCA9IG1fc2hhcmVkV29ya2VyUHJvY2Vzc2VzLnNpemUoKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2Nlc3NDb3VudDsgKytpKQorICAgICAgICBtX3NoYXJl
ZFdvcmtlclByb2Nlc3Nlc1tpXS0+c2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGFwcGxpY2F0aW9u
SXNPY2NsdWRlZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9TaGFyZWRXb3JrZXJzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHlNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9tYWMvU2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5TWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViM2RkNDYzOWQ0MTIyNmQ5ZjdmMDFkOWZk
YWY4N2QwZDAyZTBmNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvU2hhcmVkV29ya2Vycy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWFjLm1tCkBAIC0w
LDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eS5oIgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJP
Q0VTUykKKworI2ltcG9ydCAiU2hhcmVkV29ya2VyUHJvY2Vzc01lc3NhZ2VzLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6c2V0QXBwbGlj
YXRpb25Jc09jY2x1ZGVkKGJvb2wgYXBwbGljYXRpb25Jc09jY2x1ZGVkKQoreworICAgIGlmICgh
aXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNoYXJlZFdvcmtlclByb2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChhcHBs
aWNhdGlvbklzT2NjbHVkZWQpLCAwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGZlNjlmMmI3ZTAzYmQ5YjE3ZDUyNjk2M2Q4M2MwNWJj
NTdjNGYwMTEuLjhkZGM5M2Q4MzMwMGQyNGM3NWQ0MDQ0YjkwZDVkODM4MTBkMzdkYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTEwMCw2ICsxMDAsOSBAQCBQ
YXNzUmVmUHRyPFdlYkNvbnRleHQ+IFdlYkNvbnRleHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGlu
amVjdGVkQnVuZGxlUGF0aCkKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBX
VEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5S
dW5Mb29wKCk7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIFdlYkNvbnRleHQ6OmluaXRpYWxpemVQ
cm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0KCk7CisjZW5kaWYKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYkNvbnRleHQoUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcywgaW5qZWN0
ZWRCdW5kbGVQYXRoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmlu
ZGV4IDBkNDQ0NTRiYWI2M2E2MTYzYjM2MzZmODYxYTM1YjQ3ZWIwMzQ0OGYuLjdhNTUwMjNmMDVj
OGFkNjA5NjFkMDIzYjdjNDA1YmRlNmVkM2FjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuaApAQCAtMjQ4LDYgKzI0OCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFVz
ZXNOZXR3b3JrUHJvY2Vzcyhib29sKTsKIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGF0aWMg
Ym9vbCBhcHBsaWNhdGlvbklzT2NjbHVkZWQoKSB7IHJldHVybiBzX2FwcGxpY2F0aW9uSXNPY2Ns
dWRlZDsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViQ29udGV4dChQcm9jZXNzTW9kZWws
IGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKTsKIApAQCAtMzAyLDYgKzMwNiwxMyBA
QCBwcml2YXRlOgogICAgIFN0cmluZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAg
ICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsK
IAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbkJlY2FtZVZp
c2libGUodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KTsKKyAgICBz
dGF0aWMgdm9pZCBhcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKHVpbnQzMl90LCB2b2lkKiwgdWlu
dDMyX3QsIHZvaWQqLCB1aW50MzJfdCk7CisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVByb2Nl
c3NTdXBwcmVzc2lvblN1cHBvcnQoKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3Rlck9jY2x1c2lv
bk5vdGlmaWNhdGlvbkhhbmRsZXJzKCk7CisjZW5kaWYKKwogICAgIFByb2Nlc3NNb2RlbCBtX3By
b2Nlc3NNb2RlbDsKICAgICAKICAgICBWZWN0b3I8UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gPiBt
X3Byb2Nlc3NlczsKQEAgLTM5Niw2ICs0MDcsMTAgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVp
bnQ2NF90LCBSZWZQdHI8RGljdGlvbmFyeUNhbGxiYWNrPiA+IG1fZGljdGlvbmFyeUNhbGxiYWNr
czsKIAogICAgIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCBtX21lc3NhZ2VSZWNlaXZlck1h
cDsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGF0aWMgYm9vbCBzX2FwcGxpY2F0aW9uSXNP
Y2NsdWRlZDsKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5lIHZvaWQg
V2ViQ29udGV4dDo6c2VuZFRvQWxsUHJvY2Vzc2VzKGNvbnN0IFUmIG1lc3NhZ2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGU4YTM5YmQyYmMx
YWMzZDg5ZjA2Y2IzZDUyMmQ5Y2ZiOGEyZTA4OTIuLjM5YjY5OWFlNjIwZGIyZDNmNWE2OGIzY2Nm
MTcxMzQxNmU4ZTJhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCkBAIC01MzEsNiArNTMxLDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRG
aW5pc2hMYXVuY2hpbmcoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0CiAK
ICAgICAvLyBUZWxsIHRoZSBjb250ZXh0IHRoYXQgd2UgZmluaXNoZWQgbGF1bmNoaW5nLgogICAg
IG1fY29udGV4dC0+cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyh0aGlzKTsKKworI2lmIFBMQVRG
T1JNKE1BQykKKyAgICBpZiAoV2ViQ29udGV4dDo6YXBwbGljYXRpb25Jc09jY2x1ZGVkKCkpCisg
ICAgICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0QXBwbGlj
YXRpb25Jc09jY2x1ZGVkKHRydWUpLCAwKTsKKyNlbmRpZgogfQogCiBXZWJGcmFtZVByb3h5KiBX
ZWJQcm9jZXNzUHJveHk6OndlYkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KaW5kZXggMDBjMDJjZDAy
ZDFjYzU2ODYzYTE1OThmM2JkOTEwMmUzZDVlNjhkOS4uZTg4YjQ2ZjIzN2QzYzhmZjY5ZTA1YmU1
NzY3MzUzOGU1MDE0NTk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XZWJDb250ZXh0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1hYy5tbQpAQCAtMjYsOCArMjYsMTIgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiV2ViQ29udGV4dC5oIgogCisjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc01hbmFnZXIuaCIK
KyNpbXBvcnQgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCisjaW1wb3J0ICJTaGFyZWRXb3JrZXJQ
cm9jZXNzTWFuYWdlci5oIgogI2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1w
b3J0ICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJXZWJQcm9jZXNz
TWVzc2FnZXMuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ29sb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTUy
LDYgKzU2LDggQEAgTlNTdHJpbmcgKldlYkljb25EYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5
ID0gQCJXZWJJY29uRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWwKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK2Jvb2wgV2ViQ29udGV4dDo6c19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPSBmYWxzZTsKKwog
U3RyaW5nIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogewogICAgIE5T
U3RyaW5nICphcHBOYW1lID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVy
XTsKQEAgLTI1Nyw1ICsyNjMsNzIgQEAgdm9pZCBXZWJDb250ZXh0OjpzZXRQYXN0ZWJvYXJkQnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdAogICAgIFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBh
c3RlYm9hcmRUeXBlKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit2b2lkIFdlYkNvbnRl
eHQ6OmFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2
b2lkKiwgdWludDMyX3QpCit7CisgICAgaWYgKHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKSB7Cisg
ICAgICAgIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkID0gZmFsc2U7CisKKyAgICAgICAgY29uc3Qg
VmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygp
OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkg
PCBjb3VudDsgKytpKQorICAgICAgICAgICAgY29udGV4dHNbaV0tPnNlbmRUb0FsbFByb2Nlc3Nl
cyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGZhbHNlKSk7
CisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisgICAgICAgIFBsdWdpblByb2Nlc3NNYW5h
Z2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoZmFsc2UpOworI2VuZGlmCisj
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyAgICAgICAgTmV0d29ya1Byb2Nlc3NNYW5hZ2Vy
OjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoZmFsc2UpOworI2VuZGlmCisjaWYg
RU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKKyAgICAgICAgU2hhcmVkV29ya2VyUHJvY2Vz
c01hbmFnZXI6OnNoYXJlZCgpLnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSk7CisjZW5k
aWYKKyAgICB9Cit9CiAKK3ZvaWQgV2ViQ29udGV4dDo6YXBwbGljYXRpb25CZWNhbWVPY2NsdWRl
ZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCit7CisgICAgaWYg
KCFzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkgeworICAgICAgICBzX2FwcGxpY2F0aW9uSXNPY2Ns
dWRlZCA9IHRydWU7CisgICAgICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNvbnRleHRz
ID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDAs
IGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgIGNv
bnRleHRzW2ldLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldEFw
cGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKSk7CisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1Mp
CisgICAgICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlvbklz
T2NjbHVkZWQodHJ1ZSk7CisjZW5kaWYKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorICAg
ICAgICBOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNldEFwcGxpY2F0aW9uSXNPY2Ns
dWRlZCh0cnVlKTsKKyNlbmRpZgorI2lmIEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCisg
ICAgICAgIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlv
bklzT2NjbHVkZWQodHJ1ZSk7CisjZW5kaWYKKyAgICB9Cit9CisKK3ZvaWQgV2ViQ29udGV4dDo6
aW5pdGlhbGl6ZVByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnQoKQoreworICAgIHN0YXRpYyBib29s
IGRpZEluaXRpYWxpemUgPSBmYWxzZTsKKyAgICBpZiAoZGlkSW5pdGlhbGl6ZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZGlkSW5pdGlhbGl6ZSA9IHRydWU7CisgICAgLy8gQSBzZWNyZXQgZGVm
YXVsdCB1bnRpbCBwcm9jZXNzIHN1cHByZXNzaW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYXQg
d2hpY2ggcG9pbnQgYSBjb250ZXh0IHNldHRpbmcgY2FuIGJlIGFkZGVkIHdpdGggdGhlCisgICAg
Ly8gaW50ZXJwcmV0YXRpb24gdGhhdCBhbnkgY29udGV4dCBkaXNhYmxpbmcgcHJvY2VzcyBzdXBw
cmVzc2lvbiBkaXNhYmxlcyBpdCBmb3IgcGx1Z2luL25ldHdvcmsgYW5kIHNoYXJlZCB3b3JrZXIg
cHJvY2Vzc2VzLgorICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQgPSBb
W05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAiV2ViS2l0
UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQiXTsKKyAgICBpZiAocHJvY2Vzc1N1cHBy
ZXNzaW9uU3VwcG9ydEVuYWJsZWQpCisgICAgICAgIHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0
aW9uSGFuZGxlcnMoKTsKK30KKwordm9pZCBXZWJDb250ZXh0OjpyZWdpc3Rlck9jY2x1c2lvbk5v
dGlmaWNhdGlvbkhhbmRsZXJzKCkKK3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwOTAKKyAgICBpZiAoIVdLUmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5k
bGVyKFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSwg
YXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIlJlZ2lz
dGVyYXRpb24gb2YgXCJBcHAgQmVjYW1lIFZpc2libGVcIiBub3RpZmljYXRpb24gaGFuZGxlciBm
YWlsZWQuXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghV0tSZWdpc3Rl
ck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBl
QXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCwgYXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCkpCisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiUmVnaXN0ZXJhdGlvbiBvZiBcIkFwcCBCZWNhbWUgT2NjbHVk
ZWRcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4iKTsKKyNlbmRpZgorfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA5MDdhOTMzNjIyOTBlNGQ4YmE2NjQ0ZmZmN2I2OTYzMGQ5
ZTM2ODc4Li45N2RkODdlNzc3MmYzNmI3NDM5NDg1NDEzNGQ2OTdhMTBkNjQ0ZDNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01
MzUsNiArNTM1LDEzIEBACiAJCTkzRkM2N0JFMTJEM0NDRjIwMEE2MDYxMCAvKiBEZWNvZGVyQWRh
cHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNG
QzY3OUUxMkQzQ0M3NDAwQTYwNjEwIC8qIERlY29kZXJBZGFwdGVyLmggKi87IH07CiAJCTkzRkM2
N0JGMTJEM0NDRjIwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZDNjc5RjEyRDNDQzc0MDBBNjA2MTAg
LyogRW5jb2RlckFkYXB0ZXIuY3BwICovOyB9OwogCQk5M0ZDNjdDMDEyRDNDQ0YyMDBBNjA2MTAg
LyogRW5jb2RlckFkYXB0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzRkM2N0EwMTJEM0NDNzQwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5oICov
OyB9OworCQk5RjRGNTk0MjE2NDhCNDA3MDA0OTNCN0UgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01h
bmFnZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5RjRGNTk0MTE2NDhCNDA3MDA0OTNCN0UgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXJN
YWMubW0gKi87IH07CisJCTlGNEY1OTQ0MTY0OEI2N0YwMDQ5M0I3RSAvKiBTaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5RjRGNTk0MzE2NDhCNjdGMDA0OTNCN0UgLyogU2hhcmVkV29ya2VyUHJvY2Vzc1By
b3h5TWFjLm1tICovOyB9OworCQk5RjRGNTk0NjE2NDhCQThFMDA0OTNCN0UgLyogTmV0d29ya1By
b2Nlc3NNYW5hZ2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUY0RjU5NDUxNjQ4QkE4RTAwNDkzQjdFIC8qIE5ldHdvcmtQcm9jZXNzTWFuYWdl
ck1hYy5tbSAqLzsgfTsKKwkJOUY0RjU5NDkxNjQ4Qzc2QzAwNDkzQjdFIC8qIFByb2Nlc3NTdXBw
cmVzc2lvbkRpc2FibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5RjRGNTk0NzE2NDhDNzZDMDA0OTNCN0UgLyogUHJvY2Vzc1N1cHByZXNzaW9uRGlz
YWJsZXIuaCAqLzsgfTsKKwkJOUY0RjU5NEExNjQ4Qzc2QzAwNDkzQjdFIC8qIFByb2Nlc3NTdXBw
cmVzc2lvbkRpc2FibGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUY0RjU5NDgxNjQ4Qzc2QzAwNDkzQjdFIC8qIFByb2Nlc3NTdXBwcmVzc2lvbkRp
c2FibGVyLm1tICovOyB9OworCQk5RjU0Rjg4RjE2NDg4RTg3MDA3REY4MUEgLyogQ2hpbGRQcm9j
ZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUY1NEY4OEUxNjQ4OEU4NzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSAqLzsgfTsKKwkJ
OUY1NEY4OTUxNjQ4QUUwRjAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY1NEY4OTQxNjQ4
QUUwRTAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tICovOyB9OwogCQlCNjJF
NzMxMDE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2MkU3MzBGMTQzMDQ3QTYwMDY5RUMz
NSAvKiBXS0hpdFRlc3RSZXN1bHQuY3BwICovOyB9OwogCQlCNjJFNzMxMjE0MzA0N0IwMDA2OUVD
MzUgLyogV0tIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCNjJFNzMxMTE0MzA0N0IwMDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjYz
NDAzRjkxNDkxMEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjM0MDNGODE0OTEwRDU3MDAxMDcwQjUgLyog
QVBJT2JqZWN0LmNwcCAqLzsgfTsKQEAgLTE3NDYsNiArMTc1MywxMyBAQAogCQk5M0ZDNjc5RTEy
RDNDQzc0MDBBNjA2MTAgLyogRGVjb2RlckFkYXB0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGVjb2RlckFkYXB0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNGQzY3OUYxMkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVuY29kZXJBZGFwdGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGQzY3QTAxMkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29k
ZXJBZGFwdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVuY29kZXJBZGFw
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlGNEY1OTQxMTY0OEI0MDcwMDQ5
M0I3RSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyTWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5RjRGNTk0MzE2NDhCNjdGMDA0OTNCN0Ug
LyogU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5RjRGNTk0NTE2NDhCQThFMDA0OTNCN0UgLyogTmV0d29y
a1Byb2Nlc3NNYW5hZ2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gTmV0d29ya1Byb2Nlc3NNYW5hZ2VyTWFjLm1tOyBwYXRoID0gbWFjL05ldHdvcmtQcm9j
ZXNzTWFuYWdlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUY0RjU5NDcx
NjQ4Qzc2QzAwNDkzQjdFIC8qIFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlGNEY1OTQ4MTY0OEM3NkMwMDQ5M0I3RSAvKiBQ
cm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQ2hpbGRQcm9jZXNz
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ2hpbGRQcm9j
ZXNzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5RjU0Rjg5NDE2NDhBRTBF
MDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyRDVEN0YxMjM2Q0JBODAwQTg4QjE1IC8qIFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QjM5NkVBNTUxMkUwRUQyRDAwRjRGRUI3IC8qIGNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjYy
RTczMEYxNDMwNDdBNjAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0hpdFRlc3RSZXN1bHQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjYzNyw2ICsyNjUxLDggQEAKIAkJCQlDMEUzQUE0ODEyMDlF
NDUwMDBBNDlEMDEgLyogTW9kdWxlTWFjLm1tICovLAogCQkJCUJDRTA5Mzc1MTRGQjEyOEIwMDEx
MzhEOSAvKiBMYXllckhvc3RpbmdDb250ZXh0Lm1tICovLAogCQkJCUJDRTA5Mzc2MTRGQjEyOEIw
MDExMzhEOSAvKiBMYXllckhvc3RpbmdDb250ZXh0LmggKi8sCisJCQkJOUY0RjU5NDcxNjQ4Qzc2
QzAwNDkzQjdFIC8qIFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVyLmggKi8sCisJCQkJOUY0RjU5
NDgxNjQ4Qzc2QzAwNDkzQjdFIC8qIFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVyLm1tICovLAog
CQkJCTFBMjRCRjM5MTIwODk2QTYwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnlNYWMuY3BwICovLAog
CQkJCTI5NkJEODVCMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMuaCAqLywKIAkJ
CQkyOTZCRDg1QzE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLm1tICovLApAQCAt
MjkwNiw2ICsyOTIyLDcgQEAKIAkJMUFFRkNDMEQxMUQwMUY0MTAwODIxOUQzIC8qIG1hYyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOUY1NEY4OTQxNjQ4
QUUwRTAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tICovLAogCQkJCTFBRUZD
Q0JDMTFEMDJDNUUwMDgyMTlEMyAvKiBQbHVnaW5JbmZvU3RvcmVNYWMubW0gKi8sCiAJCQkJMUEy
RDkwQkExMjgxQzkzMTAwMUVCOTYyIC8qIFBsdWdpblByb2Nlc3NQcm94eU1hYy5tbSAqLywKIAkJ
CSk7CkBAIC0zMTA4LDYgKzMxMjUsNyBAQAogCQk1MTYzMTk5MzE2Mjg5ODBFMDBFMjJGMDAgLyog
bWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5RjRG
NTk0NTE2NDhCQThFMDA0OTNCN0UgLyogTmV0d29ya1Byb2Nlc3NNYW5hZ2VyTWFjLm1tICovLAog
CQkJCTUxNjMxOTkxMTYyODk4MEEwMEUyMkYwMCAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1t
ICovLAogCQkJKTsKIAkJCW5hbWUgPSBtYWM7CkBAIC0zMTc5LDYgKzMxOTcsMTUgQEAKIAkJCW5h
bWUgPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk5RjRGNTk0MDE2
NDhCNDA3MDA0OTNCN0UgLyogbWFjICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQk5RjRGNTk0MTE2NDhCNDA3MDA0OTNCN0UgLyogU2hhcmVkV29ya2VyUHJv
Y2Vzc01hbmFnZXJNYWMubW0gKi8sCisJCQkJOUY0RjU5NDMxNjQ4QjY3RjAwNDkzQjdFIC8qIFNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eU1hYy5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gbWFjOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQkMwMTdEMTAxNjI2MEZGRDAwNzA1
NEY1IC8qIERPTSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBA
IC0zNjM4LDYgKzM2NjUsNyBAQAogCQkJCUUxNzlGRDlFMTM0RDM4MjUwMDE1Qjg4MyAvKiBBcmd1
bWVudENvZGVyc01hYy5tbSAqLywKIAkJCQlFMUEzMTczMTEzNENFQTZDMDA3QzlBNEYgLyogQXR0
cmlidXRlZFN0cmluZy5oICovLAogCQkJCUUxQTMxNzM0MTM0Q0VBODAwMDdDOUE0RiAvKiBBdHRy
aWJ1dGVkU3RyaW5nLm1tICovLAorCQkJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGls
ZFByb2Nlc3NNYWMubW0gKi8sCiAJCQkJMUEyQTRBRkUxNTg2OTM5MjAwOTBDOUU5IC8qIENvbG9y
U3BhY2VEYXRhLmggKi8sCiAJCQkJMUEyQTRBRkQxNTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3Bh
Y2VEYXRhLm1tICovLAogCQkJCTFBNkY5RkI2MTFFMTQwODUwMERCMTM3MSAvKiBDb21tYW5kTGlu
ZU1hYy5jcHAgKi8sCkBAIC00Mjk4LDYgKzQzMjYsNyBAQAogCQlFMUVERkRBQTE2Mjg4NzhFMDAz
OUVDREEgLyogU2hhcmVkV29ya2VycyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJOUY0RjU5NDAxNjQ4QjQwNzAwNDkzQjdFIC8qIG1hYyAqLywKIAkJCQlF
MUVERkUwRjE2MjhDRjRFMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIuaCAq
LywKIAkJCQlFMUVERkUxMTE2MjhDRkIyMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01h
bmFnZXIuY3BwICovLAogCQkJCUUxRURGREFCMTYyODg3QjAwMDM5RUNEQSAvKiBTaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gKi8sCkBAIC00ODI0LDYgKzQ4NTMsNyBAQAogCQkJ
CUUxQjc4NDcxMTYzRjI0NjkwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUFCMTZBREUxNjQ4NTk4NDAwMjkwRDYyIC8qIFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUIxNkFFMjE2NDg2NTZEMDAy
OTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOUY0RjU5NDkxNjQ4Qzc2QzAwNDkzQjdFIC8qIFByb2Nlc3NTdXBwcmVzc2lvbkRpc2Fi
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTU3NTYsNiArNTc4NiwxMiBAQAogCQkJCTJEMkFERjEw
MTYzNjREODIwMDE5N0U0NyAvKiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFCMTZBREQxNjQ4NTk4NDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCMTZBRTExNjQ4NjU2RDAwMjkwRDYy
IC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0gaW4gU291cmNlcyAqLywKKwkJ
CQk5RjU0Rjg4RjE2NDg4RTg3MDA3REY4MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJOUY1NEY4OTUxNjQ4QUUwRjAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5h
Z2VyTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOUY0RjU5NDIxNjQ4QjQwNzAwNDkzQjdFIC8q
IFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOUY0
RjU5NDQxNjQ4QjY3RjAwNDkzQjdFIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1hYy5tbSBp
biBTb3VyY2VzICovLAorCQkJCTlGNEY1OTQ2MTY0OEJBOEUwMDQ5M0I3RSAvKiBOZXR3b3JrUHJv
Y2Vzc01hbmFnZXJNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk5RjRGNTk0QTE2NDhDNzZDMDA0
OTNCN0UgLyogUHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZXIubW0gaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRl
eCAyY2MxZTYyODA0NjMyODEzMTE0MDU4ZmFjYmVhMTUwMDU3MzVjYzI0Li4yYzFiNDMwNTIzNjRk
MzZmYjYyYTZlZDdlOWJjMmFmNGMzZDgwNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC05Nyw0ICs5Nyw4IEBAIG1lc3NhZ2Vz
IC0+IFdlYlByb2Nlc3MgewogICAgIFNlY0l0ZW1SZXNwb25zZSh1aW50NjRfdCByZXF1ZXN0SUQs
IFdlYktpdDo6U2VjSXRlbVJlc3BvbnNlRGF0YSByZXNwb25zZSkgRGlzcGF0Y2hPbkNvbm5lY3Rp
b25RdWV1ZQogICAgIFNlY0tleWNoYWluSXRlbVJlc3BvbnNlKHVpbnQ2NF90IHJlcXVlc3RJRCwg
V2ViS2l0OjpTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGEgcmVzcG9uc2UpIERpc3BhdGNoT25D
b25uZWN0aW9uUXVldWUKICNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFNldEFwcGxp
Y2F0aW9uSXNPY2NsdWRlZChib29sIGZsYWcpOworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW0gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW0K
aW5kZXggMmFmNTk0OGZkOWUxNzdhNDUwZDg2OTYxZGZmNTk2ZTg1NzAxMjY4Yy4uOTc5OGU3Njdi
NjcyZjhlODAzNmQxNWRhMzJiYWE4NDEwYzIwOTEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5tbQpAQCAt
NDYsMTAgKzQ2LDYgQEAgdm9pZCBJbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBTdHJpbmcmIGNs
aWVudElkZW50aWZpZXIsIENvcmVJUEM6OkNvbm5lY3Rpb246OkkKICAgICBXVEY6OmluaXRpYWxp
emVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAK
LSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLSAgICBbW05TUHJv
Y2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRpc2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjpAIkRpc2Fi
bGUgV2ViUHJvY2VzcyBBdXRvIFRlcm1pbmF0aW9uIl07Ci0jZW5kaWYKLQogICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLmluaXRpYWxpemVTaGltKCk7CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
aW5pdGlhbGl6ZVNhbmRib3goY2xpZW50SWRlbnRpZmllcik7CiAgICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkuaW5pdGlhbGl6ZShjb25uZWN0aW9uSWRlbnRpZmllciwgUnVuTG9vcDo6bWFpbigpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172667</attachid>
            <date>2012-11-06 15:59:13 -0800</date>
            <delta_ts>2012-11-06 16:18:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100997-20121106155725.patch</filename>
            <type>text/plain</type>
            <size>48339</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzFkYjVmNzA3ZWMzNWE1
MWYzOTEyZWFjMGIwM2VmN2FiMzVlMDcwZS4uNjBjZjBlMGVlZWRjYTFhNzRiOTFmNmEyNDgxMzhh
NzVhOTdmODJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTExLTA2ICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhcHBsaWNhdGlv
biBvY2NsdXNpb24gY3JpdGVyaW9uIHRvIGVuYWJsZS9kaXNhYmxlIHByb2Nlc3Mgc3VwcHJlc3Np
b24gb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDA5OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQcm92aWRlIHN1cHBvcnQgZm9yIGVuYWJsaW5nIGFuZCBkaXNhYmxpbmcgcHJvY2VzcyBzdXBw
cmVzc2lvbiB3aGVuIGFwcGxpY2F0aW9uIGlzIGNvbXBsZXRlbHkgb2NjbHVkZWQgb24gTWFjLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46IEFk
ZGVkIG1lc3NhZ2UgdG8gdXBkYXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMuCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NNYWluKTogUmVtb3ZlZCBjYWxsIHRvIHRha2UgcHJv
Y2VzcyBzdXBwcmVzc2lvbiBhc3NlcnRpb24gc2luY2UgQ2hpbGRQcm9jZXNzCisgICAgICAgIHRh
a2VzIG9uZSBvbiBjb25zdHJ1dGlvbi4KKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpblBy
b2Nlc3MubWVzc2FnZXMuaW46IEFkZGVkIG1lc3NhZ2UgdG8gdXBkYXRlIGFwcGxpY2F0aW9uIG9j
Y2x1c2lvbiBzdGF0dXMuCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vz
c01haW5NYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluKTogUmVtb3Zl
ZCBjYWxsIHRvIHRha2UgcHJvY2VzcyBzdXBwcmVzc2lvbiBhc3NlcnRpb24gc2luY2UgQ2hpbGRQ
cm9jZXNzCisgICAgICAgIHRha2VzIG9uZSBvbiBjb25zdHJ1Y3Rpb24uCisgICAgICAgICogU2hh
cmVkL0NoaWxkUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6Q2hp
bGRQcm9jZXNzKTogVGFrZSBwcm9jZXNzIHN1cHByZXNzaW9uIGFzc2VydGlvbiBvbiBjb25zdHJ1
Y3Rpb24uCisgICAgICAgICogU2hhcmVkL0NoaWxkUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0
OjpDaGlsZFByb2Nlc3M6OmFwcGxpY2F0aW9uSXNPY2NsdWRlZCk6CisgICAgICAgICogU2hhcmVk
L21hYy9DaGlsZFByb2Nlc3NNYWMubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpDaGlsZFBy
b2Nlc3M6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCk6IFJlbGVhc2UgcHJvY2VzcyBzdXBwcmVz
c2lvbiBhc3NlcnRpb24gaWYgYXBwbGljYXRpb24KKyAgICAgICAgYmVjb21lcyBvY2NsdWRlZCBv
ciB0YWtlIGEgbmV3IGFzc2VydGlvbiBpZiBhcHBsaWNhdGlvbiBiZWNvbWVzIHZpc2libGUuCisg
ICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6ZGlzYWJsZVByb2Nlc3NTdXBwcmVzc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6ZW5hYmxlUHJvY2Vzc1N1cHByZXNzaW9u
KToKKyAgICAgICAgSGVscGVyIG1ldGhvZHMgdG8gdGFrZSBhbmQgcmVsZWFzZSBwcm9jZXNzIHN1
cHByZXNzaW9uIGFzc2VydGlvbi4KKyAgICAgICAgKiBTaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJl
ZFdvcmtlclByb2Nlc3MubWVzc2FnZXMuaW46IEFkZGVkIG1lc3NhZ2UgdG8gdXBkYXRlIGFwcGxp
Y2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMuCisgICAgICAgICogU2hhcmVkV29ya2VyUHJvY2Vzcy9t
YWMvU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW06CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
ZFdvcmtlclByb2Nlc3NNYWluKTogUmVtb3ZlZCBjYWxsIHRvIHRha2UgcHJvY2VzcyBzdXBwcmVz
c2lvbiBhc3NlcnRpb24gc2luY2UgQ2hpbGRQcm9jZXNzCisgICAgICAgIHRha2VzIG9uZSBvbiBj
b25zdHJ1Y3Rpb24uCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NN
YW5hZ2VyLmg6CisgICAgICAgIChOZXR3b3JrUHJvY2Vzc01hbmFnZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOiBVcGRhdGUgYXBwbGlj
YXRpb24gb2NjbHVzaW9uIHN0YXR1cyBwb3N0IGxhdW5jaC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OmlzVmFsaWQpOgorICAgICAgICAoTmV0d29ya1Byb2Nlc3NQcm94eSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvbWFjL05ldHdvcmtQcm9jZXNzTWFuYWdlck1hYy5t
bTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6c2V0QXBw
bGljYXRpb25Jc09jY2x1ZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0
d29ya1Byb2Nlc3NQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6c2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oOgorICAgICAgICAoUGx1Z2luUHJvY2Vzc01hbmFn
ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5n
KTogVXBkYXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMgcG9zdCBsYXVuY2guCisgICAg
ICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6aXNWYWxpZCk6CisgICAgICAgICogVUlQcm9jZXNz
L1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCk6
CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpzZXRBcHBsaWNhdGlvbklz
T2NjbHVkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtl
clByb2Nlc3NNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOiBVcGRhdGUgYXBwbGljYXRpb24gb2Nj
bHVzaW9uIHN0YXR1cyBwb3N0IGxhdW5jaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvU2hhcmVkV29y
a2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVk
V29ya2VyUHJvY2Vzc1Byb3h5Ojppc1ZhbGlkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU2hhcmVk
V29ya2Vycy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXJNYWMubW06IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcjo6c2V0QXBwbGljYXRpb25J
c09jY2x1ZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9tYWMvU2hhcmVk
V29ya2VyUHJvY2Vzc1Byb3h5TWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U2hhcmVk
V29ya2VyUHJvY2Vzc1Byb3h5OjpzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6
Y3JlYXRlKTogQWRkZWQgY2FsbCB0byBpbml0aWFsaXplIHByb2Nlc3Mgc3VwcHJlc3Npb24gc3Vw
cG9ydC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0OjphcHBsaWNhdGlvbklzT2NjbHVkZWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmRpZEZpbmlzaExhdW5jaGluZyk6IFVwZGF0ZSBhcHBsaWNhdGlvbiBvY2NsdXNpb24gc3RhdHVz
IHBvc3QgbGF1bmNoLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6YXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6YXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCk6
CisgICAgICAgIE5vdGlmaWNhdGlvbiBoYW5kbGVycyBmb3IgaW5mb3JtaW5nIG5vbiBVSSBXZWJL
aXQyIHByb2Nlc3NlcyBvZiBjaGFuZ2VzIHRvIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0ZS4K
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRp
b25IYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmluaXRpYWxpemVQcm9j
ZXNzU3VwcHJlc3Npb25TdXBwb3J0KToKKyAgICAgICAgSGVscGVyIG1ldGhvZCB0byByZWdpc3Rl
ciBvY2NsdXNpb24gbm90aWZpY2F0aW9uIGhhbmRsZXJzIGlmIHByb2Nlc3Mgc3VwcHJlc3Npb24g
c3VwcG9ydCBpcyBlbmFibGVkLgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46IEFk
ZGVkIG1lc3NhZ2UgdG8gdXBkYXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tOgorICAgICAg
ICAoV2ViS2l0OjpJbml0aWFsaXplV2ViUHJvY2Vzcyk6IFJlbW92ZWQgY2FsbCB0byB0YWtlIHBy
b2Nlc3Mgc3VwcmVzc2lvbiBhc3NlcnRpb24gc2luY2UgQ2hpbGRQcm9jZXNzCisgICAgICAgIHRh
a2VzIG9uZSBvbiBjb25zdHJ1Y3Rpb24uCisKIDIwMTItMTEtMDUgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBCZWdpbiBzdHViYmluZyBvdXQgdGhlIG5l
dyByZW1vdGUgbGF5ZXIgdHJlZSBkcmF3aW5nIGFyZWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMDI5
NTM2YTM0MTIwNWU0MjQ1YzJhODI2NWFkN2MxYThmMjgyOTM1Zi4uZDI0M2JkNDRmNjAwNjM0YmRk
MjI1MGMzNDcxN2IxNzVlYjEzYjM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI4LDYgKzI4LDEw
IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIHsKIAogICAgICMgQ3JlYXRlcyBhIGNvbm5l
Y3Rpb24gZm9yIGNvbW11bmljYXRpb24gd2l0aCBhIFdlYlByb2Nlc3MKICAgICBDcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCisKKyNpZiBQTEFURk9STShNQUMpCisgICAgU2V0
QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wgZmxhZykKKyNlbmRpZgogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01haW5NYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWluTWFjLm1tCmluZGV4IDEzMzYzOGE2
MjM0ZTcxMTEwZDlmZTc0ODY2YTdmNzBhMTA3NzI2MDQuLmM1NmY4MGEyYTllZjM3YjQ4MjdjMGM1
ODlhMDA5ODc1NWJmZmQzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01haW5NYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbQpAQCAtODQsMTAgKzg0LDYg
QEAgaW50IE5ldHdvcmtQcm9jZXNzTWFpbihjb25zdCBDb21tYW5kTGluZSYgY29tbWFuZExpbmUp
CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxp
emVNYWluUnVuTG9vcCgpOwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDkwCi0gICAgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBkaXNhYmxlQXV0b21hdGlj
VGVybWluYXRpb246QCJEaXNhYmxlIE5ldHdvcmtQcm9jZXNzIEF1dG8gVGVybWluYXRpb24iXTsK
LSNlbmRpZgotCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgbmV0d29yayBwcm9jZXNzIGNvbm5lY3Rp
b24uCiAgICAgTmV0d29ya1Byb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUoQ29yZUlQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllcihzZXJ2ZXJQb3J0KSwgUnVuTG9vcDo6bWFpbigpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IGU0ZWY0NTA3MjRiYTBhNWVjMDEzOTI2NTcwZWYyNDU5YzRjN2Q0NjMuLjQx
MjI2YjE0ZDUzZTM3MTA2ZjU0MWJkMWRhYTUzZWE4OGNhZGNjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MubWVzc2FnZXMuaW4KQEAg
LTM4LDYgKzM4LDEwIEBAIG1lc3NhZ2VzIC0+IFBsdWdpblByb2Nlc3MgewogICAgICMgQXNrcyB0
aGUgcGx1Zy1pbiB0byBjbGVhciBkYXRhIGZvciB0aGUgZ2l2ZW4gc2l0ZXMuIFRoZSBwbHVnLWlu
IHByb2Nlc3Mgc2VuZHMgYmFjawogICAgICMgYSBEaWRDbGVhclNpdGVEYXRhIG1lc3NhZ2Ugd2hl
biBkb25lLgogICAgIENsZWFyU2l0ZURhdGEoVmVjdG9yPFdURjo6U3RyaW5nPiBzaXRlcywgdWlu
dDY0X3QgZmxhZ3MsIHVpbnQ2NF90IG1heEFnZUluU2Vjb25kcywgdWludDY0X3QgY2FsbGJhY2tJ
RCkKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYm9v
bCBmbGFnKTsKKyNlbmRpZgogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWluTWFjLm1tIGIvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01haW5NYWMubW0KaW5kZXggOTEyYjFj
NGZiNWJiZjI0NWMxZWJmYWRiOTQ3MjAwODlhZTJhMWRhMC4uZmZlMWUyZGQzNGM3NWUyZThmMGI1
YTJhYjgxYmY3ZWJmZmFkOTdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01haW5NYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01haW5NYWMubW0KQEAgLTExNywxMCArMTE3LDYg
QEAgaW50IFBsdWdpblByb2Nlc3NNYWluKGNvbnN0IENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkK
ICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6
ZU1haW5SdW5Mb29wKCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwOTAKLSAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRpc2FibGVBdXRvbWF0aWNU
ZXJtaW5hdGlvbjpAIkRpc2FibGUgUGx1Z2luUHJvY2VzcyBBdXRvIFRlcm1pbmF0aW9uIl07Ci0j
ZW5kaWYKLQogI2lmIGRlZmluZWQoX19pMzg2X18pCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgc2hp
bSBmb3IgMzItYml0IG9ubHkuCiAgICAgUGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6
ZVNoaW0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAKaW5kZXggYjY1ZWVi
ZTJjZTQyNTU3NTRhMzQ3MTc1Zjg2NTlhY2I4M2Y1MzExZS4uMzQ0ZDU0YzkxNDc2YjY0OWFlYzU3
ZWM2ZDFmMTNlYjcyMzhjMDk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0No
aWxkUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5j
cHAKQEAgLTYwLDkgKzYwLDE1IEBAIENoaWxkUHJvY2Vzczo6Q2hpbGRQcm9jZXNzKCkKICAgICA6
IG1fdGVybWluYXRpb25UaW1lb3V0KDApCiAgICAgLCBtX3Rlcm1pbmF0aW9uQ291bnRlcigwKQog
ICAgICwgbV90ZXJtaW5hdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNoaWxkUHJv
Y2Vzczo6dGVybWluYXRpb25UaW1lckZpcmVkKQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1f
YXBwbGljYXRpb25Jc09jY2x1ZGVkKGZhbHNlKQorI2VuZGlmCiB7CiAgICAgLy8gRklYTUU6IFRo
ZSB0ZXJtaW5hdGlvbiB0aW1lciBzaG91bGQgbm90IGJlIHNjaGVkdWxlZCBvbiB0aGUgbWFpbiBy
dW4gbG9vcC4KICAgICAvLyBJdCB3b24ndCB3b3JrIHdpdGggdGhlIHRocmVhZGVkIG1vZGUsIGJ1
dCBpdCdzIG5vdCByZWFsbHkgdXNlZnVsIGFueXdheSBhcyBpcy4KKyNpZiBQTEFURk9STShNQUMp
CisgICAgZGlzYWJsZVByb2Nlc3NTdXBwcmVzc2lvbihwcm9jZXNzU3VwcHJlc3Npb25WaXNpYmxl
QXBwbGljYXRpb25SZWFzb24pOworI2VuZGlmCiB9CiAKIENoaWxkUHJvY2Vzczo6fkNoaWxkUHJv
Y2VzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgKaW5kZXggOWVjMWE1MGQ5OTJm
ODAxY2U2NzQ0YzBhODQ1MjhmYjJmMWRiNzliNC4uNDQyOGE0MGFiNTk1YjYxODQ1MWNhYTM3MjNj
MWUzMTFmMjQ0MzRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuaApAQCAtMjks
NiArMjksMTAgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9S
dW5Mb29wLmg+CiAKKyNpZiBQTEFURk9STShNQUMpCitPQkpDX0NMQVNTIE5TU3RyaW5nOworI2Vu
ZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBDaGlsZFByb2Nlc3MgOiBwcm90ZWN0
ZWQgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKQEAgLTU3LDYgKzYxLDExIEBAIHB1Ymxp
YzoKICAgICAgICAgQ2hpbGRQcm9jZXNzJiBtX2NoaWxkUHJvY2VzczsKICAgICB9OwogCisjaWYg
UExBVEZPUk0oTUFDKQorICAgIGJvb2wgYXBwbGljYXRpb25Jc09jY2x1ZGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9hcHBsaWNhdGlvbklzT2NjbHVkZWQ7IH0KKyAgICB2b2lkIHNldEFwcGxpY2F0aW9u
SXNPY2NsdWRlZChib29sKTsKKyNlbmRpZgorCiAgICAgc3RhdGljIHZvaWQgZGlkQ2xvc2VPbkNv
bm5lY3Rpb25Xb3JrUXVldWUoV29ya1F1ZXVlJiwgQ29yZUlQQzo6Q29ubmVjdGlvbiopOwogCiBw
cm90ZWN0ZWQ6CkBAIC03MSw2ICs4MCwxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRUZXJtaW5hdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZSgpOwogCisj
aWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQgZGlzYWJsZVByb2Nlc3NTdXBwcmVzc2lvbihOU1N0
cmluZyAqcmVhc29uKTsKKyAgICB2b2lkIGVuYWJsZVByb2Nlc3NTdXBwcmVzc2lvbihOU1N0cmlu
ZyAqcmVhc29uKTsKKworICAgIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHByb2Nlc3NTdXBwcmVz
c2lvblZpc2libGVBcHBsaWNhdGlvblJlYXNvbjsKKyNlbmRpZgorCiAgICAgLy8gVGhlIHRpbWVv
dXQsIGluIHNlY29uZHMsIGJlZm9yZSB0aGlzIHByb2Nlc3Mgd2lsbCBiZSB0ZXJtaW5hdGVkIGlm
IHRlcm1pbmF0aW9uCiAgICAgLy8gaGFzIGJlZW4gZW5hYmxlZC4gSWYgdGhlIHRpbWVvdXQgaXMg
MCBzZWNvbmRzLCB0aGUgcHJvY2VzcyB3aWxsIGJlIHRlcm1pbmF0ZWQgaW1tZWRpYXRlbHkuCiAg
ICAgZG91YmxlIG1fdGVybWluYXRpb25UaW1lb3V0OwpAQCAtODAsNiArOTYsMTAgQEAgcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX3Rlcm1pbmF0aW9uQ291bnRlcjsKIAogICAgIFdlYkNvcmU6OlJ1
bkxvb3A6OlRpbWVyPENoaWxkUHJvY2Vzcz4gbV90ZXJtaW5hdGlvblRpbWVyOworCisjaWYgUExB
VEZPUk0oTUFDKQorICAgIGJvb2wgbV9hcHBsaWNhdGlvbklzT2NjbHVkZWQ7CisjZW5kaWYKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0No
aWxkUHJvY2Vzc01hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODAxZjVkODliNDUyZTMxNjY2MGY0N2I5Mjhi
Y2RhYjU1NmQ3ODJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9DaGlsZFByb2Nlc3NNYWMubW0KQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQ2hpbGRQcm9jZXNzLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitOU1N0cmluZyAqIGNvbnN0IENoaWxkUHJvY2Vzczo6cHJvY2Vzc1N1cHByZXNzaW9u
VmlzaWJsZUFwcGxpY2F0aW9uUmVhc29uID0gQCJBcHBsaWNhdGlvbiBpcyBWaXNpYmxlIjsKKwor
dm9pZCBDaGlsZFByb2Nlc3M6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29sIGFwcGxpY2F0
aW9uSXNPY2NsdWRlZCkKK3sKKyAgICBpZiAobV9hcHBsaWNhdGlvbklzT2NjbHVkZWQgPT0gYXBw
bGljYXRpb25Jc09jY2x1ZGVkKQorICAgICAgICByZXR1cm47CisKKyNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICBtX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9
IGFwcGxpY2F0aW9uSXNPY2NsdWRlZDsKKyAgICBpZiAobV9hcHBsaWNhdGlvbklzT2NjbHVkZWQp
CisgICAgICAgIGVuYWJsZVByb2Nlc3NTdXBwcmVzc2lvbihwcm9jZXNzU3VwcHJlc3Npb25WaXNp
YmxlQXBwbGljYXRpb25SZWFzb24pOworICAgIGVsc2UKKyAgICAgICAgZGlzYWJsZVByb2Nlc3NT
dXBwcmVzc2lvbihwcm9jZXNzU3VwcHJlc3Npb25WaXNpYmxlQXBwbGljYXRpb25SZWFzb24pOwor
I2VuZGlmCit9CisKK3ZvaWQgQ2hpbGRQcm9jZXNzOjpkaXNhYmxlUHJvY2Vzc1N1cHByZXNzaW9u
KE5TU3RyaW5nICpyZWFzb24pCit7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDkwCisgICAgLy8gVGhlIGZvbGxvd2luZyBhc3N1bWVzIHRoYXQgYSBwcm9jZXNzIGVu
YWJsaW5nIEF1dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9ydCBhbHNvCisgICAgLy8gdGFrZXMgYSBB
dXRvbWF0aWNUZXJtaW5hdGlvbiBhc3NlcnRpb24gZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgcHJv
Y2Vzcy4KKyAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRpc2FibGVBdXRvbWF0aWNU
ZXJtaW5hdGlvbjpyZWFzb25dOworI2VuZGlmCit9CisKK3ZvaWQgQ2hpbGRQcm9jZXNzOjplbmFi
bGVQcm9jZXNzU3VwcHJlc3Npb24oTlNTdHJpbmcgKnJlYXNvbikKK3sKKyNpZiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICAvLyBUaGUgZm9sbG93aW5nIGFzc3Vt
ZXMgdGhhdCBhIHByb2Nlc3MgZW5hYmxpbmcgQXV0b21hdGljVGVybWluYXRpb25TdXBwb3J0IGFs
c28KKyAgICAvLyB0YWtlcyBhIEF1dG9tYXRpY1Rlcm1pbmF0aW9uIGFzc2VydGlvbiBmb3IgdGhl
IGxpZmV0aW1lIG9mIHRoZSBwcm9jZXNzLgorICAgIFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5m
b10gZW5hYmxlQXV0b21hdGljVGVybWluYXRpb246cmVhc29uXTsKKyNlbmRpZgorfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtl
clByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNz
L1NoYXJlZFdvcmtlclByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggM2NkNzUzMzdiN2ZlZTg0Njli
MDk0ZTgxNDhlYTU1YzM2OTI0OTg5YS4uNzg5YmJiMzE4MTRjNGUxNGM4M2FlNmNhMjBmMTA1ZjY0
NmQ0YmNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9T
aGFyZWRXb3JrZXJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzAsNiAr
MzAsMTAgQEAgbWVzc2FnZXMgLT4gU2hhcmVkV29ya2VyUHJvY2VzcyB7CiAgICAgIyBUaGUgc2hh
cmVkIHdvcmtlciBwcm9jZXNzIHNlbmRzIGJhY2sgYSBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVj
dGlvbiBtZXNzYWdlIHdpdGgKICAgICAjIGEgY29ubmVjdGlvbiBpZGVudGlmaWVyLgogICAgIENy
ZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCkKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBTZXRB
cHBsaWNhdGlvbklzT2NjbHVkZWQoYm9vbCBmbGFnKQorI2VuZGlmCiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNz
TWFpbk1hYy5tbQppbmRleCAzMGY4YTc0OTY0ZDZkMWNjMjg3OWYzMTk3YzU0NWJhNmMwNTk1YWRi
Li5kOTRkNDhiNDVhNWQwZDA3MDg5OTkwYjgzNWEwZjU2Nzk4YzZlZmZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNz
TWFpbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9T
aGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbQpAQCAtOTYsMTAgKzk2LDYgQEAgaW50IFNoYXJl
ZFdvcmtlclByb2Nlc3NNYWluKGNvbnN0IENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkKICAgICBX
VEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5S
dW5Mb29wKCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAK
LSAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRpc2FibGVBdXRvbWF0aWNUZXJtaW5h
dGlvbjpAIkRpc2FibGUgU2hhcmVkV29ya2VyUHJvY2VzcyBBdXRvIFRlcm1pbmF0aW9uIl07Ci0j
ZW5kaWYKLQogICAgIC8vIEluaXRpYWxpemUgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2VzcyBjb25u
ZWN0aW9uLgogICAgIFNoYXJlZFdvcmtlclByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUoQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihzZXJ2ZXJQb3J0KSwgUnVuTG9vcDo6bWFpbigp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc01hbmFnZXIuaAppbmRleCBiOGI0NTM0Y2VmY2YzYmExNDYyYTdiMGMzNjVlOTBh
MWQ2MTdlNmRmLi45NTdlNDVmM2U2NWU4YTM5ZGU4YzA2OWE5ZmIwM2MwZTJmOTdlMThkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc01h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc01hbmFnZXIuaApAQCAtNTAsNiArNTAsMTAgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQg
cmVtb3ZlTmV0d29ya1Byb2Nlc3NQcm94eShOZXR3b3JrUHJvY2Vzc1Byb3h5Kik7CiAKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYm9vbCk7Cisj
ZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2Vzc01hbmFnZXIoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAppbmRleCAyODkzNDVhNDY1N2NhMWFhMTljYjAzMzBiY2RiZjkyM2MzZGY5NWRmLi4x
ZjljZTg5ZWQyNDFiZjExNDEwY2I0ODM4Y2Y2YTllZGRmY2U4YTk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cApAQCAtMTYyLDYgKzE2MiwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZpbmlz
aExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBDb3JlSVBDOjpDb25uZWN0aQogICAgICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLCAwKTsKICAgICAKICAgICBtX251bVBlbmRpbmdDb25u
ZWN0aW9uUmVxdWVzdHMgPSAwOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChXZWJDb250
ZXh0OjphcHBsaWNhdGlvbklzT2NjbHVkZWQoKSkKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUp
LCAwKTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRl
eCA0N2NjYmFjYmY3MzM0YTY3ZDVhNjJiMmU3MDM2NTE3ZWYyNzA3NzA3Li4xM2ZkZmQ4OWEwY2Rk
ZTFjNTlmMzQ5OTJlMzhiNTM3NDAzYzYwZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC00NSw2ICs0NSwx
MiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihQYXNz
UmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5Pik7CiAKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVy
biBtX2Nvbm5lY3Rpb247IH0KKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2b2lkIHNldEFwcGxp
Y2F0aW9uSXNPY2NsdWRlZChib29sKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5ldHdvcmtQ
cm9jZXNzUHJveHkoTmV0d29ya1Byb2Nlc3NNYW5hZ2VyKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL21hYy9OZXR3b3JrUHJvY2Vzc01hbmFnZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NN
YW5hZ2VyTWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhZjk4ODhhNTBmZjk0NTYxYzAwODNiMmZjZTcxMGZi
ZGU0ZDA1NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9tYWMvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyTWFjLm1tCkBAIC0wLDAgKzEsNDMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzTWFu
YWdlci5oIgorCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKworI2ltcG9ydCAiTmV0d29y
a1Byb2Nlc3NQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBOZXR3b3JrUHJv
Y2Vzc01hbmFnZXI6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29sIGFwcGxpY2F0aW9uSXNP
Y2NsdWRlZCkKK3sKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgcmV0dXJuIG1f
bmV0d29ya1Byb2Nlc3MtPnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChhcHBsaWNhdGlvbklzT2Nj
bHVkZWQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9OZXR3b3JrL21hYy9OZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tCmluZGV4IDQ0MGNjNDI5
ZjA4YzM0YjZkYTk2ZmE4MTEyZDNkZjUxOWQzOWRkYjcuLjAyNTM0ZTliOTFlNjM2YzdhZDUzMzI0
YzNmNTFjYWNmOTIyNzJhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL21hYy9OZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL21hYy9OZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCiAKICNpbXBvcnQgIk5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJOZXR3b3JrUHJvY2Vz
c01lc3NhZ2VzLmgiCiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogCkBAIC0zOSw2ICs0
MCwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpbwogICAgIHBhcmFtZXRlcnMucGFyZW50UHJv
Y2Vzc05hbWUgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHByb2Nlc3NOYW1lXTsKIH0K
IAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYm9v
bCBhcHBsaWNhdGlvbklzT2NjbHVkZWQpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYXBwbGljYXRpb25Jc09jY2x1ZGVkKSwg
MCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oCmluZGV4IDM3ODI0YzRhYTNiNGRhYjFjYjIxMzg3MDY2
OWQyNTljMDgwZDg2ZTAuLjVlNTE5NDI3YmEzZjFkZGZiMzdiZDhiZTgzZjMyOTc4YzQ3YjhiOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc01hbmFnZXIuaApAQCAtNTYsNiArNTYsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0
U2l0ZXNXaXRoRGF0YShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiwgV2ViUGx1Z2luU2l0ZURhdGFN
YW5hZ2VyKiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBjbGVhclNpdGVEYXRhKGNv
bnN0IFBsdWdpbk1vZHVsZUluZm8mLCBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIqLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGZsYWdzLCB1aW50NjRfdCBtYXhBZ2VJblNl
Y29uZHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZv
aWQgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wpOworI2VuZGlmCisKIHByaXZhdGU6CiAg
ICAgUGx1Z2luUHJvY2Vzc01hbmFnZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKaW5kZXggODExOTdjZTM2
YzRiM2JkMTUyOTcxM2E5OTIwZTdkNzRjYzI1NjI3Yi4uMGMyZTg2ODllNjQ4ODc2ODBlNDJhMTM0
OTNjMGYzZTUwZTBiYjEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCkBAIC0yMjgsNiArMjI4LDExIEBAIHZv
aWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVy
KiwgQ29yZUlQQzo6Q29ubmVjdGlvCiAgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6UGx1Z2luUHJvY2Vzczo6Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgMCk7CiAgICAg
CiAgICAgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzID0gMDsKKworI2lmIFBMQVRGT1JN
KE1BQykKKyAgICBpZiAoV2ViQ29udGV4dDo6YXBwbGljYXRpb25Jc09jY2x1ZGVkKCkpCisgICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzczo6U2V0QXBwbGlj
YXRpb25Jc09jY2x1ZGVkKHRydWUpLCAwKTsKKyNlbmRpZgogfQogCiB2b2lkIFBsdWdpblByb2Nl
c3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgQ29yZUlQQzo6QXR0
YWNobWVudCYgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQ
bHVnaW5Jbml0aWFsaXphdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKaW5kZXggZjc3NTAzZDhkNDJkOTBjYmViOGNk
YTY0Yzk3OWRlZGRlZTJmMjBhYS4uMTM1N2U2YzdmNWI0OTBmN2I0MjQ4ZWM3NmY1YTUwNGUyYmYw
MGVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc1Byb3h5LmgKQEAgLTgwLDcgKzgwLDExIEBAIHB1YmxpYzoKICAgICAvLyBUZXJt
aW5hdGVzIHRoZSBwbHVnLWluIHByb2Nlc3MuCiAgICAgdm9pZCB0ZXJtaW5hdGUoKTsKIAorICAg
IGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbjsgfQorCiAjaWYgUExB
VEZPUk0oTUFDKQorICAgIHZvaWQgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wpOworCiAg
ICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBwbHVnLWluIG5lZWRzIHRoZSBoZWFwIHRvIGJlIG1h
cmtlZCBleGVjdXRhYmxlLgogICAgIHN0YXRpYyBib29sIHBsdWdpbk5lZWRzRXhlY3V0YWJsZUhl
YXAoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmE5NzRkYWQ3YTgyOWQ4MTM4OTUzYzY0NzQ2YjIzOGQyOGI4ZmFhOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9Q
bHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgorCisj
aWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorCisjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzUHJveHku
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNl
dEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29sIGFwcGxpY2F0aW9uSXNPY2NsdWRlZCkKK3sKKyAg
ICBzaXplX3QgcHJvY2Vzc0NvdW50ID0gbV9wbHVnaW5Qcm9jZXNzZXMuc2l6ZSgpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvY2Vzc0NvdW50OyArK2kpCisgICAgICAgIG1fcGx1Z2lu
UHJvY2Vzc2VzW2ldLT5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYXBwbGljYXRpb25Jc09jY2x1
ZGVkKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUExV
R0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQppbmRleCAyMDdlY2EyYzk3ZDNm
MjRiZDViZjM0MzY5OWJjZDUzOGFiNDVmNDA4Li5lOTJlZjllNzZkNGQxZDU0ODQ2ZDUyZjI4OTQx
YzJmZDk4YTMyZThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KQEAgLTMwLDYgKzMwLDcg
QEAKIAogI2ltcG9ydCAiRW52aXJvbm1lbnRWYXJpYWJsZXMuaCIKICNpbXBvcnQgIlBsdWdpblBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgIlBsdWdpblByb2Nlc3NNZXNzYWdl
cy5oIgogI2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHNwYXduLmg+CkBAIC0zMTUsNiArMzE2LDEzIEBAIHZv
aWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiAgICAg
bWFrZVBsdWdpblByb2Nlc3NUaGVGcm9udFByb2Nlc3MoKTsKIH0KIAordm9pZCBQbHVnaW5Qcm9j
ZXNzUHJveHk6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29sIGFwcGxpY2F0aW9uSXNPY2Ns
dWRlZCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklz
T2NjbHVkZWQoYXBwbGljYXRpb25Jc09jY2x1ZGVkKSwgMCk7Cit9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29y
a2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIuaAppbmRleCBiYTA2
YzdjYmI4MDk4MjQzNDRjZTc5Y2M0OWFiNDFiNzFmZDNjODQ4Li5jMjU1NWVhNGUyYTE3NGY1NjNh
MDIwNjMxY2NhOWUzNjc2ZjE0ZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NNYW5h
Z2VyLmgKQEAgLTUzLDYgKzUzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNoYXJlZFdvcmtl
clByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUs
IFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U2hhcmVkV29ya2VyUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOwogICAgIHZvaWQgcmVtb3ZlU2hhcmVkV29y
a2VyUHJvY2Vzc1Byb3h5KFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSopOwogCisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIHZvaWQgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wpOworI2VuZGlm
CisKIHByaXZhdGU6CiAgICAgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJz
L1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5jcHAKaW5kZXggMDMwZTNmZmM4OTE1MWYxNDBhOTRk
ODcwZjMzNjUyMmQ5ZmUxMWU5My4uYjgwOGVmYmFjZGZhYjg4ODZhZmM4YTE1N2Y1MGNlODhlODkx
YTA0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMv
U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNjQsNiAr
MTY0LDExIEBAIHZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hp
bmcoUHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQQzo6Q29uCiAgICAgICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U2hhcmVkV29ya2VyUHJvY2Vzczo6Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24oKSwgMCk7CiAgICAgCiAgICAgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzID0g
MDsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoV2ViQ29udGV4dDo6YXBwbGljYXRpb25J
c09jY2x1ZGVkKCkpCisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2hhcmVk
V29ya2VyUHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUpLCAwKTsKKyNlbmRp
ZgogfQogCiB2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24oY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50aWZp
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9T
aGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFy
ZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5oCmluZGV4IDlmMGM1ZDJhY2ViMzll
MmM2ODY3ODhkNzI0Mjg0ZGE1ZDlhNTg5NTUuLjZlOWYyMGE4NjRhNTJjNTU1Y2JiMDk5NDY5MmNj
MjQ0MGExZDZjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRX
b3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5oCkBAIC01Niw2
ICs1NiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gVGVybWluYXRlcyB0aGUgc2hhcmVkIHdvcmtlciBw
cm9jZXNzLgogICAgIHZvaWQgdGVybWluYXRlKCk7CiAKKyAgICBib29sIGlzVmFsaWQoKSBjb25z
dCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2b2lk
IHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29sKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eShTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlciosIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vz
c01hbmFnZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9t
YWMvU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXJNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTYzOTA3Y2U2
ZDVlMjljODhlOWQxYmM0ZjI0Y2MxM2Y1NGM5Yzc1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNz
TWFuYWdlck1hYy5tbQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oIgorCisjaWYgRU5B
QkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKKworI2ltcG9ydCAiU2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFNoYXJlZFdvcmtlclByb2Nl
c3NNYW5hZ2VyOjpzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYm9vbCBhcHBsaWNhdGlvbklzT2Nj
bHVkZWQpCit7CisgICAgc2l6ZV90IHByb2Nlc3NDb3VudCA9IG1fc2hhcmVkV29ya2VyUHJvY2Vz
c2VzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2Nlc3NDb3VudDsgKytp
KQorICAgICAgICBtX3NoYXJlZFdvcmtlclByb2Nlc3Nlc1tpXS0+c2V0QXBwbGljYXRpb25Jc09j
Y2x1ZGVkKGFwcGxpY2F0aW9uSXNPY2NsdWRlZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL21hYy9TaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vy
cy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViM2RkNDYz
OWQ0MTIyNmQ5ZjdmMDFkOWZkYWY4N2QwZDAyZTBmNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5TWFjLm1tCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIlNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5oIgorCisjaWYgRU5BQkxF
KFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKKworI2ltcG9ydCAiU2hhcmVkV29ya2VyUHJvY2Vzc01l
c3NhZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eTo6c2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wgYXBwbGljYXRpb25Jc09jY2x1
ZGVkKQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNoYXJlZFdvcmtlclByb2Nlc3M6OlNldEFwcGxpY2F0
aW9uSXNPY2NsdWRlZChhcHBsaWNhdGlvbklzT2NjbHVkZWQpLCAwKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGZlNjlmMmI3ZTAzYmQ5
YjE3ZDUyNjk2M2Q4M2MwNWJjNTdjNGYwMTEuLjhkZGM5M2Q4MzMwMGQyNGM3NWQ0MDQ0YjkwZDVk
ODM4MTBkMzdkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAg
LTEwMCw2ICsxMDAsOSBAQCBQYXNzUmVmUHRyPFdlYkNvbnRleHQ+IFdlYkNvbnRleHQ6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCkKICAgICBKU0M6OmluaXRpYWxpemVU
aHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9v
cDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIFdlYkNv
bnRleHQ6OmluaXRpYWxpemVQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0KCk7CisjZW5kaWYKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbnRleHQoUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25k
YXJ5UHJvY2VzcywgaW5qZWN0ZWRCdW5kbGVQYXRoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5oCmluZGV4IDBkNDQ0NTRiYWI2M2E2MTYzYjM2MzZmODYxYTM1YjQ3ZWIw
MzQ0OGYuLjdhNTUwMjNmMDVjOGFkNjA5NjFkMDIzYjdjNDA1YmRlNmVkM2FjN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApAQCAtMjQ4LDYgKzI0OCwxMCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNldFVzZXNOZXR3b3JrUHJvY2Vzcyhib29sKTsKIAorI2lmIFBMQVRGT1JN
KE1BQykKKyAgICBzdGF0aWMgYm9vbCBhcHBsaWNhdGlvbklzT2NjbHVkZWQoKSB7IHJldHVybiBz
X2FwcGxpY2F0aW9uSXNPY2NsdWRlZDsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViQ29u
dGV4dChQcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKTsKIApA
QCAtMzAyLDYgKzMwNiwxMyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBjb29raWVTdG9yYWdlRGly
ZWN0b3J5KCkgY29uc3Q7CiAgICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VE
aXJlY3RvcnkoKSBjb25zdDsKIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGF0aWMgdm9pZCBh
cHBsaWNhdGlvbkJlY2FtZVZpc2libGUodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCos
IHVpbnQzMl90KTsKKyAgICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKHVp
bnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCk7CisgICAgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZVByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnQoKTsKKyAgICBzdGF0aWMgdm9p
ZCByZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCk7CisjZW5kaWYKKwogICAg
IFByb2Nlc3NNb2RlbCBtX3Byb2Nlc3NNb2RlbDsKICAgICAKICAgICBWZWN0b3I8UmVmUHRyPFdl
YlByb2Nlc3NQcm94eT4gPiBtX3Byb2Nlc3NlczsKQEAgLTM5Niw2ICs0MDcsMTAgQEAgcHJpdmF0
ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8RGljdGlvbmFyeUNhbGxiYWNrPiA+IG1f
ZGljdGlvbmFyeUNhbGxiYWNrczsKIAogICAgIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCBt
X21lc3NhZ2VSZWNlaXZlck1hcDsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGF0aWMgYm9v
bCBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZDsKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgVT4gaW5saW5lIHZvaWQgV2ViQ29udGV4dDo6c2VuZFRvQWxsUHJvY2Vzc2VzKGNvbnN0IFUm
IG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IGU4YTM5YmQyYmMxYWMzZDg5ZjA2Y2IzZDUyMmQ5Y2ZiOGEyZTA4OTIuLjM5YjY5OWFl
NjIwZGIyZDNmNWE2OGIzY2NmMTcxMzQxNmU4ZTJhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC01MzEsNiArNTMxLDExIEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllciBjb25uZWN0CiAKICAgICAvLyBUZWxsIHRoZSBjb250ZXh0IHRoYXQgd2UgZmluaXNo
ZWQgbGF1bmNoaW5nLgogICAgIG1fY29udGV4dC0+cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyh0
aGlzKTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoV2ViQ29udGV4dDo6YXBwbGljYXRp
b25Jc09jY2x1ZGVkKCkpCisgICAgICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUpLCAwKTsKKyNlbmRpZgogfQog
CiBXZWJGcmFtZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OndlYkZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMu
bW0KaW5kZXggMDBjMDJjZDAyZDFjYzU2ODYzYTE1OThmM2JkOTEwMmUzZDVlNjhkOS4uMTFiNzVj
OWQwNTYwZjg2OGRkNmM1NTJiZWY4ODlmOGFkZTkwMjZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQpAQCAtMjYsOCArMjYsMTIgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29udGV4dC5oIgogCisjaW1wb3J0ICJOZXR3b3Jr
UHJvY2Vzc01hbmFnZXIuaCIKKyNpbXBvcnQgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCisjaW1w
b3J0ICJTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oIgogI2ltcG9ydCAiV2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisj
aW1wb3J0ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ29sb3IuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KQEAgLTUyLDYgKzU2LDggQEAgTlNTdHJpbmcgKldlYkljb25EYXRhYmFzZURp
cmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJJY29uRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWwKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKK2Jvb2wgV2ViQ29udGV4dDo6c19hcHBsaWNhdGlvbklzT2Nj
bHVkZWQgPSBmYWxzZTsKKwogU3RyaW5nIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKQogewogICAgIE5TU3RyaW5nICphcHBOYW1lID0gW1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBidW5kbGVJZGVudGlmaWVyXTsKQEAgLTI1Nyw1ICsyNjMsNzIgQEAgdm9pZCBXZWJDb250ZXh0
OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdAogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVy
Rm9yVHlwZShidWZmZXIsIHBhc3RlYm9hcmRUeXBlKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Cit2b2lkIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSh1aW50MzJfdCwg
dm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCit7CisgICAgaWYgKHNfYXBwbGljYXRp
b25Jc09jY2x1ZGVkKSB7CisgICAgICAgIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkID0gZmFsc2U7
CisKKyAgICAgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250
ZXh0OjphbGxDb250ZXh0cygpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBj
b250ZXh0cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgY29udGV4dHNbaV0t
PnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0QXBwbGljYXRpb25J
c09jY2x1ZGVkKGZhbHNlKSk7CisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisgICAgICAg
IFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQo
ZmFsc2UpOworI2VuZGlmCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyAgICAgICAgTmV0
d29ya1Byb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoZmFs
c2UpOworI2VuZGlmCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKKyAgICAgICAg
U2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNldEFwcGxpY2F0aW9uSXNPY2Ns
dWRlZChmYWxzZSk7CisjZW5kaWYKKyAgICB9Cit9CiAKK3ZvaWQgV2ViQ29udGV4dDo6YXBwbGlj
YXRpb25CZWNhbWVPY2NsdWRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWlu
dDMyX3QpCit7CisgICAgaWYgKCFzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkgeworICAgICAgICBz
X2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9IHRydWU7CisgICAgICAgIGNvbnN0IFZlY3RvcjxXZWJD
b250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMoKTsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsr
aSkKKyAgICAgICAgICAgIGNvbnRleHRzW2ldLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKSk7CisKKyNpZiBFTkFC
TEUoUExVR0lOX1BST0NFU1MpCisgICAgICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQo
KS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSk7CisjZW5kaWYKKyNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQorICAgICAgICBOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNl
dEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKTsKKyNlbmRpZgorI2lmIEVOQUJMRShTSEFSRURf
V09SS0VSX1BST0NFU1MpCisgICAgICAgIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyOjpzaGFy
ZWQoKS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSk7CisjZW5kaWYKKyAgICB9Cit9CisK
K3ZvaWQgV2ViQ29udGV4dDo6aW5pdGlhbGl6ZVByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnQoKQor
eworICAgIHN0YXRpYyBib29sIGRpZEluaXRpYWxpemUgPSBmYWxzZTsKKyAgICBpZiAoZGlkSW5p
dGlhbGl6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZGlkSW5pdGlhbGl6ZSA9IHRydWU7Cisg
ICAgLy8gQSB0ZW1wb3JhcnkgZGVmYXVsdCB1bnRpbCBwcm9jZXNzIHN1cHByZXNzaW9uIGlzIGVu
YWJsZWQgYnkgZGVmYXVsdCwgYXQgd2hpY2ggcG9pbnQgYSBjb250ZXh0IHNldHRpbmcgY2FuIGJl
IGFkZGVkIHdpdGggdGhlCisgICAgLy8gaW50ZXJwcmV0YXRpb24gdGhhdCBhbnkgY29udGV4dCBk
aXNhYmxpbmcgcHJvY2VzcyBzdXBwcmVzc2lvbiBkaXNhYmxlcyBpdCBmb3IgcGx1Z2luL25ldHdv
cmsgYW5kIHNoYXJlZCB3b3JrZXIgcHJvY2Vzc2VzLgorICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNz
aW9uU3VwcG9ydEVuYWJsZWQgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRz
XSBib29sRm9yS2V5OkAiV2ViS2l0UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQiXTsK
KyAgICBpZiAocHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQpCisgICAgICAgIHJlZ2lz
dGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKTsKK30KKwordm9pZCBXZWJDb250ZXh0
OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCkKK3sKKyNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICBpZiAoIVdLUmVnaXN0ZXJPY2Ns
dXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxp
Y2F0aW9uQmVjYW1lVmlzaWJsZSwgYXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKSkgeworICAgICAg
ICBXVEZMb2dBbHdheXMoIlJlZ2lzdGVyYXRpb24gb2YgXCJBcHAgQmVjYW1lIFZpc2libGVcIiBu
b3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmICghV0tSZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoV0tPY2Ns
dXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCwgYXBwbGljYXRp
b25CZWNhbWVPY2NsdWRlZCkpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiUmVnaXN0ZXJhdGlvbiBv
ZiBcIkFwcCBCZWNhbWUgT2NjbHVkZWRcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4i
KTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MDdhOTMzNjIyOTBl
NGQ4YmE2NjQ0ZmZmN2I2OTYzMGQ5ZTM2ODc4Li43YmNhNjYzZWRhODA3N2JmNTA5Yjg4ODNmNTM1
Yjk1ZGZmMzk3NWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC01MzUsNiArNTM1LDExIEBACiAJCTkzRkM2N0JFMTJEM0NDRjIw
MEE2MDYxMCAvKiBEZWNvZGVyQWRhcHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNGQzY3OUUxMkQzQ0M3NDAwQTYwNjEwIC8qIERlY29kZXJBZGFw
dGVyLmggKi87IH07CiAJCTkzRkM2N0JGMTJEM0NDRjIwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZD
Njc5RjEyRDNDQzc0MDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuY3BwICovOyB9OwogCQk5M0ZD
NjdDMDEyRDNDQ0YyMDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkM2N0EwMTJEM0NDNzQwMEE2MDYxMCAv
KiBFbmNvZGVyQWRhcHRlci5oICovOyB9OworCQk5RjRGNTk0MjE2NDhCNDA3MDA0OTNCN0UgLyog
U2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjRGNTk0MTE2NDhCNDA3MDA0OTNCN0UgLyogU2hhcmVk
V29ya2VyUHJvY2Vzc01hbmFnZXJNYWMubW0gKi87IH07CisJCTlGNEY1OTQ0MTY0OEI2N0YwMDQ5
M0I3RSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjRGNTk0MzE2NDhCNjdGMDA0OTNCN0UgLyog
U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWFjLm1tICovOyB9OworCQk5RjRGNTk0NjE2NDhCQThF
MDA0OTNCN0UgLyogTmV0d29ya1Byb2Nlc3NNYW5hZ2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY0RjU5NDUxNjQ4QkE4RTAwNDkzQjdFIC8q
IE5ldHdvcmtQcm9jZXNzTWFuYWdlck1hYy5tbSAqLzsgfTsKKwkJOUY1NEY4OEYxNjQ4OEU4NzAw
N0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nl
c3NNYWMubW0gKi87IH07CisJCTlGNTRGODk1MTY0OEFFMEYwMDdERjgxQSAvKiBQbHVnaW5Qcm9j
ZXNzTWFuYWdlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1h
Yy5tbSAqLzsgfTsKIAkJQjYyRTczMTAxNDMwNDdBNjAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3Vs
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjJF
NzMwRjE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCAqLzsgfTsKIAkJQjYy
RTczMTIxNDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjYyRTczMTExNDMwNDdCMDAwNjlFQzM1
IC8qIFdLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUI2MzQwM0Y5MTQ5MTBENTcwMDEwNzBCNSAvKiBBUElPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjYzNDAzRjgx
NDkxMEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5jcHAgKi87IH07CkBAIC0xNzQ2LDYgKzE3NTEs
MTEgQEAKIAkJOTNGQzY3OUUxMkQzQ0M3NDAwQTYwNjEwIC8qIERlY29kZXJBZGFwdGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlY29kZXJBZGFwdGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRkM2NzlGMTJEM0NDNzQwMEE2MDYxMCAvKiBFbmNvZGVy
QWRhcHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFbmNvZGVy
QWRhcHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRkM2N0EwMTJEM0ND
NzQwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFbmNvZGVyQWRhcHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
RjRGNTk0MTE2NDhCNDA3MDA0OTNCN0UgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXJNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJQ
cm9jZXNzTWFuYWdlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUY0RjU5
NDMxNjQ4QjY3RjAwNDkzQjdFIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUY0RjU5NDUxNjQ4QkE4
RTAwNDkzQjdFIC8qIE5ldHdvcmtQcm9jZXNzTWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzTWFuYWdlck1hYy5tbTsgcGF0
aCA9IG1hYy9OZXR3b3JrUHJvY2Vzc01hbmFnZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlGNTRGODk0MTY0OEFFMEUwMDdERjgx
QSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNzJENUQ3RjEyMzZDQkE4MDBBODhCMTUgLyogV2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMzk2RUE1
NTEyRTBFRDJEMDBGNEZFQjcgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjJFNzMwRjE0
MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdLSGl0VGVzdFJlc3VsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yOTA2LDYgKzI5MTYsNyBAQAogCQkxQUVGQ0MwRDExRDAxRjQxMDA4MjE5
RDMgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQk5RjU0Rjg5NDE2NDhBRTBFMDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0g
Ki8sCiAJCQkJMUFFRkNDQkMxMUQwMkM1RTAwODIxOUQzIC8qIFBsdWdpbkluZm9TdG9yZU1hYy5t
bSAqLywKIAkJCQkxQTJEOTBCQTEyODFDOTMxMDAxRUI5NjIgLyogUGx1Z2luUHJvY2Vzc1Byb3h5
TWFjLm1tICovLAogCQkJKTsKQEAgLTMxMDgsNiArMzExOSw3IEBACiAJCTUxNjMxOTkzMTYyODk4
MEUwMEUyMkYwMCAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTlGNEY1OTQ1MTY0OEJBOEUwMDQ5M0I3RSAvKiBOZXR3b3JrUHJvY2Vzc01hbmFn
ZXJNYWMubW0gKi8sCiAJCQkJNTE2MzE5OTExNjI4OTgwQTAwRTIyRjAwIC8qIE5ldHdvcmtQcm9j
ZXNzUHJveHlNYWMubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9IG1hYzsKQEAgLTMxNzksNiArMzE5
MSwxNSBAQAogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07
CisJCTlGNEY1OTQwMTY0OEI0MDcwMDQ5M0I3RSAvKiBtYWMgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTlGNEY1OTQxMTY0OEI0MDcwMDQ5M0I3RSAvKiBT
aGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlck1hYy5tbSAqLywKKwkJCQk5RjRGNTk0MzE2NDhCNjdG
MDA0OTNCN0UgLyogU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWFjLm1tICovLAorCQkJKTsKKwkJ
CXBhdGggPSBtYWM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlCQzAxN0Qx
MDE2MjYwRkZEMDA3MDU0RjUgLyogRE9NICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKQEAgLTM2MzgsNiArMzY1OSw3IEBACiAJCQkJRTE3OUZEOUUxMzREMzgyNTAw
MTVCODgzIC8qIEFyZ3VtZW50Q29kZXJzTWFjLm1tICovLAogCQkJCUUxQTMxNzMxMTM0Q0VBNkMw
MDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLmggKi8sCiAJCQkJRTFBMzE3MzQxMzRDRUE4MDAw
N0M5QTRGIC8qIEF0dHJpYnV0ZWRTdHJpbmcubW0gKi8sCisJCQkJOUY1NEY4OEUxNjQ4OEU4NzAw
N0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSAqLywKIAkJCQkxQTJBNEFGRTE1ODY5MzkyMDA5
MEM5RTkgLyogQ29sb3JTcGFjZURhdGEuaCAqLywKIAkJCQkxQTJBNEFGRDE1ODY5MzkyMDA5MEM5
RTkgLyogQ29sb3JTcGFjZURhdGEubW0gKi8sCiAJCQkJMUE2RjlGQjYxMUUxNDA4NTAwREIxMzcx
IC8qIENvbW1hbmRMaW5lTWFjLmNwcCAqLywKQEAgLTQyOTgsNiArNDMyMCw3IEBACiAJCUUxRURG
REFBMTYyODg3OEUwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJzICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5RjRGNTk0MDE2NDhCNDA3MDA0OTNCN0UgLyog
bWFjICovLAogCQkJCUUxRURGRTBGMTYyOENGNEUwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9j
ZXNzTWFuYWdlci5oICovLAogCQkJCUUxRURGRTExMTYyOENGQjIwMDM5RUNEQSAvKiBTaGFyZWRX
b3JrZXJQcm9jZXNzTWFuYWdlci5jcHAgKi8sCiAJCQkJRTFFREZEQUIxNjI4ODdCMDAwMzlFQ0RB
IC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiAqLywKQEAgLTU3NTYsNiAr
NTc3OSwxMSBAQAogCQkJCTJEMkFERjEwMTYzNjREODIwMDE5N0U0NyAvKiBQREZQbHVnaW5DaG9p
Y2VBbm5vdGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCMTZBREQxNjQ4NTk4NDAwMjkw
RDYyIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFCMTZBRTExNjQ4NjU2RDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkubW0gaW4gU291cmNlcyAqLywKKwkJCQk5RjU0Rjg4RjE2NDg4RTg3MDA3REY4MUEgLyogQ2hp
bGRQcm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOUY1NEY4OTUxNjQ4QUUwRjAwN0RG
ODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOUY0
RjU5NDIxNjQ4QjQwNzAwNDkzQjdFIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyTWFjLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJOUY0RjU5NDQxNjQ4QjY3RjAwNDkzQjdFIC8qIFNoYXJlZFdv
cmtlclByb2Nlc3NQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTlGNEY1OTQ2MTY0OEJB
OEUwMDQ5M0I3RSAvKiBOZXR3b3JrUHJvY2Vzc01hbmFnZXJNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCAyY2MxZTYyODA0NjMyODEzMTE0MDU4ZmFjYmVhMTUwMDU3MzVjYzI0Li4yYzFiNDMwNTIz
NjRkMzZmYjYyYTZlZDdlOWJjMmFmNGMzZDgwNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC05Nyw0ICs5Nyw4IEBAIG1lc3Nh
Z2VzIC0+IFdlYlByb2Nlc3MgewogICAgIFNlY0l0ZW1SZXNwb25zZSh1aW50NjRfdCByZXF1ZXN0
SUQsIFdlYktpdDo6U2VjSXRlbVJlc3BvbnNlRGF0YSByZXNwb25zZSkgRGlzcGF0Y2hPbkNvbm5l
Y3Rpb25RdWV1ZQogICAgIFNlY0tleWNoYWluSXRlbVJlc3BvbnNlKHVpbnQ2NF90IHJlcXVlc3RJ
RCwgV2ViS2l0OjpTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGEgcmVzcG9uc2UpIERpc3BhdGNo
T25Db25uZWN0aW9uUXVldWUKICNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFNldEFw
cGxpY2F0aW9uSXNPY2NsdWRlZChib29sIGZsYWcpOworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24u
bW0KaW5kZXggMmFmNTk0OGZkOWUxNzdhNDUwZDg2OTYxZGZmNTk2ZTg1NzAxMjY4Yy4uOTc5OGU3
NjdiNjcyZjhlODAzNmQxNWRhMzJiYWE4NDEwYzIwOTEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5tbQpA
QCAtNDYsMTAgKzQ2LDYgQEAgdm9pZCBJbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBTdHJpbmcm
IGNsaWVudElkZW50aWZpZXIsIENvcmVJUEM6OkNvbm5lY3Rpb246OkkKICAgICBXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7
CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLSAgICBbW05T
UHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRpc2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjpAIkRp
c2FibGUgV2ViUHJvY2VzcyBBdXRvIFRlcm1pbmF0aW9uIl07Ci0jZW5kaWYKLQogICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemVTaGltKCk7CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkuaW5pdGlhbGl6ZVNhbmRib3goY2xpZW50SWRlbnRpZmllcik7CiAgICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkuaW5pdGlhbGl6ZShjb25uZWN0aW9uSWRlbnRpZmllciwgUnVuTG9vcDo6bWFpbigp
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172673</attachid>
            <date>2012-11-06 16:18:30 -0800</date>
            <delta_ts>2012-11-06 17:18:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100997-20121106161642.patch</filename>
            <type>text/plain</type>
            <size>48240</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzFkYjVmNzA3ZWMzNWE1
MWYzOTEyZWFjMGIwM2VmN2FiMzVlMDcwZS4uZjdlYmE3MzE4MWM1Njg3NTBlOGM5NTExZjQyMTgw
MGU5YjhjN2RjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTExLTA2ICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhcHBsaWNhdGlv
biBvY2NsdXNpb24gY3JpdGVyaW9uIHRvIGVuYWJsZS9kaXNhYmxlIHByb2Nlc3Mgc3VwcHJlc3Np
b24gb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDA5OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQcm92aWRlIHN1cHBvcnQgZm9yIGVuYWJsaW5nIGFuZCBkaXNhYmxpbmcgcHJvY2VzcyBzdXBw
cmVzc2lvbiB3aGVuIGFwcGxpY2F0aW9uIGlzIGNvbXBsZXRlbHkgb2NjbHVkZWQgb24gTWFjLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46IEFk
ZGVkIG1lc3NhZ2UgdG8gdXBkYXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMuCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NNYWluKTogUmVtb3ZlZCBjYWxsIHRvIHRha2UgcHJv
Y2VzcyBzdXBwcmVzc2lvbiBhc3NlcnRpb24gc2luY2UgQ2hpbGRQcm9jZXNzCisgICAgICAgIHRh
a2VzIG9uZSBvbiBjb25zdHJ1dGlvbi4KKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpblBy
b2Nlc3MubWVzc2FnZXMuaW46IEFkZGVkIG1lc3NhZ2UgdG8gdXBkYXRlIGFwcGxpY2F0aW9uIG9j
Y2x1c2lvbiBzdGF0dXMuCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vz
c01haW5NYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluKTogUmVtb3Zl
ZCBjYWxsIHRvIHRha2UgcHJvY2VzcyBzdXBwcmVzc2lvbiBhc3NlcnRpb24gc2luY2UgQ2hpbGRQ
cm9jZXNzCisgICAgICAgIHRha2VzIG9uZSBvbiBjb25zdHJ1Y3Rpb24uCisgICAgICAgICogU2hh
cmVkL0NoaWxkUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6Q2hp
bGRQcm9jZXNzKTogVGFrZSBwcm9jZXNzIHN1cHByZXNzaW9uIGFzc2VydGlvbiBvbiBjb25zdHJ1
Y3Rpb24uCisgICAgICAgICogU2hhcmVkL0NoaWxkUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0
OjpDaGlsZFByb2Nlc3M6OmFwcGxpY2F0aW9uSXNPY2NsdWRlZCk6CisgICAgICAgICogU2hhcmVk
L21hYy9DaGlsZFByb2Nlc3NNYWMubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpDaGlsZFBy
b2Nlc3M6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCk6IFJlbGVhc2UgcHJvY2VzcyBzdXBwcmVz
c2lvbiBhc3NlcnRpb24gaWYgYXBwbGljYXRpb24KKyAgICAgICAgYmVjb21lcyBvY2NsdWRlZCBv
ciB0YWtlIGEgbmV3IGFzc2VydGlvbiBpZiBhcHBsaWNhdGlvbiBiZWNvbWVzIHZpc2libGUuCisg
ICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6ZGlzYWJsZVByb2Nlc3NTdXBwcmVzc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6ZW5hYmxlUHJvY2Vzc1N1cHByZXNzaW9u
KToKKyAgICAgICAgSGVscGVyIG1ldGhvZHMgdG8gdGFrZSBhbmQgcmVsZWFzZSBwcm9jZXNzIHN1
cHByZXNzaW9uIGFzc2VydGlvbi4KKyAgICAgICAgKiBTaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJl
ZFdvcmtlclByb2Nlc3MubWVzc2FnZXMuaW46IEFkZGVkIG1lc3NhZ2UgdG8gdXBkYXRlIGFwcGxp
Y2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMuCisgICAgICAgICogU2hhcmVkV29ya2VyUHJvY2Vzcy9t
YWMvU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW06CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
ZFdvcmtlclByb2Nlc3NNYWluKTogUmVtb3ZlZCBjYWxsIHRvIHRha2UgcHJvY2VzcyBzdXBwcmVz
c2lvbiBhc3NlcnRpb24gc2luY2UgQ2hpbGRQcm9jZXNzCisgICAgICAgIHRha2VzIG9uZSBvbiBj
b25zdHJ1Y3Rpb24uCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NN
YW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExh
dW5jaGluZyk6IFVwZGF0ZSBhcHBsaWNhdGlvbiBvY2NsdXNpb24gc3RhdHVzIHBvc3QgbGF1bmNo
LgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6aXNWYWxpZCk6CisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvbWFjL05ldHdvcmtQcm9jZXNzTWFuYWdlck1hYy5tbTogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6c2V0QXBwbGljYXRpb25J
c09jY2x1ZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nl
c3NQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0
QXBwbGljYXRpb25Jc09jY2x1ZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGlk
RmluaXNoTGF1bmNoaW5nKTogVXBkYXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0dXMgcG9z
dCBsYXVuY2guCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5
Lmg6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6aXNWYWxpZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNldEFwcGxpY2F0
aW9uSXNPY2NsdWRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblBy
b2Nlc3NQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5Ojpz
ZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1No
YXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOiBVcGRhdGUg
YXBwbGljYXRpb24gb2NjbHVzaW9uIHN0YXR1cyBwb3N0IGxhdW5jaC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5Ojppc1ZhbGlkKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvU2hhcmVkV29ya2Vycy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXJNYWMu
bW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcjo6
c2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU2hhcmVkV29y
a2Vycy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWFjLm1tOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpzZXRBcHBsaWNhdGlvbklzT2NjbHVk
ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6Y3JlYXRlKTogQWRkZWQgY2FsbCB0byBpbml0aWFsaXplIHByb2Nlc3Mg
c3VwcHJlc3Npb24gc3VwcG9ydC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjphcHBsaWNhdGlvbklzT2NjbHVkZWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6IFVwZGF0ZSBhcHBsaWNhdGlvbiBv
Y2NsdXNpb24gc3RhdHVzIHBvc3QgbGF1bmNoLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6YXBwbGljYXRpb25C
ZWNhbWVWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6YXBwbGljYXRpb25C
ZWNhbWVPY2NsdWRlZCk6CisgICAgICAgIE5vdGlmaWNhdGlvbiBoYW5kbGVycyBmb3IgaW5mb3Jt
aW5nIG5vbiBVSSBXZWJLaXQyIHByb2Nlc3NlcyBvZiBjaGFuZ2VzIHRvIGFwcGxpY2F0aW9uIG9j
Y2x1c2lvbiBzdGF0ZS4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cmVnaXN0ZXJPY2Ns
dXNpb25Ob3RpZmljYXRpb25IYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6
OmluaXRpYWxpemVQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0KToKKyAgICAgICAgSGVscGVyIG1l
dGhvZCB0byByZWdpc3RlciBvY2NsdXNpb24gbm90aWZpY2F0aW9uIGhhbmRsZXJzIGlmIHByb2Nl
c3Mgc3VwcHJlc3Npb24gc3VwcG9ydCBpcyBlbmFibGVkLgorICAgICAgICAqIFdlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46IEFkZGVkIG1lc3NhZ2UgdG8gdXBkYXRlIGFwcGxpY2F0aW9uIG9jY2x1c2lv
biBzdGF0dXMuCisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpJbml0aWFsaXplV2ViUHJvY2Vzcyk6IFJlbW92ZWQg
Y2FsbCB0byB0YWtlIHByb2Nlc3Mgc3VwcmVzc2lvbiBhc3NlcnRpb24gc2luY2UgQ2hpbGRQcm9j
ZXNzCisgICAgICAgIHRha2VzIG9uZSBvbiBjb25zdHJ1Y3Rpb24uCisKIDIwMTItMTEtMDUgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBCZWdpbiBzdHVi
YmluZyBvdXQgdGhlIG5ldyByZW1vdGUgbGF5ZXIgdHJlZSBkcmF3aW5nIGFyZWEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggMDI5NTM2YTM0MTIwNWU0MjQ1YzJhODI2NWFkN2MxYThmMjgyOTM1Zi4uZDI0
M2JkNDRmNjAwNjM0YmRkMjI1MGMzNDcxN2IxNzVlYjEzYjM1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4K
QEAgLTI4LDYgKzI4LDEwIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIHsKIAogICAgICMg
Q3JlYXRlcyBhIGNvbm5lY3Rpb24gZm9yIGNvbW11bmljYXRpb24gd2l0aCBhIFdlYlByb2Nlc3MK
ICAgICBDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCisKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgU2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wgZmxhZykKKyNlbmRpZgog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01haW5NYWMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWluTWFjLm1t
CmluZGV4IDEzMzYzOGE2MjM0ZTcxMTEwZDlmZTc0ODY2YTdmNzBhMTA3NzI2MDQuLmM1NmY4MGEy
YTllZjM3YjQ4MjdjMGM1ODlhMDA5ODc1NWJmZmQzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01haW5NYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbQpA
QCAtODQsMTAgKzg0LDYgQEAgaW50IE5ldHdvcmtQcm9jZXNzTWFpbihjb25zdCBDb21tYW5kTGlu
ZSYgY29tbWFuZExpbmUpCiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFJ1
bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDkwCi0gICAgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBk
aXNhYmxlQXV0b21hdGljVGVybWluYXRpb246QCJEaXNhYmxlIE5ldHdvcmtQcm9jZXNzIEF1dG8g
VGVybWluYXRpb24iXTsKLSNlbmRpZgotCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgbmV0d29yayBw
cm9jZXNzIGNvbm5lY3Rpb24uCiAgICAgTmV0d29ya1Byb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxp
emUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihzZXJ2ZXJQb3J0KSwgUnVuTG9vcDo6
bWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Qcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Qcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGU0ZWY0NTA3MjRiYTBhNWVjMDEzOTI2NTcwZWYy
NDU5YzRjN2Q0NjMuLjQxMjI2YjE0ZDUzZTM3MTA2ZjU0MWJkMWRhYTUzZWE4OGNhZGNjMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTM4LDYgKzM4LDEwIEBAIG1lc3NhZ2VzIC0+IFBsdWdpblByb2Nlc3Mg
ewogICAgICMgQXNrcyB0aGUgcGx1Zy1pbiB0byBjbGVhciBkYXRhIGZvciB0aGUgZ2l2ZW4gc2l0
ZXMuIFRoZSBwbHVnLWluIHByb2Nlc3Mgc2VuZHMgYmFjawogICAgICMgYSBEaWRDbGVhclNpdGVE
YXRhIG1lc3NhZ2Ugd2hlbiBkb25lLgogICAgIENsZWFyU2l0ZURhdGEoVmVjdG9yPFdURjo6U3Ry
aW5nPiBzaXRlcywgdWludDY0X3QgZmxhZ3MsIHVpbnQ2NF90IG1heEFnZUluU2Vjb25kcywgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBTZXRBcHBsaWNhdGlv
bklzT2NjbHVkZWQoYm9vbCBmbGFnKTsKKyNlbmRpZgogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWluTWFjLm1t
IGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01haW5NYWMu
bW0KaW5kZXggOTEyYjFjNGZiNWJiZjI0NWMxZWJmYWRiOTQ3MjAwODlhZTJhMWRhMC4uZmZlMWUy
ZGQzNGM3NWUyZThmMGI1YTJhYjgxYmY3ZWJmZmFkOTdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01haW5NYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01haW5NYWMubW0KQEAg
LTExNywxMCArMTE3LDYgQEAgaW50IFBsdWdpblByb2Nlc3NNYWluKGNvbnN0IENvbW1hbmRMaW5l
JiBjb21tYW5kTGluZSkKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgUnVu
TG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwOTAKLSAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRp
c2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjpAIkRpc2FibGUgUGx1Z2luUHJvY2VzcyBBdXRvIFRl
cm1pbmF0aW9uIl07Ci0jZW5kaWYKLQogI2lmIGRlZmluZWQoX19pMzg2X18pCiAgICAgLy8gSW5p
dGlhbGl6ZSB0aGUgc2hpbSBmb3IgMzItYml0IG9ubHkuCiAgICAgUGx1Z2luUHJvY2Vzczo6c2hh
cmVkKCkuaW5pdGlhbGl6ZVNoaW0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9DaGlsZFByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5j
cHAKaW5kZXggYjY1ZWViZTJjZTQyNTU3NTRhMzQ3MTc1Zjg2NTlhY2I4M2Y1MzExZS4uMzQ0ZDU0
YzkxNDc2YjY0OWFlYzU3ZWM2ZDFmMTNlYjcyMzhjMDk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0NoaWxkUHJvY2Vzcy5jcHAKQEAgLTYwLDkgKzYwLDE1IEBAIENoaWxkUHJvY2Vzczo6Q2hpbGRQ
cm9jZXNzKCkKICAgICA6IG1fdGVybWluYXRpb25UaW1lb3V0KDApCiAgICAgLCBtX3Rlcm1pbmF0
aW9uQ291bnRlcigwKQogICAgICwgbV90ZXJtaW5hdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwg
dGhpcywgJkNoaWxkUHJvY2Vzczo6dGVybWluYXRpb25UaW1lckZpcmVkKQorI2lmIFBMQVRGT1JN
KE1BQykKKyAgICAsIG1fYXBwbGljYXRpb25Jc09jY2x1ZGVkKGZhbHNlKQorI2VuZGlmCiB7CiAg
ICAgLy8gRklYTUU6IFRoZSB0ZXJtaW5hdGlvbiB0aW1lciBzaG91bGQgbm90IGJlIHNjaGVkdWxl
ZCBvbiB0aGUgbWFpbiBydW4gbG9vcC4KICAgICAvLyBJdCB3b24ndCB3b3JrIHdpdGggdGhlIHRo
cmVhZGVkIG1vZGUsIGJ1dCBpdCdzIG5vdCByZWFsbHkgdXNlZnVsIGFueXdheSBhcyBpcy4KKyNp
ZiBQTEFURk9STShNQUMpCisgICAgZGlzYWJsZVByb2Nlc3NTdXBwcmVzc2lvbihwcm9jZXNzU3Vw
cHJlc3Npb25WaXNpYmxlQXBwbGljYXRpb25SZWFzb24pOworI2VuZGlmCiB9CiAKIENoaWxkUHJv
Y2Vzczo6fkNoaWxkUHJvY2VzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q2hpbGRQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgKaW5k
ZXggOWVjMWE1MGQ5OTJmODAxY2U2NzQ0YzBhODQ1MjhmYjJmMWRiNzliNC4uNDQyOGE0MGFiNTk1
YjYxODQ1MWNhYTM3MjNjMWUzMTFmMjQ0MzRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0NoaWxkUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFBy
b2Nlc3MuaApAQCAtMjksNiArMjksMTAgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CiAKKyNpZiBQTEFURk9STShNQUMpCitPQkpDX0NMQVNT
IE5TU3RyaW5nOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBDaGlsZFBy
b2Nlc3MgOiBwcm90ZWN0ZWQgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKQEAgLTU3LDYg
KzYxLDExIEBAIHB1YmxpYzoKICAgICAgICAgQ2hpbGRQcm9jZXNzJiBtX2NoaWxkUHJvY2VzczsK
ICAgICB9OwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGJvb2wgYXBwbGljYXRpb25Jc09jY2x1
ZGVkKCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbklzT2NjbHVkZWQ7IH0KKyAgICB2b2lk
IHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29sKTsKKyNlbmRpZgorCiAgICAgc3RhdGljIHZv
aWQgZGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoV29ya1F1ZXVlJiwgQ29yZUlQQzo6Q29u
bmVjdGlvbiopOwogCiBwcm90ZWN0ZWQ6CkBAIC03MSw2ICs4MCwxMyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRUZXJtaW5hdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRl
cm1pbmF0ZSgpOwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQgZGlzYWJsZVByb2Nlc3NT
dXBwcmVzc2lvbihOU1N0cmluZyAqcmVhc29uKTsKKyAgICB2b2lkIGVuYWJsZVByb2Nlc3NTdXBw
cmVzc2lvbihOU1N0cmluZyAqcmVhc29uKTsKKworICAgIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0
IHByb2Nlc3NTdXBwcmVzc2lvblZpc2libGVBcHBsaWNhdGlvblJlYXNvbjsKKyNlbmRpZgorCiAg
ICAgLy8gVGhlIHRpbWVvdXQsIGluIHNlY29uZHMsIGJlZm9yZSB0aGlzIHByb2Nlc3Mgd2lsbCBi
ZSB0ZXJtaW5hdGVkIGlmIHRlcm1pbmF0aW9uCiAgICAgLy8gaGFzIGJlZW4gZW5hYmxlZC4gSWYg
dGhlIHRpbWVvdXQgaXMgMCBzZWNvbmRzLCB0aGUgcHJvY2VzcyB3aWxsIGJlIHRlcm1pbmF0ZWQg
aW1tZWRpYXRlbHkuCiAgICAgZG91YmxlIG1fdGVybWluYXRpb25UaW1lb3V0OwpAQCAtODAsNiAr
OTYsMTAgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3Rlcm1pbmF0aW9uQ291bnRlcjsKIAog
ICAgIFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyPENoaWxkUHJvY2Vzcz4gbV90ZXJtaW5hdGlvblRp
bWVyOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGJvb2wgbV9hcHBsaWNhdGlvbklzT2NjbHVk
ZWQ7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODAxZjVkODliNDUy
ZTMxNjY2MGY0N2I5MjhiY2RhYjU1NmQ3ODJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KQEAgLTAsMCArMSw2NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQ2hpbGRQcm9jZXNzLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitOU1N0cmluZyAqIGNvbnN0IENoaWxkUHJvY2Vzczo6cHJv
Y2Vzc1N1cHByZXNzaW9uVmlzaWJsZUFwcGxpY2F0aW9uUmVhc29uID0gQCJBcHBsaWNhdGlvbiBp
cyBWaXNpYmxlIjsKKwordm9pZCBDaGlsZFByb2Nlc3M6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRl
ZChib29sIGFwcGxpY2F0aW9uSXNPY2NsdWRlZCkKK3sKKyAgICBpZiAobV9hcHBsaWNhdGlvbklz
T2NjbHVkZWQgPT0gYXBwbGljYXRpb25Jc09jY2x1ZGVkKQorICAgICAgICByZXR1cm47CisKKyNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICBtX2FwcGxpY2F0
aW9uSXNPY2NsdWRlZCA9IGFwcGxpY2F0aW9uSXNPY2NsdWRlZDsKKyAgICBpZiAobV9hcHBsaWNh
dGlvbklzT2NjbHVkZWQpCisgICAgICAgIGVuYWJsZVByb2Nlc3NTdXBwcmVzc2lvbihwcm9jZXNz
U3VwcHJlc3Npb25WaXNpYmxlQXBwbGljYXRpb25SZWFzb24pOworICAgIGVsc2UKKyAgICAgICAg
ZGlzYWJsZVByb2Nlc3NTdXBwcmVzc2lvbihwcm9jZXNzU3VwcHJlc3Npb25WaXNpYmxlQXBwbGlj
YXRpb25SZWFzb24pOworI2VuZGlmCit9CisKK3ZvaWQgQ2hpbGRQcm9jZXNzOjpkaXNhYmxlUHJv
Y2Vzc1N1cHByZXNzaW9uKE5TU3RyaW5nICpyZWFzb24pCit7CisjaWYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisgICAgLy8gVGhlIGZvbGxvd2luZyBhc3N1bWVzIHRo
YXQgYSBwcm9jZXNzIGVuYWJsaW5nIEF1dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9ydCBhbHNvCisg
ICAgLy8gdGFrZXMgYSBBdXRvbWF0aWNUZXJtaW5hdGlvbiBhc3NlcnRpb24gZm9yIHRoZSBsaWZl
dGltZSBvZiB0aGUgcHJvY2Vzcy4KKyAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRp
c2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjpyZWFzb25dOworI2VuZGlmCit9CisKK3ZvaWQgQ2hp
bGRQcm9jZXNzOjplbmFibGVQcm9jZXNzU3VwcHJlc3Npb24oTlNTdHJpbmcgKnJlYXNvbikKK3sK
KyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICAvLyBUaGUg
Zm9sbG93aW5nIGFzc3VtZXMgdGhhdCBhIHByb2Nlc3MgZW5hYmxpbmcgQXV0b21hdGljVGVybWlu
YXRpb25TdXBwb3J0IGFsc28KKyAgICAvLyB0YWtlcyBhIEF1dG9tYXRpY1Rlcm1pbmF0aW9uIGFz
c2VydGlvbiBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBwcm9jZXNzLgorICAgIFtbTlNQcm9jZXNz
SW5mbyBwcm9jZXNzSW5mb10gZW5hYmxlQXV0b21hdGljVGVybWluYXRpb246cmVhc29uXTsKKyNl
bmRpZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9j
ZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggM2Nk
NzUzMzdiN2ZlZTg0NjliMDk0ZTgxNDhlYTU1YzM2OTI0OTg5YS4uNzg5YmJiMzE4MTRjNGUxNGM4
M2FlNmNhMjBmMTA1ZjY0NmQ0YmNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
V29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5tZXNzYWdl
cy5pbgpAQCAtMzAsNiArMzAsMTAgQEAgbWVzc2FnZXMgLT4gU2hhcmVkV29ya2VyUHJvY2VzcyB7
CiAgICAgIyBUaGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzIHNlbmRzIGJhY2sgYSBEaWRDcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbiBtZXNzYWdlIHdpdGgKICAgICAjIGEgY29ubmVjdGlvbiBpZGVu
dGlmaWVyLgogICAgIENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCkKKworI2lmIFBMQVRGT1JN
KE1BQykKKyAgICBTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYm9vbCBmbGFnKQorI2VuZGlmCiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vz
c01haW5NYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFy
ZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbQppbmRleCAzMGY4YTc0OTY0ZDZkMWNjMjg3OWYzMTk3
YzU0NWJhNmMwNTk1YWRiLi5kOTRkNDhiNDVhNWQwZDA3MDg5OTkwYjgzNWEwZjU2Nzk4YzZlZmZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFy
ZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3Jr
ZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbQpAQCAtOTYsMTAgKzk2
LDYgQEAgaW50IFNoYXJlZFdvcmtlclByb2Nlc3NNYWluKGNvbnN0IENvbW1hbmRMaW5lJiBjb21t
YW5kTGluZSkKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6
aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwOTAKLSAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRpc2FibGVB
dXRvbWF0aWNUZXJtaW5hdGlvbjpAIkRpc2FibGUgU2hhcmVkV29ya2VyUHJvY2VzcyBBdXRvIFRl
cm1pbmF0aW9uIl07Ci0jZW5kaWYKLQogICAgIC8vIEluaXRpYWxpemUgdGhlIHNoYXJlZCB3b3Jr
ZXIgcHJvY2VzcyBjb25uZWN0aW9uLgogICAgIFNoYXJlZFdvcmtlclByb2Nlc3M6OnNoYXJlZCgp
LmluaXRpYWxpemUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihzZXJ2ZXJQb3J0KSwg
UnVuTG9vcDo6bWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc01hbmFnZXIuaAppbmRleCBiOGI0NTM0Y2VmY2YzYmEx
NDYyYTdiMGMzNjVlOTBhMWQ2MTdlNmRmLi45NTdlNDVmM2U2NWU4YTM5ZGU4YzA2OWE5ZmIwM2Mw
ZTJmOTdlMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc01hbmFnZXIuaApAQCAtNTAsNiArNTAsMTAgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgcmVtb3ZlTmV0d29ya1Byb2Nlc3NQcm94eShOZXR3b3JrUHJvY2Vzc1By
b3h5Kik7CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzT2Nj
bHVkZWQoYm9vbCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2Vzc01hbmFn
ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyODkzNDVhNDY1N2NhMWFhMTljYjAzMzBiY2Ri
ZjkyM2MzZGY5NWRmLi4xZjljZTg5ZWQyNDFiZjExNDEwY2I0ODM4Y2Y2YTllZGRmY2U4YTk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcApAQCAtMTYyLDYgKzE2MiwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBDb3JlSVBDOjpDb25u
ZWN0aQogICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpLCAwKTsKICAgICAKICAgICBt
X251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMgPSAwOworCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIGlmIChXZWJDb250ZXh0OjphcHBsaWNhdGlvbklzT2NjbHVkZWQoKSkKKyAgICAgICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0QXBwbGljYXRpb25J
c09jY2x1ZGVkKHRydWUpLCAwKTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAppbmRleCA0N2NjYmFjYmY3MzM0YTY3ZDVhNjJiMmU3MDM2NTE3ZWYyNzA3NzA3
Li4xM2ZkZmQ4OWEwY2RkZTFjNTlmMzQ5OTJlMzhiNTM3NDAzYzYwZWI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CkBAIC00NSw2ICs0NSwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7CiAKKyAgICBib29sIGlzVmFsaWQo
KSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KKworI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICB2b2lkIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29sKTsKKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIE5ldHdvcmtQcm9jZXNzUHJveHkoTmV0d29ya1Byb2Nlc3NNYW5hZ2VyKik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL21hYy9OZXR3b3JrUHJv
Y2Vzc01hbmFnZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9tYWMv
TmV0d29ya1Byb2Nlc3NNYW5hZ2VyTWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhZjk4ODhhNTBmZjk0NTYx
YzAwODNiMmZjZTcxMGZiZGU0ZDA1NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyTWFjLm1tCkBAIC0w
LDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk5l
dHdvcmtQcm9jZXNzTWFuYWdlci5oIgorCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKwor
I2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
dm9pZCBOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29s
IGFwcGxpY2F0aW9uSXNPY2NsdWRlZCkKK3sKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKKyAg
ICAgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChh
cHBsaWNhdGlvbklzT2NjbHVkZWQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL21hYy9OZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1t
CmluZGV4IDQ0MGNjNDI5ZjA4YzM0YjZkYTk2ZmE4MTEyZDNkZjUxOWQzOWRkYjcuLjAyNTM0ZTli
OTFlNjM2YzdhZDUzMzI0YzNmNTFjYWNmOTIyNzJhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL21hYy9OZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL21hYy9OZXR3b3JrUHJvY2Vzc1Byb3h5
TWFjLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc1Byb3h5Lmgi
CiAKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW1wb3J0
ICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQogCkBAIC0zOSw2ICs0MCwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnBsYXRmb3Jt
SW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpbwogICAgIHBhcmFt
ZXRlcnMucGFyZW50UHJvY2Vzc05hbWUgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHBy
b2Nlc3NOYW1lXTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRBcHBsaWNhdGlv
bklzT2NjbHVkZWQoYm9vbCBhcHBsaWNhdGlvbklzT2NjbHVkZWQpCit7CisgICAgaWYgKCFpc1Zh
bGlkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYXBwbGljYXRp
b25Jc09jY2x1ZGVkKSwgMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oCmluZGV4IDM3ODI0YzRhYTNi
NGRhYjFjYjIxMzg3MDY2OWQyNTljMDgwZDg2ZTAuLjVlNTE5NDI3YmEzZjFkZGZiMzdiZDhiZTgz
ZjMyOTc4YzQ3YjhiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaApAQCAtNTYsNiArNTYsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgZ2V0U2l0ZXNXaXRoRGF0YShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiwgV2Vi
UGx1Z2luU2l0ZURhdGFNYW5hZ2VyKiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBj
bGVhclNpdGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBXZWJQbHVnaW5TaXRlRGF0YU1h
bmFnZXIqLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGZsYWdzLCB1aW50
NjRfdCBtYXhBZ2VJblNlY29uZHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIHZvaWQgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wpOworI2VuZGlm
CisKIHByaXZhdGU6CiAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXIoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAK
aW5kZXggODExOTdjZTM2YzRiM2JkMTUyOTcxM2E5OTIwZTdkNzRjYzI1NjI3Yi4uMGMyZTg2ODll
NjQ4ODc2ODBlNDJhMTM0OTNjMGYzZTUwZTBiYjEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCkBAIC0yMjgs
NiArMjI4LDExIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmco
UHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQQzo6Q29ubmVjdGlvCiAgICAgICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzczo6Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24oKSwgMCk7CiAgICAgCiAgICAgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzID0gMDsK
KworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoV2ViQ29udGV4dDo6YXBwbGljYXRpb25Jc09j
Y2x1ZGVkKCkpCisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJv
Y2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUpLCAwKTsKKyNlbmRpZgogfQogCiB2
b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29u
c3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9y
dHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKaW5kZXggZjc3NTAz
ZDhkNDJkOTBjYmViOGNkYTY0Yzk3OWRlZGRlZTJmMjBhYS4uMTM1N2U2YzdmNWI0OTBmN2I0MjQ4
ZWM3NmY1YTUwNGUyYmYwMGVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKQEAgLTgwLDcgKzgwLDExIEBAIHB1Ymxp
YzoKICAgICAvLyBUZXJtaW5hdGVzIHRoZSBwbHVnLWluIHByb2Nlc3MuCiAgICAgdm9pZCB0ZXJt
aW5hdGUoKTsKIAorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlv
bjsgfQorCiAjaWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQgc2V0QXBwbGljYXRpb25Jc09jY2x1
ZGVkKGJvb2wpOworCiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBwbHVnLWluIG5lZWRzIHRo
ZSBoZWFwIHRvIGJlIG1hcmtlZCBleGVjdXRhYmxlLgogICAgIHN0YXRpYyBib29sIHBsdWdpbk5l
ZWRzRXhlY3V0YWJsZUhlYXAoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc01hbmFn
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJv
Y2Vzc01hbmFnZXJNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE5NzRkYWQ3YTgyOWQ4MTM4OTUzYzY0NzQ2
YjIzOGQyOGI4ZmFhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbQpAQCAtMCwwICsxLDQ0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQbHVnaW5Qcm9jZXNz
TWFuYWdlci5oIgorCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorCisjaW1wb3J0ICJQbHVn
aW5Qcm9jZXNzUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUGx1Z2luUHJv
Y2Vzc01hbmFnZXI6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29sIGFwcGxpY2F0aW9uSXNP
Y2NsdWRlZCkKK3sKKyAgICBzaXplX3QgcHJvY2Vzc0NvdW50ID0gbV9wbHVnaW5Qcm9jZXNzZXMu
c2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvY2Vzc0NvdW50OyArK2kpCisg
ICAgICAgIG1fcGx1Z2luUHJvY2Vzc2VzW2ldLT5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYXBw
bGljYXRpb25Jc09jY2x1ZGVkKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQppbmRl
eCAyMDdlY2EyYzk3ZDNmMjRiZDViZjM0MzY5OWJjZDUzOGFiNDVmNDA4Li5lOTJlZjllNzZkNGQx
ZDU0ODQ2ZDUyZjI4OTQxYzJmZDk4YTMyZThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0K
QEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiRW52aXJvbm1lbnRWYXJpYWJsZXMuaCIKICNp
bXBvcnQgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgIlBsdWdp
blByb2Nlc3NNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCiAj
aW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHNwYXduLmg+CkBAIC0zMTUs
NiArMzE2LDEzIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjphcHBsaWNhdGlvbkRpZEJlY29t
ZUFjdGl2ZSgpCiAgICAgbWFrZVBsdWdpblByb2Nlc3NUaGVGcm9udFByb2Nlc3MoKTsKIH0KIAor
dm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29sIGFw
cGxpY2F0aW9uSXNPY2NsdWRlZCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzOjpT
ZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYXBwbGljYXRpb25Jc09jY2x1ZGVkKSwgMCk7Cit9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFn
ZXIuaAppbmRleCBiYTA2YzdjYmI4MDk4MjQzNDRjZTc5Y2M0OWFiNDFiNzFmZDNjODQ4Li5jMjU1
NWVhNGUyYTE3NGY1NjNhMDIwNjMxY2NhOWUzNjc2ZjE0ZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdv
cmtlclByb2Nlc3NNYW5hZ2VyLmgKQEAgLTUzLDYgKzUzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IGdldFNoYXJlZFdvcmtlclByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0
U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOwogICAgIHZvaWQg
cmVtb3ZlU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSop
OwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVk
KGJvb2wpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFn
ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtl
cnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5jcHAKaW5kZXggMDMwZTNm
ZmM4OTE1MWYxNDBhOTRkODcwZjMzNjUyMmQ5ZmUxMWU5My4uYjgwOGVmYmFjZGZhYjg4ODZhZmM4
YTE1N2Y1MGNlODhlODkxYTA0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHku
Y3BwCkBAIC0xNjQsNiArMTY0LDExIEBAIHZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5Ojpk
aWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQQzo6Q29uCiAgICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2hhcmVkV29ya2VyUHJvY2Vzczo6Q3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgMCk7CiAgICAgCiAgICAgbV9udW1QZW5kaW5nQ29ubmVj
dGlvblJlcXVlc3RzID0gMDsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoV2ViQ29udGV4
dDo6YXBwbGljYXRpb25Jc09jY2x1ZGVkKCkpCisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6U2hhcmVkV29ya2VyUHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRy
dWUpLCAwKTsKKyNlbmRpZgogfQogCiB2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6ZGlk
Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29u
bmVjdGlvbklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
U2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5oCmluZGV4
IDlmMGM1ZDJhY2ViMzllMmM2ODY3ODhkNzI0Mjg0ZGE1ZDlhNTg5NTUuLjZlOWYyMGE4NjRhNTJj
NTU1Y2JiMDk5NDY5MmNjMjQ0MGExZDZjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eS5oCkBAIC01Niw2ICs1NiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gVGVybWluYXRlcyB0aGUg
c2hhcmVkIHdvcmtlciBwcm9jZXNzLgogICAgIHZvaWQgdGVybWluYXRlKCk7CiAKKyAgICBib29s
IGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KKworI2lmIFBMQVRGT1JN
KE1BQykKKyAgICB2b2lkIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29sKTsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eShTaGFyZWRXb3JrZXJQcm9j
ZXNzTWFuYWdlciosIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9tYWMvU2hh
cmVkV29ya2VyUHJvY2Vzc01hbmFnZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
U2hhcmVkV29ya2Vycy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXJNYWMubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTYzOTA3Y2U2ZDVlMjljODhlOWQxYmM0ZjI0Y2MxM2Y1NGM5Yzc1ZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL21hYy9TaGFy
ZWRXb3JrZXJQcm9jZXNzTWFuYWdlck1hYy5tbQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdl
ci5oIgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKKworI2ltcG9ydCAiU2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFNo
YXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyOjpzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYm9vbCBh
cHBsaWNhdGlvbklzT2NjbHVkZWQpCit7CisgICAgc2l6ZV90IHByb2Nlc3NDb3VudCA9IG1fc2hh
cmVkV29ya2VyUHJvY2Vzc2VzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBy
b2Nlc3NDb3VudDsgKytpKQorICAgICAgICBtX3NoYXJlZFdvcmtlclByb2Nlc3Nlc1tpXS0+c2V0
QXBwbGljYXRpb25Jc09jY2x1ZGVkKGFwcGxpY2F0aW9uSXNPY2NsdWRlZCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VT
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL21h
Yy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvU2hhcmVkV29ya2Vycy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWFjLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjViM2RkNDYzOWQ0MTIyNmQ5ZjdmMDFkOWZkYWY4N2QwZDAyZTBmNTUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9tYWMvU2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5TWFjLm1tCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5o
IgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKKworI2ltcG9ydCAiU2hhcmVk
V29ya2VyUHJvY2Vzc01lc3NhZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eTo6c2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wgYXBw
bGljYXRpb25Jc09jY2x1ZGVkKQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNoYXJlZFdvcmtlclByb2Nl
c3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChhcHBsaWNhdGlvbklzT2NjbHVkZWQpLCAwKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dP
UktFUl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4
IGZlNjlmMmI3ZTAzYmQ5YjE3ZDUyNjk2M2Q4M2MwNWJjNTdjNGYwMTEuLjhkZGM5M2Q4MzMwMGQy
NGM3NWQ0MDQ0YjkwZDVkODM4MTBkMzdkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5jcHAKQEAgLTEwMCw2ICsxMDAsOSBAQCBQYXNzUmVmUHRyPFdlYkNvbnRleHQ+IFdl
YkNvbnRleHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCkKICAgICBK
U0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFk
KCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisjaWYgUExBVEZPUk0o
TUFDKQorICAgIFdlYkNvbnRleHQ6OmluaXRpYWxpemVQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0
KCk7CisjZW5kaWYKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbnRleHQoUHJvY2Vzc01v
ZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcywgaW5qZWN0ZWRCdW5kbGVQYXRoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4IDBkNDQ0NTRiYWI2M2E2MTYzYjM2
MzZmODYxYTM1YjQ3ZWIwMzQ0OGYuLjdhNTUwMjNmMDVjOGFkNjA5NjFkMDIzYjdjNDA1YmRlNmVk
M2FjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApAQCAtMjQ4LDYgKzI0
OCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFVzZXNOZXR3b3JrUHJvY2Vzcyhib29sKTsK
IAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGF0aWMgYm9vbCBhcHBsaWNhdGlvbklzT2NjbHVk
ZWQoKSB7IHJldHVybiBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZDsgfQorI2VuZGlmCisKIHByaXZh
dGU6CiAgICAgV2ViQ29udGV4dChQcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRC
dW5kbGVQYXRoKTsKIApAQCAtMzAyLDYgKzMwNiwxMyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBj
b29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAgICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVs
dENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAorI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbkJlY2FtZVZpc2libGUodWludDMyX3QsIHZvaWQqLCB1
aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KTsKKyAgICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbkJl
Y2FtZU9jY2x1ZGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCk7
CisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnQoKTsK
KyAgICBzdGF0aWMgdm9pZCByZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCk7
CisjZW5kaWYKKwogICAgIFByb2Nlc3NNb2RlbCBtX3Byb2Nlc3NNb2RlbDsKICAgICAKICAgICBW
ZWN0b3I8UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gPiBtX3Byb2Nlc3NlczsKQEAgLTM5Niw2ICs0
MDcsMTAgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8RGljdGlvbmFy
eUNhbGxiYWNrPiA+IG1fZGljdGlvbmFyeUNhbGxiYWNrczsKIAogICAgIENvcmVJUEM6Ok1lc3Nh
Z2VSZWNlaXZlck1hcCBtX21lc3NhZ2VSZWNlaXZlck1hcDsKKworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBzdGF0aWMgYm9vbCBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZDsKKyNlbmRpZgogfTsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5lIHZvaWQgV2ViQ29udGV4dDo6c2VuZFRvQWxsUHJv
Y2Vzc2VzKGNvbnN0IFUmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IGU4YTM5YmQyYmMxYWMzZDg5ZjA2Y2IzZDUyMmQ5Y2ZiOGEy
ZTA4OTIuLjM5YjY5OWFlNjIwZGIyZDNmNWE2OGIzY2NmMTcxMzQxNmU4ZTJhNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC01MzEsNiArNTMx
LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoQ29yZUlQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0CiAKICAgICAvLyBUZWxsIHRoZSBjb250ZXh0
IHRoYXQgd2UgZmluaXNoZWQgbGF1bmNoaW5nLgogICAgIG1fY29udGV4dC0+cHJvY2Vzc0RpZEZp
bmlzaExhdW5jaGluZyh0aGlzKTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoV2ViQ29u
dGV4dDo6YXBwbGljYXRpb25Jc09jY2x1ZGVkKCkpCisgICAgICAgIGNvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUpLCAw
KTsKKyNlbmRpZgogfQogCiBXZWJGcmFtZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OndlYkZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dlYkNvbnRleHRNYWMubW0KaW5kZXggMDBjMDJjZDAyZDFjYzU2ODYzYTE1OThmM2JkOTEwMmUz
ZDVlNjhkOS4uMTFiNzVjOWQwNTYwZjg2OGRkNmM1NTJiZWY4ODlmOGFkZTkwMjZkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQpAQCAtMjYsOCAr
MjYsMTIgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29udGV4dC5oIgogCisj
aW1wb3J0ICJOZXR3b3JrUHJvY2Vzc01hbmFnZXIuaCIKKyNpbXBvcnQgIlBsdWdpblByb2Nlc3NN
YW5hZ2VyLmgiCisjaW1wb3J0ICJTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oIgogI2ltcG9y
dCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQgPFdl
YkNvcmUvQ29sb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTUyLDYgKzU2LDggQEAgTlNTdHJpbmcgKldl
Ykljb25EYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJJY29uRGF0YWJhc2VEaXJl
Y3RvcnlEZWZhdWwKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2Jvb2wgV2ViQ29udGV4dDo6c19h
cHBsaWNhdGlvbklzT2NjbHVkZWQgPSBmYWxzZTsKKwogU3RyaW5nIFdlYkNvbnRleHQ6OmFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogewogICAgIE5TU3RyaW5nICphcHBOYW1lID0gW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXTsKQEAgLTI1Nyw1ICsyNjMsNzIgQEAg
dm9pZCBXZWJDb250ZXh0OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdAogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBhc3RlYm9hcmRUeXBlKTsKIH0KIAotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Cit2b2lkIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQmVjYW1lVmlz
aWJsZSh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCit7CisgICAg
aWYgKHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKSB7CisgICAgICAgIHNfYXBwbGljYXRpb25Jc09j
Y2x1ZGVkID0gZmFsc2U7CisKKyAgICAgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29u
dGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAg
ICAgY29udGV4dHNbaV0tPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGZhbHNlKSk7CisKKyNpZiBFTkFCTEUoUExVR0lOX1BS
T0NFU1MpCisgICAgICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNh
dGlvbklzT2NjbHVkZWQoZmFsc2UpOworI2VuZGlmCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKKyAgICAgICAgTmV0d29ya1Byb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlv
bklzT2NjbHVkZWQoZmFsc2UpOworI2VuZGlmCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJP
Q0VTUykKKyAgICAgICAgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNldEFw
cGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSk7CisjZW5kaWYKKyAgICB9Cit9CiAKK3ZvaWQgV2Vi
Q29udGV4dDo6YXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQz
Ml90LCB2b2lkKiwgdWludDMyX3QpCit7CisgICAgaWYgKCFzX2FwcGxpY2F0aW9uSXNPY2NsdWRl
ZCkgeworICAgICAgICBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9IHRydWU7CisgICAgICAgIGNv
bnN0IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4
dHMoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgp
OyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgIGNvbnRleHRzW2ldLT5zZW5kVG9BbGxQcm9j
ZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVl
KSk7CisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisgICAgICAgIFBsdWdpblByb2Nlc3NN
YW5hZ2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSk7CisjZW5kaWYK
KyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorICAgICAgICBOZXR3b3JrUHJvY2Vzc01hbmFn
ZXI6OnNoYXJlZCgpLnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKTsKKyNlbmRpZgorI2lm
IEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCisgICAgICAgIFNoYXJlZFdvcmtlclByb2Nl
c3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSk7CisjZW5k
aWYKKyAgICB9Cit9CisKK3ZvaWQgV2ViQ29udGV4dDo6aW5pdGlhbGl6ZVByb2Nlc3NTdXBwcmVz
c2lvblN1cHBvcnQoKQoreworICAgIHN0YXRpYyBib29sIGRpZEluaXRpYWxpemUgPSBmYWxzZTsK
KyAgICBpZiAoZGlkSW5pdGlhbGl6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZGlkSW5pdGlh
bGl6ZSA9IHRydWU7CisgICAgLy8gQSB0ZW1wb3JhcnkgZGVmYXVsdCB1bnRpbCBwcm9jZXNzIHN1
cHByZXNzaW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYXQgd2hpY2ggcG9pbnQgYSBjb250ZXh0
IHNldHRpbmcgY2FuIGJlIGFkZGVkIHdpdGggdGhlCisgICAgLy8gaW50ZXJwcmV0YXRpb24gdGhh
dCBhbnkgY29udGV4dCBkaXNhYmxpbmcgcHJvY2VzcyBzdXBwcmVzc2lvbiBkaXNhYmxlcyBpdCBm
b3IgcGx1Z2luL25ldHdvcmsgYW5kIHNoYXJlZCB3b3JrZXIgcHJvY2Vzc2VzLgorICAgIGJvb2wg
cHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAiV2ViS2l0UHJvY2Vzc1N1cHByZXNzaW9uU3Vw
cG9ydEVuYWJsZWQiXTsKKyAgICBpZiAocHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQp
CisgICAgICAgIHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKTsKK30KKwor
dm9pZCBXZWJDb250ZXh0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCkK
K3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICBpZiAo
IVdLUmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKFdLT2NjbHVzaW9uTm90aWZp
Y2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSwgYXBwbGljYXRpb25CZWNhbWVWaXNp
YmxlKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIlJlZ2lzdGVyYXRpb24gb2YgXCJBcHAgQmVj
YW1lIFZpc2libGVcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4iKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmICghV0tSZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlv
bkhhbmRsZXIoV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25CZWNhbWVPY2Ns
dWRlZCwgYXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCkpCisgICAgICAgIFdURkxvZ0Fsd2F5cygi
UmVnaXN0ZXJhdGlvbiBvZiBcIkFwcCBCZWNhbWUgT2NjbHVkZWRcIiBub3RpZmljYXRpb24gaGFu
ZGxlciBmYWlsZWQuXG4iKTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA5MDdhOTMzNjIyOTBlNGQ4YmE2NjQ0ZmZmN2I2OTYzMGQ5ZTM2ODc4Li43YmNhNjYzZWRhODA3
N2JmNTA5Yjg4ODNmNTM1Yjk1ZGZmMzk3NWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MzUsNiArNTM1LDExIEBACiAJCTkz
RkM2N0JFMTJEM0NDRjIwMEE2MDYxMCAvKiBEZWNvZGVyQWRhcHRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGQzY3OUUxMkQzQ0M3NDAwQTYwNjEw
IC8qIERlY29kZXJBZGFwdGVyLmggKi87IH07CiAJCTkzRkM2N0JGMTJEM0NDRjIwMEE2MDYxMCAv
KiBFbmNvZGVyQWRhcHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0ZDNjc5RjEyRDNDQzc0MDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuY3Bw
ICovOyB9OwogCQk5M0ZDNjdDMDEyRDNDQ0YyMDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkM2N0EwMTJE
M0NDNzQwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5oICovOyB9OworCQk5RjRGNTk0MjE2NDhC
NDA3MDA0OTNCN0UgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXJNYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjRGNTk0MTE2NDhCNDA3MDA0
OTNCN0UgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXJNYWMubW0gKi87IH07CisJCTlGNEY1
OTQ0MTY0OEI2N0YwMDQ5M0I3RSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHlNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjRGNTk0MzE2NDhC
NjdGMDA0OTNCN0UgLyogU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWFjLm1tICovOyB9OworCQk5
RjRGNTk0NjE2NDhCQThFMDA0OTNCN0UgLyogTmV0d29ya1Byb2Nlc3NNYW5hZ2VyTWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY0RjU5NDUxNjQ4
QkE4RTAwNDkzQjdFIC8qIE5ldHdvcmtQcm9jZXNzTWFuYWdlck1hYy5tbSAqLzsgfTsKKwkJOUY1
NEY4OEYxNjQ4OEU4NzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNTRGODhFMTY0ODhFODcwMDdERjgx
QSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi87IH07CisJCTlGNTRGODk1MTY0OEFFMEYwMDdERjgx
QSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Q
cm9jZXNzTWFuYWdlck1hYy5tbSAqLzsgfTsKIAkJQjYyRTczMTAxNDMwNDdBNjAwNjlFQzM1IC8q
IFdLSGl0VGVzdFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCNjJFNzMwRjE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNw
cCAqLzsgfTsKIAkJQjYyRTczMTIxNDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjYyRTczMTEx
NDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUI2MzQwM0Y5MTQ5MTBENTcwMDEwNzBCNSAv
KiBBUElPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjYzNDAzRjgxNDkxMEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5jcHAgKi87IH07CkBA
IC0xNzQ2LDYgKzE3NTEsMTEgQEAKIAkJOTNGQzY3OUUxMkQzQ0M3NDAwQTYwNjEwIC8qIERlY29k
ZXJBZGFwdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlY29kZXJBZGFw
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRkM2NzlGMTJEM0NDNzQwMEE2
MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBFbmNvZGVyQWRhcHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzRkM2N0EwMTJEM0NDNzQwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBFbmNvZGVyQWRhcHRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5RjRGNTk0MTE2NDhCNDA3MDA0OTNCN0UgLyogU2hhcmVkV29ya2VyUHJv
Y2Vzc01hbmFnZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOUY0RjU5NDMxNjQ4QjY3RjAwNDkzQjdFIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OUY0RjU5NDUxNjQ4QkE4RTAwNDkzQjdFIC8qIE5ldHdvcmtQcm9jZXNzTWFuYWdlck1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzTWFu
YWdlck1hYy5tbTsgcGF0aCA9IG1hYy9OZXR3b3JrUHJvY2Vzc01hbmFnZXJNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGls
ZFByb2Nlc3NNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBD
aGlsZFByb2Nlc3NNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlGNTRGODk0
MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzJENUQ3RjEyMzZDQkE4MDBBODhCMTUg
LyogV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCMzk2RUE1NTEyRTBFRDJEMDBGNEZFQjcgLyogY29uZmlnLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCNjJFNzMwRjE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLSGl0VGVzdFJlc3VsdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTA2LDYgKzI5MTYsNyBAQAogCQkxQUVGQ0Mw
RDExRDAxRjQxMDA4MjE5RDMgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk5RjU0Rjg5NDE2NDhBRTBFMDA3REY4MUEgLyogUGx1Z2luUHJvY2Vz
c01hbmFnZXJNYWMubW0gKi8sCiAJCQkJMUFFRkNDQkMxMUQwMkM1RTAwODIxOUQzIC8qIFBsdWdp
bkluZm9TdG9yZU1hYy5tbSAqLywKIAkJCQkxQTJEOTBCQTEyODFDOTMxMDAxRUI5NjIgLyogUGx1
Z2luUHJvY2Vzc1Byb3h5TWFjLm1tICovLAogCQkJKTsKQEAgLTMxMDgsNiArMzExOSw3IEBACiAJ
CTUxNjMxOTkzMTYyODk4MEUwMEUyMkYwMCAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTlGNEY1OTQ1MTY0OEJBOEUwMDQ5M0I3RSAvKiBOZXR3
b3JrUHJvY2Vzc01hbmFnZXJNYWMubW0gKi8sCiAJCQkJNTE2MzE5OTExNjI4OTgwQTAwRTIyRjAw
IC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNYWMubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9IG1hYzsK
QEAgLTMxNzksNiArMzE5MSwxNSBAQAogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CiAJCX07CisJCTlGNEY1OTQwMTY0OEI0MDcwMDQ5M0I3RSAvKiBtYWMgKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTlGNEY1OTQxMTY0OEI0
MDcwMDQ5M0I3RSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlck1hYy5tbSAqLywKKwkJCQk5
RjRGNTk0MzE2NDhCNjdGMDA0OTNCN0UgLyogU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWFjLm1t
ICovLAorCQkJKTsKKwkJCXBhdGggPSBtYWM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OwogCQlCQzAxN0QxMDE2MjYwRkZEMDA3MDU0RjUgLyogRE9NICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTM2MzgsNiArMzY1OSw3IEBACiAJCQkJRTE3
OUZEOUUxMzREMzgyNTAwMTVCODgzIC8qIEFyZ3VtZW50Q29kZXJzTWFjLm1tICovLAogCQkJCUUx
QTMxNzMxMTM0Q0VBNkMwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLmggKi8sCiAJCQkJRTFB
MzE3MzQxMzRDRUE4MDAwN0M5QTRGIC8qIEF0dHJpYnV0ZWRTdHJpbmcubW0gKi8sCisJCQkJOUY1
NEY4OEUxNjQ4OEU4NzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSAqLywKIAkJCQkxQTJB
NEFGRTE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JTcGFjZURhdGEuaCAqLywKIAkJCQkxQTJBNEFG
RDE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JTcGFjZURhdGEubW0gKi8sCiAJCQkJMUE2RjlGQjYx
MUUxNDA4NTAwREIxMzcxIC8qIENvbW1hbmRMaW5lTWFjLmNwcCAqLywKQEAgLTQyOTgsNiArNDMy
MCw3IEBACiAJCUUxRURGREFBMTYyODg3OEUwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJzICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5RjRGNTk0MDE2NDhC
NDA3MDA0OTNCN0UgLyogbWFjICovLAogCQkJCUUxRURGRTBGMTYyOENGNEUwMDM5RUNEQSAvKiBT
aGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oICovLAogCQkJCUUxRURGRTExMTYyOENGQjIwMDM5
RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5jcHAgKi8sCiAJCQkJRTFFREZEQUIx
NjI4ODdCMDAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiAq
LywKQEAgLTU3NTYsNiArNTc3OSwxMSBAQAogCQkJCTJEMkFERjEwMTYzNjREODIwMDE5N0U0NyAv
KiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCMTZB
REQxNjQ4NTk4NDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUFCMTZBRTExNjQ4NjU2RDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHkubW0gaW4gU291cmNlcyAqLywKKwkJCQk5RjU0Rjg4RjE2NDg4RTg3
MDA3REY4MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOUY1NEY4
OTUxNjQ4QUUwRjAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJOUY0RjU5NDIxNjQ4QjQwNzAwNDkzQjdFIC8qIFNoYXJlZFdvcmtlclByb2Nl
c3NNYW5hZ2VyTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOUY0RjU5NDQxNjQ4QjY3RjAwNDkz
QjdFIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTlGNEY1OTQ2MTY0OEJBOEUwMDQ5M0I3RSAvKiBOZXR3b3JrUHJvY2Vzc01hbmFnZXJNYWMubW0g
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCAyY2MxZTYyODA0NjMyODEzMTE0MDU4ZmFjYmVhMTUwMDU3MzVj
YzI0Li4yYzFiNDMwNTIzNjRkMzZmYjYyYTZlZDdlOWJjMmFmNGMzZDgwNWViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC05Nyw0
ICs5Nyw4IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgewogICAgIFNlY0l0ZW1SZXNwb25zZSh1
aW50NjRfdCByZXF1ZXN0SUQsIFdlYktpdDo6U2VjSXRlbVJlc3BvbnNlRGF0YSByZXNwb25zZSkg
RGlzcGF0Y2hPbkNvbm5lY3Rpb25RdWV1ZQogICAgIFNlY0tleWNoYWluSXRlbVJlc3BvbnNlKHVp
bnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0OjpTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGEgcmVz
cG9uc2UpIERpc3BhdGNoT25Db25uZWN0aW9uUXVldWUKICNlbmRpZgorCisjaWYgUExBVEZPUk0o
TUFDKQorICAgIFNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29sIGZsYWcpOworI2VuZGlmCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzSW5p
dGlhbGl6YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNz
SW5pdGlhbGl6YXRpb24ubW0KaW5kZXggMmFmNTk0OGZkOWUxNzdhNDUwZDg2OTYxZGZmNTk2ZTg1
NzAxMjY4Yy4uOTc5OGU3NjdiNjcyZjhlODAzNmQxNWRhMzJiYWE4NDEwYzIwOTEyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NJbml0
aWFsaXphdGlvbi5tbQpAQCAtNDYsMTAgKzQ2LDYgQEAgdm9pZCBJbml0aWFsaXplV2ViUHJvY2Vz
cyhjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIsIENvcmVJUEM6OkNvbm5lY3Rpb246OkkK
ICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6
ZU1haW5SdW5Mb29wKCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwOTAKLSAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGRpc2FibGVBdXRvbWF0aWNU
ZXJtaW5hdGlvbjpAIkRpc2FibGUgV2ViUHJvY2VzcyBBdXRvIFRlcm1pbmF0aW9uIl07Ci0jZW5k
aWYKLQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemVTaGltKCk7CiAgICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZVNhbmRib3goY2xpZW50SWRlbnRpZmllcik7CiAg
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZShjb25uZWN0aW9uSWRlbnRpZmllciwg
UnVuTG9vcDo6bWFpbigpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>