<?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>73130</bug_id>
          
          <creation_ts>2011-11-25 06:03:01 -0800</creation_ts>
          <short_desc>[chromium] MediaStream API: Adding the embedding code for MediaStreamCenter</short_desc>
          <delta_ts>2012-02-02 12:54:23 -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>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>56459</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>grunell</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>harald</cc>
    
    <cc>s.choi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>509126</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-25 06:03:01 -0800</bug_when>
    <thetext>Last piece of the embedder infrastructure for the MediaStream feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509133</commentid>
    <comment_count>1</comment_count>
      <attachid>116611</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-25 06:12:52 -0800</bug_when>
    <thetext>Created attachment 116611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509134</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-25 06:15:59 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509708</commentid>
    <comment_count>3</comment_count>
      <attachid>116724</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-28 03:44:01 -0800</bug_when>
    <thetext>Created attachment 116724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509710</commentid>
    <comment_count>4</comment_count>
      <attachid>116724</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-28 03:51:01 -0800</bug_when>
    <thetext>Comment on attachment 116724
Patch

Attachment 116724 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10643443</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509754</commentid>
    <comment_count>5</comment_count>
      <attachid>116739</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-28 05:04:45 -0800</bug_when>
    <thetext>Created attachment 116739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510873</commentid>
    <comment_count>6</comment_count>
      <attachid>116739</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-29 09:54:30 -0800</bug_when>
    <thetext>Comment on attachment 116739
Patch

Looks reasonable to me, but we need fishd to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510992</commentid>
    <comment_count>7</comment_count>
      <attachid>116739</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-11-29 12:19:20 -0800</bug_when>
    <thetext>Comment on attachment 116739
Patch

Attachment 116739 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10640672</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511727</commentid>
    <comment_count>8</comment_count>
      <attachid>117189</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-30 07:15:57 -0800</bug_when>
    <thetext>Created attachment 117189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515130</commentid>
    <comment_count>9</comment_count>
      <attachid>117189</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-12-05 09:14:35 -0800</bug_when>
    <thetext>Comment on attachment 117189
Patch

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

&gt; Source/WebKit/chromium/public/platform/WebKitPlatformSupport.h:339
&gt; +    virtual WebMediaStreamCenter* mediaStreamCenter(WebMediaStreamCenterClient*) { return 0; }

you are passing a Client to this function, which suggests that this is a factory method.
factory methods should have the &apos;create&apos; prefix, so it is clear to the caller that they
are getting an instance object that they will need to remember to delete.

&gt; Source/WebKit/chromium/public/platform/WebMediaStreamCenter.h:44
&gt; +    virtual void didSetMediaStreamTrackEnabled(const WebMediaStreamDescriptor&amp;, size_t trackIndex) = 0;

I&apos;m having a hard time imagining how didSetMediaStreamTrackEnabled, didStopLocalMediaStream and
WebMediaStreamCenterClient::endLocalMediaStream relate to one another.  It is not clear what these
functions mean either.

&gt; Source/WebKit/chromium/public/platform/WebMediaStreamDescriptor.h:55
&gt; +    WebMediaStreamDescriptor(WebCore::MediaStreamDescriptor*);

usually the PassRefPtr variant is enough.  do we really need this one too?

(same question applies to the conversion operators below)

&gt; Source/WebKit/chromium/public/platform/WebMediaStreamSourcesQueryClient.h:46
&gt; +class WebMediaStreamSourcesQueryClient {

&quot;Client&quot; is usually used when naming interfaces.  This class appears to be more
like WebUserMediaRequest.  It provides readonly properties that customize the
request and it has the method the embedder should call to complete the request.
I don&apos;t think *Client is the right name for this class.

&gt; Source/WebKit/chromium/public/platform/WebMediaStreamSourcesQueryClient.h:57
&gt; +    WEBKIT_EXPORT void mediaStreamSourcesQueryCompleted(const WebVector&lt;WebMediaStreamSource&gt;&amp;);

can the query fail?  WebUserMediaRequest has methods for success and failure.  we don&apos;t need that here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515745</commentid>
    <comment_count>10</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-12-06 02:17:11 -0800</bug_when>
    <thetext>
MediaStreamCenter is a catch-all interface for MediaStream related objects that just have one or two functions that needs to be routed to the embedder (or the other direction). Instead of creating a whole array of *Handlers etc they are grouped together.

WebMediaStreamCenter/MediaStreamCenter are singleton objects since there shouldn&apos;t respective can&apos;t be more than one per process.


* WebMediaStreamCenter::queryMediaStreamSources
This is the first part of the getUserMedia() stream creation. The request to enumerate all video and audio devices first goes out through the platform to the embedder. If no devices are found or if the embedder chooses to do the scanning later an empty list is returned through the WebMediaStreamSourcesQueryClient, otherwise a populated list is sent back.
The UserMediaRequest is then send out through the page client for user approval and specific device selection.

* WebMediaStreamCenter::didSetMediaStreamTrackEnabled
MediaStreamTrack.enabled was changed and the embedder should pause/resume the stream. Instead of sending just the track down to the embedder the entire MediaStream representation is sent for convenience.

* WebMediaStreamCenter::didStopLocalMediaStream
LocalMediaStream::stop() was called and the embedder should close the camera(s) and/or microphone(s).

* WebMediaStreamCenterClient::endLocalMediaStream
This is called from the embedder up to to WebKit when a LocalMediaStream has ended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515759</commentid>
    <comment_count>11</comment_count>
      <attachid>117189</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-12-06 02:36:42 -0800</bug_when>
    <thetext>Comment on attachment 117189
Patch

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

&gt;&gt; Source/WebKit/chromium/public/platform/WebKitPlatformSupport.h:339
&gt;&gt; +    virtual WebMediaStreamCenter* mediaStreamCenter(WebMediaStreamCenterClient*) { return 0; }
&gt; 
&gt; you are passing a Client to this function, which suggests that this is a factory method.
&gt; factory methods should have the &apos;create&apos; prefix, so it is clear to the caller that they
&gt; are getting an instance object that they will need to remember to delete.

This should return an singleton-like object and thus I didn&apos;t add the create prefix.

&gt;&gt; Source/WebKit/chromium/public/platform/WebMediaStreamCenter.h:44
&gt;&gt; +    virtual void didSetMediaStreamTrackEnabled(const WebMediaStreamDescriptor&amp;, size_t trackIndex) = 0;
&gt; 
&gt; I&apos;m having a hard time imagining how didSetMediaStreamTrackEnabled, didStopLocalMediaStream and
&gt; WebMediaStreamCenterClient::endLocalMediaStream relate to one another.  It is not clear what these
&gt; functions mean either.

See my comment on the patch.

&gt;&gt; Source/WebKit/chromium/public/platform/WebMediaStreamDescriptor.h:55
&gt;&gt; +    WebMediaStreamDescriptor(WebCore::MediaStreamDescriptor*);
&gt; 
&gt; usually the PassRefPtr variant is enough.  do we really need this one too?
&gt; 
&gt; (same question applies to the conversion operators below)

Sort of yes, for convenience. Without the MediaStreamDescriptor* constructor it isn&apos;t possible to go from a MediaStreamDescriptor* to a WebMediaStreamDesctructor without manually introducing temporary variables.

void MediaStreamCenterInternal::didSetMediaStreamTrackEnabled(Mediastreamdescriptor* stream, size_t trackIndex)
{
    if (m_private)
        m_private-&gt;didSetMediaStreamTrackEnabled(stream, trackIndex);
}

The PassRefPtr constructor is needed for the automatic array conversion from WebCore::Vector to WebKit::WebVector

Similarly the conversion operators are to avoid temporary variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515859</commentid>
    <comment_count>12</comment_count>
      <attachid>118036</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-12-06 06:04:41 -0800</bug_when>
    <thetext>Created attachment 118036
Patch

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534985</commentid>
    <comment_count>13</comment_count>
      <attachid>118036</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-12 11:11:05 -0800</bug_when>
    <thetext>Comment on attachment 118036
Patch

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

&gt; Source/WebKit/chromium/public/platform/WebMediaStreamCenter.h:41
&gt; +    virtual ~WebMediaStreamCenter() { }

It looks like you intend the user of this interface to delete the object through this interface.
If so, then WebKitPlatformSupport::mediaStreamCenter() is mis-named.  It should be prefixed with
&quot;create&quot;.  Otherwise, this interface should have its destructor hidden (made protected).

&gt; Source/WebKit/chromium/public/platform/WebMediaStreamCenter.h:44
&gt; +    virtual void didSetMediaStreamTrackEnabled(const WebMediaStreamDescriptor&amp;, size_t trackIndex) = 0;

nit: perhaps this function could just be named didEnableMediaStreamTrack?

&gt; Source/WebKit/chromium/public/platform/WebMediaStreamCenter.h:45
&gt; +    virtual void didStopLocalMediaStream(const WebMediaStreamDescriptor&amp;) = 0;

nit: this function says &quot;Local&quot; in its name, but the parameter type does not
have &quot;Local&quot; in its name.  perhaps this function should just be called
didStopMediaStream?

&gt; Source/WebKit/chromium/public/platform/WebMediaStreamCenterClient.h:42
&gt; +    virtual void endLocalMediaStream(const WebMediaStreamDescriptor&amp;) = 0;

nit: here you use the term &quot;end&quot; but on WebMediaStreamCenter, I see the term &quot;stop&quot;.
Is there a relationship between ending a stream and it being reported as stopped?
Should we try to use the same term here if they are related?

&gt; Source/WebKit/chromium/public/platform/WebMediaStreamDescriptor.h:55
&gt; +    WebMediaStreamDescriptor(WebCore::MediaStreamDescriptor*);

nit: are you sure you need both constructors?

&gt; Source/WebKit/chromium/public/platform/WebMediaStreamSourcesQueryClient.h:57
&gt; +    WEBKIT_EXPORT void mediaStreamSourcesQueryCompleted(const WebVector&lt;WebMediaStreamSource&gt;&amp;);

nit: It seems redundant to include the class name in this method.  This method
is already scoped to a class that has in its name &quot;media stream sources query&quot;,
so why repeat that here?  it seems like you could just call this method
didComplete.

WebUserMediaRequest is fairly similar to this interface.  In that case, we
used the term &quot;request&quot; in the method name, which was slightly redundant
but seemed to work nicely.  So, following that we could call this method here
queryCompleted or didCompleteQuery.

I&apos;m also curious about the name of this class.  Is it really a Client?  Or, is
it perhaps more of a Request interface along the lines of WebUserMediaRequest?
Should we call this WebMediaStreamSourcesRequest?  Is the WebCore version
similarly mis-named?  it would be nice to be consistent with how things are
named.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535597</commentid>
    <comment_count>14</comment_count>
      <attachid>118036</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-01-13 05:15:57 -0800</bug_when>
    <thetext>Comment on attachment 118036
Patch

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

&gt;&gt; Source/WebKit/chromium/public/platform/WebMediaStreamCenter.h:41
&gt;&gt; +    virtual ~WebMediaStreamCenter() { }
&gt; 
&gt; It looks like you intend the user of this interface to delete the object through this interface.
&gt; If so, then WebKitPlatformSupport::mediaStreamCenter() is mis-named.  It should be prefixed with
&gt; &quot;create&quot;.  Otherwise, this interface should have its destructor hidden (made protected).

Moved to protected.

&gt;&gt; Source/WebKit/chromium/public/platform/WebMediaStreamCenter.h:44
&gt;&gt; +    virtual void didSetMediaStreamTrackEnabled(const WebMediaStreamDescriptor&amp;, size_t trackIndex) = 0;
&gt; 
&gt; nit: perhaps this function could just be named didEnableMediaStreamTrack?

The method on MediaStreamTrack is called setEnabled() and the name didSetMediaStreamTrackEnabled reflects that.  Maybe didSetEnabledOnMediaStream would be longer but clearer?

&gt;&gt; Source/WebKit/chromium/public/platform/WebMediaStreamCenter.h:45
&gt;&gt; +    virtual void didStopLocalMediaStream(const WebMediaStreamDescriptor&amp;) = 0;
&gt; 
&gt; nit: this function says &quot;Local&quot; in its name, but the parameter type does not
&gt; have &quot;Local&quot; in its name.  perhaps this function should just be called
&gt; didStopMediaStream?

No, only LocalMediaStreams have a stop() method. In the embedder layer we din&apos;t distinguish between LocalMS and MS.

&gt;&gt; Source/WebKit/chromium/public/platform/WebMediaStreamCenterClient.h:42
&gt;&gt; +    virtual void endLocalMediaStream(const WebMediaStreamDescriptor&amp;) = 0;
&gt; 
&gt; nit: here you use the term &quot;end&quot; but on WebMediaStreamCenter, I see the term &quot;stop&quot;.
&gt; Is there a relationship between ending a stream and it being reported as stopped?
&gt; Should we try to use the same term here if they are related?

Good catch, changed to stop.

&gt;&gt; Source/WebKit/chromium/public/platform/WebMediaStreamDescriptor.h:55
&gt;&gt; +    WebMediaStreamDescriptor(WebCore::MediaStreamDescriptor*);
&gt; 
&gt; nit: are you sure you need both constructors?

Yes, otherwise we would need temporary variables.

&gt;&gt; Source/WebKit/chromium/public/platform/WebMediaStreamSourcesQueryClient.h:57
&gt;&gt; +    WEBKIT_EXPORT void mediaStreamSourcesQueryCompleted(const WebVector&lt;WebMediaStreamSource&gt;&amp;);
&gt; 
&gt; nit: It seems redundant to include the class name in this method.  This method
&gt; is already scoped to a class that has in its name &quot;media stream sources query&quot;,
&gt; so why repeat that here?  it seems like you could just call this method
&gt; didComplete.
&gt; 
&gt; WebUserMediaRequest is fairly similar to this interface.  In that case, we
&gt; used the term &quot;request&quot; in the method name, which was slightly redundant
&gt; but seemed to work nicely.  So, following that we could call this method here
&gt; queryCompleted or didCompleteQuery.
&gt; 
&gt; I&apos;m also curious about the name of this class.  Is it really a Client?  Or, is
&gt; it perhaps more of a Request interface along the lines of WebUserMediaRequest?
&gt; Should we call this WebMediaStreamSourcesRequest?  Is the WebCore version
&gt; similarly mis-named?  it would be nice to be consistent with how things are
&gt; named.

Changed name to didCompleteQuery. Regarding if this is a client or not I leave up to you to decide.
MediaStreamSourcesQueryClient is an interface that got introduced in the platform refactoring, and is only implemented by UserMediaRequest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535603</commentid>
    <comment_count>15</comment_count>
      <attachid>122415</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-01-13 05:28:10 -0800</bug_when>
    <thetext>Created attachment 122415
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535606</commentid>
    <comment_count>16</comment_count>
      <attachid>122415</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-01-13 05:37:11 -0800</bug_when>
    <thetext>Comment on attachment 122415
Patch

Attachment 122415 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11115939</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535615</commentid>
    <comment_count>17</comment_count>
      <attachid>122416</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-01-13 05:49:04 -0800</bug_when>
    <thetext>Created attachment 122416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537018</commentid>
    <comment_count>18</comment_count>
      <attachid>122748</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-01-17 04:26:45 -0800</bug_when>
    <thetext>Created attachment 122748
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539626</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-20 11:07:10 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt;&gt; Source/WebKit/chromium/public/platform/WebMediaStreamCenter.h:44
&gt; &gt;&gt; +    virtual void didSetMediaStreamTrackEnabled(const WebMediaStreamDescriptor&amp;, size_t trackIndex) = 0;
&gt; &gt; 
&gt; &gt; nit: perhaps this function could just be named didEnableMediaStreamTrack?
&gt; 
&gt; The method on MediaStreamTrack is called setEnabled() and the name didSetMediaStreamTrackEnabled reflects that.  Maybe didSetEnabledOnMediaStream would be longer but clearer?

When you call setEnabled() on MediaStreamTrack you put it into an &quot;enabled&quot; state, right?  One way of telling someone that that happened is to say that &quot;the MediaStreamTrack was enabled&quot;.  In other words, it doesn&apos;t seem critical to retain the word &quot;set&quot; when describing how the object became enabled.  This is why I thought didEnableMediaStreamTrack makes sense.  It tells us that the MediaStreamTrack was enabled, but with the &quot;did&quot; prefix as a way of indicating that the thing being reported already happened.


&gt; &gt;&gt; Source/WebKit/chromium/public/platform/WebMediaStreamCenter.h:45
&gt; &gt;&gt; +    virtual void didStopLocalMediaStream(const WebMediaStreamDescriptor&amp;) = 0;
&gt; &gt; 
&gt; &gt; nit: this function says &quot;Local&quot; in its name, but the parameter type does not
&gt; &gt; have &quot;Local&quot; in its name.  perhaps this function should just be called
&gt; &gt; didStopMediaStream?
&gt; 
&gt; No, only LocalMediaStreams have a stop() method. In the embedder layer we din&apos;t distinguish between LocalMS and MS.

OK!


&gt; &gt;&gt; Source/WebKit/chromium/public/platform/WebMediaStreamDescriptor.h:55
&gt; &gt;&gt; +    WebMediaStreamDescriptor(WebCore::MediaStreamDescriptor*);
&gt; &gt; 
&gt; &gt; nit: are you sure you need both constructors?
&gt; 
&gt; Yes, otherwise we would need temporary variables.

OK... most of these wrapper classes don&apos;t have both forms of constructor, but OK.


&gt; &gt;&gt; Source/WebKit/chromium/public/platform/WebMediaStreamSourcesQueryClient.h:57
&gt; &gt;&gt; +    WEBKIT_EXPORT void mediaStreamSourcesQueryCompleted(const WebVector&lt;WebMediaStreamSource&gt;&amp;);
&gt; &gt; 
&gt; &gt; nit: It seems redundant to include the class name in this method.  This method
&gt; &gt; is already scoped to a class that has in its name &quot;media stream sources query&quot;,
&gt; &gt; so why repeat that here?  it seems like you could just call this method
&gt; &gt; didComplete.
&gt; &gt; 
&gt; &gt; WebUserMediaRequest is fairly similar to this interface.  In that case, we
&gt; &gt; used the term &quot;request&quot; in the method name, which was slightly redundant
&gt; &gt; but seemed to work nicely.  So, following that we could call this method here
&gt; &gt; queryCompleted or didCompleteQuery.
&gt; &gt; 
&gt; &gt; I&apos;m also curious about the name of this class.  Is it really a Client?  Or, is
&gt; &gt; it perhaps more of a Request interface along the lines of WebUserMediaRequest?
&gt; &gt; Should we call this WebMediaStreamSourcesRequest?  Is the WebCore version
&gt; &gt; similarly mis-named?  it would be nice to be consistent with how things are
&gt; &gt; named.
&gt; 
&gt; Changed name to didCompleteQuery. Regarding if this is a client or not I leave up to you to decide.
&gt; MediaStreamSourcesQueryClient is an interface that got introduced in the platform refactoring, and is only implemented by UserMediaRequest.

OK... I would probably use the Request suffix since this class seems to best fit the
emerging pattern of *Request classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540464</commentid>
    <comment_count>20</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-01-23 03:40:29 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #14)
&gt; &gt; &gt;&gt; Source/WebKit/chromium/public/platform/WebMediaStreamCenter.h:44
&gt; &gt; &gt;&gt; +    virtual void didSetMediaStreamTrackEnabled(const WebMediaStreamDescriptor&amp;, size_t trackIndex) = 0;
&gt; &gt; &gt; 
&gt; &gt; &gt; nit: perhaps this function could just be named didEnableMediaStreamTrack?
&gt; &gt; 
&gt; &gt; The method on MediaStreamTrack is called setEnabled() and the name didSetMediaStreamTrackEnabled reflects that.  Maybe didSetEnabledOnMediaStream would be longer but clearer?
&gt; 
&gt; When you call setEnabled() on MediaStreamTrack you put it into an &quot;enabled&quot; state, right?  One way of telling someone that that happened is to say that &quot;the MediaStreamTrack was enabled&quot;.  In other words, it doesn&apos;t seem critical to retain the word &quot;set&quot; when describing how the object became enabled.  This is why I thought didEnableMediaStreamTrack makes sense.  It tells us that the MediaStreamTrack was enabled, but with the &quot;did&quot; prefix as a way of indicating that the thing being reported already happened.
&gt; 

&quot;Unfortunately&quot; life is not so simple; setEnabled takes an boolean parameter and can thus both enable and disable a track. Will didChangeMediaStreamTrackState work? It is less ambivalent.


&gt; 
&gt; &gt; &gt;&gt; Source/WebKit/chromium/public/platform/WebMediaStreamCenter.h:45
&gt; &gt; &gt;&gt; +    virtual void didStopLocalMediaStream(const WebMediaStreamDescriptor&amp;) = 0;
&gt; &gt; &gt; 
&gt; &gt; &gt; nit: this function says &quot;Local&quot; in its name, but the parameter type does not
&gt; &gt; &gt; have &quot;Local&quot; in its name.  perhaps this function should just be called
&gt; &gt; &gt; didStopMediaStream?
&gt; &gt; 
&gt; &gt; No, only LocalMediaStreams have a stop() method. In the embedder layer we din&apos;t distinguish between LocalMS and MS.
&gt; 
&gt; OK!
&gt; 
&gt; 
&gt; &gt; &gt;&gt; Source/WebKit/chromium/public/platform/WebMediaStreamDescriptor.h:55
&gt; &gt; &gt;&gt; +    WebMediaStreamDescriptor(WebCore::MediaStreamDescriptor*);
&gt; &gt; &gt; 
&gt; &gt; &gt; nit: are you sure you need both constructors?
&gt; &gt; 
&gt; &gt; Yes, otherwise we would need temporary variables.
&gt; 
&gt; OK... most of these wrapper classes don&apos;t have both forms of constructor, but OK.
&gt; 
&gt; 
&gt; &gt; &gt;&gt; Source/WebKit/chromium/public/platform/WebMediaStreamSourcesQueryClient.h:57
&gt; &gt; &gt;&gt; +    WEBKIT_EXPORT void mediaStreamSourcesQueryCompleted(const WebVector&lt;WebMediaStreamSource&gt;&amp;);
&gt; &gt; &gt; 
&gt; &gt; &gt; nit: It seems redundant to include the class name in this method.  This method
&gt; &gt; &gt; is already scoped to a class that has in its name &quot;media stream sources query&quot;,
&gt; &gt; &gt; so why repeat that here?  it seems like you could just call this method
&gt; &gt; &gt; didComplete.
&gt; &gt; &gt; 
&gt; &gt; &gt; WebUserMediaRequest is fairly similar to this interface.  In that case, we
&gt; &gt; &gt; used the term &quot;request&quot; in the method name, which was slightly redundant
&gt; &gt; &gt; but seemed to work nicely.  So, following that we could call this method here
&gt; &gt; &gt; queryCompleted or didCompleteQuery.
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;m also curious about the name of this class.  Is it really a Client?  Or, is
&gt; &gt; &gt; it perhaps more of a Request interface along the lines of WebUserMediaRequest?
&gt; &gt; &gt; Should we call this WebMediaStreamSourcesRequest?  Is the WebCore version
&gt; &gt; &gt; similarly mis-named?  it would be nice to be consistent with how things are
&gt; &gt; &gt; named.
&gt; &gt; 
&gt; &gt; Changed name to didCompleteQuery. Regarding if this is a client or not I leave up to you to decide.
&gt; &gt; MediaStreamSourcesQueryClient is an interface that got introduced in the platform refactoring, and is only implemented by UserMediaRequest.
&gt; 
&gt; OK... I would probably use the Request suffix since this class seems to best fit the
&gt; emerging pattern of *Request classes.

OK, will change to WebMediaStreamSourcesRequest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540474</commentid>
    <comment_count>21</comment_count>
      <attachid>123538</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-01-23 04:08:39 -0800</bug_when>
    <thetext>Created attachment 123538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541496</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-24 11:11:55 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; (In reply to comment #14)
&gt; &gt; &gt; &gt;&gt; Source/WebKit/chromium/public/platform/WebMediaStreamCenter.h:44
&gt; &gt; &gt; &gt;&gt; +    virtual void didSetMediaStreamTrackEnabled(const WebMediaStreamDescriptor&amp;, size_t trackIndex) = 0;
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; nit: perhaps this function could just be named didEnableMediaStreamTrack?
&gt; &gt; &gt; 
&gt; &gt; &gt; The method on MediaStreamTrack is called setEnabled() and the name didSetMediaStreamTrackEnabled reflects that.  Maybe didSetEnabledOnMediaStream would be longer but clearer?
&gt; &gt; 
&gt; &gt; When you call setEnabled() on MediaStreamTrack you put it into an &quot;enabled&quot; state, right?  One way of telling someone that that happened is to say that &quot;the MediaStreamTrack was enabled&quot;.  In other words, it doesn&apos;t seem critical to retain the word &quot;set&quot; when describing how the object became enabled.  This is why I thought didEnableMediaStreamTrack makes sense.  It tells us that the MediaStreamTrack was enabled, but with the &quot;did&quot; prefix as a way of indicating that the thing being reported already happened.
&gt; &gt; 
&gt; 
&gt; &quot;Unfortunately&quot; life is not so simple; setEnabled takes an boolean parameter and can thus both enable and disable a track. Will didChangeMediaStreamTrackState work? It is less ambivalent.

Oh!  Sorry for missing that detail.  In that case, you have a couple options.  Break it up into two functions:

  didEnableMediaStreamTrack
  didDisableMediaStreamTrack

Or, you could try to express the changing of an enabled state... Maybe the mouthful didChangeMediaStreamTrackEnabledState would work.  I&apos;d probably go with the two methods.


&gt; OK, will change to WebMediaStreamSourcesRequest.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542210</commentid>
    <comment_count>23</comment_count>
      <attachid>123927</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-01-25 05:38:32 -0800</bug_when>
    <thetext>Created attachment 123927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542457</commentid>
    <comment_count>24</comment_count>
      <attachid>123927</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-25 11:02:27 -0800</bug_when>
    <thetext>Comment on attachment 123927
Patch

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

I had trouble understanding this patch.  It seems to be doing lots of different things, and the ChangeLog didn&apos;t help me understand.  If you&apos;d like me to review this patch, I&apos;m going to need some more help.  If you&apos;ve got another reviewer lined up, please feel free to ignore me.

&gt; Source/WebCore/ChangeLog:4
&gt; +        [chromium] MediaStream API: Adding the embedding code for MediaStreamCenter
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=73130

This ChangeLog doesn&apos;t tell me anything about this change.  :(

&gt; Source/WebKit/chromium/bridge/MediaStreamCenterInternal.h:52
&gt; +    MediaStreamCenterInternal(MediaStreamCenter*);

Please add the explicit keyword

&gt; Source/WebKit/chromium/bridge/MediaStreamCenterInternal.h:64
&gt; +    WebKit::WebMediaStreamCenter* m_private;
&gt; +    MediaStreamCenter* m_owner;

What is the ownership model here?  Why are raw pointers ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543036</commentid>
    <comment_count>25</comment_count>
      <attachid>124100</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-01-26 03:52:16 -0800</bug_when>
    <thetext>Created attachment 124100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543045</commentid>
    <comment_count>26</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-01-26 04:08:27 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 123927 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123927&amp;action=review
&gt; 
&gt; I had trouble understanding this patch.  It seems to be doing lots of different things, and the ChangeLog didn&apos;t help me understand.  If you&apos;d like me to review this patch, I&apos;m going to need some more help.  If you&apos;ve got another reviewer lined up, please feel free to ignore me.
&gt; 

Happy to have you as a reviewer! This patch/feature follows the exact same pattern as PeerHandler that you helped review a while back.

The MediaStreamCenter header file and conditionally compiled cpp file are in WebCore/platform/mediastream/MediaStreamCenter.h/cpp.

Chromium has its own implementation of most of MediaStreamCenters functions in WebKit/chromium/bridge/MediaStreamCenter.cpp. This implementation creates a MediaStreamCenterInternal object and forwards all calls to it.

The MediaStreamCenterInternal class asks webKitPlatformSupport for the WebMediaStreamCenter (WebKit/chromium/public/platform/WebMediaStreamCenter.h) instance and routes messages back and forth.

I would say that this patch just does one thing but due to other code changes and review comments the patch has grown. There&apos;s very little code that actually does anything other than passing messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543060</commentid>
    <comment_count>27</comment_count>
      <attachid>123927</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-01-26 04:31:14 -0800</bug_when>
    <thetext>Comment on attachment 123927
Patch

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

&gt;&gt; Source/WebKit/chromium/bridge/MediaStreamCenterInternal.h:52
&gt;&gt; +    MediaStreamCenterInternal(MediaStreamCenter*);
&gt; 
&gt; Please add the explicit keyword

Fixed.

&gt;&gt; Source/WebKit/chromium/bridge/MediaStreamCenterInternal.h:64
&gt;&gt; +    MediaStreamCenter* m_owner;
&gt; 
&gt; What is the ownership model here?  Why are raw pointers ok?

m_private:
The WebKit::WebMediaStreamCenter* is not a object we own, we just get a pointer to it from webKitPlatformSupport.

m_owner:
Each instance of MediaStreamCenter owns exactly one MediaStreamCenterInternal object and MediaStreamCenterInternal::m_owner just points back to its owner.
MediaStreamCenterInternal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543472</commentid>
    <comment_count>28</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-26 14:15:52 -0800</bug_when>
    <thetext>&gt; m_private:
&gt; The WebKit::WebMediaStreamCenter* is not a object we own, we just get a pointer to it from webKitPlatformSupport.
&gt; 
&gt; m_owner:
&gt; Each instance of MediaStreamCenter owns exactly one MediaStreamCenterInternal object and MediaStreamCenterInternal::m_owner just points back to its owner.
&gt; MediaStreamCenterInternal

Makes sense.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546194</commentid>
    <comment_count>29</comment_count>
      <attachid>124100</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-31 10:17:32 -0800</bug_when>
    <thetext>Comment on attachment 124100
Patch

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

&gt; Source/WebKit/chromium/public/platform/WebKitPlatformSupport.h:339
&gt; +    virtual WebMediaStreamCenter* mediaStreamCenter(WebMediaStreamCenterClient*) { return 0; }

since mediaStreamCenter is a getter, it seems like you should be able to call it
multiple times and get the same WebMediaStreamCenter instance back.  however, to
call this function you have to pass a Client.  what if you pass a different
Client each time?  does the Client on the shared WebMediaStreamCenter change?

my point is that you are using an atypical pattern here.  usually, getters
like this do not take parameters (e.g., see the clipboard() method).  on the
other hand, create* functions do take parameters (e.g., see the
createLocalStorageNamespace function).

a couple options:

1)  Rename to createMediaStreamCenter and have WebKit own the WebMediaStreamCenter.
2)  Replace WebMediaStreamCenterClient::stopLocalMediaStream() with a method on
WebMediaStreamDescriptor (e.g., a stop() method) or a static method on some other
class.  Yeah, looking at MediaStreamCenter::endLocalMediaStream(), I see that it
does not rely on any member variables of MediaStreamCenter.  it just operates on
the descriptor.

&gt; Source/WebKit/chromium/public/platform/WebMediaStreamCenter.h:42
&gt; +    virtual void queryMediaStreamSources(const WebMediaStreamSourcesQueryClient&amp;) = 0;

is this supposed to be WebMediaStreamSourcesRequest instead?

&gt; Source/WebKit/chromium/public/platform/WebMediaStreamComponent.h:56
&gt; +    WEBKIT_EXPORT bool enabled() const;

nit: rename to &quot;isEnabled&quot; since it is asking a question

&gt; Source/WebKit/chromium/src/WebMediaStreamSourcesRequest.cpp:59
&gt; +    if (!isNull())

would the WebMediaStreamSourcesRequest passed to WebMediaStreamCenter ever really be null?
can you instead just assert that it is never null when audio/video/didCompleteQuery methods
are called?  or, is it possible for it to later become null?

&gt; Source/WebKit/chromium/src/WebMediaStreamSourcesRequest.cpp:73
&gt; +    if (!isNull()) {

nit: if this is really needed, then early return instead so that the bulk of the function can have less indentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547809</commentid>
    <comment_count>30</comment_count>
      <attachid>125120</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-02 05:21:32 -0800</bug_when>
    <thetext>Created attachment 125120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547812</commentid>
    <comment_count>31</comment_count>
      <attachid>124100</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-02 05:24:58 -0800</bug_when>
    <thetext>Comment on attachment 124100
Patch

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

&gt;&gt; Source/WebKit/chromium/public/platform/WebKitPlatformSupport.h:339
&gt;&gt; +    virtual WebMediaStreamCenter* mediaStreamCenter(WebMediaStreamCenterClient*) { return 0; }
&gt; 
&gt; since mediaStreamCenter is a getter, it seems like you should be able to call it
&gt; multiple times and get the same WebMediaStreamCenter instance back.  however, to
&gt; call this function you have to pass a Client.  what if you pass a different
&gt; Client each time?  does the Client on the shared WebMediaStreamCenter change?
&gt; 
&gt; my point is that you are using an atypical pattern here.  usually, getters
&gt; like this do not take parameters (e.g., see the clipboard() method).  on the
&gt; other hand, create* functions do take parameters (e.g., see the
&gt; createLocalStorageNamespace function).
&gt; 
&gt; a couple options:
&gt; 
&gt; 1)  Rename to createMediaStreamCenter and have WebKit own the WebMediaStreamCenter.
&gt; 2)  Replace WebMediaStreamCenterClient::stopLocalMediaStream() with a method on
&gt; WebMediaStreamDescriptor (e.g., a stop() method) or a static method on some other
&gt; class.  Yeah, looking at MediaStreamCenter::endLocalMediaStream(), I see that it
&gt; does not rely on any member variables of MediaStreamCenter.  it just operates on
&gt; the descriptor.

This function would only be called once per tab since MediaStreamCenter is a singleton but I have changed it to createMediaStreamCenter so that it follows the general pattern.

&gt;&gt; Source/WebKit/chromium/public/platform/WebMediaStreamCenter.h:42
&gt;&gt; +    virtual void queryMediaStreamSources(const WebMediaStreamSourcesQueryClient&amp;) = 0;
&gt; 
&gt; is this supposed to be WebMediaStreamSourcesRequest instead?

Good catch!

&gt;&gt; Source/WebKit/chromium/public/platform/WebMediaStreamComponent.h:56
&gt;&gt; +    WEBKIT_EXPORT bool enabled() const;
&gt; 
&gt; nit: rename to &quot;isEnabled&quot; since it is asking a question

Fixed.

&gt;&gt; Source/WebKit/chromium/src/WebMediaStreamSourcesRequest.cpp:59
&gt;&gt; +    if (!isNull())
&gt; 
&gt; would the WebMediaStreamSourcesRequest passed to WebMediaStreamCenter ever really be null?
&gt; can you instead just assert that it is never null when audio/video/didCompleteQuery methods
&gt; are called?  or, is it possible for it to later become null?

ASSERTS is indeed much better. Fixed.

&gt;&gt; Source/WebKit/chromium/src/WebMediaStreamSourcesRequest.cpp:73
&gt;&gt; +    if (!isNull()) {
&gt; 
&gt; nit: if this is really needed, then early return instead so that the bulk of the function can have less indentation.

Changed to ASSERT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548081</commentid>
    <comment_count>32</comment_count>
      <attachid>125120</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-02 12:54:15 -0800</bug_when>
    <thetext>Comment on attachment 125120
Patch

Clearing flags on attachment: 125120

Committed r106581: &lt;http://trac.webkit.org/changeset/106581&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548082</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-02 12:54:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116611</attachid>
            <date>2011-11-25 06:12:52 -0800</date>
            <delta_ts>2011-11-28 03:43:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73130-20111125151250.patch</filename>
            <type>text/plain</type>
            <size>31146</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTZjMzAwMGJkODc2ODFk
NGMzZDY1NmNjMWYxMzBiMThjOTEzYTM2NS4uYjdhNWExYWI1MjY4YTZhMTFmZmViY2VhMDVjOGM1
ODg5YzNjNmEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDExLTExLTI1ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogU3BsaXR0aW5nIHRoZSBpbnRpdGlhbCBkdW1teSBNZWRpYVN0cmVhbUNlbnRlciBpbnRv
IGNvbW1vbiBhbmQgZ3N0cmVhbWVyIGZpbGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3IgdGhlIE1lZGlhIFN0cmVhbSBBUEkgd2lsbCBi
ZSBwcm92aWRlZCBieSB0aGUgYnVnIDU2NTg3LCBwZW5kaW5nIGVub3VnaCBsYW5kZWQgY29kZS4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVyLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXI6Ok1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjp+TWVkaWFTdHJlYW1DZW50ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXI6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2Vz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpkaWRTZXRNZWRpYVN0cmVh
bVRyYWNrRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6ZGlk
U3RvcExvY2FsTWVkaWFTdHJlYW0pOgorCiAyMDExLTExLTI0ICBLZW50YXJvIEhhcmEgIDxoYXJh
a2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbml0aWFsaXplIGdsb2JhbCB2YXJpYWJsZXMg
ZHVyaW5nIElETFBhcnNlciBvYmplY3QgY3JlYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggNTJiYWY5MDg5MGM0M2VlOTNiNzVhNTliYzg2MDNjODcxZjBkZDAyNS4uYjgxOTU3MTU2
MTYxNDExZjhlYzczN2JhNTAxZDUxZTM1ZDk2ODNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMS0xMS0yNSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21t
eXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIE1lZGlhU3RyZWFtIEFQSTogQWRk
aW5nIHRoZSBlbWJlZGRpbmcgY29kZSBmb3IgTWVkaWFTdHJlYW1DZW50ZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTMwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAg
ICAqIGJyaWRnZS9NZWRpYVN0cmVhbUNlbnRlci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpNZWRpYVN0cmVhbUNlbnRlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6fk1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU2V0TWVkaWFTdHJlYW1U
cmFja0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0
b3BMb2NhbE1lZGlhU3RyZWFtKToKKyAgICAgICAgKiBicmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJ
bnRlcm5hbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXJJ
bnRlcm5hbDo6TWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpkaWRTZXRNZWRpYVN0cmVh
bVRyYWNrRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlckludGVy
bmFsOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbSk6CisgICAgICAgICogYnJpZGdlL01lZGlhU3Ry
ZWFtQ2VudGVySW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICogcHVibGljL1dlYk1lZGlhU3Ry
ZWFtQ2VudGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRl
cjo6fldlYk1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAgICAgKiBwdWJsaWMvV2ViTWVkaWFTdHJl
YW1EZXNjcmlwdG9yLmg6CisgICAgICAgICogcHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlc1F1
ZXJ5Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJj
ZXNRdWVyeUNsaWVudDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6fldlYk1lZGlhU3Ry
ZWFtU291cmNlc1F1ZXJ5Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1T
b3VyY2VzUXVlcnlDbGllbnQ6OmlzTnVsbCk6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dl
YktpdFBsYXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRQbGF0Zm9ybVN1
cHBvcnQ6Om1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9y
OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVN0cmVh
bVNvdXJjZXNRdWVyeUNsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6
cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVu
dDo6YXVkaW8pOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNs
aWVudDo6dmlkZW8pOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVy
eUNsaWVudDo6bWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQpOgorCiAyMDExLTExLTI0
ICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1
bV0gUmVtb3ZlZCBvYnNvbGV0ZSB0b3VjaHVpIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCmluZGV4IGI0YWUwMjNmNWQ2OTRmMDI1YjZiZGM0NTkwNDU0NTBkN2E3OWUxM2EuLjdjNDQ2
YTk3NGJiMWFiNDg5NjEyNjc4YTUxMWI1YjdmZGE5OGUwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQpAQCAtMjc5Miw2ICsyNzkyLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3Iu
aCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3Vy
Y2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rp
b25IYW5kbGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9NZWRpYVN0cmVhbUNlbnRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9QZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1DZW50ZXIuY3BwCmluZGV4IGE0ODRhMmJjMjA3YzlmNzI3MTdhZmUwNTQxZjAw
OGVmMTdjYzNhYWQuLjA5MDI2MjgxN2YwYWNjNTU0Mzc4MGM0MWNjNDg4NTc1MzBiMjQ4ZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
Q2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbUNlbnRlci5jcHAKQEAgLTU1LDMwICs1NSw2IEBAIHZvaWQgTWVkaWFTdHJlYW1DZW50
ZXI6OmVuZExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW1EZXNj
cmlwCiAgICAgICAgIHN0cmVhbURlc2NyaXB0b3ItPnNldEVuZGVkKCk7CiB9CiAKLS8vIEZJWE1F
OiByZW1vdmUgd2hlbiByZWFsIGltcGxlbWVudGF0aW9ucyBhcmUgYXZhaWxhYmxlCi0vLyBFbXB0
eSBpbXBsZW1lbnRhdGlvbnMgZm9yIHBvcnRzIHRoYXQgYnVpbGQgd2l0aCBNRURJQV9TVFJFQU0g
ZW5hYmxlZCBieSBkZWZhdWx0LgotTWVkaWFTdHJlYW1DZW50ZXI6Ok1lZGlhU3RyZWFtQ2VudGVy
KCkKLXsKLX0KLQotTWVkaWFTdHJlYW1DZW50ZXI6On5NZWRpYVN0cmVhbUNlbnRlcigpCi17Ci19
Ci0KLXZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+IGNsaWVudCkKLXsKLSAgICBNZWRp
YVN0cmVhbVNvdXJjZVZlY3RvciBzb3VyY2VzOwotICAgIGNsaWVudC0+bWVkaWFTdHJlYW1Tb3Vy
Y2VzUXVlcnlDb21wbGV0ZWQoc291cmNlcyk7Ci19Ci0KLXZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6
OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvciosIHVu
c2lnbmVkKQotewotfQotCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjpkaWRTdG9wTG9jYWxNZWRp
YVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKQotewotfQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgKaW5k
ZXggOGVmYzhiMzJmNDQwYzIwNTIzZGY5NjkwZjZiM2NhMDFkNjNlYzg1Mi4uZmZjNTQxNjk0NTRh
ZTliNTgzNGRhY2UxMTMzNzZmNzkzYWIwNWNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oCkBAIC0zOCw2ICsz
OCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkK
K2NsYXNzIE1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw7CisjZW5kaWYKKwogY2xhc3MgTWVkaWFT
dHJlYW1EZXNjcmlwdG9yOwogCiBjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudCA6
IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiB7CkBAIC02
Myw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogYWRkIGEgd2F5IHRvIG11dGUgYSBN
ZWRpYVN0cmVhbVNvdXJjZSBmcm9tIHRoZSBXZWJLaXQgQVBJIGxheWVyCiAKICAgICAvLyBDYWxs
cyBmcm9tIHRoZSBET00gb2JqZWN0cyB0byBub3RpZnkgdGhlIHBsYXRmb3JtCi0gICAgdm9pZCBk
aWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbURlc2NyaXB0b3IqLCB1bnNp
Z25lZCBjb21wb25lbnRJbmRleCk7CisgICAgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5h
YmxlZChNZWRpYVN0cmVhbURlc2NyaXB0b3IqLCBzaXplX3QgdHJhY2tJbmRleCk7CiAgICAgdm9p
ZCBkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsKIAogICAg
IC8vIENhbGxzIGZyb20gdGhlIHBsYXRmb3JtIHRvIHVwZGF0ZSB0aGUgRE9NIG9iamVjdHMKQEAg
LTcxLDYgKzc1LDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBNZWRpYVN0cmVhbUNlbnRl
cigpOworCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgT3duUHRyPE1lZGlhU3RyZWFtQ2Vu
dGVySW50ZXJuYWw+IG1fcHJpdmF0ZTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmUz
YjYwMzc0MTU1M2ExMWVkYTViYzhjN2NkZDBiM2RmZWViZDYyNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVh
bUNlbnRlci5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgorCisj
aW5jbHVkZSAiTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworTWVkaWFTdHJlYW1DZW50ZXI6Ok1lZGlhU3RyZWFtQ2VudGVyKCkKK3sKK30KKworTWVkaWFT
dHJlYW1DZW50ZXI6On5NZWRpYVN0cmVhbUNlbnRlcigpCit7Cit9CisKK3ZvaWQgTWVkaWFTdHJl
YW1DZW50ZXI6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1T
b3VyY2VzUXVlcnlDbGllbnQ+IGNsaWVudCkKK3sKK30KKwordm9pZCBNZWRpYVN0cmVhbUNlbnRl
cjo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBz
dHJlYW0sIHNpemVfdCB0cmFja0luZGV4KQoreworfQorCit2b2lkIE1lZGlhU3RyZWFtQ2VudGVy
OjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbSkK
K3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBhZmFhYjc4ZDE3NWIwM2Jm
YzdhMDRhMjg2ODhmMjMyNzNiY2JkMzVhLi4zNzBhNmEyOTgxNTI4MmViZWEzNTc2N2Q3YTZkYWRi
MGFhZGUxYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC05Miw2ICs5Miw5IEBA
CiAgICAgICAgICAgICAgICAgJ1dFQktJVF9JTVBMRU1FTlRBVElPTj0xJywKICAgICAgICAgICAg
IF0sCiAgICAgICAgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgICAgICAgICAnYnJpZGdlL01l
ZGlhU3RyZWFtQ2VudGVyLmNwcCcsCisgICAgICAgICAgICAgICAgJ2JyaWRnZS9NZWRpYVN0cmVh
bUNlbnRlckludGVybmFsLmNwcCcsCisgICAgICAgICAgICAgICAgJ2JyaWRnZS9NZWRpYVN0cmVh
bUNlbnRlckludGVybmFsLmgnLAogICAgICAgICAgICAgICAgICdicmlkZ2UvUGVlckNvbm5lY3Rp
b25IYW5kbGVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ2JyaWRnZS9QZWVyQ29ubmVjdGlvbkhh
bmRsZXJJbnRlcm5hbC5jcHAnLAogICAgICAgICAgICAgICAgICdicmlkZ2UvUGVlckNvbm5lY3Rp
b25IYW5kbGVySW50ZXJuYWwuaCcsCkBAIC0yNDMsNyArMjQ2LDkgQEAKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYk1lZGlhU3RyZWFtUmVnaXN0cnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYk1l
ZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViTWVudUl0ZW1JbmZvLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVkaWFTdHJl
YW1DZW50ZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5u
ZWwuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5uZWxDbGll
bnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNaW1lUmVnaXN0cnkuaCcsCkBAIC01
ODEsNiArNTg2LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3Jp
cHRvci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwJywKKyAg
ICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOYW1lZE5vZGVNYXAuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJOb2RlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2Jy
aWRnZS9NZWRpYVN0cmVhbUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRn
ZS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQxYWEzYzU0ODI3Y2QxOWZmYzcx
YmZlNThlMjU2ZjFlZjAzNjNlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVyLmNwcApAQCAtMCwwICsxLDY5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtQ2VudGVyLmgiCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlckludGVybmFs
LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYVN0cmVhbUNlbnRlcjo6
TWVkaWFTdHJlYW1DZW50ZXIoKQorICAgIDogbV9wcml2YXRlKGFkb3B0UHRyKG5ldyBNZWRpYVN0
cmVhbUNlbnRlckludGVybmFsKCkpKQoreworfQorCitNZWRpYVN0cmVhbUNlbnRlcjo6fk1lZGlh
U3RyZWFtQ2VudGVyKCkKK3sKK30KKwordm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6cXVlcnlNZWRp
YVN0cmVhbVNvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4g
Y2xpZW50KQoreworICAgIG1fcHJpdmF0ZS0+cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoY2xpZW50
KTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0Vu
YWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0sIHNpemVfdCB0cmFja0luZGV4KQor
eworICAgIG1fcHJpdmF0ZS0+ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoc3RyZWFtLCB0
cmFja0luZGV4KTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU3RvcExvY2FsTWVk
aWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0pCit7CisgICAgbV9wcml2YXRl
LT5kaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShzdHJlYW0pOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFs
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40MjFiMDllNjc0OTU5OTIwNWMxZjhmYTczZGRmODVmY2Y3ODE1ODdi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFT
dHJlYW1DZW50ZXJJbnRlcm5hbC5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNl
bnRlckludGVybmFsLmgiCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgorI2luY2x1
ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiV2ViS2l0LmgiCisjaW5jbHVkZSAi
V2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1DZW50ZXIu
aCIKKyNpbmNsdWRlICJXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJXZWJN
ZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwoKQor
ICAgIDogbV9wcml2YXRlKFdlYktpdDo6d2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPm1lZGlhU3Ry
ZWFtQ2VudGVyKCkpCit7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6cXVl
cnlNZWRpYVN0cmVhbVNvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNs
aWVudD4gY2xpZW50KQoreworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyAic2hvcnQtY2lyY3Vp
dCIgYW5kIGZvcndhcmQgdG8gbV9wcml2YXRlIHdoZW4gQ2hyb21lIGhhcyBpbXBsZW1lbnRlZCBX
ZWJNZWRpYVN0cmVhbUNlbnRlci4KKyAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBzb3VyY2Vz
OworICAgIGNsaWVudC0+bWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQoc291cmNlcyk7
Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6ZGlkU2V0TWVkaWFTdHJlYW1U
cmFja0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0sIHNpemVfdCB0cmFja0lu
ZGV4KQoreworICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+ZGlkU2V0TWVk
aWFTdHJlYW1UcmFja0VuYWJsZWQoc3RyZWFtLCB0cmFja0luZGV4KTsKK30KKwordm9pZCBNZWRp
YVN0cmVhbUNlbnRlckludGVybmFsOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVh
bURlc2NyaXB0b3IqIHN0cmVhbSkKK3sKKyAgICBpZiAobV9wcml2YXRlKQorICAgICAgICBtX3By
aXZhdGUtPmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKHN0cmVhbSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFs
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVy
bmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTQ4NTcwODA3YTU5MmU5NDU0OWY2OGVhMGJiZmQyNDBmNWUxY2Zi
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL01lZGlh
U3RyZWFtQ2VudGVySW50ZXJuYWwuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVN0cmVh
bUNlbnRlckludGVybmFsX2gKKyNkZWZpbmUgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbF9oCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlcjsKK30KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3I7CitjbGFz
cyBNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDsKKworY2xhc3MgTWVkaWFTdHJlYW1DZW50
ZXJJbnRlcm5hbCB7CitwdWJsaWM6CisgICAgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbCgpOwor
CisgICAgdm9pZCBxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
U291cmNlc1F1ZXJ5Q2xpZW50Pik7CisgICAgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5h
YmxlZChNZWRpYVN0cmVhbURlc2NyaXB0b3IqLCBzaXplX3QgdHJhY2tJbmRleCk7CisgICAgdm9p
ZCBkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsKKworcHJp
dmF0ZToKKyAgICBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyKiBtX3ByaXZhdGU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KQorCisjZW5kaWYgLy8gTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbUNlbnRlci5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1DZW50ZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42NWNmZTM0ZWE0ZGExM2IyMzVlMTUxOTI5NWJiMGU0Mjg1NWI1ZTNmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1DZW50
ZXIuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVN0cmVhbUNlbnRlcl9oCisjZGVm
aW5lIFdlYk1lZGlhU3RyZWFtQ2VudGVyX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKK2NsYXNzIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1
ZXJ5Q2xpZW50OworCitjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlciB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+V2ViTWVkaWFTdHJlYW1DZW50ZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBx
dWVyeU1lZGlhU3RyZWFtU291cmNlcyhjb25zdCBXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNs
aWVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJs
ZWQoY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJiwgc2l6ZV90IHRyYWNrSW5kZXgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oY29uc3QgV2ViTWVk
aWFTdHJlYW1EZXNjcmlwdG9yJikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBXZWJNZWRpYVN0cmVhbUNlbnRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCmluZGV4IDU5
M2FlYjJkYzQ4Y2U0MjM1YzhiODRhNmUxYzdiMTczYTQzZWE2MjEuLjA0OTVmMmNjZjdmYmRlNjBk
ZWIzY2FiZDg1YjkxNGJhMDI5MjE4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCkBAIC01Miw2ICs1Miw3
IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc291cmNlcyhXZWJWZWN0b3I8V2Vi
TWVkaWFTdHJlYW1Tb3VyY2U+JikgY29uc3Q7CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
KyAgICBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IoV2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNjcmlw
dG9yKik7CiAgICAgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I+Jik7CiAgICAgb3BlcmF0b3IgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcj4oKSBjb25zdDsKICAgICBv
cGVyYXRvciBXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3IqKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNR
dWVyeUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJl
YW1Tb3VyY2VzUXVlcnlDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWQ2ZDZiNzdjZjY1MThmYTU5MmQz
Njc0M2ZlZThiMTMxODc3ZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuaApAQCAtMCwwICsx
LDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudF9oCisjZGVmaW5l
IFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50X2gKKworI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVQdHIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZWRpYVN0cmVhbVNvdXJjZTsKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWJWZWN0b3I7CisKK2NsYXNzIFdlYk1lZGlhU3Ry
ZWFtU291cmNlc1F1ZXJ5Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBXZWJNZWRpYVN0cmVhbVNvdXJj
ZXNRdWVyeUNsaWVudCgpIHsgfQorICAgIH5XZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVu
dCgpIHsgcmVzZXQoKTsgfQorCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAg
Ym9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KKworICAg
IFdFQktJVF9FWFBPUlQgYm9vbCBhdWRpbygpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9v
bCB2aWRlbygpIGNvbnN0OworCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIG1lZGlhU3RyZWFtU291
cmNlc1F1ZXJ5Q29tcGxldGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4m
KTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYk1lZGlhU3RyZWFtU291cmNl
c1F1ZXJ5Q2xpZW50KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVNv
dXJjZXNRdWVyeUNsaWVudD4mKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYlByaXZhdGVQ
dHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+IG1fcHJpdmF0ZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2VzUXVlcnlDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAppbmRleCBhODc5YWJk
NzNmZDRiYmQ1ZTI5OTQ3YWJhOTkzODFkMDA1MGRiNjVhLi44YTg1ZTE4OTBlY2FhNTNhM2IxODc5
NjhhZjY0YzAxMjM0YjUxODc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaApAQCAtNjAs
NiArNjAsNyBAQCBjbGFzcyBXZWJGaWxlVXRpbGl0aWVzOwogY2xhc3MgV2ViR3JhcGhpY3NDb250
ZXh0M0Q7CiBjbGFzcyBXZWJJREJGYWN0b3J5OwogY2xhc3MgV2ViSURCS2V5OworY2xhc3MgV2Vi
TWVkaWFTdHJlYW1DZW50ZXI7CiBjbGFzcyBXZWJNZXNzYWdlUG9ydENoYW5uZWw7CiBjbGFzcyBX
ZWJNaW1lUmVnaXN0cnk7CiBjbGFzcyBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXI7CkBAIC0zMzEs
OCArMzMyLDkgQEAgcHVibGljOgogCiAgICAgLy8gV2ViUlRDIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgIC8vIE1heSByZXR1
cm4gbnVsbCBpZiBXZWJSVEMgZnVuY3Rpb25hbGl0eSBpcyBub3QgYXZhbGlhYmxlIG9yIG91dCBv
ZiByZXNvdXJjZXMuCisgICAgLy8gTWF5IHJldHVybiBudWxsIGlmIFdlYlJUQyBmdW5jdGlvbmFs
aXR5IGlzIG5vdCBhdmFpbGFibGUgb3Igb3V0IG9mIHJlc291cmNlcy4KICAgICB2aXJ0dWFsIFdl
YlBlZXJDb25uZWN0aW9uSGFuZGxlciogY3JlYXRlUGVlckNvbm5lY3Rpb25IYW5kbGVyKFdlYlBl
ZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFdl
Yk1lZGlhU3RyZWFtQ2VudGVyKiBtZWRpYVN0cmVhbUNlbnRlcigpIHsgcmV0dXJuIDA7IH0KIAog
cHJvdGVjdGVkOgogICAgIH5XZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3Bw
CmluZGV4IGM0N2Y4ZjU2YzZhOWZlNmMxNDI2OWFlODM1MzU1YWJiYmIxZDJiZDQuLmFlOWJhZjhh
NzVkYjdkNDQ4Mzc5ZmY1OTQ4Y2JhOTAxZmVlNDBhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcApAQCAtNDQs
NiArNDQsMTEgQEAgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpXZWJNZWRpYVN0cmVhbURlc2Ny
aXB0b3IoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpNZWQKIHsKIH0KIAorV2ViTWVkaWFTdHJl
YW1EZXNjcmlwdG9yOjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IoV2ViQ29yZTo6TWVkaWFTdHJl
YW1EZXNjcmlwdG9yKiBtZWRpYVN0cmVhbURlc2NyaXB0b3IpCisgICAgOiBtX3ByaXZhdGUobWVk
aWFTdHJlYW1EZXNjcmlwdG9yKQoreworfQorCiB2b2lkIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRv
cjo6cmVzZXQoKQogewogICAgIG1fcHJpdmF0ZS5yZXNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlD
bGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhMzYwMzBiZjhlN2JiYjM3Mzc4MzI2ZjNiMTgzM2M3YWEw
ZGYwMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJN
ZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5jcHAKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJXZWJN
ZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5oIgorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1D
ZW50ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgIldlYk1l
ZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1dlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OjpXZWJNZWRpYVN0cmVhbVNv
dXJjZXNRdWVyeUNsaWVudChjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291
cmNlc1F1ZXJ5Q2xpZW50PiYgcXVlcnlDbGllbnQpCisgICAgOiBtX3ByaXZhdGUocXVlcnlDbGll
bnQpCit7Cit9CisKK3ZvaWQgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ6OnJlc2V0
KCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQoKTsKK30KKworYm9vbCBXZWJNZWRpYVN0cmVhbVNv
dXJjZXNRdWVyeUNsaWVudDo6YXVkaW8oKSBjb25zdAoreworICAgIGlmICghaXNOdWxsKCkpCisg
ICAgICAgIHJldHVybiBtX3ByaXZhdGUtPmF1ZGlvKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50Ojp2aWRlbygpIGNvbnN0Cit7
CisgICAgaWYgKCFpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+dmlkZW8oKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlD
bGllbnQ6Om1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGNvbnN0IFdlYlZlY3RvcjxX
ZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHNvdXJjZXMpCit7CisgICAgaWYgKCFpc051bGwoKSkgewor
ICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBzOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNvdXJjZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIE1lZGlhU3RyZWFt
U291cmNlKiBjdXJyID0gc291cmNlc1tpXTsKKyAgICAgICAgICAgIHMuYXBwZW5kKGN1cnIpOwor
ICAgICAgICB9CisgICAgICAgIG1fcHJpdmF0ZS0+bWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21w
bGV0ZWQocyk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116724</attachid>
            <date>2011-11-28 03:44:01 -0800</date>
            <delta_ts>2011-11-28 05:04:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73130-20111128124359.patch</filename>
            <type>text/plain</type>
            <size>30575</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQ1ZGYwYmE5ZGY4MzFj
ZjgxZmFmNzg0ZWUxZDZiNDQwMDU2YjQxOC4uNTZkZjJmOTFhMzY5NjFiY2UxYmYyZDI5OTAwMGRi
NjIyMTRkYWIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTExLTI4ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogQ2hhbmdpbmcgdGhlIGludGl0aWFsIGR1bW15IE1lZGlhU3RyZWFtQ2VudGVyIHRvIHN1
cHBvcnQgdGhlIENocm9taXVtIGVtYmVkZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3IgdGhlIE1lZGlhIFN0cmVhbSBBUEkgd2lsbCBi
ZSBwcm92aWRlZCBieSB0aGUgYnVnIDU2NTg3LCBwZW5kaW5nIGVub3VnaCBsYW5kZWQgY29kZS4K
KyAgICAgICAgV2ViTWVkaWFTdHJlYW1DZW50ZXIKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oOgorCiAyMDExLTExLTI3ICBMdWtlIE1hY3BoZXJzb24g
ICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IHZlcnRpY2Fs
LWFsaWduIHByb3BlcnR5IGluIENTU1N0eWxlQXBwbHlQcm9wZXJ0eS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggMGRiNzJiNDRmZTIwODkyNTMyNTljZjZmNmIyZjFmNmRjMmRiYmM2Mi4u
ODdlZjhjMjBjNjQ3M2VmZjlmYmNiOWFjYTA5MDI0ODY2NzI1MWQ3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMS0xMS0yOCAgVG9tbXkgV2lkZW5mbHlj
aHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIE1lZGlhU3RyZWFt
IEFQSTogQWRkaW5nIHRoZSBlbWJlZGRpbmcgY29kZSBmb3IgTWVkaWFTdHJlYW1DZW50ZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTMwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lw
OgorICAgICAgICAqIGJyaWRnZS9NZWRpYVN0cmVhbUNlbnRlci5jcHA6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpNZWRpYVN0cmVhbUNlbnRlcik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6fk1lZGlhU3RyZWFtQ2VudGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3RyZWFt
U291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU2V0TWVk
aWFTdHJlYW1UcmFja0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50
ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKToKKyAgICAgICAgKiBicmlkZ2UvTWVkaWFTdHJl
YW1DZW50ZXJJbnRlcm5hbC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbUNlbnRlckludGVybmFsOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OnF1ZXJ5TWVkaWFTdHJlYW1T
b3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OmRp
ZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQ2VudGVySW50ZXJuYWw6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OmVuZExvY2FsTWVkaWFTdHJlYW0pOgor
ICAgICAgICAqIGJyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmg6IEFkZGVkLgorICAg
ICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViS2l0UGxhdGZvcm1TdXBwb3J0OjptZWRpYVN0cmVhbUNlbnRlcik6CisgICAg
ICAgICogcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRlcjo6fldlYk1lZGlhU3RyZWFtQ2VudGVy
KToKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQu
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50Ojp+
V2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9X
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2Vi
TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNR
dWVyeUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5
Q2xpZW50Ojp+V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6aXNOdWxsKToKKyAgICAgICAg
KiBzcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
TWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IpOgorICAgICAg
ICAqIHNyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAu
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OjpXZWJN
ZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlh
U3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1l
ZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OjphdWRpbyk6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50Ojp2aWRlbyk6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OjptZWRpYVN0cmVhbVNvdXJjZXNRdWVy
eUNvbXBsZXRlZCk6CisKIDIwMTEtMTEtMjUgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBXZWIgSW5zcGVjdG9yOiBkZWxldGUgV2Vi
RGV2VG9vbHNBZ2VudDo6ZnJvbnRlbmRMb2FkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcAppbmRleCBhNDg0
YTJiYzIwN2M5ZjcyNzE3YWZlMDU0MWYwMDhlZjE3Y2MzYWFkLi41M2JiMjExODczMDI2ZmEyODA0
MTgwZmEyNTdiYzMwNDg3YjM4MTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwCkBAIC01NSw4ICs1NSwx
MCBAQCB2b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjplbmRMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciogc3RyZWFtRGVzY3JpcAogICAgICAgICBzdHJlYW1EZXNjcmlwdG9yLT5z
ZXRFbmRlZCgpOwogfQogCi0vLyBGSVhNRTogcmVtb3ZlIHdoZW4gcmVhbCBpbXBsZW1lbnRhdGlv
bnMgYXJlIGF2YWlsYWJsZQotLy8gRW1wdHkgaW1wbGVtZW50YXRpb25zIGZvciBwb3J0cyB0aGF0
IGJ1aWxkIHdpdGggTUVESUFfU1RSRUFNIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyNpZiAhUExBVEZP
Uk0oQ0hST01JVU0pCisKKy8vIEVtcHR5IGltcGxlbWVudGF0aW9ucyBmb3IgcG9ydHMgdGhhdCBi
dWlsZCB3aXRoIE1FRElBX1NUUkVBTSBlbmFibGVkIGJ5IGRlZmF1bHQsIGJ1dCBoYXZlbid0IHll
dCBpbXBsZW1lbnRlZCBNZWRpYVN0cmVhbUNlbnRlci4KKwogTWVkaWFTdHJlYW1DZW50ZXI6Ok1l
ZGlhU3RyZWFtQ2VudGVyKCkKIHsKIH0KQEAgLTc5LDYgKzgxLDggQEAgdm9pZCBNZWRpYVN0cmVh
bUNlbnRlcjo6ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikK
IHsKIH0KIAorI2VuZGlmIC8vICFQTEFURk9STShDSFJPTUlVTSkKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oCmlu
ZGV4IDhlZmM4YjMyZjQ0MGMyMDUyM2RmOTY5MGY2YjNjYTAxZDYzZWM4NTIuLmZmYzU0MTY5NDU0
YWU5YjU4MzRkYWNlMTEzMzc2Zjc5M2FiMDVjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaApAQCAtMzgsNiAr
MzgsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgUExBVEZPUk0oQ0hST01JVU0p
CitjbGFzcyBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOworI2VuZGlmCisKIGNsYXNzIE1lZGlh
U3RyZWFtRGVzY3JpcHRvcjsKIAogY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQg
OiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4gewpAQCAt
NjMsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IGFkZCBhIHdheSB0byBtdXRlIGEg
TWVkaWFTdHJlYW1Tb3VyY2UgZnJvbSB0aGUgV2ViS2l0IEFQSSBsYXllcgogCiAgICAgLy8gQ2Fs
bHMgZnJvbSB0aGUgRE9NIG9iamVjdHMgdG8gbm90aWZ5IHRoZSBwbGF0Zm9ybQotICAgIHZvaWQg
ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiwgdW5z
aWduZWQgY29tcG9uZW50SW5kZXgpOworICAgIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFja0Vu
YWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiwgc2l6ZV90IHRyYWNrSW5kZXgpOwogICAgIHZv
aWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7CiAKICAg
ICAvLyBDYWxscyBmcm9tIHRoZSBwbGF0Zm9ybSB0byB1cGRhdGUgdGhlIERPTSBvYmplY3RzCkBA
IC03MSw2ICs3NSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTWVkaWFTdHJlYW1DZW50
ZXIoKTsKKworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIE93blB0cjxNZWRpYVN0cmVhbUNl
bnRlckludGVybmFsPiBtX3ByaXZhdGU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA4YjAzZTRhMGNjMTI0ODhiMjFh
Y2YxNzAyZWUzOThmMjdhZDBjMzY1Li5lYzkyZWU3Mzc3YzVhOGY1MzJkZDkzYzE4YmM1Y2RiNDNm
ZDM1Njc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC05Miw2ICs5Miw5IEBACiAg
ICAgICAgICAgICAgICAgJ1dFQktJVF9JTVBMRU1FTlRBVElPTj0xJywKICAgICAgICAgICAgIF0s
CiAgICAgICAgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgICAgICAgICAnYnJpZGdlL01lZGlh
U3RyZWFtQ2VudGVyLmNwcCcsCisgICAgICAgICAgICAgICAgJ2JyaWRnZS9NZWRpYVN0cmVhbUNl
bnRlckludGVybmFsLmNwcCcsCisgICAgICAgICAgICAgICAgJ2JyaWRnZS9NZWRpYVN0cmVhbUNl
bnRlckludGVybmFsLmgnLAogICAgICAgICAgICAgICAgICdicmlkZ2UvUGVlckNvbm5lY3Rpb25I
YW5kbGVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ2JyaWRnZS9QZWVyQ29ubmVjdGlvbkhhbmRs
ZXJJbnRlcm5hbC5jcHAnLAogICAgICAgICAgICAgICAgICdicmlkZ2UvUGVlckNvbm5lY3Rpb25I
YW5kbGVySW50ZXJuYWwuaCcsCkBAIC0xMDksNiArMTEyLDggQEAKICAgICAgICAgICAgICAgICAn
cHVibGljL21hYy9XZWJTY3JlZW5JbmZvRmFjdG9yeS5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL21hYy9XZWJTdWJzdHJpbmdVdGlsLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvbWFj
L1dlYlRoZW1lRW5naW5lLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2Vi
TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlci5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViQWNjZXNzaWJpbGl0eVJvbGUuaCcsCkBAIC01NzcsNiArNTgyLDcgQEAKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlh
U3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJO
YW1lZE5vZGVNYXAuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk5ldHdvcmtTdGF0ZU5v
dGlmaWVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOb2RlLmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWUwYzFmNTJiYzhiMjZkNjJiZTA0YzFkNjIwMzE4NDRiNzEyOTcwOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL01lZGlhU3RyZWFtQ2Vu
dGVyLmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCisKKyNpbmNs
dWRlICJNZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitNZWRpYVN0cmVhbUNlbnRlcjo6TWVkaWFTdHJlYW1DZW50ZXIoKQorICAgIDog
bV9wcml2YXRlKGFkb3B0UHRyKG5ldyBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsKHRoaXMpKSkK
K3sKK30KKworTWVkaWFTdHJlYW1DZW50ZXI6On5NZWRpYVN0cmVhbUNlbnRlcigpCit7Cit9CisK
K3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+IGNsaWVudCkKK3sKKyAgICBtX3ByaXZh
dGUtPnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKGNsaWVudCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJl
YW1DZW50ZXI6OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtRGVzY3Jp
cHRvciogc3RyZWFtLCBzaXplX3QgdHJhY2tJbmRleCkKK3sKKyAgICBtX3ByaXZhdGUtPmRpZFNl
dE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKHN0cmVhbSwgdHJhY2tJbmRleCk7Cit9CisKK3ZvaWQg
TWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVz
Y3JpcHRvciogc3RyZWFtKQoreworICAgIG1fcHJpdmF0ZS0+ZGlkU3RvcExvY2FsTWVkaWFTdHJl
YW0oc3RyZWFtKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJp
ZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRiOGI1
M2ZkNDUzMTBhNDFlY2I2ODY3ZWVmNDFhNmFlODg4ZjgwNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuY3Bw
CkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oIgorCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5o
IgorI2luY2x1ZGUgIldlYktpdC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYktpdFBsYXRmb3Jt
U3VwcG9ydC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgiCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpNZWRpYVN0cmVhbUNlbnRl
ckludGVybmFsKE1lZGlhU3RyZWFtQ2VudGVyKiBvd25lcikKKyAgICA6IG1fcHJpdmF0ZShXZWJL
aXQ6OndlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5tZWRpYVN0cmVhbUNlbnRlcih0aGlzKSkKKyAg
ICAsIG1fb3duZXIob3duZXIpCit7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5h
bDo6cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZXNR
dWVyeUNsaWVudD4gY2xpZW50KQoreworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyAic2hvcnQt
Y2lyY3VpdCIgYW5kIGZvcndhcmQgdG8gbV9wcml2YXRlIHdoZW4gQ2hyb21lIGhhcyBpbXBsZW1l
bnRlZCBXZWJNZWRpYVN0cmVhbUNlbnRlci4KKyAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBz
b3VyY2VzOworICAgIGNsaWVudC0+bWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQoc291
cmNlcyk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6ZGlkU2V0TWVkaWFT
dHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0sIHNpemVfdCB0
cmFja0luZGV4KQoreworICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+ZGlk
U2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoc3RyZWFtLCB0cmFja0luZGV4KTsKK30KKwordm9p
ZCBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRp
YVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbSkKK3sKKyAgICBpZiAobV9wcml2YXRlKQorICAgICAg
ICBtX3ByaXZhdGUtPmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKHN0cmVhbSk7Cit9CisKK3ZvaWQg
TWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6ZW5kTG9jYWxNZWRpYVN0cmVhbShjb25zdCBXZWJL
aXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYgc3RyZWFtKQoreworICAgIG1fb3duZXItPmVu
ZExvY2FsTWVkaWFTdHJlYW0oc3RyZWFtKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNDhhNGMzMjExZTZmYThiZWJlZWM5OGJhY2I0ZTI4ZDhjMzQ4ODQzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJ
bnRlcm5hbC5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhU3RyZWFtQ2VudGVySW50ZXJu
YWxfaAorI2RlZmluZSBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsX2gKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlckNs
aWVudC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgTWVkaWFTdHJlYW1DZW50ZXI7CitjbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3I7
CitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDsKKworY2xhc3MgTWVkaWFTdHJl
YW1DZW50ZXJJbnRlcm5hbCA6IHB1YmxpYyBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsKE1lZGlhU3RyZWFt
Q2VudGVyKik7CisKKyAgICB2b2lkIHF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+KTsKKyAgICB2b2lkIGRpZFNldE1lZGlhU3Ry
ZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvciosIHNpemVfdCB0cmFja0luZGV4
KTsKKyAgICB2b2lkIGRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRv
ciopOworCisgICAgLy8gRnJvbSBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50Lgor
ICAgIHZpcnR1YWwgdm9pZCBlbmRMb2NhbE1lZGlhU3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVk
aWFTdHJlYW1EZXNjcmlwdG9yJik7CisKK3ByaXZhdGU6CisgICAgV2ViS2l0OjpXZWJNZWRpYVN0
cmVhbUNlbnRlciogbV9wcml2YXRlOworICAgIE1lZGlhU3RyZWFtQ2VudGVyKiBtX293bmVyOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2VuZGlmIC8vIE1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWxfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1T
dXBwb3J0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQ
bGF0Zm9ybVN1cHBvcnQuaAppbmRleCAwMjMyODkyZTVhNTBkNzZlZWVkNGJkNWI4Yjg3ZWUwN2M0
ZWE4NjVhLi43MTA5YzM1ODA1OTg1ZjlmYjhjNzBkODI0YWI5Njk1YzE1MThjNGVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9y
bVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaApAQCAtNjAsNiArNjAsOCBAQCBjbGFzcyBXZWJGaWxlVXRp
bGl0aWVzOwogY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBXZWJJREJGYWN0b3J5
OyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdlYklEQktl
eTsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/CitjbGFzcyBXZWJNZWRp
YVN0cmVhbUNlbnRlcjsKK2NsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50OwogY2xhc3Mg
V2ViTWVzc2FnZVBvcnRDaGFubmVsOyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0
Zm9ybT8KIGNsYXNzIFdlYk1pbWVSZWdpc3RyeTsKIGNsYXNzIFdlYlBlZXJDb25uZWN0aW9uSGFu
ZGxlcjsKQEAgLTMzMyw2ICszMzUsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNYXkgcmV0dXJuIG51
bGwgaWYgV2ViUlRDIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGF2YWxpYWJsZSBvciBvdXQgb2YgcmVz
b3VyY2VzLgogICAgIHZpcnR1YWwgV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBjcmVhdGVQZWVy
Q29ubmVjdGlvbkhhbmRsZXIoV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KikgeyByZXR1
cm4gMDsgfQorICAgIHZpcnR1YWwgV2ViTWVkaWFTdHJlYW1DZW50ZXIqIG1lZGlhU3RyZWFtQ2Vu
dGVyKFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50KikgeyByZXR1cm4gMDsgfQogCiBwcm90ZWN0
ZWQ6CiAgICAgfldlYktpdFBsYXRmb3JtU3VwcG9ydCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXIuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2Vu
dGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjVjZmUzNGVhNGRhMTNiMjM1ZTE1MTkyOTViYjBlNDI4NTViNWUz
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTWVk
aWFTdHJlYW1DZW50ZXJfaAorI2RlZmluZSBXZWJNZWRpYVN0cmVhbUNlbnRlcl9oCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I7CitjbGFzcyBX
ZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDsKKworY2xhc3MgV2ViTWVkaWFTdHJlYW1D
ZW50ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYk1lZGlhU3RyZWFtQ2VudGVyKCkgeyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgcXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoY29uc3QgV2ViTWVk
aWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFNl
dE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYs
IHNpemVfdCB0cmFja0luZGV4KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFN0b3BMb2NhbE1l
ZGlhU3RyZWFtKGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpID0gMDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViTWVkaWFTdHJlYW1DZW50ZXJfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVk
aWFTdHJlYW1DZW50ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDk4ZDNkNTBi
NTI4YTRjODgyYWJkZjM4YmY5OGE4Y2U5NTRhZjg4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyQ2xp
ZW50LmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnRf
aAorI2RlZmluZSBXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I7CisKK2NsYXNzIFdlYk1lZGlh
U3RyZWFtQ2VudGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJNZWRpYVN0cmVh
bUNlbnRlckNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGVuZExvY2FsTWVkaWFTdHJl
YW0oY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJikgPSAwOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCmluZGV4IDUyYzYzZDMyMWE4YmEyMTc5NWZl
NDhiM2I2MWY3NWQyYjdmYzcwZjIuLjQ3YWQzMTc2NGE0Y2JlZjc1ZjFiMjVjZjhhZmM4MmNjN2M0
NDM4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCkBAIC01Miw2ICs1Miw3
IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc291cmNlcyhXZWJWZWN0b3I8V2Vi
TWVkaWFTdHJlYW1Tb3VyY2U+JikgY29uc3Q7CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
KyAgICBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IoV2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNjcmlw
dG9yKik7CiAgICAgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I+Jik7CiAgICAgb3BlcmF0b3IgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcj4oKSBjb25zdDsKICAgICBv
cGVyYXRvciBXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3IqKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVh
bVNvdXJjZXNRdWVyeUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWQ2
ZDZiNzdjZjY1MThmYTU5MmQzNjc0M2ZlZThiMTMxODc3ZmY4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2VzUXVlcnlDbGllbnQuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVN0cmVhbVNv
dXJjZXNRdWVyeUNsaWVudF9oCisjZGVmaW5lIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xp
ZW50X2gKKworI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlByaXZhdGVQdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTWVkaWFT
dHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXZWJNZWRpYVN0cmVhbVNvdXJjZTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWJW
ZWN0b3I7CisKK2NsYXNzIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50IHsKK3B1Ymxp
YzoKKyAgICBXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudCgpIHsgfQorICAgIH5XZWJN
ZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudCgpIHsgcmVzZXQoKTsgfQorCisgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBt
X3ByaXZhdGUuaXNOdWxsKCk7IH0KKworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBhdWRpbygpIGNv
bnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCB2aWRlbygpIGNvbnN0OworCisgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIG1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGNvbnN0IFdlYlZl
Y3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgorICAgIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50KGNvbnN0IFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4mKTsKKyNlbmRpZgor
Citwcml2YXRlOgorICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2Vz
UXVlcnlDbGllbnQ+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAK
aW5kZXggNjkzMGYxYzQ1MGNhM2FlY2UyY2FiZDAxYTk4MDA4N2ZiNWFmZmQzZS4uNDE5MmZhYmVj
ODA2NWEzOGJhZWQ4NTc3MDQ3NDA5OTA0MWU4ODBmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCkBAIC01MCw2
ICs1MCwxMSBAQCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I6OldlYk1lZGlhU3RyZWFtRGVzY3Jp
cHRvcihjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZAogewogfQogCitXZWJNZWRpYVN0cmVh
bURlc2NyaXB0b3I6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcihXZWJDb3JlOjpNZWRpYVN0cmVh
bURlc2NyaXB0b3IqIG1lZGlhU3RyZWFtRGVzY3JpcHRvcikKKyAgICA6IG1fcHJpdmF0ZShtZWRp
YVN0cmVhbURlc2NyaXB0b3IpCit7Cit9CisKIHZvaWQgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9y
OjpyZXNldCgpCiB7CiAgICAgbV9wcml2YXRlLnJlc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNs
aWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGEzNjAzMGJmOGU3YmJiMzczNzgzMjZmM2IxODMzYzdhYTBk
ZjAyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1l
ZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmNwcApAQCAtMCwwICsxLDg2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIldlYk1l
ZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmgiCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNl
bnRlci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiV2ViTWVk
aWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ6OldlYk1lZGlhU3RyZWFtU291
cmNlc1F1ZXJ5Q2xpZW50KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3Vy
Y2VzUXVlcnlDbGllbnQ+JiBxdWVyeUNsaWVudCkKKyAgICA6IG1fcHJpdmF0ZShxdWVyeUNsaWVu
dCkKK3sKK30KKwordm9pZCBXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6cmVzZXQo
KQoreworICAgIG1fcHJpdmF0ZS5yZXNldCgpOworfQorCitib29sIFdlYk1lZGlhU3RyZWFtU291
cmNlc1F1ZXJ5Q2xpZW50OjphdWRpbygpIGNvbnN0Cit7CisgICAgaWYgKCFpc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YXVkaW8oKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ6OnZpZGVvKCkgY29uc3QKK3sK
KyAgICBpZiAoIWlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbV9wcml2YXRlLT52aWRlbygpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNs
aWVudDo6bWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQoY29uc3QgV2ViVmVjdG9yPFdl
Yk1lZGlhU3RyZWFtU291cmNlPiYgc291cmNlcykKK3sKKyAgICBpZiAoIWlzTnVsbCgpKSB7Cisg
ICAgICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHM7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc291cmNlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgTWVkaWFTdHJlYW1T
b3VyY2UqIGN1cnIgPSBzb3VyY2VzW2ldOworICAgICAgICAgICAgcy5hcHBlbmQoY3Vycik7Cisg
ICAgICAgIH0KKyAgICAgICAgbV9wcml2YXRlLT5tZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNvbXBs
ZXRlZChzKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116739</attachid>
            <date>2011-11-28 05:04:45 -0800</date>
            <delta_ts>2011-11-30 07:15:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73130-20111128140443.patch</filename>
            <type>text/plain</type>
            <size>30584</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQ1ZGYwYmE5ZGY4MzFj
ZjgxZmFmNzg0ZWUxZDZiNDQwMDU2YjQxOC4uNTZkZjJmOTFhMzY5NjFiY2UxYmYyZDI5OTAwMGRi
NjIyMTRkYWIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTExLTI4ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogQ2hhbmdpbmcgdGhlIGludGl0aWFsIGR1bW15IE1lZGlhU3RyZWFtQ2VudGVyIHRvIHN1
cHBvcnQgdGhlIENocm9taXVtIGVtYmVkZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3IgdGhlIE1lZGlhIFN0cmVhbSBBUEkgd2lsbCBi
ZSBwcm92aWRlZCBieSB0aGUgYnVnIDU2NTg3LCBwZW5kaW5nIGVub3VnaCBsYW5kZWQgY29kZS4K
KyAgICAgICAgV2ViTWVkaWFTdHJlYW1DZW50ZXIKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oOgorCiAyMDExLTExLTI3ICBMdWtlIE1hY3BoZXJzb24g
ICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IHZlcnRpY2Fs
LWFsaWduIHByb3BlcnR5IGluIENTU1N0eWxlQXBwbHlQcm9wZXJ0eS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggMGRiNzJiNDRmZTIwODkyNTMyNTljZjZmNmIyZjFmNmRjMmRiYmM2Mi4u
ODdlZjhjMjBjNjQ3M2VmZjlmYmNiOWFjYTA5MDI0ODY2NzI1MWQ3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMS0xMS0yOCAgVG9tbXkgV2lkZW5mbHlj
aHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIE1lZGlhU3RyZWFt
IEFQSTogQWRkaW5nIHRoZSBlbWJlZGRpbmcgY29kZSBmb3IgTWVkaWFTdHJlYW1DZW50ZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTMwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lw
OgorICAgICAgICAqIGJyaWRnZS9NZWRpYVN0cmVhbUNlbnRlci5jcHA6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpNZWRpYVN0cmVhbUNlbnRlcik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6fk1lZGlhU3RyZWFtQ2VudGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3RyZWFt
U291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU2V0TWVk
aWFTdHJlYW1UcmFja0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50
ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKToKKyAgICAgICAgKiBicmlkZ2UvTWVkaWFTdHJl
YW1DZW50ZXJJbnRlcm5hbC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbUNlbnRlckludGVybmFsOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OnF1ZXJ5TWVkaWFTdHJlYW1T
b3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OmRp
ZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQ2VudGVySW50ZXJuYWw6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OmVuZExvY2FsTWVkaWFTdHJlYW0pOgor
ICAgICAgICAqIGJyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmg6IEFkZGVkLgorICAg
ICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViS2l0UGxhdGZvcm1TdXBwb3J0OjptZWRpYVN0cmVhbUNlbnRlcik6CisgICAg
ICAgICogcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRlcjo6fldlYk1lZGlhU3RyZWFtQ2VudGVy
KToKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQu
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50Ojp+
V2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9X
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2Vi
TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNR
dWVyeUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5
Q2xpZW50Ojp+V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6aXNOdWxsKToKKyAgICAgICAg
KiBzcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
TWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IpOgorICAgICAg
ICAqIHNyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAu
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OjpXZWJN
ZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlh
U3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1l
ZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OjphdWRpbyk6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50Ojp2aWRlbyk6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OjptZWRpYVN0cmVhbVNvdXJjZXNRdWVy
eUNvbXBsZXRlZCk6CisKIDIwMTEtMTEtMjUgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBXZWIgSW5zcGVjdG9yOiBkZWxldGUgV2Vi
RGV2VG9vbHNBZ2VudDo6ZnJvbnRlbmRMb2FkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcAppbmRleCBhNDg0
YTJiYzIwN2M5ZjcyNzE3YWZlMDU0MWYwMDhlZjE3Y2MzYWFkLi41M2JiMjExODczMDI2ZmEyODA0
MTgwZmEyNTdiYzMwNDg3YjM4MTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwCkBAIC01NSw4ICs1NSwx
MCBAQCB2b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjplbmRMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciogc3RyZWFtRGVzY3JpcAogICAgICAgICBzdHJlYW1EZXNjcmlwdG9yLT5z
ZXRFbmRlZCgpOwogfQogCi0vLyBGSVhNRTogcmVtb3ZlIHdoZW4gcmVhbCBpbXBsZW1lbnRhdGlv
bnMgYXJlIGF2YWlsYWJsZQotLy8gRW1wdHkgaW1wbGVtZW50YXRpb25zIGZvciBwb3J0cyB0aGF0
IGJ1aWxkIHdpdGggTUVESUFfU1RSRUFNIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyNpZiAhUExBVEZP
Uk0oQ0hST01JVU0pCisKKy8vIEVtcHR5IGltcGxlbWVudGF0aW9ucyBmb3IgcG9ydHMgdGhhdCBi
dWlsZCB3aXRoIE1FRElBX1NUUkVBTSBlbmFibGVkIGJ5IGRlZmF1bHQsIGJ1dCBoYXZlbid0IHll
dCBpbXBsZW1lbnRlZCBNZWRpYVN0cmVhbUNlbnRlci4KKwogTWVkaWFTdHJlYW1DZW50ZXI6Ok1l
ZGlhU3RyZWFtQ2VudGVyKCkKIHsKIH0KQEAgLTc5LDYgKzgxLDggQEAgdm9pZCBNZWRpYVN0cmVh
bUNlbnRlcjo6ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikK
IHsKIH0KIAorI2VuZGlmIC8vICFQTEFURk9STShDSFJPTUlVTSkKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oCmlu
ZGV4IDhlZmM4YjMyZjQ0MGMyMDUyM2RmOTY5MGY2YjNjYTAxZDYzZWM4NTIuLmZmYzU0MTY5NDU0
YWU5YjU4MzRkYWNlMTEzMzc2Zjc5M2FiMDVjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaApAQCAtMzgsNiAr
MzgsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgUExBVEZPUk0oQ0hST01JVU0p
CitjbGFzcyBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOworI2VuZGlmCisKIGNsYXNzIE1lZGlh
U3RyZWFtRGVzY3JpcHRvcjsKIAogY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQg
OiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4gewpAQCAt
NjMsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IGFkZCBhIHdheSB0byBtdXRlIGEg
TWVkaWFTdHJlYW1Tb3VyY2UgZnJvbSB0aGUgV2ViS2l0IEFQSSBsYXllcgogCiAgICAgLy8gQ2Fs
bHMgZnJvbSB0aGUgRE9NIG9iamVjdHMgdG8gbm90aWZ5IHRoZSBwbGF0Zm9ybQotICAgIHZvaWQg
ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiwgdW5z
aWduZWQgY29tcG9uZW50SW5kZXgpOworICAgIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFja0Vu
YWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiwgc2l6ZV90IHRyYWNrSW5kZXgpOwogICAgIHZv
aWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7CiAKICAg
ICAvLyBDYWxscyBmcm9tIHRoZSBwbGF0Zm9ybSB0byB1cGRhdGUgdGhlIERPTSBvYmplY3RzCkBA
IC03MSw2ICs3NSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTWVkaWFTdHJlYW1DZW50
ZXIoKTsKKworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIE93blB0cjxNZWRpYVN0cmVhbUNl
bnRlckludGVybmFsPiBtX3ByaXZhdGU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA4YjAzZTRhMGNjMTI0ODhiMjFh
Y2YxNzAyZWUzOThmMjdhZDBjMzY1Li5lYzkyZWU3Mzc3YzVhOGY1MzJkZDkzYzE4YmM1Y2RiNDNm
ZDM1Njc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC05Miw2ICs5Miw5IEBACiAg
ICAgICAgICAgICAgICAgJ1dFQktJVF9JTVBMRU1FTlRBVElPTj0xJywKICAgICAgICAgICAgIF0s
CiAgICAgICAgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgICAgICAgICAnYnJpZGdlL01lZGlh
U3RyZWFtQ2VudGVyLmNwcCcsCisgICAgICAgICAgICAgICAgJ2JyaWRnZS9NZWRpYVN0cmVhbUNl
bnRlckludGVybmFsLmNwcCcsCisgICAgICAgICAgICAgICAgJ2JyaWRnZS9NZWRpYVN0cmVhbUNl
bnRlckludGVybmFsLmgnLAogICAgICAgICAgICAgICAgICdicmlkZ2UvUGVlckNvbm5lY3Rpb25I
YW5kbGVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ2JyaWRnZS9QZWVyQ29ubmVjdGlvbkhhbmRs
ZXJJbnRlcm5hbC5jcHAnLAogICAgICAgICAgICAgICAgICdicmlkZ2UvUGVlckNvbm5lY3Rpb25I
YW5kbGVySW50ZXJuYWwuaCcsCkBAIC0xMDksNiArMTEyLDggQEAKICAgICAgICAgICAgICAgICAn
cHVibGljL21hYy9XZWJTY3JlZW5JbmZvRmFjdG9yeS5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL21hYy9XZWJTdWJzdHJpbmdVdGlsLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvbWFj
L1dlYlRoZW1lRW5naW5lLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2Vi
TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlci5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViQWNjZXNzaWJpbGl0eVJvbGUuaCcsCkBAIC01NzcsNiArNTgyLDcgQEAKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlh
U3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJO
YW1lZE5vZGVNYXAuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk5ldHdvcmtTdGF0ZU5v
dGlmaWVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOb2RlLmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWUwYzFmNTJiYzhiMjZkNjJiZTA0YzFkNjIwMzE4NDRiNzEyOTcwOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL01lZGlhU3RyZWFtQ2Vu
dGVyLmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCisKKyNpbmNs
dWRlICJNZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitNZWRpYVN0cmVhbUNlbnRlcjo6TWVkaWFTdHJlYW1DZW50ZXIoKQorICAgIDog
bV9wcml2YXRlKGFkb3B0UHRyKG5ldyBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsKHRoaXMpKSkK
K3sKK30KKworTWVkaWFTdHJlYW1DZW50ZXI6On5NZWRpYVN0cmVhbUNlbnRlcigpCit7Cit9CisK
K3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+IGNsaWVudCkKK3sKKyAgICBtX3ByaXZh
dGUtPnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKGNsaWVudCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJl
YW1DZW50ZXI6OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtRGVzY3Jp
cHRvciogc3RyZWFtLCBzaXplX3QgdHJhY2tJbmRleCkKK3sKKyAgICBtX3ByaXZhdGUtPmRpZFNl
dE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKHN0cmVhbSwgdHJhY2tJbmRleCk7Cit9CisKK3ZvaWQg
TWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVz
Y3JpcHRvciogc3RyZWFtKQoreworICAgIG1fcHJpdmF0ZS0+ZGlkU3RvcExvY2FsTWVkaWFTdHJl
YW0oc3RyZWFtKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJp
ZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRiOGI1
M2ZkNDUzMTBhNDFlY2I2ODY3ZWVmNDFhNmFlODg4ZjgwNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuY3Bw
CkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oIgorCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5o
IgorI2luY2x1ZGUgIldlYktpdC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYktpdFBsYXRmb3Jt
U3VwcG9ydC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgiCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpNZWRpYVN0cmVhbUNlbnRl
ckludGVybmFsKE1lZGlhU3RyZWFtQ2VudGVyKiBvd25lcikKKyAgICA6IG1fcHJpdmF0ZShXZWJL
aXQ6OndlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5tZWRpYVN0cmVhbUNlbnRlcih0aGlzKSkKKyAg
ICAsIG1fb3duZXIob3duZXIpCit7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5h
bDo6cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZXNR
dWVyeUNsaWVudD4gY2xpZW50KQoreworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyAic2hvcnQt
Y2lyY3VpdCIgYW5kIGZvcndhcmQgdG8gbV9wcml2YXRlIHdoZW4gQ2hyb21lIGhhcyBpbXBsZW1l
bnRlZCBXZWJNZWRpYVN0cmVhbUNlbnRlci4KKyAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBz
b3VyY2VzOworICAgIGNsaWVudC0+bWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQoc291
cmNlcyk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6ZGlkU2V0TWVkaWFT
dHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0sIHNpemVfdCB0
cmFja0luZGV4KQoreworICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+ZGlk
U2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoc3RyZWFtLCB0cmFja0luZGV4KTsKK30KKwordm9p
ZCBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRp
YVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbSkKK3sKKyAgICBpZiAobV9wcml2YXRlKQorICAgICAg
ICBtX3ByaXZhdGUtPmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKHN0cmVhbSk7Cit9CisKK3ZvaWQg
TWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6ZW5kTG9jYWxNZWRpYVN0cmVhbShjb25zdCBXZWJL
aXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYgc3RyZWFtKQoreworICAgIG1fb3duZXItPmVu
ZExvY2FsTWVkaWFTdHJlYW0oc3RyZWFtKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNDhhNGMzMjExZTZmYThiZWJlZWM5OGJhY2I0ZTI4ZDhjMzQ4ODQzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJ
bnRlcm5hbC5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhU3RyZWFtQ2VudGVySW50ZXJu
YWxfaAorI2RlZmluZSBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsX2gKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlckNs
aWVudC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgTWVkaWFTdHJlYW1DZW50ZXI7CitjbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3I7
CitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDsKKworY2xhc3MgTWVkaWFTdHJl
YW1DZW50ZXJJbnRlcm5hbCA6IHB1YmxpYyBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsKE1lZGlhU3RyZWFt
Q2VudGVyKik7CisKKyAgICB2b2lkIHF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+KTsKKyAgICB2b2lkIGRpZFNldE1lZGlhU3Ry
ZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvciosIHNpemVfdCB0cmFja0luZGV4
KTsKKyAgICB2b2lkIGRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRv
ciopOworCisgICAgLy8gRnJvbSBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50Lgor
ICAgIHZpcnR1YWwgdm9pZCBlbmRMb2NhbE1lZGlhU3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVk
aWFTdHJlYW1EZXNjcmlwdG9yJik7CisKK3ByaXZhdGU6CisgICAgV2ViS2l0OjpXZWJNZWRpYVN0
cmVhbUNlbnRlciogbV9wcml2YXRlOworICAgIE1lZGlhU3RyZWFtQ2VudGVyKiBtX293bmVyOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2VuZGlmIC8vIE1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWxfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1T
dXBwb3J0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQ
bGF0Zm9ybVN1cHBvcnQuaAppbmRleCAwMjMyODkyZTVhNTBkNzZlZWVkNGJkNWI4Yjg3ZWUwN2M0
ZWE4NjVhLi43MTA5YzM1ODA1OTg1ZjlmYjhjNzBkODI0YWI5Njk1YzE1MThjNGVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9y
bVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaApAQCAtNjAsNiArNjAsOCBAQCBjbGFzcyBXZWJGaWxlVXRp
bGl0aWVzOwogY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBXZWJJREJGYWN0b3J5
OyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdlYklEQktl
eTsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/CitjbGFzcyBXZWJNZWRp
YVN0cmVhbUNlbnRlcjsKK2NsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50OwogY2xhc3Mg
V2ViTWVzc2FnZVBvcnRDaGFubmVsOyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0
Zm9ybT8KIGNsYXNzIFdlYk1pbWVSZWdpc3RyeTsKIGNsYXNzIFdlYlBlZXJDb25uZWN0aW9uSGFu
ZGxlcjsKQEAgLTMzMyw2ICszMzUsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNYXkgcmV0dXJuIG51
bGwgaWYgV2ViUlRDIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGF2YWxpYWJsZSBvciBvdXQgb2YgcmVz
b3VyY2VzLgogICAgIHZpcnR1YWwgV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBjcmVhdGVQZWVy
Q29ubmVjdGlvbkhhbmRsZXIoV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KikgeyByZXR1
cm4gMDsgfQorICAgIHZpcnR1YWwgV2ViTWVkaWFTdHJlYW1DZW50ZXIqIG1lZGlhU3RyZWFtQ2Vu
dGVyKFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50KikgeyByZXR1cm4gMDsgfQogCiBwcm90ZWN0
ZWQ6CiAgICAgfldlYktpdFBsYXRmb3JtU3VwcG9ydCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXIuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2Vu
dGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjVjZmUzNGVhNGRhMTNiMjM1ZTE1MTkyOTViYjBlNDI4NTViNWUz
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTWVk
aWFTdHJlYW1DZW50ZXJfaAorI2RlZmluZSBXZWJNZWRpYVN0cmVhbUNlbnRlcl9oCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I7CitjbGFzcyBX
ZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDsKKworY2xhc3MgV2ViTWVkaWFTdHJlYW1D
ZW50ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYk1lZGlhU3RyZWFtQ2VudGVyKCkgeyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgcXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoY29uc3QgV2ViTWVk
aWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFNl
dE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYs
IHNpemVfdCB0cmFja0luZGV4KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFN0b3BMb2NhbE1l
ZGlhU3RyZWFtKGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpID0gMDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViTWVkaWFTdHJlYW1DZW50ZXJfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVk
aWFTdHJlYW1DZW50ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDk4ZDNkNTBi
NTI4YTRjODgyYWJkZjM4YmY5OGE4Y2U5NTRhZjg4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyQ2xp
ZW50LmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnRf
aAorI2RlZmluZSBXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I7CisKK2NsYXNzIFdlYk1lZGlh
U3RyZWFtQ2VudGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJNZWRpYVN0cmVh
bUNlbnRlckNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGVuZExvY2FsTWVkaWFTdHJl
YW0oY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJikgPSAwOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCmluZGV4IDUyYzYzZDMyMWE4YmEyMTc5NWZl
NDhiM2I2MWY3NWQyYjdmYzcwZjIuLjQ3YWQzMTc2NGE0Y2JlZjc1ZjFiMjVjZjhhZmM4MmNjN2M0
NDM4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCkBAIC01Miw2ICs1Miw3
IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc291cmNlcyhXZWJWZWN0b3I8V2Vi
TWVkaWFTdHJlYW1Tb3VyY2U+JikgY29uc3Q7CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
KyAgICBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IoV2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNjcmlw
dG9yKik7CiAgICAgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I+Jik7CiAgICAgb3BlcmF0b3IgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcj4oKSBjb25zdDsKICAgICBv
cGVyYXRvciBXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3IqKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVh
bVNvdXJjZXNRdWVyeUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWQ2
ZDZiNzdjZjY1MThmYTU5MmQzNjc0M2ZlZThiMTMxODc3ZmY4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2VzUXVlcnlDbGllbnQuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVN0cmVhbVNv
dXJjZXNRdWVyeUNsaWVudF9oCisjZGVmaW5lIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xp
ZW50X2gKKworI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlByaXZhdGVQdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTWVkaWFT
dHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXZWJNZWRpYVN0cmVhbVNvdXJjZTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWJW
ZWN0b3I7CisKK2NsYXNzIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50IHsKK3B1Ymxp
YzoKKyAgICBXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudCgpIHsgfQorICAgIH5XZWJN
ZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudCgpIHsgcmVzZXQoKTsgfQorCisgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBt
X3ByaXZhdGUuaXNOdWxsKCk7IH0KKworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBhdWRpbygpIGNv
bnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCB2aWRlbygpIGNvbnN0OworCisgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIG1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGNvbnN0IFdlYlZl
Y3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgorICAgIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50KGNvbnN0IFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4mKTsKKyNlbmRpZgor
Citwcml2YXRlOgorICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2Vz
UXVlcnlDbGllbnQ+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAK
aW5kZXggNjkzMGYxYzQ1MGNhM2FlY2UyY2FiZDAxYTk4MDA4N2ZiNWFmZmQzZS4uNDE5MmZhYmVj
ODA2NWEzOGJhZWQ4NTc3MDQ3NDA5OTA0MWU4ODBmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCkBAIC01MCw2
ICs1MCwxMSBAQCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I6OldlYk1lZGlhU3RyZWFtRGVzY3Jp
cHRvcihjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZAogewogfQogCitXZWJNZWRpYVN0cmVh
bURlc2NyaXB0b3I6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcihXZWJDb3JlOjpNZWRpYVN0cmVh
bURlc2NyaXB0b3IqIG1lZGlhU3RyZWFtRGVzY3JpcHRvcikKKyAgICA6IG1fcHJpdmF0ZShtZWRp
YVN0cmVhbURlc2NyaXB0b3IpCit7Cit9CisKIHZvaWQgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9y
OjpyZXNldCgpCiB7CiAgICAgbV9wcml2YXRlLnJlc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNs
aWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUwNDc1ZjM1OTg5MzA4YWVlNDc5ZGI4MWZmYzkyOTVmMjdh
MWYwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1l
ZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmNwcApAQCAtMCwwICsxLDg2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgInBsYXRm
b3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmgiCisKKyNpbmNsdWRlICJNZWRp
YVN0cmVhbUNlbnRlci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVk
ZSAiV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ6OldlYk1lZGlh
U3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFT
dHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+JiBxdWVyeUNsaWVudCkKKyAgICA6IG1fcHJpdmF0ZShx
dWVyeUNsaWVudCkKK3sKK30KKwordm9pZCBXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVu
dDo6cmVzZXQoKQoreworICAgIG1fcHJpdmF0ZS5yZXNldCgpOworfQorCitib29sIFdlYk1lZGlh
U3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OjphdWRpbygpIGNvbnN0Cit7CisgICAgaWYgKCFpc051
bGwoKSkKKyAgICAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YXVkaW8oKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ6OnZpZGVvKCkg
Y29uc3QKK3sKKyAgICBpZiAoIWlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbV9wcml2YXRlLT52
aWRlbygpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJNZWRpYVN0cmVhbVNvdXJj
ZXNRdWVyeUNsaWVudDo6bWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQoY29uc3QgV2Vi
VmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgc291cmNlcykKK3sKKyAgICBpZiAoIWlzTnVs
bCgpKSB7CisgICAgICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHM7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc291cmNlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgTWVk
aWFTdHJlYW1Tb3VyY2UqIGN1cnIgPSBzb3VyY2VzW2ldOworICAgICAgICAgICAgcy5hcHBlbmQo
Y3Vycik7CisgICAgICAgIH0KKyAgICAgICAgbV9wcml2YXRlLT5tZWRpYVN0cmVhbVNvdXJjZXNR
dWVyeUNvbXBsZXRlZChzKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117189</attachid>
            <date>2011-11-30 07:15:57 -0800</date>
            <delta_ts>2011-12-06 06:04:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73130-20111130161555.patch</filename>
            <type>text/plain</type>
            <size>31059</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDViNDQ1ZDY3MWY0MDk5
MDBkOThlMzAzYzFjYmQ2NWQzMDUwNzE1Ni4uMTJkNTNlZjJmNThjMWJmZDI5YTMxYjNlMjE5NmE1
MWYzNWYzZTE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTExLTI4ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogQ2hhbmdpbmcgdGhlIGludGl0aWFsIGR1bW15IE1lZGlhU3RyZWFtQ2VudGVyIHRvIHN1
cHBvcnQgdGhlIENocm9taXVtIGVtYmVkZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3IgdGhlIE1lZGlhIFN0cmVhbSBBUEkgd2lsbCBi
ZSBwcm92aWRlZCBieSB0aGUgYnVnIDU2NTg3LCBwZW5kaW5nIGVub3VnaCBsYW5kZWQgY29kZS4K
KyAgICAgICAgV2ViTWVkaWFTdHJlYW1DZW50ZXIKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oOgorCiAyMDExLTExLTI4ICBWc2V2b2xvZCBWbGFzb3Yg
IDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFRyZWVPdXRs
aW5lIGVsZW1lbnRzIHNob3VsZCBiZSBmb3JtYXR0ZWQgdXNpbmcgbWFyZ2luLWxlZnQgaW5zdGVh
ZCBvZiB0ZXh0LWluZGVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDQwNTlmYjU3
ZThmZmZlYjU3Nzk2NDFjOTE4Y2MyZTIzMGVmYjI5Ni4uYWYzY2MwODI4ZDA1NmQ4MmY5MmJiOWI4
YmM2NjcwMjE2MjQ0MGU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
NCBAQAorMjAxMS0xMS0yOCAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4K
KworICAgICAgICBbY2hyb21pdW1dIE1lZGlhU3RyZWFtIEFQSTogQWRkaW5nIHRoZSBlbWJlZGRp
bmcgY29kZSBmb3IgTWVkaWFTdHJlYW1DZW50ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIGJyaWRnZS9NZWRp
YVN0cmVhbUNlbnRlci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtQ2VudGVyOjpNZWRpYVN0cmVhbUNlbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbUNlbnRlcjo6fk1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3Ry
ZWFtKToKKyAgICAgICAgKiBicmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3Jp
cHRvci5jcHAuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpN
ZWRpYVN0cmVhbUNlbnRlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
Q2VudGVySW50ZXJuYWw6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OmRpZFN0
b3BMb2NhbE1lZGlhU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVy
SW50ZXJuYWw6OmVuZExvY2FsTWVkaWFTdHJlYW0pOgorICAgICAgICAqIGJyaWRnZS9NZWRpYVN0
cmVhbUNlbnRlckludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9X
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0UGxhdGZvcm1T
dXBwb3J0OjptZWRpYVN0cmVhbUNlbnRlcik6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dl
Yk1lZGlhU3RyZWFtQ2VudGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0
cmVhbUNlbnRlcjo6fldlYk1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAgICAgKiBwdWJsaWMvcGxh
dGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50Ojp+V2ViTWVkaWFTdHJlYW1DZW50ZXJDbGll
bnQpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3Iu
aDoKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlD
bGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1F1
ZXJ5Q2xpZW50OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50Ojp+V2ViTWVkaWFTdHJlYW1T
b3VyY2VzUXVlcnlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJj
ZXNRdWVyeUNsaWVudDo6aXNOdWxsKToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFTdHJlYW1EZXNj
cmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpX
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVN0cmVhbVNv
dXJjZXNRdWVyeUNsaWVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAuCisgICAgICAgIChXZWJLaXQ6OldlYk1l
ZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50
OjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xp
ZW50OjphdWRpbyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5
Q2xpZW50Ojp2aWRlbyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1F1
ZXJ5Q2xpZW50OjptZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNvbXBsZXRlZCk6CisKIDIwMTEtMTEt
MzAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IGdldCByaWQgb2YgZGVmZXJyZWQgYmFja2VuZC0+ZnJvbnQtZW5kIGNvbW1hbmRz
IHByb2Nlc3NpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKaW5kZXggYTQ4NGEyYmMyMDdjOWY3MjcxN2Fm
ZTA1NDFmMDA4ZWYxN2NjM2FhZC4uZTFmOGNhNmQ5MDdmMDQ0ODc0MWNkNGY0OTRmYzk2MjNmZjMz
MDI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcApAQCAtNTUsOCArNTUsMTAgQEAgdm9pZCBNZWRpYVN0
cmVhbUNlbnRlcjo6ZW5kTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0
cmVhbURlc2NyaXAKICAgICAgICAgc3RyZWFtRGVzY3JpcHRvci0+c2V0RW5kZWQoKTsKIH0KIAot
Ly8gRklYTUU6IHJlbW92ZSB3aGVuIHJlYWwgaW1wbGVtZW50YXRpb25zIGFyZSBhdmFpbGFibGUK
LS8vIEVtcHR5IGltcGxlbWVudGF0aW9ucyBmb3IgcG9ydHMgdGhhdCBidWlsZCB3aXRoIE1FRElB
X1NUUkVBTSBlbmFibGVkIGJ5IGRlZmF1bHQuCisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQorCisv
LyBFbXB0eSBpbXBsZW1lbnRhdGlvbnMgZm9yIHBvcnRzIHRoYXQgYnVpbGQgd2l0aCBNRURJQV9T
VFJFQU0gZW5hYmxlZCBieSBkZWZhdWx0LCBidXQgaGF2ZW4ndCB5ZXQgaW1wbGVtZW50ZWQgTWVk
aWFTdHJlYW1DZW50ZXIuCisKIE1lZGlhU3RyZWFtQ2VudGVyOjpNZWRpYVN0cmVhbUNlbnRlcigp
CiB7CiB9CkBAIC03MSw3ICs3Myw3IEBAIHZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OnF1ZXJ5TWVk
aWFTdHJlYW1Tb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VzUXVlCiAgICAgY2xp
ZW50LT5tZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNvbXBsZXRlZChzb3VyY2VzKTsKIH0KIAotdm9p
ZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFT
dHJlYW1EZXNjcmlwdG9yKiwgdW5zaWduZWQpCit2b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjpkaWRT
ZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbURlc2NyaXB0b3IqLCBzaXplX3Qp
CiB7CiB9CiAKQEAgLTc5LDYgKzgxLDggQEAgdm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU3Rv
cExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikKIHsKIH0KIAorI2VuZGlm
IC8vICFQTEFURk9STShDSFJPTUlVTSkKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oCmluZGV4IDhlZmM4YjMyZjQ0
MGMyMDUyM2RmOTY5MGY2YjNjYTAxZDYzZWM4NTIuLmZmYzU0MTY5NDU0YWU5YjU4MzRkYWNlMTEz
Mzc2Zjc5M2FiMDVjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaApAQCAtMzgsNiArMzgsMTAgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCitjbGFzcyBNZWRpYVN0
cmVhbUNlbnRlckludGVybmFsOworI2VuZGlmCisKIGNsYXNzIE1lZGlhU3RyZWFtRGVzY3JpcHRv
cjsKIAogY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQgOiBwdWJsaWMgUmVmQ291
bnRlZDxNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4gewpAQCAtNjMsNyArNjcsNyBAQCBw
dWJsaWM6CiAgICAgLy8gRklYTUU6IGFkZCBhIHdheSB0byBtdXRlIGEgTWVkaWFTdHJlYW1Tb3Vy
Y2UgZnJvbSB0aGUgV2ViS2l0IEFQSSBsYXllcgogCiAgICAgLy8gQ2FsbHMgZnJvbSB0aGUgRE9N
IG9iamVjdHMgdG8gbm90aWZ5IHRoZSBwbGF0Zm9ybQotICAgIHZvaWQgZGlkU2V0TWVkaWFTdHJl
YW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiwgdW5zaWduZWQgY29tcG9uZW50
SW5kZXgpOworICAgIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJl
YW1EZXNjcmlwdG9yKiwgc2l6ZV90IHRyYWNrSW5kZXgpOwogICAgIHZvaWQgZGlkU3RvcExvY2Fs
TWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7CiAKICAgICAvLyBDYWxscyBmcm9t
IHRoZSBwbGF0Zm9ybSB0byB1cGRhdGUgdGhlIERPTSBvYmplY3RzCkBAIC03MSw2ICs3NSwxMCBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTWVkaWFTdHJlYW1DZW50ZXIoKTsKKworI2lmIFBM
QVRGT1JNKENIUk9NSVVNKQorICAgIE93blB0cjxNZWRpYVN0cmVhbUNlbnRlckludGVybmFsPiBt
X3ByaXZhdGU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cAppbmRleCA0ZTJhNzYwYWU1MTZhNTFmNTIwNDZhY2UyNmE4MjgzY2M3
Y2EzZmZiLi5kMjdlMjE0Yjk3YWJjYjkyYjA1MzlmN2NiODU2YzM1OTY0NzJjYjZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC05Miw2ICs5Miw5IEBACiAgICAgICAgICAgICAgICAg
J1dFQktJVF9JTVBMRU1FTlRBVElPTj0xJywKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAn
c291cmNlcyc6IFsKKyAgICAgICAgICAgICAgICAnYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVyLmNw
cCcsCisgICAgICAgICAgICAgICAgJ2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmNw
cCcsCisgICAgICAgICAgICAgICAgJ2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmgn
LAogICAgICAgICAgICAgICAgICdicmlkZ2UvUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ2JyaWRnZS9QZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbC5jcHAn
LAogICAgICAgICAgICAgICAgICdicmlkZ2UvUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWwu
aCcsCkBAIC0xMDksNiArMTEyLDggQEAKICAgICAgICAgICAgICAgICAncHVibGljL21hYy9XZWJT
Y3JlZW5JbmZvRmFjdG9yeS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL21hYy9XZWJTdWJz
dHJpbmdVdGlsLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvbWFjL1dlYlRoZW1lRW5naW5l
LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2VzUXVlcnlDbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJN
ZWRpYVN0cmVhbUNlbnRlci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkFjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQWNjZXNzaWJpbGl0
eVJvbGUuaCcsCkBAIC01NzgsNiArNTgzLDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYk1l
ZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFT
dHJlYW1SZWdpc3RyeS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFTdHJlYW1T
b3VyY2UuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1F1
ZXJ5Q2xpZW50LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOYW1lZE5vZGVNYXAuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJOb2RlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWUwYzFm
NTJiYzhiMjZkNjJiZTA0YzFkNjIwMzE4NDRiNzEyOTcwOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVyLmNwcApAQCAtMCww
ICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCisKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bUNlbnRlckludGVybmFsLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRp
YVN0cmVhbUNlbnRlcjo6TWVkaWFTdHJlYW1DZW50ZXIoKQorICAgIDogbV9wcml2YXRlKGFkb3B0
UHRyKG5ldyBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsKHRoaXMpKSkKK3sKK30KKworTWVkaWFT
dHJlYW1DZW50ZXI6On5NZWRpYVN0cmVhbUNlbnRlcigpCit7Cit9CisKK3ZvaWQgTWVkaWFTdHJl
YW1DZW50ZXI6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1T
b3VyY2VzUXVlcnlDbGllbnQ+IGNsaWVudCkKK3sKKyAgICBtX3ByaXZhdGUtPnF1ZXJ5TWVkaWFT
dHJlYW1Tb3VyY2VzKGNsaWVudCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFNl
dE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtLCBz
aXplX3QgdHJhY2tJbmRleCkKK3sKKyAgICBtX3ByaXZhdGUtPmRpZFNldE1lZGlhU3RyZWFtVHJh
Y2tFbmFibGVkKHN0cmVhbSwgdHJhY2tJbmRleCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50
ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFt
KQoreworICAgIG1fcHJpdmF0ZS0+ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oc3RyZWFtKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL01lZGlhU3RyZWFt
Q2VudGVySW50ZXJuYWwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFT
dHJlYW1DZW50ZXJJbnRlcm5hbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRiOGI1M2ZkNDUzMTBhNDFlY2I2
ODY3ZWVmNDFhNmFlODg4ZjgwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuY3BwCkBAIC0wLDAgKzEsNzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oIgorCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW1DZW50ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgIldl
YktpdC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgorI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgiCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVk
aWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitN
ZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsKE1lZGlh
U3RyZWFtQ2VudGVyKiBvd25lcikKKyAgICA6IG1fcHJpdmF0ZShXZWJLaXQ6OndlYktpdFBsYXRm
b3JtU3VwcG9ydCgpLT5tZWRpYVN0cmVhbUNlbnRlcih0aGlzKSkKKyAgICAsIG1fb3duZXIob3du
ZXIpCit7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6cXVlcnlNZWRpYVN0
cmVhbVNvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4gY2xp
ZW50KQoreworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyAic2hvcnQtY2lyY3VpdCIgYW5kIGZv
cndhcmQgdG8gbV9wcml2YXRlIHdoZW4gQ2hyb21lIGhhcyBpbXBsZW1lbnRlZCBXZWJNZWRpYVN0
cmVhbUNlbnRlci4KKyAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBzb3VyY2VzOworICAgIGNs
aWVudC0+bWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQoc291cmNlcyk7Cit9CisKK3Zv
aWQgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJs
ZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0sIHNpemVfdCB0cmFja0luZGV4KQorewor
ICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+ZGlkU2V0TWVkaWFTdHJlYW1U
cmFja0VuYWJsZWQoc3RyZWFtLCB0cmFja0luZGV4KTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNl
bnRlckludGVybmFsOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0
b3IqIHN0cmVhbSkKK3sKKyAgICBpZiAobV9wcml2YXRlKQorICAgICAgICBtX3ByaXZhdGUtPmRp
ZFN0b3BMb2NhbE1lZGlhU3RyZWFtKHN0cmVhbSk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50
ZXJJbnRlcm5hbDo6ZW5kTG9jYWxNZWRpYVN0cmVhbShjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciYgc3RyZWFtKQoreworICAgIG1fb3duZXItPmVuZExvY2FsTWVkaWFTdHJl
YW0oc3RyZWFtKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJp
ZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
YnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDhhNGMzMjEx
ZTZmYThiZWJlZWM5OGJhY2I0ZTI4ZDhjMzQ4ODQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oCkBAIC0w
LDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIE1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWxfaAorI2RlZmluZSBN
ZWRpYVN0cmVhbUNlbnRlckludGVybmFsX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
KyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudC5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViTWVk
aWFTdHJlYW1DZW50ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFT
dHJlYW1DZW50ZXI7CitjbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3I7CitjbGFzcyBNZWRpYVN0
cmVhbVNvdXJjZXNRdWVyeUNsaWVudDsKKworY2xhc3MgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5h
bCA6IHB1YmxpYyBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsKE1lZGlhU3RyZWFtQ2VudGVyKik7CisKKyAg
ICB2b2lkIHF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3Vy
Y2VzUXVlcnlDbGllbnQ+KTsKKyAgICB2b2lkIGRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVk
KE1lZGlhU3RyZWFtRGVzY3JpcHRvciosIHNpemVfdCB0cmFja0luZGV4KTsKKyAgICB2b2lkIGRp
ZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopOworCisgICAgLy8g
RnJvbSBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50LgorICAgIHZpcnR1YWwgdm9p
ZCBlbmRMb2NhbE1lZGlhU3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNjcmlw
dG9yJik7CisKK3ByaXZhdGU6CisgICAgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRlciogbV9w
cml2YXRlOworICAgIE1lZGlhU3RyZWFtQ2VudGVyKiBtX293bmVyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlm
IC8vIE1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQu
aAppbmRleCA2YzBlNzRmMTI5NzJjN2YzNzQ2MzQwYWZmNjliMzEyZGMyNWNhMWU5Li4wZDhhZTJi
MTJiNzA2YzFiN2UzYjY5YjNiMGViM2JiOGExYTE1Mjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1
cHBvcnQuaApAQCAtNjAsNiArNjAsOCBAQCBjbGFzcyBXZWJGaWxlVXRpbGl0aWVzOwogY2xhc3Mg
V2ViR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBXZWJJREJGYWN0b3J5OyAvLyBGSVhNRTogRG9l
cyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdlYklEQktleTsgLy8gRklYTUU6IERv
ZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/CitjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlcjsK
K2NsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50OwogY2xhc3MgV2ViTWVzc2FnZVBvcnRD
aGFubmVsOyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdl
Yk1pbWVSZWdpc3RyeTsKIGNsYXNzIFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlcjsKQEAgLTMzNCw2
ICszMzYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNYXkgcmV0dXJuIG51bGwgaWYgV2ViUlRDIGZ1
bmN0aW9uYWxpdHkgaXMgbm90IGF2YWxpYWJsZSBvciBvdXQgb2YgcmVzb3VyY2VzLgogICAgIHZp
cnR1YWwgV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBjcmVhdGVQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIoV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KikgeyByZXR1cm4gMDsgfQorICAgIHZp
cnR1YWwgV2ViTWVkaWFTdHJlYW1DZW50ZXIqIG1lZGlhU3RyZWFtQ2VudGVyKFdlYk1lZGlhU3Ry
ZWFtQ2VudGVyQ2xpZW50KikgeyByZXR1cm4gMDsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0
YXJ0V29ya2VyUnVuTG9vcChjb25zdCBXZWJXb3JrZXJSdW5Mb29wJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpZFN0b3BXb3JrZXJSdW5Mb29wKGNvbnN0IFdlYldvcmtlclJ1bkxvb3AmKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1l
ZGlhU3RyZWFtQ2VudGVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJNZWRpYVN0cmVhbUNlbnRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1Y2ZlMzRlYTRkYTEzYjIzNWUx
NTE5Mjk1YmIwZTQyODU1YjVlM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlci5oCkBAIC0wLDAgKzEs
NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYk1lZGlhU3RyZWFtQ2VudGVyX2gKKyNkZWZpbmUgV2ViTWVkaWFTdHJl
YW1DZW50ZXJfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yOworY2xhc3MgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ7CisKK2Ns
YXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJNZWRp
YVN0cmVhbUNlbnRlcigpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHF1ZXJ5TWVkaWFTdHJlYW1T
b3VyY2VzKGNvbnN0IFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50JikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChjb25zdCBXZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3ImLCBzaXplX3QgdHJhY2tJbmRleCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShjb25zdCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0
b3ImKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYk1l
ZGlhU3RyZWFtQ2VudGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA5OGQzZDUwYjUyOGE0Yzg4MmFiZGYzOGJmOThhOGNlOTU0YWY4ODUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJN
ZWRpYVN0cmVhbUNlbnRlckNsaWVudC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk1lZGlh
U3RyZWFtQ2VudGVyQ2xpZW50X2gKKyNkZWZpbmUgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnRf
aAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9y
OworCitjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+V2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBlbmRMb2NhbE1lZGlhU3RyZWFtKGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpID0g
MDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViTWVkaWFTdHJl
YW1DZW50ZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaAppbmRleCA1
MmM2M2QzMjFhOGJhMjE3OTVmZTQ4YjNiNjFmNzVkMmI3ZmM3MGYyLi40N2FkMzE3NjRhNGNiZWY3
NWYxYjI1Y2Y4YWZjODJjYzdjNDQzODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0
b3IuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNv
dXJjZXMoV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYpIGNvbnN0OwogCiAjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtRGVzY3JpcHRvciopOwogICAgIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcihj
b25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiYpOwog
ICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0
b3I+KCkgY29uc3Q7CiAgICAgb3BlcmF0b3IgV2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNjcmlwdG9y
KigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjFkNmQ2Yjc3Y2Y2NTE4ZmE1OTJkMzY3NDNmZWU4YjEzMTg3N2ZmOAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmgKQEAgLTAsMCArMSw2OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnRfaAorI2RlZmluZSBXZWJNZWRpYVN0
cmVhbVNvdXJjZXNRdWVyeUNsaWVudF9oCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24u
aCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTWVkaWFTdHJlYW1Tb3VyY2U7Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY2xhc3MgV2ViVmVjdG9yOworCitjbGFzcyBXZWJNZWRpYVN0cmVhbVNvdXJjZXNR
dWVyeUNsaWVudCB7CitwdWJsaWM6CisgICAgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGll
bnQoKSB7IH0KKyAgICB+V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQoKSB7IHJlc2V0
KCk7IH0KKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworICAgIGJvb2wgaXNOdWxs
KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOyB9CisKKyAgICBXRUJLSVRfRVhQ
T1JUIGJvb2wgYXVkaW8oKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgdmlkZW8oKSBj
b25zdDsKKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBtZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNv
bXBsZXRlZChjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+Jik7CisKKyNpZiBX
RUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVu
dChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlD
bGllbnQ+Jik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6
Ok1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xp
ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0
cmVhbURlc2NyaXB0b3IuY3BwCmluZGV4IDY5MzBmMWM0NTBjYTNhZWNlMmNhYmQwMWE5ODAwODdm
YjVhZmZkM2UuLjQxOTJmYWJlYzgwNjVhMzhiYWVkODU3NzA0NzQwOTkwNDFlODgwZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRv
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNj
cmlwdG9yLmNwcApAQCAtNTAsNiArNTAsMTEgQEAgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpX
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpNZWQKIHsK
IH0KIAorV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3Io
V2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBtZWRpYVN0cmVhbURlc2NyaXB0b3IpCisg
ICAgOiBtX3ByaXZhdGUobWVkaWFTdHJlYW1EZXNjcmlwdG9yKQoreworfQorCiB2b2lkIFdlYk1l
ZGlhU3RyZWFtRGVzY3JpcHRvcjo6cmVzZXQoKQogewogICAgIG1fcHJpdmF0ZS5yZXNldCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2VzUXVlcnlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFT
dHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1MDQ3NWYzNTk4OTMwOGFl
ZTQ3OWRiODFmZmM5Mjk1ZjI3YTFmMGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5jcHAKQEAgLTAs
MCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5o
IgorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bVNvdXJjZS5oIgorI2luY2x1ZGUgIldlYk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAi
V2ViVmVjdG9yLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYk1lZGlhU3RyZWFtU291cmNlc1F1
ZXJ5Q2xpZW50OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudChjb25zdCBQYXNzUmVm
UHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiYgcXVlcnlDbGllbnQp
CisgICAgOiBtX3ByaXZhdGUocXVlcnlDbGllbnQpCit7Cit9CisKK3ZvaWQgV2ViTWVkaWFTdHJl
YW1Tb3VyY2VzUXVlcnlDbGllbnQ6OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQoKTsK
K30KKworYm9vbCBXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6YXVkaW8oKSBjb25z
dAoreworICAgIGlmICghaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBtX3ByaXZhdGUtPmF1ZGlv
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1
ZXJ5Q2xpZW50Ojp2aWRlbygpIGNvbnN0Cit7CisgICAgaWYgKCFpc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+dmlkZW8oKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQg
V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ6Om1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5
Q29tcGxldGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHNvdXJjZXMp
Cit7CisgICAgaWYgKCFpc051bGwoKSkgeworICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3Rv
ciBzOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNvdXJjZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgIE1lZGlhU3RyZWFtU291cmNlKiBjdXJyID0gc291cmNlc1tpXTsKKyAg
ICAgICAgICAgIHMuYXBwZW5kKGN1cnIpOworICAgICAgICB9CisgICAgICAgIG1fcHJpdmF0ZS0+
bWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQocyk7CisgICAgfQorfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118036</attachid>
            <date>2011-12-06 06:04:41 -0800</date>
            <delta_ts>2012-01-13 05:28:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73130-20111206150439.patch</filename>
            <type>text/plain</type>
            <size>30805</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjYzMGZjMWRjODg4MmFh
MzYzMjQ5NGMzNGI5NjNlMzg5MGI3MzAyNC4uMTAyNGVhNmRmY2YxNmQ5ZmNhY2UyOTI2ZGNkNGYz
MWZlMTBkZTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTExLTI4ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogQ2hhbmdpbmcgdGhlIGludGl0aWFsIGR1bW15IE1lZGlhU3RyZWFtQ2VudGVyIHRvIHN1
cHBvcnQgdGhlIENocm9taXVtIGVtYmVkZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3IgdGhlIE1lZGlhIFN0cmVhbSBBUEkgd2lsbCBi
ZSBwcm92aWRlZCBieSB0aGUgYnVnIDU2NTg3LCBwZW5kaW5nIGVub3VnaCBsYW5kZWQgY29kZS4K
KyAgICAgICAgV2ViTWVkaWFTdHJlYW1DZW50ZXIKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oOgorCiAyMDExLTEyLTA2ICBCZW5qYW1pbiBQb3VsYWlu
ICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBTaW1wbGlmeSBLVVJMJ3MgY2hlY2tF
bmNvZGVkU3RyaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjRmNDc4MzQ5Mzhk
MWY3MzY5MGVhMDMyYzBhMzA1NTI0NGE3MWY2Ny4uN2NkMGVjZDdjY2JlMTBmMjczZTUyOGEzZjNm
MTUyZTg0MGE1NTBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBA
QAorMjAxMS0xMS0yOCAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBbY2hyb21pdW1dIE1lZGlhU3RyZWFtIEFQSTogQWRkaW5nIHRoZSBlbWJlZGRpbmcg
Y29kZSBmb3IgTWVkaWFTdHJlYW1DZW50ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTczMTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIGJyaWRnZS9NZWRpYVN0
cmVhbUNlbnRlci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQ2VudGVyOjpNZWRpYVN0cmVhbUNlbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUNlbnRlcjo6fk1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFt
KToKKyAgICAgICAgKiBicmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRv
ci5jcHAuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpNZWRp
YVN0cmVhbUNlbnRlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2Vu
dGVySW50ZXJuYWw6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OmRpZFN0b3BM
b2NhbE1lZGlhU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVySW50
ZXJuYWw6OmVuZExvY2FsTWVkaWFTdHJlYW0pOgorICAgICAgICAqIGJyaWRnZS9NZWRpYVN0cmVh
bUNlbnRlckludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJL
aXRQbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0UGxhdGZvcm1TdXBw
b3J0OjptZWRpYVN0cmVhbUNlbnRlcik6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYk1l
ZGlhU3RyZWFtQ2VudGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVh
bUNlbnRlcjo6fldlYk1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZv
cm0vV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50Ojp+V2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQp
OgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaDoK
KyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGll
bnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5
Q2xpZW50OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50Ojp+V2ViTWVkaWFTdHJlYW1Tb3Vy
Y2VzUXVlcnlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNR
dWVyeUNsaWVudDo6aXNOdWxsKToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlw
dG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpXZWJN
ZWRpYVN0cmVhbURlc2NyaXB0b3IpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVN0cmVhbVNvdXJj
ZXNRdWVyeUNsaWVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAuCisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlh
U3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50Ojpy
ZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50
OjphdWRpbyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xp
ZW50Ojp2aWRlbyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5
Q2xpZW50OjptZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNvbXBsZXRlZCk6CisKIDIwMTEtMTItMDYg
IFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCBjaHJvbWl1bSBleHBlY3RhdGlvbnMgdXBkYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwCmluZGV4
IGE0ODRhMmJjMjA3YzlmNzI3MTdhZmUwNTQxZjAwOGVmMTdjYzNhYWQuLmUxZjhjYTZkOTA3ZjA0
NDg3NDFjZDRmNDk0ZmM5NjIzZmYzMzAyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKQEAgLTU1LDgg
KzU1LDEwIEBAIHZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OmVuZExvY2FsTWVkaWFTdHJlYW0oTWVk
aWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW1EZXNjcmlwCiAgICAgICAgIHN0cmVhbURlc2NyaXB0
b3ItPnNldEVuZGVkKCk7CiB9CiAKLS8vIEZJWE1FOiByZW1vdmUgd2hlbiByZWFsIGltcGxlbWVu
dGF0aW9ucyBhcmUgYXZhaWxhYmxlCi0vLyBFbXB0eSBpbXBsZW1lbnRhdGlvbnMgZm9yIHBvcnRz
IHRoYXQgYnVpbGQgd2l0aCBNRURJQV9TVFJFQU0gZW5hYmxlZCBieSBkZWZhdWx0LgorI2lmICFQ
TEFURk9STShDSFJPTUlVTSkKKworLy8gRW1wdHkgaW1wbGVtZW50YXRpb25zIGZvciBwb3J0cyB0
aGF0IGJ1aWxkIHdpdGggTUVESUFfU1RSRUFNIGVuYWJsZWQgYnkgZGVmYXVsdCwgYnV0IGhhdmVu
J3QgeWV0IGltcGxlbWVudGVkIE1lZGlhU3RyZWFtQ2VudGVyLgorCiBNZWRpYVN0cmVhbUNlbnRl
cjo6TWVkaWFTdHJlYW1DZW50ZXIoKQogewogfQpAQCAtNzEsNyArNzMsNyBAQCB2b2lkIE1lZGlh
U3RyZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtU291cmNlc1F1ZQogICAgIGNsaWVudC0+bWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0
ZWQoc291cmNlcyk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFNldE1lZGlhU3Ry
ZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvciosIHVuc2lnbmVkKQordm9pZCBN
ZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJl
YW1EZXNjcmlwdG9yKiwgc2l6ZV90KQogewogfQogCkBAIC03OSw2ICs4MSw4IEBAIHZvaWQgTWVk
aWFTdHJlYW1DZW50ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3Jp
cHRvciopCiB7CiB9CiAKKyNlbmRpZiAvLyAhUExBVEZPUk0oQ0hST01JVU0pCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50
ZXIuaAppbmRleCA4ZWZjOGIzMmY0NDBjMjA1MjNkZjk2OTBmNmIzY2EwMWQ2M2VjODUyLi5mZmM1
NDE2OTQ1NGFlOWI1ODM0ZGFjZTExMzM3NmY3OTNhYjA1Y2E2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgKQEAg
LTM4LDYgKzM4LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFBMQVRGT1JNKENI
Uk9NSVVNKQorY2xhc3MgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDsKKyNlbmRpZgorCiBjbGFz
cyBNZWRpYVN0cmVhbURlc2NyaXB0b3I7CiAKIGNsYXNzIE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5
Q2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+
IHsKQEAgLTYzLDcgKzY3LDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBhZGQgYSB3YXkgdG8g
bXV0ZSBhIE1lZGlhU3RyZWFtU291cmNlIGZyb20gdGhlIFdlYktpdCBBUEkgbGF5ZXIKIAogICAg
IC8vIENhbGxzIGZyb20gdGhlIERPTSBvYmplY3RzIHRvIG5vdGlmeSB0aGUgcGxhdGZvcm0KLSAg
ICB2b2lkIGRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtRGVzY3JpcHRv
ciosIHVuc2lnbmVkIGNvbXBvbmVudEluZGV4KTsKKyAgICB2b2lkIGRpZFNldE1lZGlhU3RyZWFt
VHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvciosIHNpemVfdCB0cmFja0luZGV4KTsK
ICAgICB2b2lkIGRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciop
OwogCiAgICAgLy8gQ2FsbHMgZnJvbSB0aGUgcGxhdGZvcm0gdG8gdXBkYXRlIHRoZSBET00gb2Jq
ZWN0cwpAQCAtNzEsNiArNzUsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIE1lZGlhU3Ry
ZWFtQ2VudGVyKCk7CisKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBPd25QdHI8TWVkaWFT
dHJlYW1DZW50ZXJJbnRlcm5hbD4gbV9wcml2YXRlOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggN2UwYTI2MmY1NTU2
YjY4YmNjYTQ4YmQ2OTUxZTdmNzk4ZDUxODdmMC4uODNhMzZjYzU5ZWZhY2ZhYzExZTRkMTA2NDRk
NWI3NTUwNTMzODIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtOTIsOSArOTIs
MTQgQEAKICAgICAgICAgICAgICAgICAnV0VCS0lUX0lNUExFTUVOVEFUSU9OPTEnLAogICAgICAg
ICAgICAgXSwKICAgICAgICAgICAgICdzb3VyY2VzJzogWworICAgICAgICAgICAgICAgICdicmlk
Z2UvTWVkaWFTdHJlYW1DZW50ZXIuY3BwJywKKyAgICAgICAgICAgICAgICAnYnJpZGdlL01lZGlh
U3RyZWFtQ2VudGVySW50ZXJuYWwuY3BwJywKKyAgICAgICAgICAgICAgICAnYnJpZGdlL01lZGlh
U3RyZWFtQ2VudGVySW50ZXJuYWwuaCcsCiAgICAgICAgICAgICAgICAgJ2JyaWRnZS9QZWVyQ29u
bmVjdGlvbkhhbmRsZXIuY3BwJywKICAgICAgICAgICAgICAgICAnYnJpZGdlL1BlZXJDb25uZWN0
aW9uSGFuZGxlckludGVybmFsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ2JyaWRnZS9QZWVyQ29u
bmVjdGlvbkhhbmRsZXJJbnRlcm5hbC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL3BsYXRm
b3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmgnLAorICAgICAgICAgICAgICAg
ICdwdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXIuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYkFjY2Vzc2liaWxpdHlSb2xlLmgnLApAQCAtNjAzLDYgKzYwOCw3IEBACiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYk1lZGlhU3RyZWFtUmVnaXN0cnkuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYk1lZGlhU3RyZWFtU291cmNlLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViTmFtZWROb2RlTWFwLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOZXR3b3Jr
U3RhdGVOb3RpZmllci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTm9kZS5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVlMGMxZjUyYmM4YjI2ZDYyYmUwNGMxZDYyMDMxODQ0YjcxMjk3MDgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0
cmVhbUNlbnRlci5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgor
CisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oIgorI2luY2x1ZGUgIk1lZGlh
U3RyZWFtRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworTWVkaWFTdHJlYW1DZW50ZXI6Ok1lZGlhU3RyZWFtQ2VudGVyKCkK
KyAgICA6IG1fcHJpdmF0ZShhZG9wdFB0cihuZXcgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbCh0
aGlzKSkpCit7Cit9CisKK01lZGlhU3RyZWFtQ2VudGVyOjp+TWVkaWFTdHJlYW1DZW50ZXIoKQor
eworfQorCit2b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiBjbGllbnQpCit7CisgICAg
bV9wcml2YXRlLT5xdWVyeU1lZGlhU3RyZWFtU291cmNlcyhjbGllbnQpOworfQorCit2b2lkIE1l
ZGlhU3RyZWFtQ2VudGVyOjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVh
bURlc2NyaXB0b3IqIHN0cmVhbSwgc2l6ZV90IHRyYWNrSW5kZXgpCit7CisgICAgbV9wcml2YXRl
LT5kaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChzdHJlYW0sIHRyYWNrSW5kZXgpOworfQor
Cit2b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0
cmVhbURlc2NyaXB0b3IqIHN0cmVhbSkKK3sKKyAgICBtX3ByaXZhdGUtPmRpZFN0b3BMb2NhbE1l
ZGlhU3RyZWFtKHN0cmVhbSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFkYjhiNTNmZDQ1MzEwYTQxZWNiNjg2N2VlZjQxYTZhZTg4OGY4MDcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVy
bmFsLmNwcApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuaCIK
KworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1T
b3VyY2UuaCIKKyNpbmNsdWRlICJXZWJLaXQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQ
bGF0Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRl
ci5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgorI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6TWVkaWFTdHJl
YW1DZW50ZXJJbnRlcm5hbChNZWRpYVN0cmVhbUNlbnRlciogb3duZXIpCisgICAgOiBtX3ByaXZh
dGUoV2ViS2l0Ojp3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+bWVkaWFTdHJlYW1DZW50ZXIodGhp
cykpCisgICAgLCBtX293bmVyKG93bmVyKQoreworfQorCit2b2lkIE1lZGlhU3RyZWFtQ2VudGVy
SW50ZXJuYWw6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1T
b3VyY2VzUXVlcnlDbGllbnQ+IGNsaWVudCkKK3sKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
InNob3J0LWNpcmN1aXQiIGFuZCBmb3J3YXJkIHRvIG1fcHJpdmF0ZSB3aGVuIENocm9tZSBoYXMg
aW1wbGVtZW50ZWQgV2ViTWVkaWFTdHJlYW1DZW50ZXIuCisgICAgTWVkaWFTdHJlYW1Tb3VyY2VW
ZWN0b3Igc291cmNlczsKKyAgICBjbGllbnQtPm1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxl
dGVkKHNvdXJjZXMpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OmRpZFNl
dE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtLCBz
aXplX3QgdHJhY2tJbmRleCkKK3sKKyAgICBpZiAobV9wcml2YXRlKQorICAgICAgICBtX3ByaXZh
dGUtPmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKHN0cmVhbSwgdHJhY2tJbmRleCk7Cit9
CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6ZGlkU3RvcExvY2FsTWVkaWFTdHJl
YW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0pCit7CisgICAgaWYgKG1fcHJpdmF0ZSkK
KyAgICAgICAgbV9wcml2YXRlLT5kaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShzdHJlYW0pOworfQor
Cit2b2lkIE1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OmVuZExvY2FsTWVkaWFTdHJlYW0oY29u
c3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImIHN0cmVhbSkKK3sKKyAgICBtX293
bmVyLT5lbmRMb2NhbE1lZGlhU3RyZWFtKHN0cmVhbSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzQ4YTRjMzIxMWU2ZmE4YmViZWVjOThiYWNiNGUyOGQ4YzM0ODg0MwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL01lZGlhU3RyZWFt
Q2VudGVySW50ZXJuYWwuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVN0cmVhbUNlbnRl
ckludGVybmFsX2gKKyNkZWZpbmUgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbF9oCisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1D
ZW50ZXJDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKK2NsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyOworfQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIE1lZGlhU3RyZWFtQ2VudGVyOworY2xhc3MgTWVkaWFTdHJlYW1EZXNj
cmlwdG9yOworY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ7CisKK2NsYXNzIE1l
ZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwgOiBwdWJsaWMgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNl
bnRlckNsaWVudCB7CitwdWJsaWM6CisgICAgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbChNZWRp
YVN0cmVhbUNlbnRlciopOworCisgICAgdm9pZCBxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50Pik7CisgICAgdm9pZCBkaWRTZXRN
ZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbURlc2NyaXB0b3IqLCBzaXplX3QgdHJh
Y2tJbmRleCk7CisgICAgdm9pZCBkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURl
c2NyaXB0b3IqKTsKKworICAgIC8vIEZyb20gV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRlckNs
aWVudC4KKyAgICB2aXJ0dWFsIHZvaWQgZW5kTG9jYWxNZWRpYVN0cmVhbShjb25zdCBXZWJLaXQ6
OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpOworCitwcml2YXRlOgorICAgIFdlYktpdDo6V2Vi
TWVkaWFTdHJlYW1DZW50ZXIqIG1fcHJpdmF0ZTsKKyAgICBNZWRpYVN0cmVhbUNlbnRlciogbV9v
d25lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBs
YXRmb3JtU3VwcG9ydC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKaW5kZXggNmMwZTc0ZjEyOTcyYzdmMzc0NjM0MGFmZjY5
YjMxMmRjMjVjYTFlOS4uMGQ4YWUyYjEyYjcwNmMxYjdlM2I2OWIzYjBlYjNiYjhhMWExNTI3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0
UGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKQEAgLTYwLDYgKzYwLDggQEAgY2xhc3MgV2Vi
RmlsZVV0aWxpdGllczsKIGNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgV2ViSURC
RmFjdG9yeTsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/CiBjbGFzcyBX
ZWJJREJLZXk7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25nIGluIHBsYXRmb3JtPworY2xhc3Mg
V2ViTWVkaWFTdHJlYW1DZW50ZXI7CitjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudDsK
IGNsYXNzIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbDsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcg
aW4gcGxhdGZvcm0/CiBjbGFzcyBXZWJNaW1lUmVnaXN0cnk7CiBjbGFzcyBXZWJQZWVyQ29ubmVj
dGlvbkhhbmRsZXI7CkBAIC0zMzQsNiArMzM2LDcgQEAgcHVibGljOgogCiAgICAgLy8gTWF5IHJl
dHVybiBudWxsIGlmIFdlYlJUQyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBhdmFsaWFibGUgb3Igb3V0
IG9mIHJlc291cmNlcy4KICAgICB2aXJ0dWFsIFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlciogY3Jl
YXRlUGVlckNvbm5lY3Rpb25IYW5kbGVyKFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCop
IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFdlYk1lZGlhU3RyZWFtQ2VudGVyKiBtZWRpYVN0
cmVhbUNlbnRlcihXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudCopIHsgcmV0dXJuIDA7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFdvcmtlclJ1bkxvb3AoY29uc3QgV2ViV29ya2VyUnVu
TG9vcCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wV29ya2VyUnVuTG9vcChjb25zdCBX
ZWJXb3JrZXJSdW5Mb29wJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlci5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NWNmZTM0ZWE0ZGExM2IyMzVlMTUxOTI5NWJiMGU0Mjg1NWI1ZTNmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJl
YW1DZW50ZXIuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVN0cmVhbUNlbnRlcl9o
CisjZGVmaW5lIFdlYk1lZGlhU3RyZWFtQ2VudGVyX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKK2NsYXNzIFdlYk1lZGlhU3RyZWFtU291
cmNlc1F1ZXJ5Q2xpZW50OworCitjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlciB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+V2ViTWVkaWFTdHJlYW1DZW50ZXIoKSB7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhjb25zdCBXZWJNZWRpYVN0cmVhbVNvdXJjZXNR
dWVyeUNsaWVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFj
a0VuYWJsZWQoY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJiwgc2l6ZV90IHRyYWNrSW5k
ZXgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oY29uc3Qg
V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBXZWJNZWRpYVN0cmVhbUNlbnRlcl9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFT
dHJlYW1DZW50ZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOThkM2Q1MGI1MjhhNGM4ODJhYmRmMzhi
Zjk4YThjZTk1NGFmODg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQuaApAQCAtMCwwICsx
LDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudF9oCisjZGVmaW5lIFdlYk1l
ZGlhU3RyZWFtQ2VudGVyQ2xpZW50X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
Yk1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKKworY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGll
bnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50KCkg
eyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZW5kTG9jYWxNZWRpYVN0cmVhbShjb25zdCBXZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3ImKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRv
ci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJl
YW1EZXNjcmlwdG9yLmgKaW5kZXggNTJjNjNkMzIxYThiYTIxNzk1ZmU0OGIzYjYxZjc1ZDJiN2Zj
NzBmMi4uNDdhZDMxNzY0YTRjYmVmNzVmMWIyNWNmOGFmYzgyY2M3YzQ0Mzg0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzb3VyY2VzKFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJj
ZT4mKSBjb25zdDsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcihXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsKICAgICBXZWJN
ZWRpYVN0cmVhbURlc2NyaXB0b3IoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlh
U3RyZWFtRGVzY3JpcHRvcj4mKTsKICAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yPigpIGNvbnN0OwogICAgIG9wZXJhdG9yIFdlYkNvcmU6
Ok1lZGlhU3RyZWFtRGVzY3JpcHRvciooKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0
cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxZDZkNmI3N2NmNjUxOGZhNTky
ZDM2NzQzZmVlOGIxMzE4NzdmZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5o
CkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50
X2gKKyNkZWZpbmUgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnRfaAorCisjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZXNRdWVy
eUNsaWVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1lZGlhU3RyZWFt
U291cmNlOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYlZlY3RvcjsKKworY2xhc3Mg
V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQgeworcHVibGljOgorICAgIFdlYk1lZGlh
U3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50KCkgeyB9CisgICAgfldlYk1lZGlhU3RyZWFtU291cmNl
c1F1ZXJ5Q2xpZW50KCkgeyByZXNldCgpOyB9CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVz
ZXQoKTsKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwo
KTsgfQorCisgICAgV0VCS0lUX0VYUE9SVCBib29sIGF1ZGlvKCkgY29uc3Q7CisgICAgV0VCS0lU
X0VYUE9SVCBib29sIHZpZGVvKCkgY29uc3Q7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgbWVk
aWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQoY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3Ry
ZWFtU291cmNlPiYpOworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViTWVkaWFT
dHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiYpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAg
V2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4gbV9w
cml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJNZWRp
YVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAppbmRleCBjMDA5ZGE5MTNj
N2E4OGFkYmQ3MzhjMWMxZWZkM2IzOWU0MGI1NzFiLi5iMGExYzhlODRhNDRkZDFmN2IyYjM4NzBi
OGU1MmYxNDhkY2EyMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAKQEAgLTUwLDYgKzUwLDExIEBAIFdlYk1l
ZGlhU3RyZWFtRGVzY3JpcHRvcjo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFBhc3NS
ZWZQdHI8V2ViQ29yZTo6TWVkCiB7CiB9CiAKK1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6V2Vi
TWVkaWFTdHJlYW1EZXNjcmlwdG9yKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvciogbWVk
aWFTdHJlYW1EZXNjcmlwdG9yKQorICAgIDogbV9wcml2YXRlKG1lZGlhU3RyZWFtRGVzY3JpcHRv
cikKK3sKK30KKwogdm9pZCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnJlc2V0KCkKIHsKICAg
ICBtX3ByaXZhdGUucmVzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40NjBlMTdkMzMyOTE4ZDVkZTJlZmFiM2E3NTJmZmYzNTg1ZWY1NWZiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1Tb3VyY2Vz
UXVlcnlDbGllbnQuY3BwCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJl
YW1Tb3VyY2VzUXVlcnlDbGllbnQuaCIKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgi
CisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVN0cmVh
bVNvdXJjZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6V2ViTWVkaWFTdHJlYW1T
b3VyY2VzUXVlcnlDbGllbnQoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVNv
dXJjZXNRdWVyeUNsaWVudD4mIHF1ZXJ5Q2xpZW50KQorICAgIDogbV9wcml2YXRlKHF1ZXJ5Q2xp
ZW50KQoreworfQorCit2b2lkIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OjpyZXNl
dCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK2Jvb2wgV2ViTWVkaWFTdHJlYW1T
b3VyY2VzUXVlcnlDbGllbnQ6OmF1ZGlvKCkgY29uc3QKK3sKKyAgICBpZiAoIWlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gbV9wcml2YXRlLT5hdWRpbygpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6dmlkZW8oKSBjb25zdAor
eworICAgIGlmICghaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBtX3ByaXZhdGUtPnZpZGVvKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5
Q2xpZW50OjptZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNvbXBsZXRlZChjb25zdCBXZWJWZWN0b3I8
V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBzb3VyY2VzKQoreworICAgIGlmICghaXNOdWxsKCkpIHsK
KyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgczsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzb3VyY2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBNZWRpYVN0cmVh
bVNvdXJjZSogY3VyciA9IHNvdXJjZXNbaV07CisgICAgICAgICAgICBzLmFwcGVuZChjdXJyKTsK
KyAgICAgICAgfQorICAgICAgICBtX3ByaXZhdGUtPm1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29t
cGxldGVkKHMpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122415</attachid>
            <date>2012-01-13 05:28:10 -0800</date>
            <delta_ts>2012-01-13 05:48:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73130-20120113142807.patch</filename>
            <type>text/plain</type>
            <size>33386</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0ODA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjg0NDEzOGE2ZGViY2Uw
ZmRkYzMxZGQ1Y2FlZjM2MGNlY2RjZjJjNi4uZWE3NmFlNjE5YzUxMzBhNTljNjc3NDc2ZDNiZjQ5
NDU5ZDZiYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAxLTEzICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogQ2hhbmdpbmcgdGhlIGludGl0aWFsIGR1bW15IE1lZGlhU3RyZWFtQ2VudGVyIHRvIHN1
cHBvcnQgdGhlIENocm9taXVtIGVtYmVkZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3IgdGhlIE1lZGlhIFN0cmVhbSBBUEkgd2lsbCBi
ZSBwcm92aWRlZCBieSB0aGUgYnVnIDU2NTg3LCBwZW5kaW5nIGVub3VnaCBsYW5kZWQgY29kZS4K
KworICAgICAgICAqIG1lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6ZGlkQ29tcGxldGVRdWVyeSk6CisgICAgICAgICog
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1l
ZGlhUmVxdWVzdDo6YXVkaW8pOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6
dmlkZW8pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpkaWRTZXRNZWRpYVN0
cmVhbVRyYWNrRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1DZW50ZXIuaDoKKwogMjAxMi0wMS0xMCAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBtYWtlIHNvdXJjZSB1cmxz
IHJlbGF0aXZlIHRvIHNvdXJjZSBtYXAgdXJsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCA4MDc2NmZlZmYzYzhjZTcxY2FkM2YzNzZkMWEwNDk4MGU5YmFkNmQ0Li4yM2UxMDJiMDA3NTBk
YjEwYzY3ZjU1MzJkZTljNjAyN2Y4NDI0OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ0IEBACisyMDEyLTAxLTEzICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bn
b29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWVkaWFTdHJlYW0gQVBJOiBBZGRpbmcg
dGhlIGVtYmVkZGluZyBjb2RlIGZvciBNZWRpYVN0cmVhbUNlbnRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxMzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICog
YnJpZGdlL01lZGlhU3RyZWFtQ2VudGVyLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1DZW50ZXI6Ok1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjp+TWVkaWFTdHJlYW1DZW50ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXI6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNr
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU3RvcExv
Y2FsTWVkaWFTdHJlYW0pOgorICAgICAgICAqIGJyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVy
bmFsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlckludGVy
bmFsOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtQ2VudGVySW50ZXJuYWw6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OmRpZFNldE1lZGlhU3RyZWFtVHJh
Y2tFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6
OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
Q2VudGVySW50ZXJuYWw6OnN0b3BMb2NhbE1lZGlhU3RyZWFtKToKKyAgICAgICAgKiBicmlkZ2Uv
TWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvcGxh
dGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYktpdFBs
YXRmb3JtU3VwcG9ydDo6bWVkaWFTdHJlYW1DZW50ZXIpOgorICAgICAgICAqIHB1YmxpYy9wbGF0
Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
TWVkaWFTdHJlYW1DZW50ZXI6On5XZWJNZWRpYVN0cmVhbUNlbnRlcik6CisgICAgICAgICogcHVi
bGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudDo6fldlYk1lZGlhU3RyZWFtQ2Vu
dGVyQ2xpZW50KToKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNj
cmlwdG9yLmg6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNl
c1F1ZXJ5Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNv
dXJjZXNRdWVyeUNsaWVudDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6fldlYk1lZGlh
U3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJl
YW1Tb3VyY2VzUXVlcnlDbGllbnQ6OmlzTnVsbCk6CisgICAgICAgICogc3JjL1dlYk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3Jp
cHRvcjo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yKToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFT
dHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwLgorICAgICAgICAoV2ViS2l0
OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2Vz
UXVlcnlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVy
eUNsaWVudDo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNR
dWVyeUNsaWVudDo6YXVkaW8pOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJj
ZXNRdWVyeUNsaWVudDo6dmlkZW8pOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNv
dXJjZXNRdWVyeUNsaWVudDo6ZGlkQ29tcGxldGVRdWVyeSk6CisKIDIwMTItMDEtMTEgIFZzZXZv
bG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTWFrZSBkZWZhdWx0
IGNvbnNvbGUgbWVzc2FnZXMgbGluZSBudW1iZXJzIGNvbnNpc3RlbnQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IGJhNmMzYTRjMjQw
OGRiZGEzYzEwOWJiOWFmNmNiZWU5YTFlNzUzMzcuLjhiZWE0OTMyZjFhMDc3MDE4NmU3ZjhiMTQx
YmViNTgzOTAzMjZiNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1Vz
ZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6
c3RhcnQoKQogICAgIE1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgpLnF1ZXJ5TWVkaWFTdHJl
YW1Tb3VyY2VzKHRoaXMpOwogfQogCi12b2lkIFVzZXJNZWRpYVJlcXVlc3Q6Om1lZGlhU3RyZWFt
U291cmNlc1F1ZXJ5Q29tcGxldGVkKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3Vy
Y2VzKQordm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpkaWRDb21wbGV0ZVF1ZXJ5KGNvbnN0IE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzKQogewogICAgIGlmIChtX2NsaWVudCkKICAgICAg
ICAgbV9jbGllbnQtPnJlcXVlc3RVc2VyTWVkaWEodGhpcywgc291cmNlcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKaW5kZXggMmUyM2JhYzI5NDU4
Y2E5MTNiNmU3Y2JiZjFmNzQzNzI5ODhmYTVkOC4uMDA5MzQ0ZDA0YzVkOTdlMTJlZTM3MjQ2MTQ4
YjdlZTRhM2VlY2JlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRp
YVJlcXVlc3QuaApAQCAtNTEsOSArNTEsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8VXNlck1lZGlhUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVc2Vy
TWVkaWFDbGllbnQqLCBjb25zdCBTdHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9y
VXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFF
cnJvckNhbGxiYWNrPik7CiAgICAgflVzZXJNZWRpYVJlcXVlc3QoKTsKIAotICAgIGJvb2wgYXVk
aW8oKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvOyB9Ci0gICAgYm9vbCB2aWRlbygpIGNvbnN0IHsg
cmV0dXJuIG1fdmlkZW87IH0KLQogICAgIGJvb2wgY2FtZXJhUHJlZmVyZW5jZVVzZXIoKSBjb25z
dCB7IHJldHVybiBtX2NhbWVyYVByZWZlcmVuY2VVc2VyOyB9CiAgICAgYm9vbCBjYW1lcmFQcmVm
ZXJlbmNlRW52aXJvbm1lbnQoKSBjb25zdCB7IHJldHVybiBtX2NhbWVyYVByZWZlcmVuY2VFbnZp
cm9ubWVudDsgfQogCkBAIC02MSwxMSArNTgsMTUgQEAgcHVibGljOgogICAgIE5hdmlnYXRvclVz
ZXJNZWRpYUVycm9yQ2FsbGJhY2sqIGVycm9yQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2Vy
cm9yQ2FsbGJhY2suZ2V0KCk7IH0KIAogICAgIHZvaWQgc3RhcnQoKTsKLSAgICB2b2lkIG1lZGlh
U3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9y
Jik7CiAKICAgICB2b2lkIHN1Y2NlZWQoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsK
ICAgICB2b2lkIGZhaWwoKTsKIAorICAgIC8vIE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50
CisgICAgdmlydHVhbCBib29sIGF1ZGlvKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpbzsgfQorICAg
IHZpcnR1YWwgYm9vbCB2aWRlbygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW87IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29tcGxldGVRdWVyeShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYp
OworCiAgICAgLy8gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIKICAgICB2aXJ0dWFsIHZvaWQg
Y29udGV4dERlc3Ryb3llZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKaW5kZXggYTQ4NGEyYmMyMDdj
OWY3MjcxN2FmZTA1NDFmMDA4ZWYxN2NjM2FhZC4uZTFmOGNhNmQ5MDdmMDQ0ODc0MWNkNGY0OTRm
Yzk2MjNmZjMzMDI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcApAQCAtNTUsOCArNTUsMTAgQEAgdm9p
ZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZW5kTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2Ny
aXB0b3IqIHN0cmVhbURlc2NyaXAKICAgICAgICAgc3RyZWFtRGVzY3JpcHRvci0+c2V0RW5kZWQo
KTsKIH0KIAotLy8gRklYTUU6IHJlbW92ZSB3aGVuIHJlYWwgaW1wbGVtZW50YXRpb25zIGFyZSBh
dmFpbGFibGUKLS8vIEVtcHR5IGltcGxlbWVudGF0aW9ucyBmb3IgcG9ydHMgdGhhdCBidWlsZCB3
aXRoIE1FRElBX1NUUkVBTSBlbmFibGVkIGJ5IGRlZmF1bHQuCisjaWYgIVBMQVRGT1JNKENIUk9N
SVVNKQorCisvLyBFbXB0eSBpbXBsZW1lbnRhdGlvbnMgZm9yIHBvcnRzIHRoYXQgYnVpbGQgd2l0
aCBNRURJQV9TVFJFQU0gZW5hYmxlZCBieSBkZWZhdWx0LCBidXQgaGF2ZW4ndCB5ZXQgaW1wbGVt
ZW50ZWQgTWVkaWFTdHJlYW1DZW50ZXIuCisKIE1lZGlhU3RyZWFtQ2VudGVyOjpNZWRpYVN0cmVh
bUNlbnRlcigpCiB7CiB9CkBAIC03MSw3ICs3Myw3IEBAIHZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6
OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VzUXVl
CiAgICAgY2xpZW50LT5tZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNvbXBsZXRlZChzb3VyY2VzKTsK
IH0KIAotdm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJs
ZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiwgdW5zaWduZWQpCit2b2lkIE1lZGlhU3RyZWFtQ2Vu
dGVyOjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbURlc2NyaXB0b3Iq
LCBzaXplX3QpCiB7CiB9CiAKQEAgLTc5LDYgKzgxLDggQEAgdm9pZCBNZWRpYVN0cmVhbUNlbnRl
cjo6ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikKIHsKIH0K
IAorI2VuZGlmIC8vICFQTEFURk9STShDSFJPTUlVTSkKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oCmluZGV4IDhl
ZmM4YjMyZjQ0MGMyMDUyM2RmOTY5MGY2YjNjYTAxZDYzZWM4NTIuLjdiOGM3ODNkZWI4NDEwYmU4
YmRlY2MxYmRhZTU4OTAyNDk4ZDhhMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaApAQCAtMzgsNiArMzgsMTAg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCitjbGFz
cyBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOworI2VuZGlmCisKIGNsYXNzIE1lZGlhU3RyZWFt
RGVzY3JpcHRvcjsKIAogY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQgOiBwdWJs
aWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4gewpAQCAtNDcsNyAr
NTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGF1ZGlvKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCB2aWRlbygpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVN0cmVhbVNvdXJjZXNRdWVyeUNvbXBsZXRlZChjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3Rv
ciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVRdWVyeShjb25zdCBNZWRpYVN0
cmVhbVNvdXJjZVZlY3RvciYpID0gMDsKIH07CiAKIGNsYXNzIE1lZGlhU3RyZWFtQ2VudGVyIHsK
QEAgLTYzLDcgKzY3LDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBhZGQgYSB3YXkgdG8gbXV0
ZSBhIE1lZGlhU3RyZWFtU291cmNlIGZyb20gdGhlIFdlYktpdCBBUEkgbGF5ZXIKIAogICAgIC8v
IENhbGxzIGZyb20gdGhlIERPTSBvYmplY3RzIHRvIG5vdGlmeSB0aGUgcGxhdGZvcm0KLSAgICB2
b2lkIGRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvcios
IHVuc2lnbmVkIGNvbXBvbmVudEluZGV4KTsKKyAgICB2b2lkIGRpZFNldE1lZGlhU3RyZWFtVHJh
Y2tFbmFibGVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvciosIHNpemVfdCB0cmFja0luZGV4KTsKICAg
ICB2b2lkIGRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopOwog
CiAgICAgLy8gQ2FsbHMgZnJvbSB0aGUgcGxhdGZvcm0gdG8gdXBkYXRlIHRoZSBET00gb2JqZWN0
cwpAQCAtNzEsNiArNzUsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIE1lZGlhU3RyZWFt
Q2VudGVyKCk7CisKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBPd25QdHI8TWVkaWFTdHJl
YW1DZW50ZXJJbnRlcm5hbD4gbV9wcml2YXRlOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggMmU1OWY4YzFmNjYxNzUy
ZGFiOTI1ZDFkNjVmNjMwYTRjZmU0MmU4My4uYjA4ZDVlYWYyZmM1NGMwOTcxYTUwZmI1ODU3ZmNm
NDBhYmFhZDZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtOTAsOSArOTAsMTQg
QEAKICAgICAgICAgICAgICAgICAnV0VCS0lUX0lNUExFTUVOVEFUSU9OPTEnLAogICAgICAgICAg
ICAgXSwKICAgICAgICAgICAgICdzb3VyY2VzJzogWworICAgICAgICAgICAgICAgICdicmlkZ2Uv
TWVkaWFTdHJlYW1DZW50ZXIuY3BwJywKKyAgICAgICAgICAgICAgICAnYnJpZGdlL01lZGlhU3Ry
ZWFtQ2VudGVySW50ZXJuYWwuY3BwJywKKyAgICAgICAgICAgICAgICAnYnJpZGdlL01lZGlhU3Ry
ZWFtQ2VudGVySW50ZXJuYWwuaCcsCiAgICAgICAgICAgICAgICAgJ2JyaWRnZS9QZWVyQ29ubmVj
dGlvbkhhbmRsZXIuY3BwJywKICAgICAgICAgICAgICAgICAnYnJpZGdlL1BlZXJDb25uZWN0aW9u
SGFuZGxlckludGVybmFsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ2JyaWRnZS9QZWVyQ29ubmVj
dGlvbkhhbmRsZXJJbnRlcm5hbC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3Jt
L1dlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmgnLAorICAgICAgICAgICAgICAgICdw
dWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXIuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uLmgnLAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkFjY2Vzc2liaWxpdHlSb2xlLmgnLApAQCAtNTk0LDYgKzU5OSw3IEBACiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYk1lZGlhU3RyZWFtUmVnaXN0cnkuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYk1lZGlhU3RyZWFtU291cmNlLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJN
ZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViTmFtZWROb2RlTWFwLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOZXR3b3JrU3Rh
dGVOb3RpZmllci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTm9kZS5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmIwYjkzMTg2NTY2NzFjMzNkNzE5YTlkODQxOWNlYTY1NDg1MmY3ODMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVh
bUNlbnRlci5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgorCisj
aW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oIgorI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworTWVkaWFTdHJlYW1DZW50ZXI6Ok1lZGlhU3RyZWFtQ2VudGVyKCkKKyAg
ICA6IG1fcHJpdmF0ZShhZG9wdFB0cihuZXcgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbCh0aGlz
KSkpCit7Cit9CisKK01lZGlhU3RyZWFtQ2VudGVyOjp+TWVkaWFTdHJlYW1DZW50ZXIoKQorewor
fQorCit2b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiBjbGllbnQpCit7CisgICAgbV9w
cml2YXRlLT5xdWVyeU1lZGlhU3RyZWFtU291cmNlcyhjbGllbnQpOworfQorCit2b2lkIE1lZGlh
U3RyZWFtQ2VudGVyOjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbURl
c2NyaXB0b3IqIHN0cmVhbSwgc2l6ZV90IHRyYWNrSW5kZXgpCit7CisgICAgbV9wcml2YXRlLT5k
aWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChzdHJlYW0sIHRyYWNrSW5kZXgpOworfQorCit2
b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVh
bURlc2NyaXB0b3IqIHN0cmVhbSkKK3sKKyAgICBtX3ByaXZhdGUtPmRpZFN0b3BMb2NhbE1lZGlh
U3RyZWFtKHN0cmVhbSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJj
NjBiNGMwNzljYjQ5ZThhYzVkMDQ5NGQ5OTkxYzYxNDM0YTk0Y2QKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFs
LmNwcApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuaCIKKwor
I2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3Vy
Y2UuaCIKKyNpbmNsdWRlICJXZWJLaXQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0
Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlci5o
IgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgorI2luY2x1
ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6TWVkaWFTdHJlYW1D
ZW50ZXJJbnRlcm5hbChNZWRpYVN0cmVhbUNlbnRlciogb3duZXIpCisgICAgOiBtX3ByaXZhdGUo
V2ViS2l0Ojp3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+bWVkaWFTdHJlYW1DZW50ZXIodGhpcykp
CisgICAgLCBtX293bmVyKG93bmVyKQoreworfQorCit2b2lkIE1lZGlhU3RyZWFtQ2VudGVySW50
ZXJuYWw6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3Vy
Y2VzUXVlcnlDbGllbnQ+IGNsaWVudCkKK3sKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgInNo
b3J0LWNpcmN1aXQiIGFuZCBmb3J3YXJkIHRvIG1fcHJpdmF0ZSB3aGVuIENocm9tZSBoYXMgaW1w
bGVtZW50ZWQgV2ViTWVkaWFTdHJlYW1DZW50ZXIuCisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0
b3Igc291cmNlczsKKyAgICBjbGllbnQtPmRpZENvbXBsZXRlUXVlcnkoc291cmNlcyk7Cit9CisK
K3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0Vu
YWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0sIHNpemVfdCB0cmFja0luZGV4KQor
eworICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+ZGlkU2V0TWVkaWFTdHJl
YW1UcmFja0VuYWJsZWQoc3RyZWFtLCB0cmFja0luZGV4KTsKK30KKwordm9pZCBNZWRpYVN0cmVh
bUNlbnRlckludGVybmFsOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2Ny
aXB0b3IqIHN0cmVhbSkKK3sKKyAgICBpZiAobV9wcml2YXRlKQorICAgICAgICBtX3ByaXZhdGUt
PmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKHN0cmVhbSk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1D
ZW50ZXJJbnRlcm5hbDo6c3RvcExvY2FsTWVkaWFTdHJlYW0oY29uc3QgV2ViS2l0OjpXZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3ImIHN0cmVhbSkKK3sKKyAgICBtX293bmVyLT5lbmRMb2NhbE1lZGlh
U3RyZWFtKHN0cmVhbSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVhNGMw
MDM0ZjQ0Mzk5NzcxMDhkN2RhYTQ2MTdiZjlhOGEzNTVmNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuaApA
QCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsX2gKKyNkZWZp
bmUgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbF9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQuaCIKKyNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdl
Yk1lZGlhU3RyZWFtQ2VudGVyOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1l
ZGlhU3RyZWFtQ2VudGVyOworY2xhc3MgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOworY2xhc3MgTWVk
aWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ7CisKK2NsYXNzIE1lZGlhU3RyZWFtQ2VudGVySW50
ZXJuYWwgOiBwdWJsaWMgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudCB7CitwdWJs
aWM6CisgICAgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbChNZWRpYVN0cmVhbUNlbnRlciopOwor
CisgICAgdm9pZCBxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
U291cmNlc1F1ZXJ5Q2xpZW50Pik7CisgICAgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5h
YmxlZChNZWRpYVN0cmVhbURlc2NyaXB0b3IqLCBzaXplX3QgdHJhY2tJbmRleCk7CisgICAgdm9p
ZCBkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsKKworICAg
IC8vIEZyb20gV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudC4KKyAgICB2aXJ0dWFs
IHZvaWQgc3RvcExvY2FsTWVkaWFTdHJlYW0oY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURl
c2NyaXB0b3ImKTsKKworcHJpdmF0ZToKKyAgICBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVy
KiBtX3ByaXZhdGU7CisgICAgTWVkaWFTdHJlYW1DZW50ZXIqIG1fb3duZXI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
ZW5kaWYgLy8gTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3Vw
cG9ydC5oCmluZGV4IDZjMGU3NGYxMjk3MmM3ZjM3NDYzNDBhZmY2OWIzMTJkYzI1Y2ExZTkuLjBk
OGFlMmIxMmI3MDZjMWI3ZTNiNjliM2IwZWIzYmI4YTFhMTUyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRm
b3JtU3VwcG9ydC5oCkBAIC02MCw2ICs2MCw4IEBAIGNsYXNzIFdlYkZpbGVVdGlsaXRpZXM7CiBj
bGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIFdlYklEQkZhY3Rvcnk7IC8vIEZJWE1F
OiBEb2VzIHRoaXMgYmVsb25nIGluIHBsYXRmb3JtPwogY2xhc3MgV2ViSURCS2V5OyAvLyBGSVhN
RTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KK2NsYXNzIFdlYk1lZGlhU3RyZWFtQ2Vu
dGVyOworY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQ7CiBjbGFzcyBXZWJNZXNzYWdl
UG9ydENoYW5uZWw7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25nIGluIHBsYXRmb3JtPwogY2xh
c3MgV2ViTWltZVJlZ2lzdHJ5OwogY2xhc3MgV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyOwpAQCAt
MzM0LDYgKzMzNiw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE1heSByZXR1cm4gbnVsbCBpZiBXZWJS
VEMgZnVuY3Rpb25hbGl0eSBpcyBub3QgYXZhbGlhYmxlIG9yIG91dCBvZiByZXNvdXJjZXMuCiAg
ICAgdmlydHVhbCBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIGNyZWF0ZVBlZXJDb25uZWN0aW9u
SGFuZGxlcihXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqKSB7IHJldHVybiAwOyB9Cisg
ICAgdmlydHVhbCBXZWJNZWRpYVN0cmVhbUNlbnRlciogbWVkaWFTdHJlYW1DZW50ZXIoV2ViTWVk
aWFTdHJlYW1DZW50ZXJDbGllbnQqKSB7IHJldHVybiAwOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkU3RhcnRXb3JrZXJSdW5Mb29wKGNvbnN0IFdlYldvcmtlclJ1bkxvb3AmKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkU3RvcFdvcmtlclJ1bkxvb3AoY29uc3QgV2ViV29ya2VyUnVuTG9vcCYp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViTWVkaWFTdHJlYW1DZW50ZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjA1ZDAzZTZkYTI4NGU0
ZmUyNmYxNzEzYjBhODkyNzhlOTNhZTUzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgKQEAgLTAs
MCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViTWVkaWFTdHJlYW1DZW50ZXJfaAorI2RlZmluZSBXZWJNZWRp
YVN0cmVhbUNlbnRlcl9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZWRpYVN0
cmVhbURlc2NyaXB0b3I7CitjbGFzcyBXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDsK
KworY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9p
ZCBxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhjb25zdCBXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVy
eUNsaWVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFja0Vu
YWJsZWQoY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJiwgc2l6ZV90IHRyYWNrSW5kZXgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oY29uc3QgV2Vi
TWVkaWFTdHJlYW1EZXNjcmlwdG9yJikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+
V2ViTWVkaWFTdHJlYW1DZW50ZXIoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gV2ViTWVkaWFTdHJlYW1DZW50ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFt
Q2VudGVyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGEwODI1ZjkwZmYwYzdkMTUzNTE3NTY1N2UwY2Vh
ZjI3OGUwNTQyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50LmgKQEAgLTAsMCArMSw0NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnRfaAorI2RlZmluZSBXZWJNZWRpYVN0
cmVhbUNlbnRlckNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3I7CisKK2NsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudCgpIHsgfQor
CisgICAgdmlydHVhbCB2b2lkIHN0b3BMb2NhbE1lZGlhU3RyZWFtKGNvbnN0IFdlYk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURl
c2NyaXB0b3IuaAppbmRleCA1MmM2M2QzMjFhOGJhMjE3OTVmZTQ4YjNiNjFmNzVkMmI3ZmM3MGYy
Li40N2FkMzE3NjRhNGNiZWY3NWYxYjI1Y2Y4YWZjODJjYzdjNDQzODRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2Ny
aXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJN
ZWRpYVN0cmVhbURlc2NyaXB0b3IuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNvdXJjZXMoV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYp
IGNvbnN0OwogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvciopOwogICAgIFdlYk1lZGlh
U3RyZWFtRGVzY3JpcHRvcihjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJl
YW1EZXNjcmlwdG9yPiYpOwogICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpN
ZWRpYVN0cmVhbURlc2NyaXB0b3I+KCkgY29uc3Q7CiAgICAgb3BlcmF0b3IgV2ViQ29yZTo6TWVk
aWFTdHJlYW1EZXNjcmlwdG9yKigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFt
U291cmNlc1F1ZXJ5Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ4ZmM0YmViMTQ3YTk3YjJmNjM4NmIz
MDljYmE2NjIyMWRkMmI1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmgKQEAg
LTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnRfaAor
I2RlZmluZSBXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudF9oCisKKyNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xp
ZW50OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2U7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2ViVmVjdG9yOworCisKK2NsYXNzIFdl
Yk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBXZWJNZWRpYVN0
cmVhbVNvdXJjZXNRdWVyeUNsaWVudCgpIHsgfQorICAgIH5XZWJNZWRpYVN0cmVhbVNvdXJjZXNR
dWVyeUNsaWVudCgpIHsgcmVzZXQoKTsgfQorCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0
KCk7CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7
IH0KKworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBhdWRpbygpIGNvbnN0OworICAgIFdFQktJVF9F
WFBPUlQgYm9vbCB2aWRlbygpIGNvbnN0OworCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGRpZENv
bXBsZXRlUXVlcnkoY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYpOworCisj
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlD
bGllbnQoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlc1F1
ZXJ5Q2xpZW50PiYpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJD
b3JlOjpNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4gbV9wcml2YXRlOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVy
eUNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVk
aWFTdHJlYW1EZXNjcmlwdG9yLmNwcAppbmRleCAwY2Y1M2MwZWJmYTBiYTAzMjFmY2RhNjU5NzU4
ZjNjZWVjODQ4ZWVmLi44NzEyY2JjZjI0ZDMxNGUwOGViZmYyMjBkYzRjZmJhMzZhNWRiMDlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbURlc2Ny
aXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFt
RGVzY3JpcHRvci5jcHAKQEAgLTUwLDYgKzUwLDExIEBAIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRv
cjo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVk
CiB7CiB9CiAKK1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6V2ViTWVkaWFTdHJlYW1EZXNjcmlw
dG9yKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvciogbWVkaWFTdHJlYW1EZXNjcmlwdG9y
KQorICAgIDogbV9wcml2YXRlKG1lZGlhU3RyZWFtRGVzY3JpcHRvcikKK3sKK30KKwogdm9pZCBX
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnJlc2V0KCkKIHsKICAgICBtX3ByaXZhdGUucmVzZXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFt
U291cmNlc1F1ZXJ5Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1l
ZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDc2Nzk2ZWYyYWJj
MzUwNGE2OTQ4YzViMWFkY2IzM2VkOGQ0ZGFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuY3BwCkBA
IC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGll
bnQuaCIKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCisjaW5jbHVkZSAiTWVkaWFT
dHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZS5o
IgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitX
ZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVl
cnlDbGllbnQoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZXNRdWVy
eUNsaWVudD4mIHF1ZXJ5Q2xpZW50KQorICAgIDogbV9wcml2YXRlKHF1ZXJ5Q2xpZW50KQorewor
fQorCit2b2lkIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OjpyZXNldCgpCit7Cisg
ICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK2Jvb2wgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVl
cnlDbGllbnQ6OmF1ZGlvKCkgY29uc3QKK3sKKyAgICBpZiAoIWlzTnVsbCgpKQorICAgICAgICBy
ZXR1cm4gbV9wcml2YXRlLT5hdWRpbygpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBX
ZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6dmlkZW8oKSBjb25zdAoreworICAgIGlm
ICghaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBtX3ByaXZhdGUtPnZpZGVvKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50Ojpk
aWRDb21wbGV0ZVF1ZXJ5KGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHNv
dXJjZXMpCit7CisgICAgaWYgKCFpc051bGwoKSkgeworICAgICAgICBNZWRpYVN0cmVhbVNvdXJj
ZVZlY3RvciBzOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNvdXJjZXMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgICAgIE1lZGlhU3RyZWFtU291cmNlKiBjdXJyID0gc291cmNlc1tp
XTsKKyAgICAgICAgICAgIHMuYXBwZW5kKGN1cnIpOworICAgICAgICB9CisgICAgICAgIG1fcHJp
dmF0ZS0+ZGlkQ29tcGxldGVRdWVyeShzKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122416</attachid>
            <date>2012-01-13 05:49:04 -0800</date>
            <delta_ts>2012-01-17 04:26:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73130-20120113144902.patch</filename>
            <type>text/plain</type>
            <size>33526</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0OTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI2YzIyNWMwYTA2ZDVl
YTA4MzcxN2UzMWExMWQ1OGVkOWNjNGQ0ZC4uNmUyZmIzZTk0ZjczZmUwODljZTYyOGMyZGFmMjVj
YTEyMWFiMWQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAxLTEzICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogQ2hhbmdpbmcgdGhlIGludGl0aWFsIGR1bW15IE1lZGlhU3RyZWFtQ2VudGVyIHRvIHN1
cHBvcnQgdGhlIENocm9taXVtIGVtYmVkZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3IgdGhlIE1lZGlhIFN0cmVhbSBBUEkgd2lsbCBi
ZSBwcm92aWRlZCBieSB0aGUgYnVnIDU2NTg3LCBwZW5kaW5nIGVub3VnaCBsYW5kZWQgY29kZS4K
KworICAgICAgICAqIG1lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6ZGlkQ29tcGxldGVRdWVyeSk6CisgICAgICAgICog
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1l
ZGlhUmVxdWVzdDo6YXVkaW8pOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6
dmlkZW8pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpkaWRTZXRNZWRpYVN0
cmVhbVRyYWNrRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1DZW50ZXIuaDoKKwogMjAxMi0wMS0xMyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdv
b2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogbWFrZSBIVE1MIGVkaXRpbmcgcHJl
c2VydmUgbm9kZSBpZGVudGl0eSB3aGVuIG5vZGUgbmVzdGluZyBsZXZlbCBjaGFuZ2VzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA0NmVlNDhmMjI0ZGJlZTkxMTVkYTJkZmVjMjRhMGY1
N2U4MjE0OWJkLi5jYzNiYWNhMTI5NmNkMjhlMThlNmQxOGU1NmE1N2ExMWRiMTU2YTc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTAxLTEzICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TWVkaWFTdHJlYW0gQVBJOiBBZGRpbmcgdGhlIGVtYmVkZGluZyBjb2RlIGZvciBNZWRpYVN0cmVh
bUNlbnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzMxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYktpdC5neXA6CisgICAgICAgICogYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVyLmNwcDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1D
ZW50ZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXI6Ok1lZGlhU3Ry
ZWFtQ2VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjp+TWVkaWFT
dHJlYW1DZW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXI6OnF1ZXJ5
TWVkaWFTdHJlYW1Tb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVy
OjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbUNlbnRlcjo6ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0pOgorICAgICAgICAqIGJyaWRn
ZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OnF1ZXJ5TWVkaWFT
dHJlYW1Tb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJu
YWw6OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OnN0b3BMb2NhbE1lZGlhU3Ry
ZWFtKToKKyAgICAgICAgKiBicmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oOiBBZGRl
ZC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6bWVkaWFTdHJlYW1DZW50ZXIp
OgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlci5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1DZW50ZXI6On5XZWJNZWRpYVN0cmVh
bUNlbnRlcik6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVy
Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRlckNs
aWVudDo6fldlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50KToKKyAgICAgICAgKiBwdWJsaWMvcGxh
dGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmg6CisgICAgICAgICogcHVibGljL3BsYXRm
b3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6V2ViTWVkaWFTdHJlYW1T
b3VyY2VzUXVlcnlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJj
ZXNRdWVyeUNsaWVudDo6fldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ6OmlzTnVsbCk6Cisg
ICAgICAgICogc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yKToK
KyAgICAgICAgKiBzcmMvV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0
b3IuY3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVu
dDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6YXVkaW8pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6dmlkZW8pOgorICAgICAgICAo
V2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6ZGlkQ29tcGxldGVRdWVy
eSk6CisKIDIwMTItMDEtMTMgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBSb2xsZWQgREVQUy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKaW5kZXggYmE2YzNhNGMyNDA4
ZGJkYTNjMTA5YmI5YWY2Y2JlZTlhMWU3NTMzNy4uOGJlYTQ5MzJmMWEwNzcwMTg2ZTdmOGIxNDFi
ZWI1ODM5MDMyNmI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0Ojpz
dGFydCgpCiAgICAgTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkucXVlcnlNZWRpYVN0cmVh
bVNvdXJjZXModGhpcyk7CiB9CiAKLXZvaWQgVXNlck1lZGlhUmVxdWVzdDo6bWVkaWFTdHJlYW1T
b3VyY2VzUXVlcnlDb21wbGV0ZWQoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJj
ZXMpCit2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmRpZENvbXBsZXRlUXVlcnkoY29uc3QgTWVkaWFT
dHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMpCiB7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAg
ICBtX2NsaWVudC0+cmVxdWVzdFVzZXJNZWRpYSh0aGlzLCBzb3VyY2VzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAppbmRleCAyZTIzYmFjMjk0NThj
YTkxM2I2ZTdjYmJmMWY3NDM3Mjk4OGZhNWQ4Li4wMDkzNDRkMDRjNWQ5N2UxMmVlMzcyNDYxNDhi
N2VlNGEzZWVjYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5oCkBAIC01MSw5ICs1MSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxVc2VyTWVkaWFSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVzZXJN
ZWRpYUNsaWVudCosIGNvbnN0IFN0cmluZyYgb3B0aW9ucywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JV
c2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVy
cm9yQ2FsbGJhY2s+KTsKICAgICB+VXNlck1lZGlhUmVxdWVzdCgpOwogCi0gICAgYm9vbCBhdWRp
bygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW87IH0KLSAgICBib29sIHZpZGVvKCkgY29uc3QgeyBy
ZXR1cm4gbV92aWRlbzsgfQotCiAgICAgYm9vbCBjYW1lcmFQcmVmZXJlbmNlVXNlcigpIGNvbnN0
IHsgcmV0dXJuIG1fY2FtZXJhUHJlZmVyZW5jZVVzZXI7IH0KICAgICBib29sIGNhbWVyYVByZWZl
cmVuY2VFbnZpcm9ubWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FtZXJhUHJlZmVyZW5jZUVudmly
b25tZW50OyB9CiAKQEAgLTYxLDExICs1OCwxNSBAQCBwdWJsaWM6CiAgICAgTmF2aWdhdG9yVXNl
ck1lZGlhRXJyb3JDYWxsYmFjayogZXJyb3JDYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fZXJy
b3JDYWxsYmFjay5nZXQoKTsgfQogCiAgICAgdm9pZCBzdGFydCgpOwotICAgIHZvaWQgbWVkaWFT
dHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3Im
KTsKIAogICAgIHZvaWQgc3VjY2VlZChjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpOwog
ICAgIHZvaWQgZmFpbCgpOwogCisgICAgLy8gTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQK
KyAgICB2aXJ0dWFsIGJvb2wgYXVkaW8oKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvOyB9CisgICAg
dmlydHVhbCBib29sIHZpZGVvKCkgY29uc3QgeyByZXR1cm4gbV92aWRlbzsgfQorICAgIHZpcnR1
YWwgdm9pZCBkaWRDb21wbGV0ZVF1ZXJ5KGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJik7
CisKICAgICAvLyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgogICAgIHZpcnR1YWwgdm9pZCBj
b250ZXh0RGVzdHJveWVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcAppbmRleCBhNDg0YTJiYzIwN2M5
ZjcyNzE3YWZlMDU0MWYwMDhlZjE3Y2MzYWFkLi5hYWQ2MDYwZmM4MTQ4NDg5NzU0ZTJiM2Y2NTYz
YzRjYzE4ZTU4YmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwCkBAIC01NSw4ICs1NSwxMCBAQCB2b2lk
IE1lZGlhU3RyZWFtQ2VudGVyOjplbmRMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3Jp
cHRvciogc3RyZWFtRGVzY3JpcAogICAgICAgICBzdHJlYW1EZXNjcmlwdG9yLT5zZXRFbmRlZCgp
OwogfQogCi0vLyBGSVhNRTogcmVtb3ZlIHdoZW4gcmVhbCBpbXBsZW1lbnRhdGlvbnMgYXJlIGF2
YWlsYWJsZQotLy8gRW1wdHkgaW1wbGVtZW50YXRpb25zIGZvciBwb3J0cyB0aGF0IGJ1aWxkIHdp
dGggTUVESUFfU1RSRUFNIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyNpZiAhUExBVEZPUk0oQ0hST01J
VU0pCisKKy8vIEVtcHR5IGltcGxlbWVudGF0aW9ucyBmb3IgcG9ydHMgdGhhdCBidWlsZCB3aXRo
IE1FRElBX1NUUkVBTSBlbmFibGVkIGJ5IGRlZmF1bHQsIGJ1dCBoYXZlbid0IHlldCBpbXBsZW1l
bnRlZCBNZWRpYVN0cmVhbUNlbnRlci4KKwogTWVkaWFTdHJlYW1DZW50ZXI6Ok1lZGlhU3RyZWFt
Q2VudGVyKCkKIHsKIH0KQEAgLTY4LDEwICs3MCwxMCBAQCBNZWRpYVN0cmVhbUNlbnRlcjo6fk1l
ZGlhU3RyZWFtQ2VudGVyKCkKIHZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OnF1ZXJ5TWVkaWFTdHJl
YW1Tb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+IGNsaWVu
dCkKIHsKICAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBzb3VyY2VzOwotICAgIGNsaWVudC0+
bWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQoc291cmNlcyk7CisgICAgY2xpZW50LT5k
aWRDb21wbGV0ZVF1ZXJ5KHNvdXJjZXMpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjpk
aWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbURlc2NyaXB0b3IqLCB1bnNp
Z25lZCkKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFi
bGVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvciosIHNpemVfdCkKIHsKIH0KIApAQCAtNzksNiArODEs
OCBAQCB2b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRp
YVN0cmVhbURlc2NyaXB0b3IqKQogewogfQogCisjZW5kaWYgLy8gIVBMQVRGT1JNKENIUk9NSVVN
KQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtQ2VudGVyLmgKaW5kZXggOGVmYzhiMzJmNDQwYzIwNTIzZGY5NjkwZjZiM2NhMDFk
NjNlYzg1Mi4uN2I4Yzc4M2RlYjg0MTBiZThiZGVjYzFiZGFlNTg5MDI0OThkOGExOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bUNlbnRlci5oCkBAIC0zOCw2ICszOCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNp
ZiBQTEFURk9STShDSFJPTUlVTSkKK2NsYXNzIE1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw7Cisj
ZW5kaWYKKwogY2xhc3MgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOwogCiBjbGFzcyBNZWRpYVN0cmVh
bVNvdXJjZXNRdWVyeUNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtU291cmNl
c1F1ZXJ5Q2xpZW50PiB7CkBAIC00Nyw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgYXVkaW8oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHZpZGVvKCkgY29uc3QgPSAw
OwogCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGNv
bnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21wbGV0ZVF1ZXJ5KGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJikgPSAwOwogfTsKIAog
Y2xhc3MgTWVkaWFTdHJlYW1DZW50ZXIgewpAQCAtNjMsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gRklYTUU6IGFkZCBhIHdheSB0byBtdXRlIGEgTWVkaWFTdHJlYW1Tb3VyY2UgZnJvbSB0aGUg
V2ViS2l0IEFQSSBsYXllcgogCiAgICAgLy8gQ2FsbHMgZnJvbSB0aGUgRE9NIG9iamVjdHMgdG8g
bm90aWZ5IHRoZSBwbGF0Zm9ybQotICAgIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJs
ZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiwgdW5zaWduZWQgY29tcG9uZW50SW5kZXgpOworICAg
IHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9y
Kiwgc2l6ZV90IHRyYWNrSW5kZXgpOwogICAgIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0o
TWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7CiAKICAgICAvLyBDYWxscyBmcm9tIHRoZSBwbGF0Zm9y
bSB0byB1cGRhdGUgdGhlIERPTSBvYmplY3RzCkBAIC03MSw2ICs3NSwxMCBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgTWVkaWFTdHJlYW1DZW50ZXIoKTsKKworI2lmIFBMQVRGT1JNKENIUk9N
SVVNKQorICAgIE93blB0cjxNZWRpYVN0cmVhbUNlbnRlckludGVybmFsPiBtX3ByaXZhdGU7Cisj
ZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cAppbmRleCAyZTU5ZjhjMWY2NjE3NTJkYWI5MjVkMWQ2NWY2MzBhNGNmZTQyZTgzLi5iMDhk
NWVhZjJmYzU0YzA5NzFhNTBmYjU4NTdmY2Y0MGFiYWFkNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCkBAIC05MCw5ICs5MCwxNCBAQAogICAgICAgICAgICAgICAgICdXRUJLSVRfSU1Q
TEVNRU5UQVRJT049MScsCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgJ3NvdXJjZXMnOiBb
CisgICAgICAgICAgICAgICAgJ2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlci5jcHAnLAorICAgICAg
ICAgICAgICAgICdicmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5jcHAnLAorICAgICAg
ICAgICAgICAgICdicmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oJywKICAgICAgICAg
ICAgICAgICAnYnJpZGdlL1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAnLAogICAgICAgICAgICAg
ICAgICdicmlkZ2UvUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWwuY3BwJywKICAgICAgICAg
ICAgICAgICAnYnJpZGdlL1BlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsLmgnLAorICAgICAg
ICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGll
bnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNl
bnRlci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQWNjZXNzaWJpbGl0eVJvbGUuaCcsCkBA
IC01OTQsNiArNTk5LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhU3RyZWFtRGVz
Y3JpcHRvci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFTdHJlYW1SZWdpc3Ry
eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwJywK
KyAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOYW1lZE5vZGVNYXAuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJOb2RlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2Jy
aWRnZS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjBiOTMxODY1NjY3MWMzM2Q3
MTlhOWQ4NDE5Y2VhNjU0ODUyZjc4MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVyLmNwcApAQCAtMCwwICsxLDY5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtQ2VudGVyLmgiCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlckludGVy
bmFsLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYVN0cmVhbUNlbnRl
cjo6TWVkaWFTdHJlYW1DZW50ZXIoKQorICAgIDogbV9wcml2YXRlKGFkb3B0UHRyKG5ldyBNZWRp
YVN0cmVhbUNlbnRlckludGVybmFsKHRoaXMpKSkKK3sKK30KKworTWVkaWFTdHJlYW1DZW50ZXI6
On5NZWRpYVN0cmVhbUNlbnRlcigpCit7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OnF1
ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlD
bGllbnQ+IGNsaWVudCkKK3sKKyAgICBtX3ByaXZhdGUtPnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2Vz
KGNsaWVudCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFNldE1lZGlhU3RyZWFt
VHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtLCBzaXplX3QgdHJhY2tJ
bmRleCkKK3sKKyAgICBtX3ByaXZhdGUtPmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKHN0
cmVhbSwgdHJhY2tJbmRleCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0b3BM
b2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKQoreworICAgIG1f
cHJpdmF0ZS0+ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oc3RyZWFtKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJu
YWwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJ
bnRlcm5hbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmM2MGI0YzA3OWNiNDllOGFjNWQwNDk0ZDk5OTFjNjE0
MzRhOTRjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdl
L01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuY3BwCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFT
dHJlYW1DZW50ZXJJbnRlcm5hbC5oIgorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIK
KyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgIldlYktpdC5oIgorI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgInBsYXRm
b3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFT
dHJlYW1EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2VzUXVlcnlDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYVN0cmVhbUNl
bnRlckludGVybmFsOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsKE1lZGlhU3RyZWFtQ2VudGVy
KiBvd25lcikKKyAgICA6IG1fcHJpdmF0ZShXZWJLaXQ6OndlYktpdFBsYXRmb3JtU3VwcG9ydCgp
LT5tZWRpYVN0cmVhbUNlbnRlcih0aGlzKSkKKyAgICAsIG1fb3duZXIob3duZXIpCit7Cit9CisK
K3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMo
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4gY2xpZW50KQoreworICAg
IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyAic2hvcnQtY2lyY3VpdCIgYW5kIGZvcndhcmQgdG8gbV9w
cml2YXRlIHdoZW4gQ2hyb21lIGhhcyBpbXBsZW1lbnRlZCBXZWJNZWRpYVN0cmVhbUNlbnRlci4K
KyAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBzb3VyY2VzOworICAgIGNsaWVudC0+ZGlkQ29t
cGxldGVRdWVyeShzb3VyY2VzKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNlbnRlckludGVybmFs
OjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0
cmVhbSwgc2l6ZV90IHRyYWNrSW5kZXgpCit7CisgICAgaWYgKG1fcHJpdmF0ZSkKKyAgICAgICAg
bV9wcml2YXRlLT5kaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChzdHJlYW0sIHRyYWNrSW5k
ZXgpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OmRpZFN0b3BMb2NhbE1l
ZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKQoreworICAgIGlmIChtX3By
aXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oc3RyZWFt
KTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpzdG9wTG9jYWxNZWRpYVN0
cmVhbShjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYgc3RyZWFtKQorewor
ICAgIG1fb3duZXItPmVuZExvY2FsTWVkaWFTdHJlYW0oc3RyZWFtKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50
ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ZWE0YzAwMzRmNDQzOTk3NzEwOGQ3ZGFhNDYxN2JmOWE4YTM1
NWY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVk
aWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhU3Ry
ZWFtQ2VudGVySW50ZXJuYWxfaAorI2RlZmluZSBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsX2gK
KworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRp
YVN0cmVhbUNlbnRlckNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXI7Cit9CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTdHJlYW1DZW50ZXI7CitjbGFzcyBNZWRpYVN0
cmVhbURlc2NyaXB0b3I7CitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDsKKwor
Y2xhc3MgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbCA6IHB1YmxpYyBXZWJLaXQ6OldlYk1lZGlh
U3RyZWFtQ2VudGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBNZWRpYVN0cmVhbUNlbnRlckludGVy
bmFsKE1lZGlhU3RyZWFtQ2VudGVyKik7CisKKyAgICB2b2lkIHF1ZXJ5TWVkaWFTdHJlYW1Tb3Vy
Y2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+KTsKKyAgICB2b2lk
IGRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvciosIHNp
emVfdCB0cmFja0luZGV4KTsKKyAgICB2b2lkIGRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlh
U3RyZWFtRGVzY3JpcHRvciopOworCisgICAgLy8gRnJvbSBXZWJLaXQ6OldlYk1lZGlhU3RyZWFt
Q2VudGVyQ2xpZW50LgorICAgIHZpcnR1YWwgdm9pZCBzdG9wTG9jYWxNZWRpYVN0cmVhbShjb25z
dCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpOworCitwcml2YXRlOgorICAgIFdl
YktpdDo6V2ViTWVkaWFTdHJlYW1DZW50ZXIqIG1fcHJpdmF0ZTsKKyAgICBNZWRpYVN0cmVhbUNl
bnRlciogbV9vd25lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBNZWRpYVN0cmVhbUNlbnRlckludGVy
bmFsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKaW5kZXggNmMwZTc0ZjEyOTcyYzdmMzc0
NjM0MGFmZjY5YjMxMmRjMjVjYTFlOS4uMGQ4YWUyYjEyYjcwNmMxYjdlM2I2OWIzYjBlYjNiYjhh
MWExNTI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZv
cm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKQEAgLTYwLDYgKzYwLDggQEAg
Y2xhc3MgV2ViRmlsZVV0aWxpdGllczsKIGNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEOwogY2xh
c3MgV2ViSURCRmFjdG9yeTsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/
CiBjbGFzcyBXZWJJREJLZXk7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25nIGluIHBsYXRmb3Jt
PworY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXI7CitjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRl
ckNsaWVudDsKIGNsYXNzIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbDsgLy8gRklYTUU6IERvZXMgdGhp
cyBiZWxvbmcgaW4gcGxhdGZvcm0/CiBjbGFzcyBXZWJNaW1lUmVnaXN0cnk7CiBjbGFzcyBXZWJQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI7CkBAIC0zMzQsNiArMzM2LDcgQEAgcHVibGljOgogCiAgICAg
Ly8gTWF5IHJldHVybiBudWxsIGlmIFdlYlJUQyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBhdmFsaWFi
bGUgb3Igb3V0IG9mIHJlc291cmNlcy4KICAgICB2aXJ0dWFsIFdlYlBlZXJDb25uZWN0aW9uSGFu
ZGxlciogY3JlYXRlUGVlckNvbm5lY3Rpb25IYW5kbGVyKFdlYlBlZXJDb25uZWN0aW9uSGFuZGxl
ckNsaWVudCopIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFdlYk1lZGlhU3RyZWFtQ2VudGVy
KiBtZWRpYVN0cmVhbUNlbnRlcihXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudCopIHsgcmV0dXJu
IDA7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFdvcmtlclJ1bkxvb3AoY29uc3QgV2Vi
V29ya2VyUnVuTG9vcCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wV29ya2VyUnVuTG9v
cChjb25zdCBXZWJXb3JrZXJSdW5Mb29wJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlci5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mMDVkMDNlNmRhMjg0ZTRmZTI2ZjE3MTNiMGE4OTI3OGU5M2FlNTNiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
TWVkaWFTdHJlYW1DZW50ZXIuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVN0cmVh
bUNlbnRlcl9oCisjZGVmaW5lIFdlYk1lZGlhU3RyZWFtQ2VudGVyX2gKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKK2NsYXNzIFdlYk1lZGlh
U3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OworCitjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlciB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKGNvbnN0
IFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50JikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChjb25zdCBXZWJNZWRpYVN0cmVhbURlc2Ny
aXB0b3ImLCBzaXplX3QgdHJhY2tJbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9w
TG9jYWxNZWRpYVN0cmVhbShjb25zdCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImKSA9IDA7CisK
K3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5XZWJNZWRpYVN0cmVhbUNlbnRlcigpIHsgfQorfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJNZWRpYVN0cmVhbUNlbnRl
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTA4
MjVmOTBmZjBjN2QxNTM1MTc1NjU3ZTBjZWFmMjc4ZTA1NDJjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50
ZXJDbGllbnQuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVN0cmVhbUNlbnRlckNs
aWVudF9oCisjZGVmaW5lIFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50X2gKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKKworY2xhc3MgV2Vi
TWVkaWFTdHJlYW1DZW50ZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYk1lZGlh
U3RyZWFtQ2VudGVyQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcExvY2FsTWVk
aWFTdHJlYW0oY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJikgPSAwOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVu
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCmluZGV4IDUyYzYzZDMyMWE4YmEy
MTc5NWZlNDhiM2I2MWY3NWQyYjdmYzcwZjIuLjQ3YWQzMTc2NGE0Y2JlZjc1ZjFiMjVjZjhhZmM4
MmNjN2M0NDM4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCkBAIC01Miw2
ICs1Miw3IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc291cmNlcyhXZWJWZWN0
b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JikgY29uc3Q7CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KKyAgICBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IoV2ViQ29yZTo6TWVkaWFTdHJlYW1E
ZXNjcmlwdG9yKik7CiAgICAgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I+Jik7CiAgICAgb3BlcmF0b3Ig
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcj4oKSBjb25zdDsK
ICAgICBvcGVyYXRvciBXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3IqKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRp
YVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hZDhmYzRiZWIxNDdhOTdiMmY2Mzg2YjMwOWNiYTY2MjIxZGQyYjViCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJl
YW1Tb3VyY2VzUXVlcnlDbGllbnQuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVN0
cmVhbVNvdXJjZXNRdWVyeUNsaWVudF9oCisjZGVmaW5lIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1
ZXJ5Q2xpZW50X2gKKworI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlByaXZhdGVQdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJNZWRpYVN0cmVhbVNvdXJjZTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFz
cyBXZWJWZWN0b3I7CisKKworY2xhc3MgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQg
eworcHVibGljOgorICAgIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50KCkgeyB9Cisg
ICAgfldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50KCkgeyByZXNldCgpOyB9CisKKyAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQorCisgICAgV0VCS0lUX0VYUE9SVCBib29sIGF1
ZGlvKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIHZpZGVvKCkgY29uc3Q7CisKKyAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgZGlkQ29tcGxldGVRdWVyeShjb25zdCBXZWJWZWN0b3I8V2Vi
TWVkaWFTdHJlYW1Tb3VyY2U+Jik7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBX
ZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+Jik7CisjZW5kaWYKKworcHJpdmF0
ZToKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xp
ZW50PiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCmluZGV4IDBj
ZjUzYzBlYmZhMGJhMDMyMWZjZGE2NTk3NThmM2NlZWM4NDhlZWYuLjg3MTJjYmNmMjRkMzE0ZTA4
ZWJmZjIyMGRjNGNmYmEzNmE1ZGIwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcApAQCAtNTAsNiArNTAsMTEg
QEAgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IoY29u
c3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpNZWQKIHsKIH0KIAorV2ViTWVkaWFTdHJlYW1EZXNjcmlw
dG9yOjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IoV2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNjcmlw
dG9yKiBtZWRpYVN0cmVhbURlc2NyaXB0b3IpCisgICAgOiBtX3ByaXZhdGUobWVkaWFTdHJlYW1E
ZXNjcmlwdG9yKQoreworfQorCiB2b2lkIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6cmVzZXQo
KQogewogICAgIG1fcHJpdmF0ZS5yZXNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjcwNzY3OTZlZjJhYmMzNTA0YTY5NDhjNWIxYWRjYjMzZWQ4ZDRkYWYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVh
bVNvdXJjZXNRdWVyeUNsaWVudC5jcHAKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJN
ZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5oIgorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1D
ZW50ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgInBsYXRm
b3JtL1dlYk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9y
LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50
OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudChjb25zdCBQYXNzUmVmUHRyPFdlYkNv
cmU6Ok1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiYgcXVlcnlDbGllbnQpCisgICAgOiBt
X3ByaXZhdGUocXVlcnlDbGllbnQpCit7Cit9CisKK3ZvaWQgV2ViTWVkaWFTdHJlYW1Tb3VyY2Vz
UXVlcnlDbGllbnQ6OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQoKTsKK30KKworYm9v
bCBXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6YXVkaW8oKSBjb25zdAoreworICAg
IGlmICghaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBtX3ByaXZhdGUtPmF1ZGlvKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50
Ojp2aWRlbygpIGNvbnN0Cit7CisgICAgaWYgKCFpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+dmlkZW8oKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViTWVkaWFT
dHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ6OmRpZENvbXBsZXRlUXVlcnkoY29uc3QgV2ViVmVjdG9y
PFdlYk1lZGlhU3RyZWFtU291cmNlPiYgc291cmNlcykKK3sKKyAgICBpZiAoIWlzTnVsbCgpKSB7
CisgICAgICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHM7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc291cmNlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgTWVkaWFTdHJl
YW1Tb3VyY2UqIGN1cnIgPSBzb3VyY2VzW2ldOworICAgICAgICAgICAgcy5hcHBlbmQoY3Vycik7
CisgICAgICAgIH0KKyAgICAgICAgbV9wcml2YXRlLT5kaWRDb21wbGV0ZVF1ZXJ5KHMpOworICAg
IH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122748</attachid>
            <date>2012-01-17 04:26:45 -0800</date>
            <delta_ts>2012-01-23 04:08:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73130-20120117132643.patch</filename>
            <type>text/plain</type>
            <size>34284</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZjNTAzYWI2OWU1MGJh
NThjYzZjMzFiNzNmNDk3YWYzNmYyNmEwZC4uMTUxNzM5M2IwMmZkZTM5MjM5ZDk2NzlhY2EwOTg1
ZWY1Y2IxYjAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAxLTE3ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogQ2hhbmdpbmcgdGhlIGludGl0aWFsIGR1bW15IE1lZGlhU3RyZWFtQ2VudGVyIHRvIHN1
cHBvcnQgdGhlIENocm9taXVtIGVtYmVkZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3IgdGhlIE1lZGlhIFN0cmVhbSBBUEkgd2lsbCBi
ZSBwcm92aWRlZCBieSB0aGUgYnVnIDU2NTg3LCBwZW5kaW5nIGVub3VnaCBsYW5kZWQgY29kZS4K
KworICAgICAgICAqIG1lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6ZGlkQ29tcGxldGVRdWVyeSk6CisgICAgICAgICog
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1l
ZGlhUmVxdWVzdDo6YXVkaW8pOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6
dmlkZW8pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3Ry
ZWFtU291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU2V0
TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtQ2VudGVyLmg6CisKIDIwMTItMDEtMTEgIEFsZXhhbmRlciBQYXZsb3YgIDxh
cGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbVGV4dFByb21w
dF0gQXV0b2NvbXBsZXRlIGFkZHMgdW53YW50ZWQgdGV4dCB0aGF0J3MgaGFyZCB0byByZW1vdmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjYwYjlmMjZjNjE3M2UzZjE1ZTdmNDk1NDU5
NmIxNDJjMjVlYzliMi4uNGU3ZTE3ODgyN2UyMjQwMWZiMWM1YWUxNDdiOTA0YTE2OWI0MTBjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMi0wMS0xNyAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21p
dW1dIE1lZGlhU3RyZWFtIEFQSTogQWRkaW5nIHRoZSBlbWJlZGRpbmcgY29kZSBmb3IgTWVkaWFT
dHJlYW1DZW50ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTczMTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIGJyaWRnZS9NZWRpYVN0cmVhbUNlbnRlci5jcHA6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtQ2VudGVyLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpNZWRp
YVN0cmVhbUNlbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6fk1l
ZGlhU3RyZWFtQ2VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpx
dWVyeU1lZGlhU3RyZWFtU291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNl
bnRlcjo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpkaWRDb25zdHJ1Y3RNZWRpYVN0cmVhbSk6CisgICAg
ICAgICogYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6TWVkaWFTdHJlYW1D
ZW50ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlckludGVy
bmFsOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUNlbnRlckludGVybmFsOjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpkaWRTdG9wTG9jYWxNZWRp
YVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpk
aWRDb25zdHJ1Y3RNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNl
bnRlckludGVybmFsOjpzdG9wTG9jYWxNZWRpYVN0cmVhbSk6CisgICAgICAgICogYnJpZGdlL01l
ZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICogcHVibGljL3BsYXRm
b3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRQbGF0
Zm9ybVN1cHBvcnQ6Om1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZv
cm0vV2ViTWVkaWFTdHJlYW1DZW50ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk1l
ZGlhU3RyZWFtQ2VudGVyOjp+V2ViTWVkaWFTdHJlYW1DZW50ZXIpOgorICAgICAgICAqIHB1Ymxp
Yy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQ6On5XZWJNZWRpYVN0cmVhbUNlbnRl
ckNsaWVudCk6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3Jp
cHRvci5oOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNR
dWVyeUNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3Vy
Y2VzUXVlcnlDbGllbnQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ6On5XZWJNZWRpYVN0
cmVhbVNvdXJjZXNRdWVyeUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFt
U291cmNlc1F1ZXJ5Q2xpZW50Ojppc051bGwpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVN0cmVh
bURlc2NyaXB0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0
b3I6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcik6CisgICAgICAgICogc3JjL1dlYk1lZGlhU3Ry
ZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcC4KKyAgICAgICAgKFdlYktpdDo6
V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1F1
ZXJ5Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlD
bGllbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVl
cnlDbGllbnQ6OmF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2Vz
UXVlcnlDbGllbnQ6OnZpZGVvKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3Vy
Y2VzUXVlcnlDbGllbnQ6OmRpZENvbXBsZXRlUXVlcnkpOgorCiAyMDEyLTAxLTE3ICBCaWxsIEJ1
ZGdlICA8YmJ1ZGdlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBc3NvY2lhdGVkVVJMTG9hZGVy
IGFkZHMgc3VwcG9ydCBmb3IgdGhlIEhUVFAgcmVzcG9uc2UgaGVhZGVyIEFjY2Vzcy1Db250cm9s
LUV4cG9zZS1IZWFkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRp
YVJlcXVlc3QuY3BwCmluZGV4IGJhNmMzYTRjMjQwOGRiZGEzYzEwOWJiOWFmNmNiZWU5YTFlNzUz
MzcuLjhiZWE0OTMyZjFhMDc3MDE4NmU3ZjhiMTQxYmViNTgzOTAzMjZiNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCkBAIC03MSw3ICs3
MSw3IEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoKQogICAgIE1lZGlhU3RyZWFtQ2Vu
dGVyOjppbnN0YW5jZSgpLnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKHRoaXMpOwogfQogCi12b2lk
IFVzZXJNZWRpYVJlcXVlc3Q6Om1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGNvbnN0
IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzKQordm9pZCBVc2VyTWVkaWFSZXF1ZXN0
OjpkaWRDb21wbGV0ZVF1ZXJ5KGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2Vz
KQogewogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPnJlcXVlc3RVc2VyTWVk
aWEodGhpcywgc291cmNlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFSZXF1ZXN0LmgKaW5kZXggMmUyM2JhYzI5NDU4Y2E5MTNiNmU3Y2JiZjFmNzQzNzI5ODhmYTVk
OC4uMDA5MzQ0ZDA0YzVkOTdlMTJlZTM3MjQ2MTQ4YjdlZTRhM2VlY2JlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaApAQCAtNTEsOSArNTEsNiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVc2VyTWVkaWFDbGllbnQqLCBjb25zdCBTdHJpbmcm
IG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwg
UGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPik7CiAgICAgflVzZXJN
ZWRpYVJlcXVlc3QoKTsKIAotICAgIGJvb2wgYXVkaW8oKSBjb25zdCB7IHJldHVybiBtX2F1ZGlv
OyB9Ci0gICAgYm9vbCB2aWRlbygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW87IH0KLQogICAgIGJv
b2wgY2FtZXJhUHJlZmVyZW5jZVVzZXIoKSBjb25zdCB7IHJldHVybiBtX2NhbWVyYVByZWZlcmVu
Y2VVc2VyOyB9CiAgICAgYm9vbCBjYW1lcmFQcmVmZXJlbmNlRW52aXJvbm1lbnQoKSBjb25zdCB7
IHJldHVybiBtX2NhbWVyYVByZWZlcmVuY2VFbnZpcm9ubWVudDsgfQogCkBAIC02MSwxMSArNTgs
MTUgQEAgcHVibGljOgogICAgIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2sqIGVycm9y
Q2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2Vycm9yQ2FsbGJhY2suZ2V0KCk7IH0KIAogICAg
IHZvaWQgc3RhcnQoKTsKLSAgICB2b2lkIG1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVk
KGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJik7CiAKICAgICB2b2lkIHN1Y2NlZWQoY29u
c3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKICAgICB2b2lkIGZhaWwoKTsKIAorICAgIC8v
IE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50CisgICAgdmlydHVhbCBib29sIGF1ZGlvKCkg
Y29uc3QgeyByZXR1cm4gbV9hdWRpbzsgfQorICAgIHZpcnR1YWwgYm9vbCB2aWRlbygpIGNvbnN0
IHsgcmV0dXJuIG1fdmlkZW87IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVRdWVyeShj
b25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpOworCiAgICAgLy8gQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXIKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNl
bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bUNlbnRlci5jcHAKaW5kZXggYzQ4YTg2Njk4ZGZhODZlZGMzMjI5Y2E5MTFhMzkxNzQ0YTZiNTc1
MC4uZWFjMGU4MTQzNGE1MjAxMGU0YWM0YWEzN2U0ZDY0MzRhZTcyNGI1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2Vu
dGVyLmNwcApAQCAtNTUsOCArNTUsOSBAQCB2b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjplbmRMb2Nh
bE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtRGVzY3JpcAogICAgICAg
ICBzdHJlYW1EZXNjcmlwdG9yLT5zZXRFbmRlZCgpOwogfQogCi0vLyBGSVhNRTogcmVtb3ZlIHdo
ZW4gcmVhbCBpbXBsZW1lbnRhdGlvbnMgYXJlIGF2YWlsYWJsZQotLy8gRW1wdHkgaW1wbGVtZW50
YXRpb25zIGZvciBwb3J0cyB0aGF0IGJ1aWxkIHdpdGggTUVESUFfU1RSRUFNIGVuYWJsZWQgYnkg
ZGVmYXVsdC4KKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCisKKy8vIEVtcHR5IGltcGxlbWVudGF0
aW9ucyBmb3IgcG9ydHMgdGhhdCBidWlsZCB3aXRoIE1FRElBX1NUUkVBTSBlbmFibGVkIGJ5IGRl
ZmF1bHQsIGJ1dCBoYXZlbid0IHlldCBpbXBsZW1lbnRlZCBNZWRpYVN0cmVhbUNlbnRlci4KIAog
TWVkaWFTdHJlYW1DZW50ZXI6Ok1lZGlhU3RyZWFtQ2VudGVyKCkKIHsKQEAgLTY5LDEwICs3MCwx
MCBAQCBNZWRpYVN0cmVhbUNlbnRlcjo6fk1lZGlhU3RyZWFtQ2VudGVyKCkKIHZvaWQgTWVkaWFT
dHJlYW1DZW50ZXI6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1Tb3VyY2VzUXVlcnlDbGllbnQ+IGNsaWVudCkKIHsKICAgICBNZWRpYVN0cmVhbVNvdXJjZVZl
Y3RvciBzb3VyY2VzOwotICAgIGNsaWVudC0+bWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0
ZWQoc291cmNlcyk7CisgICAgY2xpZW50LT5kaWRDb21wbGV0ZVF1ZXJ5KHNvdXJjZXMpOwogfQog
Ci12b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChN
ZWRpYVN0cmVhbURlc2NyaXB0b3IqLCB1bnNpZ25lZCkKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6
OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvciosIHNp
emVfdCkKIHsKIH0KIApAQCAtODQsNiArODUsOCBAQCB2b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjpk
aWRDb25zdHJ1Y3RNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKQogewogfQogCisj
ZW5kaWYgLy8gIVBMQVRGT1JNKENIUk9NSVVNKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgKaW5kZXggMjA4YmQx
MGJkZmI0NmVkY2VhMTY5NTc5MGIxZmYzMDI0MmI2OWY2Yy4uODg0NTUwZWM0OGUyOTIwNDg1NmJl
Yjg3NmVkZDgzYTYxNWIyMmY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oCkBAIC0zOCw2ICszOCwxMCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKK2NsYXNzIE1l
ZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw7CisjZW5kaWYKKwogY2xhc3MgTWVkaWFTdHJlYW1EZXNj
cmlwdG9yOwogCiBjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudCA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiB7CkBAIC00Nyw3ICs1MSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYXVkaW8oKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBib29sIHZpZGVvKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhU3Ry
ZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVF1ZXJ5KGNvbnN0IE1lZGlhU3RyZWFt
U291cmNlVmVjdG9yJikgPSAwOwogfTsKIAogY2xhc3MgTWVkaWFTdHJlYW1DZW50ZXIgewpAQCAt
NjMsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IGFkZCBhIHdheSB0byBtdXRlIGEg
TWVkaWFTdHJlYW1Tb3VyY2UgZnJvbSB0aGUgV2ViS2l0IEFQSSBsYXllcgogCiAgICAgLy8gQ2Fs
bHMgZnJvbSB0aGUgRE9NIG9iamVjdHMgdG8gbm90aWZ5IHRoZSBwbGF0Zm9ybQotICAgIHZvaWQg
ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiwgdW5z
aWduZWQgY29tcG9uZW50SW5kZXgpOworICAgIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFja0Vu
YWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiwgc2l6ZV90IHRyYWNrSW5kZXgpOwogICAgIHZv
aWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7CiAgICAg
dm9pZCBkaWRDb25zdHJ1Y3RNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsKIApA
QCAtNzIsNiArNzYsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIE1lZGlhU3RyZWFtQ2Vu
dGVyKCk7CisKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBPd25QdHI8TWVkaWFTdHJlYW1D
ZW50ZXJJbnRlcm5hbD4gbV9wcml2YXRlOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggMmU1OWY4YzFmNjYxNzUyZGFi
OTI1ZDFkNjVmNjMwYTRjZmU0MmU4My4uYjA4ZDVlYWYyZmM1NGMwOTcxYTUwZmI1ODU3ZmNmNDBh
YmFhZDZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtOTAsOSArOTAsMTQgQEAK
ICAgICAgICAgICAgICAgICAnV0VCS0lUX0lNUExFTUVOVEFUSU9OPTEnLAogICAgICAgICAgICAg
XSwKICAgICAgICAgICAgICdzb3VyY2VzJzogWworICAgICAgICAgICAgICAgICdicmlkZ2UvTWVk
aWFTdHJlYW1DZW50ZXIuY3BwJywKKyAgICAgICAgICAgICAgICAnYnJpZGdlL01lZGlhU3RyZWFt
Q2VudGVySW50ZXJuYWwuY3BwJywKKyAgICAgICAgICAgICAgICAnYnJpZGdlL01lZGlhU3RyZWFt
Q2VudGVySW50ZXJuYWwuaCcsCiAgICAgICAgICAgICAgICAgJ2JyaWRnZS9QZWVyQ29ubmVjdGlv
bkhhbmRsZXIuY3BwJywKICAgICAgICAgICAgICAgICAnYnJpZGdlL1BlZXJDb25uZWN0aW9uSGFu
ZGxlckludGVybmFsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ2JyaWRnZS9QZWVyQ29ubmVjdGlv
bkhhbmRsZXJJbnRlcm5hbC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dl
Yk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJs
aWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uLmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYkFjY2Vzc2liaWxpdHlSb2xlLmgnLApAQCAtNTk0LDYgKzU5OSw3IEBACiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYk1lZGlhU3RyZWFtUmVnaXN0cnkuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYk1lZGlhU3RyZWFtU291cmNlLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRp
YVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
TmFtZWROb2RlTWFwLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOZXR3b3JrU3RhdGVO
b3RpZmllci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTm9kZS5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ3MzM5NGRmNWVlM2EzNDg5OTZiMjE2YWZiYTdhMDI2NjMwNGMwYjYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNl
bnRlci5jcHAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgorCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFt
RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworTWVkaWFTdHJlYW1DZW50ZXI6Ok1lZGlhU3RyZWFtQ2VudGVyKCkKKyAgICA6
IG1fcHJpdmF0ZShhZG9wdFB0cihuZXcgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbCh0aGlzKSkp
Cit7Cit9CisKK01lZGlhU3RyZWFtQ2VudGVyOjp+TWVkaWFTdHJlYW1DZW50ZXIoKQoreworfQor
Cit2b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiBjbGllbnQpCit7CisgICAgbV9wcml2
YXRlLT5xdWVyeU1lZGlhU3RyZWFtU291cmNlcyhjbGllbnQpOworfQorCit2b2lkIE1lZGlhU3Ry
ZWFtQ2VudGVyOjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbURlc2Ny
aXB0b3IqIHN0cmVhbSwgc2l6ZV90IHRyYWNrSW5kZXgpCit7CisgICAgbV9wcml2YXRlLT5kaWRT
ZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChzdHJlYW0sIHRyYWNrSW5kZXgpOworfQorCit2b2lk
IE1lZGlhU3RyZWFtQ2VudGVyOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURl
c2NyaXB0b3IqIHN0cmVhbSkKK3sKKyAgICBtX3ByaXZhdGUtPmRpZFN0b3BMb2NhbE1lZGlhU3Ry
ZWFtKHN0cmVhbSk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OmRpZENvbnN0cnVjdE1l
ZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKQoreworICAgIG1fcHJpdmF0
ZS0+ZGlkQ29uc3RydWN0TWVkaWFTdHJlYW0oc3RyZWFtKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5h
bC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2IwZmUzNGZhMTdjM2NlYTA4NTU5MjFmOGE1YmNlNmU4ODJjODMx
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL01lZGlh
U3RyZWFtQ2VudGVySW50ZXJuYWwuY3BwCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1D
ZW50ZXJJbnRlcm5hbC5oIgorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKKyNpbmNs
dWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgIldlYktpdC5oIgorI2luY2x1ZGUg
InBsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dl
Yk1lZGlhU3RyZWFtQ2VudGVyLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVl
cnlDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYVN0cmVhbUNlbnRlcklu
dGVybmFsOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsKE1lZGlhU3RyZWFtQ2VudGVyKiBvd25l
cikKKyAgICA6IG1fcHJpdmF0ZShXZWJLaXQ6OndlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5tZWRp
YVN0cmVhbUNlbnRlcih0aGlzKSkKKyAgICAsIG1fb3duZXIob3duZXIpCit7Cit9CisKK3ZvaWQg
TWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4gY2xpZW50KQoreworICAgIC8vIEZJ
WE1FOiBSZW1vdmUgdGhpcyAic2hvcnQtY2lyY3VpdCIgYW5kIGZvcndhcmQgdG8gbV9wcml2YXRl
IHdoZW4gQ2hyb21lIGhhcyBpbXBsZW1lbnRlZCBXZWJNZWRpYVN0cmVhbUNlbnRlci4KKyAgICBN
ZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBzb3VyY2VzOworICAgIGNsaWVudC0+ZGlkQ29tcGxldGVR
dWVyeShzb3VyY2VzKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpkaWRT
ZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbSwg
c2l6ZV90IHRyYWNrSW5kZXgpCit7CisgICAgaWYgKG1fcHJpdmF0ZSkKKyAgICAgICAgbV9wcml2
YXRlLT5kaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChzdHJlYW0sIHRyYWNrSW5kZXgpOwor
fQorCit2b2lkIE1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OmRpZFN0b3BMb2NhbE1lZGlhU3Ry
ZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKQoreworICAgIGlmIChtX3ByaXZhdGUp
CisgICAgICAgIG1fcHJpdmF0ZS0+ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oc3RyZWFtKTsKK30K
Kwordm9pZCBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpkaWRDb25zdHJ1Y3RNZWRpYVN0cmVh
bShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbSkKK3sKKyAgICBpZiAobV9wcml2YXRlKQor
ICAgICAgICBtX3ByaXZhdGUtPmRpZENvbnN0cnVjdE1lZGlhU3RyZWFtKHN0cmVhbSk7Cit9CisK
K3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6c3RvcExvY2FsTWVkaWFTdHJlYW0oY29u
c3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImIHN0cmVhbSkKK3sKKyAgICBtX293
bmVyLT5lbmRMb2NhbE1lZGlhU3RyZWFtKHN0cmVhbSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2RmY2VkMmIzNjUzYTU3YTJhZDRhNmZkNTI5MGQ0ODZjMDQyZTkwOQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL01lZGlhU3RyZWFt
Q2VudGVySW50ZXJuYWwuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVN0cmVhbUNlbnRl
ckludGVybmFsX2gKKyNkZWZpbmUgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbF9oCisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1D
ZW50ZXJDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKK2NsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyOworfQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIE1lZGlhU3RyZWFtQ2VudGVyOworY2xhc3MgTWVkaWFTdHJlYW1EZXNj
cmlwdG9yOworY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ7CisKK2NsYXNzIE1l
ZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwgOiBwdWJsaWMgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNl
bnRlckNsaWVudCB7CitwdWJsaWM6CisgICAgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbChNZWRp
YVN0cmVhbUNlbnRlciopOworCisgICAgdm9pZCBxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50Pik7CisgICAgdm9pZCBkaWRTZXRN
ZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbURlc2NyaXB0b3IqLCBzaXplX3QgdHJh
Y2tJbmRleCk7CisgICAgdm9pZCBkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURl
c2NyaXB0b3IqKTsKKyAgICB2b2lkIGRpZENvbnN0cnVjdE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFt
RGVzY3JpcHRvciopOworCisgICAgLy8gRnJvbSBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVy
Q2xpZW50LgorICAgIHZpcnR1YWwgdm9pZCBzdG9wTG9jYWxNZWRpYVN0cmVhbShjb25zdCBXZWJL
aXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpOworCitwcml2YXRlOgorICAgIFdlYktpdDo6
V2ViTWVkaWFTdHJlYW1DZW50ZXIqIG1fcHJpdmF0ZTsKKyAgICBNZWRpYVN0cmVhbUNlbnRlciog
bV9vd25lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktp
dFBsYXRmb3JtU3VwcG9ydC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZv
cm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKaW5kZXggNmMwZTc0ZjEyOTcyYzdmMzc0NjM0MGFm
ZjY5YjMxMmRjMjVjYTFlOS4uMGQ4YWUyYjEyYjcwNmMxYjdlM2I2OWIzYjBlYjNiYjhhMWExNTI3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
S2l0UGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKQEAgLTYwLDYgKzYwLDggQEAgY2xhc3Mg
V2ViRmlsZVV0aWxpdGllczsKIGNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgV2Vi
SURCRmFjdG9yeTsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/CiBjbGFz
cyBXZWJJREJLZXk7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25nIGluIHBsYXRmb3JtPworY2xh
c3MgV2ViTWVkaWFTdHJlYW1DZW50ZXI7CitjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVu
dDsKIGNsYXNzIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbDsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxv
bmcgaW4gcGxhdGZvcm0/CiBjbGFzcyBXZWJNaW1lUmVnaXN0cnk7CiBjbGFzcyBXZWJQZWVyQ29u
bmVjdGlvbkhhbmRsZXI7CkBAIC0zMzQsNiArMzM2LDcgQEAgcHVibGljOgogCiAgICAgLy8gTWF5
IHJldHVybiBudWxsIGlmIFdlYlJUQyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBhdmFsaWFibGUgb3Ig
b3V0IG9mIHJlc291cmNlcy4KICAgICB2aXJ0dWFsIFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlciog
Y3JlYXRlUGVlckNvbm5lY3Rpb25IYW5kbGVyKFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVu
dCopIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFdlYk1lZGlhU3RyZWFtQ2VudGVyKiBtZWRp
YVN0cmVhbUNlbnRlcihXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudCopIHsgcmV0dXJuIDA7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFdvcmtlclJ1bkxvb3AoY29uc3QgV2ViV29ya2Vy
UnVuTG9vcCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wV29ya2VyUnVuTG9vcChjb25z
dCBXZWJXb3JrZXJSdW5Mb29wJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlci5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jZDdkOTJmYjI2MmQxODQxMmIwNDk3OWQ2NTg4OGIxZTNlMjY5N2Q1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFT
dHJlYW1DZW50ZXIuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVN0cmVhbUNlbnRl
cl9oCisjZGVmaW5lIFdlYk1lZGlhU3RyZWFtQ2VudGVyX2gKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKK2NsYXNzIFdlYk1lZGlhU3RyZWFt
U291cmNlc1F1ZXJ5Q2xpZW50OworCitjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlciB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB2b2lkIHF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKGNvbnN0IFdlYk1l
ZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRT
ZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChjb25zdCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3Im
LCBzaXplX3QgdHJhY2tJbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wTG9jYWxN
ZWRpYVN0cmVhbShjb25zdCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRpZENvbnN0cnVjdE1lZGlhU3RyZWFtKGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVz
Y3JpcHRvciYpID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfldlYk1lZGlhU3RyZWFt
Q2VudGVyKCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdl
Yk1lZGlhU3RyZWFtQ2VudGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhhMDgyNWY5MGZmMGM3ZDE1MzUxNzU2NTdlMGNlYWYyNzhlMDU0MmMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk1l
ZGlhU3RyZWFtQ2VudGVyQ2xpZW50X2gKKyNkZWZpbmUgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGll
bnRfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTWVkaWFTdHJlYW1EZXNjcmlw
dG9yOworCitjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+V2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBzdG9wTG9jYWxNZWRpYVN0cmVhbShjb25zdCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3Im
KSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYk1lZGlh
U3RyZWFtQ2VudGVyQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKaW5k
ZXggNTJjNjNkMzIxYThiYTIxNzk1ZmU0OGIzYjYxZjc1ZDJiN2ZjNzBmMi4uNDdhZDMxNzY0YTRj
YmVmNzVmMWIyNWNmOGFmYzgyY2M3YzQ0Mzg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNj
cmlwdG9yLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBzb3VyY2VzKFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKSBjb25zdDsKIAogI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcihXZWJD
b3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsKICAgICBXZWJNZWRpYVN0cmVhbURlc2NyaXB0
b3IoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcj4m
KTsKICAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNj
cmlwdG9yPigpIGNvbnN0OwogICAgIG9wZXJhdG9yIFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3Jp
cHRvciooKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNs
aWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFkOGZjNGJlYjE0N2E5N2IyZjYzODZiMzA5Y2JhNjYyMjFkZDJi
NWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5oCkBAIC0wLDAgKzEsNzAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50X2gKKyNkZWZpbmUgV2ViTWVk
aWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnRfaAorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29t
bW9uLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1lZGlhU3RyZWFtU291cmNlOwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGNsYXNzIFdlYlZlY3RvcjsKKworCitjbGFzcyBXZWJNZWRpYVN0cmVhbVNv
dXJjZXNRdWVyeUNsaWVudCB7CitwdWJsaWM6CisgICAgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVl
cnlDbGllbnQoKSB7IH0KKyAgICB+V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQoKSB7
IHJlc2V0KCk7IH0KKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworICAgIGJvb2wg
aXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOyB9CisKKyAgICBXRUJL
SVRfRVhQT1JUIGJvb2wgYXVkaW8oKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgdmlk
ZW8oKSBjb25zdDsKKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBkaWRDb21wbGV0ZVF1ZXJ5KGNv
bnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKTsKKworI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgorICAgIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50KGNvbnN0IFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4mKTsK
KyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6TWVkaWFTdHJl
YW1Tb3VyY2VzUXVlcnlDbGllbnQ+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlw
dG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3Jp
cHRvci5jcHAKaW5kZXggMGNmNTNjMGViZmEwYmEwMzIxZmNkYTY1OTc1OGYzY2VlYzg0OGVlZi4u
ODcxMmNiY2YyNGQzMTRlMDhlYmZmMjIwZGM0Y2ZiYTM2YTVkYjA5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3Bw
CkBAIC01MCw2ICs1MCwxMSBAQCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I6OldlYk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcihjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZAogewogfQogCitXZWJN
ZWRpYVN0cmVhbURlc2NyaXB0b3I6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcihXZWJDb3JlOjpN
ZWRpYVN0cmVhbURlc2NyaXB0b3IqIG1lZGlhU3RyZWFtRGVzY3JpcHRvcikKKyAgICA6IG1fcHJp
dmF0ZShtZWRpYVN0cmVhbURlc2NyaXB0b3IpCit7Cit9CisKIHZvaWQgV2ViTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yOjpyZXNldCgpCiB7CiAgICAgbV9wcml2YXRlLnJlc2V0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJj
ZXNRdWVyeUNsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA3Njc5NmVmMmFiYzM1MDRhNjk0OGM1YjFh
ZGNiMzNlZDhkNGRhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmNwcApAQCAtMCwwICsxLDg2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1
ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmgiCisKKyNpbmNs
dWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgi
CisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJWZWN0b3IuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViTWVkaWFTdHJlYW1T
b3VyY2VzUXVlcnlDbGllbnQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50KGNvbnN0
IFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+JiBxdWVy
eUNsaWVudCkKKyAgICA6IG1fcHJpdmF0ZShxdWVyeUNsaWVudCkKK3sKK30KKwordm9pZCBXZWJN
ZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6cmVzZXQoKQoreworICAgIG1fcHJpdmF0ZS5y
ZXNldCgpOworfQorCitib29sIFdlYk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OjphdWRp
bygpIGNvbnN0Cit7CisgICAgaWYgKCFpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+YXVkaW8oKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgV2ViTWVkaWFTdHJlYW1T
b3VyY2VzUXVlcnlDbGllbnQ6OnZpZGVvKCkgY29uc3QKK3sKKyAgICBpZiAoIWlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gbV9wcml2YXRlLT52aWRlbygpOworICAgIHJldHVybiBmYWxzZTsKK30K
Kwordm9pZCBXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDo6ZGlkQ29tcGxldGVRdWVy
eShjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBzb3VyY2VzKQoreworICAg
IGlmICghaXNOdWxsKCkpIHsKKyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgczsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzb3VyY2VzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZSogY3VyciA9IHNvdXJjZXNbaV07CisgICAgICAgICAg
ICBzLmFwcGVuZChjdXJyKTsKKyAgICAgICAgfQorICAgICAgICBtX3ByaXZhdGUtPmRpZENvbXBs
ZXRlUXVlcnkocyk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123538</attachid>
            <date>2012-01-23 04:08:39 -0800</date>
            <delta_ts>2012-01-25 05:38:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73130-20120123130837.patch</filename>
            <type>text/plain</type>
            <size>34361</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg5NmNiMTE0YmJlNjJh
NzM5YzVjYTExODA1NWNmOGQ2YzQ4ZDJmZi4uMWMyNzUyZGFhYzY3ZTRhMjYzMGEwOGExYzUwNTJh
NDY4M2M3YWRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAxLTIzICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TWVkaWFTdHJlYW0gQVBJOiBBZGRpbmcgdGhlIGVtYmVkZGluZyBjb2RlIGZvciBNZWRpYVN0cmVh
bUNlbnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzMxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0cyBmb3IgdGhlIE1lZGlhIFN0cmVhbSBBUEkgd2lsbCBiZSBwcm92aWRlZCBieSB0aGUgYnVn
IDU2NTg3LCBwZW5kaW5nIGVub3VnaCBsYW5kZWQgY29kZS4KKworICAgICAgICAqIG1lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVx
dWVzdDo6ZGlkQ29tcGxldGVRdWVyeSk6CisgICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6YXVkaW8pOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6dmlkZW8pOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJs
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmg6
CisKIDIwMTItMDEtMjAgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBIQVIgcGFnZXJlZiBhdHRyaWJ1dGVzIGFyZSB3cm9uZyBh
bmQgaW5jb25zaXN0ZW50IHdpdGggcGFnZXMgYXJyYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggMjNmODViNzJkN2U4M2Q3NmZmMTg4OGY3MGRiZGU5YjRiZjMxYWI3My4uMWRhMjI0N2Fj
MmNmMGMxYTlkZTI1ZmIwODJhODY3Mjc3ZTI5ZDE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMi0wMS0yMyAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21t
eXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIE1lZGlhU3RyZWFtIEFQSTogQWRk
aW5nIHRoZSBlbWJlZGRpbmcgY29kZSBmb3IgTWVkaWFTdHJlYW1DZW50ZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTMwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAg
ICAqIGJyaWRnZS9NZWRpYVN0cmVhbUNlbnRlci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpNZWRpYVN0cmVhbUNlbnRlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6fk1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU2V0TWVkaWFTdHJlYW1U
cmFja0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0
b3BMb2NhbE1lZGlhU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVy
OjpkaWRDb25zdHJ1Y3RNZWRpYVN0cmVhbSk6CisgICAgICAgICogYnJpZGdlL01lZGlhU3RyZWFt
Q2VudGVySW50ZXJuYWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
Q2VudGVySW50ZXJuYWw6Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6ZGlkU2V0TWVk
aWFTdHJlYW1UcmFja0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50
ZXJJbnRlcm5hbDo6ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6ZGlkQ29uc3RydWN0TWVkaWFTdHJlYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6c3RvcExvY2FsTWVkaWFT
dHJlYW0pOgorICAgICAgICAqIGJyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmg6IEFk
ZGVkLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViS2l0UGxhdGZvcm1TdXBwb3J0OjptZWRpYVN0cmVhbUNlbnRl
cik6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRlcjo6fldlYk1lZGlhU3Ry
ZWFtQ2VudGVyKToKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50
ZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVy
Q2xpZW50Ojp+V2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9w
bGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBwdWJsaWMvcGxh
dGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2Vz
UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Q6
On5XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFTdHJlYW1Tb3VyY2VzUmVxdWVzdDo6aXNOdWxsKToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFT
dHJlYW1EZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNj
cmlwdG9yOjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IpOgorICAgICAgICAqIHNyYy9XZWJNZWRp
YVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcC4KKyAgICAgICAgKFdlYktpdDo6
V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVz
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Q6OnJlc2V0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdDo6YXVkaW8p
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0Ojp2aWRlbyk6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Q6OmRpZENvbXBs
ZXRlUXVlcnkpOgorCiAyMDEyLTAxLTIxICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBJbmNyZW1lbnRhbCB0ZXh0dXJlIHVwZGF0ZXMg
YXJlIG5vdCBhdG9taWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRp
YVJlcXVlc3QuY3BwCmluZGV4IGJhNmMzYTRjMjQwOGRiZGEzYzEwOWJiOWFmNmNiZWU5YTFlNzUz
MzcuLjhiZWE0OTMyZjFhMDc3MDE4NmU3ZjhiMTQxYmViNTgzOTAzMjZiNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCkBAIC03MSw3ICs3
MSw3IEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoKQogICAgIE1lZGlhU3RyZWFtQ2Vu
dGVyOjppbnN0YW5jZSgpLnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKHRoaXMpOwogfQogCi12b2lk
IFVzZXJNZWRpYVJlcXVlc3Q6Om1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGNvbnN0
IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzKQordm9pZCBVc2VyTWVkaWFSZXF1ZXN0
OjpkaWRDb21wbGV0ZVF1ZXJ5KGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2Vz
KQogewogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPnJlcXVlc3RVc2VyTWVk
aWEodGhpcywgc291cmNlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFSZXF1ZXN0LmgKaW5kZXggMmUyM2JhYzI5NDU4Y2E5MTNiNmU3Y2JiZjFmNzQzNzI5ODhmYTVk
OC4uMDA5MzQ0ZDA0YzVkOTdlMTJlZTM3MjQ2MTQ4YjdlZTRhM2VlY2JlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaApAQCAtNTEsOSArNTEsNiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVc2VyTWVkaWFDbGllbnQqLCBjb25zdCBTdHJpbmcm
IG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwg
UGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPik7CiAgICAgflVzZXJN
ZWRpYVJlcXVlc3QoKTsKIAotICAgIGJvb2wgYXVkaW8oKSBjb25zdCB7IHJldHVybiBtX2F1ZGlv
OyB9Ci0gICAgYm9vbCB2aWRlbygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW87IH0KLQogICAgIGJv
b2wgY2FtZXJhUHJlZmVyZW5jZVVzZXIoKSBjb25zdCB7IHJldHVybiBtX2NhbWVyYVByZWZlcmVu
Y2VVc2VyOyB9CiAgICAgYm9vbCBjYW1lcmFQcmVmZXJlbmNlRW52aXJvbm1lbnQoKSBjb25zdCB7
IHJldHVybiBtX2NhbWVyYVByZWZlcmVuY2VFbnZpcm9ubWVudDsgfQogCkBAIC02MSwxMSArNTgs
MTUgQEAgcHVibGljOgogICAgIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2sqIGVycm9y
Q2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2Vycm9yQ2FsbGJhY2suZ2V0KCk7IH0KIAogICAg
IHZvaWQgc3RhcnQoKTsKLSAgICB2b2lkIG1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVk
KGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJik7CiAKICAgICB2b2lkIHN1Y2NlZWQoY29u
c3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKICAgICB2b2lkIGZhaWwoKTsKIAorICAgIC8v
IE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50CisgICAgdmlydHVhbCBib29sIGF1ZGlvKCkg
Y29uc3QgeyByZXR1cm4gbV9hdWRpbzsgfQorICAgIHZpcnR1YWwgYm9vbCB2aWRlbygpIGNvbnN0
IHsgcmV0dXJuIG1fdmlkZW87IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVRdWVyeShj
b25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpOworCiAgICAgLy8gQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXIKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNl
bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bUNlbnRlci5jcHAKaW5kZXggYzQ4YTg2Njk4ZGZhODZlZGMzMjI5Y2E5MTFhMzkxNzQ0YTZiNTc1
MC4uZWFjMGU4MTQzNGE1MjAxMGU0YWM0YWEzN2U0ZDY0MzRhZTcyNGI1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2Vu
dGVyLmNwcApAQCAtNTUsOCArNTUsOSBAQCB2b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjplbmRMb2Nh
bE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtRGVzY3JpcAogICAgICAg
ICBzdHJlYW1EZXNjcmlwdG9yLT5zZXRFbmRlZCgpOwogfQogCi0vLyBGSVhNRTogcmVtb3ZlIHdo
ZW4gcmVhbCBpbXBsZW1lbnRhdGlvbnMgYXJlIGF2YWlsYWJsZQotLy8gRW1wdHkgaW1wbGVtZW50
YXRpb25zIGZvciBwb3J0cyB0aGF0IGJ1aWxkIHdpdGggTUVESUFfU1RSRUFNIGVuYWJsZWQgYnkg
ZGVmYXVsdC4KKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCisKKy8vIEVtcHR5IGltcGxlbWVudGF0
aW9ucyBmb3IgcG9ydHMgdGhhdCBidWlsZCB3aXRoIE1FRElBX1NUUkVBTSBlbmFibGVkIGJ5IGRl
ZmF1bHQsIGJ1dCBoYXZlbid0IHlldCBpbXBsZW1lbnRlZCBNZWRpYVN0cmVhbUNlbnRlci4KIAog
TWVkaWFTdHJlYW1DZW50ZXI6Ok1lZGlhU3RyZWFtQ2VudGVyKCkKIHsKQEAgLTY5LDEwICs3MCwx
MCBAQCBNZWRpYVN0cmVhbUNlbnRlcjo6fk1lZGlhU3RyZWFtQ2VudGVyKCkKIHZvaWQgTWVkaWFT
dHJlYW1DZW50ZXI6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1Tb3VyY2VzUXVlcnlDbGllbnQ+IGNsaWVudCkKIHsKICAgICBNZWRpYVN0cmVhbVNvdXJjZVZl
Y3RvciBzb3VyY2VzOwotICAgIGNsaWVudC0+bWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0
ZWQoc291cmNlcyk7CisgICAgY2xpZW50LT5kaWRDb21wbGV0ZVF1ZXJ5KHNvdXJjZXMpOwogfQog
Ci12b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChN
ZWRpYVN0cmVhbURlc2NyaXB0b3IqLCB1bnNpZ25lZCkKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6
OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvciosIHNp
emVfdCkKIHsKIH0KIApAQCAtODQsNiArODUsOCBAQCB2b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjpk
aWRDb25zdHJ1Y3RNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKQogewogfQogCisj
ZW5kaWYgLy8gIVBMQVRGT1JNKENIUk9NSVVNKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgKaW5kZXggMjA4YmQx
MGJkZmI0NmVkY2VhMTY5NTc5MGIxZmYzMDI0MmI2OWY2Yy4uODg0NTUwZWM0OGUyOTIwNDg1NmJl
Yjg3NmVkZDgzYTYxNWIyMmY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oCkBAIC0zOCw2ICszOCwxMCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKK2NsYXNzIE1l
ZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw7CisjZW5kaWYKKwogY2xhc3MgTWVkaWFTdHJlYW1EZXNj
cmlwdG9yOwogCiBjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudCA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiB7CkBAIC00Nyw3ICs1MSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYXVkaW8oKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBib29sIHZpZGVvKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhU3Ry
ZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVF1ZXJ5KGNvbnN0IE1lZGlhU3RyZWFt
U291cmNlVmVjdG9yJikgPSAwOwogfTsKIAogY2xhc3MgTWVkaWFTdHJlYW1DZW50ZXIgewpAQCAt
NjMsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IGFkZCBhIHdheSB0byBtdXRlIGEg
TWVkaWFTdHJlYW1Tb3VyY2UgZnJvbSB0aGUgV2ViS2l0IEFQSSBsYXllcgogCiAgICAgLy8gQ2Fs
bHMgZnJvbSB0aGUgRE9NIG9iamVjdHMgdG8gbm90aWZ5IHRoZSBwbGF0Zm9ybQotICAgIHZvaWQg
ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiwgdW5z
aWduZWQgY29tcG9uZW50SW5kZXgpOworICAgIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFja0Vu
YWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiwgc2l6ZV90IHRyYWNrSW5kZXgpOwogICAgIHZv
aWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7CiAgICAg
dm9pZCBkaWRDb25zdHJ1Y3RNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsKIApA
QCAtNzIsNiArNzYsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIE1lZGlhU3RyZWFtQ2Vu
dGVyKCk7CisKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBPd25QdHI8TWVkaWFTdHJlYW1D
ZW50ZXJJbnRlcm5hbD4gbV9wcml2YXRlOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggZWJlMThhYjA4YmZlODBhNTFm
YTVlMjdmY2QyZGZiM2MyNDJjYmQyZS4uZmFmNmU4ODY4M2RlZTBiMTM2NzQxYTVkZTVhNzRkMmQ2
ZjhkYzg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtOTEsNiArOTEsOSBAQAog
ICAgICAgICAgICAgICAgICdXRUJLSVRfSU1QTEVNRU5UQVRJT049MScsCiAgICAgICAgICAgICBd
LAogICAgICAgICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICAgICAgICAgJ2JyaWRnZS9NZWRp
YVN0cmVhbUNlbnRlci5jcHAnLAorICAgICAgICAgICAgICAgICdicmlkZ2UvTWVkaWFTdHJlYW1D
ZW50ZXJJbnRlcm5hbC5jcHAnLAorICAgICAgICAgICAgICAgICdicmlkZ2UvTWVkaWFTdHJlYW1D
ZW50ZXJJbnRlcm5hbC5oJywKICAgICAgICAgICAgICAgICAnYnJpZGdlL1BlZXJDb25uZWN0aW9u
SGFuZGxlci5jcHAnLAogICAgICAgICAgICAgICAgICdicmlkZ2UvUGVlckNvbm5lY3Rpb25IYW5k
bGVySW50ZXJuYWwuY3BwJywKICAgICAgICAgICAgICAgICAnYnJpZGdlL1BlZXJDb25uZWN0aW9u
SGFuZGxlckludGVybmFsLmgnLApAQCAtMzEyLDggKzMxNSwxMCBAQAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvcGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmlldy5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL3BsYXRmb3JtL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJMb2NhbGl6ZWRTdHJpbmcuaCcsCisgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlci5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlLmgnLAorICAg
ICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVz
dC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYk5vbkNvcHlhYmxlLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViUGVlckNvbm5lY3Rpb25IYW5k
bGVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2xpZW50LmgnLApAQCAtNTk3LDYgKzYwMiw3IEBACiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYk1lZGlhU3RyZWFtUmVnaXN0cnkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk1l
ZGlhU3RyZWFtU291cmNlLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVN0cmVh
bVNvdXJjZXNSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOYW1lZE5vZGVN
YXAuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOb2RlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDczMzk0ZGY1ZWUzYTM0ODk5NmIyMTZhZmJhN2EwMjY2MzA0YzBiNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVyLmNwcApA
QCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCisKKyNpbmNsdWRlICJNZWRp
YVN0cmVhbUNlbnRlckludGVybmFsLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1EZXNjcmlwdG9y
LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitNZWRpYVN0cmVhbUNlbnRlcjo6TWVkaWFTdHJlYW1DZW50ZXIoKQorICAgIDogbV9wcml2YXRl
KGFkb3B0UHRyKG5ldyBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsKHRoaXMpKSkKK3sKK30KKwor
TWVkaWFTdHJlYW1DZW50ZXI6On5NZWRpYVN0cmVhbUNlbnRlcigpCit7Cit9CisKK3ZvaWQgTWVk
aWFTdHJlYW1DZW50ZXI6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+IGNsaWVudCkKK3sKKyAgICBtX3ByaXZhdGUtPnF1ZXJ5
TWVkaWFTdHJlYW1Tb3VyY2VzKGNsaWVudCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6
OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3Ry
ZWFtLCBzaXplX3QgdHJhY2tJbmRleCkKK3sKKyAgICBtX3ByaXZhdGUtPmRpZFNldE1lZGlhU3Ry
ZWFtVHJhY2tFbmFibGVkKHN0cmVhbSwgdHJhY2tJbmRleCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJl
YW1DZW50ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciog
c3RyZWFtKQoreworICAgIG1fcHJpdmF0ZS0+ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oc3RyZWFt
KTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkQ29uc3RydWN0TWVkaWFTdHJlYW0o
TWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0pCit7CisgICAgbV9wcml2YXRlLT5kaWRDb25z
dHJ1Y3RNZWRpYVN0cmVhbShzdHJlYW0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ODY1OTJhZDU0ZTUxODljNTg5MGJiMjdhYjAzZTIxMjAxOTM3NWE5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50
ZXJJbnRlcm5hbC5jcHAKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlckludGVy
bmFsLmgiCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgorI2luY2x1ZGUgIk1lZGlh
U3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiV2ViS2l0LmgiCisjaW5jbHVkZSAicGxhdGZvcm0v
V2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJl
YW1DZW50ZXIuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3Iu
aCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6TWVkaWFT
dHJlYW1DZW50ZXJJbnRlcm5hbChNZWRpYVN0cmVhbUNlbnRlciogb3duZXIpCisgICAgOiBtX3By
aXZhdGUoV2ViS2l0Ojp3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+bWVkaWFTdHJlYW1DZW50ZXIo
dGhpcykpCisgICAgLCBtX293bmVyKG93bmVyKQoreworfQorCit2b2lkIE1lZGlhU3RyZWFtQ2Vu
dGVySW50ZXJuYWw6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1Tb3VyY2VzUXVlcnlDbGllbnQ+IGNsaWVudCkKK3sKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRo
aXMgInNob3J0LWNpcmN1aXQiIGFuZCBmb3J3YXJkIHRvIG1fcHJpdmF0ZSB3aGVuIENocm9tZSBo
YXMgaW1wbGVtZW50ZWQgV2ViTWVkaWFTdHJlYW1DZW50ZXIuCisgICAgTWVkaWFTdHJlYW1Tb3Vy
Y2VWZWN0b3Igc291cmNlczsKKyAgICBjbGllbnQtPmRpZENvbXBsZXRlUXVlcnkoc291cmNlcyk7
Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6ZGlkU2V0TWVkaWFTdHJlYW1U
cmFja0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0sIHNpemVfdCB0cmFja0lu
ZGV4KQoreworICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+ZGlkU2V0TWVk
aWFTdHJlYW1UcmFja0VuYWJsZWQoc3RyZWFtLCB0cmFja0luZGV4KTsKK30KKwordm9pZCBNZWRp
YVN0cmVhbUNlbnRlckludGVybmFsOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVh
bURlc2NyaXB0b3IqIHN0cmVhbSkKK3sKKyAgICBpZiAobV9wcml2YXRlKQorICAgICAgICBtX3By
aXZhdGUtPmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKHN0cmVhbSk7Cit9CisKK3ZvaWQgTWVkaWFT
dHJlYW1DZW50ZXJJbnRlcm5hbDo6ZGlkQ29uc3RydWN0TWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yKiBzdHJlYW0pCit7CisgICAgaWYgKG1fcHJpdmF0ZSkKKyAgICAgICAgbV9wcml2
YXRlLT5kaWRDb25zdHJ1Y3RNZWRpYVN0cmVhbShzdHJlYW0pOworfQorCit2b2lkIE1lZGlhU3Ry
ZWFtQ2VudGVySW50ZXJuYWw6OnN0b3BMb2NhbE1lZGlhU3RyZWFtKGNvbnN0IFdlYktpdDo6V2Vi
TWVkaWFTdHJlYW1EZXNjcmlwdG9yJiBzdHJlYW0pCit7CisgICAgbV9vd25lci0+ZW5kTG9jYWxN
ZWRpYVN0cmVhbShzdHJlYW0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdk
ZmNlZDJiMzY1M2E1N2EyYWQ0YTZmZDUyOTBkNDg2YzA0MmU5MDkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFs
LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbF9oCisj
ZGVmaW5lIE1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWxfaAorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50Lmgi
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFz
cyBXZWJNZWRpYVN0cmVhbUNlbnRlcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBNZWRpYVN0cmVhbUNlbnRlcjsKK2NsYXNzIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKK2NsYXNz
IE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OworCitjbGFzcyBNZWRpYVN0cmVhbUNlbnRl
ckludGVybmFsIDogcHVibGljIFdlYktpdDo6V2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQgewor
cHVibGljOgorICAgIE1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwoTWVkaWFTdHJlYW1DZW50ZXIq
KTsKKworICAgIHZvaWQgcXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4pOworICAgIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFj
a0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiwgc2l6ZV90IHRyYWNrSW5kZXgpOworICAg
IHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7Cisg
ICAgdm9pZCBkaWRDb25zdHJ1Y3RNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsK
KworICAgIC8vIEZyb20gV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudC4KKyAgICB2
aXJ0dWFsIHZvaWQgc3RvcExvY2FsTWVkaWFTdHJlYW0oY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0
cmVhbURlc2NyaXB0b3ImKTsKKworcHJpdmF0ZToKKyAgICBXZWJLaXQ6OldlYk1lZGlhU3RyZWFt
Q2VudGVyKiBtX3ByaXZhdGU7CisgICAgTWVkaWFTdHJlYW1DZW50ZXIqIG1fb3duZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KQorCisjZW5kaWYgLy8gTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBv
cnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRm
b3JtU3VwcG9ydC5oCmluZGV4IDZjMGU3NGYxMjk3MmM3ZjM3NDYzNDBhZmY2OWIzMTJkYzI1Y2Ex
ZTkuLjBkOGFlMmIxMmI3MDZjMWI3ZTNiNjliM2IwZWIzYmI4YTFhMTUyNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3Vw
cG9ydC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktp
dFBsYXRmb3JtU3VwcG9ydC5oCkBAIC02MCw2ICs2MCw4IEBAIGNsYXNzIFdlYkZpbGVVdGlsaXRp
ZXM7CiBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIFdlYklEQkZhY3Rvcnk7IC8v
IEZJWE1FOiBEb2VzIHRoaXMgYmVsb25nIGluIHBsYXRmb3JtPwogY2xhc3MgV2ViSURCS2V5OyAv
LyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KK2NsYXNzIFdlYk1lZGlhU3Ry
ZWFtQ2VudGVyOworY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQ7CiBjbGFzcyBXZWJN
ZXNzYWdlUG9ydENoYW5uZWw7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25nIGluIHBsYXRmb3Jt
PwogY2xhc3MgV2ViTWltZVJlZ2lzdHJ5OwogY2xhc3MgV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVy
OwpAQCAtMzM0LDYgKzMzNiw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE1heSByZXR1cm4gbnVsbCBp
ZiBXZWJSVEMgZnVuY3Rpb25hbGl0eSBpcyBub3QgYXZhbGlhYmxlIG9yIG91dCBvZiByZXNvdXJj
ZXMuCiAgICAgdmlydHVhbCBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIGNyZWF0ZVBlZXJDb25u
ZWN0aW9uSGFuZGxlcihXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqKSB7IHJldHVybiAw
OyB9CisgICAgdmlydHVhbCBXZWJNZWRpYVN0cmVhbUNlbnRlciogbWVkaWFTdHJlYW1DZW50ZXIo
V2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQqKSB7IHJldHVybiAwOyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU3RhcnRXb3JrZXJSdW5Mb29wKGNvbnN0IFdlYldvcmtlclJ1bkxvb3AmKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcFdvcmtlclJ1bkxvb3AoY29uc3QgV2ViV29ya2VyUnVu
TG9vcCYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q3ZDkyZmIy
NjJkMTg0MTJiMDQ5NzlkNjU4ODhiMWUzZTI2OTdkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgK
QEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTWVkaWFTdHJlYW1DZW50ZXJfaAorI2RlZmluZSBX
ZWJNZWRpYVN0cmVhbUNlbnRlcl9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJN
ZWRpYVN0cmVhbURlc2NyaXB0b3I7CitjbGFzcyBXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNs
aWVudDsKKworY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXIgeworcHVibGljOgorICAgIHZpcnR1
YWwgdm9pZCBxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhjb25zdCBXZWJNZWRpYVN0cmVhbVNvdXJj
ZXNRdWVyeUNsaWVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1U
cmFja0VuYWJsZWQoY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJiwgc2l6ZV90IHRyYWNr
SW5kZXgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oY29u
c3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
b25zdHJ1Y3RNZWRpYVN0cmVhbShjb25zdCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImKSA9IDA7
CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5XZWJNZWRpYVN0cmVhbUNlbnRlcigpIHsgfQor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJNZWRpYVN0cmVhbUNl
bnRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YTA4MjVmOTBmZjBjN2QxNTM1MTc1NjU3ZTBjZWFmMjc4ZTA1NDJjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1D
ZW50ZXJDbGllbnQuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVN0cmVhbUNlbnRl
ckNsaWVudF9oCisjZGVmaW5lIFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50X2gKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKKworY2xhc3Mg
V2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYk1l
ZGlhU3RyZWFtQ2VudGVyQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcExvY2Fs
TWVkaWFTdHJlYW0oY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJikgPSAwOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJNZWRpYVN0cmVhbUNlbnRlckNs
aWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCmluZGV4IGY5MTVhN2U4YTQ3
MzVhYjlmYzM2ZmM4M2I5Y2U3MGVkODhlNWE5NDcuLjk3MmQzNTlhNDM2ZDFlY2FkN2Y5NTA2ZGQ5
MGZkNmU4ODVlYzUwNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCkBAIC02
MCw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc291cmNlcyhXZWJW
ZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JikgY29uc3Q7CiAKICNpZiBXRUJLSVRfSU1QTEVN
RU5UQVRJT04KKyAgICBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IoV2ViQ29yZTo6TWVkaWFTdHJl
YW1EZXNjcmlwdG9yKik7CiAgICAgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I+Jik7CiAgICAgb3BlcmF0
b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcj4oKSBjb25z
dDsKICAgICBvcGVyYXRvciBXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3IqKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJN
ZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2U5
ODU3ZTAwZmYyNjU4ODM4NGQ4MTMxYzNmYWFkZTUxNGQ0ODk2MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291
cmNlc1JlcXVlc3QuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVN0cmVhbVNvdXJj
ZXNSZXF1ZXN0X2gKKyNkZWZpbmUgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdF9oCisKKyNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2
YXRlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE1lZGlhU3RyZWFtU291cmNl
c1F1ZXJ5Q2xpZW50OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTWVkaWFT
dHJlYW1Tb3VyY2U7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2ViVmVjdG9yOworCisK
K2NsYXNzIFdlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QgeworcHVibGljOgorICAgIFdlYk1l
ZGlhU3RyZWFtU291cmNlc1JlcXVlc3QoKSB7IH0KKyAgICB+V2ViTWVkaWFTdHJlYW1Tb3VyY2Vz
UmVxdWVzdCgpIHsgcmVzZXQoKTsgfQorCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7
CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7IH0K
KworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBhdWRpbygpIGNvbnN0OworICAgIFdFQktJVF9FWFBP
UlQgYm9vbCB2aWRlbygpIGNvbnN0OworCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGRpZENvbXBs
ZXRlUXVlcnkoY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYpOworCisjaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdChj
b25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGll
bnQ+Jik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3RfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNj
cmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtRGVz
Y3JpcHRvci5jcHAKaW5kZXggZWNkYWU5MjExNDU3NTM4M2E0NjAxNTY5YzgwNzc5OTA3YjgzYmM3
NS4uNGNhZTg5OGE4ZWIyOWUxMDIzMDIwNzM3MGVmZGIxZmNlY2ZhOTIwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3Iu
Y3BwCkBAIC01MCw2ICs1MCwxMSBAQCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I6OldlYk1lZGlh
U3RyZWFtRGVzY3JpcHRvcihjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZAogewogfQogCitX
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcihXZWJDb3Jl
OjpNZWRpYVN0cmVhbURlc2NyaXB0b3IqIG1lZGlhU3RyZWFtRGVzY3JpcHRvcikKKyAgICA6IG1f
cHJpdmF0ZShtZWRpYVN0cmVhbURlc2NyaXB0b3IpCit7Cit9CisKIHZvaWQgV2ViTWVkaWFTdHJl
YW1EZXNjcmlwdG9yOjpyZXNldCgpCiB7CiAgICAgbV9wcml2YXRlLnJlc2V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtU291cmNl
c1JlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyODk4YTJjNWFhNjg1MTkyMmY4YTMzMzJkNWQwZWFh
M2NiZGMwZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmNwcApAQCAtMCwwICsxLDg2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgInBsYXRm
b3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuaCIKKworI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtQ2VudGVyLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZl
Y3Rvci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0
OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6
TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+JiBxdWVyeUNsaWVudCkKKyAgICA6IG1fcHJp
dmF0ZShxdWVyeUNsaWVudCkKK3sKK30KKwordm9pZCBXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1
ZXN0OjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK2Jvb2wgV2ViTWVk
aWFTdHJlYW1Tb3VyY2VzUmVxdWVzdDo6YXVkaW8oKSBjb25zdAoreworICAgIGlmICghaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiBtX3ByaXZhdGUtPmF1ZGlvKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIFdlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Q6OnZpZGVvKCkgY29uc3QK
K3sKKyAgICBpZiAoIWlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbV9wcml2YXRlLT52aWRlbygp
OworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1
ZXN0OjpkaWRDb21wbGV0ZVF1ZXJ5KGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJj
ZT4mIHNvdXJjZXMpCit7CisgICAgaWYgKCFpc051bGwoKSkgeworICAgICAgICBNZWRpYVN0cmVh
bVNvdXJjZVZlY3RvciBzOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNvdXJjZXMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIE1lZGlhU3RyZWFtU291cmNlKiBjdXJyID0gc291
cmNlc1tpXTsKKyAgICAgICAgICAgIHMuYXBwZW5kKGN1cnIpOworICAgICAgICB9CisgICAgICAg
IG1fcHJpdmF0ZS0+ZGlkQ29tcGxldGVRdWVyeShzKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123927</attachid>
            <date>2012-01-25 05:38:32 -0800</date>
            <delta_ts>2012-01-26 04:31:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73130-20120125143830.patch</filename>
            <type>text/plain</type>
            <size>44850</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWY0ZTQyMTMxNjViOGJh
OGI3NWU4YWNiYjQxYTgyNzVkZTg4NjgwZC4uODE2M2Y1MTcyZDE3MTVhNzg4NjJkYjI2OTJhNzhi
ZTcxOGFkMDU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAxLTI1ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TWVkaWFTdHJlYW0gQVBJOiBBZGRpbmcgdGhlIGVtYmVkZGluZyBjb2RlIGZvciBNZWRpYVN0cmVh
bUNlbnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzMxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0cyBmb3IgdGhlIE1lZGlhIFN0cmVhbSBBUEkgd2lsbCBiZSBwcm92aWRlZCBieSB0aGUgYnVn
IDU2NTg3LCBwZW5kaW5nIGVub3VnaCBsYW5kZWQgY29kZS4KKworICAgICAgICAqIG1lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVx
dWVzdDo6ZGlkQ29tcGxldGVRdWVyeSk6CisgICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5oOgorICAgICAgICAoVXNlck1lZGlhUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpVc2VyTWVkaWFSZXF1ZXN0OjphdWRpbyk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFS
ZXF1ZXN0Ojp2aWRlbyk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpjYW1l
cmFQcmVmZXJlbmNlVXNlcik6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Ojpj
YW1lcmFQcmVmZXJlbmNlRW52aXJvbm1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXI6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudCk6Cisg
ICAgICAgIChNZWRpYVN0cmVhbUNlbnRlcik6CisKIDIwMTItMDEtMjUgIFJvbGFuZCBTdGVpbmVy
ICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgPHN0eWxlIHNjb3BlZD46
IEltcGxlbWVudCByZWdpc3RlcmluZyBvZiA8c3R5bGUgc2NvcGVkPiB3aXRoIHRoZSBzY29waW5n
IGVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNmRjMDBjZDliM2IzODA4OWRj
NTE1OTNlZjY1Njc0OWU0YmNhODE0NC4uYTlhN2Y3YjUxZjhlMmQ0YzJjODZkNWMzOWUwMjI0ZDFk
N2U2OWFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OCBAQAorMjAx
Mi0wMS0yNSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBbY2hyb21pdW1dIE1lZGlhU3RyZWFtIEFQSTogQWRkaW5nIHRoZSBlbWJlZGRpbmcgY29kZSBm
b3IgTWVkaWFTdHJlYW1DZW50ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTczMTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIGJyaWRnZS9NZWRpYVN0cmVhbUNl
bnRlci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtQ2VudGVyLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1DZW50ZXI6Ok1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjp+TWVkaWFTdHJlYW1DZW50ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXI6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNr
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU3RvcExv
Y2FsTWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXI6OmRp
ZENvbnN0cnVjdE1lZGlhU3RyZWFtKToKKyAgICAgICAgKiBicmlkZ2UvTWVkaWFTdHJlYW1DZW50
ZXJJbnRlcm5hbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFs
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OnF1ZXJ5TWVk
aWFTdHJlYW1Tb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVySW50
ZXJuYWw6OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6OmRpZENvbnN0cnVjdE1l
ZGlhU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6
OnN0b3BMb2NhbE1lZGlhU3RyZWFtKToKKyAgICAgICAgKiBicmlkZ2UvTWVkaWFTdHJlYW1DZW50
ZXJJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKE1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwpOgorICAgICAgICAqIHB1Ymxp
Yy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6bWVkaWFTdHJlYW1DZW50ZXIp
OgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlci5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJNZWRpYVN0cmVhbUNlbnRlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyOjp+V2ViTWVkaWFTdHJlYW1DZW50
ZXIpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVu
dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJNZWRpYVN0cmVhbUNl
bnRlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50
Ojp+V2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9y
bS9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Db21wb25lbnQ6OldlYk1lZGlhU3RyZWFtQ29t
cG9uZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Db21wb25lbnQ6On5XZWJN
ZWRpYVN0cmVhbUNvbXBvbmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ29t
cG9uZW50Ojppc051bGwpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVh
bURlc2NyaXB0b3IuaDoKKyAgICAgICAgKFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcik6CisgICAg
ICAgICogcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJN
ZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJl
YW1Tb3VyY2VzUmVxdWVzdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Q6On5XZWJNZWRpYVN0cmVhbVNv
dXJjZXNSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVx
dWVzdDo6aXNOdWxsKToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFTdHJlYW1Db21wb25lbnQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3Ry
ZWFtQ29tcG9uZW50OjpXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhU3RyZWFtQ29tcG9uZW50OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJNZWRpYVN0cmVhbUNvbXBvbmVudDo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YVN0cmVhbUNvbXBvbmVudDo6b3BlcmF0b3IgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVu
dD4pOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNvbXBvbmVudDo6b3BlcmF0b3Ig
TWVkaWFTdHJlYW1Db21wb25lbnQqKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1D
b21wb25lbnQ6OmVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNvbXBv
bmVudDo6c291cmNlKToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpXZWJNZWRpYVN0
cmVhbURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViTWVk
aWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdDo6V2ViTWVkaWFTdHJl
YW1Tb3VyY2VzUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNl
c1JlcXVlc3Q6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2Vz
UmVxdWVzdDo6YXVkaW8pOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNS
ZXF1ZXN0Ojp2aWRlbyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1Jl
cXVlc3Q6OmRpZENvbXBsZXRlUXVlcnkpOgorCiAyMDEyLTAxLTI0ICBWc2V2b2xvZCBWbGFzb3Yg
IDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgY2hyb21pdW0gdGVz
dCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCmlu
ZGV4IGNlNjc0MzNlZWM5NjJiNTI4NGRkYmRhZGJlMzI4ZTkwY2M0OGFiNjUuLmM4ZTI5NTJmZjQw
MWZmZmZkYzVmZjg1OWZmYTllZGFlZTMyYjMzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlh
c3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFVzZXJNZWRp
YUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSA9IDA7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShQYXNzUmVmUHRyPFVzZXJNZWRp
YVJlcXVlc3Q+LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYsICBjb25zdCBNZWRpYVN0
cmVhbVNvdXJjZVZlY3RvciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRp
YShQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZl
Y3RvciYgYXVkaW9Tb3VyY2VzLCAgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVv
U291cmNlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFVz
ZXJNZWRpYVJlcXVlc3QqKSA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKaW5kZXggZjg3NWQzN2ZlMThkNWY4Y2Iz
ZjMyOTBjM2M3OThlNDQ3ZjM3Y2RkMS4uZmFmM2Q0ZDRmZjA2YmE3MmMxMjFhOTRiNjIwMGM2M2U4
YzNkZTY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVx
dWVzdC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydCgp
CiAgICAgTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkucXVlcnlNZWRpYVN0cmVhbVNvdXJj
ZXModGhpcyk7CiB9CiAKLXZvaWQgVXNlck1lZGlhUmVxdWVzdDo6bWVkaWFTdHJlYW1Tb3VyY2Vz
UXVlcnlDb21wbGV0ZWQoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNl
cywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcykKK3ZvaWQgVXNl
ck1lZGlhUmVxdWVzdDo6ZGlkQ29tcGxldGVRdWVyeShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZl
Y3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9T
b3VyY2VzKQogewogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPnJlcXVlc3RV
c2VyTWVkaWEodGhpcywgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCmluZGV4IDkwZDU1MjdiNjFjN2Ni
YTQ4N2RmMDNiYmMyYzI4MGI2ZTJkNWZiMTkuLmE3MWI1ZTkzZjAyYjNlMjE3MDdlNTVmNzUxMmY2
OGFlZGRlMmZjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmgKQEAgLTUxLDIxICs1MSwyMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8VXNlck1lZGlhUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVc2Vy
TWVkaWFDbGllbnQqLCBjb25zdCBTdHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9y
VXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFF
cnJvckNhbGxiYWNrPik7CiAgICAgflVzZXJNZWRpYVJlcXVlc3QoKTsKIAotICAgIGJvb2wgYXVk
aW8oKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvOyB9Ci0gICAgYm9vbCB2aWRlbygpIGNvbnN0IHsg
cmV0dXJuIG1fdmlkZW87IH0KLQotICAgIGJvb2wgY2FtZXJhUHJlZmVyZW5jZVVzZXIoKSBjb25z
dCB7IHJldHVybiBtX2NhbWVyYVByZWZlcmVuY2VVc2VyOyB9Ci0gICAgYm9vbCBjYW1lcmFQcmVm
ZXJlbmNlRW52aXJvbm1lbnQoKSBjb25zdCB7IHJldHVybiBtX2NhbWVyYVByZWZlcmVuY2VFbnZp
cm9ubWVudDsgfQotCiAgICAgTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrKiBzdWNj
ZXNzQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX3N1Y2Nlc3NDYWxsYmFjay5nZXQoKTsgfQog
ICAgIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2sqIGVycm9yQ2FsbGJhY2soKSBjb25z
dCB7IHJldHVybiBtX2Vycm9yQ2FsbGJhY2suZ2V0KCk7IH0KIAogICAgIHZvaWQgc3RhcnQoKTsK
LSAgICB2b2lkIG1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGNvbnN0IE1lZGlhU3Ry
ZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVj
dG9yJiB2aWRlb1NvdXJjZXMpOwogCiAgICAgdm9pZCBzdWNjZWVkKGNvbnN0IE1lZGlhU3RyZWFt
U291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9y
JiB2aWRlb1NvdXJjZXMpOwogICAgIHZvaWQgZmFpbCgpOwogCisgICAgLy8gTWVkaWFTdHJlYW1T
b3VyY2VzUXVlcnlDbGllbnQKKyAgICB2aXJ0dWFsIGJvb2wgYXVkaW8oKSBjb25zdCB7IHJldHVy
biBtX2F1ZGlvOyB9CisgICAgdmlydHVhbCBib29sIHZpZGVvKCkgY29uc3QgeyByZXR1cm4gbV92
aWRlbzsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW1lcmFQcmVmZXJlbmNlVXNlcigpIGNvbnN0IHsg
cmV0dXJuIG1fY2FtZXJhUHJlZmVyZW5jZVVzZXI7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FtZXJh
UHJlZmVyZW5jZUVudmlyb25tZW50KCkgY29uc3QgeyByZXR1cm4gbV9jYW1lcmFQcmVmZXJlbmNl
RW52aXJvbm1lbnQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVRdWVyeShjb25zdCBN
ZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKTsKKwogICAgIC8vIENvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyCiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50
ZXIuY3BwCmluZGV4IDkyMDNjZTNhYzQwYjA0ODBlZTdhZGY0MzllYTU5MDcxOTUzNjkxZmIuLmFi
Y2NmNWI5YmMzYjk1NzlkM2I4YjUyYzYwMmJjZTIzYTJkZTgwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5j
cHAKQEAgLTU1LDggKzU1LDkgQEAgdm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZW5kTG9jYWxNZWRp
YVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbURlc2NyaXAKICAgICAgICAgc3Ry
ZWFtRGVzY3JpcHRvci0+c2V0RW5kZWQoKTsKIH0KIAotLy8gRklYTUU6IHJlbW92ZSB3aGVuIHJl
YWwgaW1wbGVtZW50YXRpb25zIGFyZSBhdmFpbGFibGUKLS8vIEVtcHR5IGltcGxlbWVudGF0aW9u
cyBmb3IgcG9ydHMgdGhhdCBidWlsZCB3aXRoIE1FRElBX1NUUkVBTSBlbmFibGVkIGJ5IGRlZmF1
bHQuCisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQorCisvLyBFbXB0eSBpbXBsZW1lbnRhdGlvbnMg
Zm9yIHBvcnRzIHRoYXQgYnVpbGQgd2l0aCBNRURJQV9TVFJFQU0gZW5hYmxlZCBieSBkZWZhdWx0
LCBidXQgaGF2ZW4ndCB5ZXQgaW1wbGVtZW50ZWQgTWVkaWFTdHJlYW1DZW50ZXIuCiAKIE1lZGlh
U3RyZWFtQ2VudGVyOjpNZWRpYVN0cmVhbUNlbnRlcigpCiB7CkBAIC02OSw3ICs3MCw3IEBAIE1l
ZGlhU3RyZWFtQ2VudGVyOjp+TWVkaWFTdHJlYW1DZW50ZXIoKQogdm9pZCBNZWRpYVN0cmVhbUNl
bnRlcjo6cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJj
ZXNRdWVyeUNsaWVudD4gY2xpZW50KQogewogICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1
ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzOwotICAgIGNsaWVudC0+bWVkaWFTdHJlYW1Tb3VyY2Vz
UXVlcnlDb21wbGV0ZWQoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOworICAgIGNsaWVudC0+
ZGlkQ29tcGxldGVRdWVyeShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CiB9CiAKIHZvaWQg
TWVkaWFTdHJlYW1DZW50ZXI6OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciosIE1lZGlhU3RyZWFtQ29tcG9uZW50KikKQEAgLTg0LDYgKzg1LDggQEAg
dm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkQ29uc3RydWN0TWVkaWFTdHJlYW0oTWVkaWFTdHJl
YW1EZXNjcmlwdG9yKikKIHsKIH0KIAorI2VuZGlmIC8vICFQTEFURk9STShDSFJPTUlVTSkKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbUNlbnRlci5oCmluZGV4IDdkOThmYzUyZGI3YWFiNmNjYjM0Mjg4ZWY4MGJiY2IwY2FkODBm
NjQuLmEzN2Q2NmEyNmM3NjUxYmNkYmExYzdjODdmYzRjMmFjMGE4ZjYxODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50
ZXIuaApAQCAtMzgsNiArMzgsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgUExB
VEZPUk0oQ0hST01JVU0pCitjbGFzcyBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOworI2VuZGlm
CisKIGNsYXNzIE1lZGlhU3RyZWFtQ29tcG9uZW50OwogY2xhc3MgTWVkaWFTdHJlYW1EZXNjcmlw
dG9yOwogCkBAIC00Nyw4ICs1MSwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgYXVk
aW8oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHZpZGVvKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBjYW1lcmFQcmVmZXJlbmNlVXNlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgY2FtZXJhUHJlZmVyZW5jZUVudmlyb25tZW50KCkgY29uc3QgPSAwOwogCi0gICAg
dmlydHVhbCB2b2lkIG1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGNvbnN0IE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNl
VmVjdG9yJiB2aWRlb1NvdXJjZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVR
dWVyeShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBN
ZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKSA9IDA7CiB9OwogCiBjbGFzcyBN
ZWRpYVN0cmVhbUNlbnRlciB7CkBAIC03Myw2ICs3OSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgTWVkaWFTdHJlYW1DZW50ZXIoKTsKKworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAg
IE93blB0cjxNZWRpYVN0cmVhbUNlbnRlckludGVybmFsPiBtX3ByaXZhdGU7CisjZW5kaWYKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRl
eCBhNGY1NmM1OGZhYTBiOGY1NjQwYTZmNmRlY2QyYjUxMDdkODJkZjE2Li43ODYzNjljMjVkODc3
N2ZmZmRmYWZiZWNhODJmMjg0MGI5ZjZjZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CkBAIC05MSw2ICs5MSw5IEBACiAgICAgICAgICAgICAgICAgJ1dFQktJVF9JTVBMRU1FTlRBVElP
Tj0xJywKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAg
ICAgICAgICAnYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVyLmNwcCcsCisgICAgICAgICAgICAgICAg
J2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmNwcCcsCisgICAgICAgICAgICAgICAg
J2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmgnLAogICAgICAgICAgICAgICAgICdi
cmlkZ2UvUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ2JyaWRn
ZS9QZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbC5jcHAnLAogICAgICAgICAgICAgICAgICdi
cmlkZ2UvUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWwuaCcsCkBAIC0zMTMsOCArMzE2LDEx
IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJMYXllclRyZWVWaWV3Lmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmlld0NsaWVu
dC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkxvY2FsaXplZFN0cmlu
Zy5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2Vu
dGVyLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1D
b21wb25lbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0
cmVhbURlc2NyaXB0b3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJN
ZWRpYVN0cmVhbVNvdXJjZS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dl
Yk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9w
bGF0Zm9ybS9XZWJOb25Db3B5YWJsZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRm
b3JtL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlci5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L3BsYXRmb3JtL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oJywKQEAgLTU5Niw5ICs2
MDIsMTEgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhRWxlbWVudC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCcsCisgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRp
YVN0cmVhbVNvdXJjZS5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFTdHJlYW1T
b3VyY2VzUmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTmFtZWROb2RlTWFw
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOZXR3b3JrU3RhdGVOb3RpZmllci5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViTm9kZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXIuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5
ZjYzNmQ1MzY2YTFjMTRkMzZkYTJkNTdkZThmODdlMjg2Y2EzOTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKQEAg
LTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgorCisjaW5jbHVkZSAiTWVkaWFT
dHJlYW1DZW50ZXJJbnRlcm5hbC5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtRGVzY3JpcHRvci5o
IgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
TWVkaWFTdHJlYW1DZW50ZXI6Ok1lZGlhU3RyZWFtQ2VudGVyKCkKKyAgICA6IG1fcHJpdmF0ZShh
ZG9wdFB0cihuZXcgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbCh0aGlzKSkpCit7Cit9CisKK01l
ZGlhU3RyZWFtQ2VudGVyOjp+TWVkaWFTdHJlYW1DZW50ZXIoKQoreworfQorCit2b2lkIE1lZGlh
U3RyZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiBjbGllbnQpCit7CisgICAgbV9wcml2YXRlLT5xdWVyeU1l
ZGlhU3RyZWFtU291cmNlcyhjbGllbnQpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjpk
aWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVh
bSwgIE1lZGlhU3RyZWFtQ29tcG9uZW50KiBjb21wb25lbnQpCit7CisgICAgbV9wcml2YXRlLT5k
aWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChzdHJlYW0sIGNvbXBvbmVudCk7Cit9CisKK3Zv
aWQgTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFt
RGVzY3JpcHRvciogc3RyZWFtKQoreworICAgIG1fcHJpdmF0ZS0+ZGlkU3RvcExvY2FsTWVkaWFT
dHJlYW0oc3RyZWFtKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkQ29uc3RydWN0
TWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0pCit7CisgICAgbV9wcml2
YXRlLT5kaWRDb25zdHJ1Y3RNZWRpYVN0cmVhbShzdHJlYW0pOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVy
bmFsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jNzQ4MWVhYjgyMzY2NDhkYTNkMDk5NDg1NDU4ZWFiMmY3NGMw
OThjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVk
aWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bUNlbnRlckludGVybmFsLmgiCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgorI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtQ29tcG9uZW50LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3Vy
Y2UuaCIKKyNpbmNsdWRlICJXZWJLaXQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0
Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlci5o
IgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ29tcG9uZW50LmgiCisjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6Ok1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwo
TWVkaWFTdHJlYW1DZW50ZXIqIG93bmVyKQorICAgIDogbV9wcml2YXRlKFdlYktpdDo6d2ViS2l0
UGxhdGZvcm1TdXBwb3J0KCktPm1lZGlhU3RyZWFtQ2VudGVyKHRoaXMpKQorICAgICwgbV9vd25l
cihvd25lcikKK3sKK30KKwordm9pZCBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpxdWVyeU1l
ZGlhU3RyZWFtU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50
PiBjbGllbnQpCit7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzICJzaG9ydC1jaXJjdWl0IiBh
bmQgZm9yd2FyZCB0byBtX3ByaXZhdGUgd2hlbiBDaHJvbWUgaGFzIGltcGxlbWVudGVkIFdlYk1l
ZGlhU3RyZWFtQ2VudGVyLgorICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvU291cmNl
cywgdmlkZW9Tb3VyY2VzOworICAgIGNsaWVudC0+ZGlkQ29tcGxldGVRdWVyeShhdWRpb1NvdXJj
ZXMsIHZpZGVvU291cmNlcyk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6
ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJl
YW0sIE1lZGlhU3RyZWFtQ29tcG9uZW50KiBjb21wb25lbnQpCit7CisgICAgaWYgKG1fcHJpdmF0
ZSkgeworICAgICAgICBpZiAoY29tcG9uZW50LT5lbmFibGVkKCkpCisgICAgICAgICAgICBtX3By
aXZhdGUtPmRpZEVuYWJsZU1lZGlhU3RyZWFtVHJhY2soc3RyZWFtLCBjb21wb25lbnQpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBtX3ByaXZhdGUtPmRpZERpc2FibGVNZWRpYVN0cmVhbVRy
YWNrKHN0cmVhbSwgY29tcG9uZW50KTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50
ZXJJbnRlcm5hbDo6ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9y
KiBzdHJlYW0pCit7CisgICAgaWYgKG1fcHJpdmF0ZSkKKyAgICAgICAgbV9wcml2YXRlLT5kaWRT
dG9wTG9jYWxNZWRpYVN0cmVhbShzdHJlYW0pOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ2VudGVy
SW50ZXJuYWw6OmRpZENvbnN0cnVjdE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciog
c3RyZWFtKQoreworICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+ZGlkQ29u
c3RydWN0TWVkaWFTdHJlYW0oc3RyZWFtKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNlbnRlcklu
dGVybmFsOjpzdG9wTG9jYWxNZWRpYVN0cmVhbShjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFt
RGVzY3JpcHRvciYgc3RyZWFtKQoreworICAgIG1fb3duZXItPmVuZExvY2FsTWVkaWFTdHJlYW0o
c3RyZWFtKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdl
L01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJp
ZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTMwMzAwNmYyNzYx
NzdjN2NjYjc0ZTc5NDI5NjNkMThiZDIzM2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oCkBAIC0wLDAg
KzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIE1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWxfaAorI2RlZmluZSBNZWRp
YVN0cmVhbUNlbnRlckludGVybmFsX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudC5oIgorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViTWVkaWFT
dHJlYW1DZW50ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTdHJl
YW1DZW50ZXI7CitjbGFzcyBNZWRpYVN0cmVhbUNvbXBvbmVudDsKK2NsYXNzIE1lZGlhU3RyZWFt
RGVzY3JpcHRvcjsKK2NsYXNzIE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OworCitjbGFz
cyBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsIDogcHVibGljIFdlYktpdDo6V2ViTWVkaWFTdHJl
YW1DZW50ZXJDbGllbnQgeworcHVibGljOgorICAgIE1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwo
TWVkaWFTdHJlYW1DZW50ZXIqKTsKKworICAgIHZvaWQgcXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMo
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4pOworICAgIHZvaWQgZGlk
U2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiwgTWVkaWFT
dHJlYW1Db21wb25lbnQqKTsKKyAgICB2b2lkIGRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlh
U3RyZWFtRGVzY3JpcHRvciopOworICAgIHZvaWQgZGlkQ29uc3RydWN0TWVkaWFTdHJlYW0oTWVk
aWFTdHJlYW1EZXNjcmlwdG9yKik7CisKKyAgICAvLyBGcm9tIFdlYktpdDo6V2ViTWVkaWFTdHJl
YW1DZW50ZXJDbGllbnQuCisgICAgdmlydHVhbCB2b2lkIHN0b3BMb2NhbE1lZGlhU3RyZWFtKGNv
bnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJik7CisKK3ByaXZhdGU6CisgICAg
V2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRlciogbV9wcml2YXRlOworICAgIE1lZGlhU3RyZWFt
Q2VudGVyKiBtX293bmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIE1lZGlhU3RyZWFtQ2VudGVySW50
ZXJuYWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZv
cm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAppbmRleCA2YzBlNzRmMTI5NzJjN2Yz
NzQ2MzQwYWZmNjliMzEyZGMyNWNhMWU5Li4wZDhhZTJiMTJiNzA2YzFiN2UzYjY5YjNiMGViM2Ji
OGExYTE1Mjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaApAQCAtNjAsNiArNjAsOCBA
QCBjbGFzcyBXZWJGaWxlVXRpbGl0aWVzOwogY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7CiBj
bGFzcyBXZWJJREJGYWN0b3J5OyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9y
bT8KIGNsYXNzIFdlYklEQktleTsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZv
cm0/CitjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlcjsKK2NsYXNzIFdlYk1lZGlhU3RyZWFtQ2Vu
dGVyQ2xpZW50OwogY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsOyAvLyBGSVhNRTogRG9lcyB0
aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdlYk1pbWVSZWdpc3RyeTsKIGNsYXNzIFdl
YlBlZXJDb25uZWN0aW9uSGFuZGxlcjsKQEAgLTMzNCw2ICszMzYsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBNYXkgcmV0dXJuIG51bGwgaWYgV2ViUlRDIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGF2YWxp
YWJsZSBvciBvdXQgb2YgcmVzb3VyY2VzLgogICAgIHZpcnR1YWwgV2ViUGVlckNvbm5lY3Rpb25I
YW5kbGVyKiBjcmVhdGVQZWVyQ29ubmVjdGlvbkhhbmRsZXIoV2ViUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2xpZW50KikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgV2ViTWVkaWFTdHJlYW1DZW50
ZXIqIG1lZGlhU3RyZWFtQ2VudGVyKFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50KikgeyByZXR1
cm4gMDsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0V29ya2VyUnVuTG9vcChjb25zdCBX
ZWJXb3JrZXJSdW5Mb29wJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0b3BXb3JrZXJSdW5M
b29wKGNvbnN0IFdlYldvcmtlclJ1bkxvb3AmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmRlYzMyNzgyMTRiNTU5MGNkMWNiNzk5ZmU1MDQ2YjExODlhNWU2YzYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJNZWRpYVN0cmVhbUNlbnRlci5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk1lZGlhU3Ry
ZWFtQ2VudGVyX2gKKyNkZWZpbmUgV2ViTWVkaWFTdHJlYW1DZW50ZXJfaAorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViTWVkaWFTdHJlYW1Db21wb25lbnQ7CitjbGFzcyBXZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3I7CitjbGFzcyBXZWJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVu
dDsKKworY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwg
dm9pZCBxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhjb25zdCBXZWJNZWRpYVN0cmVhbVNvdXJjZXNR
dWVyeUNsaWVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRW5hYmxlTWVkaWFTdHJlYW1U
cmFjayhjb25zdCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImLCBjb25zdCBXZWJNZWRpYVN0cmVh
bUNvbXBvbmVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzYWJsZU1lZGlhU3RyZWFt
VHJhY2soY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJiwgY29uc3QgV2ViTWVkaWFTdHJl
YW1Db21wb25lbnQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFN0b3BMb2NhbE1lZGlhU3Ry
ZWFtKGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ29uc3RydWN0TWVkaWFTdHJlYW0oY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9y
JikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+V2ViTWVkaWFTdHJlYW1DZW50ZXIo
KSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViTWVkaWFT
dHJlYW1DZW50ZXJfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44YTA4MjVmOTBmZjBjN2QxNTM1MTc1NjU3ZTBjZWFmMjc4ZTA1NDJjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVk
aWFTdHJlYW1DZW50ZXJDbGllbnQuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVN0
cmVhbUNlbnRlckNsaWVudF9oCisjZGVmaW5lIFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50X2gK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjsK
KworY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1
YWwgfldlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
c3RvcExvY2FsTWVkaWFTdHJlYW0oY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJikgPSAw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJNZWRpYVN0cmVh
bUNlbnRlckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Db21wb25lbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wMWU5MDJlMzBjYjdlZjkyY2ZhMjcwZWI1Y2FmN2NhMjdkMmFkYzFjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJl
YW1Db21wb25lbnQuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVN0cmVhbUNvbXBv
bmVudF9oCisjZGVmaW5lIFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50X2gKKworI2luY2x1ZGUgIldl
YkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYk5vbkNvcHlhYmxlLmgiCisjaW5jbHVkZSAiV2ViUHJp
dmF0ZVB0ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBNZWRpYVN0cmVhbUNvbXBv
bmVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1lZGlhU3RyZWFtU291
cmNlOworY2xhc3MgV2ViU3RyaW5nOworCitjbGFzcyBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCB7
CitwdWJsaWM6CisgICAgV2ViTWVkaWFTdHJlYW1Db21wb25lbnQoKSB7IH0KKyAgICB+V2ViTWVk
aWFTdHJlYW1Db21wb25lbnQoKSB7IHJlc2V0KCk7IH0KKworICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCByZXNldCgpOworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmlz
TnVsbCgpOyB9CisKKyAgICBXRUJLSVRfRVhQT1JUIFdlYk1lZGlhU3RyZWFtU291cmNlIHNvdXJj
ZSgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBlbmFibGVkKCkgY29uc3Q7CisKKyNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudChXZWJD
b3JlOjpNZWRpYVN0cmVhbUNvbXBvbmVudCopOworICAgIFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50
JiBvcGVyYXRvcj0oV2ViQ29yZTo6TWVkaWFTdHJlYW1Db21wb25lbnQqKTsKKyAgICBvcGVyYXRv
ciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Db21wb25lbnQ+KCkgY29uc3Q7
CisgICAgb3BlcmF0b3IgV2ViQ29yZTo6TWVkaWFTdHJlYW1Db21wb25lbnQqKCkgY29uc3Q7Cisj
ZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFt
Q29tcG9uZW50PiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNj
cmlwdG9yLmgKaW5kZXggZmI5ZThmZmY3MmE5ZDQ1ZmM5YWJiOWRhN2ZmMmZjMGRmOTU5NzA1My4u
YjA0Y2U1YzM2Y2NlOTIzMGI2Y2UwYTI5ODk3NWFlMGE3NzcxZmY3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlw
dG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVk
aWFTdHJlYW1EZXNjcmlwdG9yLmgKQEAgLTY5LDYgKzY5LDcgQEAgcHVibGljOgogICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCB2aWRlb1NvdXJjZXMoV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNl
PiYpIGNvbnN0OwogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViTWVkaWFTdHJl
YW1EZXNjcmlwdG9yKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvciopOwogICAgIFdlYk1l
ZGlhU3RyZWFtRGVzY3JpcHRvcihjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFT
dHJlYW1EZXNjcmlwdG9yPiYpOwogICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpNZWRpYVN0cmVhbURlc2NyaXB0b3I+KCkgY29uc3Q7CiAgICAgb3BlcmF0b3IgV2ViQ29yZTo6
TWVkaWFTdHJlYW1EZXNjcmlwdG9yKigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1T
b3VyY2VzUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4MmZhNmM3NmEyOGRmYjMyMDkxNjlhMWIwYzcw
ZTAxYzc4YzYxNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmgKQEAgLTAsMCArMSw3
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdF9oCisjZGVmaW5lIFdlYk1l
ZGlhU3RyZWFtU291cmNlc1JlcXVlc3RfaAorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9u
LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDsKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1lZGlhU3RyZWFtU291cmNlOwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGNsYXNzIFdlYlZlY3RvcjsKKworCitjbGFzcyBXZWJNZWRpYVN0cmVhbVNvdXJj
ZXNSZXF1ZXN0IHsKK3B1YmxpYzoKKyAgICBXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0KCkg
eyB9CisgICAgfldlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QoKSB7IHJlc2V0KCk7IH0KKwor
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworICAgIGJvb2wgaXNOdWxsKCkgY29uc3Qg
eyByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOyB9CisKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wg
YXVkaW8oKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgdmlkZW8oKSBjb25zdDsKKwor
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBkaWRDb21wbGV0ZVF1ZXJ5KGNvbnN0IFdlYlZlY3RvcjxX
ZWJNZWRpYVN0cmVhbVNvdXJjZT4mIGF1ZGlvU291cmNlcywgY29uc3QgV2ViVmVjdG9yPFdlYk1l
ZGlhU3RyZWFtU291cmNlPiYgdmlkZW9Tb3VyY2VzKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgorICAgIFdlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QoY29uc3QgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiYpOworI2VuZGlmCisK
K3ByaXZhdGU6CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZXNR
dWVyeUNsaWVudD4gbV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuaAppbmRleCBmMDg3MTIzNmJhODJl
ZWE3MjQyYmZkYWE5ODExYjU3OGZjNWZkYzEyLi5mNmFiMDQxNmJjMTRkNzg5ZjdhYTFiZGNmYTVk
NzQzYmYxYmMyNDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Vc2Vy
TWVkaWFDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1l
ZGlhQ2xpZW50SW1wbC5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdlYkNv
cmU6OlVzZXJNZWRpYUNsaWVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdFVzZXJNZWRpYShQYXNzUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVl
c3Q+LCBjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYsIGNvbnN0IFdlYkNv
cmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJik7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RV
c2VyTWVkaWEoUGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiwgY29uc3QgV2Vi
Q29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgV2ViQ29y
ZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcyk7CiAgICAgdmlydHVhbCB2
b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCopOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVk
aWFTdHJlYW1Db21wb25lbnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVk
aWFTdHJlYW1Db21wb25lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhNDg1NGYwNDBhMjUwNzlkN2JlM2Y0
ZjllNGUyNDhmNTk2NWEzMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5jcHAKQEAgLTAsMCArMSw4NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5oIgorCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW1Db21wb25lbnQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZS5o
IgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitX
ZWJNZWRpYVN0cmVhbUNvbXBvbmVudDo6V2ViTWVkaWFTdHJlYW1Db21wb25lbnQoV2ViQ29yZTo6
TWVkaWFTdHJlYW1Db21wb25lbnQqIG1lZGlhU3RyZWFtQ29tcG9uZW50KQorICAgIDogbV9wcml2
YXRlKG1lZGlhU3RyZWFtQ29tcG9uZW50KQoreworfQorCitXZWJNZWRpYVN0cmVhbUNvbXBvbmVu
dCYgV2ViTWVkaWFTdHJlYW1Db21wb25lbnQ6Om9wZXJhdG9yPShXZWJDb3JlOjpNZWRpYVN0cmVh
bUNvbXBvbmVudCogbWVkaWFTdHJlYW1Db21wb25lbnQpCit7CisgICAgbV9wcml2YXRlID0gbWVk
aWFTdHJlYW1Db21wb25lbnQ7CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFdlYk1lZGlh
U3RyZWFtQ29tcG9uZW50OjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisK
K1dlYk1lZGlhU3RyZWFtQ29tcG9uZW50OjpvcGVyYXRvciBQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
Q29tcG9uZW50PigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKwor
V2ViTWVkaWFTdHJlYW1Db21wb25lbnQ6Om9wZXJhdG9yIE1lZGlhU3RyZWFtQ29tcG9uZW50Kigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKworYm9vbCBXZWJNZWRp
YVN0cmVhbUNvbXBvbmVudDo6ZW5hYmxlZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX3ByaXZh
dGUuaXNOdWxsKCkpOworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCktPmVuYWJsZWQoKTsKK30K
KworV2ViTWVkaWFTdHJlYW1Tb3VyY2UgV2ViTWVkaWFTdHJlYW1Db21wb25lbnQ6OnNvdXJjZSgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOworICAgIHJldHVybiBX
ZWJNZWRpYVN0cmVhbVNvdXJjZShtX3ByaXZhdGUuZ2V0KCktPnNvdXJjZSgpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbURlc2Ny
aXB0b3IuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNj
cmlwdG9yLmNwcAppbmRleCA3ODMxMWFkYWM2MzIxNjgwNzU2YTljNzg1MzA1ZWIxMTBhN2RmZjg5
Li45MWRlMTExNzI5MzJmMzVlZjMyZWIzODM5NzhkZGFjZTY2NDI2ZTA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5j
cHAKQEAgLTUwLDYgKzUwLDExIEBAIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6V2ViTWVkaWFT
dHJlYW1EZXNjcmlwdG9yKGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkCiB7CiB9CiAKK1dl
Yk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtRGVzY3JpcHRvciogbWVkaWFTdHJlYW1EZXNjcmlwdG9yKQorICAgIDogbV9w
cml2YXRlKG1lZGlhU3RyZWFtRGVzY3JpcHRvcikKK3sKK30KKwogdm9pZCBXZWJNZWRpYVN0cmVh
bURlc2NyaXB0b3I6OnJlc2V0KCkKIHsKICAgICBtX3ByaXZhdGUucmVzZXQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1Tb3VyY2Vz
UmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODE2YWMwMDQ2ZTNmMDU3MDQwMWRkOThjMDc4M2Y2NzVh
YmIyMTA2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
Yk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5oIgorCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW1DZW50ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgInBs
YXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVj
dG9yLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Q6
OldlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpN
ZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4mIHF1ZXJ5Q2xpZW50KQorICAgIDogbV9wcml2
YXRlKHF1ZXJ5Q2xpZW50KQoreworfQorCit2b2lkIFdlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVl
c3Q6OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQoKTsKK30KKworYm9vbCBXZWJNZWRp
YVN0cmVhbVNvdXJjZXNSZXF1ZXN0OjphdWRpbygpIGNvbnN0Cit7CisgICAgaWYgKCFpc051bGwo
KSkKKyAgICAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YXVkaW8oKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdDo6dmlkZW8oKSBjb25zdAor
eworICAgIGlmICghaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBtX3ByaXZhdGUtPnZpZGVvKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVl
c3Q6OmRpZENvbXBsZXRlUXVlcnkoY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNl
PiYgYXVkaW9Tb3VyY2VzLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB2
aWRlb1NvdXJjZXMpCit7CisgICAgaWYgKCFpc051bGwoKSkgeworICAgICAgICBNZWRpYVN0cmVh
bVNvdXJjZVZlY3RvciBhdWRpbzsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdWRp
b1NvdXJjZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIE1lZGlhU3RyZWFtU291cmNlKiBj
dXJyID0gYXVkaW9Tb3VyY2VzW2ldOworICAgICAgICAgICAgYXVkaW8uYXBwZW5kKGN1cnIpOwor
ICAgICAgICB9CisgICAgICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHZpZGVvOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZpZGVvU291cmNlcy5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIGN1cnIgPSB2aWRlb1NvdXJjZXNbaV07CisgICAg
ICAgICAgICB2aWRlby5hcHBlbmQoY3Vycik7CisgICAgICAgIH0KKyAgICAgICAgbV9wcml2YXRl
LT5kaWRDb21wbGV0ZVF1ZXJ5KGF1ZGlvLCB2aWRlbyk7CisgICAgfQorfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124100</attachid>
            <date>2012-01-26 03:52:16 -0800</date>
            <delta_ts>2012-02-02 05:24:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73130-20120126125214.patch</filename>
            <type>text/plain</type>
            <size>46939</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzMyOTNhOTFjMDhkNTVi
NTg2MzFiOWQzOTRkOGI5NWI1ODI1OGY3Yi4uMTIyMTQzOWMxMjUyYjU3ZTE1NzY1Y2U5OWIwYWE4
NzNmNjBmOGRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAxLTI1ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TWVkaWFTdHJlYW0gQVBJOiBBZGRpbmcgdGhlIGVtYmVkZGluZyBjb2RlIGZvciBNZWRpYVN0cmVh
bUNlbnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzMxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0cyBmb3IgdGhlIE1lZGlhIFN0cmVhbSBBUEkgd2lsbCBiZSBwcm92aWRlZCBieSB0aGUgYnVn
IDU2NTg3LCBwZW5kaW5nIGVub3VnaCBsYW5kZWQgY29kZS4KKworICAgICAgICAqIG1lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVx
dWVzdDo6ZGlkQ29tcGxldGVRdWVyeSk6CisgICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5oOgorICAgICAgICAoVXNlck1lZGlhUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpVc2VyTWVkaWFSZXF1ZXN0OjphdWRpbyk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFS
ZXF1ZXN0Ojp2aWRlbyk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpjYW1l
cmFQcmVmZXJlbmNlVXNlcik6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Ojpj
YW1lcmFQcmVmZXJlbmNlRW52aXJvbm1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXI6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudCk6Cisg
ICAgICAgIChNZWRpYVN0cmVhbUNlbnRlcik6CisKIDIwMTItMDEtMjQgIFZzZXZvbG9kIFZsYXNv
diAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wcm92
ZSB1c2VyIGV4cGVyaWVuY2Ugb2YgYWR2YW5jZWQgc2VhcmNoIHBhbmVsIGNsb3NpbmcuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGRhOTIwZDVkMGI4YmMxZDUyNDBjZmE1ODFmYWIzN2Zh
YjVjN2Q0YmIuLjM0N2Y1ZjliNDYyZDc3YmMzYjRhMzlmN2E5Y2JmZGM1NDczM2U1N2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzggQEAKKzIwMTItMDEtMjUgIFRvbW15
IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBN
ZWRpYVN0cmVhbSBBUEk6IEFkZGluZyB0aGUgZW1iZWRkaW5nIGNvZGUgZm9yIE1lZGlhU3RyZWFt
Q2VudGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MzEzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViS2l0Lmd5cDoKKyAgICAgICAgKiBicmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXIuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNl
bnRlci5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQ2VudGVyOjpNZWRpYVN0cmVhbUNlbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUNlbnRlcjo6fk1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFt
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpkaWRDb25zdHJ1Y3RNZWRp
YVN0cmVhbSk6CisgICAgICAgICogYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1DZW50ZXJJbnRlcm5hbDo6TWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpxdWVyeU1lZGlhU3RyZWFtU291cmNl
cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpkaWRTZXRN
ZWRpYVN0cmVhbVRyYWNrRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNl
bnRlckludGVybmFsOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpkaWRDb25zdHJ1Y3RNZWRpYVN0cmVhbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpzdG9wTG9jYWxNZWRp
YVN0cmVhbSk6CisgICAgICAgICogYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChN
ZWRpYVN0cmVhbUNlbnRlckludGVybmFsKToKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2Vi
S2l0UGxhdGZvcm1TdXBwb3J0Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6Om1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAgICAgKiBw
dWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViTWVkaWFTdHJlYW1DZW50ZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJNZWRpYVN0cmVhbUNlbnRlcjo6fldlYk1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAgICAg
KiBwdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudDo6fldlYk1lZGlhU3Ry
ZWFtQ2VudGVyQ2xpZW50KToKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJl
YW1Db21wb25lbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhU3RyZWFtQ29tcG9uZW50OjpXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ29tcG9uZW50Ojp+V2ViTWVkaWFTdHJlYW1Db21w
b25lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNvbXBvbmVudDo6aXNOdWxs
KToKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmg6
CisgICAgICAgIChXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IpOgorICAgICAgICAqIHB1YmxpYy9w
bGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2VzUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVl
c3Q6OldlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0Ojp+V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Q6OmlzTnVsbCk6
CisgICAgICAgICogc3JjL1dlYk1lZGlhU3RyZWFtQ29tcG9uZW50LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNvbXBvbmVudDo6
V2ViTWVkaWFTdHJlYW1Db21wb25lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVh
bUNvbXBvbmVudDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1D
b21wb25lbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Db21wb25l
bnQ6Om9wZXJhdG9yIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+KToKKyAgICAgICAg
KFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Db21wb25lbnQ6Om9wZXJhdG9yIE1lZGlhU3RyZWFtQ29t
cG9uZW50Kik6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ29tcG9uZW50OjplbmFi
bGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Db21wb25lbnQ6OnNvdXJjZSk6
CisgICAgICAgICogc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9y
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYk1lZGlhU3RyZWFtU291cmNl
c1JlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Q6OldlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0OjpyZXNl
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Q6OmF1ZGlv
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdDo6dmlkZW8p
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0OjpkaWRDb21w
bGV0ZVF1ZXJ5KToKKwogMjAxMi0wMS0yNSAgR3JlZyBCaWxsb2NrICA8Z2JpbGxvY2tAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBBZGQgSW50ZW50UmVxdWVzdCBpbmNsdWRlIGZvciBGcmFtZUxvYWRl
ckNsaWVudEltcGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVu
dC5oCmluZGV4IGNlNjc0MzNlZWM5NjJiNTI4NGRkYmRhZGJlMzI4ZTkwY2M0OGFiNjUuLmM4ZTI5
NTJmZjQwMWZmZmZkYzVmZjg1OWZmYTllZGFlZTMyYjMzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFVz
ZXJNZWRpYUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQo
KSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShQYXNzUmVmUHRyPFVz
ZXJNZWRpYVJlcXVlc3Q+LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYsICBjb25zdCBN
ZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVz
ZXJNZWRpYShQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+LCBjb25zdCBNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCAgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3Im
IHZpZGVvU291cmNlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1
ZXN0KFVzZXJNZWRpYVJlcXVlc3QqKSA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKaW5kZXggZjg3NWQzN2ZlMThk
NWY4Y2IzZjMyOTBjM2M3OThlNDQ3ZjM3Y2RkMS4uZmFmM2Q0ZDRmZjA2YmE3MmMxMjFhOTRiNjIw
MGM2M2U4YzNkZTY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0Ojpz
dGFydCgpCiAgICAgTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkucXVlcnlNZWRpYVN0cmVh
bVNvdXJjZXModGhpcyk7CiB9CiAKLXZvaWQgVXNlck1lZGlhUmVxdWVzdDo6bWVkaWFTdHJlYW1T
b3VyY2VzUXVlcnlDb21wbGV0ZWQoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlv
U291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcykKK3Zv
aWQgVXNlck1lZGlhUmVxdWVzdDo6ZGlkQ29tcGxldGVRdWVyeShjb25zdCBNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYg
dmlkZW9Tb3VyY2VzKQogewogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPnJl
cXVlc3RVc2VyTWVkaWEodGhpcywgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oIGIvU291
cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCmluZGV4IDkwZDU1Mjdi
NjFjN2NiYTQ4N2RmMDNiYmMyYzI4MGI2ZTJkNWZiMTkuLmE3MWI1ZTkzZjAyYjNlMjE3MDdlNTVm
NzUxMmY2OGFlZGRlMmZjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFt
L1VzZXJNZWRpYVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmgKQEAgLTUxLDIxICs1MSwyMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBVc2VyTWVkaWFDbGllbnQqLCBjb25zdCBTdHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2
aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvckNhbGxiYWNrPik7CiAgICAgflVzZXJNZWRpYVJlcXVlc3QoKTsKIAotICAgIGJv
b2wgYXVkaW8oKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvOyB9Ci0gICAgYm9vbCB2aWRlbygpIGNv
bnN0IHsgcmV0dXJuIG1fdmlkZW87IH0KLQotICAgIGJvb2wgY2FtZXJhUHJlZmVyZW5jZVVzZXIo
KSBjb25zdCB7IHJldHVybiBtX2NhbWVyYVByZWZlcmVuY2VVc2VyOyB9Ci0gICAgYm9vbCBjYW1l
cmFQcmVmZXJlbmNlRW52aXJvbm1lbnQoKSBjb25zdCB7IHJldHVybiBtX2NhbWVyYVByZWZlcmVu
Y2VFbnZpcm9ubWVudDsgfQotCiAgICAgTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNr
KiBzdWNjZXNzQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX3N1Y2Nlc3NDYWxsYmFjay5nZXQo
KTsgfQogICAgIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2sqIGVycm9yQ2FsbGJhY2so
KSBjb25zdCB7IHJldHVybiBtX2Vycm9yQ2FsbGJhY2suZ2V0KCk7IH0KIAogICAgIHZvaWQgc3Rh
cnQoKTsKLSAgICB2b2lkIG1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGNvbnN0IE1l
ZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291
cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpOwogCiAgICAgdm9pZCBzdWNjZWVkKGNvbnN0IE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNl
VmVjdG9yJiB2aWRlb1NvdXJjZXMpOwogICAgIHZvaWQgZmFpbCgpOwogCisgICAgLy8gTWVkaWFT
dHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQKKyAgICB2aXJ0dWFsIGJvb2wgYXVkaW8oKSBjb25zdCB7
IHJldHVybiBtX2F1ZGlvOyB9CisgICAgdmlydHVhbCBib29sIHZpZGVvKCkgY29uc3QgeyByZXR1
cm4gbV92aWRlbzsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW1lcmFQcmVmZXJlbmNlVXNlcigpIGNv
bnN0IHsgcmV0dXJuIG1fY2FtZXJhUHJlZmVyZW5jZVVzZXI7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
Y2FtZXJhUHJlZmVyZW5jZUVudmlyb25tZW50KCkgY29uc3QgeyByZXR1cm4gbV9jYW1lcmFQcmVm
ZXJlbmNlRW52aXJvbm1lbnQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVRdWVyeShj
b25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0
cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKTsKKwogICAgIC8vIENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyCiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1D
ZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1DZW50ZXIuY3BwCmluZGV4IDkyMDNjZTNhYzQwYjA0ODBlZTdhZGY0MzllYTU5MDcxOTUzNjkx
ZmIuLmFiY2NmNWI5YmMzYjk1NzlkM2I4YjUyYzYwMmJjZTIzYTJkZTgwMTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNl
bnRlci5jcHAKQEAgLTU1LDggKzU1LDkgQEAgdm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZW5kTG9j
YWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbURlc2NyaXAKICAgICAg
ICAgc3RyZWFtRGVzY3JpcHRvci0+c2V0RW5kZWQoKTsKIH0KIAotLy8gRklYTUU6IHJlbW92ZSB3
aGVuIHJlYWwgaW1wbGVtZW50YXRpb25zIGFyZSBhdmFpbGFibGUKLS8vIEVtcHR5IGltcGxlbWVu
dGF0aW9ucyBmb3IgcG9ydHMgdGhhdCBidWlsZCB3aXRoIE1FRElBX1NUUkVBTSBlbmFibGVkIGJ5
IGRlZmF1bHQuCisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQorCisvLyBFbXB0eSBpbXBsZW1lbnRh
dGlvbnMgZm9yIHBvcnRzIHRoYXQgYnVpbGQgd2l0aCBNRURJQV9TVFJFQU0gZW5hYmxlZCBieSBk
ZWZhdWx0LCBidXQgaGF2ZW4ndCB5ZXQgaW1wbGVtZW50ZWQgTWVkaWFTdHJlYW1DZW50ZXIuCiAK
IE1lZGlhU3RyZWFtQ2VudGVyOjpNZWRpYVN0cmVhbUNlbnRlcigpCiB7CkBAIC02OSw3ICs3MCw3
IEBAIE1lZGlhU3RyZWFtQ2VudGVyOjp+TWVkaWFTdHJlYW1DZW50ZXIoKQogdm9pZCBNZWRpYVN0
cmVhbUNlbnRlcjo6cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bVNvdXJjZXNRdWVyeUNsaWVudD4gY2xpZW50KQogewogICAgIE1lZGlhU3RyZWFtU291cmNlVmVj
dG9yIGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzOwotICAgIGNsaWVudC0+bWVkaWFTdHJlYW1T
b3VyY2VzUXVlcnlDb21wbGV0ZWQoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOworICAgIGNs
aWVudC0+ZGlkQ29tcGxldGVRdWVyeShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CiB9CiAK
IHZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1l
ZGlhU3RyZWFtRGVzY3JpcHRvciosIE1lZGlhU3RyZWFtQ29tcG9uZW50KikKQEAgLTg0LDYgKzg1
LDggQEAgdm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkQ29uc3RydWN0TWVkaWFTdHJlYW0oTWVk
aWFTdHJlYW1EZXNjcmlwdG9yKikKIHsKIH0KIAorI2VuZGlmIC8vICFQTEFURk9STShDSFJPTUlV
TSkKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbUNlbnRlci5oCmluZGV4IDdkOThmYzUyZGI3YWFiNmNjYjM0Mjg4ZWY4MGJiY2Iw
Y2FkODBmNjQuLmEzN2Q2NmEyNmM3NjUxYmNkYmExYzdjODdmYzRjMmFjMGE4ZjYxODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2Vu
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1DZW50ZXIuaApAQCAtMzgsNiArMzgsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisj
aWYgUExBVEZPUk0oQ0hST01JVU0pCitjbGFzcyBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOwor
I2VuZGlmCisKIGNsYXNzIE1lZGlhU3RyZWFtQ29tcG9uZW50OwogY2xhc3MgTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yOwogCkBAIC00Nyw4ICs1MSwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJv
b2wgYXVkaW8oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHZpZGVvKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBjYW1lcmFQcmVmZXJlbmNlVXNlcigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgY2FtZXJhUHJlZmVyZW5jZUVudmlyb25tZW50KCkgY29uc3QgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGNvbnN0
IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFt
U291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29t
cGxldGVRdWVyeShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBj
b25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKSA9IDA7CiB9OwogCiBj
bGFzcyBNZWRpYVN0cmVhbUNlbnRlciB7CkBAIC03Myw2ICs3OSwxMCBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgTWVkaWFTdHJlYW1DZW50ZXIoKTsKKworI2lmIFBMQVRGT1JNKENIUk9NSVVN
KQorICAgIE93blB0cjxNZWRpYVN0cmVhbUNlbnRlckludGVybmFsPiBtX3ByaXZhdGU7CisjZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cAppbmRleCBhNGY1NmM1OGZhYTBiOGY1NjQwYTZmNmRlY2QyYjUxMDdkODJkZjE2Li43ODYzNjlj
MjVkODc3N2ZmZmRmYWZiZWNhODJmMjg0MGI5ZjZjZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCkBAIC05MSw2ICs5MSw5IEBACiAgICAgICAgICAgICAgICAgJ1dFQktJVF9JTVBMRU1F
TlRBVElPTj0xJywKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAnc291cmNlcyc6IFsKKyAg
ICAgICAgICAgICAgICAnYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVyLmNwcCcsCisgICAgICAgICAg
ICAgICAgJ2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmNwcCcsCisgICAgICAgICAg
ICAgICAgJ2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmgnLAogICAgICAgICAgICAg
ICAgICdicmlkZ2UvUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCcsCiAgICAgICAgICAgICAgICAg
J2JyaWRnZS9QZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbC5jcHAnLAogICAgICAgICAgICAg
ICAgICdicmlkZ2UvUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWwuaCcsCkBAIC0zMTMsOCAr
MzE2LDExIEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJMYXllclRyZWVW
aWV3LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmll
d0NsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkxvY2FsaXpl
ZFN0cmluZy5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3Ry
ZWFtQ2VudGVyLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFT
dHJlYW1Db21wb25lbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJN
ZWRpYVN0cmVhbURlc2NyaXB0b3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9y
bS9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL3BsYXRm
b3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9wbGF0Zm9ybS9XZWJOb25Db3B5YWJsZS5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L3BsYXRmb3JtL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlci5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL3BsYXRmb3JtL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oJywKQEAgLTU5
Niw5ICs2MDIsMTEgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhRWxlbWVudC5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCcsCisgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJNZWRpYVN0cmVhbVNvdXJjZS5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFT
dHJlYW1Tb3VyY2VzUmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTmFtZWRO
b2RlTWFwLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOZXR3b3JrU3RhdGVOb3RpZmll
ci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTm9kZS5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXIuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk5ZjYzNmQ1MzY2YTFjMTRkMzZkYTJkNTdkZThmODdlMjg2Y2EzOTgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlci5j
cHAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgorCisjaW5jbHVkZSAi
TWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtRGVzY3Jp
cHRvci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworTWVkaWFTdHJlYW1DZW50ZXI6Ok1lZGlhU3RyZWFtQ2VudGVyKCkKKyAgICA6IG1fcHJp
dmF0ZShhZG9wdFB0cihuZXcgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbCh0aGlzKSkpCit7Cit9
CisKK01lZGlhU3RyZWFtQ2VudGVyOjp+TWVkaWFTdHJlYW1DZW50ZXIoKQoreworfQorCit2b2lk
IE1lZGlhU3RyZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiBjbGllbnQpCit7CisgICAgbV9wcml2YXRlLT5x
dWVyeU1lZGlhU3RyZWFtU291cmNlcyhjbGllbnQpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ2Vu
dGVyOjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbURlc2NyaXB0b3Iq
IHN0cmVhbSwgIE1lZGlhU3RyZWFtQ29tcG9uZW50KiBjb21wb25lbnQpCit7CisgICAgbV9wcml2
YXRlLT5kaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChzdHJlYW0sIGNvbXBvbmVudCk7Cit9
CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlh
U3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKQoreworICAgIG1fcHJpdmF0ZS0+ZGlkU3RvcExvY2Fs
TWVkaWFTdHJlYW0oc3RyZWFtKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkQ29u
c3RydWN0TWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0pCit7CisgICAg
bV9wcml2YXRlLT5kaWRDb25zdHJ1Y3RNZWRpYVN0cmVhbShzdHJlYW0pOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRl
cm5hbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRl
ckludGVybmFsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzQ4MWVhYjgyMzY2NDhkYTNkMDk5NDg1NDU4ZWFi
MmY3NGMwOThjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlk
Z2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRp
YVN0cmVhbUNlbnRlckludGVybmFsLmgiCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5o
IgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29tcG9uZW50LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJXZWJLaXQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJL
aXRQbGF0Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNl
bnRlci5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ29tcG9uZW50LmgiCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6Ok1lZGlhU3RyZWFtQ2VudGVySW50
ZXJuYWwoTWVkaWFTdHJlYW1DZW50ZXIqIG93bmVyKQorICAgIDogbV9wcml2YXRlKFdlYktpdDo6
d2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPm1lZGlhU3RyZWFtQ2VudGVyKHRoaXMpKQorICAgICwg
bV9vd25lcihvd25lcikKK3sKK30KKwordm9pZCBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpx
dWVyeU1lZGlhU3RyZWFtU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5
Q2xpZW50PiBjbGllbnQpCit7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzICJzaG9ydC1jaXJj
dWl0IiBhbmQgZm9yd2FyZCB0byBtX3ByaXZhdGUgd2hlbiBDaHJvbWUgaGFzIGltcGxlbWVudGVk
IFdlYk1lZGlhU3RyZWFtQ2VudGVyLgorICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlv
U291cmNlcywgdmlkZW9Tb3VyY2VzOworICAgIGNsaWVudC0+ZGlkQ29tcGxldGVRdWVyeShhdWRp
b1NvdXJjZXMsIHZpZGVvU291cmNlcyk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJJbnRl
cm5hbDo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9y
KiBzdHJlYW0sIE1lZGlhU3RyZWFtQ29tcG9uZW50KiBjb21wb25lbnQpCit7CisgICAgaWYgKG1f
cHJpdmF0ZSkgeworICAgICAgICBpZiAoY29tcG9uZW50LT5lbmFibGVkKCkpCisgICAgICAgICAg
ICBtX3ByaXZhdGUtPmRpZEVuYWJsZU1lZGlhU3RyZWFtVHJhY2soc3RyZWFtLCBjb21wb25lbnQp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3ByaXZhdGUtPmRpZERpc2FibGVNZWRpYVN0
cmVhbVRyYWNrKHN0cmVhbSwgY29tcG9uZW50KTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFTdHJl
YW1DZW50ZXJJbnRlcm5hbDo6ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNj
cmlwdG9yKiBzdHJlYW0pCit7CisgICAgaWYgKG1fcHJpdmF0ZSkKKyAgICAgICAgbV9wcml2YXRl
LT5kaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShzdHJlYW0pOworfQorCit2b2lkIE1lZGlhU3RyZWFt
Q2VudGVySW50ZXJuYWw6OmRpZENvbnN0cnVjdE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3Jp
cHRvciogc3RyZWFtKQoreworICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+
ZGlkQ29uc3RydWN0TWVkaWFTdHJlYW0oc3RyZWFtKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNl
bnRlckludGVybmFsOjpzdG9wTG9jYWxNZWRpYVN0cmVhbShjb25zdCBXZWJLaXQ6OldlYk1lZGlh
U3RyZWFtRGVzY3JpcHRvciYgc3RyZWFtKQoreworICAgIG1fb3duZXItPmVuZExvY2FsTWVkaWFT
dHJlYW0oc3RyZWFtKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
YnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzRjOWI3
MGI1ZTVjODAxM2MyMTA5ZTEzMDFmZWI0YmNmMDM1NGU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oCkBA
IC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWxfaAorI2RlZmlu
ZSBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudC5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2Vi
TWVkaWFTdHJlYW1DZW50ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVk
aWFTdHJlYW1DZW50ZXI7CitjbGFzcyBNZWRpYVN0cmVhbUNvbXBvbmVudDsKK2NsYXNzIE1lZGlh
U3RyZWFtRGVzY3JpcHRvcjsKK2NsYXNzIE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50Owor
CitjbGFzcyBNZWRpYVN0cmVhbUNlbnRlckludGVybmFsIDogcHVibGljIFdlYktpdDo6V2ViTWVk
aWFTdHJlYW1DZW50ZXJDbGllbnQgeworcHVibGljOgorICAgIGV4cGxpY2l0IE1lZGlhU3RyZWFt
Q2VudGVySW50ZXJuYWwoTWVkaWFTdHJlYW1DZW50ZXIqKTsKKworICAgIHZvaWQgcXVlcnlNZWRp
YVN0cmVhbVNvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4p
OworICAgIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNj
cmlwdG9yKiwgTWVkaWFTdHJlYW1Db21wb25lbnQqKTsKKyAgICB2b2lkIGRpZFN0b3BMb2NhbE1l
ZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopOworICAgIHZvaWQgZGlkQ29uc3RydWN0
TWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7CisKKyAgICAvLyBGcm9tIFdlYktp
dDo6V2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQuCisgICAgdmlydHVhbCB2b2lkIHN0b3BMb2Nh
bE1lZGlhU3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJik7CisK
K3ByaXZhdGU6CisgICAgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRlciogbV9wcml2YXRlOwor
ICAgIE1lZGlhU3RyZWFtQ2VudGVyKiBtX293bmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIE1lZGlh
U3RyZWFtQ2VudGVySW50ZXJuYWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAppbmRleCA2
YzBlNzRmMTI5NzJjN2YzNzQ2MzQwYWZmNjliMzEyZGMyNWNhMWU5Li4wZDhhZTJiMTJiNzA2YzFi
N2UzYjY5YjNiMGViM2JiOGExYTE1Mjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaApA
QCAtNjAsNiArNjAsOCBAQCBjbGFzcyBXZWJGaWxlVXRpbGl0aWVzOwogY2xhc3MgV2ViR3JhcGhp
Y3NDb250ZXh0M0Q7CiBjbGFzcyBXZWJJREJGYWN0b3J5OyAvLyBGSVhNRTogRG9lcyB0aGlzIGJl
bG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdlYklEQktleTsgLy8gRklYTUU6IERvZXMgdGhpcyBi
ZWxvbmcgaW4gcGxhdGZvcm0/CitjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlcjsKK2NsYXNzIFdl
Yk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50OwogY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsOyAv
LyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdlYk1pbWVSZWdp
c3RyeTsKIGNsYXNzIFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlcjsKQEAgLTMzNCw2ICszMzYsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBNYXkgcmV0dXJuIG51bGwgaWYgV2ViUlRDIGZ1bmN0aW9uYWxp
dHkgaXMgbm90IGF2YWxpYWJsZSBvciBvdXQgb2YgcmVzb3VyY2VzLgogICAgIHZpcnR1YWwgV2Vi
UGVlckNvbm5lY3Rpb25IYW5kbGVyKiBjcmVhdGVQZWVyQ29ubmVjdGlvbkhhbmRsZXIoV2ViUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgV2Vi
TWVkaWFTdHJlYW1DZW50ZXIqIG1lZGlhU3RyZWFtQ2VudGVyKFdlYk1lZGlhU3RyZWFtQ2VudGVy
Q2xpZW50KikgeyByZXR1cm4gMDsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0V29ya2Vy
UnVuTG9vcChjb25zdCBXZWJXb3JrZXJSdW5Mb29wJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFN0b3BXb3JrZXJSdW5Mb29wKGNvbnN0IFdlYldvcmtlclJ1bkxvb3AmKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFt
Q2VudGVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRp
YVN0cmVhbUNlbnRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlYzMyNzgyMTRiNTU5MGNkMWNiNzk5ZmU1MDQ2
YjExODlhNWU2YzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlci5oCkBAIC0wLDAgKzEsNTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYk1lZGlhU3RyZWFtQ2VudGVyX2gKKyNkZWZpbmUgV2ViTWVkaWFTdHJlYW1DZW50ZXJf
aAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTWVkaWFTdHJlYW1Db21wb25lbnQ7
CitjbGFzcyBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I7CitjbGFzcyBXZWJNZWRpYVN0cmVhbVNv
dXJjZXNRdWVyeUNsaWVudDsKKworY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXIgeworcHVibGlj
OgorICAgIHZpcnR1YWwgdm9pZCBxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhjb25zdCBXZWJNZWRp
YVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRW5h
YmxlTWVkaWFTdHJlYW1UcmFjayhjb25zdCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImLCBjb25z
dCBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGlz
YWJsZU1lZGlhU3RyZWFtVHJhY2soY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJiwgY29u
c3QgV2ViTWVkaWFTdHJlYW1Db21wb25lbnQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFN0
b3BMb2NhbE1lZGlhU3RyZWFtKGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29uc3RydWN0TWVkaWFTdHJlYW0oY29uc3QgV2ViTWVkaWFT
dHJlYW1EZXNjcmlwdG9yJikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+V2ViTWVk
aWFTdHJlYW1DZW50ZXIoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gV2ViTWVkaWFTdHJlYW1DZW50ZXJfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50
ZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTA4MjVmOTBmZjBjN2QxNTM1MTc1NjU3ZTBjZWFmMjc4
ZTA1NDJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQuaApAQCAtMCwwICsxLDQ3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudF9oCisjZGVmaW5lIFdlYk1lZGlhU3RyZWFt
Q2VudGVyQ2xpZW50X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcjsKKworY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfldlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50KCkgeyB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc3RvcExvY2FsTWVkaWFTdHJlYW0oY29uc3QgV2ViTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yJikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Db21wb25l
bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wMWU5MDJlMzBjYjdlZjkyY2ZhMjcwZWI1Y2FmN2NhMjdkMmFkYzFj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZv
cm0vV2ViTWVkaWFTdHJlYW1Db21wb25lbnQuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJN
ZWRpYVN0cmVhbUNvbXBvbmVudF9oCisjZGVmaW5lIFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50X2gK
KworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYk5vbkNvcHlhYmxlLmgiCisj
aW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBN
ZWRpYVN0cmVhbUNvbXBvbmVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
Yk1lZGlhU3RyZWFtU291cmNlOworY2xhc3MgV2ViU3RyaW5nOworCitjbGFzcyBXZWJNZWRpYVN0
cmVhbUNvbXBvbmVudCB7CitwdWJsaWM6CisgICAgV2ViTWVkaWFTdHJlYW1Db21wb25lbnQoKSB7
IH0KKyAgICB+V2ViTWVkaWFTdHJlYW1Db21wb25lbnQoKSB7IHJlc2V0KCk7IH0KKworICAgIFdF
QktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1
cm4gbV9wcml2YXRlLmlzTnVsbCgpOyB9CisKKyAgICBXRUJLSVRfRVhQT1JUIFdlYk1lZGlhU3Ry
ZWFtU291cmNlIHNvdXJjZSgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBlbmFibGVk
KCkgY29uc3Q7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJNZWRpYVN0cmVh
bUNvbXBvbmVudChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbXBvbmVudCopOworICAgIFdlYk1lZGlh
U3RyZWFtQ29tcG9uZW50JiBvcGVyYXRvcj0oV2ViQ29yZTo6TWVkaWFTdHJlYW1Db21wb25lbnQq
KTsKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Db21w
b25lbnQ+KCkgY29uc3Q7CisgICAgb3BlcmF0b3IgV2ViQ29yZTo6TWVkaWFTdHJlYW1Db21wb25l
bnQqKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQ29tcG9uZW50PiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFt
RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
TWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKaW5kZXggZmI5ZThmZmY3MmE5ZDQ1ZmM5YWJiOWRhN2Zm
MmZjMGRmOTU5NzA1My4uZWYyOGVkZjk3ZjhkMTkzMzMxOTAyYzc0N2Y1NWU0ZGMyMDMzM2IwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVk
aWFTdHJlYW1EZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xh
c3MgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3Mg
V2ViTWVkaWFTdHJlYW1Db21wb25lbnQ7CiBjbGFzcyBXZWJNZWRpYVN0cmVhbVNvdXJjZTsKIGNs
YXNzIFdlYlN0cmluZzsKIApAQCAtNjUsMTAgKzY2LDExIEBAIHB1YmxpYzoKICAgICAvLyBERVBS
RUNBVEVECiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNvdXJjZXMoV2ViVmVjdG9yPFdlYk1lZGlh
U3RyZWFtU291cmNlPiYpIGNvbnN0OwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGF1ZGlvU291
cmNlcyhXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JikgY29uc3Q7Ci0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHZpZGVvU291cmNlcyhXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+
JikgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGF1ZGlvU291cmNlcyhXZWJWZWN0b3I8
V2ViTWVkaWFTdHJlYW1Db21wb25lbnQ+JikgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHZpZGVvU291cmNlcyhXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Db21wb25lbnQ+JikgY29uc3Q7
CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJNZWRpYVN0cmVhbURlc2NyaXB0
b3IoV2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7CiAgICAgV2ViTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2Ny
aXB0b3I+Jik7CiAgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcj4oKSBjb25zdDsKICAgICBvcGVyYXRvciBXZWJDb3JlOjpNZWRpYVN0cmVh
bURlc2NyaXB0b3IqKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1
ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTgyZmE2Yzc2YTI4ZGZiMzIwOTE2OWExYjBjNzBlMDFjNzhjNjE2
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuaApAQCAtMCwwICsxLDcwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0X2gKKyNkZWZpbmUgV2ViTWVkaWFTdHJlYW1T
b3VyY2VzUmVxdWVzdF9oCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViTWVkaWFTdHJlYW1Tb3VyY2U7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgV2ViVmVjdG9yOworCisKK2NsYXNzIFdlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Qg
eworcHVibGljOgorICAgIFdlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QoKSB7IH0KKyAgICB+
V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdCgpIHsgcmVzZXQoKTsgfQorCisgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBt
X3ByaXZhdGUuaXNOdWxsKCk7IH0KKworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBhdWRpbygpIGNv
bnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCB2aWRlbygpIGNvbnN0OworCisgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIGRpZENvbXBsZXRlUXVlcnkoY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3Ry
ZWFtU291cmNlPiYgYXVkaW9Tb3VyY2VzLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1T
b3VyY2U+JiB2aWRlb1NvdXJjZXMpOworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAg
V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+Jik7CisjZW5kaWYKKworcHJpdmF0ZToK
KyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50
PiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdl
Yk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oCmluZGV4IGYwODcxMjM2YmE4MmVlYTcyNDJiZmRh
YTk4MTFiNTc4ZmM1ZmRjMTIuLmY2YWIwNDE2YmMxNGQ3ODlmN2FhMWJkY2ZhNWQ3NDNiZjFiYzI0
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVu
dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Vc2VyTWVkaWFDbGllbnRJ
bXBsLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgLy8gV2ViQ29yZTo6VXNlck1l
ZGlhQ2xpZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
ICAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0VXNlck1lZGlhKFBhc3NSZWZQdHI8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4sIGNvbnN0
IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFT
dHJlYW1Tb3VyY2VWZWN0b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShQ
YXNzUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+LCBjb25zdCBXZWJDb3JlOjpNZWRp
YVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBXZWJDb3JlOjpNZWRpYVN0
cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
VXNlck1lZGlhUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Kik7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbUNv
bXBvbmVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbUNv
bXBvbmVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWE0ODU0ZjA0MGEyNTA3OWQ3YmUzZjRmOWU0ZTI0OGY1
OTY1YTMzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
Yk1lZGlhU3RyZWFtQ29tcG9uZW50LmNwcApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgInBsYXRmb3JtL1dl
Yk1lZGlhU3RyZWFtQ29tcG9uZW50LmgiCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNvbXBvbmVu
dC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYk1lZGlhU3Ry
ZWFtQ29tcG9uZW50OjpXZWJNZWRpYVN0cmVhbUNvbXBvbmVudChXZWJDb3JlOjpNZWRpYVN0cmVh
bUNvbXBvbmVudCogbWVkaWFTdHJlYW1Db21wb25lbnQpCisgICAgOiBtX3ByaXZhdGUobWVkaWFT
dHJlYW1Db21wb25lbnQpCit7Cit9CisKK1dlYk1lZGlhU3RyZWFtQ29tcG9uZW50JiBXZWJNZWRp
YVN0cmVhbUNvbXBvbmVudDo6b3BlcmF0b3I9KFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29tcG9uZW50
KiBtZWRpYVN0cmVhbUNvbXBvbmVudCkKK3sKKyAgICBtX3ByaXZhdGUgPSBtZWRpYVN0cmVhbUNv
bXBvbmVudDsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQgV2ViTWVkaWFTdHJlYW1Db21w
b25lbnQ6OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQoKTsKK30KKworV2ViTWVkaWFT
dHJlYW1Db21wb25lbnQ6Om9wZXJhdG9yIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCitXZWJNZWRpYVN0
cmVhbUNvbXBvbmVudDo6b3BlcmF0b3IgTWVkaWFTdHJlYW1Db21wb25lbnQqKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCitib29sIFdlYk1lZGlhU3RyZWFtQ29t
cG9uZW50OjplbmFibGVkKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1fcHJpdmF0ZS5pc051bGwo
KSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKS0+ZW5hYmxlZCgpOworfQorCitXZWJNZWRp
YVN0cmVhbVNvdXJjZSBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudDo6c291cmNlKCkgY29uc3QKK3sK
KyAgICBBU1NFUlQoIW1fcHJpdmF0ZS5pc051bGwoKSk7CisgICAgcmV0dXJuIFdlYk1lZGlhU3Ry
ZWFtU291cmNlKG1fcHJpdmF0ZS5nZXQoKS0+c291cmNlKCkpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3Bw
CmluZGV4IDc4MzExYWRhYzYzMjE2ODA3NTZhOWM3ODUzMDVlYjExMGE3ZGZmODkuLjU4YzVmY2Ji
MTAzMDFjMjM4NzU4YzgxMGZlNmE1YWQ4ZGJmNDViZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcApAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29tcG9uZW50LmgiCiAjaW5jbHVkZSAi
TWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIK
KyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5oIgogI2luY2x1ZGUg
InBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNTAsNiArNTEsMTEgQEAgV2Vi
TWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IoY29uc3QgUGFz
c1JlZlB0cjxXZWJDb3JlOjpNZWQKIHsKIH0KIAorV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpX
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IoV2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBt
ZWRpYVN0cmVhbURlc2NyaXB0b3IpCisgICAgOiBtX3ByaXZhdGUobWVkaWFTdHJlYW1EZXNjcmlw
dG9yKQoreworfQorCiB2b2lkIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6cmVzZXQoKQogewog
ICAgIG1fcHJpdmF0ZS5yZXNldCgpOwpAQCAtNzQsMjEgKzgwLDIxIEBAIHZvaWQgV2ViTWVkaWFT
dHJlYW1EZXNjcmlwdG9yOjpzb3VyY2VzKFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4m
IHdlYlNvdXJjCiAgICAgd2ViU291cmNlcy5zd2FwKHJlc3VsdCk7CiB9CiAKLXZvaWQgV2ViTWVk
aWFTdHJlYW1EZXNjcmlwdG9yOjphdWRpb1NvdXJjZXMoV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFt
U291cmNlPiYgd2ViU291cmNlcykgY29uc3QKK3ZvaWQgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9y
OjphdWRpb1NvdXJjZXMoV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50PiYgd2ViU291
cmNlcykgY29uc3QKIHsKICAgICBzaXplX3QgbnVtYmVyT2ZTb3VyY2VzID0gbV9wcml2YXRlLT5u
dW1iZXJPZkF1ZGlvQ29tcG9uZW50cygpOwotICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNv
dXJjZT4gcmVzdWx0KG51bWJlck9mU291cmNlcyk7CisgICAgV2ViVmVjdG9yPFdlYk1lZGlhU3Ry
ZWFtQ29tcG9uZW50PiByZXN1bHQobnVtYmVyT2ZTb3VyY2VzKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG51bWJlck9mU291cmNlczsgKytpKQotICAgICAgICByZXN1bHRbaV0gPSBtX3By
aXZhdGUtPmF1ZGlvQ29tcG9uZW50KGkpLT5zb3VyY2UoKTsKKyAgICAgICAgcmVzdWx0W2ldID0g
bV9wcml2YXRlLT5hdWRpb0NvbXBvbmVudChpKTsKICAgICB3ZWJTb3VyY2VzLnN3YXAocmVzdWx0
KTsKIH0KIAotdm9pZCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnZpZGVvU291cmNlcyhXZWJW
ZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB3ZWJTb3VyY2VzKSBjb25zdAordm9pZCBXZWJN
ZWRpYVN0cmVhbURlc2NyaXB0b3I6OnZpZGVvU291cmNlcyhXZWJWZWN0b3I8V2ViTWVkaWFTdHJl
YW1Db21wb25lbnQ+JiB3ZWJTb3VyY2VzKSBjb25zdAogewogICAgIHNpemVfdCBudW1iZXJPZlNv
dXJjZXMgPSBtX3ByaXZhdGUtPm51bWJlck9mVmlkZW9Db21wb25lbnRzKCk7Ci0gICAgV2ViVmVj
dG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiByZXN1bHQobnVtYmVyT2ZTb3VyY2VzKTsKKyAgICBX
ZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Db21wb25lbnQ+IHJlc3VsdChudW1iZXJPZlNvdXJjZXMp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZTb3VyY2VzOyArK2kpCi0gICAg
ICAgIHJlc3VsdFtpXSA9IG1fcHJpdmF0ZS0+dmlkZW9Db21wb25lbnQoaSktPnNvdXJjZSgpOwor
ICAgICAgICByZXN1bHRbaV0gPSBtX3ByaXZhdGUtPnZpZGVvQ29tcG9uZW50KGkpOwogICAgIHdl
YlNvdXJjZXMuc3dhcChyZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjgxNmFjMDA0NmUzZjA1NzA0MDFkZDk4YzA3ODNmNjc1YWJiMjEwNjIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNS
ZXF1ZXN0LmNwcApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291
cmNlc1JlcXVlc3QuaCIKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCisjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVh
bVNvdXJjZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0OjpXZWJNZWRpYVN0cmVhbVNvdXJj
ZXNSZXF1ZXN0KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VzUXVl
cnlDbGllbnQ+JiBxdWVyeUNsaWVudCkKKyAgICA6IG1fcHJpdmF0ZShxdWVyeUNsaWVudCkKK3sK
K30KKwordm9pZCBXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0OjpyZXNldCgpCit7CisgICAg
bV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK2Jvb2wgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVz
dDo6YXVkaW8oKSBjb25zdAoreworICAgIGlmICghaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBt
X3ByaXZhdGUtPmF1ZGlvKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYk1lZGlh
U3RyZWFtU291cmNlc1JlcXVlc3Q6OnZpZGVvKCkgY29uc3QKK3sKKyAgICBpZiAoIWlzTnVsbCgp
KQorICAgICAgICByZXR1cm4gbV9wcml2YXRlLT52aWRlbygpOworICAgIHJldHVybiBmYWxzZTsK
K30KKwordm9pZCBXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0OjpkaWRDb21wbGV0ZVF1ZXJ5
KGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIGF1ZGlvU291cmNlcywgY29u
c3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgdmlkZW9Tb3VyY2VzKQoreworICAg
IGlmICghaXNOdWxsKCkpIHsKKyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVkaW87
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXVkaW9Tb3VyY2VzLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZSogY3VyciA9IGF1ZGlvU291cmNlc1tp
XTsKKyAgICAgICAgICAgIGF1ZGlvLmFwcGVuZChjdXJyKTsKKyAgICAgICAgfQorICAgICAgICBN
ZWRpYVN0cmVhbVNvdXJjZVZlY3RvciB2aWRlbzsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB2aWRlb1NvdXJjZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIE1lZGlhU3RyZWFt
U291cmNlKiBjdXJyID0gdmlkZW9Tb3VyY2VzW2ldOworICAgICAgICAgICAgdmlkZW8uYXBwZW5k
KGN1cnIpOworICAgICAgICB9CisgICAgICAgIG1fcHJpdmF0ZS0+ZGlkQ29tcGxldGVRdWVyeShh
dWRpbywgdmlkZW8pOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125120</attachid>
            <date>2012-02-02 05:21:32 -0800</date>
            <delta_ts>2012-02-02 12:54:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73130-20120202142129.patch</filename>
            <type>text/plain</type>
            <size>47815</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjJkNzlmMDA2ZjRlZjI1
ZGZlY2JiZTE4NDIwMmU2MzA1Mjg1MTNhYS4uNjBhOTgzZDg0OTFkYTk2Y2EwOTg2YWZmYzVhZTI3
ZjEyNzgyMDZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAyLTAyICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TWVkaWFTdHJlYW0gQVBJOiBBZGRpbmcgdGhlIGVtYmVkZGluZyBjb2RlIGZvciBNZWRpYVN0cmVh
bUNlbnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzMxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0cyBmb3IgdGhlIE1lZGlhIFN0cmVhbSBBUEkgd2lsbCBiZSBwcm92aWRlZCBieSB0aGUgYnVn
IDU2NTg3LCBwZW5kaW5nIGVub3VnaCBsYW5kZWQgY29kZS4KKworICAgICAgICAqIG1lZGlhc3Ry
ZWFtL1VzZXJNZWRpYUNsaWVudC5oOgorICAgICAgICAoVXNlck1lZGlhQ2xpZW50KToKKyAgICAg
ICAgKiBtZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlVzZXJNZWRpYVJlcXVlc3Q6OmRpZENvbXBsZXRlUXVlcnkpOgorICAgICAgICAqIG1lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuaDoKKyAgICAgICAgKFVzZXJNZWRpYVJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6YXVkaW8pOgorICAgICAgICAoV2ViQ29y
ZTo6VXNlck1lZGlhUmVxdWVzdDo6dmlkZW8pOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlh
UmVxdWVzdDo6Y2FtZXJhUHJlZmVyZW5jZVVzZXIpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1l
ZGlhUmVxdWVzdDo6Y2FtZXJhUHJlZmVyZW5jZUVudmlyb25tZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3RyZWFt
U291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTWVkaWFTdHJlYW1Tb3VyY2VzUXVl
cnlDbGllbnQpOgorICAgICAgICAoTWVkaWFTdHJlYW1DZW50ZXIpOgorCiAyMDEyLTAyLTAyICBS
YXVsIEh1ZGVhICA8cmh1ZGVhQGFkb2JlLmNvbT4KIAogICAgICAgICBSZWdpb25zIHNob3VsZCBp
Z25vcmUgdGhlIHNhdmVkIGN1cnJlbnRSZW5kZXJGbG93VGhyZWFkIGR1cmluZyByZXBhaW50aW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDMyM2M0Mjk5YWY3ODJkYmZkNGU1YTQ2YWY4
YzYxYzdjNzljYzlhMTEuLjQ2YzJhMDFkMmNiZWE3NTcwOGQyZTA5OTUwNTc1YTQ1M2ViOWViZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODQgQEAKKzIwMTItMDItMDIg
IFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBNZWRpYVN0cmVhbSBBUEk6IEFkZGluZyB0aGUgZW1iZWRkaW5nIGNvZGUgZm9yIE1lZGlh
U3RyZWFtQ2VudGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MzEzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBicmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXIuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Vc2VyTWVkaWFDbGllbnRJ
bXBsLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
Q2VudGVyOjpNZWRpYVN0cmVhbUNlbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bUNlbnRlcjo6fk1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpkaWRDb25zdHJ1Y3RNZWRpYVN0
cmVhbSk6CisgICAgICAgICogYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1D
ZW50ZXJJbnRlcm5hbDo6TWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjp+TWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5h
bCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpxdWVyeU1l
ZGlhU3RyZWFtU291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcklu
dGVybmFsOjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFsOjpkaWRDb25zdHJ1Y3RN
ZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlckludGVybmFs
OjpzdG9wTG9jYWxNZWRpYVN0cmVhbSk6CisgICAgICAgICogYnJpZGdlL01lZGlhU3RyZWFtQ2Vu
dGVySW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNl
ck1lZGlhQ2xpZW50SW1wbC5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbCk6CisgICAgICAgICogcHVibGlj
L3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViS2l0UGxhdGZvcm1TdXBwb3J0OjpjcmVhdGVNZWRpYVN0cmVhbUNl
bnRlcik6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudElt
cGwuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJNZWRpYVN0cmVhbUNlbnRlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyOjp+V2ViTWVkaWFTdHJlYW1D
ZW50ZXIpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlckNs
aWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Vc2VyTWVkaWFD
bGllbnRJbXBsLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViTWVkaWFTdHJlYW1D
ZW50ZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVu
dDo6fldlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50KToKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZv
cm0vV2ViTWVkaWFTdHJlYW1Db21wb25lbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViTWVkaWFTdHJlYW1Db21wb25lbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNvbXBvbmVudDo6V2ViTWVkaWFTdHJlYW1Db21w
b25lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNvbXBvbmVudDo6fldlYk1l
ZGlhU3RyZWFtQ29tcG9uZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Db21w
b25lbnQ6OmlzTnVsbCk6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFt
RGVzY3JpcHRvci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk1lZGlhU3RyZWFt
RGVzY3JpcHRvcik6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291
cmNlc1JlcXVlc3QuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNl
ck1lZGlhQ2xpZW50SW1wbC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Q6OldlYk1lZGlhU3RyZWFtU291cmNlc1Jl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0Ojp+
V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlh
U3RyZWFtU291cmNlc1JlcXVlc3Q6OmlzTnVsbCk6CisgICAgICAgICogc3JjL1VzZXJNZWRpYUNs
aWVudEltcGwuaDoKKyAgICAgICAgKFVzZXJNZWRpYUNsaWVudEltcGwpOgorICAgICAgICAqIHNy
Yy9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuaC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ29tcG9uZW50OjpXZWJNZWRpYVN0cmVhbUNv
bXBvbmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ29tcG9uZW50OjpvcGVy
YXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNvbXBvbmVudDo6cmVzZXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNvbXBvbmVudDo6b3BlcmF0b3IgUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4pOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YVN0cmVhbUNvbXBvbmVudDo6b3BlcmF0b3IgTWVkaWFTdHJlYW1Db21wb25lbnQqKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Db21wb25lbnQ6OmlzRW5hYmxlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ29tcG9uZW50Ojpzb3VyY2UpOgorICAgICAgICAqIHNy
Yy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3I6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcik6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmF1ZGlv
U291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6dmlk
ZW9Tb3VyY2VzKToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5j
cHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVu
dEltcGwuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3Ry
ZWFtU291cmNlc1JlcXVlc3Q6OldlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0OjpyZXNldCk6CisgICAgICAg
IChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Q6OmF1ZGlvKToKKyAgICAgICAg
KFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdDo6dmlkZW8pOgorICAgICAgICAo
V2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0OjpkaWRDb21wbGV0ZVF1ZXJ5KToK
KwogMjAxMi0wMi0wMiAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgQ2xlYW51cDogTW92ZSBjaHJvbWUtc3BlY2lmaWMgZmlsZXN5c3RlbSB0eXBlIGhhbmRs
aW5nIGNvZGUgKGZvciBGaWxlU3lzdGVtIEFQSSkgdW5kZXIgY2hyb21pdW0gZGlyZWN0b3J5IChy
ZS1sYW5kaW5nIHIxMDUzOTUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRp
YUNsaWVudC5oCmluZGV4IGNlNjc0MzNlZWM5NjJiNTI4NGRkYmRhZGJlMzI4ZTkwY2M0OGFiNjUu
LmM4ZTI5NTJmZjQwMWZmZmZkYzVmZjg1OWZmYTllZGFlZTMyYjMzODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIGNs
YXNzIFVzZXJNZWRpYUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0
cm95ZWQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShQYXNzUmVm
UHRyPFVzZXJNZWRpYVJlcXVlc3Q+LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYsICBj
b25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdFVzZXJNZWRpYShQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+LCBjb25zdCBNZWRpYVN0
cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCAgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VW
ZWN0b3ImIHZpZGVvU291cmNlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVk
aWFSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QqKSA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKaW5kZXggZjg3NWQz
N2ZlMThkNWY4Y2IzZjMyOTBjM2M3OThlNDQ3ZjM3Y2RkMS4uZmFmM2Q0ZDRmZjA2YmE3MmMxMjFh
OTRiNjIwMGM2M2U4YzNkZTY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0v
VXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBVc2VyTWVkaWFSZXF1
ZXN0OjpzdGFydCgpCiAgICAgTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkucXVlcnlNZWRp
YVN0cmVhbVNvdXJjZXModGhpcyk7CiB9CiAKLXZvaWQgVXNlck1lZGlhUmVxdWVzdDo6bWVkaWFT
dHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3Im
IGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNl
cykKK3ZvaWQgVXNlck1lZGlhUmVxdWVzdDo6ZGlkQ29tcGxldGVRdWVyeShjb25zdCBNZWRpYVN0
cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZl
Y3RvciYgdmlkZW9Tb3VyY2VzKQogewogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGll
bnQtPnJlcXVlc3RVc2VyTWVkaWEodGhpcywgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5o
IGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCmluZGV4IDkw
ZDU1MjdiNjFjN2NiYTQ4N2RmMDNiYmMyYzI4MGI2ZTJkNWZiMTkuLmE3MWI1ZTkzZjAyYjNlMjE3
MDdlNTVmNzUxMmY2OGFlZGRlMmZjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21lZGlh
c3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0LmgKQEAgLTUxLDIxICs1MSwyMSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBVc2VyTWVkaWFDbGllbnQqLCBjb25zdCBTdHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQ
dHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxOYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPik7CiAgICAgflVzZXJNZWRpYVJlcXVlc3QoKTsKIAot
ICAgIGJvb2wgYXVkaW8oKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvOyB9Ci0gICAgYm9vbCB2aWRl
bygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW87IH0KLQotICAgIGJvb2wgY2FtZXJhUHJlZmVyZW5j
ZVVzZXIoKSBjb25zdCB7IHJldHVybiBtX2NhbWVyYVByZWZlcmVuY2VVc2VyOyB9Ci0gICAgYm9v
bCBjYW1lcmFQcmVmZXJlbmNlRW52aXJvbm1lbnQoKSBjb25zdCB7IHJldHVybiBtX2NhbWVyYVBy
ZWZlcmVuY2VFbnZpcm9ubWVudDsgfQotCiAgICAgTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0Nh
bGxiYWNrKiBzdWNjZXNzQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX3N1Y2Nlc3NDYWxsYmFj
ay5nZXQoKTsgfQogICAgIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2sqIGVycm9yQ2Fs
bGJhY2soKSBjb25zdCB7IHJldHVybiBtX2Vycm9yQ2FsbGJhY2suZ2V0KCk7IH0KIAogICAgIHZv
aWQgc3RhcnQoKTsKLSAgICB2b2lkIG1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGNv
bnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3Ry
ZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpOwogCiAgICAgdm9pZCBzdWNjZWVkKGNvbnN0
IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFt
U291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpOwogICAgIHZvaWQgZmFpbCgpOwogCisgICAgLy8g
TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQKKyAgICB2aXJ0dWFsIGJvb2wgYXVkaW8oKSBj
b25zdCB7IHJldHVybiBtX2F1ZGlvOyB9CisgICAgdmlydHVhbCBib29sIHZpZGVvKCkgY29uc3Qg
eyByZXR1cm4gbV92aWRlbzsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW1lcmFQcmVmZXJlbmNlVXNl
cigpIGNvbnN0IHsgcmV0dXJuIG1fY2FtZXJhUHJlZmVyZW5jZVVzZXI7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgY2FtZXJhUHJlZmVyZW5jZUVudmlyb25tZW50KCkgY29uc3QgeyByZXR1cm4gbV9jYW1l
cmFQcmVmZXJlbmNlRW52aXJvbm1lbnQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVR
dWVyeShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBN
ZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKTsKKwogICAgIC8vIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyCiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1DZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuY3BwCmluZGV4IDkyMDNjZTNhYzQwYjA0ODBlZTdhZGY0MzllYTU5MDcx
OTUzNjkxZmIuLmFiY2NmNWI5YmMzYjk1NzlkM2I4YjUyYzYwMmJjZTIzYTJkZTgwMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2Vu
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbUNlbnRlci5jcHAKQEAgLTU1LDggKzU1LDkgQEAgdm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6
ZW5kTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbURlc2NyaXAK
ICAgICAgICAgc3RyZWFtRGVzY3JpcHRvci0+c2V0RW5kZWQoKTsKIH0KIAotLy8gRklYTUU6IHJl
bW92ZSB3aGVuIHJlYWwgaW1wbGVtZW50YXRpb25zIGFyZSBhdmFpbGFibGUKLS8vIEVtcHR5IGlt
cGxlbWVudGF0aW9ucyBmb3IgcG9ydHMgdGhhdCBidWlsZCB3aXRoIE1FRElBX1NUUkVBTSBlbmFi
bGVkIGJ5IGRlZmF1bHQuCisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQorCisvLyBFbXB0eSBpbXBs
ZW1lbnRhdGlvbnMgZm9yIHBvcnRzIHRoYXQgYnVpbGQgd2l0aCBNRURJQV9TVFJFQU0gZW5hYmxl
ZCBieSBkZWZhdWx0LCBidXQgaGF2ZW4ndCB5ZXQgaW1wbGVtZW50ZWQgTWVkaWFTdHJlYW1DZW50
ZXIuCiAKIE1lZGlhU3RyZWFtQ2VudGVyOjpNZWRpYVN0cmVhbUNlbnRlcigpCiB7CkBAIC02OSw3
ICs3MCw3IEBAIE1lZGlhU3RyZWFtQ2VudGVyOjp+TWVkaWFTdHJlYW1DZW50ZXIoKQogdm9pZCBN
ZWRpYVN0cmVhbUNlbnRlcjo6cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4gY2xpZW50KQogewogICAgIE1lZGlhU3RyZWFtU291
cmNlVmVjdG9yIGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzOwotICAgIGNsaWVudC0+bWVkaWFT
dHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOwor
ICAgIGNsaWVudC0+ZGlkQ29tcGxldGVRdWVyeShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7
CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFi
bGVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvciosIE1lZGlhU3RyZWFtQ29tcG9uZW50KikKQEAgLTg0
LDYgKzg1LDggQEAgdm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkQ29uc3RydWN0TWVkaWFTdHJl
YW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikKIHsKIH0KIAorI2VuZGlmIC8vICFQTEFURk9STShD
SFJPTUlVTSkKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oCmluZGV4IDdkOThmYzUyZGI3YWFiNmNjYjM0Mjg4ZWY4
MGJiY2IwY2FkODBmNjQuLmEzN2Q2NmEyNmM3NjUxYmNkYmExYzdjODdmYzRjMmFjMGE4ZjYxODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtQ2VudGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuaApAQCAtMzgsNiArMzgsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCitjbGFzcyBNZWRpYVN0cmVhbUNlbnRlckludGVy
bmFsOworI2VuZGlmCisKIGNsYXNzIE1lZGlhU3RyZWFtQ29tcG9uZW50OwogY2xhc3MgTWVkaWFT
dHJlYW1EZXNjcmlwdG9yOwogCkBAIC00Nyw4ICs1MSwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIGJvb2wgYXVkaW8oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHZpZGVvKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW1lcmFQcmVmZXJlbmNlVXNlcigpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FtZXJhUHJlZmVyZW5jZUVudmlyb25tZW50KCkgY29uc3Qg
PSAwOwogCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVk
KGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ29tcGxldGVRdWVyeShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3Vy
Y2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKSA9IDA7CiB9
OwogCiBjbGFzcyBNZWRpYVN0cmVhbUNlbnRlciB7CkBAIC03Myw2ICs3OSwxMCBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgTWVkaWFTdHJlYW1DZW50ZXIoKTsKKworI2lmIFBMQVRGT1JNKENI
Uk9NSVVNKQorICAgIE93blB0cjxNZWRpYVN0cmVhbUNlbnRlckludGVybmFsPiBtX3ByaXZhdGU7
CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAppbmRleCAxZGMyOTU3MDRjMGM2Nzk3MmFmYWRkMDVjOWNlZjFkMmZmYzcwNTBmLi42
OGM5YmIyYTU5OGE2OTVjYmQ2MTI5OTkwZDliMmY5NGYxZDc5YWFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCkBAIC05MSw2ICs5MSw5IEBACiAgICAgICAgICAgICAgICAgJ1dFQktJVF9J
TVBMRU1FTlRBVElPTj0xJywKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAnc291cmNlcyc6
IFsKKyAgICAgICAgICAgICAgICAnYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVyLmNwcCcsCisgICAg
ICAgICAgICAgICAgJ2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmNwcCcsCisgICAg
ICAgICAgICAgICAgJ2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmgnLAogICAgICAg
ICAgICAgICAgICdicmlkZ2UvUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ2JyaWRnZS9QZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbC5jcHAnLAogICAgICAg
ICAgICAgICAgICdicmlkZ2UvUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWwuaCcsCkBAIC0z
MTIsOCArMzE1LDExIEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJMYXll
clRyZWVWaWV3LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViTGF5ZXJU
cmVlVmlld0NsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkxv
Y2FsaXplZFN0cmluZy5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYk1l
ZGlhU3RyZWFtQ2VudGVyLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2Vi
TWVkaWFTdHJlYW1Db21wb25lbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9y
bS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9w
bGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oJywKKyAgICAgICAgICAgICAgICAncHVibGlj
L3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJOb25Db3B5YWJsZS5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL3BsYXRmb3JtL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlci5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL3BsYXRmb3JtL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oJywK
QEAgLTU5Nyw5ICs2MDMsMTEgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhRWxlbWVu
dC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCcsCisg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2Vi
TWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
TmFtZWROb2RlTWFwLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOZXR3b3JrU3RhdGVO
b3RpZmllci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTm9kZS5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk5ZjYzNmQ1MzY2YTFjMTRkMzZkYTJkNTdkZThmODdlMjg2Y2EzOTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNl
bnRlci5jcHAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgorCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFt
RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworTWVkaWFTdHJlYW1DZW50ZXI6Ok1lZGlhU3RyZWFtQ2VudGVyKCkKKyAgICA6
IG1fcHJpdmF0ZShhZG9wdFB0cihuZXcgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbCh0aGlzKSkp
Cit7Cit9CisKK01lZGlhU3RyZWFtQ2VudGVyOjp+TWVkaWFTdHJlYW1DZW50ZXIoKQoreworfQor
Cit2b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiBjbGllbnQpCit7CisgICAgbV9wcml2
YXRlLT5xdWVyeU1lZGlhU3RyZWFtU291cmNlcyhjbGllbnQpOworfQorCit2b2lkIE1lZGlhU3Ry
ZWFtQ2VudGVyOjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbURlc2Ny
aXB0b3IqIHN0cmVhbSwgIE1lZGlhU3RyZWFtQ29tcG9uZW50KiBjb21wb25lbnQpCit7CisgICAg
bV9wcml2YXRlLT5kaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChzdHJlYW0sIGNvbXBvbmVu
dCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFt
KE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKQoreworICAgIG1fcHJpdmF0ZS0+ZGlkU3Rv
cExvY2FsTWVkaWFTdHJlYW0oc3RyZWFtKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6
ZGlkQ29uc3RydWN0TWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0pCit7
CisgICAgbV9wcml2YXRlLT5kaWRDb25zdHJ1Y3RNZWRpYVN0cmVhbShzdHJlYW0pOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50
ZXJJbnRlcm5hbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVh
bUNlbnRlckludGVybmFsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODY5M2I0Nzk0YjlkNjkwYWY0ZmE0MWJh
ODVmZDE4MzExZGI5NTNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5jcHAKQEAgLTAsMCArMSw5NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRl
ICJNZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmgiCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNl
bnRlci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29tcG9uZW50LmgiCisjaW5jbHVkZSAiTWVk
aWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJXZWJLaXQuaCIKKyNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0
cmVhbUNlbnRlci5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ29tcG9uZW50
LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisjaW5j
bHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5oIgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWVkaWFTdHJlYW1D
ZW50ZXJJbnRlcm5hbDo6TWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbChNZWRpYVN0cmVhbUNlbnRl
ciogb3duZXIpCisgICAgOiBtX3ByaXZhdGUoYWRvcHRQdHIoV2ViS2l0Ojp3ZWJLaXRQbGF0Zm9y
bVN1cHBvcnQoKS0+Y3JlYXRlTWVkaWFTdHJlYW1DZW50ZXIodGhpcykpKQorICAgICwgbV9vd25l
cihvd25lcikKK3sKK30KKworTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbDo6fk1lZGlhU3RyZWFt
Q2VudGVySW50ZXJuYWwoKQoreworfQorCit2b2lkIE1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWw6
OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VzUXVl
cnlDbGllbnQ+IGNsaWVudCkKK3sKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgInNob3J0LWNp
cmN1aXQiIGFuZCBmb3J3YXJkIHRvIG1fcHJpdmF0ZSB3aGVuIENocm9tZSBoYXMgaW1wbGVtZW50
ZWQgV2ViTWVkaWFTdHJlYW1DZW50ZXIuCisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVk
aW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXM7CisgICAgY2xpZW50LT5kaWRDb21wbGV0ZVF1ZXJ5KGF1
ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNlbnRlcklu
dGVybmFsOjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbURlc2NyaXB0
b3IqIHN0cmVhbSwgTWVkaWFTdHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkKK3sKKyAgICBpZiAo
bV9wcml2YXRlKSB7CisgICAgICAgIGlmIChjb21wb25lbnQtPmVuYWJsZWQoKSkKKyAgICAgICAg
ICAgIG1fcHJpdmF0ZS0+ZGlkRW5hYmxlTWVkaWFTdHJlYW1UcmFjayhzdHJlYW0sIGNvbXBvbmVu
dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fcHJpdmF0ZS0+ZGlkRGlzYWJsZU1lZGlh
U3RyZWFtVHJhY2soc3RyZWFtLCBjb21wb25lbnQpOworICAgIH0KK30KKwordm9pZCBNZWRpYVN0
cmVhbUNlbnRlckludGVybmFsOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURl
c2NyaXB0b3IqIHN0cmVhbSkKK3sKKyAgICBpZiAobV9wcml2YXRlKQorICAgICAgICBtX3ByaXZh
dGUtPmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKHN0cmVhbSk7Cit9CisKK3ZvaWQgTWVkaWFTdHJl
YW1DZW50ZXJJbnRlcm5hbDo6ZGlkQ29uc3RydWN0TWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNj
cmlwdG9yKiBzdHJlYW0pCit7CisgICAgaWYgKG1fcHJpdmF0ZSkKKyAgICAgICAgbV9wcml2YXRl
LT5kaWRDb25zdHJ1Y3RNZWRpYVN0cmVhbShzdHJlYW0pOworfQorCit2b2lkIE1lZGlhU3RyZWFt
Q2VudGVySW50ZXJuYWw6OnN0b3BMb2NhbE1lZGlhU3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVk
aWFTdHJlYW1EZXNjcmlwdG9yJiBzdHJlYW0pCit7CisgICAgbV9vd25lci0+ZW5kTG9jYWxNZWRp
YVN0cmVhbShzdHJlYW0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9icmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1YzNk
OGFkYTk5YzA1Y2I0NGZhMzdmNjliMGUyODU0NDA0YzY3MzAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlckludGVybmFsLmgK
QEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbF9oCisjZGVm
aW5lIE1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWxfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKworI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50LmgiCisj
aW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXI7Cit9CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTdHJlYW1DZW50ZXI7CitjbGFzcyBNZWRpYVN0
cmVhbUNvbXBvbmVudDsKK2NsYXNzIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKK2NsYXNzIE1lZGlh
U3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OworCitjbGFzcyBNZWRpYVN0cmVhbUNlbnRlckludGVy
bmFsIDogcHVibGljIFdlYktpdDo6V2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IE1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwoTWVkaWFTdHJlYW1DZW50
ZXIqKTsKKyAgICB+TWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbCgpOworCisgICAgdm9pZCBxdWVy
eU1lZGlhU3RyZWFtU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xp
ZW50Pik7CisgICAgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVh
bURlc2NyaXB0b3IqLCBNZWRpYVN0cmVhbUNvbXBvbmVudCopOworICAgIHZvaWQgZGlkU3RvcExv
Y2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7CisgICAgdm9pZCBkaWRDb25z
dHJ1Y3RNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsKKworICAgIC8vIEZyb20g
V2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudC4KKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cExvY2FsTWVkaWFTdHJlYW0oY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3Im
KTsKKworcHJpdmF0ZToKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRlcj4g
bV9wcml2YXRlOworICAgIE1lZGlhU3RyZWFtQ2VudGVyKiBtX293bmVyOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2Vu
ZGlmIC8vIE1lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBv
cnQuaAppbmRleCAwYWNjOWVhZmFmODkwNzFlNmVlZDJhM2Y5MWFkYjRlNTAwOWI0NGU1Li41NDc5
NWZhNDhlN2QzMDEwY2MwMWY3M2M4MTM0ZmVhNTc1NTk5NWE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9y
bVN1cHBvcnQuaApAQCAtNjEsNiArNjEsOCBAQCBjbGFzcyBXZWJGaWxlVXRpbGl0aWVzOwogY2xh
c3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBXZWJJREJGYWN0b3J5OyAvLyBGSVhNRTog
RG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdlYklEQktleTsgLy8gRklYTUU6
IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/CitjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRl
cjsKK2NsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50OwogY2xhc3MgV2ViTWVzc2FnZVBv
cnRDaGFubmVsOyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNz
IFdlYk1pbWVSZWdpc3RyeTsKIGNsYXNzIFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlcjsKQEAgLTMz
Nyw2ICszMzksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNYXkgcmV0dXJuIG51bGwgaWYgV2ViUlRD
IGZ1bmN0aW9uYWxpdHkgaXMgbm90IGF2YWxpYWJsZSBvciBvdXQgb2YgcmVzb3VyY2VzLgogICAg
IHZpcnR1YWwgV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBjcmVhdGVQZWVyQ29ubmVjdGlvbkhh
bmRsZXIoV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KikgeyByZXR1cm4gMDsgfQorICAg
IHZpcnR1YWwgV2ViTWVkaWFTdHJlYW1DZW50ZXIqIGNyZWF0ZU1lZGlhU3RyZWFtQ2VudGVyKFdl
Yk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50KikgeyByZXR1cm4gMDsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGRpZFN0YXJ0V29ya2VyUnVuTG9vcChjb25zdCBXZWJXb3JrZXJSdW5Mb29wJikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFN0b3BXb3JrZXJSdW5Mb29wKGNvbnN0IFdlYldvcmtlclJ1bkxv
b3AmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzODFhOWE0YzQ1
Njc5NDA2OTVlMDdjYmRhOTY2MjQ4NGIwMjI4MTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlci5oCkBA
IC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk1lZGlhU3RyZWFtQ2VudGVyX2gKKyNkZWZpbmUgV2Vi
TWVkaWFTdHJlYW1DZW50ZXJfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTWVk
aWFTdHJlYW1Db21wb25lbnQ7CitjbGFzcyBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I7CitjbGFz
cyBXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0OworCitjbGFzcyBXZWJNZWRpYVN0cmVhbUNl
bnRlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViTWVkaWFTdHJlYW1DZW50ZXIoKSB7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhjb25zdCBXZWJNZWRp
YVN0cmVhbVNvdXJjZXNSZXF1ZXN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRFbmFibGVN
ZWRpYVN0cmVhbVRyYWNrKGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYsIGNvbnN0IFdl
Yk1lZGlhU3RyZWFtQ29tcG9uZW50JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWREaXNhYmxl
TWVkaWFTdHJlYW1UcmFjayhjb25zdCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImLCBjb25zdCBX
ZWJNZWRpYVN0cmVhbUNvbXBvbmVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExv
Y2FsTWVkaWFTdHJlYW0oY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDb25zdHJ1Y3RNZWRpYVN0cmVhbShjb25zdCBXZWJNZWRpYVN0cmVh
bURlc2NyaXB0b3ImKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIFdlYk1lZGlhU3RyZWFtQ2VudGVyX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVy
Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGEwODI1ZjkwZmYwYzdkMTUzNTE3NTY1N2UwY2VhZjI3OGUw
NTQyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50LmgKQEAgLTAsMCArMSw0NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnRfaAorI2RlZmluZSBXZWJNZWRpYVN0cmVhbUNl
bnRlckNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZWRpYVN0cmVh
bURlc2NyaXB0b3I7CisKK2NsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50IHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5XZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudCgpIHsgfQorCisgICAg
dmlydHVhbCB2b2lkIHN0b3BMb2NhbE1lZGlhU3RyZWFtKGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVz
Y3JpcHRvciYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
V2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Db21wb25lbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ29tcG9uZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYmVlMTg1NTNmYWYxMzlmNzhiMmJjNWY0MWIyMjE3YjY5N2M0YWQ0ZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYk1lZGlhU3RyZWFtQ29tcG9uZW50LmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTWVk
aWFTdHJlYW1Db21wb25lbnRfaAorI2RlZmluZSBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudF9oCisK
KyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJOb25Db3B5YWJsZS5oIgorI2lu
Y2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTWVk
aWFTdHJlYW1Db21wb25lbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJN
ZWRpYVN0cmVhbVNvdXJjZTsKK2NsYXNzIFdlYlN0cmluZzsKKworY2xhc3MgV2ViTWVkaWFTdHJl
YW1Db21wb25lbnQgeworcHVibGljOgorICAgIFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50KCkgeyB9
CisgICAgfldlYk1lZGlhU3RyZWFtQ29tcG9uZW50KCkgeyByZXNldCgpOyB9CisKKyAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJpdmF0ZS5pc051bGwoKTsgfQorCisgICAgV0VCS0lUX0VYUE9SVCBXZWJNZWRpYVN0cmVh
bVNvdXJjZSBzb3VyY2UoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNFbmFibGVk
KCkgY29uc3Q7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJNZWRpYVN0cmVh
bUNvbXBvbmVudChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbXBvbmVudCopOworICAgIFdlYk1lZGlh
U3RyZWFtQ29tcG9uZW50JiBvcGVyYXRvcj0oV2ViQ29yZTo6TWVkaWFTdHJlYW1Db21wb25lbnQq
KTsKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Db21w
b25lbnQ+KCkgY29uc3Q7CisgICAgb3BlcmF0b3IgV2ViQ29yZTo6TWVkaWFTdHJlYW1Db21wb25l
bnQqKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQ29tcG9uZW50PiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFt
RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
TWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKaW5kZXggZmY4YmQxOWNiNDYwYmE4M2RlNDJkY2EwMzI5
NzQ1YWEwNTI4OTU0ZS4uNDkyM2M5N2I1MDE3ZTcxMTc0Y2VlOGMxMDI0MDZlODdmODYwOTZjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVk
aWFTdHJlYW1EZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xh
c3MgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3Mg
V2ViTWVkaWFTdHJlYW1Db21wb25lbnQ7CiBjbGFzcyBXZWJNZWRpYVN0cmVhbVNvdXJjZTsKIGNs
YXNzIFdlYlN0cmluZzsKIApAQCAtNjUsMTAgKzY2LDExIEBAIHB1YmxpYzoKICAgICAvLyBERVBS
RUNBVEVECiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNvdXJjZXMoV2ViVmVjdG9yPFdlYk1lZGlh
U3RyZWFtU291cmNlPiYpIGNvbnN0OwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGF1ZGlvU291
cmNlcyhXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JikgY29uc3Q7Ci0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHZpZGVvU291cmNlcyhXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+
JikgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGF1ZGlvU291cmNlcyhXZWJWZWN0b3I8
V2ViTWVkaWFTdHJlYW1Db21wb25lbnQ+JikgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHZpZGVvU291cmNlcyhXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Db21wb25lbnQ+JikgY29uc3Q7
CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJNZWRpYVN0cmVhbURlc2NyaXB0
b3IoV2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7CiAgICAgV2ViTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2Ny
aXB0b3I+Jik7CiAgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcj4oKSBjb25zdDsKICAgICBvcGVyYXRvciBXZWJDb3JlOjpNZWRpYVN0cmVh
bURlc2NyaXB0b3IqKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1
ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2ZjYzdjMjc1MmNiMGY2YzU2MTJkYTI2YjM0MjUyYzc3YjQ3Njgw
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuaApAQCAtMCwwICsxLDY5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0X2gKKyNkZWZpbmUgV2ViTWVkaWFTdHJlYW1T
b3VyY2VzUmVxdWVzdF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQ
cml2YXRlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE1lZGlhU3RyZWFtU291
cmNlc1F1ZXJ5Q2xpZW50OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTWVk
aWFTdHJlYW1Tb3VyY2U7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2ViVmVjdG9yOwor
CitjbGFzcyBXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0IHsKK3B1YmxpYzoKKyAgICBXZWJN
ZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0KCkgeyB9CisgICAgfldlYk1lZGlhU3RyZWFtU291cmNl
c1JlcXVlc3QoKSB7IHJlc2V0KCk7IH0KKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgp
OworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOyB9
CisKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgYXVkaW8oKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQ
T1JUIGJvb2wgdmlkZW8oKSBjb25zdDsKKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBkaWRDb21w
bGV0ZVF1ZXJ5KGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIGF1ZGlvU291
cmNlcywgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgdmlkZW9Tb3VyY2Vz
KSBjb25zdDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYk1lZGlhU3RyZWFt
U291cmNlc1JlcXVlc3QoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFt
U291cmNlc1F1ZXJ5Q2xpZW50PiYpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0
ZVB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4gbV9wcml2YXRlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJNZWRpYVN0cmVhbVNv
dXJjZXNSZXF1ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Vz
ZXJNZWRpYUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRp
YUNsaWVudEltcGwuaAppbmRleCBmMDg3MTIzNmJhODJlZWE3MjQyYmZkYWE5ODExYjU3OGZjNWZk
YzEyLi5mNmFiMDQxNmJjMTRkNzg5ZjdhYTFiZGNmYTVkNzQzYmYxYmMyNDAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oCkBAIC01MCw3
ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudCAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgdmlydHVhbCB2
b2lkIHBhZ2VEZXN0cm95ZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShQ
YXNzUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+LCBjb25zdCBXZWJDb3JlOjpNZWRp
YVN0cmVhbVNvdXJjZVZlY3RvciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVj
dG9yJik7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxXZWJD
b3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiwgY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VW
ZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0
b3ImIHZpZGVvU291cmNlcyk7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVl
c3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCopOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1Db21wb25lbnQuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1Db21wb25lbnQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY0NGJjZjc3YmY2ZWM0MDIxYzQ2MjBlN2ZhZjdhOGU4M2U2NTkzMDcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbUNv
bXBvbmVudC5jcHAKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNv
bXBvbmVudC5oIgorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Db21wb25lbnQuaCIKKyNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJNZWRpYVN0cmVhbUNvbXBvbmVudDo6
V2ViTWVkaWFTdHJlYW1Db21wb25lbnQoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db21wb25lbnQqIG1l
ZGlhU3RyZWFtQ29tcG9uZW50KQorICAgIDogbV9wcml2YXRlKG1lZGlhU3RyZWFtQ29tcG9uZW50
KQoreworfQorCitXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCYgV2ViTWVkaWFTdHJlYW1Db21wb25l
bnQ6Om9wZXJhdG9yPShXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbXBvbmVudCogbWVkaWFTdHJlYW1D
b21wb25lbnQpCit7CisgICAgbV9wcml2YXRlID0gbWVkaWFTdHJlYW1Db21wb25lbnQ7CisgICAg
cmV0dXJuICp0aGlzOworfQorCit2b2lkIFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50OjpyZXNldCgp
Cit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK1dlYk1lZGlhU3RyZWFtQ29tcG9uZW50
OjpvcGVyYXRvciBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ29tcG9uZW50PigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKworV2ViTWVkaWFTdHJlYW1Db21wb25lbnQ6
Om9wZXJhdG9yIE1lZGlhU3RyZWFtQ29tcG9uZW50KigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS5nZXQoKTsKK30KKworYm9vbCBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudDo6aXNFbmFi
bGVkKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1fcHJpdmF0ZS5pc051bGwoKSk7CisgICAgcmV0
dXJuIG1fcHJpdmF0ZS5nZXQoKS0+ZW5hYmxlZCgpOworfQorCitXZWJNZWRpYVN0cmVhbVNvdXJj
ZSBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudDo6c291cmNlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
IW1fcHJpdmF0ZS5pc051bGwoKSk7CisgICAgcmV0dXJuIFdlYk1lZGlhU3RyZWFtU291cmNlKG1f
cHJpdmF0ZS5nZXQoKS0+c291cmNlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCmluZGV4IDdkYWYz
MjllNTI1NWRkNzQ0NGJiZDM5ZDBlYjhlMjBiZjYzMjQyNGYuLjlmYWE0ZmQ4NWNjNDA1NTRkODk5
N2Q4OTgxMWIwY2E5YzIxOTJhNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcApAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29tcG9uZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dl
Yk1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNTAsNiArNTEsMTEgQEAgV2ViTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yOjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IoY29uc3QgUGFzc1JlZlB0cjxXZWJD
b3JlOjpNZWQKIHsKIH0KIAorV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpXZWJNZWRpYVN0cmVh
bURlc2NyaXB0b3IoV2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBtZWRpYVN0cmVhbURl
c2NyaXB0b3IpCisgICAgOiBtX3ByaXZhdGUobWVkaWFTdHJlYW1EZXNjcmlwdG9yKQoreworfQor
CiB2b2lkIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6cmVzZXQoKQogewogICAgIG1fcHJpdmF0
ZS5yZXNldCgpOwpAQCAtNzQsMjEgKzgwLDIxIEBAIHZvaWQgV2ViTWVkaWFTdHJlYW1EZXNjcmlw
dG9yOjpzb3VyY2VzKFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHdlYlNvdXJjCiAg
ICAgd2ViU291cmNlcy5zd2FwKHJlc3VsdCk7CiB9CiAKLXZvaWQgV2ViTWVkaWFTdHJlYW1EZXNj
cmlwdG9yOjphdWRpb1NvdXJjZXMoV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgd2Vi
U291cmNlcykgY29uc3QKK3ZvaWQgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjphdWRpb1NvdXJj
ZXMoV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50PiYgd2ViU291cmNlcykgY29uc3QK
IHsKICAgICBzaXplX3QgbnVtYmVyT2ZTb3VyY2VzID0gbV9wcml2YXRlLT5udW1iZXJPZkF1ZGlv
Q29tcG9uZW50cygpOwotICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4gcmVzdWx0
KG51bWJlck9mU291cmNlcyk7CisgICAgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50
PiByZXN1bHQobnVtYmVyT2ZTb3VyY2VzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bWJlck9mU291cmNlczsgKytpKQotICAgICAgICByZXN1bHRbaV0gPSBtX3ByaXZhdGUtPmF1ZGlv
Q29tcG9uZW50KGkpLT5zb3VyY2UoKTsKKyAgICAgICAgcmVzdWx0W2ldID0gbV9wcml2YXRlLT5h
dWRpb0NvbXBvbmVudChpKTsKICAgICB3ZWJTb3VyY2VzLnN3YXAocmVzdWx0KTsKIH0KIAotdm9p
ZCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnZpZGVvU291cmNlcyhXZWJWZWN0b3I8V2ViTWVk
aWFTdHJlYW1Tb3VyY2U+JiB3ZWJTb3VyY2VzKSBjb25zdAordm9pZCBXZWJNZWRpYVN0cmVhbURl
c2NyaXB0b3I6OnZpZGVvU291cmNlcyhXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Db21wb25lbnQ+
JiB3ZWJTb3VyY2VzKSBjb25zdAogewogICAgIHNpemVfdCBudW1iZXJPZlNvdXJjZXMgPSBtX3By
aXZhdGUtPm51bWJlck9mVmlkZW9Db21wb25lbnRzKCk7Ci0gICAgV2ViVmVjdG9yPFdlYk1lZGlh
U3RyZWFtU291cmNlPiByZXN1bHQobnVtYmVyT2ZTb3VyY2VzKTsKKyAgICBXZWJWZWN0b3I8V2Vi
TWVkaWFTdHJlYW1Db21wb25lbnQ+IHJlc3VsdChudW1iZXJPZlNvdXJjZXMpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZTb3VyY2VzOyArK2kpCi0gICAgICAgIHJlc3VsdFtp
XSA9IG1fcHJpdmF0ZS0+dmlkZW9Db21wb25lbnQoaSktPnNvdXJjZSgpOworICAgICAgICByZXN1
bHRbaV0gPSBtX3ByaXZhdGUtPnZpZGVvQ29tcG9uZW50KGkpOwogICAgIHdlYlNvdXJjZXMuc3dh
cChyZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhODg2ODAw
OTI0OGMyODY4MDQ0MTg0OWNjZGZjYTZmZjdlYjhmMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmNwcApA
QCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Qu
aCIKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oIgor
I2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJN
ZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0KGNv
bnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+JiBx
dWVyeUNsaWVudCkKKyAgICA6IG1fcHJpdmF0ZShxdWVyeUNsaWVudCkKK3sKK30KKwordm9pZCBX
ZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0OjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJl
c2V0KCk7Cit9CisKK2Jvb2wgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdDo6YXVkaW8oKSBj
b25zdAoreworICAgIEFTU0VSVCghaXNOdWxsKCkpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmF1
ZGlvKCk7Cit9CisKK2Jvb2wgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdDo6dmlkZW8oKSBj
b25zdAoreworICAgIEFTU0VSVCghaXNOdWxsKCkpOworICAgIHJldHVybiBtX3ByaXZhdGUtPnZp
ZGVvKCk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdDo6ZGlkQ29tcGxl
dGVRdWVyeShjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBhdWRpb1NvdXJj
ZXMsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHZpZGVvU291cmNlcykg
Y29uc3QKK3sKKyAgICBBU1NFUlQoIWlzTnVsbCgpKTsKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVZl
Y3RvciBhdWRpbzsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF1ZGlvU291cmNlcy5zaXpl
KCk7ICsraSkgeworICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZSogY3VyciA9IGF1ZGlvU291cmNl
c1tpXTsKKyAgICAgICAgYXVkaW8uYXBwZW5kKGN1cnIpOworICAgIH0KKyAgICBNZWRpYVN0cmVh
bVNvdXJjZVZlY3RvciB2aWRlbzsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZpZGVvU291
cmNlcy5zaXplKCk7ICsraSkgeworICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZSogY3VyciA9IHZp
ZGVvU291cmNlc1tpXTsKKyAgICAgICAgdmlkZW8uYXBwZW5kKGN1cnIpOworICAgIH0KKyAgICBt
X3ByaXZhdGUtPmRpZENvbXBsZXRlUXVlcnkoYXVkaW8sIHZpZGVvKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>