<?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>78398</bug_id>
          
          <creation_ts>2012-02-10 16:14:18 -0800</creation_ts>
          <short_desc>[Chromium] Add video stream texture support</short_desc>
          <delta_ts>2012-02-23 14:09:50 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Sievers">sievers</reporter>
          <assigned_to name="Daniel Sievers">sievers</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>fischman</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>qinmin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>554479</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-10 16:14:18 -0800</bug_when>
    <thetext>[Chromium] Add video stream texture support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554487</commentid>
    <comment_count>1</comment_count>
      <attachid>126602</attachid>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-10 16:24:19 -0800</bug_when>
    <thetext>Created attachment 126602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554489</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-10 16:27:14 -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>554492</commentid>
    <comment_count>3</comment_count>
      <attachid>126602</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-10 16:31:31 -0800</bug_when>
    <thetext>Comment on attachment 126602
Patch

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

I&apos;ve seen the compositor stuff before and think it&apos;s generally on track. I&apos;ll have to think through the proxy setup/teardown paths a bit to make sure I understand them and they&apos;re completely safe. Two general notes on copyright headers: 1) It&apos;s 2012 now 2) try to use 2-clause for new files

&gt; Source/WebCore/platform/graphics/chromium/cc/CCVideoLayerImpl.cpp:105
&gt; +    , m_layerTreeHostImpl(0)

what&apos;s supposed to initialize this? or is that a FIXME?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554493</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-10 16:34:31 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCVideoLayerImpl.cpp:105
&gt; &gt; +    , m_layerTreeHostImpl(0)
&gt; 
&gt; what&apos;s supposed to initialize this? or is that a FIXME?

Yes, it would need another change to properly set this.
Should I take a look at that? I think you said we can simply set this when we create the layer impl since it doesn&apos;t change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554495</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-10 16:37:05 -0800</bug_when>
    <thetext>Also maybe the new shaders in ShaderChromium should be renamed to not have Android in the name? Since everything else is named more generically, and this is more of an &apos;external texture&apos; (GL_OES_EGL_image_external) shader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554499</commentid>
    <comment_count>6</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-02-10 16:43:04 -0800</bug_when>
    <thetext>FragmentShaderRGBATexAlphaAndroid, should we remove those?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554646</commentid>
    <comment_count>7</comment_count>
      <attachid>126602</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-02-11 10:57:32 -0800</bug_when>
    <thetext>Comment on attachment 126602
Patch

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

&gt; Source/WebKit/chromium/public/WebMediaPlayer.h:166
&gt; +    virtual WebStreamTextureProxy* createStreamTextureProxy() { return 0; }

nit: normally the peer to a created interface is a *Client interface, and normally a *Client instance is passed as a parameter to the create* function.  See WebKitPlatformSupport::createURLLoader for example.

&gt; Source/WebKit/chromium/public/WebStreamTextureProxy.h:37
&gt; +class WebStreamTextureProxy {

what is a WebStreamTextureProxy?  It seems to have the properties that it can tell its client when a &quot;frame&quot; is available and it can also push a new matrix.  where is the data for the frame?

&gt; Source/WebKit/chromium/public/WebStreamTextureProxy.h:44
&gt; +        virtual void onFrameAvailable() = 0;

nit: we don&apos;t use the &quot;on&quot; prefix in the webkit api.  we use did/will prefixes so that we are more precise about if the notification is happening before or after a state change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555736</commentid>
    <comment_count>8</comment_count>
      <attachid>126860</attachid>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-13 16:30:09 -0800</bug_when>
    <thetext>Created attachment 126860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555746</commentid>
    <comment_count>9</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-13 16:36:55 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 126602 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126602&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebMediaPlayer.h:166
&gt; &gt; +    virtual WebStreamTextureProxy* createStreamTextureProxy() { return 0; }
&gt; 
&gt; nit: normally the peer to a created interface is a *Client interface, and normally a *Client instance is passed as a parameter to the create* function.  See WebKitPlatformSupport::createURLLoader for example.
&gt; 


See new patch. Is that roughly what you had in mind?


&gt; &gt; Source/WebKit/chromium/public/WebStreamTextureProxy.h:37
&gt; &gt; +class WebStreamTextureProxy {
&gt; 
&gt; what is a WebStreamTextureProxy?  It seems to have the properties that it can tell its client when a &quot;frame&quot; is available and it can also push a new matrix.  where is the data for the frame?
&gt; 

In the implementation in chromium it corresponds to a proxy object that attaches to the gpu channel and receives notifications. The reason I&apos;m exposing it here is that it needs to live on the correct thread, and its easiest to have the listener/client simply own it to manage lifetime. I added a comment, esp. since it doesn&apos;t really have members anymore now:

    // A proxy object held by StreamTextureClients that allows for managing  internal
    // state and the lifetime of notifications.
    class StreamTextureProxy {


&gt; &gt; Source/WebKit/chromium/public/WebStreamTextureProxy.h:44
&gt; &gt; +        virtual void onFrameAvailable() = 0;
&gt; 
&gt; nit: we don&apos;t use the &quot;on&quot; prefix in the webkit api.  we use did/will prefixes so that we are more precise about if the notification is happening before or after a state change.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556055</commentid>
    <comment_count>10</comment_count>
      <attachid>126860</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-14 00:34:09 -0800</bug_when>
    <thetext>Comment on attachment 126860
Patch

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

Not sure I fully grok the Proxy ownership issue.  What object are we trying to notify about destruction on which thread?  We have a notification set up for when CCVideoLayerImpls die via the VideoFrameProvider interface which is wired up to WebMediaPlayerClientImpl - is that not far enough?

&gt; Source/WebCore/platform/graphics/chromium/StreamTextureClient.h:38
&gt; +public:

please add a protected virtual d&apos;tor

&gt; Source/WebKit/chromium/src/StreamTextureProxyImpl.h:53
&gt; +        ~StreamTextureClientImpl() { }

virtual, please</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556344</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-14 09:26:20 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 126860 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126860&amp;action=review
&gt; 
&gt; Not sure I fully grok the Proxy ownership issue.  What object are we trying to notify about destruction on which thread?  

We are actually not notifying anyone about destruction, since this would leave races. Instead this is implemented similar to the RendererGLContext messages with messages being posted from io to compositor thread (bypassing main thread entirely). Essentially, the proxy wraps a (smart) weak pointer so that it handles the recipient going away without races. 

&gt;&gt; We have a notification set up for when CCVideoLayerImpls die via the VideoFrameProvider interface which is wired up to WebMediaPlayerClientImpl - is that not far enough?

I think the listener proxy wants to live on the compositor thread in this case, since it needs to detach the listener (or client in this case) without races, and actually the proxy object itself needs to be deleted on the compositor thread also (due to the weak ptr usage).

I guess the funky thing about this client interface is that it is called on the compositor thread. And that we post to a node like the cc layer impl directly, which is both implemented through the proxy object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557357</commentid>
    <comment_count>12</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-15 10:22:51 -0800</bug_when>
    <thetext>James, I looked at how the proxy ownership could be moved towards the provider by using the existing interface. The case that would not work is the CCVideoLayerImpl outliving the provider. 

In this case we cannot safely disconnect the impl layer (listener) from the message proxy object on the impl thread.
And disconnecting the listener from the message proxy from the main thread when the provider goes away in that case does not work either without having a lock around access to the listener pointer in the proxy object (i.e. having to acquire a lock every time we call into the listener).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557403</commentid>
    <comment_count>13</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-02-15 11:11:08 -0800</bug_when>
    <thetext>How does this feature set relate to HW decode paths as well as software video decode on another thread? Or is this 100% specific to Android?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557434</commentid>
    <comment_count>14</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-15 11:51:48 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; How does this feature set relate to HW decode paths as well as software video decode on another thread? Or is this 100% specific to Android?

The main functionality I&apos;m trying to upstream is setting a video layer as &apos;needs draw&apos; on the impl thread, when a new frame has been streamed. (There is a second callback for a change in the transformation matrix, which can be used to implement y-flips and other transforms needed for hw-decoded pictures.) 

It seems it&apos;s potentially useful for any implementation that decodes frames off the main thread, but I have no proof to say that it is practical for platforms other than Android.

This was done this way in order to
- bypass the main thread when new frames become available and we want to trigger a draw
- route the message to the layer node directly, so that the updates allow for being implemented efficiently (limiting damage, collapsing updates through scheduler)


The other changes (mainly in CCVideoLayerImpl and ShaderChromium) are to allow for rendering from GL_OES_EGL_image_external targets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561392</commentid>
    <comment_count>15</comment_count>
      <attachid>128086</attachid>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-21 17:07:13 -0800</bug_when>
    <thetext>Created attachment 128086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561395</commentid>
    <comment_count>16</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-21 17:10:36 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=128086) [details]
&gt; Patch

This patch removes the &apos;CCVideoLayerImpl owns a proxy&apos;. Instead have a client interface for the two notifications that WebMediaPlayerImpl implements in WebKit (and that forwards to the VideoFrameProvider::Client interface).

Also it&apos;s refactored after https://bugs.webkit.org/show_bug.cgi?id=76720.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561396</commentid>
    <comment_count>17</comment_count>
      <attachid>128086</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-21 17:12:07 -0800</bug_when>
    <thetext>Comment on attachment 128086
Patch

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

Compositor changes LGTM.  I like how small this patch is now :)

&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:686
&gt; +    // No lock since this gets called on the client&apos;s thread.

can we have ASSERT()s for thread correctness?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561411</commentid>
    <comment_count>18</comment_count>
      <attachid>128093</attachid>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-21 17:29:47 -0800</bug_when>
    <thetext>Created attachment 128093
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561413</commentid>
    <comment_count>19</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-21 17:30:29 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; &gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:686
&gt; &gt; +    // No lock since this gets called on the client&apos;s thread.
&gt; 
&gt; can we have ASSERT()s for thread correctness?

Done. Also updated the comments in CCVideoLayerImpl indicating which thread the VideoFrameProvider::Client APIs get called on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561417</commentid>
    <comment_count>20</comment_count>
      <attachid>128093</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-21 17:36:15 -0800</bug_when>
    <thetext>Comment on attachment 128093
Patch

OK, then looks fine from my end.  R=me, but give it a day in case Darin or anyone from the video team have comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561429</commentid>
    <comment_count>21</comment_count>
      <attachid>128093</attachid>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-02-21 17:52:23 -0800</bug_when>
    <thetext>Comment on attachment 128093
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/VideoFrameChromium.h:64
&gt; +        ExternalTexture,

Is it obvious what the difference between &quot;NativeTexture&quot; and &quot;ExternalTexture&quot; is?  (it isn&apos;t to me)

&gt; Source/WebCore/platform/graphics/chromium/cc/CCVideoLayerImpl.cpp:76
&gt; +    , m_layerTreeHostImpl(0)

Where is this set to non-0?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561431</commentid>
    <comment_count>22</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-21 17:55:29 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 128093 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128093&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/VideoFrameChromium.h:64
&gt; &gt; +        ExternalTexture,
&gt; 
&gt; Is it obvious what the difference between &quot;NativeTexture&quot; and &quot;ExternalTexture&quot; is?  (it isn&apos;t to me)

I picked it based on it using GL_OES_EGL_image_external, but am open to other suggestions!

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCVideoLayerImpl.cpp:76
&gt; &gt; +    , m_layerTreeHostImpl(0)
&gt; 
&gt; Where is this set to non-0?

Nowhere yet upstream :)  I was going to work on a separate patch for this, since James suggested every layer impl should maybe just have this backpointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561439</commentid>
    <comment_count>23</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-02-21 18:04:18 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; (From update of attachment 128093 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128093&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/VideoFrameChromium.h:64
&gt; &gt; &gt; +        ExternalTexture,
&gt; &gt; 
&gt; &gt; Is it obvious what the difference between &quot;NativeTexture&quot; and &quot;ExternalTexture&quot; is?  (it isn&apos;t to me)
&gt; 
&gt; I picked it based on it using GL_OES_EGL_image_external, but am open to other suggestions!

I wonder whether these can be a single type, or whether there&apos;s some key difference between them (such as the type of texture, or the way they&apos;re accessed, or something else).
If there is enough of a difference between them to require two different types, can commentary be added indicating each type&apos;s purpose that makes it clear what the difference is?
(I&apos;d suggest something more specific but like I said, I don&apos;t know what diffs are :))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561441</commentid>
    <comment_count>24</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-21 18:06:18 -0800</bug_when>
    <thetext>As I understand the differences are the shader you have to use and the texture target to bind to (TEXTURE_2D vs TEXTURE_EXTERNAL_OES).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561445</commentid>
    <comment_count>25</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-21 18:11:59 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; As I understand the differences are the shader you have to use and the texture target to bind to (TEXTURE_2D vs TEXTURE_EXTERNAL_OES).

If the VideoFrameChromium also had the texture target (which then gets also set on the draw quad), everything could be a NativeTexture and we differentiate based on the target. Sounds better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561448</commentid>
    <comment_count>26</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-02-21 18:18:45 -0800</bug_when>
    <thetext>Yes, that sounds better to me.
(presumably you&apos;re planning to switch shaders based on the target?  WFM but I know very little about the world of shaders)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561519</commentid>
    <comment_count>27</comment_count>
      <attachid>128119</attachid>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-21 19:48:43 -0800</bug_when>
    <thetext>Created attachment 128119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561521</commentid>
    <comment_count>28</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-21 19:53:11 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; Yes, that sounds better to me.
&gt; (presumably you&apos;re planning to switch shaders based on the target?  WFM but I know very little about the world of shaders)

Done. Needs https://chromiumcodereview.appspot.com/9416087/ to be functional though.

I&apos;ve renamed LayerRendererChromium::drawNativeTexure() to drawNativeTexture2D().
It still passes through the texture target in the draw quad&apos;s format field for native textures, as this is what it did before.

There&apos;s also a small bugfix I added, which causes me crashes:
126 void CCVideoLayerImpl::willDraw(LayerRendererChromium* layerRenderer)
127 {
...
131 
132     if (!m_provider) {
133         m_frame = 0;  // &lt;- I added this line or LayerRendererChromium might access a stale pointer
134         return;
135     }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561559</commentid>
    <comment_count>29</comment_count>
      <attachid>128119</attachid>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-02-21 20:47:57 -0800</bug_when>
    <thetext>Comment on attachment 128119
Patch

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

&gt; Source/WebKit/chromium/public/WebVideoFrame.h:54
&gt; +        FormatExternalTexture,

Can drop this now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561682</commentid>
    <comment_count>30</comment_count>
      <attachid>128119</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-22 00:02:29 -0800</bug_when>
    <thetext>Comment on attachment 128119
Patch

Attachment 128119 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11559406

New failing tests:
media/video-load-preload-none.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562352</commentid>
    <comment_count>31</comment_count>
      <attachid>128281</attachid>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-22 13:53:53 -0800</bug_when>
    <thetext>Created attachment 128281
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562353</commentid>
    <comment_count>32</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-22 13:54:50 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 128119 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128119&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebVideoFrame.h:54
&gt; &gt; +        FormatExternalTexture,
&gt; 
&gt; Can drop this now?

Oops, thanks. Done.

Do you think the test failure on the review bot will go away after landing http://codereview.chromium.org/9416087/?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562359</commentid>
    <comment_count>33</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-02-22 13:57:58 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #29)
&gt; &gt; (From update of attachment 128119 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128119&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/chromium/public/WebVideoFrame.h:54
&gt; &gt; &gt; +        FormatExternalTexture,
&gt; &gt; 
&gt; &gt; Can drop this now?
&gt; 
&gt; Oops, thanks. Done.
&gt; 
&gt; Do you think the test failure on the review bot will go away after landing http://codereview.chromium.org/9416087/?

http/tests/media/video-referer.html is another open bug; I suspect the bot just needs to pick up a newer test_expectations.txt.
media/video-load-preload-none.html I don&apos;t know about; you should probably run it on your machine and see what&apos;s up with that crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562408</commentid>
    <comment_count>34</comment_count>
      <attachid>128281</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-22 14:48:02 -0800</bug_when>
    <thetext>Comment on attachment 128281
Patch

Attachment 128281 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11562621

New failing tests:
media/video-load-preload-none.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562426</commentid>
    <comment_count>35</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-22 15:05:23 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; (In reply to comment #32)
&gt; &gt; (In reply to comment #29)
&gt; &gt; &gt; (From update of attachment 128119 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128119&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit/chromium/public/WebVideoFrame.h:54
&gt; &gt; &gt; &gt; +        FormatExternalTexture,
&gt; &gt; &gt; 
&gt; &gt; &gt; Can drop this now?
&gt; &gt; 
&gt; &gt; Oops, thanks. Done.
&gt; &gt; 
&gt; &gt; Do you think the test failure on the review bot will go away after landing http://codereview.chromium.org/9416087/?
&gt; 
&gt; http/tests/media/video-referer.html is another open bug; I suspect the bot just needs to pick up a newer test_expectations.txt.
&gt; media/video-load-preload-none.html I don&apos;t know about; you should probably run it on your machine and see what&apos;s up with that crash.

Ok, that crash was a missing check for m_webMediaPlayer to be non-null in ~WebMediaPlayerClientImpl().

I guess I also want to add that check in setStreamTextureClient(), but I just realized that load() (on the main thread) and setStreamTextureClient() (on impl) thread can potentially race. So it seems like I also have to take the provider lock where we set or reset m_webMediaPlayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562430</commentid>
    <comment_count>36</comment_count>
      <attachid>128298</attachid>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-02-22 15:10:43 -0800</bug_when>
    <thetext>Created attachment 128298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563363</commentid>
    <comment_count>37</comment_count>
      <attachid>128298</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-23 12:23:49 -0800</bug_when>
    <thetext>Comment on attachment 128298
Patch

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563463</commentid>
    <comment_count>38</comment_count>
      <attachid>128298</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-23 14:09:44 -0800</bug_when>
    <thetext>Comment on attachment 128298
Patch

Clearing flags on attachment: 128298

Committed r108675: &lt;http://trac.webkit.org/changeset/108675&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563464</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-23 14:09:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126602</attachid>
            <date>2012-02-10 16:24:19 -0800</date>
            <delta_ts>2012-02-13 16:30:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78398-20120210162418.patch</filename>
            <type>text/plain</type>
            <size>41291</size>
            <attacher name="Daniel Sievers">sievers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRkNDU0NDU0MzlkODA0
MWQ5ZDJmNzRiMjQ2NTMzZjAxNjY1YzYyNi4uMmNmZDU1YTQ5MmQ2M2I3YzNlYjMzMTcxNjI1OWJl
MDVlNjliNjlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDEyLTAyLTEwICBEYW5p
ZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
QWRkIHZpZGVvIHN0cmVhbSB0ZXh0dXJlIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4Mzk4CisKKyAgICAgICAgVGhpcyB1cHN0cmVhbXMg
dGhlIGFic3RyYWN0aW9uIHVzZWQgb24gQW5kcm9pZCBmb3IKKyAgICAgICAgaGFyZHdhcmUgdmlk
ZW8gZGVjb2Rpbmcgd2l0aCB0aGUgY29tcG9zaXRvci4KKworICAgICAgICBNb3N0IG9mIHRoZSBp
bnRlcmZhY2VzIGFyZSBrZXB0IGdlbmVyaWMgYW5kIHRoZSBjb3JlCisgICAgICAgIG9mIHRoaXMg
Y2hhbmdlIGlzIHRvIGFsbG93IHRleHR1cmluZyBmcm9tIGFuIGV4dGVybmFsCisgICAgICAgIHRl
eHR1cmUgd2hpbGUgcmVjZWl2aW5nIG5vdGlmaWNhdGlvbnMgKG9uIHRoZSBjb21wb3NpdG9yCisg
ICAgICAgIHRocmVhZCBpZiB3ZSBhcmUgcnVubmluZyBpdCkgd2hlbiB0aGVyZSBhcmUgbmV3IGZy
YW1lcyB0bworICAgICAgICBiZSBkaXNwbGF5ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzdHJlYW1UZXh0dXJlTGF5ZXJQ
cm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51
cFNoYXJlZE9iamVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJWaWRlb0FuZHJvaWQ6OlZlcnRleFNoYWRl
clZpZGVvQW5kcm9pZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlZl
cnRleFNoYWRlclZpZGVvQW5kcm9pZDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhT
aGFkZXJWaWRlb0FuZHJvaWQ6OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFnbWVudFNoYWRlclZpZGVvQW5kcm9pZDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFn
bWVudFNoYWRlclZpZGVvQW5kcm9pZDo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQW5kcm9pZDo6Z2V0U2hhZGVyU3RyaW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oOgor
ICAgICAgICAoVmVydGV4U2hhZGVyVmlkZW9BbmRyb2lkKToKKyAgICAgICAgKFdlYkNvcmU6OlZl
cnRleFNoYWRlclZpZGVvQW5kcm9pZDo6bWF0cml4TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6VmVydGV4U2hhZGVyVmlkZW9BbmRyb2lkOjp0ZXhUcmFuc2Zvcm1Mb2NhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJWaWRlb0FuZHJvaWQ6OnRleE1hdHJpeExvY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxw
aGFBbmRyb2lkKToKKyAgICAgICAgKEZyYWdtZW50U2hhZGVyVmlkZW9BbmRyb2lkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TdHJlYW1UZXh0dXJlUHJveHkuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFN0cmVhbVRleHR1cmVQcm94eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHJlYW1UZXh0dXJlUHJveHk6On5TdHJlYW1UZXh0dXJlUHJveHkp
OgorICAgICAgICAoTGlzdGVuZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1ZpZGVvRnJhbWVDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvRnJhbWVQcm92aWRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChWaWRlb0ZyYW1lUHJvdmlkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1N0cmVhbVRleHR1cmVMaXN0ZW5lcjo6Q0NTdHJlYW1UZXh0dXJlTGlzdGVu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTdHJlYW1UZXh0dXJlTGlzdGVuZXI6On5DQ1N0cmVh
bVRleHR1cmVMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1N0cmVhbVRleHR1cmVMaXN0
ZW5lcjo6b25GcmFtZUF2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1N0cmVhbVRleHR1
cmVMaXN0ZW5lcjo6b25NYXRyaXhDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU3RyZWFt
VGV4dHVyZUxpc3RlbmVyOjpzZXRQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5
ZXJJbXBsOjpDQ1ZpZGVvTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRWRkNG
b3JtYXRUb0dDM0RGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6
ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpjb3B5RnJhbWVUb1Rl
eHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmRyYXdDb21tb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6ZHJhd1JHQkEpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6ZHJhd05hdGl2ZVRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6ZHJhd1N0cmVhbVRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6c2V0TmVlZHNSZWRyYXcpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NTdHJlYW1UZXh0dXJlTGlzdGVuZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTdHJlYW1UZXh0dXJlTGlzdGVuZXI6OnRleHR1cmVNYXRyaXgpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NTdHJlYW1UZXh0dXJlTGlzdGVuZXI6Omhhc1Byb3h5KToKKyAgICAg
ICAgKENDVmlkZW9MYXllckltcGwpOgorCiAyMDEyLTAyLTA5ICBTaGVyaWZmIEJvdCAgPHdlYmtp
dC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTA3MjYxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwNGI1YWFkNGFmMTIyN2I3
YWM4OTQwNjhmZTdiZmFhMjAzMDM4NjQ2Li4wZjA1ZDM2MDMxMjU1MDczYjFkNTk2MmY1ZGI5N2Ex
MDM3Y2NkOTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisy
MDEyLTAyLTEwICBEYW5pZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtDaHJvbWl1bV0gQWRkIHZpZGVvIHN0cmVhbSB0ZXh0dXJlIHN1cHBvcnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4Mzk4CisKKyAgICAgICAg
VGhpcyB1cHN0cmVhbXMgdGhlIGFic3RyYWN0aW9uIHVzZWQgb24gQW5kcm9pZCBmb3IKKyAgICAg
ICAgaGFyZHdhcmUgdmlkZW8gZGVjb2Rpbmcgd2l0aCB0aGUgY29tcG9zaXRvci4KKworICAgICAg
ICBNb3N0IG9mIHRoZSBpbnRlcmZhY2VzIGFyZSBrZXB0IGdlbmVyaWMgYW5kIHRoZSBjb3JlCisg
ICAgICAgIG9mIHRoaXMgY2hhbmdlIGlzIHRvIGFsbG93IHRleHR1cmluZyBmcm9tIGFuIGV4dGVy
bmFsCisgICAgICAgIHRleHR1cmUgd2hpbGUgcmVjZWl2aW5nIG5vdGlmaWNhdGlvbnMgKG9uIHRo
ZSBjb21wb3NpdG9yCisgICAgICAgIHRocmVhZCBpZiB3ZSBhcmUgcnVubmluZyBpdCkgd2hlbiB0
aGVyZSBhcmUgbmV3IGZyYW1lcyB0bworICAgICAgICBiZSBkaXNwbGF5ZWQuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAg
ICAgICAqIHB1YmxpYy9XZWJNZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXI6OmNyZWF0ZVN0cmVhbVRleHR1cmVQcm94eSk6Cisg
ICAgICAgIChXZWJNZWRpYVBsYXllcik6CisgICAgICAgICogcHVibGljL1dlYlN0cmVhbVRleHR1
cmVQcm94eS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlN0cmVhbVRleHR1cmVQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0cmVhbVRleHR1cmVQcm94eTo6fldlYlN0cmVh
bVRleHR1cmVQcm94eSk6CisgICAgICAgIChMaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlN0cmVhbVRleHR1cmVQcm94eTo6TGlzdGVuZXI6On5MaXN0ZW5lcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlN0cmVhbVRleHR1cmVQcm94eTo6V2ViU3RyZWFtVGV4dHVyZVByb3h5KToKKyAgICAg
ICAgKiBwdWJsaWMvV2ViVmlkZW9GcmFtZS5oOgorICAgICAgICAqIHNyYy9TdHJlYW1UZXh0dXJl
UHJveHlJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChMaXN0ZW5lclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6TGlzdGVuZXJQcm94eTo6TGlzdGVuZXJQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6Okxpc3RlbmVyUHJveHk6On5MaXN0ZW5lclByb3h5KToKKyAgICAgICAgKFdl
YktpdDo6TGlzdGVuZXJQcm94eTo6b25GcmFtZUF2YWlsYWJsZSk6CisgICAgICAgIChXZWJLaXQ6
Okxpc3RlbmVyUHJveHk6Om9uTWF0cml4Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlN0cmVh
bVRleHR1cmVQcm94eUltcGw6OlN0cmVhbVRleHR1cmVQcm94eUltcGwpOgorICAgICAgICAoV2Vi
S2l0OjpTdHJlYW1UZXh0dXJlUHJveHlJbXBsOjpzZXRMaXN0ZW5lcik6CisgICAgICAgICogc3Jj
L1N0cmVhbVRleHR1cmVQcm94eUltcGwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChT
dHJlYW1UZXh0dXJlUHJveHlJbXBsKToKKyAgICAgICAgKFdlYktpdDo6U3RyZWFtVGV4dHVyZVBy
b3h5SW1wbDo6flN0cmVhbVRleHR1cmVQcm94eUltcGwpOgorICAgICAgICAqIHNyYy9XZWJNZWRp
YVBsYXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpjcmVhdGVTdHJlYW1UZXh0dXJlUHJveHkpOgor
ICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsKToKKwogMjAxMi0wMi0wOSAg
Sm9uYXRoYW4gQmFja2VyICA8YmFja2VyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIEFkZCBzZXROZWVkc1JlZHJhdyB0byBXZWJXaWRnZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA5
MGNkOGUxNDhlNjY5YWVmYzNhMjVlMTg4Y2VlNDZiZGFlOGY2NWYxLi5hNWNmNWMzNTNiOTY4N2Y4
OWRkMzA4ZTMyODRmMjU1ODQyMmNkY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zMTk4LDYgKzMx
OTgsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NpbXBsZUZv
bnREYXRhQ2hyb21pdW1XaW4uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
dHJlYW1UZXh0dXJlUHJveHkuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRl
bnNpb25zM0RDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaAppbmRleCBlMTY0NjA5YWU5NDdiMTZmZTEwNjJh
NGZkZDQ5NmQyYTZlNGU3ZmEzLi4zODMyOTZiY2MxMGEwODZiOGM2OWFiZGViMzcyOWViODc5MjI1
YmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgKQEAgLTYzLDYgKzYzLDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdM
RShQbGF0Zm9ybTNET2JqZWN0KTsKIAogICAgIGVudW0geworICAgICAgICAvLyBHTF9PRVNfRUdM
X2ltYWdlX2V4dGVybmFsCisgICAgICAgIEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTID0gMHg4RDY1
LAorCiAgICAgICAgIC8vIEdMX0NIUk9NSVVNX21hcF9zdWIgKGVudW1zIGluaGVyaXRlZCBmcm9t
IEdMX0FSQl92ZXJ0ZXhfYnVmZmVyX29iamVjdCkKICAgICAgICAgUkVBRF9PTkxZID0gMHg4OEI4
LAogICAgICAgICBXUklURV9PTkxZID0gMHg4OEI5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5jcHAKaW5kZXggMWU1ZWU1NjNmZjc0OTczMjlmZmY1MWQ1MDNkNzQ3ZjU4NTMwMDhk
MC4uNjQ2MTc3MjE1ZmE1NDFiYjg5MTAwNTQzZDk3Mzk5ZTE2OTAxZmE3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0xMjU1LDYgKzEyNTUsMTYgQEAgY29uc3Qg
Q0NWaWRlb0xheWVySW1wbDo6TmF0aXZlVGV4dHVyZVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6dmlkZW9MYXllck4KICAgICByZXR1cm4gbV92aWRlb0xheWVyTmF0aXZlVGV4dHVyZVBy
b2dyYW0uZ2V0KCk7CiB9CiAKK2NvbnN0IENDVmlkZW9MYXllckltcGw6OlN0cmVhbVRleHR1cmVQ
cm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnN0cmVhbVRleHR1cmVMYXllclByb2dyYW0o
KQoreworICAgIGlmICghbV9zdHJlYW1UZXh0dXJlTGF5ZXJQcm9ncmFtKQorICAgICAgICBtX3N0
cmVhbVRleHR1cmVMYXllclByb2dyYW0gPSBhZG9wdFB0cihuZXcgQ0NWaWRlb0xheWVySW1wbDo6
U3RyZWFtVGV4dHVyZVByb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CisgICAgaWYgKCFtX3N0cmVh
bVRleHR1cmVMYXllclByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZF
TlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c3RyZWFtVGV4dHVyZUxheWVyUHJvZ3JhbTo6aW5p
dGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBtX3N0cmVhbVRleHR1cmVMYXllclByb2dyYW0t
PmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIG1fc3RyZWFt
VGV4dHVyZUxheWVyUHJvZ3JhbS5nZXQoKTsKK30KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmNsZWFudXBTaGFyZWRPYmplY3RzKCkKIHsKQEAgLTEyOTYsNiArMTMwNiw4IEBAIHZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cygpCiAgICAgICAgIG1f
dmlkZW9MYXllclJHQkFQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYg
KG1fdmlkZW9MYXllcllVVlByb2dyYW0pCiAgICAgICAgIG1fdmlkZW9MYXllcllVVlByb2dyYW0t
PmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAgICBpZiAobV9zdHJlYW1UZXh0dXJlTGF5ZXJQ
cm9ncmFtKQorICAgICAgICBtX3N0cmVhbVRleHR1cmVMYXllclByb2dyYW0tPmNsZWFudXAobV9j
b250ZXh0LmdldCgpKTsKIAogICAgIG1fYm9yZGVyUHJvZ3JhbS5jbGVhcigpOwogICAgIG1faGVh
ZHNVcERpc3BsYXlQcm9ncmFtLmNsZWFyKCk7CkBAIC0xMzE0LDYgKzEzMjYsNyBAQCB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMoKQogICAgIG1fcmVuZGVy
U3VyZmFjZVByb2dyYW1BQS5jbGVhcigpOwogICAgIG1fdmlkZW9MYXllclJHQkFQcm9ncmFtLmNs
ZWFyKCk7CiAgICAgbV92aWRlb0xheWVyWVVWUHJvZ3JhbS5jbGVhcigpOworICAgIG1fc3RyZWFt
VGV4dHVyZUxheWVyUHJvZ3JhbS5jbGVhcigpOwogICAgIGlmIChtX29mZnNjcmVlbkZyYW1lYnVm
ZmVySWQpCiAgICAgICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGVsZXRlRnJh
bWVidWZmZXIobV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgKaW5kZXggYmVhNGJhYTQxMGRkYzAwMDI1YjBhMGRjZGY0MWEyMjNkOGZh
ODIwZS4uNzQzMzYyNmZhMzJlMjhlOGZkODM5M2U0OTMyZGM0OTQ5NWViNjkxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTEzMCw2ICsxMzAsNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6UkdCQVByb2dyYW0qIHZpZGVvTGF5ZXJSR0JBUHJv
Z3JhbSgpOwogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OllVVlByb2dyYW0qIHZpZGVvTGF5
ZXJZVVZQcm9ncmFtKCk7CiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6TmF0aXZlVGV4dHVy
ZVByb2dyYW0qIHZpZGVvTGF5ZXJOYXRpdmVUZXh0dXJlUHJvZ3JhbSgpOworICAgIGNvbnN0IEND
VmlkZW9MYXllckltcGw6OlN0cmVhbVRleHR1cmVQcm9ncmFtKiBzdHJlYW1UZXh0dXJlTGF5ZXJQ
cm9ncmFtKCk7CiAKICAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywg
Y29uc3QgSW50UmVjdCYpOwogCkBAIC0yMjYsNiArMjI3LDcgQEAgcHJpdmF0ZToKICAgICBPd25Q
dHI8Q0NWaWRlb0xheWVySW1wbDo6UkdCQVByb2dyYW0+IG1fdmlkZW9MYXllclJHQkFQcm9ncmFt
OwogICAgIE93blB0cjxDQ1ZpZGVvTGF5ZXJJbXBsOjpZVVZQcm9ncmFtPiBtX3ZpZGVvTGF5ZXJZ
VVZQcm9ncmFtOwogICAgIE93blB0cjxDQ1ZpZGVvTGF5ZXJJbXBsOjpOYXRpdmVUZXh0dXJlUHJv
Z3JhbT4gbV92aWRlb0xheWVyTmF0aXZlVGV4dHVyZVByb2dyYW07CisgICAgT3duUHRyPENDVmlk
ZW9MYXllckltcGw6OlN0cmVhbVRleHR1cmVQcm9ncmFtPiBtX3N0cmVhbVRleHR1cmVMYXllclBy
b2dyYW07CiAKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fcmVuZGVyU3VyZmFjZVRleHR1
cmVNYW5hZ2VyOwogICAgIE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IG1fY29udGVu
dHNUZXh0dXJlQWxsb2NhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCmluZGV4IGY2OWI2YjE4
YWE3OWJlOTc1ODhhYWFiYWQ4OTMzNGNkMzIyMmY2NjQuLmI1NTdiYzcxYzE0MTlhOWYzZmVhYmQ0
YTM5MjQwYjBjYzA3YWU0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAKQEAgLTI1NSw2ICsy
NTUsMzkgQEAgU3RyaW5nIFZlcnRleFNoYWRlclRpbGU6OmdldFNoYWRlclN0cmluZygpIGNvbnN0
CiAgICAgKTsKIH0KIAorVmVydGV4U2hhZGVyVmlkZW9BbmRyb2lkOjpWZXJ0ZXhTaGFkZXJWaWRl
b0FuZHJvaWQoKQorICAgIDogbV9tYXRyaXhMb2NhdGlvbigtMSkKKyAgICAsIG1fdGV4VHJhbnNm
b3JtTG9jYXRpb24oLTEpCisgICAgLCBtX3RleE1hdHJpeExvY2F0aW9uKC0xKQoreworfQorCiti
b29sIFZlcnRleFNoYWRlclZpZGVvQW5kcm9pZDo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3sKKyAgICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRyaXgiKTsKKyAgICBtX3RleFRyYW5z
Zm9ybUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhU
cmFuc2Zvcm0iKTsKKyAgICBtX3RleE1hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhNYXRyaXgiKTsKKyAgICByZXR1cm4gbV9tYXRyaXhMb2Nh
dGlvbiAhPSAtMSAmJiBtX3RleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xICYmIG1fdGV4TWF0cml4
TG9jYXRpb24gIT0gLTE7Cit9CisKK1N0cmluZyBWZXJ0ZXhTaGFkZXJWaWRlb0FuZHJvaWQ6Omdl
dFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAgYXR0
cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKKyAgICAgICAgYXR0cmlidXRlIHZlYzIgYV90ZXhDb29y
ZDsKKyAgICAgICAgdW5pZm9ybSBtYXQ0IG1hdHJpeDsKKyAgICAgICAgdW5pZm9ybSB2ZWM0IHRl
eFRyYW5zZm9ybTsKKyAgICAgICAgdW5pZm9ybSBtYXQ0IHRleE1hdHJpeDsKKyAgICAgICAgdmFy
eWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGdsX1Bvc2l0aW9uID0gbWF0cml4ICogYV9wb3NpdGlvbjsKKyAgICAgICAgICAg
IHZlYzIgdGV4Q29vcmQgPSB2ZWMyKHRleE1hdHJpeCAqIHZlYzQoYV90ZXhDb29yZC54LCAxLjAg
LSBhX3RleENvb3JkLnksIDAuMCwgMS4wKSk7CisgICAgICAgICAgICB2X3RleENvb3JkID0gdGV4
Q29vcmQgKiB0ZXhUcmFuc2Zvcm0uencgKyB0ZXhUcmFuc2Zvcm0ueHk7CisgICAgICAgIH0KKyAg
ICApOworfQorCiBGcmFnbWVudFRleEFscGhhQmluZGluZzo6RnJhZ21lbnRUZXhBbHBoYUJpbmRp
bmcoKQogICAgIDogbV9zYW1wbGVyTG9jYXRpb24oLTEpCiAgICAgLCBtX2FscGhhTG9jYXRpb24o
LTEpCkBAIC0yOTYsNiArMzI5LDQyIEBAIFN0cmluZyBGcmFnbWVudFNoYWRlclJHQkFUZXhGbGlw
QWxwaGE6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CiAgICAgKTsKIH0KIAorYm9vbCBGcmFnbWVu
dFNoYWRlclZpZGVvQW5kcm9pZDo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5z
aWduZWQgcHJvZ3JhbSkKK3sKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7CisKKyAgICByZXR1cm4gbV9zYW1w
bGVyTG9jYXRpb24gIT0gLTE7Cit9CisKK1N0cmluZyBGcmFnbWVudFNoYWRlclZpZGVvQW5kcm9p
ZDo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKK3sKKyAgICAvLyBCZWNhdXNlIGFuZHJvaWQgc2hh
ZGVyIHN0YXJ0cyB3aXRoIGEgIywgd2UgY2Fubm90IHVzZSB0aGUgU0hBREVSIG1hY3JvCisgICAg
cmV0dXJuICIjZXh0ZW5zaW9uIEdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgOiByZXF1aXJlIFxu
IgorICAgICAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAgICAg
InZhcnlpbmcgdmVjMiB2X3RleENvb3JkO1xuIgorICAgICAgICAgICAgInVuaWZvcm0gc2FtcGxl
ckV4dGVybmFsT0VTIHNfdGV4dHVyZTtcbiIKKyAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgor
ICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgdmVjNCB0ZXhDb2xvciA9IHRleHR1
cmUyRChzX3RleHR1cmUsIHZfdGV4Q29vcmQpO1xuIgorICAgICAgICAgICAgIiAgICBnbF9GcmFn
Q29sb3IgPSB2ZWM0KHRleENvbG9yLngsIHRleENvbG9yLnksIHRleENvbG9yLnosIHRleENvbG9y
LncpO1xuIgorICAgICAgICAgICAgIn1cbiI7Cit9CisKK1N0cmluZyBGcmFnbWVudFNoYWRlclJH
QkFUZXhBbHBoYUFuZHJvaWQ6OmdldFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgLy8gQmVj
YXVzZSBhbmRyb2lkIHNoYWRlciBzdGFydHMgd2l0aCBhICMsIHdlIGNhbm5vdCB1c2UgdGhlIFNI
QURFUiBtYWNybworICAgIHJldHVybiAiI2V4dGVuc2lvbiBHTF9PRVNfRUdMX2ltYWdlX2V4dGVy
bmFsIDogcmVxdWlyZSBcbiIKKyAgICAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7XG4iCisgICAgICAgICAgICJ1
bmlmb3JtIHNhbXBsZXJFeHRlcm5hbE9FUyBzX3RleHR1cmU7XG4iCisgICAgICAgICAgICJ1bmlm
b3JtIGZsb2F0IGFscGhhO1xuIgorICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAg
ICAgIntcbiIKKyAgICAgICAgICAgIiAgICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKHNfdGV4
dHVyZSwgdl90ZXhDb29yZCk7XG4iCisgICAgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdGV4
Q29sb3IgKiBhbHBoYTtcbiIKKyAgICAgICAgICAgIn1cbiI7Cit9CisKIFN0cmluZyBGcmFnbWVu
dFNoYWRlclJHQkFUZXhBbHBoYTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1
cm4gU0hBREVSKApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKaW5kZXggMzQzMjNlNmQzMzk5NzdlZTNmNTVk
MjkwNTlhODNmZWEwZWZlYzVkYS4uMWFmMGQ0MDllOTIyMGI4N2U5Njc4MGE2ZTFiMWFmNjQxMzEz
NjNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2hhZGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCkBAIC0xNDUsNiArMTQ1LDIzIEBAIHByaXZhdGU6
CiAgICAgaW50IG1fdmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb247CiB9OwogCitjbGFzcyBWZXJ0
ZXhTaGFkZXJWaWRlb0FuZHJvaWQgeworcHVibGljOgorICAgIFZlcnRleFNoYWRlclZpZGVvQW5k
cm9pZCgpOworCisgICAgYm9vbCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJv
Z3JhbSk7CisgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OworCisgICAgaW50IG1h
dHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbjsgfQorICAgIGlu
dCB0ZXhUcmFuc2Zvcm1Mb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4VHJhbnNmb3JtTG9j
YXRpb247IH0KKyAgICBpbnQgdGV4TWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Rl
eE1hdHJpeExvY2F0aW9uOyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fbWF0cml4TG9jYXRpb247
CisgICAgaW50IG1fdGV4VHJhbnNmb3JtTG9jYXRpb247CisgICAgaW50IG1fdGV4TWF0cml4TG9j
YXRpb247Cit9OworCiBjbGFzcyBGcmFnbWVudFRleEFscGhhQmluZGluZyB7CiBwdWJsaWM6CiAg
ICAgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcoKTsKQEAgLTIxMSw2ICsyMjgsMjEgQEAgcHVibGlj
OgogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIH07CiAKKy8vIEZyYWdtZW50
IHNoYWRlciBmb3IgcGx1Z2lucworY2xhc3MgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBbmRy
b2lkIDogcHVibGljIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nIHsKK3B1YmxpYzoKKyAgICBTdHJp
bmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7Cit9OworCisvLyBGcmFnbWVudCBzaGFkZXIgZm9y
IHZpZGVvCitjbGFzcyBGcmFnbWVudFNoYWRlclZpZGVvQW5kcm9pZCA6IHB1YmxpYyBGcmFnbWVu
dFRleEFscGhhQmluZGluZyB7CitwdWJsaWM6CisgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygp
IGNvbnN0OworICAgIGJvb2wgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dy
YW0pOworcHJpdmF0ZToKKyAgICBpbnQgbV9zYW1wbGVyTG9jYXRpb247Cit9OworCiBjbGFzcyBG
cmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBIHsKIHB1YmxpYzoKICAgICBGcmFnbWVudFNoYWRl
clJHQkFUZXhBbHBoYUFBKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9TdHJlYW1UZXh0dXJlUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1N0cmVhbVRleHR1cmVQcm94eS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ5OTc1YzY0ZTYyYTFkMTg5ZDdkZTY0ZmM4ZmM3ZjIwOGI3YjI2YzYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TdHJlYW1UZXh0
dXJlUHJveHkuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTdHJl
YW1UZXh0dXJlUHJveHlfaAorI2RlZmluZSBTdHJlYW1UZXh0dXJlUHJveHlfaAorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKy8vIEEgcHJveHkgY2xhc3MgZm9yIG5vdGlmaWNhdGlvbnMgZnJvbSBh
IHN0cmVhbWluZyB0ZXh0dXJlIHByb2R1Y2VyLgorY2xhc3MgU3RyZWFtVGV4dHVyZVByb3h5IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TdHJlYW1UZXh0dXJlUHJveHkoKSB7IH0KKworICAgIGNs
YXNzIExpc3RlbmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgdm9pZCBvbkZyYW1l
QXZhaWxhYmxlKCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgb25NYXRyaXhDaGFuZ2VkKGNv
bnN0IGZsb2F0IG10eFsxNl0pID0gMDsKKyAgICB9OworCisgICAgdmlydHVhbCB2b2lkIHNldExp
c3RlbmVyKExpc3RlbmVyKikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1ZpZGVvRnJhbWVDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmgKaW5kZXggYzRhYmQ5NjlkMWVkMTFkNzg0
MzdkNTA5YzM0ZGFkOTVlZDkzNDJiMi4uMTNhMjNiNDQ3YzE4OTVmNWY1YTEzYTgzZThlYjI4N2Y4
ZGFhM2QzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmgKQEAgLTYxLDYgKzYxLDcgQEAg
cHVibGljOgogICAgICAgICBBU0NJSSwKICAgICAgICAgSTQyMCwKICAgICAgICAgTmF0aXZlVGV4
dHVyZSwKKyAgICAgICAgRXh0ZXJuYWxUZXh0dXJlLAogICAgIH07CiAKICAgICB2aXJ0dWFsIH5W
aWRlb0ZyYW1lQ2hyb21pdW0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmgKaW5kZXggM2Q0
M2E5MGMzN2E2MzdhY2U3Y2M3MzIxNzYzZGU0YTM5Nzk5NDFkZC4uOTljZjQ5MjBhYTJhZDc0ZTNl
YjNmZWIyNzJlMTFjYjdjMzVlZjZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmgKQEAg
LTMyLDkgKzMyLDEyIEBACiAjZGVmaW5lIFZpZGVvRnJhbWVQcm92aWRlcl9oCiAKICNpbmNsdWRl
ICJWaWRlb0ZyYW1lQ2hyb21pdW0uaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFN0cmVhbVRleHR1cmVQcm94eTsKKwogY2xhc3Mg
VmlkZW9GcmFtZVByb3ZpZGVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5WaWRlb0ZyYW1lUHJv
dmlkZXIoKSB7IH0KQEAgLTU4LDYgKzYxLDggQEAgcHVibGljOgogICAgIC8vIGFsd2F5cyBiZSBj
YWxsZWQgYWZ0ZXIgZ2V0Q3VycmVudEZyYW1lKCkuIEZyYW1lcyBwYXNzZWQgaW50byB0aGlzIG1l
dGhvZAogICAgIC8vIHNob3VsZCBubyBsb25nZXIgYmUgcmVmZXJlbmNlZCBhZnRlciB0aGUgY2Fs
bCBpcyBtYWRlLgogICAgIHZpcnR1YWwgdm9pZCBwdXRDdXJyZW50RnJhbWUoVmlkZW9GcmFtZUNo
cm9taXVtKikgPSAwOworCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFN0cmVhbVRleHR1cmVQcm94
eT4gY3JlYXRlU3RyZWFtVGV4dHVyZVByb3h5KCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAppbmRleCBlZWYwY2EzZTk0
MjViNDZlYTNhYTUxYzg3YWEyNDg5ZmIzZTM0MzY0Li4zOWY3NGE2MmNhYmZkMzkxNzIwYjc3NWY1
MGU0NjcxMTRjMzc5ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApAQCAt
NjIsOSArNjIsNDcgQEAgY29uc3QgZmxvYXQgQ0NWaWRlb0xheWVySW1wbDo6eXV2QWRqdXN0WzNd
ID0gewogICAgIC0wLjVmLAogfTsKIAorLy8gVGhpcyBtYXRyaXggaXMgdGhlIGRlZmF1bHQgdHJh
bnNmb3JtYXRpb24gZm9yIHN0cmVhbSB0ZXh0dXJlcy4KK2NvbnN0IGZsb2F0IENDU3RyZWFtVGV4
dHVyZUxpc3RlbmVyOjpmbGlwVHJhbnNmb3JtWzE2XSA9IHsKKyAgICAxLCAwLCAwLCAwLAorICAg
IDAsIC0xLCAwLCAwLAorICAgIDAsIDAsIDEsIDAsCisgICAgMCwgMSwgMCwgMSwKK307CisKK0ND
U3RyZWFtVGV4dHVyZUxpc3RlbmVyOjpDQ1N0cmVhbVRleHR1cmVMaXN0ZW5lcihDQ1ZpZGVvTGF5
ZXJJbXBsKiBvd25lcikKKyAgICA6IG1fb3duZXIob3duZXIpCit7CisgICAgbWVtY3B5KG1fdGV4
dHVyZU1hdHJpeCwgZmxpcFRyYW5zZm9ybSwgc2l6ZW9mKG1fdGV4dHVyZU1hdHJpeCkpOworfQor
CitDQ1N0cmVhbVRleHR1cmVMaXN0ZW5lcjo6fkNDU3RyZWFtVGV4dHVyZUxpc3RlbmVyKCkKK3sK
K30KKwordm9pZCBDQ1N0cmVhbVRleHR1cmVMaXN0ZW5lcjo6b25GcmFtZUF2YWlsYWJsZSgpCit7
CisgICAgbV9vd25lci0+c2V0TmVlZHNSZWRyYXcoKTsKK30KKwordm9pZCBDQ1N0cmVhbVRleHR1
cmVMaXN0ZW5lcjo6b25NYXRyaXhDaGFuZ2VkKGNvbnN0IGZsb2F0IG1hdHJpeFsxNl0pCit7Cisg
ICAgbWVtY3B5KG1fdGV4dHVyZU1hdHJpeCwgbWF0cml4LCBzaXplb2YobV90ZXh0dXJlTWF0cml4
KSk7CisgICAgbV9vd25lci0+c2V0TmVlZHNSZWRyYXcoKTsKK30KKwordm9pZCBDQ1N0cmVhbVRl
eHR1cmVMaXN0ZW5lcjo6c2V0UHJveHkoUGFzc093blB0cjxTdHJlYW1UZXh0dXJlUHJveHk+IHBy
b3h5KQoreworICAgIEFTU0VSVChwcm94eSk7CisgICAgbV9wcm94eSA9IHByb3h5OworICAgIG1f
cHJveHktPnNldExpc3RlbmVyKHRoaXMpOworfQorCiBDQ1ZpZGVvTGF5ZXJJbXBsOjpDQ1ZpZGVv
TGF5ZXJJbXBsKGludCBpZCwgVmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92aWRlcikKICAgICA6IEND
TGF5ZXJJbXBsKGlkKQogICAgICwgbV9wcm92aWRlcihwcm92aWRlcikKKyAgICAsIG1fc3RyZWFt
VGV4dHVyZUxpc3RlbmVyKHRoaXMpCisgICAgLCBtX2xheWVyVHJlZUhvc3RJbXBsKDApCiB7CiAg
ICAgcHJvdmlkZXItPnNldFZpZGVvRnJhbWVQcm92aWRlckNsaWVudCh0aGlzKTsKIH0KQEAgLTk4
LDYgKzEzNiw4IEBAIHN0YXRpYyBHQzNEZW51bSBjb252ZXJ0VkZDRm9ybWF0VG9HQzNERm9ybWF0
KFZpZGVvRnJhbWVDaHJvbWl1bTo6Rm9ybWF0IGZvcm1hdCkKICAgICAgICAgcmV0dXJuIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBOwogICAgIGNhc2UgVmlkZW9GcmFtZUNocm9taXVtOjpOYXRpdmVU
ZXh0dXJlOgogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQ7Cisg
ICAgY2FzZSBWaWRlb0ZyYW1lQ2hyb21pdW06OkV4dGVybmFsVGV4dHVyZToKKyAgICAgICAgcmV0
dXJuIEV4dGVuc2lvbnMzRENocm9taXVtOjpHTF9URVhUVVJFX0VYVEVSTkFMX09FUzsKICAgICBj
YXNlIFZpZGVvRnJhbWVDaHJvbWl1bTo6SW52YWxpZDoKICAgICBjYXNlIFZpZGVvRnJhbWVDaHJv
bWl1bTo6UkdCNTU1OgogICAgIGNhc2UgVmlkZW9GcmFtZUNocm9taXVtOjpSR0I1NjU6CkBAIC0x
NDYsNiArMTg2LDkgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpkcmF3KExheWVyUmVuZGVyZXJD
aHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJEOgogICAgICAgICBkcmF3TmF0aXZlVGV4dHVyZShsYXllclJlbmRlcmVyKTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBFeHRlbnNpb25zM0RDaHJvbWl1bTo6R0xfVEVYVFVSRV9FWFRF
Uk5BTF9PRVM6CisgICAgICAgIGRyYXdTdHJlYW1UZXh0dXJlKGxheWVyUmVuZGVyZXIpOworICAg
ICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOyAvLyBTb21lb25lIHVw
ZGF0ZWQgY29udmVydFZGQ0Zvcm1hdFRvR0MzREZvcm1hdCBhYm92ZSBidXQgdXBkYXRlIHRoaXMh
CiAgICAgfQpAQCAtMTYzLDYgKzIwNiwyMCBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OmFwcGVu
ZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZQogCiBi
b29sIENDVmlkZW9MYXllckltcGw6OmNvcHlGcmFtZVRvVGV4dHVyZXMoY29uc3QgVmlkZW9GcmFt
ZUNocm9taXVtKiBmcmFtZSwgR0MzRGVudW0gZm9ybWF0LCBMYXllclJlbmRlcmVyQ2hyb21pdW0q
IGxheWVyUmVuZGVyZXIpCiB7CisgICAgaWYgKGZyYW1lLT5mb3JtYXQoKSA9PSBWaWRlb0ZyYW1l
Q2hyb21pdW06OkV4dGVybmFsVGV4dHVyZSkgeworICAgICAgICBtX25hdGl2ZVRleHR1cmVJZCA9
IGZyYW1lLT50ZXh0dXJlSWQoKTsKKyAgICAgICAgaWYgKCFtX25hdGl2ZVRleHR1cmVJZCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBtX25hdGl2ZVRleHR1cmVTaXplID0g
SW50U2l6ZShmcmFtZS0+d2lkdGgoKSwgZnJhbWUtPmhlaWdodCgpKTsKKyAgICAgICAgaWYgKCFt
X3N0cmVhbVRleHR1cmVMaXN0ZW5lci5oYXNQcm94eSgpKSB7CisgICAgICAgICAgICBPd25QdHI8
U3RyZWFtVGV4dHVyZVByb3h5PiBwcm94eSA9IG1fcHJvdmlkZXItPmNyZWF0ZVN0cmVhbVRleHR1
cmVQcm94eSgpOworICAgICAgICAgICAgaWYgKHByb3h5KQorICAgICAgICAgICAgICAgIG1fc3Ry
ZWFtVGV4dHVyZUxpc3RlbmVyLnNldFByb3h5KHByb3h5LnJlbGVhc2UoKSk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgaWYgKGZyYW1lLT5mb3JtYXQoKSA9
PSBWaWRlb0ZyYW1lQ2hyb21pdW06Ok5hdGl2ZVRleHR1cmUpIHsKICAgICAgICAgbV9uYXRpdmVU
ZXh0dXJlSWQgPSBmcmFtZS0+dGV4dHVyZUlkKCk7CiAgICAgICAgIG1fbmF0aXZlVGV4dHVyZVNp
emUgPSBJbnRTaXplKGZyYW1lLT53aWR0aCgpLCBmcmFtZS0+aGVpZ2h0KCkpOwpAQCAtMzAxLDE0
ICszNTgsMTQgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpkcmF3WVVWKExheWVyUmVuZGVyZXJD
aHJvbWl1bSogbGF5ZXJSZW5kZXJlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgUHJvZ3Jh
bT4KLXZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZHJhd0NvbW1vbihMYXllclJlbmRlcmVyQ2hyb21p
dW0qIGxheWVyUmVuZGVyZXIsIFByb2dyYW0qIHByb2dyYW0sIGZsb2F0IHdpZHRoU2NhbGVGYWN0
b3IsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkKSBjb25zdAordm9pZCBDQ1ZpZGVvTGF5ZXJJ
bXBsOjpkcmF3Q29tbW9uKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgUHJv
Z3JhbSogcHJvZ3JhbSwgZmxvYXQgd2lkdGhTY2FsZUZhY3RvciwgUGxhdGZvcm0zRE9iamVjdCB0
ZXh0dXJlSWQsIEdDM0RlbnVtIHRhcmdldCkgY29uc3QKIHsKICAgICBBU1NFUlQocHJvZ3JhbSAm
JiBwcm9ncmFtLT5pbml0aWFsaXplZCgpKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0ID0gbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwogCiAgICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCB0ZXh0dXJlSWQpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUo
dGFyZ2V0LCB0ZXh0dXJlSWQpKTsKIAogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51c2VQcm9n
cmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlm
b3JtNGYocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkudGV4VHJhbnNmb3JtTG9jYXRpb24oKSwgMCwg
MCwgd2lkdGhTY2FsZUZhY3RvciwgMSkpOwpAQCAtMzI1LDEzICszODIsMzIgQEAgdm9pZCBDQ1Zp
ZGVvTGF5ZXJJbXBsOjpkcmF3UkdCQShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVy
ZXIpIGNvbnN0CiAgICAgY29uc3QgUkdCQVByb2dyYW0qIHByb2dyYW0gPSBsYXllclJlbmRlcmVy
LT52aWRlb0xheWVyUkdCQVByb2dyYW0oKTsKICAgICBjb25zdCBUZXh0dXJlJiB0ZXh0dXJlID0g
bV90ZXh0dXJlc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnJnYlBsYW5lXTsKICAgICBmbG9hdCB3aWR0
aFNjYWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRleHR1cmUubV92aXNpYmxlU2l6ZS53
aWR0aCgpKSAvIHRleHR1cmUubV90ZXh0dXJlLT5zaXplKCkud2lkdGgoKTsKLSAgICBkcmF3Q29t
bW9uKGxheWVyUmVuZGVyZXIsIHByb2dyYW0sIHdpZHRoU2NhbGVGYWN0b3IsIHRleHR1cmUubV90
ZXh0dXJlLT50ZXh0dXJlSWQoKSk7CisgICAgZHJhd0NvbW1vbihsYXllclJlbmRlcmVyLCBwcm9n
cmFtLCB3aWR0aFNjYWxlRmFjdG9yLCB0ZXh0dXJlLm1fdGV4dHVyZS0+dGV4dHVyZUlkKCksIEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJEKTsKIH0KIAogdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpkcmF3TmF0aXZlVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIp
IGNvbnN0CiB7CiAgICAgY29uc3QgTmF0aXZlVGV4dHVyZVByb2dyYW0qIHByb2dyYW0gPSBsYXll
clJlbmRlcmVyLT52aWRlb0xheWVyTmF0aXZlVGV4dHVyZVByb2dyYW0oKTsKLSAgICBkcmF3Q29t
bW9uKGxheWVyUmVuZGVyZXIsIHByb2dyYW0sIDEsIG1fbmF0aXZlVGV4dHVyZUlkKTsKKyAgICBk
cmF3Q29tbW9uKGxheWVyUmVuZGVyZXIsIHByb2dyYW0sIDEsIG1fbmF0aXZlVGV4dHVyZUlkLCBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCk7Cit9CisKK3ZvaWQgQ0NWaWRlb0xheWVySW1w
bDo6ZHJhd1N0cmVhbVRleHR1cmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVy
KQoreworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlci0+Y29u
dGV4dCgpOworCisgICAgQVNTRVJUKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMo
IkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSAmJiBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PmlzRW5hYmxlZCgiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKTsKKworICAgIGNvbnN0IFN0
cmVhbVRleHR1cmVQcm9ncmFtKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlci0+c3RyZWFtVGV4dHVy
ZUxheWVyUHJvZ3JhbSgpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51c2VQcm9ncmFtKHBy
b2dyYW0tPnByb2dyYW0oKSkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtTWF0
cml4NGZ2KHByb2dyYW0tPnZlcnRleFNoYWRlcigpLnRleE1hdHJpeExvY2F0aW9uKCksIGZhbHNl
LCBjb25zdF9jYXN0PGZsb2F0Kj4obV9zdHJlYW1UZXh0dXJlTGlzdGVuZXIudGV4dHVyZU1hdHJp
eCgpKSwgMSkpOworCisgICAgZHJhd0NvbW1vbihsYXllclJlbmRlcmVyLCBwcm9ncmFtLCAxLCBt
X25hdGl2ZVRleHR1cmVJZCwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdMX1RFWFRVUkVfRVhURVJO
QUxfT0VTKTsKK30KKwordm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpzZXROZWVkc1JlZHJhdygpCit7
CisgICAgQVNTRVJUKG1fbGF5ZXJUcmVlSG9zdEltcGwpOworICAgIG1fbGF5ZXJUcmVlSG9zdElt
cGwtPnNldE5lZWRzUmVkcmF3KCk7CiB9CiAKIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZHVtcExh
eWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9M
YXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVmlkZW9MYXllckltcGwuaAppbmRleCAxODJmN2I1ODI3YzkxY2JmZmVlNWQzYmFlYWQxMDg1
MWY2ZmZiYTk1Li5kYjBiNWQ3ZGI5ZWJiZjAzZjUxZjU2ODg4YzMzYTY5ODA5MzIwMjJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIlNoYWRlckNocm9taXVtLmgiCisjaW5jbHVk
ZSAiU3RyZWFtVGV4dHVyZVByb3h5LmgiCiAjaW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtLmgi
CiAjaW5jbHVkZSAiVmlkZW9GcmFtZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiVmlkZW9MYXllckNo
cm9taXVtLmgiCkBAIC0zNSw4ICszNiwzMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7CitjbGFzcyBDQ1ZpZGVvTGF5ZXJJbXBsOworCiB0ZW1w
bGF0ZTxjbGFzcyBWZXJ0ZXhTaGFkZXIsIGNsYXNzIEZyYWdtZW50U2hhZGVyPiBjbGFzcyBQcm9n
cmFtQmluZGluZzsKIAorY2xhc3MgQ0NTdHJlYW1UZXh0dXJlTGlzdGVuZXIgOiBwdWJsaWMgU3Ry
ZWFtVGV4dHVyZVByb3h5OjpMaXN0ZW5lciB7CisgcHVibGljOgorICAgIGV4cGxpY2l0IENDU3Ry
ZWFtVGV4dHVyZUxpc3RlbmVyKENDVmlkZW9MYXllckltcGwqIG93bmVyKTsKKyAgICB+Q0NTdHJl
YW1UZXh0dXJlTGlzdGVuZXIoKTsKKworICAgIGNvbnN0IGZsb2F0KiB0ZXh0dXJlTWF0cml4KCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0dXJlTWF0cml4OyB9CisKKyAgICB2b2lkIHNldFByb3h5KFBh
c3NPd25QdHI8U3RyZWFtVGV4dHVyZVByb3h5Pik7CisgICAgYm9vbCBoYXNQcm94eSgpIHsgcmV0
dXJuIG1fcHJveHk7IH0KKworICAgIC8vIFN0cmVhbVRleHR1cmVQcm94eTo6U3RyZWFtVGV4dHVy
ZUxpc3RlbmVyCisgICAgdmlydHVhbCB2b2lkIG9uRnJhbWVBdmFpbGFibGUoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgb25NYXRyaXhDaGFuZ2VkKGNvbnN0IGZsb2F0Kik7CisKKyBwcml2YXRlOgorICAg
IHN0YXRpYyBjb25zdCBmbG9hdCBmbGlwVHJhbnNmb3JtWzE2XTsKKworICAgIENDVmlkZW9MYXll
ckltcGwqIG1fb3duZXI7CisgICAgZmxvYXQgbV90ZXh0dXJlTWF0cml4WzE2XTsKKyAgICBPd25Q
dHI8U3RyZWFtVGV4dHVyZVByb3h5PiBtX3Byb3h5OworfTsKKwogY2xhc3MgQ0NWaWRlb0xheWVy
SW1wbCA6IHB1YmxpYyBDQ0xheWVySW1wbAogICAgICAgICAgICAgICAgICAgICAgICAsIHB1Ymxp
YyBWaWRlb0ZyYW1lUHJvdmlkZXI6OkNsaWVudCB7CiBwdWJsaWM6CkBAIC01MSw2ICs3Nyw3IEBA
IHB1YmxpYzoKICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFRy
YW5zZm9ybSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4RmxpcEFscGhhPiBSR0JBUHJvZ3JhbTsKICAg
ICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2gsIEZy
YWdtZW50U2hhZGVyWVVWVmlkZW8+IFlVVlByb2dyYW07CiAgICAgdHlwZWRlZiBQcm9ncmFtQmlu
ZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0sIEZyYWdtZW50U2hhZGVyUkdCQVRleEZs
aXBBbHBoYT4gTmF0aXZlVGV4dHVyZVByb2dyYW07CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGlu
ZzxWZXJ0ZXhTaGFkZXJWaWRlb0FuZHJvaWQsIEZyYWdtZW50U2hhZGVyVmlkZW9BbmRyb2lkPiBT
dHJlYW1UZXh0dXJlUHJvZ3JhbTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3KExheWVyUmVuZGVy
ZXJDaHJvbWl1bSopOwogCkBAIC01OSw2ICs4Niw4IEBAIHB1YmxpYzoKICAgICAvLyBWaWRlb0Zy
YW1lUHJvdmlkZXI6OkNsaWVudCBpbXBsZW1lbnRhdGlvbiAoY2FsbGFibGUgb24gYW55IHRocmVh
ZCkuCiAgICAgdmlydHVhbCB2b2lkIHN0b3BVc2luZ1Byb3ZpZGVyKCk7CiAKKyAgICB2b2lkIHNl
dE5lZWRzUmVkcmF3KCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NWaWRlb0xheWVySW1w
bChpbnQsIFZpZGVvRnJhbWVQcm92aWRlciopOwogCkBAIC03MCw3ICs5OSw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkcmF3WVVWKExheWVyUmVuZGVyZXJDaHJvbWl1bSopIGNvbnN0OwogICAgIHZv
aWQgZHJhd1JHQkEoTGF5ZXJSZW5kZXJlckNocm9taXVtKikgY29uc3Q7CiAgICAgdm9pZCBkcmF3
TmF0aXZlVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qKSBjb25zdDsKLSAgICB0ZW1wbGF0
ZTxjbGFzcyBQcm9ncmFtPiB2b2lkIGRyYXdDb21tb24oTGF5ZXJSZW5kZXJlckNocm9taXVtKiwg
UHJvZ3JhbSosIGZsb2F0IHdpZHRoU2NhbGVGYWN0b3IsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVy
ZUlkKSBjb25zdDsKKyAgICB2b2lkIGRyYXdTdHJlYW1UZXh0dXJlKExheWVyUmVuZGVyZXJDaHJv
bWl1bSopOworICAgIHRlbXBsYXRlPGNsYXNzIFByb2dyYW0+IHZvaWQgZHJhd0NvbW1vbihMYXll
clJlbmRlcmVyQ2hyb21pdW0qLCBQcm9ncmFtKiwgZmxvYXQgd2lkdGhTY2FsZUZhY3RvciwgUGxh
dGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIEdDM0RlbnVtIHRhcmdldCkgY29uc3Q7CiAKICAgICBN
dXRleCBtX3Byb3ZpZGVyTXV0ZXg7IC8vIEd1YXJkcyBtX3Byb3ZpZGVyIGJlbG93LgogICAgIFZp
ZGVvRnJhbWVQcm92aWRlciogbV9wcm92aWRlcjsKQEAgLTg4LDYgKzExOCw5IEBAIHByaXZhdGU6
CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IG1fbmF0aXZlVGV4dHVyZUlkOwogICAgIEludFNpemUg
bV9uYXRpdmVUZXh0dXJlU2l6ZTsKKworICAgIENDU3RyZWFtVGV4dHVyZUxpc3RlbmVyIG1fc3Ry
ZWFtVGV4dHVyZUxpc3RlbmVyOworICAgIENDTGF5ZXJUcmVlSG9zdEltcGwqIG1fbGF5ZXJUcmVl
SG9zdEltcGw7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggMTJhYzFh
YjIyNzAyN2E3N2I3NDc3ZTA5YjE4OWI1NzdiMDMzNzY4Yi4uYzUwYzVhZTJhNzQzZDA5NTNiOGRi
Y2Y3ODgwZjdlMjA1NjAwZDRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMjU2
LDYgKzI1Niw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTdG9yYWdlTmFtZXNwYWNl
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RvcmFnZVF1b3RhQ2FsbGJhY2tzLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RvcmFnZVF1b3RhVHlwZS5oJywKKyAgICAg
ICAgICAgICAgICAncHVibGljL1dlYlN0cmVhbVRleHR1cmVQcm94eS5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYlRleHRBZmZpbml0eS5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJU
ZXh0Q2hlY2tpbmdDb21wbGV0aW9uLmgnLApAQCAtNDc1LDYgKzQ3Niw4IEBACiAgICAgICAgICAg
ICAgICAgJ3NyYy9TdG9yYWdlSW5mb0Nocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1N0b3Jh
Z2VOYW1lc3BhY2VQcm94eS5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1N0cmVhbVRleHR1cmVQ
cm94eUltcGwuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1N0cmVhbVRleHR1cmVQcm94eUlt
cGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmgnLAogICAg
ICAgICAgICAgICAgICdzcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuaCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaAppbmRleCA5YWFmMWEzZDA5NWRj
YjA5OGY4M2RjYjI0ODI0ZWEzNjY2MjY1YmEzLi5mNWU1Y2Y2MGI5MWU3YmJhNGY3NjFmYzViNzU2
YTRkMWY0NmNiZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJNZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1l
ZGlhUGxheWVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBX
ZWJBdWRpb1NvdXJjZVByb3ZpZGVyOwogY2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVu
dDsKIGNsYXNzIFdlYk1lZGlhUGxheWVyQ2xpZW50OworY2xhc3MgV2ViU3RyZWFtVGV4dHVyZVBy
b3h5OwogY2xhc3MgV2ViVVJMOwogc3RydWN0IFdlYlJlY3Q7CiBzdHJ1Y3QgV2ViU2l6ZTsKQEAg
LTE2Miw2ICsxNjMsOCBAQCBwdWJsaWM6CiAgICAgLy8gbWV0aG9kIHNob3VsZCBubyBsb25nZXIg
YmUgcmVmZXJlbmNlZCBhZnRlciB0aGUgY2FsbCBpcyBtYWRlLgogICAgIHZpcnR1YWwgdm9pZCBw
dXRDdXJyZW50RnJhbWUoV2ViVmlkZW9GcmFtZSopIHsgfQogCisgICAgdmlydHVhbCBXZWJTdHJl
YW1UZXh0dXJlUHJveHkqIGNyZWF0ZVN0cmVhbVRleHR1cmVQcm94eSgpIHsgcmV0dXJuIDA7IH0K
KwogICAgIHZpcnR1YWwgV2ViQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRl
cigpIHsgcmV0dXJuIDA7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VBcHBlbmQoY29uc3Qg
dW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBmYWxzZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3RyZWFtVGV4dHVy
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTdHJlYW1UZXh0dXJl
UHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44NWU0OWNjNjczOGZjMDkwNDBiZWUwNTk4ZDljM2M0MTUyYzEx
ZTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
U3RyZWFtVGV4dHVyZVByb3h5LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU3RyZWFtVGV4
dHVyZVByb3h5X2gKKyNkZWZpbmUgV2ViU3RyZWFtVGV4dHVyZVByb3h5X2gKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKKy8vIEEgd3JhcHBlciBjbGFzcyBvZiB0aGUgU3RyZWFtVGV4dHVyZVByb3h5
IGluIFdlYkNvcmUuCitjbGFzcyBXZWJTdHJlYW1UZXh0dXJlUHJveHkgeworcHVibGljOgorICAg
IHZpcnR1YWwgfldlYlN0cmVhbVRleHR1cmVQcm94eSgpIHsgfQorCisgICAgY2xhc3MgTGlzdGVu
ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+TGlzdGVuZXIoKSB7IH0KKyAgICAg
ICAgdmlydHVhbCB2b2lkIG9uRnJhbWVBdmFpbGFibGUoKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBvbk1hdHJpeENoYW5nZWQoY29uc3QgZmxvYXQgbXR4WzE2XSkgPSAwOworICAgIH07CisK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0TGlzdGVuZXIoTGlzdGVuZXIqKSA9IDA7CisKK3Byb3RlY3Rl
ZDoKKyAgICBXZWJTdHJlYW1UZXh0dXJlUHJveHkoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlZpZGVvRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZp
ZGVvRnJhbWUuaAppbmRleCA4ZTNiMmNkYmQyYmQxYjk2ZGVjN2Q3OTJiOGI4YzJhOWNmNjY1NGIx
Li42NGRhZTk4NzM3N2IzZmI0NjhiM2Q3YWM0YjNjZjRkYTk1NGJmMTQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0ZyYW1lLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZS5oCkBAIC01MSw2ICs1MSw3IEBA
IHB1YmxpYzoKICAgICAgICAgRm9ybWF0QVNDSUksCiAgICAgICAgIEZvcm1hdEk0MjAsCiAgICAg
ICAgIEZvcm1hdE5hdGl2ZVRleHR1cmUsCisgICAgICAgIEZvcm1hdEV4dGVybmFsVGV4dHVyZSwK
ICAgICB9OwogCiAgICAgdmlydHVhbCB+V2ViVmlkZW9GcmFtZSgpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RyZWFtVGV4dHVyZVByb3h5SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdHJlYW1UZXh0dXJlUHJveHlJbXBsLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNDRkYWUzYTkzZWQ4YWI1ZDVmNTQ0NTRiNDZhNTc1NWRjNmVlMjJjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RyZWFtVGV4dHVyZVByb3h5
SW1wbC5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
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
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
dHJlYW1UZXh0dXJlUHJveHlJbXBsLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gV2ViU3RyZWFtVGV4dHVyZVByb3h5OjpMaXN0ZW5l
ciAtPiBTdHJlYW1UZXh0dXJlUHJveHlJbXBsOjpMaXN0ZW5lcgorY2xhc3MgTGlzdGVuZXJQcm94
eSA6IHB1YmxpYyBXZWJTdHJlYW1UZXh0dXJlUHJveHk6Okxpc3RlbmVyIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBMaXN0ZW5lclByb3h5KFN0cmVhbVRleHR1cmVQcm94eUltcGw6Okxpc3RlbmVy
KiBsaXN0ZW5lcikKKyAgICAgICAgOiBtX2xpc3RlbmVyKGxpc3RlbmVyKSB7IH0KKyAgICB+TGlz
dGVuZXJQcm94eSgpIHsgfQorCisgICAgLy8gV2ViU3RyZWFtVGV4dHVyZVByb3h5OjpMaXN0ZW5l
ciBpbXBsZW1lbnRhdGlvbjoKKyAgICB2aXJ0dWFsIHZvaWQgb25GcmFtZUF2YWlsYWJsZSgpIAor
ICAgIHsKKyAgICAgICAgbV9saXN0ZW5lci0+b25GcmFtZUF2YWlsYWJsZSgpOworICAgIH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBvbk1hdHJpeENoYW5nZWQoY29uc3QgZmxvYXQgbWF0cml4WzE2XSkg
CisgICAgeworICAgICAgICBtX2xpc3RlbmVyLT5vbk1hdHJpeENoYW5nZWQobWF0cml4KTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgU3RyZWFtVGV4dHVyZVByb3h5SW1wbDo6TGlzdGVuZXIqIG1f
bGlzdGVuZXI7Cit9OworCitTdHJlYW1UZXh0dXJlUHJveHlJbXBsOjpTdHJlYW1UZXh0dXJlUHJv
eHlJbXBsKFdlYlN0cmVhbVRleHR1cmVQcm94eSogcHJveHkpCit7CisgICAgbV93ZWJTdHJlYW1U
ZXh0dXJlUHJveHkgPSBhZG9wdFB0cihwcm94eSk7Cit9CisKK3ZvaWQgU3RyZWFtVGV4dHVyZVBy
b3h5SW1wbDo6c2V0TGlzdGVuZXIoTGlzdGVuZXIqIGxpc3RlbmVyKSAKK3sKKyAgICBpZiAobGlz
dGVuZXIpIHsKKyAgICAgICAgbV9saXN0ZW5lciA9IGFkb3B0UHRyKG5ldyBMaXN0ZW5lclByb3h5
KGxpc3RlbmVyKSk7CisgICAgICAgIGlmIChtX3dlYlN0cmVhbVRleHR1cmVQcm94eSkKKyAgICAg
ICAgICAgIG1fd2ViU3RyZWFtVGV4dHVyZVByb3h5LT5zZXRMaXN0ZW5lcihtX2xpc3RlbmVyLmdl
dCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2xpc3RlbmVyLmNsZWFyKCk7CisgICAgICAg
IGlmIChtX3dlYlN0cmVhbVRleHR1cmVQcm94eSkKKyAgICAgICAgICAgIG1fd2ViU3RyZWFtVGV4
dHVyZVByb3h5LT5zZXRMaXN0ZW5lcigwKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RyZWFtVGV4dHVy
ZVByb3h5SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RyZWFtVGV4dHVyZVBy
b3h5SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhZjRhZjg2NmRhMjkzYjcxZTJjNDQ5OGFiYzBjZDllZDM0
OTdmYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdHJl
YW1UZXh0dXJlUHJveHlJbXBsLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3RyZWFtVGV4dHVy
ZVByb3h5SW1wbF9oCisjZGVmaW5lIFN0cmVhbVRleHR1cmVQcm94eUltcGxfaAorCisjaW5jbHVk
ZSAiU3RyZWFtVGV4dHVyZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViU3RyZWFtVGV4dHVyZVByb3h5
LmgiCisKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisv
LyBBIHdlYmtpdCB3cmFwcGVyIG9mIHRoZSBTdHJlYW1UZXh0dXJlUHJveHkgaW4gV2ViQ29yZS4K
K2NsYXNzIFN0cmVhbVRleHR1cmVQcm94eUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RyZWFtVGV4
dHVyZVByb3h5IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTdHJlYW1UZXh0dXJlUHJveHlJbXBs
KFdlYlN0cmVhbVRleHR1cmVQcm94eSopOworICAgIHZpcnR1YWwgflN0cmVhbVRleHR1cmVQcm94
eUltcGwoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRMaXN0ZW5lcihMaXN0ZW5lciopOwor
Citwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpTdHJlYW1UZXh0dXJlUHJveHk7
CisgICAgT3duUHRyPFdlYlN0cmVhbVRleHR1cmVQcm94eT4gbV93ZWJTdHJlYW1UZXh0dXJlUHJv
eHk7CisgICAgT3duUHRyPFdlYlN0cmVhbVRleHR1cmVQcm94eTo6TGlzdGVuZXI+IG1fbGlzdGVu
ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcApp
bmRleCA5OTZlNzA3MTAwYWE5MWI5NjY1MzVkYzA4YzkzYzE5NTUwM2YzOTU5Li5iYjBmMDg2MTBi
YTEyYzRhZWYyMDBkZmJjNWQ0YzIyYjA3MDc5NzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKQEAgLTE3LDYg
KzE3LDcgQEAKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlN0cmVhbVRleHR1cmVQ
cm94eUltcGwuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiVmlkZW9GcmFt
ZUNocm9taXVtLmgiCiAjaW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtSW1wbC5oIgpAQCAtNjIz
LDYgKzYyNCwxNiBAQCB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cHV0Q3VycmVudEZy
YW1lKFZpZGVvRnJhbWVDaHJvbWl1bSogdmlkZW9GcmFtZSkKICAgICB9CiAgICAgbV9jdXJyZW50
VmlkZW9GcmFtZS5jbGVhcigpOwogfQorCitQYXNzT3duUHRyPFdlYkNvcmU6OlN0cmVhbVRleHR1
cmVQcm94eT4gV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpjcmVhdGVTdHJlYW1UZXh0dXJlUHJv
eHkoKQoreworICAgIEFTU0VSVChtX3dlYk1lZGlhUGxheWVyKTsKKyAgICBXZWJTdHJlYW1UZXh0
dXJlUHJveHkqIHByb3h5ID0gbV93ZWJNZWRpYVBsYXllci0+Y3JlYXRlU3RyZWFtVGV4dHVyZVBy
b3h5KCk7CisgICAgaWYgKCFwcm94eSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IFN0cmVhbVRleHR1cmVQcm94eUltcGwocHJveHkpKTsKK30KICNl
bmRpZgogCiBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsOjpjcmVhdGUoTWVkaWFQbGF5ZXIqIHBsYXllcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKaW5k
ZXggZTc1ZTczYWUxMzU1YzZlYTQ3NzFkMDQ3YWY4NTY4OGQ1NTc0ZTc4YS4uNDc3NDA0MGM5Njgw
YzgxM2VlYjIzOWY0YmM1YTVhYWMyZWMxZTY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKQEAgLTQxLDggKzQxLDEy
IEBACiAjaW5jbHVkZSAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudC5oIgogI2luY2x1ZGUg
IldlYk1lZGlhUGxheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgQXVkaW9T
b3VyY2VQcm92aWRlckNsaWVudDsgfQorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQXVkaW9T
b3VyY2VQcm92aWRlckNsaWVudDsKK2NsYXNzIFN0cmVhbVRleHR1cmVQcm94eTsKK30KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKQEAgLTE0Myw2ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldFZpZGVvRnJhbWVQcm92aWRlckNsaWVudChWaWRlb0ZyYW1lUHJvdmlkZXI6OkNs
aWVudCopOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6VmlkZW9GcmFtZUNocm9taXVtKiBnZXRDdXJy
ZW50RnJhbWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgcHV0Q3VycmVudEZyYW1lKFdlYkNvcmU6OlZp
ZGVvRnJhbWVDaHJvbWl1bSopOworICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpTdHJl
YW1UZXh0dXJlUHJveHk+IGNyZWF0ZVN0cmVhbVRleHR1cmVQcm94eSgpOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126860</attachid>
            <date>2012-02-13 16:30:09 -0800</date>
            <delta_ts>2012-02-21 17:07:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78398-20120213163008.patch</filename>
            <type>text/plain</type>
            <size>39447</size>
            <attacher name="Daniel Sievers">sievers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRkNDU0NDU0MzlkODA0
MWQ5ZDJmNzRiMjQ2NTMzZjAxNjY1YzYyNi4uNzQ0ZjQwMWU2YmRiNDE3MGRiNzMxM2NjMWEwMmU0
NDViNmNkYWM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTAyLTEzICBEYW5p
ZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
QWRkIHZpZGVvIHN0cmVhbSB0ZXh0dXJlIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4Mzk4CisKKyAgICAgICAgVGhpcyB1cHN0cmVhbXMg
dGhlIGFic3RyYWN0aW9uIHVzZWQgb24gQW5kcm9pZCBmb3IKKyAgICAgICAgaGFyZHdhcmUgdmlk
ZW8gZGVjb2Rpbmcgd2l0aCB0aGUgY29tcG9zaXRvci4KKworICAgICAgICBNb3N0IG9mIHRoZSBp
bnRlcmZhY2VzIGFyZSBrZXB0IGdlbmVyaWMgYW5kIHRoZSBjb3JlCisgICAgICAgIG9mIHRoaXMg
Y2hhbmdlIGlzIHRvIGFsbG93IHRleHR1cmluZyBmcm9tIGFuIGV4dGVybmFsCisgICAgICAgIHRl
eHR1cmUgd2hpbGUgcmVjZWl2aW5nIG5vdGlmaWNhdGlvbnMgKG9uIHRoZSBjb21wb3NpdG9yCisg
ICAgICAgIHRocmVhZCBpZiB3ZSBhcmUgcnVubmluZyBpdCkgd2hlbiB0aGVyZSBhcmUgbmV3IGZy
YW1lcyB0bworICAgICAgICBiZSBkaXNwbGF5ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzdHJlYW1UZXh0dXJlTGF5ZXJQ
cm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51
cFNoYXJlZE9iamVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6VmVydGV4U2hh
ZGVyVmlkZW9UcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpW
ZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbDo6aW5pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFnbWVudFNoYWRlck9FU0ltYWdlRXh0ZXJuYWw6OmdldFNoYWRlclN0cmluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaDoK
KyAgICAgICAgKFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6
OlZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtOjptYXRyaXhMb2NhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6dGV4VHJhbnNmb3JtTG9jYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OnRleE1hdHJp
eExvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRnJhZ21lbnRTaGFkZXJP
RVNJbWFnZUV4dGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
dHJlYW1UZXh0dXJlQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChTdHJlYW1UZXh0dXJlUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6U3RyZWFtVGV4dHVyZVBy
b3h5Ojp+U3RyZWFtVGV4dHVyZVByb3h5KToKKyAgICAgICAgKFN0cmVhbVRleHR1cmVDbGllbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVDaHJvbWl1
bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVQcm92
aWRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWaWRlb0ZyYW1lUHJvdmlkZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllcklt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5
ZXJJbXBsOjpDQ1ZpZGVvTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRWRkNG
b3JtYXRUb0dDM0RGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6
ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpjb3B5RnJhbWVUb1Rl
eHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmRyYXdDb21tb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6ZHJhd1JHQkEpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6ZHJhd05hdGl2ZVRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6ZHJhd1N0cmVhbVRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6ZGlkUmVjZWl2ZUZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmRpZFVwZGF0ZU1hdHJpeCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpzZXROZWVkc1JlZHJhdyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChDQ1ZpZGVvTGF5ZXJJbXBsKToKKwogMjAxMi0wMi0wOSAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjEwNzI2MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
MDRiNWFhZDRhZjEyMjdiN2FjODk0MDY4ZmU3YmZhYTIwMzAzODY0Ni4uMDhjYjliZTZiNDk4NWFh
NDAwOGVkNGIwMjBmMTc0NWI4NGM2YjlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1MCBAQAorMjAxMi0wMi0xMyAgRGFuaWVsIFNpZXZlcnMgIDxzaWV2ZXJzQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEFkZCB2aWRlbyBzdHJlYW0gdGV4dHVyZSBz
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
ODM5OAorCisgICAgICAgIFRoaXMgdXBzdHJlYW1zIHRoZSBhYnN0cmFjdGlvbiB1c2VkIG9uIEFu
ZHJvaWQgZm9yCisgICAgICAgIGhhcmR3YXJlIHZpZGVvIGRlY29kaW5nIHdpdGggdGhlIGNvbXBv
c2l0b3IuCisKKyAgICAgICAgTW9zdCBvZiB0aGUgaW50ZXJmYWNlcyBhcmUga2VwdCBnZW5lcmlj
IGFuZCB0aGUgY29yZQorICAgICAgICBvZiB0aGlzIGNoYW5nZSBpcyB0byBhbGxvdyB0ZXh0dXJp
bmcgZnJvbSBhbiBleHRlcm5hbAorICAgICAgICB0ZXh0dXJlIHdoaWxlIHJlY2VpdmluZyBub3Rp
ZmljYXRpb25zIChvbiB0aGUgY29tcG9zaXRvcgorICAgICAgICB0aHJlYWQgaWYgd2UgYXJlIHJ1
bm5pbmcgaXQpIHdoZW4gdGhlcmUgYXJlIG5ldyBmcmFtZXMgdG8KKyAgICAgICAgYmUgZGlzcGxh
eWVkLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyOjpjcmVhdGVTdHJlYW1U
ZXh0dXJlUHJveHkpOgorICAgICAgICAoV2ViTWVkaWFQbGF5ZXIpOgorICAgICAgICAqIHB1Ymxp
Yy9XZWJTdHJlYW1UZXh0dXJlQ2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlZpZGVvRnJhbWUuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJTdHJlYW1UZXh0dXJlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdHJlYW1UZXh0
dXJlUHJveHk6On5XZWJTdHJlYW1UZXh0dXJlUHJveHkpOgorICAgICAgICAoV2ViU3RyZWFtVGV4
dHVyZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0cmVhbVRleHR1cmVDbGllbnQ6On5X
ZWJTdHJlYW1UZXh0dXJlQ2xpZW50KToKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlkZW9GcmFtZS5o
OgorICAgICAgICAqIHNyYy9TdHJlYW1UZXh0dXJlUHJveHlJbXBsLmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZS5oLgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6U3RyZWFtVGV4dHVyZVByb3h5SW1wbDo6U3RyZWFt
VGV4dHVyZVByb3h5SW1wbCk6CisgICAgICAgICogc3JjL1N0cmVhbVRleHR1cmVQcm94eUltcGwu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFt
ZS5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFN0cmVhbVRleHR1cmVQcm94eUltcGwp
OgorICAgICAgICAoV2ViS2l0OjpTdHJlYW1UZXh0dXJlUHJveHlJbXBsOjp+U3RyZWFtVGV4dHVy
ZVByb3h5SW1wbCk6CisgICAgICAgIChTdHJlYW1UZXh0dXJlQ2xpZW50SW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OlN0cmVhbVRleHR1cmVQcm94eUltcGw6OlN0cmVhbVRleHR1cmVDbGllbnRJbXBs
OjpTdHJlYW1UZXh0dXJlQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlN0cmVhbVRleHR1
cmVQcm94eUltcGw6OlN0cmVhbVRleHR1cmVDbGllbnRJbXBsOjp+U3RyZWFtVGV4dHVyZUNsaWVu
dEltcGwpOgorICAgICAgICAoV2ViS2l0OjpTdHJlYW1UZXh0dXJlUHJveHlJbXBsOjpTdHJlYW1U
ZXh0dXJlQ2xpZW50SW1wbDo6ZGlkUmVjZWl2ZUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6U3Ry
ZWFtVGV4dHVyZVByb3h5SW1wbDo6U3RyZWFtVGV4dHVyZUNsaWVudEltcGw6OmRpZFVwZGF0ZU1h
dHJpeCk6CisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6
OmNyZWF0ZVN0cmVhbVRleHR1cmVQcm94eSk6CisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJNZWRpYVBsYXll
ckNsaWVudEltcGwpOgorCiAyMDEyLTAyLTA5ICBKb25hdGhhbiBCYWNrZXIgIDxiYWNrZXJAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIHNldE5lZWRzUmVkcmF3IHRvIFdl
YldpZGdldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDkwY2Q4ZTE0OGU2NjlhZWZjM2EyNWUxODhjZWU0
NmJkYWU4ZjY1ZjEuLmZmY2E1NDIyMDU2YzJiNTg2MDM0YWRjYmQ0YzUyMjE2NWI0ZDVjMjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKQEAgLTMxOTgsNiArMzE5OCw3IEBACiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vU2ltcGxlRm9udERhdGFDaHJvbWl1bVdpbi5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgnLAorICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1N0cmVhbVRleHR1cmVDbGllbnQuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2Nh
dG9yLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tp
bmdUZXh0dXJlQWxsb2NhdG9yLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0u
aAppbmRleCBlMTY0NjA5YWU5NDdiMTZmZTEwNjJhNGZkZDQ5NmQyYTZlNGU3ZmEzLi4zODMyOTZi
Y2MxMGEwODZiOGM2OWFiZGViMzcyOWViODc5MjI1YmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMz
RENocm9taXVtLmgKQEAgLTYzLDYgKzYzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5n
IGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybTNET2JqZWN0KTsKIAogICAg
IGVudW0geworICAgICAgICAvLyBHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsCisgICAgICAgIEdM
X1RFWFRVUkVfRVhURVJOQUxfT0VTID0gMHg4RDY1LAorCiAgICAgICAgIC8vIEdMX0NIUk9NSVVN
X21hcF9zdWIgKGVudW1zIGluaGVyaXRlZCBmcm9tIEdMX0FSQl92ZXJ0ZXhfYnVmZmVyX29iamVj
dCkKICAgICAgICAgUkVBRF9PTkxZID0gMHg4OEI4LAogICAgICAgICBXUklURV9PTkxZID0gMHg4
OEI5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggMWU1ZWU1NjNm
Zjc0OTczMjlmZmY1MWQ1MDNkNzQ3ZjU4NTMwMDhkMC4uNjQ2MTc3MjE1ZmE1NDFiYjg5MTAwNTQz
ZDk3Mzk5ZTE2OTAxZmE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
CkBAIC0xMjU1LDYgKzEyNTUsMTYgQEAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6TmF0aXZlVGV4
dHVyZVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9MYXllck4KICAgICByZXR1
cm4gbV92aWRlb0xheWVyTmF0aXZlVGV4dHVyZVByb2dyYW0uZ2V0KCk7CiB9CiAKK2NvbnN0IEND
VmlkZW9MYXllckltcGw6OlN0cmVhbVRleHR1cmVQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnN0cmVhbVRleHR1cmVMYXllclByb2dyYW0oKQoreworICAgIGlmICghbV9zdHJlYW1UZXh0
dXJlTGF5ZXJQcm9ncmFtKQorICAgICAgICBtX3N0cmVhbVRleHR1cmVMYXllclByb2dyYW0gPSBh
ZG9wdFB0cihuZXcgQ0NWaWRlb0xheWVySW1wbDo6U3RyZWFtVGV4dHVyZVByb2dyYW0obV9jb250
ZXh0LmdldCgpKSk7CisgICAgaWYgKCFtX3N0cmVhbVRleHR1cmVMYXllclByb2dyYW0tPmluaXRp
YWxpemVkKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
c3RyZWFtVGV4dHVyZUxheWVyUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAg
ICBtX3N0cmVhbVRleHR1cmVMYXllclByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgp
KTsKKyAgICB9CisgICAgcmV0dXJuIG1fc3RyZWFtVGV4dHVyZUxheWVyUHJvZ3JhbS5nZXQoKTsK
K30KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKCkK
IHsKQEAgLTEyOTYsNiArMTMwNiw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVh
bnVwU2hhcmVkT2JqZWN0cygpCiAgICAgICAgIG1fdmlkZW9MYXllclJHQkFQcm9ncmFtLT5jbGVh
bnVwKG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1fdmlkZW9MYXllcllVVlByb2dyYW0pCiAg
ICAgICAgIG1fdmlkZW9MYXllcllVVlByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsK
KyAgICBpZiAobV9zdHJlYW1UZXh0dXJlTGF5ZXJQcm9ncmFtKQorICAgICAgICBtX3N0cmVhbVRl
eHR1cmVMYXllclByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKIAogICAgIG1fYm9y
ZGVyUHJvZ3JhbS5jbGVhcigpOwogICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLmNsZWFyKCk7
CkBAIC0xMzE0LDYgKzEzMjYsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51
cFNoYXJlZE9iamVjdHMoKQogICAgIG1fcmVuZGVyU3VyZmFjZVByb2dyYW1BQS5jbGVhcigpOwog
ICAgIG1fdmlkZW9MYXllclJHQkFQcm9ncmFtLmNsZWFyKCk7CiAgICAgbV92aWRlb0xheWVyWVVW
UHJvZ3JhbS5jbGVhcigpOworICAgIG1fc3RyZWFtVGV4dHVyZUxheWVyUHJvZ3JhbS5jbGVhcigp
OwogICAgIGlmIChtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpCiAgICAgICAgIEdMQyhtX2NvbnRl
eHQuZ2V0KCksIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9vZmZzY3JlZW5GcmFtZWJ1
ZmZlcklkKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggYmVhNGJh
YTQxMGRkYzAwMDI1YjBhMGRjZGY0MWEyMjNkOGZhODIwZS4uNzQzMzYyNmZhMzJlMjhlOGZkODM5
M2U0OTMyZGM0OTQ5NWViNjkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgK
QEAgLTEzMCw2ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6
UkdCQVByb2dyYW0qIHZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSgpOwogICAgIGNvbnN0IENDVmlkZW9M
YXllckltcGw6OllVVlByb2dyYW0qIHZpZGVvTGF5ZXJZVVZQcm9ncmFtKCk7CiAgICAgY29uc3Qg
Q0NWaWRlb0xheWVySW1wbDo6TmF0aXZlVGV4dHVyZVByb2dyYW0qIHZpZGVvTGF5ZXJOYXRpdmVU
ZXh0dXJlUHJvZ3JhbSgpOworICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OlN0cmVhbVRleHR1
cmVQcm9ncmFtKiBzdHJlYW1UZXh0dXJlTGF5ZXJQcm9ncmFtKCk7CiAKICAgICB2b2lkIGdldEZy
YW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYpOwogCkBAIC0yMjYs
NiArMjI3LDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8Q0NWaWRlb0xheWVySW1wbDo6UkdCQVBy
b2dyYW0+IG1fdmlkZW9MYXllclJHQkFQcm9ncmFtOwogICAgIE93blB0cjxDQ1ZpZGVvTGF5ZXJJ
bXBsOjpZVVZQcm9ncmFtPiBtX3ZpZGVvTGF5ZXJZVVZQcm9ncmFtOwogICAgIE93blB0cjxDQ1Zp
ZGVvTGF5ZXJJbXBsOjpOYXRpdmVUZXh0dXJlUHJvZ3JhbT4gbV92aWRlb0xheWVyTmF0aXZlVGV4
dHVyZVByb2dyYW07CisgICAgT3duUHRyPENDVmlkZW9MYXllckltcGw6OlN0cmVhbVRleHR1cmVQ
cm9ncmFtPiBtX3N0cmVhbVRleHR1cmVMYXllclByb2dyYW07CiAKICAgICBPd25QdHI8VGV4dHVy
ZU1hbmFnZXI+IG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyOwogICAgIE93blB0cjxUcmFj
a2luZ1RleHR1cmVBbGxvY2F0b3I+IG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hh
ZGVyQ2hyb21pdW0uY3BwCmluZGV4IGY2OWI2YjE4YWE3OWJlOTc1ODhhYWFiYWQ4OTMzNGNkMzIy
MmY2NjQuLjcxZDRkMWZkMThkOTg2MjFkMmNjNGI0OWFmOWRhZWNkNjE1ZWM3ODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
aGFkZXJDaHJvbWl1bS5jcHAKQEAgLTI1NSw2ICsyNTUsMzkgQEAgU3RyaW5nIFZlcnRleFNoYWRl
clRpbGU6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CiAgICAgKTsKIH0KIAorVmVydGV4U2hhZGVy
VmlkZW9UcmFuc2Zvcm06OlZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtKCkKKyAgICA6IG1fbWF0
cml4TG9jYXRpb24oLTEpCisgICAgLCBtX3RleFRyYW5zZm9ybUxvY2F0aW9uKC0xKQorICAgICwg
bV90ZXhNYXRyaXhMb2NhdGlvbigtMSkKK3sKK30KKworYm9vbCBWZXJ0ZXhTaGFkZXJWaWRlb1Ry
YW5zZm9ybTo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3Jh
bSkKK3sKKyAgICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0sICJtYXRyaXgiKTsKKyAgICBtX3RleFRyYW5zZm9ybUxvY2F0aW9uID0gY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhUcmFuc2Zvcm0iKTsKKyAgICBtX3Rl
eE1hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0
ZXhNYXRyaXgiKTsKKyAgICByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbiAhPSAtMSAmJiBtX3RleFRy
YW5zZm9ybUxvY2F0aW9uICE9IC0xICYmIG1fdGV4TWF0cml4TG9jYXRpb24gIT0gLTE7Cit9CisK
K1N0cmluZyBWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gU0hBREVSKAorICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0
aW9uOworICAgICAgICBhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOworICAgICAgICB1bmlmb3Jt
IG1hdDQgbWF0cml4OworICAgICAgICB1bmlmb3JtIHZlYzQgdGV4VHJhbnNmb3JtOworICAgICAg
ICB1bmlmb3JtIG1hdDQgdGV4TWF0cml4OworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29y
ZDsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfUG9zaXRp
b24gPSBtYXRyaXggKiBhX3Bvc2l0aW9uOworICAgICAgICAgICAgdmVjMiB0ZXhDb29yZCA9IHZl
YzIodGV4TWF0cml4ICogdmVjNChhX3RleENvb3JkLngsIDEuMCAtIGFfdGV4Q29vcmQueSwgMC4w
LCAxLjApKTsKKyAgICAgICAgICAgIHZfdGV4Q29vcmQgPSB0ZXhDb29yZCAqIHRleFRyYW5zZm9y
bS56dyArIHRleFRyYW5zZm9ybS54eTsKKyAgICAgICAgfQorICAgICk7Cit9CisKIEZyYWdtZW50
VGV4QWxwaGFCaW5kaW5nOjpGcmFnbWVudFRleEFscGhhQmluZGluZygpCiAgICAgOiBtX3NhbXBs
ZXJMb2NhdGlvbigtMSkKICAgICAsIG1fYWxwaGFMb2NhdGlvbigtMSkKQEAgLTI5Niw2ICszMjks
MjcgQEAgU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYTo6Z2V0U2hhZGVyU3Ry
aW5nKCkgY29uc3QKICAgICApOwogfQogCitib29sIEZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRl
cm5hbDo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkK
K3sKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAic190ZXh0dXJlIik7CisKKyAgICByZXR1cm4gbV9zYW1wbGVyTG9jYXRpb24gIT0g
LTE7Cit9CisKK1N0cmluZyBGcmFnbWVudFNoYWRlck9FU0ltYWdlRXh0ZXJuYWw6OmdldFNoYWRl
clN0cmluZygpIGNvbnN0Cit7CisgICAgLy8gQ2Fubm90IHVzZSB0aGUgU0hBREVSKCkgbWFjcm8g
YmVjYXVzZSBvZiB0aGUgJyMnIGNoYXIKKyAgICByZXR1cm4gIiNleHRlbnNpb24gR0xfT0VTX0VH
TF9pbWFnZV9leHRlcm5hbCA6IHJlcXVpcmUgXG4iCisgICAgICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKKyAgICAgICAgICAgInZhcnlpbmcgdmVjMiB2X3RleENvb3JkO1xuIgor
ICAgICAgICAgICAidW5pZm9ybSBzYW1wbGVyRXh0ZXJuYWxPRVMgc190ZXh0dXJlO1xuIgorICAg
ICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgIiAg
ICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdl90ZXhDb29yZCk7XG4iCisg
ICAgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhDb2xvci54LCB0ZXhDb2xvci55
LCB0ZXhDb2xvci56LCB0ZXhDb2xvci53KTtcbiIKKyAgICAgICAgICAgIn1cbiI7Cit9CisKIFN0
cmluZyBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QK
IHsKICAgICByZXR1cm4gU0hBREVSKApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKaW5kZXggMzQzMjNlNmQz
Mzk5NzdlZTNmNTVkMjkwNTlhODNmZWEwZWZlYzVkYS4uMzBjODljNjcyZWM3NDc2NTEzZmQ2YmY0
ZWQ2NjZlMjgwYWZkNGU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCkBAIC0xNDUsNiArMTQ1LDIz
IEBAIHByaXZhdGU6CiAgICAgaW50IG1fdmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb247CiB9Owog
CitjbGFzcyBWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybSB7CitwdWJsaWM6CisgICAgVmVydGV4
U2hhZGVyVmlkZW9UcmFuc2Zvcm0oKTsKKworICAgIGJvb2wgaW5pdChHcmFwaGljc0NvbnRleHQz
RCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25z
dDsKKworICAgIGludCBtYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9j
YXRpb247IH0KKyAgICBpbnQgdGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3RleFRyYW5zZm9ybUxvY2F0aW9uOyB9CisgICAgaW50IHRleE1hdHJpeExvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV90ZXhNYXRyaXhMb2NhdGlvbjsgfQorCitwcml2YXRlOgorICAgIGludCBt
X21hdHJpeExvY2F0aW9uOworICAgIGludCBtX3RleFRyYW5zZm9ybUxvY2F0aW9uOworICAgIGlu
dCBtX3RleE1hdHJpeExvY2F0aW9uOworfTsKKwogY2xhc3MgRnJhZ21lbnRUZXhBbHBoYUJpbmRp
bmcgewogcHVibGljOgogICAgIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nKCk7CkBAIC0yMTEsNiAr
MjI4LDE1IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiB9
OwogCisvLyBGcmFnbWVudCBzaGFkZXIgZm9yIGV4dGVybmFsIHRleHR1cmVzLiAKK2NsYXNzIEZy
YWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbCA6IHB1YmxpYyBGcmFnbWVudFRleEFscGhhQmlu
ZGluZyB7CitwdWJsaWM6CisgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OworICAg
IGJvb2wgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworcHJpdmF0
ZToKKyAgICBpbnQgbV9zYW1wbGVyTG9jYXRpb247Cit9OworCiBjbGFzcyBGcmFnbWVudFNoYWRl
clJHQkFUZXhBbHBoYUFBIHsKIHB1YmxpYzoKICAgICBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBo
YUFBKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9TdHJlYW1UZXh0dXJlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9TdHJlYW1UZXh0dXJlQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM5MmIwNmZi
MjNkNmY1MDY2MTExOTZiMWM1ODQ0MjM0NDM5OGY3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1N0cmVhbVRleHR1cmVDbGllbnQu
aApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTdHJlYW1UZXh0dXJl
Q2xpZW50X2gKKyNkZWZpbmUgU3RyZWFtVGV4dHVyZUNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworLy8gQSBwcm94eSBvYmplY3QgaGVsZCBieSBTdHJlYW1UZXh0dXJlQ2xpZW50cyB0
aGF0IGFsbG93cyBmb3IgbWFuYWdpbmcgaW50ZXJuYWwKKy8vIHN0YXRlIGFuZCB0aGUgbGlmZXRp
bWUgb2Ygbm90aWZpY2F0aW9ucy4KK2NsYXNzIFN0cmVhbVRleHR1cmVQcm94eSB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+U3RyZWFtVGV4dHVyZVByb3h5KCkgeyB9Cit9OworCitjbGFzcyBTdHJl
YW1UZXh0dXJlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZy
YW1lKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVNYXRyaXgoY29uc3QgZmxvYXQq
KSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZUNo
cm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRl
b0ZyYW1lQ2hyb21pdW0uaAppbmRleCBjNGFiZDk2OWQxZWQxMWQ3ODQzN2Q1MDljMzRkYWQ5NWVk
OTM0MmIyLi4xM2EyM2I0NDdjMTg5NWY1ZjVhMTNhODNlOGViMjg3ZjhkYWEzZDM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1l
Q2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9WaWRlb0ZyYW1lQ2hyb21pdW0uaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAg
IEFTQ0lJLAogICAgICAgICBJNDIwLAogICAgICAgICBOYXRpdmVUZXh0dXJlLAorICAgICAgICBF
eHRlcm5hbFRleHR1cmUsCiAgICAgfTsKIAogICAgIHZpcnR1YWwgflZpZGVvRnJhbWVDaHJvbWl1
bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVmlkZW9GcmFtZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9WaWRlb0ZyYW1lUHJvdmlkZXIuaAppbmRleCAzZDQzYTkwYzM3YTYzN2FjZTdj
YzczMjE3NjNkZTRhMzk3OTk0MWRkLi41NGNhYTczMTkzNDhmODdmMGI1MTg3NWQ5YzQyMTYwYzAx
ZWM2NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9WaWRlb0ZyYW1lUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lUHJvdmlkZXIuaApAQCAtMzIsOSArMzIsMTMgQEAK
ICNkZWZpbmUgVmlkZW9GcmFtZVByb3ZpZGVyX2gKIAogI2luY2x1ZGUgIlZpZGVvRnJhbWVDaHJv
bWl1bS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgU3RyZWFtVGV4dHVyZUNsaWVudDsKK2NsYXNzIFN0cmVhbVRleHR1cmVQcm94
eTsKKwogY2xhc3MgVmlkZW9GcmFtZVByb3ZpZGVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5W
aWRlb0ZyYW1lUHJvdmlkZXIoKSB7IH0KQEAgLTU4LDYgKzYyLDggQEAgcHVibGljOgogICAgIC8v
IGFsd2F5cyBiZSBjYWxsZWQgYWZ0ZXIgZ2V0Q3VycmVudEZyYW1lKCkuIEZyYW1lcyBwYXNzZWQg
aW50byB0aGlzIG1ldGhvZAogICAgIC8vIHNob3VsZCBubyBsb25nZXIgYmUgcmVmZXJlbmNlZCBh
ZnRlciB0aGUgY2FsbCBpcyBtYWRlLgogICAgIHZpcnR1YWwgdm9pZCBwdXRDdXJyZW50RnJhbWUo
VmlkZW9GcmFtZUNocm9taXVtKikgPSAwOworCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFN0cmVh
bVRleHR1cmVQcm94eT4gY3JlYXRlU3RyZWFtVGV4dHVyZVByb3h5KFN0cmVhbVRleHR1cmVDbGll
bnQqKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlk
ZW9MYXllckltcGwuY3BwCmluZGV4IGVlZjBjYTNlOTQyNWI0NmVhM2FhNTFjODdhYTI0ODlmYjNl
MzQzNjQuLjdlMGNjMzZiMTgxNTQ2MDZhN2IzM2M2ZDA5MTAxYzA3YzM2MjI0OTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9M
YXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCkBAIC02MiwxMCArNjIsMjAgQEAgY29uc3QgZmxv
YXQgQ0NWaWRlb0xheWVySW1wbDo6eXV2QWRqdXN0WzNdID0gewogICAgIC0wLjVmLAogfTsKIAor
Ly8gVGhpcyBtYXRyaXggaXMgdGhlIGRlZmF1bHQgdHJhbnNmb3JtYXRpb24gZm9yIHN0cmVhbSB0
ZXh0dXJlcy4KK2NvbnN0IGZsb2F0IENDVmlkZW9MYXllckltcGw6OmZsaXBUcmFuc2Zvcm1bMTZd
ID0geworICAgIDEsIDAsIDAsIDAsCisgICAgMCwgLTEsIDAsIDAsCisgICAgMCwgMCwgMSwgMCwK
KyAgICAwLCAxLCAwLCAxLAorfTsKKwogQ0NWaWRlb0xheWVySW1wbDo6Q0NWaWRlb0xheWVySW1w
bChpbnQgaWQsIFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCiAgICAgOiBDQ0xheWVySW1w
bChpZCkKICAgICAsIG1fcHJvdmlkZXIocHJvdmlkZXIpCisgICAgLCBtX2xheWVyVHJlZUhvc3RJ
bXBsKDApCiB7CisgICAgbWVtY3B5KG1fc3RyZWFtVGV4dHVyZU1hdHJpeCwgZmxpcFRyYW5zZm9y
bSwgc2l6ZW9mKG1fc3RyZWFtVGV4dHVyZU1hdHJpeCkpOwogICAgIHByb3ZpZGVyLT5zZXRWaWRl
b0ZyYW1lUHJvdmlkZXJDbGllbnQodGhpcyk7CiB9CiAKQEAgLTk4LDYgKzEwOCw4IEBAIHN0YXRp
YyBHQzNEZW51bSBjb252ZXJ0VkZDRm9ybWF0VG9HQzNERm9ybWF0KFZpZGVvRnJhbWVDaHJvbWl1
bTo6Rm9ybWF0IGZvcm1hdCkKICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JB
OwogICAgIGNhc2UgVmlkZW9GcmFtZUNocm9taXVtOjpOYXRpdmVUZXh0dXJlOgogICAgICAgICBy
ZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQ7CisgICAgY2FzZSBWaWRlb0ZyYW1l
Q2hyb21pdW06OkV4dGVybmFsVGV4dHVyZToKKyAgICAgICAgcmV0dXJuIEV4dGVuc2lvbnMzRENo
cm9taXVtOjpHTF9URVhUVVJFX0VYVEVSTkFMX09FUzsKICAgICBjYXNlIFZpZGVvRnJhbWVDaHJv
bWl1bTo6SW52YWxpZDoKICAgICBjYXNlIFZpZGVvRnJhbWVDaHJvbWl1bTo6UkdCNTU1OgogICAg
IGNhc2UgVmlkZW9GcmFtZUNocm9taXVtOjpSR0I1NjU6CkBAIC0xNDYsNiArMTU4LDkgQEAgdm9p
ZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5k
ZXJlcikKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJEOgogICAgICAgICBk
cmF3TmF0aXZlVGV4dHVyZShsYXllclJlbmRlcmVyKTsKICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBFeHRlbnNpb25zM0RDaHJvbWl1bTo6R0xfVEVYVFVSRV9FWFRFUk5BTF9PRVM6CisgICAgICAg
IGRyYXdTdHJlYW1UZXh0dXJlKGxheWVyUmVuZGVyZXIpOworICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICBDUkFTSCgpOyAvLyBTb21lb25lIHVwZGF0ZWQgY29udmVydFZGQ0Zv
cm1hdFRvR0MzREZvcm1hdCBhYm92ZSBidXQgdXBkYXRlIHRoaXMhCiAgICAgfQpAQCAtMTYzLDYg
KzE3OCwxNyBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZExpc3Qm
IHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZQogCiBib29sIENDVmlkZW9MYXllcklt
cGw6OmNvcHlGcmFtZVRvVGV4dHVyZXMoY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiBmcmFtZSwg
R0MzRGVudW0gZm9ybWF0LCBMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiB7
CisgICAgaWYgKGZyYW1lLT5mb3JtYXQoKSA9PSBWaWRlb0ZyYW1lQ2hyb21pdW06OkV4dGVybmFs
VGV4dHVyZSkgeworICAgICAgICBtX25hdGl2ZVRleHR1cmVJZCA9IGZyYW1lLT50ZXh0dXJlSWQo
KTsKKyAgICAgICAgaWYgKCFtX25hdGl2ZVRleHR1cmVJZCkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICBtX25hdGl2ZVRleHR1cmVTaXplID0gSW50U2l6ZShmcmFtZS0+d2lk
dGgoKSwgZnJhbWUtPmhlaWdodCgpKTsKKyAgICAgICAgaWYgKCFtX3Byb3h5KQorICAgICAgICAg
ICAgbV9wcm94eSA9IG1fcHJvdmlkZXItPmNyZWF0ZVN0cmVhbVRleHR1cmVQcm94eSh0aGlzKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgaWYgKGZyYW1lLT5mb3JtYXQoKSA9
PSBWaWRlb0ZyYW1lQ2hyb21pdW06Ok5hdGl2ZVRleHR1cmUpIHsKICAgICAgICAgbV9uYXRpdmVU
ZXh0dXJlSWQgPSBmcmFtZS0+dGV4dHVyZUlkKCk7CiAgICAgICAgIG1fbmF0aXZlVGV4dHVyZVNp
emUgPSBJbnRTaXplKGZyYW1lLT53aWR0aCgpLCBmcmFtZS0+aGVpZ2h0KCkpOwpAQCAtMzAxLDE0
ICszMjcsMTQgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpkcmF3WVVWKExheWVyUmVuZGVyZXJD
aHJvbWl1bSogbGF5ZXJSZW5kZXJlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgUHJvZ3Jh
bT4KLXZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZHJhd0NvbW1vbihMYXllclJlbmRlcmVyQ2hyb21p
dW0qIGxheWVyUmVuZGVyZXIsIFByb2dyYW0qIHByb2dyYW0sIGZsb2F0IHdpZHRoU2NhbGVGYWN0
b3IsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkKSBjb25zdAordm9pZCBDQ1ZpZGVvTGF5ZXJJ
bXBsOjpkcmF3Q29tbW9uKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgUHJv
Z3JhbSogcHJvZ3JhbSwgZmxvYXQgd2lkdGhTY2FsZUZhY3RvciwgUGxhdGZvcm0zRE9iamVjdCB0
ZXh0dXJlSWQsIEdDM0RlbnVtIHRhcmdldCkgY29uc3QKIHsKICAgICBBU1NFUlQocHJvZ3JhbSAm
JiBwcm9ncmFtLT5pbml0aWFsaXplZCgpKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0ID0gbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwogCiAgICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCB0ZXh0dXJlSWQpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUo
dGFyZ2V0LCB0ZXh0dXJlSWQpKTsKIAogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51c2VQcm9n
cmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlm
b3JtNGYocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkudGV4VHJhbnNmb3JtTG9jYXRpb24oKSwgMCwg
MCwgd2lkdGhTY2FsZUZhY3RvciwgMSkpOwpAQCAtMzI1LDEzICszNTEsNDMgQEAgdm9pZCBDQ1Zp
ZGVvTGF5ZXJJbXBsOjpkcmF3UkdCQShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVy
ZXIpIGNvbnN0CiAgICAgY29uc3QgUkdCQVByb2dyYW0qIHByb2dyYW0gPSBsYXllclJlbmRlcmVy
LT52aWRlb0xheWVyUkdCQVByb2dyYW0oKTsKICAgICBjb25zdCBUZXh0dXJlJiB0ZXh0dXJlID0g
bV90ZXh0dXJlc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnJnYlBsYW5lXTsKICAgICBmbG9hdCB3aWR0
aFNjYWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRleHR1cmUubV92aXNpYmxlU2l6ZS53
aWR0aCgpKSAvIHRleHR1cmUubV90ZXh0dXJlLT5zaXplKCkud2lkdGgoKTsKLSAgICBkcmF3Q29t
bW9uKGxheWVyUmVuZGVyZXIsIHByb2dyYW0sIHdpZHRoU2NhbGVGYWN0b3IsIHRleHR1cmUubV90
ZXh0dXJlLT50ZXh0dXJlSWQoKSk7CisgICAgZHJhd0NvbW1vbihsYXllclJlbmRlcmVyLCBwcm9n
cmFtLCB3aWR0aFNjYWxlRmFjdG9yLCB0ZXh0dXJlLm1fdGV4dHVyZS0+dGV4dHVyZUlkKCksIEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJEKTsKIH0KIAogdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpkcmF3TmF0aXZlVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIp
IGNvbnN0CiB7CiAgICAgY29uc3QgTmF0aXZlVGV4dHVyZVByb2dyYW0qIHByb2dyYW0gPSBsYXll
clJlbmRlcmVyLT52aWRlb0xheWVyTmF0aXZlVGV4dHVyZVByb2dyYW0oKTsKLSAgICBkcmF3Q29t
bW9uKGxheWVyUmVuZGVyZXIsIHByb2dyYW0sIDEsIG1fbmF0aXZlVGV4dHVyZUlkKTsKKyAgICBk
cmF3Q29tbW9uKGxheWVyUmVuZGVyZXIsIHByb2dyYW0sIDEsIG1fbmF0aXZlVGV4dHVyZUlkLCBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCk7Cit9CisKK3ZvaWQgQ0NWaWRlb0xheWVySW1w
bDo6ZHJhd1N0cmVhbVRleHR1cmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVy
KQoreworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlci0+Y29u
dGV4dCgpOworCisgICAgQVNTRVJUKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMo
IkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSAmJiBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PmlzRW5hYmxlZCgiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKTsKKworICAgIGNvbnN0IFN0
cmVhbVRleHR1cmVQcm9ncmFtKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlci0+c3RyZWFtVGV4dHVy
ZUxheWVyUHJvZ3JhbSgpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51c2VQcm9ncmFtKHBy
b2dyYW0tPnByb2dyYW0oKSkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtTWF0
cml4NGZ2KHByb2dyYW0tPnZlcnRleFNoYWRlcigpLnRleE1hdHJpeExvY2F0aW9uKCksIGZhbHNl
LCBjb25zdF9jYXN0PGZsb2F0Kj4obV9zdHJlYW1UZXh0dXJlTWF0cml4KSwgMSkpOworCisgICAg
ZHJhd0NvbW1vbihsYXllclJlbmRlcmVyLCBwcm9ncmFtLCAxLCBtX25hdGl2ZVRleHR1cmVJZCwg
RXh0ZW5zaW9uczNEQ2hyb21pdW06OkdMX1RFWFRVUkVfRVhURVJOQUxfT0VTKTsKK30KKwordm9p
ZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpkaWRSZWNlaXZlRnJhbWUoKQoreworICAgIHNldE5lZWRzUmVk
cmF3KCk7Cit9CisKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZGlkVXBkYXRlTWF0cml4KGNvbnN0
IGZsb2F0IG1hdHJpeFsxNl0pCit7CisgICAgbWVtY3B5KG1fc3RyZWFtVGV4dHVyZU1hdHJpeCwg
bWF0cml4LCBzaXplb2YobV9zdHJlYW1UZXh0dXJlTWF0cml4KSk7CisgICAgc2V0TmVlZHNSZWRy
YXcoKTsKK30KKwordm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpzZXROZWVkc1JlZHJhdygpCit7Cisg
ICAgQVNTRVJUKG1fbGF5ZXJUcmVlSG9zdEltcGwpOworICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PnNldE5lZWRzUmVkcmF3KCk7CiB9CiAKIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZHVtcExheWVy
UHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXll
ckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VmlkZW9MYXllckltcGwuaAppbmRleCAxODJmN2I1ODI3YzkxY2JmZmVlNWQzYmFlYWQxMDg1MWY2
ZmZiYTk1Li40MDgzNWNjY2EyOWRjM2FlM2RhMDlmZDE3YzJkYjUzZjRkODA5NjQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVv
TGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJN
YW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIlNoYWRlckNocm9taXVtLmgiCisjaW5jbHVkZSAi
U3RyZWFtVGV4dHVyZUNsaWVudC5oIgogI2luY2x1ZGUgIlZpZGVvRnJhbWVDaHJvbWl1bS5oIgog
I2luY2x1ZGUgIlZpZGVvRnJhbWVQcm92aWRlci5oIgogI2luY2x1ZGUgIlZpZGVvTGF5ZXJDaHJv
bWl1bS5oIgpAQCAtMzUsMTAgKzM2LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKK2NsYXNzIENDVmlkZW9MYXllckltcGw7CisKIHRlbXBs
YXRlPGNsYXNzIFZlcnRleFNoYWRlciwgY2xhc3MgRnJhZ21lbnRTaGFkZXI+IGNsYXNzIFByb2dy
YW1CaW5kaW5nOwogCiBjbGFzcyBDQ1ZpZGVvTGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBs
Ci0gICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIFZpZGVvRnJhbWVQcm92aWRlcjo6Q2xp
ZW50IHsKKyAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgVmlkZW9GcmFtZVByb3ZpZGVy
OjpDbGllbnQKKyAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgU3RyZWFtVGV4dHVyZUNs
aWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NWaWRlb0xheWVySW1wbD4g
Y3JlYXRlKGludCBpZCwgVmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92aWRlcikKICAgICB7CkBAIC01
MSw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNo
YWRlclBvc1RleFRyYW5zZm9ybSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4RmxpcEFscGhhPiBSR0JB
UHJvZ3JhbTsKICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFlV
VlN0cmV0Y2gsIEZyYWdtZW50U2hhZGVyWVVWVmlkZW8+IFlVVlByb2dyYW07CiAgICAgdHlwZWRl
ZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0sIEZyYWdtZW50U2hh
ZGVyUkdCQVRleEZsaXBBbHBoYT4gTmF0aXZlVGV4dHVyZVByb2dyYW07CisgICAgdHlwZWRlZiBQ
cm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybSwgRnJhZ21lbnRTaGFkZXJP
RVNJbWFnZUV4dGVybmFsPiBTdHJlYW1UZXh0dXJlUHJvZ3JhbTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwogCkBAIC01OSw2ICs2NSwxMiBAQCBwdWJs
aWM6CiAgICAgLy8gVmlkZW9GcmFtZVByb3ZpZGVyOjpDbGllbnQgaW1wbGVtZW50YXRpb24gKGNh
bGxhYmxlIG9uIGFueSB0aHJlYWQpLgogICAgIHZpcnR1YWwgdm9pZCBzdG9wVXNpbmdQcm92aWRl
cigpOwogCisgICAgLy8gU3RyZWFtVGV4dHVyZUNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRnJhbWUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlTWF0cml4KGNvbnN0IGZs
b2F0Kik7CisKKyAgICB2b2lkIHNldE5lZWRzUmVkcmF3KCk7CisKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgQ0NWaWRlb0xheWVySW1wbChpbnQsIFZpZGVvRnJhbWVQcm92aWRlciopOwogCkBAIC03
MCwxMyArODIsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRyYXdZVVYoTGF5ZXJSZW5kZXJlckNo
cm9taXVtKikgY29uc3Q7CiAgICAgdm9pZCBkcmF3UkdCQShMYXllclJlbmRlcmVyQ2hyb21pdW0q
KSBjb25zdDsKICAgICB2b2lkIGRyYXdOYXRpdmVUZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1
bSopIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIFByb2dyYW0+IHZvaWQgZHJhd0NvbW1vbihM
YXllclJlbmRlcmVyQ2hyb21pdW0qLCBQcm9ncmFtKiwgZmxvYXQgd2lkdGhTY2FsZUZhY3Rvciwg
UGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQpIGNvbnN0OworICAgIHZvaWQgZHJhd1N0cmVhbVRl
eHR1cmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CisgICAgdGVtcGxhdGU8Y2xhc3MgUHJvZ3Jh
bT4gdm9pZCBkcmF3Q29tbW9uKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIFByb2dyYW0qLCBmbG9h
dCB3aWR0aFNjYWxlRmFjdG9yLCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgR0MzRGVudW0g
dGFyZ2V0KSBjb25zdDsKIAogICAgIE11dGV4IG1fcHJvdmlkZXJNdXRleDsgLy8gR3VhcmRzIG1f
cHJvdmlkZXIgYmVsb3cuCiAgICAgVmlkZW9GcmFtZVByb3ZpZGVyKiBtX3Byb3ZpZGVyOwogCiAg
ICAgc3RhdGljIGNvbnN0IGZsb2F0IHl1djJSR0JbOV07CiAgICAgc3RhdGljIGNvbnN0IGZsb2F0
IHl1dkFkanVzdFszXTsKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQgZmxpcFRyYW5zZm9ybVsxNl07
CiAKICAgICBzdHJ1Y3QgVGV4dHVyZSB7CiAgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4g
bV90ZXh0dXJlOwpAQCAtODgsNiArMTAyLDExIEBAIHByaXZhdGU6CiAKICAgICBQbGF0Zm9ybTNE
T2JqZWN0IG1fbmF0aXZlVGV4dHVyZUlkOwogICAgIEludFNpemUgbV9uYXRpdmVUZXh0dXJlU2l6
ZTsKKworICAgIE93blB0cjxTdHJlYW1UZXh0dXJlUHJveHk+IG1fcHJveHk7CisgICAgZmxvYXQg
bV9zdHJlYW1UZXh0dXJlTWF0cml4WzE2XTsKKworICAgIENDTGF5ZXJUcmVlSG9zdEltcGwqIG1f
bGF5ZXJUcmVlSG9zdEltcGw7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5k
ZXggMTJhYzFhYjIyNzAyN2E3N2I3NDc3ZTA5YjE4OWI1NzdiMDMzNzY4Yi4uNWQ3YjdkNjgxODJi
ZGFjYjU5YWJmNzlmYmIwNTYzODA3MTViZTcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cApAQCAtMjU2LDYgKzI1Niw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTdG9yYWdl
TmFtZXNwYWNlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RvcmFnZVF1b3RhQ2Fs
bGJhY2tzLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RvcmFnZVF1b3RhVHlwZS5o
JywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYlN0cmVhbVRleHR1cmVDbGllbnQuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0QWZmaW5pdHkuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJUZXh0Q2FzZVNlbnNpdGl2aXR5LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbi5oJywKQEAgLTQ3NSw2ICs0NzYsOCBAQAog
ICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZUluZm9DaHJvbWl1bS5jcHAnLAogICAgICAgICAg
ICAgICAgICdzcmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9TdHJl
YW1UZXh0dXJlUHJveHlJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9TdHJlYW1UZXh0
dXJlUHJveHlJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvVXNlck1lZGlhQ2xpZW50SW1w
bC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmgnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgKaW5kZXggOWFh
ZjFhM2QwOTVkY2IwOThmODNkY2IyNDgyNGVhMzY2NjI2NWJhMy4uNGUzOWRkNzEwZGVhMTM5ZTQ2
OTI5ZjY0NWZmZDcwZmZkMTU4YTEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJNZWRpYVBsYXllci5oCkBAIC00MCw2ICs0MCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogY2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRlcjsKIGNsYXNzIFdlYkF1ZGlvU291cmNlUHJv
dmlkZXJDbGllbnQ7CiBjbGFzcyBXZWJNZWRpYVBsYXllckNsaWVudDsKK2NsYXNzIFdlYlN0cmVh
bVRleHR1cmVDbGllbnQ7CitjbGFzcyBXZWJTdHJlYW1UZXh0dXJlUHJveHk7CiBjbGFzcyBXZWJV
Ukw7CiBzdHJ1Y3QgV2ViUmVjdDsKIHN0cnVjdCBXZWJTaXplOwpAQCAtMTYyLDYgKzE2NCw4IEBA
IHB1YmxpYzoKICAgICAvLyBtZXRob2Qgc2hvdWxkIG5vIGxvbmdlciBiZSByZWZlcmVuY2VkIGFm
dGVyIHRoZSBjYWxsIGlzIG1hZGUuCiAgICAgdmlydHVhbCB2b2lkIHB1dEN1cnJlbnRGcmFtZShX
ZWJWaWRlb0ZyYW1lKikgeyB9CiAKKyAgICB2aXJ0dWFsIFdlYlN0cmVhbVRleHR1cmVQcm94eSog
Y3JlYXRlU3RyZWFtVGV4dHVyZVByb3h5KFdlYlN0cmVhbVRleHR1cmVDbGllbnQqKSB7IHJldHVy
biAwOyB9CisKICAgICB2aXJ0dWFsIFdlYkF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNl
UHJvdmlkZXIoKSB7IHJldHVybiAwOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc291cmNlQXBwZW5k
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZmFs
c2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0cmVh
bVRleHR1cmVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0cmVh
bVRleHR1cmVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTlkYzU5Y2JkYjJjYzM5NWNiMWM2MjMwMzNk
ZjlmMGMzMmY5ZWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViU3RyZWFtVGV4dHVyZUNsaWVudC5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBD
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
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YlN0cmVhbVRleHR1cmVDbGllbnRfaAorI2RlZmluZSBXZWJTdHJlYW1UZXh0dXJlQ2xpZW50X2gK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlN0cmVhbVRleHR1cmVQcm94eSB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+V2ViU3RyZWFtVGV4dHVyZVByb3h5KCkgeyB9Cit9OworCitj
bGFzcyBXZWJTdHJlYW1UZXh0dXJlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJT
dHJlYW1UZXh0dXJlQ2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVGcmFt
ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlTWF0cml4KGNvbnN0IGZsb2F0Kikg
PSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZS5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZS5oCmluZGV4IDhlM2IyY2RiZDJiZDFi
OTZkZWM3ZDc5MmI4YjhjMmE5Y2Y2NjU0YjEuLjY0ZGFlOTg3Mzc3YjNmYjQ2OGIzZDdhYzRiM2Nm
NGRhOTU0YmYxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlZpZGVvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWRl
b0ZyYW1lLmgKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgICAgICBGb3JtYXRBU0NJSSwK
ICAgICAgICAgRm9ybWF0STQyMCwKICAgICAgICAgRm9ybWF0TmF0aXZlVGV4dHVyZSwKKyAgICAg
ICAgRm9ybWF0RXh0ZXJuYWxUZXh0dXJlLAogICAgIH07CiAKICAgICB2aXJ0dWFsIH5XZWJWaWRl
b0ZyYW1lKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdHJl
YW1UZXh0dXJlUHJveHlJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0cmVh
bVRleHR1cmVQcm94eUltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjZGZmZjYwOWE1ZDc4MGVkOGUwNDFl
NjVhNDVhNGE0ZTE3M2Y5NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9TdHJlYW1UZXh0dXJlUHJveHlJbXBsLmNwcApAQCAtMCwwICsxLDQ1IEBACisvKgor
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
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmVhbVRleHR1cmVQcm94eUltcGwuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTdHJlYW1U
ZXh0dXJlUHJveHlJbXBsOjpTdHJlYW1UZXh0dXJlUHJveHlJbXBsKFdlYlN0cmVhbVRleHR1cmVQ
cm94eSogcHJveHksIFN0cmVhbVRleHR1cmVDbGllbnRJbXBsKiBjbGllbnQpCit7CisgICAgQVNT
RVJUKHByb3h5ICYmIGNsaWVudCk7CisgICAgbV93ZWJTdHJlYW1UZXh0dXJlUHJveHkgPSBhZG9w
dFB0cihwcm94eSk7CisgICAgbV9jbGllbnQgPSBhZG9wdFB0cihjbGllbnQpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1N0cmVhbVRleHR1cmVQcm94eUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0
cmVhbVRleHR1cmVQcm94eUltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjQzNjk5NDFjNTRlOTdlMmJkMjYy
OWU4ZjM5OGY4MjI4NTRhZTdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvU3RyZWFtVGV4dHVyZVByb3h5SW1wbC5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFN0cmVhbVRleHR1cmVQcm94eUltcGxfaAorI2RlZmluZSBTdHJlYW1UZXh0dXJlUHJveHlJbXBs
X2gKKworI2luY2x1ZGUgIlN0cmVhbVRleHR1cmVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJTdHJl
YW1UZXh0dXJlQ2xpZW50LmgiCisKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBTdHJlYW1UZXh0dXJlUHJveHlJbXBsIDogcHVibGljIFdlYkNv
cmU6OlN0cmVhbVRleHR1cmVQcm94eSB7CitwdWJsaWM6CisgICAgY2xhc3MgU3RyZWFtVGV4dHVy
ZUNsaWVudEltcGw7CisKKyAgICBleHBsaWNpdCBTdHJlYW1UZXh0dXJlUHJveHlJbXBsKFdlYlN0
cmVhbVRleHR1cmVQcm94eSosIFN0cmVhbVRleHR1cmVDbGllbnRJbXBsKik7CisgICAgdmlydHVh
bCB+U3RyZWFtVGV4dHVyZVByb3h5SW1wbCgpIHsgfQorCisgICAgLy8gV2ViU3RyZWFtVGV4dHVy
ZUNsaWVudCAtPiBTdHJlYW1UZXh0dXJlQ2xpZW50CisgICAgY2xhc3MgU3RyZWFtVGV4dHVyZUNs
aWVudEltcGwgOiBwdWJsaWMgV2ViU3RyZWFtVGV4dHVyZUNsaWVudCB7CisgICAgcHVibGljOgor
ICAgICAgICBleHBsaWNpdCBTdHJlYW1UZXh0dXJlQ2xpZW50SW1wbChXZWJDb3JlOjpTdHJlYW1U
ZXh0dXJlQ2xpZW50KiBjbGllbnQpCisgICAgICAgICAgICA6IG1fY2xpZW50KGNsaWVudCkgeyB9
CisgICAgICAgIH5TdHJlYW1UZXh0dXJlQ2xpZW50SW1wbCgpIHsgfQorCisgICAgICAgIC8vIFdl
YlN0cmVhbVRleHR1cmVDbGllbnQgaW1wbGVtZW50YXRpb246CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlRnJhbWUoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZUZyYW1lKCk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkVXBk
YXRlTWF0cml4KGNvbnN0IGZsb2F0IG1hdHJpeFsxNl0pCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1fY2xpZW50LT5kaWRVcGRhdGVNYXRyaXgobWF0cml4KTsKKyAgICAgICAgfQorCisgICAgcHJp
dmF0ZToKKyAgICAgICAgV2ViQ29yZTo6U3RyZWFtVGV4dHVyZUNsaWVudCogbV9jbGllbnQ7Cisg
ICAgfTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6U3RyZWFtVGV4dHVy
ZVByb3h5OworICAgIE93blB0cjxXZWJTdHJlYW1UZXh0dXJlUHJveHk+IG1fd2ViU3RyZWFtVGV4
dHVyZVByb3h5OworICAgIE93blB0cjxXZWJTdHJlYW1UZXh0dXJlQ2xpZW50PiBtX2NsaWVudDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCmluZGV4
IDk5NmU3MDcxMDBhYTkxYjk2NjUzNWRjMDhjOTNjMTk1NTAzZjM5NTkuLmY5NmI3Yzk2ZmRmMDdm
YzkwZmUxMTcwYWMxZTlmNzUyZDA1MDQ1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcApAQCAtMTcsNiArMTcs
NyBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiU3RyZWFtVGV4dHVyZVByb3h5
SW1wbC5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKICNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hy
b21pdW0uaCIKICNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmgiCkBAIC02MjMsNiAr
NjI0LDE3IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpwdXRDdXJyZW50RnJhbWUo
VmlkZW9GcmFtZUNocm9taXVtKiB2aWRlb0ZyYW1lKQogICAgIH0KICAgICBtX2N1cnJlbnRWaWRl
b0ZyYW1lLmNsZWFyKCk7CiB9CisKK1Bhc3NPd25QdHI8V2ViQ29yZTo6U3RyZWFtVGV4dHVyZVBy
b3h5PiBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmNyZWF0ZVN0cmVhbVRleHR1cmVQcm94eShT
dHJlYW1UZXh0dXJlQ2xpZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fd2ViTWVkaWFQbGF5
ZXIpOworICAgIFN0cmVhbVRleHR1cmVQcm94eUltcGw6OlN0cmVhbVRleHR1cmVDbGllbnRJbXBs
KiBjbGllbnRJbXBsID0gbmV3IFN0cmVhbVRleHR1cmVQcm94eUltcGw6OlN0cmVhbVRleHR1cmVD
bGllbnRJbXBsKGNsaWVudCk7CisgICAgV2ViU3RyZWFtVGV4dHVyZVByb3h5KiBwcm94eSA9IG1f
d2ViTWVkaWFQbGF5ZXItPmNyZWF0ZVN0cmVhbVRleHR1cmVQcm94eShjbGllbnRJbXBsKTsKKyAg
ICBpZiAoIXByb3h5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBhZG9w
dFB0cihuZXcgU3RyZWFtVGV4dHVyZVByb3h5SW1wbChwcm94eSwgY2xpZW50SW1wbCkpOworfQog
I2VuZGlmCiAKIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBXZWJNZWRp
YVBsYXllckNsaWVudEltcGw6OmNyZWF0ZShNZWRpYVBsYXllciogcGxheWVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaApp
bmRleCBlNzVlNzNhZTEzNTVjNmVhNDc3MWQwNDdhZjg1Njg4ZDU1NzRlNzhhLi4wY2IyNWNjZTE3
MjJkOThhMjk0NGUwMjBkMDI2MTIwZjE5NDlmNmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaApAQCAtNDEsNiArNDEs
NyBAQAogI2luY2x1ZGUgIldlYkF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJXZWJNZWRpYVBsYXllckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEF1ZGlv
U291cmNlUHJvdmlkZXJDbGllbnQ7IH0KIApAQCAtMTQzLDYgKzE0NCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50KFZpZGVvRnJhbWVQcm92
aWRlcjo6Q2xpZW50Kik7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpWaWRlb0ZyYW1lQ2hyb21pdW0q
IGdldEN1cnJlbnRGcmFtZSgpOwogICAgIHZpcnR1YWwgdm9pZCBwdXRDdXJyZW50RnJhbWUoV2Vi
Q29yZTo6VmlkZW9GcmFtZUNocm9taXVtKik7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNv
cmU6OlN0cmVhbVRleHR1cmVQcm94eT4gY3JlYXRlU3RyZWFtVGV4dHVyZVByb3h5KFdlYkNvcmU6
OlN0cmVhbVRleHR1cmVDbGllbnQqKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128086</attachid>
            <date>2012-02-21 17:07:13 -0800</date>
            <delta_ts>2012-02-21 17:29:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78398-20120221170712.patch</filename>
            <type>text/plain</type>
            <size>31506</size>
            <attacher name="Daniel Sievers">sievers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzBkNzc3YTI1ZTFhNTll
NWJjNTc0ZmFjODliOTczOWE4MmRjMmQ1Ny4uOTE5MGUwZGQxYTZlMzJhYTljNDQ5M2QyMTUzZjY1
NjNiNWJiNGExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTAyLTIxICBEYW5p
ZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
QWRkIHZpZGVvIHN0cmVhbSB0ZXh0dXJlIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4Mzk4CisKKyAgICAgICAgVGhpcyB1cHN0cmVhbXMg
dGhlIGFic3RyYWN0aW9uIHVzZWQgb24gQW5kcm9pZCBmb3IKKyAgICAgICAgaGFyZHdhcmUgdmlk
ZW8gZGVjb2Rpbmcgd2l0aCB0aGUgY29tcG9zaXRvci4KKworICAgICAgICBNb3N0IG9mIHRoZSBp
bnRlcmZhY2VzIGFyZSBrZXB0IGdlbmVyaWMgYW5kIHRoZSBjb3JlCisgICAgICAgIG9mIHRoaXMg
Y2hhbmdlIGlzIHRvIGFsbG93IHRleHR1cmluZyBmcm9tIGFuIGV4dGVybmFsCisgICAgICAgIHRl
eHR1cmUgd2hpbGUgcmVjZWl2aW5nIG5vdGlmaWNhdGlvbnMgKG9uIHRoZSBjb21wb3NpdG9yCisg
ICAgICAgIHRocmVhZCBpZiB3ZSBhcmUgcnVubmluZyBpdCkgd2hlbiB0aGVyZSBhcmUgbmV3IGZy
YW1lcyB0bworICAgICAgICBiZSBkaXNwbGF5ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRl
bnNpb25zM0RDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdTaW5nbGVUZXh0dXJlVmlkZW9RdWFkKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JHQkEpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TmF0aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1N0cmVh
bVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
VmlkZW9RdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c3Ry
ZWFtVGV4dHVyZUxheWVyUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyUmVu
ZGVyZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hh
ZGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFu
c2Zvcm06OlZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OmluaXQpOgorICAg
ICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OmdldFNoYWRlclN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlck9FU0ltYWdlRXh0ZXJuYWw6Omlu
aXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJPRVNJbWFnZUV4dGVybmFsOjpn
ZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1No
YWRlckNocm9taXVtLmg6CisgICAgICAgIChWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6bWF0cml4TG9jYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OnRleFRy
YW5zZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclZpZGVvVHJh
bnNmb3JtOjp0ZXhNYXRyaXhMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KEZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmg6CisgICAgICAgIChDbGllbnQp
OgorICAgICAgICAoVmlkZW9GcmFtZVByb3ZpZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NWaWRlb0RyYXdRdWFkOjpDQ1ZpZGVvRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6
Q0NWaWRlb0RyYXdRdWFkOjptYXRyaXgpOgorICAgICAgICAoQ0NWaWRlb0RyYXdRdWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVmlkZW9EcmF3UXVhZDo6c2V0TWF0cml4KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6Q0NWaWRl
b0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VkZDRm9ybWF0VG9HQzNERm9y
bWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmRpZFJlY2VpdmVGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpkaWRVcGRhdGVNYXRyaXgpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6c2V0TmVlZHNSZWRyYXcpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NWaWRlb0xheWVySW1wbCk6CisKIDIwMTItMDIt
MjEgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBbU3VnZ2VzdEJveF0gdGV4dFByb21wdC5jc3MgZGlzYWJsZW1lbnQgZGlz
cGxheXMgZ2FyYmxlZCBzdWdnZXN0IGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4
ZTI5ODZhY2UwYTc1YjMwZTU3NTdmYTczNDQ2MGM2ZGZkZDllMTkyLi4zZTQ2OTZjYTViMDUyZTNl
MThjN2Y0MjZjMjM3YmZhOTAzMjUwMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM4IEBACisyMDEyLTAyLTIxICBEYW5pZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkIHZpZGVvIHN0cmVhbSB0ZXh0dXJlIHN1
cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4
Mzk4CisKKyAgICAgICAgVGhpcyB1cHN0cmVhbXMgdGhlIGFic3RyYWN0aW9uIHVzZWQgb24gQW5k
cm9pZCBmb3IKKyAgICAgICAgaGFyZHdhcmUgdmlkZW8gZGVjb2Rpbmcgd2l0aCB0aGUgY29tcG9z
aXRvci4KKworICAgICAgICBNb3N0IG9mIHRoZSBpbnRlcmZhY2VzIGFyZSBrZXB0IGdlbmVyaWMg
YW5kIHRoZSBjb3JlCisgICAgICAgIG9mIHRoaXMgY2hhbmdlIGlzIHRvIGFsbG93IHRleHR1cmlu
ZyBmcm9tIGFuIGV4dGVybmFsCisgICAgICAgIHRleHR1cmUgd2hpbGUgcmVjZWl2aW5nIG5vdGlm
aWNhdGlvbnMgKG9uIHRoZSBjb21wb3NpdG9yCisgICAgICAgIHRocmVhZCBpZiB3ZSBhcmUgcnVu
bmluZyBpdCkgd2hlbiB0aGVyZSBhcmUgbmV3IGZyYW1lcyB0bworICAgICAgICBiZSBkaXNwbGF5
ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJNZWRpYVBsYXllci5oOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXI6OnNldFN0cmVhbVRleHR1
cmVDbGllbnQpOgorICAgICAgICAoV2ViTWVkaWFQbGF5ZXIpOgorICAgICAgICAqIHB1YmxpYy9X
ZWJTdHJlYW1UZXh0dXJlQ2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlZpZGVvRnJhbWUuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJTdHJlYW1UZXh0dXJlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RyZWFtVGV4dHVy
ZUNsaWVudDo6fldlYlN0cmVhbVRleHR1cmVDbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9XZWJW
aWRlb0ZyYW1lLmg6CisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6fldlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1w
bDo6c2V0VmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjpkaWRSZWNlaXZlRnJhbWUpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpkaWRVcGRhdGVNYXRy
aXgpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoKKyAgICAgICAg
KFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCk6CisKIDIwMTItMDItMjEgIFl1cnkgU2VtaWtoYXRz
a3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBXZWIgSW5zcGVjdG9yOiBz
ZXQgYnJlYWtwb2ludC9wYXVzZSBkb2Vzbid0IHdvcmsgd2hlbiB3b3JrZXIgaXMgaW4gYSB0aWdo
dCBsb29wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaAppbmRleCA1MDlkYjMzZTg1M2Ew
MzgxYzJlZmU1YjQ3NzczODQwMGExMmVjY2U1Li41MzMyMmYwZjI1ZWQ0MDdhMjVlNmI2MjMyN2U4
NzEyODlkMThiZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgKQEAgLTYzLDYg
KzYzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRShQbGF0Zm9ybTNET2JqZWN0KTsKIAogICAgIGVudW0geworICAgICAgICAvLyBH
TF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsCisgICAgICAgIEdMX1RFWFRVUkVfRVhURVJOQUxfT0VT
ID0gMHg4RDY1LAorCiAgICAgICAgIC8vIEdMX0NIUk9NSVVNX21hcF9zdWIgKGVudW1zIGluaGVy
aXRlZCBmcm9tIEdMX0FSQl92ZXJ0ZXhfYnVmZmVyX29iamVjdCkKICAgICAgICAgUkVBRF9PTkxZ
ID0gMHg4OEI4LAogICAgICAgICBXUklURV9PTkxZID0gMHg4OEI5LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggYTUyNjY5ZThkNDI1MzVmNDQ3ZDZiODQyYzNjMThl
ODAyNTFmZjAwNS4uM2Y0MDQ2MWVjMzRjMmMyZDkzMTNlNTY4YzlkY2Y0NjY2ZjMxMzBmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC03MzYsMTIgKzczNiwxMiBA
QCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1lVVihjb25zdCBDQ1ZpZGVvRHJhd1F1
YWQqIHF1YWQpCiB9CiAKIHRlbXBsYXRlPGNsYXNzIFByb2dyYW0+Ci12b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd1NpbmdsZVRleHR1cmVWaWRlb1F1YWQoY29uc3QgQ0NWaWRlb0RyYXdR
dWFkKiBxdWFkLCBQcm9ncmFtKiBwcm9ncmFtLCBmbG9hdCB3aWR0aFNjYWxlRmFjdG9yLCBQbGF0
Zm9ybTNET2JqZWN0IHRleHR1cmVJZCkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
U2luZ2xlVGV4dHVyZVZpZGVvUXVhZChjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqIHF1YWQsIFByb2dy
YW0qIHByb2dyYW0sIGZsb2F0IHdpZHRoU2NhbGVGYWN0b3IsIFBsYXRmb3JtM0RPYmplY3QgdGV4
dHVyZUlkLCBHQzNEZW51bSB0YXJnZXQpCiB7CiAgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3Jh
bS0+aW5pdGlhbGl6ZWQoKSk7CiAKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2
ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgR0xDKGNvbnRleHQo
KSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
dGV4dHVyZUlkKSk7CisgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZSh0
YXJnZXQsIHRleHR1cmVJZCkpOwogCiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQ
cm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQo
KS0+dW5pZm9ybTRmKHByb2dyYW0tPnZlcnRleFNoYWRlcigpLnRleFRyYW5zZm9ybUxvY2F0aW9u
KCksIDAsIDAsIHdpZHRoU2NhbGVGYWN0b3IsIDEpKTsKQEAgLTc1OSwxMyArNzU5LDI1IEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UkdCQShjb25zdCBDQ1ZpZGVvRHJhd1F1YWQq
IHF1YWQpCiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6UkdCQVByb2dyYW0qIHByb2dyYW0g
PSB2aWRlb0xheWVyUkdCQVByb2dyYW0oKTsKICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpU
ZXh0dXJlJiB0ZXh0dXJlID0gcXVhZC0+dGV4dHVyZXMoKVtWaWRlb0ZyYW1lQ2hyb21pdW06OnJn
YlBsYW5lXTsKICAgICBmbG9hdCB3aWR0aFNjYWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHRleHR1cmUubV92aXNpYmxlU2l6ZS53aWR0aCgpKSAvIHRleHR1cmUubV90ZXh0dXJlLT5zaXpl
KCkud2lkdGgoKTsKLSAgICBkcmF3U2luZ2xlVGV4dHVyZVZpZGVvUXVhZChxdWFkLCBwcm9ncmFt
LCB3aWR0aFNjYWxlRmFjdG9yLCB0ZXh0dXJlLm1fdGV4dHVyZS0+dGV4dHVyZUlkKCkpOworICAg
IGRyYXdTaW5nbGVUZXh0dXJlVmlkZW9RdWFkKHF1YWQsIHByb2dyYW0sIHdpZHRoU2NhbGVGYWN0
b3IsIHRleHR1cmUubV90ZXh0dXJlLT50ZXh0dXJlSWQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd05hdGl2ZVRl
eHR1cmUoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKiBxdWFkKQogewogICAgIGNvbnN0IENDVmlkZW9M
YXllckltcGw6Ok5hdGl2ZVRleHR1cmVQcm9ncmFtKiBwcm9ncmFtID0gdmlkZW9MYXllck5hdGl2
ZVRleHR1cmVQcm9ncmFtKCk7Ci0gICAgZHJhd1NpbmdsZVRleHR1cmVWaWRlb1F1YWQocXVhZCwg
cHJvZ3JhbSwgMSwgcXVhZC0+ZnJhbWUoKS0+dGV4dHVyZUlkKCkpOworICAgIGRyYXdTaW5nbGVU
ZXh0dXJlVmlkZW9RdWFkKHF1YWQsIHByb2dyYW0sIDEsIHF1YWQtPmZyYW1lKCktPnRleHR1cmVJ
ZCgpLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCk7Cit9CisKK3ZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkcmF3U3RyZWFtVGV4dHVyZShjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqIHF1
YWQpCit7CisgICAgQVNTRVJUKGNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygi
R0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpICYmIGNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygp
LT5pc0VuYWJsZWQoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSk7CisKKyAgICBjb25zdCBD
Q1ZpZGVvTGF5ZXJJbXBsOjpTdHJlYW1UZXh0dXJlUHJvZ3JhbSogcHJvZ3JhbSA9IHN0cmVhbVRl
eHR1cmVMYXllclByb2dyYW0oKTsKKyAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVzZVBy
b2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CisgICAgQVNTRVJUKHF1YWQtPm1hdHJpeCgpKTsK
KyAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm1NYXRyaXg0ZnYocHJvZ3JhbS0+
dmVydGV4U2hhZGVyKCkudGV4TWF0cml4TG9jYXRpb24oKSwgZmFsc2UsIGNvbnN0X2Nhc3Q8Zmxv
YXQqPihxdWFkLT5tYXRyaXgoKSksIDEpKTsKKworICAgIGRyYXdTaW5nbGVUZXh0dXJlVmlkZW9R
dWFkKHF1YWQsIHByb2dyYW0sIDEsIHF1YWQtPmZyYW1lKCktPnRleHR1cmVJZCgpLCBFeHRlbnNp
b25zM0RDaHJvbWl1bTo6R0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMpOwogfQogCiBib29sIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6Y29weUZyYW1lVG9UZXh0dXJlcyhjb25zdCBDQ1ZpZGVvRHJhd1F1
YWQqIHF1YWQpCkBAIC04MjQsNiArODM2LDkgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdWaWRlb1F1YWQoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKiBxdWFkKQogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQ6CiAgICAgICAgIGRyYXdOYXRpdmVUZXh0dXJlKHF1
YWQpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRENocm9taXVtOjpHTF9U
RVhUVVJFX0VYVEVSTkFMX09FUzoKKyAgICAgICAgZHJhd1N0cmVhbVRleHR1cmUocXVhZCk7Cisg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7IC8vIFNvbWVvbmUg
dXBkYXRlZCBjb252ZXJ0VkZDRm9ybWF0VG9HQzNERm9ybWF0IGFib3ZlIGJ1dCB1cGRhdGUgdGhp
cyEKICAgICB9CkBAIC0xMzg0LDYgKzEzOTksMTYgQEAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6
TmF0aXZlVGV4dHVyZVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9MYXllck4K
ICAgICByZXR1cm4gbV92aWRlb0xheWVyTmF0aXZlVGV4dHVyZVByb2dyYW0uZ2V0KCk7CiB9CiAK
K2NvbnN0IENDVmlkZW9MYXllckltcGw6OlN0cmVhbVRleHR1cmVQcm9ncmFtKiBMYXllclJlbmRl
cmVyQ2hyb21pdW06OnN0cmVhbVRleHR1cmVMYXllclByb2dyYW0oKQoreworICAgIGlmICghbV9z
dHJlYW1UZXh0dXJlTGF5ZXJQcm9ncmFtKQorICAgICAgICBtX3N0cmVhbVRleHR1cmVMYXllclBy
b2dyYW0gPSBhZG9wdFB0cihuZXcgQ0NWaWRlb0xheWVySW1wbDo6U3RyZWFtVGV4dHVyZVByb2dy
YW0obV9jb250ZXh0LmdldCgpKSk7CisgICAgaWYgKCFtX3N0cmVhbVRleHR1cmVMYXllclByb2dy
YW0tPmluaXRpYWxpemVkKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6c3RyZWFtVGV4dHVyZUxheWVyUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDAp
OworICAgICAgICBtX3N0cmVhbVRleHR1cmVMYXllclByb2dyYW0tPmluaXRpYWxpemUobV9jb250
ZXh0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIG1fc3RyZWFtVGV4dHVyZUxheWVyUHJvZ3Jh
bS5nZXQoKTsKK30KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRP
YmplY3RzKCkKIHsKQEAgLTE0MjUsNiArMTQ1MCw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cygpCiAgICAgICAgIG1fdmlkZW9MYXllclJHQkFQcm9n
cmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1fdmlkZW9MYXllcllVVlBy
b2dyYW0pCiAgICAgICAgIG1fdmlkZW9MYXllcllVVlByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0
LmdldCgpKTsKKyAgICBpZiAobV9zdHJlYW1UZXh0dXJlTGF5ZXJQcm9ncmFtKQorICAgICAgICBt
X3N0cmVhbVRleHR1cmVMYXllclByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKIAog
ICAgIG1fYm9yZGVyUHJvZ3JhbS5jbGVhcigpOwogICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFt
LmNsZWFyKCk7CkBAIC0xNDQzLDYgKzE0NzAsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMoKQogICAgIG1fcmVuZGVyU3VyZmFjZVByb2dyYW1BQS5j
bGVhcigpOwogICAgIG1fdmlkZW9MYXllclJHQkFQcm9ncmFtLmNsZWFyKCk7CiAgICAgbV92aWRl
b0xheWVyWVVWUHJvZ3JhbS5jbGVhcigpOworICAgIG1fc3RyZWFtVGV4dHVyZUxheWVyUHJvZ3Jh
bS5jbGVhcigpOwogICAgIGlmIChtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpCiAgICAgICAgIEdM
QyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9vZmZzY3Jl
ZW5GcmFtZWJ1ZmZlcklkKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5k
ZXggOGM0YjZlOWZlOTJhNmZmOGFhZTg1OTVkNDM5MDNiOTg5MDViZTQ5My4uNWE5NGE5MDE3YTY4
MmRmMGQ2ODg4YWVhYjg4ODJkNDQ4YjZiMzFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmgKQEAgLTEzMCw2ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgQ0NWaWRlb0xh
eWVySW1wbDo6UkdCQVByb2dyYW0qIHZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSgpOwogICAgIGNvbnN0
IENDVmlkZW9MYXllckltcGw6OllVVlByb2dyYW0qIHZpZGVvTGF5ZXJZVVZQcm9ncmFtKCk7CiAg
ICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6TmF0aXZlVGV4dHVyZVByb2dyYW0qIHZpZGVvTGF5
ZXJOYXRpdmVUZXh0dXJlUHJvZ3JhbSgpOworICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OlN0
cmVhbVRleHR1cmVQcm9ncmFtKiBzdHJlYW1UZXh0dXJlTGF5ZXJQcm9ncmFtKCk7CiAKICAgICB2
b2lkIGdldEZyYW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYpOwog
CkBAIC0xNzAsOCArMTcxLDkgQEAgcHJpdmF0ZToKICAgICBNYW5hZ2VkVGV4dHVyZSogZ2V0T2Zm
c2NyZWVuTGF5ZXJUZXh0dXJlKCk7CiAgICAgdm9pZCBjb3B5UGxhbmVUb1RleHR1cmUoY29uc3Qg
Q0NWaWRlb0RyYXdRdWFkKiwgY29uc3Qgdm9pZCogcGxhbmUsIGludCBpbmRleCk7CiAgICAgYm9v
bCBjb3B5RnJhbWVUb1RleHR1cmVzKGNvbnN0IENDVmlkZW9EcmF3UXVhZCopOwotICAgIHRlbXBs
YXRlPGNsYXNzIFByb2dyYW0+IHZvaWQgZHJhd1NpbmdsZVRleHR1cmVWaWRlb1F1YWQoY29uc3Qg
Q0NWaWRlb0RyYXdRdWFkKiwgUHJvZ3JhbSosIGZsb2F0IHdpZHRoU2NhbGVGYWN0b3IsIFBsYXRm
b3JtM0RPYmplY3QgdGV4dHVyZUlkKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBQcm9ncmFtPiB2b2lk
IGRyYXdTaW5nbGVUZXh0dXJlVmlkZW9RdWFkKGNvbnN0IENDVmlkZW9EcmF3UXVhZCosIFByb2dy
YW0qLCBmbG9hdCB3aWR0aFNjYWxlRmFjdG9yLCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwg
R0MzRGVudW0gdGFyZ2V0KTsKICAgICB2b2lkIGRyYXdOYXRpdmVUZXh0dXJlKGNvbnN0IENDVmlk
ZW9EcmF3UXVhZCopOworICAgIHZvaWQgZHJhd1N0cmVhbVRleHR1cmUoY29uc3QgQ0NWaWRlb0Ry
YXdRdWFkKik7CiAgICAgdm9pZCBkcmF3UkdCQShjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqKTsKICAg
ICB2b2lkIGRyYXdZVVYoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKik7CiAKQEAgLTIzMyw2ICsyMzUs
NyBAQCBwcml2YXRlOgogICAgIE93blB0cjxDQ1ZpZGVvTGF5ZXJJbXBsOjpSR0JBUHJvZ3JhbT4g
bV92aWRlb0xheWVyUkdCQVByb2dyYW07CiAgICAgT3duUHRyPENDVmlkZW9MYXllckltcGw6OllV
VlByb2dyYW0+IG1fdmlkZW9MYXllcllVVlByb2dyYW07CiAgICAgT3duUHRyPENDVmlkZW9MYXll
ckltcGw6Ok5hdGl2ZVRleHR1cmVQcm9ncmFtPiBtX3ZpZGVvTGF5ZXJOYXRpdmVUZXh0dXJlUHJv
Z3JhbTsKKyAgICBPd25QdHI8Q0NWaWRlb0xheWVySW1wbDo6U3RyZWFtVGV4dHVyZVByb2dyYW0+
IG1fc3RyZWFtVGV4dHVyZUxheWVyUHJvZ3JhbTsKIAogICAgIE93blB0cjxUZXh0dXJlTWFuYWdl
cj4gbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXI7CiAgICAgT3duUHRyPFRyYWNraW5nVGV4
dHVyZUFsbG9jYXRvcj4gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJv
bWl1bS5jcHAKaW5kZXggZjY5YjZiMThhYTc5YmU5NzU4OGFhYWJhZDg5MzM0Y2QzMjIyZjY2NC4u
NzFkNGQxZmQxOGQ5ODYyMWQyY2M0YjQ5YWY5ZGFlY2Q2MTVlYzc4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNo
cm9taXVtLmNwcApAQCAtMjU1LDYgKzI1NSwzOSBAQCBTdHJpbmcgVmVydGV4U2hhZGVyVGlsZTo6
Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKICAgICApOwogfQogCitWZXJ0ZXhTaGFkZXJWaWRlb1Ry
YW5zZm9ybTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm0oKQorICAgIDogbV9tYXRyaXhMb2Nh
dGlvbigtMSkKKyAgICAsIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24oLTEpCisgICAgLCBtX3RleE1h
dHJpeExvY2F0aW9uKC0xKQoreworfQorCitib29sIFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3Jt
Ojppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQorewor
ICAgIG1fbWF0cml4TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3Jh
bSwgIm1hdHJpeCIpOworICAgIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250ZXh0LT5nZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleFRyYW5zZm9ybSIpOworICAgIG1fdGV4TWF0cml4
TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleE1hdHJp
eCIpOworICAgIHJldHVybiBtX21hdHJpeExvY2F0aW9uICE9IC0xICYmIG1fdGV4VHJhbnNmb3Jt
TG9jYXRpb24gIT0gLTEgJiYgbV90ZXhNYXRyaXhMb2NhdGlvbiAhPSAtMTsKK30KKworU3RyaW5n
IFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAorewor
ICAgIHJldHVybiBTSEFERVIoCisgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247Cisg
ICAgICAgIGF0dHJpYnV0ZSB2ZWMyIGFfdGV4Q29vcmQ7CisgICAgICAgIHVuaWZvcm0gbWF0NCBt
YXRyaXg7CisgICAgICAgIHVuaWZvcm0gdmVjNCB0ZXhUcmFuc2Zvcm07CisgICAgICAgIHVuaWZv
cm0gbWF0NCB0ZXhNYXRyaXg7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOworICAg
ICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IG1h
dHJpeCAqIGFfcG9zaXRpb247CisgICAgICAgICAgICB2ZWMyIHRleENvb3JkID0gdmVjMih0ZXhN
YXRyaXggKiB2ZWM0KGFfdGV4Q29vcmQueCwgMS4wIC0gYV90ZXhDb29yZC55LCAwLjAsIDEuMCkp
OworICAgICAgICAgICAgdl90ZXhDb29yZCA9IHRleENvb3JkICogdGV4VHJhbnNmb3JtLnp3ICsg
dGV4VHJhbnNmb3JtLnh5OworICAgICAgICB9CisgICAgKTsKK30KKwogRnJhZ21lbnRUZXhBbHBo
YUJpbmRpbmc6OkZyYWdtZW50VGV4QWxwaGFCaW5kaW5nKCkKICAgICA6IG1fc2FtcGxlckxvY2F0
aW9uKC0xKQogICAgICwgbV9hbHBoYUxvY2F0aW9uKC0xKQpAQCAtMjk2LDYgKzMyOSwyNyBAQCBT
dHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4RmxpcEFscGhhOjpnZXRTaGFkZXJTdHJpbmcoKSBj
b25zdAogICAgICk7CiB9CiAKK2Jvb2wgRnJhZ21lbnRTaGFkZXJPRVNJbWFnZUV4dGVybmFsOjpp
bml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQoreworICAg
IG1fc2FtcGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0s
ICJzX3RleHR1cmUiKTsKKworICAgIHJldHVybiBtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMTsKK30K
KworU3RyaW5nIEZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbDo6Z2V0U2hhZGVyU3RyaW5n
KCkgY29uc3QKK3sKKyAgICAvLyBDYW5ub3QgdXNlIHRoZSBTSEFERVIoKSBtYWNybyBiZWNhdXNl
IG9mIHRoZSAnIycgY2hhcgorICAgIHJldHVybiAiI2V4dGVuc2lvbiBHTF9PRVNfRUdMX2ltYWdl
X2V4dGVybmFsIDogcmVxdWlyZSBcbiIKKyAgICAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgorICAgICAgICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7XG4iCisgICAgICAg
ICAgICJ1bmlmb3JtIHNhbXBsZXJFeHRlcm5hbE9FUyBzX3RleHR1cmU7XG4iCisgICAgICAgICAg
ICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAgICAie1xuIgorICAgICAgICAgICAiICAgIHZlYzQg
dGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKTtcbiIKKyAgICAgICAg
ICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRleENvbG9yLngsIHRleENvbG9yLnksIHRleENv
bG9yLnosIHRleENvbG9yLncpO1xuIgorICAgICAgICAgICAifVxuIjsKK30KKwogU3RyaW5nIEZy
YWdtZW50U2hhZGVyUkdCQVRleEFscGhhOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAogewogICAg
IHJldHVybiBTSEFERVIoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaAppbmRleCAzNDMyM2U2ZDMzOTk3N2Vl
M2Y1NWQyOTA1OWE4M2ZlYTBlZmVjNWRhLi45NDk5YWM3ZmQ3MjFiYzQ5ZDBkNDU3ZGExYTJhMWM5
ZWM1ZjI2YmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKQEAgLTE0NSw2ICsxNDUsMjMgQEAgcHJp
dmF0ZToKICAgICBpbnQgbV92ZXJ0ZXhUZXhUcmFuc2Zvcm1Mb2NhdGlvbjsKIH07CiAKK2NsYXNz
IFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtIHsKK3B1YmxpYzoKKyAgICBWZXJ0ZXhTaGFkZXJW
aWRlb1RyYW5zZm9ybSgpOworCisgICAgYm9vbCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5z
aWduZWQgcHJvZ3JhbSk7CisgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OworCisg
ICAgaW50IG1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbjsg
fQorICAgIGludCB0ZXhUcmFuc2Zvcm1Mb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4VHJh
bnNmb3JtTG9jYXRpb247IH0KKyAgICBpbnQgdGV4TWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3RleE1hdHJpeExvY2F0aW9uOyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fbWF0cml4
TG9jYXRpb247CisgICAgaW50IG1fdGV4VHJhbnNmb3JtTG9jYXRpb247CisgICAgaW50IG1fdGV4
TWF0cml4TG9jYXRpb247Cit9OworCiBjbGFzcyBGcmFnbWVudFRleEFscGhhQmluZGluZyB7CiBw
dWJsaWM6CiAgICAgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcoKTsKQEAgLTIxMSw2ICsyMjgsMTUg
QEAgcHVibGljOgogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIH07CiAKKy8v
IEZyYWdtZW50IHNoYWRlciBmb3IgZXh0ZXJuYWwgdGV4dHVyZXMuCitjbGFzcyBGcmFnbWVudFNo
YWRlck9FU0ltYWdlRXh0ZXJuYWwgOiBwdWJsaWMgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcgewor
cHVibGljOgorICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKKyAgICBib29sIGlu
aXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKK3ByaXZhdGU6CisgICAg
aW50IG1fc2FtcGxlckxvY2F0aW9uOworfTsKKwogY2xhc3MgRnJhZ21lbnRTaGFkZXJSR0JBVGV4
QWxwaGFBQSB7CiBwdWJsaWM6CiAgICAgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlk
ZW9GcmFtZUNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9WaWRlb0ZyYW1lQ2hyb21pdW0uaAppbmRleCBjNGFiZDk2OWQxZWQxMWQ3ODQzN2Q1MDlj
MzRkYWQ5NWVkOTM0MmIyLi4xM2EyM2I0NDdjMTg5NWY1ZjVhMTNhODNlOGViMjg3ZjhkYWEzZDM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0ZyYW1lQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9WaWRlb0ZyYW1lQ2hyb21pdW0uaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIEFTQ0lJLAogICAgICAgICBJNDIwLAogICAgICAgICBOYXRpdmVUZXh0dXJlLAor
ICAgICAgICBFeHRlcm5hbFRleHR1cmUsCiAgICAgfTsKIAogICAgIHZpcnR1YWwgflZpZGVvRnJh
bWVDaHJvbWl1bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lUHJvdmlkZXIuaAppbmRleCAzZDQzYTkwYzM3
YTYzN2FjZTdjYzczMjE3NjNkZTRhMzk3OTk0MWRkLi45Nzk0Nzk0YTdiN2RmNTMzMzMzM2MwYTE0
ZGYyNTFhNjc0OGM5OTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lUHJvdmlkZXIuaApAQCAtNDMsNiAr
NDMsOCBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICAvLyBQcm92aWRlciB3aWxsIGNh
bGwgdGhpcyBtZXRob2QgdG8gdGVsbCB0aGUgY2xpZW50IHRvIHN0b3AgdXNpbmcgaXQuCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBzdG9wVXNpbmdQcm92aWRlcigpID0gMDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVGcmFtZSgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFVw
ZGF0ZU1hdHJpeChjb25zdCBmbG9hdCopID0gMDsKICAgICB9OwogCiAgICAgdmlydHVhbCB2b2lk
IHNldFZpZGVvRnJhbWVQcm92aWRlckNsaWVudChDbGllbnQqKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1
YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NW
aWRlb0RyYXdRdWFkLmNwcAppbmRleCAxZjk2ZTFiMTIzZDBkMTcxMmNiOTY5YzkyZjAyZmI1OWE4
OTBlYWZlLi5iYTU3MzQ5MDk4NzVjNWRjY2NmODlhYjIwMzRjNDBlNDU5ZGY3Mjk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVv
RHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAgQ0NWaWRlb0RyYXdR
dWFkOjpDQ1ZpZGVvRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSwgY29uc3QKICAgICAsIG1fdGV4dHVyZXModGV4dHVyZXMpCiAgICAgLCBtX2ZyYW1lKGZy
YW1lKQogICAgICwgbV9mb3JtYXQoZm9ybWF0KQorICAgICwgbV9tYXRyaXgoMCkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NWaWRlb0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuaAppbmRleCAxNjVhYTYwZGM0NzdiYjk5NzNiYmVhNGY0
MDdhZDY2ODA2ZGMwNTk2Li5hZWY3ODQ3MmE0MGFjNmJlZjU0ODIzZmJhNDMwNDA2MzM2MTZkNDUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1ZpZGVvRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuaApAQCAtNDEsNiArNDEsOSBAQCBwdWJsaWM6
CiAgICAgQ0NWaWRlb0xheWVySW1wbDo6VGV4dHVyZSogdGV4dHVyZXMoKSBjb25zdCB7IHJldHVy
biBtX3RleHR1cmVzOyB9CiAgICAgVmlkZW9GcmFtZUNocm9taXVtKiBmcmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZnJhbWU7IH0KICAgICBHQzNEZW51bSBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBt
X2Zvcm1hdDsgfQorICAgIGNvbnN0IGZsb2F0KiBtYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX21h
dHJpeDsgfQorCisgICAgdm9pZCBzZXRNYXRyaXgoY29uc3QgZmxvYXQqIG1hdHJpeCkgeyBtX21h
dHJpeCA9IG1hdHJpeDsgfQogCiBwcml2YXRlOgogICAgIENDVmlkZW9EcmF3UXVhZChjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBDQ1ZpZGVvTGF5ZXJJbXBsOjpUZXh0
dXJlKiB0ZXh0dXJlcywgVmlkZW9GcmFtZUNocm9taXVtKiwgR0MzRGVudW0gZm9ybWF0KTsKQEAg
LTQ4LDYgKzUxLDcgQEAgcHJpdmF0ZToKICAgICBDQ1ZpZGVvTGF5ZXJJbXBsOjpUZXh0dXJlKiBt
X3RleHR1cmVzOwogICAgIFZpZGVvRnJhbWVDaHJvbWl1bSogbV9mcmFtZTsKICAgICBHQzNEZW51
bSBtX2Zvcm1hdDsKKyAgICBjb25zdCBmbG9hdCogbV9tYXRyaXg7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVv
TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVmlkZW9MYXllckltcGwuY3BwCmluZGV4IDczMTliMTU3YWNmYWFiMDJhYjY4YjFmYzFm
MDA5N2E2ZDFlMWE3MDQuLmM2ZDAwNzFiYzQ3YmQ3N2EwYjllOGJkNWZlZDBlNWQwNmMyYWQ5ZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVmlkZW9MYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCkBAIC02MiwxMCArNjIsMjEgQEAg
Y29uc3QgZmxvYXQgQ0NWaWRlb0xheWVySW1wbDo6eXV2QWRqdXN0WzNdID0gewogICAgIC0wLjVm
LAogfTsKIAorLy8gVGhpcyBtYXRyaXggaXMgdGhlIGRlZmF1bHQgdHJhbnNmb3JtYXRpb24gZm9y
IHN0cmVhbSB0ZXh0dXJlcy4KK2NvbnN0IGZsb2F0IENDVmlkZW9MYXllckltcGw6OmZsaXBUcmFu
c2Zvcm1bMTZdID0geworICAgIDEsIDAsIDAsIDAsCisgICAgMCwgLTEsIDAsIDAsCisgICAgMCwg
MCwgMSwgMCwKKyAgICAwLCAxLCAwLCAxLAorfTsKKwogQ0NWaWRlb0xheWVySW1wbDo6Q0NWaWRl
b0xheWVySW1wbChpbnQgaWQsIFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCiAgICAgOiBD
Q0xheWVySW1wbChpZCkKICAgICAsIG1fcHJvdmlkZXIocHJvdmlkZXIpCisgICAgLCBtX2xheWVy
VHJlZUhvc3RJbXBsKDApCisgICAgLCBtX2ZyYW1lKDApCiB7CisgICAgbWVtY3B5KG1fc3RyZWFt
VGV4dHVyZU1hdHJpeCwgZmxpcFRyYW5zZm9ybSwgc2l6ZW9mKG1fc3RyZWFtVGV4dHVyZU1hdHJp
eCkpOwogICAgIHByb3ZpZGVyLT5zZXRWaWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQodGhpcyk7CiB9
CiAKQEAgLTk4LDYgKzEwOSw4IEBAIHN0YXRpYyBHQzNEZW51bSBjb252ZXJ0VkZDRm9ybWF0VG9H
QzNERm9ybWF0KFZpZGVvRnJhbWVDaHJvbWl1bTo6Rm9ybWF0IGZvcm1hdCkKICAgICAgICAgcmV0
dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwogICAgIGNhc2UgVmlkZW9GcmFtZUNocm9taXVt
OjpOYXRpdmVUZXh0dXJlOgogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQ7CisgICAgY2FzZSBWaWRlb0ZyYW1lQ2hyb21pdW06OkV4dGVybmFsVGV4dHVyZToKKyAg
ICAgICAgcmV0dXJuIEV4dGVuc2lvbnMzRENocm9taXVtOjpHTF9URVhUVVJFX0VYVEVSTkFMX09F
UzsKICAgICBjYXNlIFZpZGVvRnJhbWVDaHJvbWl1bTo6SW52YWxpZDoKICAgICBjYXNlIFZpZGVv
RnJhbWVDaHJvbWl1bTo6UkdCNTU1OgogICAgIGNhc2UgVmlkZW9GcmFtZUNocm9taXVtOjpSR0I1
NjU6CkBAIC0xNDMsNyArMTU2LDEyIEBAIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6d2lsbERyYXco
TGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogdm9pZCBDQ1ZpZGVvTGF5ZXJJ
bXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSkKIHsKICAgICBJbnRSZWN0IHF1YWRSZWN0KEludFBvaW50
KCksIGJvdW5kcygpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoQ0NWaWRlb0RyYXdRdWFkOjpjcmVh
dGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV90ZXh0dXJlcywgbV9mcmFtZSwgbV9mb3Jt
YXQpKTsKKyAgICBPd25QdHI8Q0NWaWRlb0RyYXdRdWFkPiB2aWRlb1F1YWQgPSBDQ1ZpZGVvRHJh
d1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBtX3RleHR1cmVzLCBtX2Zy
YW1lLCBtX2Zvcm1hdCk7CisKKyAgICBpZiAobV9mb3JtYXQgPT0gRXh0ZW5zaW9uczNEQ2hyb21p
dW06OkdMX1RFWFRVUkVfRVhURVJOQUxfT0VTKQorICAgICAgICB2aWRlb1F1YWQtPnNldE1hdHJp
eChtX3N0cmVhbVRleHR1cmVNYXRyaXgpOworCisgICAgcXVhZExpc3QuYXBwZW5kKHZpZGVvUXVh
ZC5yZWxlYXNlKCkpOwogfQogCiB2b2lkIENDVmlkZW9MYXllckltcGw6OmRpZERyYXcoKQpAQCAt
MjEzLDYgKzIzMSwyMyBAQCBib29sIENDVmlkZW9MYXllckltcGw6OnJlc2VydmVUZXh0dXJlcyhj
b25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qIGZyYW1lLCBHQzNEZW51bQogICAgIHJldHVybiB0cnVl
OwogfQogCit2b2lkIENDVmlkZW9MYXllckltcGw6OmRpZFJlY2VpdmVGcmFtZSgpCit7CisgICAg
c2V0TmVlZHNSZWRyYXcoKTsKK30KKwordm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpkaWRVcGRhdGVN
YXRyaXgoY29uc3QgZmxvYXQgbWF0cml4WzE2XSkKK3sKKyAgICBtZW1jcHkobV9zdHJlYW1UZXh0
dXJlTWF0cml4LCBtYXRyaXgsIHNpemVvZihtX3N0cmVhbVRleHR1cmVNYXRyaXgpKTsKKyAgICBz
ZXROZWVkc1JlZHJhdygpOworfQorCit2b2lkIENDVmlkZW9MYXllckltcGw6OnNldE5lZWRzUmVk
cmF3KCkKK3sKKyAgICBpZiAobV9sYXllclRyZWVIb3N0SW1wbCkKKyAgICAgICAgbV9sYXllclRy
ZWVIb3N0SW1wbC0+c2V0TmVlZHNSZWRyYXcoKTsKK30KKwogdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdAog
ewogICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1w
bC5oCmluZGV4IDM5ZmMyZjZjMDgzZGFkZmNlM2NlM2U3YWFhZjBhMjJiYTlhYzI4OGMuLjc1M2U0
N2RlY2U1MWYxNTZiYTU1NGVhY2JmOGY1NmZlOTM5YzVkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVv
TGF5ZXJJbXBsLmgKQEAgLTM1LDYgKzM1LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOworY2xhc3MgQ0NWaWRlb0xheWVySW1wbDsKKwogdGVt
cGxhdGU8Y2xhc3MgVmVydGV4U2hhZGVyLCBjbGFzcyBGcmFnbWVudFNoYWRlcj4gY2xhc3MgUHJv
Z3JhbUJpbmRpbmc7CiAKIGNsYXNzIENDVmlkZW9MYXllckltcGwgOiBwdWJsaWMgQ0NMYXllcklt
cGwKQEAgLTUzLDYgKzU2LDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8
VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtLCBGcmFnbWVudFNoYWRlclJHQkFUZXhGbGlwQWxw
aGE+IFJHQkFQcm9ncmFtOwogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVy
UG9zVGV4WVVWU3RyZXRjaCwgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbz4gWVVWUHJvZ3JhbTsKICAg
ICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSwgRnJh
Z21lbnRTaGFkZXJSR0JBVGV4RmxpcEFscGhhPiBOYXRpdmVUZXh0dXJlUHJvZ3JhbTsKKyAgICB0
eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtLCBGcmFnbWVu
dFNoYWRlck9FU0ltYWdlRXh0ZXJuYWw+IFN0cmVhbVRleHR1cmVQcm9ncmFtOwogCiAgICAgdmly
dHVhbCB2b2lkIGR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNv
bnN0OwogCkBAIC02MSw5ICs2NSwxNCBAQCBwdWJsaWM6CiAKICAgICAvLyBWaWRlb0ZyYW1lUHJv
dmlkZXI6OkNsaWVudCBpbXBsZW1lbnRhdGlvbiAoY2FsbGFibGUgb24gYW55IHRocmVhZCkuCiAg
ICAgdmlydHVhbCB2b2lkIHN0b3BVc2luZ1Byb3ZpZGVyKCk7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVGcmFtZSgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVNYXRyaXgoY29uc3Qg
ZmxvYXQqKTsKKworICAgIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKIAogICAgIHN0YXRpYyBjb25z
dCBmbG9hdCB5dXYyUkdCWzldOwogICAgIHN0YXRpYyBjb25zdCBmbG9hdCB5dXZBZGp1c3RbM107
CisgICAgc3RhdGljIGNvbnN0IGZsb2F0IGZsaXBUcmFuc2Zvcm1bMTZdOwogCiAgICAgc3RydWN0
IFRleHR1cmUgewogICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKQEAg
LTg0LDYgKzkzLDkgQEAgcHJpdmF0ZToKIAogICAgIFRleHR1cmUgbV90ZXh0dXJlc1tNYXhQbGFu
ZXNdOwogCisgICAgZmxvYXQgbV9zdHJlYW1UZXh0dXJlTWF0cml4WzE2XTsKKyAgICBDQ0xheWVy
VHJlZUhvc3RJbXBsKiBtX2xheWVyVHJlZUhvc3RJbXBsOworCiAgICAgVmlkZW9GcmFtZUNocm9t
aXVtKiBtX2ZyYW1lOwogICAgIEdDM0RlbnVtIG1fZm9ybWF0OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cAppbmRleCBhNDFjNmQwNzM4NjMxMDUyOGQ5MzUxOWI4NDg2OGVjNTNiYTdkOGI2
Li4yNTU3MTUzMTFkNTBlNzYzZjE3ZWEzMTdjMTQ5MzA1YzgzNmM4YjFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCkBAIC0yNTYsNiArMjU2LDcgQEAKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlN0b3JhZ2VOYW1lc3BhY2UuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJT
dG9yYWdlUXVvdGFDYWxsYmFja3MuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTdG9y
YWdlUXVvdGFUeXBlLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RyZWFtVGV4dHVy
ZUNsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRBZmZpbml0eS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uLmgnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgKaW5kZXggOWFhZjFh
M2QwOTVkY2IwOThmODNkY2IyNDgyNGVhMzY2NjI2NWJhMy4uMjM5MTM0OTYzOGNiYTRmMjlhMTUx
M2ZlNTk4NmM4MjVhNzg1N2EyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJNZWRpYVBsYXllci5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
Y2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRlcjsKIGNsYXNzIFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXJDbGllbnQ7CiBjbGFzcyBXZWJNZWRpYVBsYXllckNsaWVudDsKK2NsYXNzIFdlYlN0cmVhbVRl
eHR1cmVDbGllbnQ7CiBjbGFzcyBXZWJVUkw7CiBzdHJ1Y3QgV2ViUmVjdDsKIHN0cnVjdCBXZWJT
aXplOwpAQCAtMTYyLDYgKzE2Myw4IEBAIHB1YmxpYzoKICAgICAvLyBtZXRob2Qgc2hvdWxkIG5v
IGxvbmdlciBiZSByZWZlcmVuY2VkIGFmdGVyIHRoZSBjYWxsIGlzIG1hZGUuCiAgICAgdmlydHVh
bCB2b2lkIHB1dEN1cnJlbnRGcmFtZShXZWJWaWRlb0ZyYW1lKikgeyB9CiAKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0U3RyZWFtVGV4dHVyZUNsaWVudChXZWJTdHJlYW1UZXh0dXJlQ2xpZW50KikgeyB9
CisKICAgICB2aXJ0dWFsIFdlYkF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlk
ZXIoKSB7IHJldHVybiAwOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc291cmNlQXBwZW5kKGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZmFsc2U7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0cmVhbVRleHR1
cmVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0cmVhbVRleHR1
cmVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTAwMmZiMjZhZDc5M2RhNmQ2YTQ2ODg2MGMwZjBhZGVl
NzM0ZTZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU3RyZWFtVGV4dHVyZUNsaWVudC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmln
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
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlN0cmVh
bVRleHR1cmVDbGllbnRfaAorI2RlZmluZSBXZWJTdHJlYW1UZXh0dXJlQ2xpZW50X2gKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlN0cmVhbVRleHR1cmVDbGllbnQgeworcHVibGlj
OgorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJhbWUoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRpZFVwZGF0ZU1hdHJpeChjb25zdCBmbG9hdCopID0gMDsKKworcHJvdGVjdGVkOgorICAg
IHZpcnR1YWwgfldlYlN0cmVhbVRleHR1cmVDbGllbnQoKSB7IH0KK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlZpZGVvRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlZpZGVvRnJhbWUuaAppbmRleCA4ZTNiMmNkYmQyYmQxYjk2ZGVjN2Q3OTJiOGI4YzJhOWNmNjY1
NGIxLi42NGRhZTk4NzM3N2IzZmI0NjhiM2Q3YWM0YjNjZjRkYTk1NGJmMTQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0ZyYW1lLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZS5oCkBAIC01MSw2ICs1MSw3
IEBAIHB1YmxpYzoKICAgICAgICAgRm9ybWF0QVNDSUksCiAgICAgICAgIEZvcm1hdEk0MjAsCiAg
ICAgICAgIEZvcm1hdE5hdGl2ZVRleHR1cmUsCisgICAgICAgIEZvcm1hdEV4dGVybmFsVGV4dHVy
ZSwKICAgICB9OwogCiAgICAgdmlydHVhbCB+V2ViVmlkZW9GcmFtZSgpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5j
cHAKaW5kZXggOTk2ZTcwNzEwMGFhOTFiOTY2NTM1ZGMwOGM5M2MxOTU1MDNmMzk1OS4uOGQ4YTQx
YzZlNGJhY2Q4MzRmNmNlN2JiNzZlZDYxZTNhOGNiNmUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCkBAIC0x
MDUsNiArMTA1LDcgQEAgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjp+V2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsKCkKICAgICBNdXRleExvY2tlciBsb2NrZXIobV9jb21wb3NpdGluZ011dGV4KTsK
ICAgICBpZiAobV92aWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQpCiAgICAgICAgIG1fdmlkZW9GcmFt
ZVByb3ZpZGVyQ2xpZW50LT5zdG9wVXNpbmdQcm92aWRlcigpOworICAgIG1fd2ViTWVkaWFQbGF5
ZXItPnNldFN0cmVhbVRleHR1cmVDbGllbnQoMCk7CiAjZW5kaWYKIH0KIApAQCAtNTk3LDYgKzU5
OCw3IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzZXRWaWRlb0ZyYW1lUHJvdmlk
ZXJDbGllbnQoVmlkZW9GcmFtZVByb3ZpZGVyOjpDCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fY29tcG9zaXRpbmdNdXRleCk7CiAgICAgbV92aWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQgPSBj
bGllbnQ7CisgICAgbV93ZWJNZWRpYVBsYXllci0+c2V0U3RyZWFtVGV4dHVyZUNsaWVudChjbGll
bnQgPyB0aGlzIDogMCk7CiB9CiAKIFZpZGVvRnJhbWVDaHJvbWl1bSogV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsOjpnZXRDdXJyZW50RnJhbWUoKQpAQCAtNjc5LDYgKzY4MSwxOCBAQCB2b2lkIFdl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c3RhcnREZWxheWVkTG9hZCgpCiAgICAgbG9hZEludGVy
bmFsKCk7CiB9CiAKK3ZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpkaWRSZWNlaXZlRnJh
bWUoKQoreworICAgIC8vIE5vIGxvY2sgc2luY2UgdGhpcyBnZXRzIGNhbGxlZCBvbiB0aGUgY2xp
ZW50J3MgdGhyZWFkLgorICAgIG1fdmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50LT5kaWRSZWNlaXZl
RnJhbWUoKTsKK30KKwordm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmRpZFVwZGF0ZU1h
dHJpeChjb25zdCBmbG9hdCogbWF0cml4KQoreworICAgIC8vIE5vIGxvY2sgc2luY2UgdGhpcyBn
ZXRzIGNhbGxlZCBvbiB0aGUgY2xpZW50J3MgdGhyZWFkLgorICAgIG1fdmlkZW9GcmFtZVByb3Zp
ZGVyQ2xpZW50LT5kaWRVcGRhdGVNYXRyaXgobWF0cml4KTsKK30KKwogV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsOjpXZWJNZWRpYVBsYXllckNsaWVudEltcGwoKQogICAgIDogbV9tZWRpYVBsYXll
cigwKQogICAgICwgbV9kZWxheWluZ0xvYWQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCmluZGV4IGU3NWU3M2Fl
MTM1NWM2ZWE0NzcxZDA0N2FmODU2ODhkNTU3NGU3OGEuLmQ4NWUwZDFmYzU5ZmFhYjRmNTgwNmM1
MjE3ZGZlZTczZTY1N2FmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCkBAIC00MCw3ICs0MCw5IEBACiAjaW5jbHVk
ZSAiVmlkZW9MYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiV2ViQXVkaW9Tb3VyY2VQcm92aWRl
ckNsaWVudC5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyQ2xpZW50LmgiCisjaW5jbHVkZSAi
V2ViU3RyZWFtVGV4dHVyZUNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEF1ZGlv
U291cmNlUHJvdmlkZXJDbGllbnQ7IH0KIApAQCAtNTYsNyArNTgsOCBAQCBjbGFzcyBXZWJNZWRp
YVBsYXllckNsaWVudEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50
ZXJmYWNlCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICwgcHVibGljIFdlYkNvcmU6OlZpZGVvRnJhbWVQcm92aWRlcgogI2Vu
ZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgV2ViTWVkaWFQbGF5
ZXJDbGllbnQgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIFdlYk1l
ZGlhUGxheWVyQ2xpZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMg
V2ViU3RyZWFtVGV4dHVyZUNsaWVudCB7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0Vu
YWJsZWQoKTsKQEAgLTE1MCw2ICsxNTMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
b3VyY2VFbmRPZlN0cmVhbShXZWJDb3JlOjpNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXMp
OwogI2VuZGlmCiAKKyAgICAvLyBXZWJTdHJlYW1UZXh0dXJlQ2xpZW50IG1ldGhvZHM6CisgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVGcmFtZSgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRh
dGVNYXRyaXgoY29uc3QgZmxvYXQqKTsKKwogcHJpdmF0ZToKICAgICBXZWJNZWRpYVBsYXllckNs
aWVudEltcGwoKTsKICAgICB2b2lkIHN0YXJ0RGVsYXllZExvYWQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128093</attachid>
            <date>2012-02-21 17:29:47 -0800</date>
            <delta_ts>2012-02-21 19:48:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78398-20120221172946.patch</filename>
            <type>text/plain</type>
            <size>32094</size>
            <attacher name="Daniel Sievers">sievers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzBkNzc3YTI1ZTFhNTll
NWJjNTc0ZmFjODliOTczOWE4MmRjMmQ1Ny4uOTE5MGUwZGQxYTZlMzJhYTljNDQ5M2QyMTUzZjY1
NjNiNWJiNGExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTAyLTIxICBEYW5p
ZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
QWRkIHZpZGVvIHN0cmVhbSB0ZXh0dXJlIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4Mzk4CisKKyAgICAgICAgVGhpcyB1cHN0cmVhbXMg
dGhlIGFic3RyYWN0aW9uIHVzZWQgb24gQW5kcm9pZCBmb3IKKyAgICAgICAgaGFyZHdhcmUgdmlk
ZW8gZGVjb2Rpbmcgd2l0aCB0aGUgY29tcG9zaXRvci4KKworICAgICAgICBNb3N0IG9mIHRoZSBp
bnRlcmZhY2VzIGFyZSBrZXB0IGdlbmVyaWMgYW5kIHRoZSBjb3JlCisgICAgICAgIG9mIHRoaXMg
Y2hhbmdlIGlzIHRvIGFsbG93IHRleHR1cmluZyBmcm9tIGFuIGV4dGVybmFsCisgICAgICAgIHRl
eHR1cmUgd2hpbGUgcmVjZWl2aW5nIG5vdGlmaWNhdGlvbnMgKG9uIHRoZSBjb21wb3NpdG9yCisg
ICAgICAgIHRocmVhZCBpZiB3ZSBhcmUgcnVubmluZyBpdCkgd2hlbiB0aGVyZSBhcmUgbmV3IGZy
YW1lcyB0bworICAgICAgICBiZSBkaXNwbGF5ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRl
bnNpb25zM0RDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdTaW5nbGVUZXh0dXJlVmlkZW9RdWFkKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JHQkEpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TmF0aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1N0cmVh
bVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
VmlkZW9RdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c3Ry
ZWFtVGV4dHVyZUxheWVyUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyUmVu
ZGVyZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hh
ZGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFu
c2Zvcm06OlZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OmluaXQpOgorICAg
ICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OmdldFNoYWRlclN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlck9FU0ltYWdlRXh0ZXJuYWw6Omlu
aXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJPRVNJbWFnZUV4dGVybmFsOjpn
ZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1No
YWRlckNocm9taXVtLmg6CisgICAgICAgIChWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6bWF0cml4TG9jYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OnRleFRy
YW5zZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclZpZGVvVHJh
bnNmb3JtOjp0ZXhNYXRyaXhMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KEZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmg6CisgICAgICAgIChDbGllbnQp
OgorICAgICAgICAoVmlkZW9GcmFtZVByb3ZpZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NWaWRlb0RyYXdRdWFkOjpDQ1ZpZGVvRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6
Q0NWaWRlb0RyYXdRdWFkOjptYXRyaXgpOgorICAgICAgICAoQ0NWaWRlb0RyYXdRdWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVmlkZW9EcmF3UXVhZDo6c2V0TWF0cml4KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6Q0NWaWRl
b0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VkZDRm9ybWF0VG9HQzNERm9y
bWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmRpZFJlY2VpdmVGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpkaWRVcGRhdGVNYXRyaXgpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6c2V0TmVlZHNSZWRyYXcpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NWaWRlb0xheWVySW1wbCk6CisKIDIwMTItMDIt
MjEgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBbU3VnZ2VzdEJveF0gdGV4dFByb21wdC5jc3MgZGlzYWJsZW1lbnQgZGlz
cGxheXMgZ2FyYmxlZCBzdWdnZXN0IGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4
ZTI5ODZhY2UwYTc1YjMwZTU3NTdmYTczNDQ2MGM2ZGZkZDllMTkyLi4zZTQ2OTZjYTViMDUyZTNl
MThjN2Y0MjZjMjM3YmZhOTAzMjUwMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM4IEBACisyMDEyLTAyLTIxICBEYW5pZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkIHZpZGVvIHN0cmVhbSB0ZXh0dXJlIHN1
cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4
Mzk4CisKKyAgICAgICAgVGhpcyB1cHN0cmVhbXMgdGhlIGFic3RyYWN0aW9uIHVzZWQgb24gQW5k
cm9pZCBmb3IKKyAgICAgICAgaGFyZHdhcmUgdmlkZW8gZGVjb2Rpbmcgd2l0aCB0aGUgY29tcG9z
aXRvci4KKworICAgICAgICBNb3N0IG9mIHRoZSBpbnRlcmZhY2VzIGFyZSBrZXB0IGdlbmVyaWMg
YW5kIHRoZSBjb3JlCisgICAgICAgIG9mIHRoaXMgY2hhbmdlIGlzIHRvIGFsbG93IHRleHR1cmlu
ZyBmcm9tIGFuIGV4dGVybmFsCisgICAgICAgIHRleHR1cmUgd2hpbGUgcmVjZWl2aW5nIG5vdGlm
aWNhdGlvbnMgKG9uIHRoZSBjb21wb3NpdG9yCisgICAgICAgIHRocmVhZCBpZiB3ZSBhcmUgcnVu
bmluZyBpdCkgd2hlbiB0aGVyZSBhcmUgbmV3IGZyYW1lcyB0bworICAgICAgICBiZSBkaXNwbGF5
ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJNZWRpYVBsYXllci5oOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXI6OnNldFN0cmVhbVRleHR1
cmVDbGllbnQpOgorICAgICAgICAoV2ViTWVkaWFQbGF5ZXIpOgorICAgICAgICAqIHB1YmxpYy9X
ZWJTdHJlYW1UZXh0dXJlQ2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlZpZGVvRnJhbWUuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJTdHJlYW1UZXh0dXJlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RyZWFtVGV4dHVy
ZUNsaWVudDo6fldlYlN0cmVhbVRleHR1cmVDbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9XZWJW
aWRlb0ZyYW1lLmg6CisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6fldlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1w
bDo6c2V0VmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjpkaWRSZWNlaXZlRnJhbWUpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpkaWRVcGRhdGVNYXRy
aXgpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoKKyAgICAgICAg
KFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCk6CisKIDIwMTItMDItMjEgIFl1cnkgU2VtaWtoYXRz
a3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBXZWIgSW5zcGVjdG9yOiBz
ZXQgYnJlYWtwb2ludC9wYXVzZSBkb2Vzbid0IHdvcmsgd2hlbiB3b3JrZXIgaXMgaW4gYSB0aWdo
dCBsb29wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaAppbmRleCA1MDlkYjMzZTg1M2Ew
MzgxYzJlZmU1YjQ3NzczODQwMGExMmVjY2U1Li41MzMyMmYwZjI1ZWQ0MDdhMjVlNmI2MjMyN2U4
NzEyODlkMThiZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgKQEAgLTYzLDYg
KzYzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRShQbGF0Zm9ybTNET2JqZWN0KTsKIAogICAgIGVudW0geworICAgICAgICAvLyBH
TF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsCisgICAgICAgIEdMX1RFWFRVUkVfRVhURVJOQUxfT0VT
ID0gMHg4RDY1LAorCiAgICAgICAgIC8vIEdMX0NIUk9NSVVNX21hcF9zdWIgKGVudW1zIGluaGVy
aXRlZCBmcm9tIEdMX0FSQl92ZXJ0ZXhfYnVmZmVyX29iamVjdCkKICAgICAgICAgUkVBRF9PTkxZ
ID0gMHg4OEI4LAogICAgICAgICBXUklURV9PTkxZID0gMHg4OEI5LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggYTUyNjY5ZThkNDI1MzVmNDQ3ZDZiODQyYzNjMThl
ODAyNTFmZjAwNS4uM2Y0MDQ2MWVjMzRjMmMyZDkzMTNlNTY4YzlkY2Y0NjY2ZjMxMzBmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC03MzYsMTIgKzczNiwxMiBA
QCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1lVVihjb25zdCBDQ1ZpZGVvRHJhd1F1
YWQqIHF1YWQpCiB9CiAKIHRlbXBsYXRlPGNsYXNzIFByb2dyYW0+Ci12b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd1NpbmdsZVRleHR1cmVWaWRlb1F1YWQoY29uc3QgQ0NWaWRlb0RyYXdR
dWFkKiBxdWFkLCBQcm9ncmFtKiBwcm9ncmFtLCBmbG9hdCB3aWR0aFNjYWxlRmFjdG9yLCBQbGF0
Zm9ybTNET2JqZWN0IHRleHR1cmVJZCkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
U2luZ2xlVGV4dHVyZVZpZGVvUXVhZChjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqIHF1YWQsIFByb2dy
YW0qIHByb2dyYW0sIGZsb2F0IHdpZHRoU2NhbGVGYWN0b3IsIFBsYXRmb3JtM0RPYmplY3QgdGV4
dHVyZUlkLCBHQzNEZW51bSB0YXJnZXQpCiB7CiAgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3Jh
bS0+aW5pdGlhbGl6ZWQoKSk7CiAKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2
ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgR0xDKGNvbnRleHQo
KSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
dGV4dHVyZUlkKSk7CisgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZSh0
YXJnZXQsIHRleHR1cmVJZCkpOwogCiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQ
cm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQo
KS0+dW5pZm9ybTRmKHByb2dyYW0tPnZlcnRleFNoYWRlcigpLnRleFRyYW5zZm9ybUxvY2F0aW9u
KCksIDAsIDAsIHdpZHRoU2NhbGVGYWN0b3IsIDEpKTsKQEAgLTc1OSwxMyArNzU5LDI1IEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UkdCQShjb25zdCBDQ1ZpZGVvRHJhd1F1YWQq
IHF1YWQpCiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6UkdCQVByb2dyYW0qIHByb2dyYW0g
PSB2aWRlb0xheWVyUkdCQVByb2dyYW0oKTsKICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpU
ZXh0dXJlJiB0ZXh0dXJlID0gcXVhZC0+dGV4dHVyZXMoKVtWaWRlb0ZyYW1lQ2hyb21pdW06OnJn
YlBsYW5lXTsKICAgICBmbG9hdCB3aWR0aFNjYWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHRleHR1cmUubV92aXNpYmxlU2l6ZS53aWR0aCgpKSAvIHRleHR1cmUubV90ZXh0dXJlLT5zaXpl
KCkud2lkdGgoKTsKLSAgICBkcmF3U2luZ2xlVGV4dHVyZVZpZGVvUXVhZChxdWFkLCBwcm9ncmFt
LCB3aWR0aFNjYWxlRmFjdG9yLCB0ZXh0dXJlLm1fdGV4dHVyZS0+dGV4dHVyZUlkKCkpOworICAg
IGRyYXdTaW5nbGVUZXh0dXJlVmlkZW9RdWFkKHF1YWQsIHByb2dyYW0sIHdpZHRoU2NhbGVGYWN0
b3IsIHRleHR1cmUubV90ZXh0dXJlLT50ZXh0dXJlSWQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd05hdGl2ZVRl
eHR1cmUoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKiBxdWFkKQogewogICAgIGNvbnN0IENDVmlkZW9M
YXllckltcGw6Ok5hdGl2ZVRleHR1cmVQcm9ncmFtKiBwcm9ncmFtID0gdmlkZW9MYXllck5hdGl2
ZVRleHR1cmVQcm9ncmFtKCk7Ci0gICAgZHJhd1NpbmdsZVRleHR1cmVWaWRlb1F1YWQocXVhZCwg
cHJvZ3JhbSwgMSwgcXVhZC0+ZnJhbWUoKS0+dGV4dHVyZUlkKCkpOworICAgIGRyYXdTaW5nbGVU
ZXh0dXJlVmlkZW9RdWFkKHF1YWQsIHByb2dyYW0sIDEsIHF1YWQtPmZyYW1lKCktPnRleHR1cmVJ
ZCgpLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCk7Cit9CisKK3ZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkcmF3U3RyZWFtVGV4dHVyZShjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqIHF1
YWQpCit7CisgICAgQVNTRVJUKGNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygi
R0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpICYmIGNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygp
LT5pc0VuYWJsZWQoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSk7CisKKyAgICBjb25zdCBD
Q1ZpZGVvTGF5ZXJJbXBsOjpTdHJlYW1UZXh0dXJlUHJvZ3JhbSogcHJvZ3JhbSA9IHN0cmVhbVRl
eHR1cmVMYXllclByb2dyYW0oKTsKKyAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVzZVBy
b2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CisgICAgQVNTRVJUKHF1YWQtPm1hdHJpeCgpKTsK
KyAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm1NYXRyaXg0ZnYocHJvZ3JhbS0+
dmVydGV4U2hhZGVyKCkudGV4TWF0cml4TG9jYXRpb24oKSwgZmFsc2UsIGNvbnN0X2Nhc3Q8Zmxv
YXQqPihxdWFkLT5tYXRyaXgoKSksIDEpKTsKKworICAgIGRyYXdTaW5nbGVUZXh0dXJlVmlkZW9R
dWFkKHF1YWQsIHByb2dyYW0sIDEsIHF1YWQtPmZyYW1lKCktPnRleHR1cmVJZCgpLCBFeHRlbnNp
b25zM0RDaHJvbWl1bTo6R0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMpOwogfQogCiBib29sIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6Y29weUZyYW1lVG9UZXh0dXJlcyhjb25zdCBDQ1ZpZGVvRHJhd1F1
YWQqIHF1YWQpCkBAIC04MjQsNiArODM2LDkgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdWaWRlb1F1YWQoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKiBxdWFkKQogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQ6CiAgICAgICAgIGRyYXdOYXRpdmVUZXh0dXJlKHF1
YWQpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRENocm9taXVtOjpHTF9U
RVhUVVJFX0VYVEVSTkFMX09FUzoKKyAgICAgICAgZHJhd1N0cmVhbVRleHR1cmUocXVhZCk7Cisg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7IC8vIFNvbWVvbmUg
dXBkYXRlZCBjb252ZXJ0VkZDRm9ybWF0VG9HQzNERm9ybWF0IGFib3ZlIGJ1dCB1cGRhdGUgdGhp
cyEKICAgICB9CkBAIC0xMzg0LDYgKzEzOTksMTYgQEAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6
TmF0aXZlVGV4dHVyZVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9MYXllck4K
ICAgICByZXR1cm4gbV92aWRlb0xheWVyTmF0aXZlVGV4dHVyZVByb2dyYW0uZ2V0KCk7CiB9CiAK
K2NvbnN0IENDVmlkZW9MYXllckltcGw6OlN0cmVhbVRleHR1cmVQcm9ncmFtKiBMYXllclJlbmRl
cmVyQ2hyb21pdW06OnN0cmVhbVRleHR1cmVMYXllclByb2dyYW0oKQoreworICAgIGlmICghbV9z
dHJlYW1UZXh0dXJlTGF5ZXJQcm9ncmFtKQorICAgICAgICBtX3N0cmVhbVRleHR1cmVMYXllclBy
b2dyYW0gPSBhZG9wdFB0cihuZXcgQ0NWaWRlb0xheWVySW1wbDo6U3RyZWFtVGV4dHVyZVByb2dy
YW0obV9jb250ZXh0LmdldCgpKSk7CisgICAgaWYgKCFtX3N0cmVhbVRleHR1cmVMYXllclByb2dy
YW0tPmluaXRpYWxpemVkKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6c3RyZWFtVGV4dHVyZUxheWVyUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDAp
OworICAgICAgICBtX3N0cmVhbVRleHR1cmVMYXllclByb2dyYW0tPmluaXRpYWxpemUobV9jb250
ZXh0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIG1fc3RyZWFtVGV4dHVyZUxheWVyUHJvZ3Jh
bS5nZXQoKTsKK30KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRP
YmplY3RzKCkKIHsKQEAgLTE0MjUsNiArMTQ1MCw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cygpCiAgICAgICAgIG1fdmlkZW9MYXllclJHQkFQcm9n
cmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1fdmlkZW9MYXllcllVVlBy
b2dyYW0pCiAgICAgICAgIG1fdmlkZW9MYXllcllVVlByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0
LmdldCgpKTsKKyAgICBpZiAobV9zdHJlYW1UZXh0dXJlTGF5ZXJQcm9ncmFtKQorICAgICAgICBt
X3N0cmVhbVRleHR1cmVMYXllclByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKIAog
ICAgIG1fYm9yZGVyUHJvZ3JhbS5jbGVhcigpOwogICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFt
LmNsZWFyKCk7CkBAIC0xNDQzLDYgKzE0NzAsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMoKQogICAgIG1fcmVuZGVyU3VyZmFjZVByb2dyYW1BQS5j
bGVhcigpOwogICAgIG1fdmlkZW9MYXllclJHQkFQcm9ncmFtLmNsZWFyKCk7CiAgICAgbV92aWRl
b0xheWVyWVVWUHJvZ3JhbS5jbGVhcigpOworICAgIG1fc3RyZWFtVGV4dHVyZUxheWVyUHJvZ3Jh
bS5jbGVhcigpOwogICAgIGlmIChtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpCiAgICAgICAgIEdM
QyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9vZmZzY3Jl
ZW5GcmFtZWJ1ZmZlcklkKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5k
ZXggOGM0YjZlOWZlOTJhNmZmOGFhZTg1OTVkNDM5MDNiOTg5MDViZTQ5My4uNWE5NGE5MDE3YTY4
MmRmMGQ2ODg4YWVhYjg4ODJkNDQ4YjZiMzFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmgKQEAgLTEzMCw2ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgQ0NWaWRlb0xh
eWVySW1wbDo6UkdCQVByb2dyYW0qIHZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSgpOwogICAgIGNvbnN0
IENDVmlkZW9MYXllckltcGw6OllVVlByb2dyYW0qIHZpZGVvTGF5ZXJZVVZQcm9ncmFtKCk7CiAg
ICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6TmF0aXZlVGV4dHVyZVByb2dyYW0qIHZpZGVvTGF5
ZXJOYXRpdmVUZXh0dXJlUHJvZ3JhbSgpOworICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OlN0
cmVhbVRleHR1cmVQcm9ncmFtKiBzdHJlYW1UZXh0dXJlTGF5ZXJQcm9ncmFtKCk7CiAKICAgICB2
b2lkIGdldEZyYW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYpOwog
CkBAIC0xNzAsOCArMTcxLDkgQEAgcHJpdmF0ZToKICAgICBNYW5hZ2VkVGV4dHVyZSogZ2V0T2Zm
c2NyZWVuTGF5ZXJUZXh0dXJlKCk7CiAgICAgdm9pZCBjb3B5UGxhbmVUb1RleHR1cmUoY29uc3Qg
Q0NWaWRlb0RyYXdRdWFkKiwgY29uc3Qgdm9pZCogcGxhbmUsIGludCBpbmRleCk7CiAgICAgYm9v
bCBjb3B5RnJhbWVUb1RleHR1cmVzKGNvbnN0IENDVmlkZW9EcmF3UXVhZCopOwotICAgIHRlbXBs
YXRlPGNsYXNzIFByb2dyYW0+IHZvaWQgZHJhd1NpbmdsZVRleHR1cmVWaWRlb1F1YWQoY29uc3Qg
Q0NWaWRlb0RyYXdRdWFkKiwgUHJvZ3JhbSosIGZsb2F0IHdpZHRoU2NhbGVGYWN0b3IsIFBsYXRm
b3JtM0RPYmplY3QgdGV4dHVyZUlkKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBQcm9ncmFtPiB2b2lk
IGRyYXdTaW5nbGVUZXh0dXJlVmlkZW9RdWFkKGNvbnN0IENDVmlkZW9EcmF3UXVhZCosIFByb2dy
YW0qLCBmbG9hdCB3aWR0aFNjYWxlRmFjdG9yLCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwg
R0MzRGVudW0gdGFyZ2V0KTsKICAgICB2b2lkIGRyYXdOYXRpdmVUZXh0dXJlKGNvbnN0IENDVmlk
ZW9EcmF3UXVhZCopOworICAgIHZvaWQgZHJhd1N0cmVhbVRleHR1cmUoY29uc3QgQ0NWaWRlb0Ry
YXdRdWFkKik7CiAgICAgdm9pZCBkcmF3UkdCQShjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqKTsKICAg
ICB2b2lkIGRyYXdZVVYoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKik7CiAKQEAgLTIzMyw2ICsyMzUs
NyBAQCBwcml2YXRlOgogICAgIE93blB0cjxDQ1ZpZGVvTGF5ZXJJbXBsOjpSR0JBUHJvZ3JhbT4g
bV92aWRlb0xheWVyUkdCQVByb2dyYW07CiAgICAgT3duUHRyPENDVmlkZW9MYXllckltcGw6OllV
VlByb2dyYW0+IG1fdmlkZW9MYXllcllVVlByb2dyYW07CiAgICAgT3duUHRyPENDVmlkZW9MYXll
ckltcGw6Ok5hdGl2ZVRleHR1cmVQcm9ncmFtPiBtX3ZpZGVvTGF5ZXJOYXRpdmVUZXh0dXJlUHJv
Z3JhbTsKKyAgICBPd25QdHI8Q0NWaWRlb0xheWVySW1wbDo6U3RyZWFtVGV4dHVyZVByb2dyYW0+
IG1fc3RyZWFtVGV4dHVyZUxheWVyUHJvZ3JhbTsKIAogICAgIE93blB0cjxUZXh0dXJlTWFuYWdl
cj4gbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXI7CiAgICAgT3duUHRyPFRyYWNraW5nVGV4
dHVyZUFsbG9jYXRvcj4gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJv
bWl1bS5jcHAKaW5kZXggZjY5YjZiMThhYTc5YmU5NzU4OGFhYWJhZDg5MzM0Y2QzMjIyZjY2NC4u
NzFkNGQxZmQxOGQ5ODYyMWQyY2M0YjQ5YWY5ZGFlY2Q2MTVlYzc4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNo
cm9taXVtLmNwcApAQCAtMjU1LDYgKzI1NSwzOSBAQCBTdHJpbmcgVmVydGV4U2hhZGVyVGlsZTo6
Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKICAgICApOwogfQogCitWZXJ0ZXhTaGFkZXJWaWRlb1Ry
YW5zZm9ybTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm0oKQorICAgIDogbV9tYXRyaXhMb2Nh
dGlvbigtMSkKKyAgICAsIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24oLTEpCisgICAgLCBtX3RleE1h
dHJpeExvY2F0aW9uKC0xKQoreworfQorCitib29sIFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3Jt
Ojppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQorewor
ICAgIG1fbWF0cml4TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3Jh
bSwgIm1hdHJpeCIpOworICAgIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250ZXh0LT5nZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleFRyYW5zZm9ybSIpOworICAgIG1fdGV4TWF0cml4
TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleE1hdHJp
eCIpOworICAgIHJldHVybiBtX21hdHJpeExvY2F0aW9uICE9IC0xICYmIG1fdGV4VHJhbnNmb3Jt
TG9jYXRpb24gIT0gLTEgJiYgbV90ZXhNYXRyaXhMb2NhdGlvbiAhPSAtMTsKK30KKworU3RyaW5n
IFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAorewor
ICAgIHJldHVybiBTSEFERVIoCisgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247Cisg
ICAgICAgIGF0dHJpYnV0ZSB2ZWMyIGFfdGV4Q29vcmQ7CisgICAgICAgIHVuaWZvcm0gbWF0NCBt
YXRyaXg7CisgICAgICAgIHVuaWZvcm0gdmVjNCB0ZXhUcmFuc2Zvcm07CisgICAgICAgIHVuaWZv
cm0gbWF0NCB0ZXhNYXRyaXg7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOworICAg
ICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IG1h
dHJpeCAqIGFfcG9zaXRpb247CisgICAgICAgICAgICB2ZWMyIHRleENvb3JkID0gdmVjMih0ZXhN
YXRyaXggKiB2ZWM0KGFfdGV4Q29vcmQueCwgMS4wIC0gYV90ZXhDb29yZC55LCAwLjAsIDEuMCkp
OworICAgICAgICAgICAgdl90ZXhDb29yZCA9IHRleENvb3JkICogdGV4VHJhbnNmb3JtLnp3ICsg
dGV4VHJhbnNmb3JtLnh5OworICAgICAgICB9CisgICAgKTsKK30KKwogRnJhZ21lbnRUZXhBbHBo
YUJpbmRpbmc6OkZyYWdtZW50VGV4QWxwaGFCaW5kaW5nKCkKICAgICA6IG1fc2FtcGxlckxvY2F0
aW9uKC0xKQogICAgICwgbV9hbHBoYUxvY2F0aW9uKC0xKQpAQCAtMjk2LDYgKzMyOSwyNyBAQCBT
dHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4RmxpcEFscGhhOjpnZXRTaGFkZXJTdHJpbmcoKSBj
b25zdAogICAgICk7CiB9CiAKK2Jvb2wgRnJhZ21lbnRTaGFkZXJPRVNJbWFnZUV4dGVybmFsOjpp
bml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQoreworICAg
IG1fc2FtcGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0s
ICJzX3RleHR1cmUiKTsKKworICAgIHJldHVybiBtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMTsKK30K
KworU3RyaW5nIEZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbDo6Z2V0U2hhZGVyU3RyaW5n
KCkgY29uc3QKK3sKKyAgICAvLyBDYW5ub3QgdXNlIHRoZSBTSEFERVIoKSBtYWNybyBiZWNhdXNl
IG9mIHRoZSAnIycgY2hhcgorICAgIHJldHVybiAiI2V4dGVuc2lvbiBHTF9PRVNfRUdMX2ltYWdl
X2V4dGVybmFsIDogcmVxdWlyZSBcbiIKKyAgICAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgorICAgICAgICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7XG4iCisgICAgICAg
ICAgICJ1bmlmb3JtIHNhbXBsZXJFeHRlcm5hbE9FUyBzX3RleHR1cmU7XG4iCisgICAgICAgICAg
ICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAgICAie1xuIgorICAgICAgICAgICAiICAgIHZlYzQg
dGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKTtcbiIKKyAgICAgICAg
ICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRleENvbG9yLngsIHRleENvbG9yLnksIHRleENv
bG9yLnosIHRleENvbG9yLncpO1xuIgorICAgICAgICAgICAifVxuIjsKK30KKwogU3RyaW5nIEZy
YWdtZW50U2hhZGVyUkdCQVRleEFscGhhOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAogewogICAg
IHJldHVybiBTSEFERVIoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaAppbmRleCAzNDMyM2U2ZDMzOTk3N2Vl
M2Y1NWQyOTA1OWE4M2ZlYTBlZmVjNWRhLi45NDk5YWM3ZmQ3MjFiYzQ5ZDBkNDU3ZGExYTJhMWM5
ZWM1ZjI2YmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKQEAgLTE0NSw2ICsxNDUsMjMgQEAgcHJp
dmF0ZToKICAgICBpbnQgbV92ZXJ0ZXhUZXhUcmFuc2Zvcm1Mb2NhdGlvbjsKIH07CiAKK2NsYXNz
IFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtIHsKK3B1YmxpYzoKKyAgICBWZXJ0ZXhTaGFkZXJW
aWRlb1RyYW5zZm9ybSgpOworCisgICAgYm9vbCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5z
aWduZWQgcHJvZ3JhbSk7CisgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OworCisg
ICAgaW50IG1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbjsg
fQorICAgIGludCB0ZXhUcmFuc2Zvcm1Mb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4VHJh
bnNmb3JtTG9jYXRpb247IH0KKyAgICBpbnQgdGV4TWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3RleE1hdHJpeExvY2F0aW9uOyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fbWF0cml4
TG9jYXRpb247CisgICAgaW50IG1fdGV4VHJhbnNmb3JtTG9jYXRpb247CisgICAgaW50IG1fdGV4
TWF0cml4TG9jYXRpb247Cit9OworCiBjbGFzcyBGcmFnbWVudFRleEFscGhhQmluZGluZyB7CiBw
dWJsaWM6CiAgICAgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcoKTsKQEAgLTIxMSw2ICsyMjgsMTUg
QEAgcHVibGljOgogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIH07CiAKKy8v
IEZyYWdtZW50IHNoYWRlciBmb3IgZXh0ZXJuYWwgdGV4dHVyZXMuCitjbGFzcyBGcmFnbWVudFNo
YWRlck9FU0ltYWdlRXh0ZXJuYWwgOiBwdWJsaWMgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcgewor
cHVibGljOgorICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKKyAgICBib29sIGlu
aXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKK3ByaXZhdGU6CisgICAg
aW50IG1fc2FtcGxlckxvY2F0aW9uOworfTsKKwogY2xhc3MgRnJhZ21lbnRTaGFkZXJSR0JBVGV4
QWxwaGFBQSB7CiBwdWJsaWM6CiAgICAgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlk
ZW9GcmFtZUNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9WaWRlb0ZyYW1lQ2hyb21pdW0uaAppbmRleCBjNGFiZDk2OWQxZWQxMWQ3ODQzN2Q1MDlj
MzRkYWQ5NWVkOTM0MmIyLi4xM2EyM2I0NDdjMTg5NWY1ZjVhMTNhODNlOGViMjg3ZjhkYWEzZDM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0ZyYW1lQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9WaWRlb0ZyYW1lQ2hyb21pdW0uaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIEFTQ0lJLAogICAgICAgICBJNDIwLAogICAgICAgICBOYXRpdmVUZXh0dXJlLAor
ICAgICAgICBFeHRlcm5hbFRleHR1cmUsCiAgICAgfTsKIAogICAgIHZpcnR1YWwgflZpZGVvRnJh
bWVDaHJvbWl1bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lUHJvdmlkZXIuaAppbmRleCAzZDQzYTkwYzM3
YTYzN2FjZTdjYzczMjE3NjNkZTRhMzk3OTk0MWRkLi45Nzk0Nzk0YTdiN2RmNTMzMzMzM2MwYTE0
ZGYyNTFhNjc0OGM5OTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lUHJvdmlkZXIuaApAQCAtNDMsNiAr
NDMsOCBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICAvLyBQcm92aWRlciB3aWxsIGNh
bGwgdGhpcyBtZXRob2QgdG8gdGVsbCB0aGUgY2xpZW50IHRvIHN0b3AgdXNpbmcgaXQuCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBzdG9wVXNpbmdQcm92aWRlcigpID0gMDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVGcmFtZSgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFVw
ZGF0ZU1hdHJpeChjb25zdCBmbG9hdCopID0gMDsKICAgICB9OwogCiAgICAgdmlydHVhbCB2b2lk
IHNldFZpZGVvRnJhbWVQcm92aWRlckNsaWVudChDbGllbnQqKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1
YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NW
aWRlb0RyYXdRdWFkLmNwcAppbmRleCAxZjk2ZTFiMTIzZDBkMTcxMmNiOTY5YzkyZjAyZmI1OWE4
OTBlYWZlLi5iYTU3MzQ5MDk4NzVjNWRjY2NmODlhYjIwMzRjNDBlNDU5ZGY3Mjk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVv
RHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAgQ0NWaWRlb0RyYXdR
dWFkOjpDQ1ZpZGVvRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSwgY29uc3QKICAgICAsIG1fdGV4dHVyZXModGV4dHVyZXMpCiAgICAgLCBtX2ZyYW1lKGZy
YW1lKQogICAgICwgbV9mb3JtYXQoZm9ybWF0KQorICAgICwgbV9tYXRyaXgoMCkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NWaWRlb0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuaAppbmRleCAxNjVhYTYwZGM0NzdiYjk5NzNiYmVhNGY0
MDdhZDY2ODA2ZGMwNTk2Li5hZWY3ODQ3MmE0MGFjNmJlZjU0ODIzZmJhNDMwNDA2MzM2MTZkNDUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1ZpZGVvRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuaApAQCAtNDEsNiArNDEsOSBAQCBwdWJsaWM6
CiAgICAgQ0NWaWRlb0xheWVySW1wbDo6VGV4dHVyZSogdGV4dHVyZXMoKSBjb25zdCB7IHJldHVy
biBtX3RleHR1cmVzOyB9CiAgICAgVmlkZW9GcmFtZUNocm9taXVtKiBmcmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZnJhbWU7IH0KICAgICBHQzNEZW51bSBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBt
X2Zvcm1hdDsgfQorICAgIGNvbnN0IGZsb2F0KiBtYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX21h
dHJpeDsgfQorCisgICAgdm9pZCBzZXRNYXRyaXgoY29uc3QgZmxvYXQqIG1hdHJpeCkgeyBtX21h
dHJpeCA9IG1hdHJpeDsgfQogCiBwcml2YXRlOgogICAgIENDVmlkZW9EcmF3UXVhZChjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBDQ1ZpZGVvTGF5ZXJJbXBsOjpUZXh0
dXJlKiB0ZXh0dXJlcywgVmlkZW9GcmFtZUNocm9taXVtKiwgR0MzRGVudW0gZm9ybWF0KTsKQEAg
LTQ4LDYgKzUxLDcgQEAgcHJpdmF0ZToKICAgICBDQ1ZpZGVvTGF5ZXJJbXBsOjpUZXh0dXJlKiBt
X3RleHR1cmVzOwogICAgIFZpZGVvRnJhbWVDaHJvbWl1bSogbV9mcmFtZTsKICAgICBHQzNEZW51
bSBtX2Zvcm1hdDsKKyAgICBjb25zdCBmbG9hdCogbV9tYXRyaXg7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVv
TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVmlkZW9MYXllckltcGwuY3BwCmluZGV4IDczMTliMTU3YWNmYWFiMDJhYjY4YjFmYzFm
MDA5N2E2ZDFlMWE3MDQuLmM2ZDAwNzFiYzQ3YmQ3N2EwYjllOGJkNWZlZDBlNWQwNmMyYWQ5ZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVmlkZW9MYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCkBAIC02MiwxMCArNjIsMjEgQEAg
Y29uc3QgZmxvYXQgQ0NWaWRlb0xheWVySW1wbDo6eXV2QWRqdXN0WzNdID0gewogICAgIC0wLjVm
LAogfTsKIAorLy8gVGhpcyBtYXRyaXggaXMgdGhlIGRlZmF1bHQgdHJhbnNmb3JtYXRpb24gZm9y
IHN0cmVhbSB0ZXh0dXJlcy4KK2NvbnN0IGZsb2F0IENDVmlkZW9MYXllckltcGw6OmZsaXBUcmFu
c2Zvcm1bMTZdID0geworICAgIDEsIDAsIDAsIDAsCisgICAgMCwgLTEsIDAsIDAsCisgICAgMCwg
MCwgMSwgMCwKKyAgICAwLCAxLCAwLCAxLAorfTsKKwogQ0NWaWRlb0xheWVySW1wbDo6Q0NWaWRl
b0xheWVySW1wbChpbnQgaWQsIFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCiAgICAgOiBD
Q0xheWVySW1wbChpZCkKICAgICAsIG1fcHJvdmlkZXIocHJvdmlkZXIpCisgICAgLCBtX2xheWVy
VHJlZUhvc3RJbXBsKDApCisgICAgLCBtX2ZyYW1lKDApCiB7CisgICAgbWVtY3B5KG1fc3RyZWFt
VGV4dHVyZU1hdHJpeCwgZmxpcFRyYW5zZm9ybSwgc2l6ZW9mKG1fc3RyZWFtVGV4dHVyZU1hdHJp
eCkpOwogICAgIHByb3ZpZGVyLT5zZXRWaWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQodGhpcyk7CiB9
CiAKQEAgLTk4LDYgKzEwOSw4IEBAIHN0YXRpYyBHQzNEZW51bSBjb252ZXJ0VkZDRm9ybWF0VG9H
QzNERm9ybWF0KFZpZGVvRnJhbWVDaHJvbWl1bTo6Rm9ybWF0IGZvcm1hdCkKICAgICAgICAgcmV0
dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwogICAgIGNhc2UgVmlkZW9GcmFtZUNocm9taXVt
OjpOYXRpdmVUZXh0dXJlOgogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQ7CisgICAgY2FzZSBWaWRlb0ZyYW1lQ2hyb21pdW06OkV4dGVybmFsVGV4dHVyZToKKyAg
ICAgICAgcmV0dXJuIEV4dGVuc2lvbnMzRENocm9taXVtOjpHTF9URVhUVVJFX0VYVEVSTkFMX09F
UzsKICAgICBjYXNlIFZpZGVvRnJhbWVDaHJvbWl1bTo6SW52YWxpZDoKICAgICBjYXNlIFZpZGVv
RnJhbWVDaHJvbWl1bTo6UkdCNTU1OgogICAgIGNhc2UgVmlkZW9GcmFtZUNocm9taXVtOjpSR0I1
NjU6CkBAIC0xNDMsNyArMTU2LDEyIEBAIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6d2lsbERyYXco
TGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogdm9pZCBDQ1ZpZGVvTGF5ZXJJ
bXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSkKIHsKICAgICBJbnRSZWN0IHF1YWRSZWN0KEludFBvaW50
KCksIGJvdW5kcygpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoQ0NWaWRlb0RyYXdRdWFkOjpjcmVh
dGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV90ZXh0dXJlcywgbV9mcmFtZSwgbV9mb3Jt
YXQpKTsKKyAgICBPd25QdHI8Q0NWaWRlb0RyYXdRdWFkPiB2aWRlb1F1YWQgPSBDQ1ZpZGVvRHJh
d1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBtX3RleHR1cmVzLCBtX2Zy
YW1lLCBtX2Zvcm1hdCk7CisKKyAgICBpZiAobV9mb3JtYXQgPT0gRXh0ZW5zaW9uczNEQ2hyb21p
dW06OkdMX1RFWFRVUkVfRVhURVJOQUxfT0VTKQorICAgICAgICB2aWRlb1F1YWQtPnNldE1hdHJp
eChtX3N0cmVhbVRleHR1cmVNYXRyaXgpOworCisgICAgcXVhZExpc3QuYXBwZW5kKHZpZGVvUXVh
ZC5yZWxlYXNlKCkpOwogfQogCiB2b2lkIENDVmlkZW9MYXllckltcGw6OmRpZERyYXcoKQpAQCAt
MjEzLDYgKzIzMSwyMyBAQCBib29sIENDVmlkZW9MYXllckltcGw6OnJlc2VydmVUZXh0dXJlcyhj
b25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qIGZyYW1lLCBHQzNEZW51bQogICAgIHJldHVybiB0cnVl
OwogfQogCit2b2lkIENDVmlkZW9MYXllckltcGw6OmRpZFJlY2VpdmVGcmFtZSgpCit7CisgICAg
c2V0TmVlZHNSZWRyYXcoKTsKK30KKwordm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpkaWRVcGRhdGVN
YXRyaXgoY29uc3QgZmxvYXQgbWF0cml4WzE2XSkKK3sKKyAgICBtZW1jcHkobV9zdHJlYW1UZXh0
dXJlTWF0cml4LCBtYXRyaXgsIHNpemVvZihtX3N0cmVhbVRleHR1cmVNYXRyaXgpKTsKKyAgICBz
ZXROZWVkc1JlZHJhdygpOworfQorCit2b2lkIENDVmlkZW9MYXllckltcGw6OnNldE5lZWRzUmVk
cmF3KCkKK3sKKyAgICBpZiAobV9sYXllclRyZWVIb3N0SW1wbCkKKyAgICAgICAgbV9sYXllclRy
ZWVIb3N0SW1wbC0+c2V0TmVlZHNSZWRyYXcoKTsKK30KKwogdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdAog
ewogICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1w
bC5oCmluZGV4IDM5ZmMyZjZjMDgzZGFkZmNlM2NlM2U3YWFhZjBhMjJiYTlhYzI4OGMuLjM4MTZl
MGVhYzU3NTMyYWZkNThjYTgxOTBiYmM2MjZmOWYyODI2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVv
TGF5ZXJJbXBsLmgKQEAgLTM1LDYgKzM1LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOworY2xhc3MgQ0NWaWRlb0xheWVySW1wbDsKKwogdGVt
cGxhdGU8Y2xhc3MgVmVydGV4U2hhZGVyLCBjbGFzcyBGcmFnbWVudFNoYWRlcj4gY2xhc3MgUHJv
Z3JhbUJpbmRpbmc7CiAKIGNsYXNzIENDVmlkZW9MYXllckltcGwgOiBwdWJsaWMgQ0NMYXllcklt
cGwKQEAgLTUzLDE3ICs1NiwyMyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGlu
ZzxWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0sIEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBB
bHBoYT4gUkdCQVByb2dyYW07CiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFk
ZXJQb3NUZXhZVVZTdHJldGNoLCBGcmFnbWVudFNoYWRlcllVVlZpZGVvPiBZVVZQcm9ncmFtOwog
ICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtLCBG
cmFnbWVudFNoYWRlclJHQkFUZXhGbGlwQWxwaGE+IE5hdGl2ZVRleHR1cmVQcm9ncmFtOworICAg
IHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm0sIEZyYWdt
ZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbD4gU3RyZWFtVGV4dHVyZVByb2dyYW07CiAKICAgICB2
aXJ0dWFsIHZvaWQgZHVtcExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCkg
Y29uc3Q7CiAKICAgICBNdXRleCYgcHJvdmlkZXJNdXRleCgpIHsgcmV0dXJuIG1fcHJvdmlkZXJN
dXRleDsgfQogICAgIFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIoKSBjb25zdCB7IHJldHVy
biBtX3Byb3ZpZGVyOyB9CiAKLSAgICAvLyBWaWRlb0ZyYW1lUHJvdmlkZXI6OkNsaWVudCBpbXBs
ZW1lbnRhdGlvbiAoY2FsbGFibGUgb24gYW55IHRocmVhZCkuCi0gICAgdmlydHVhbCB2b2lkIHN0
b3BVc2luZ1Byb3ZpZGVyKCk7CisgICAgLy8gVmlkZW9GcmFtZVByb3ZpZGVyOjpDbGllbnQgaW1w
bGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIHN0b3BVc2luZ1Byb3ZpZGVyKCk7IC8vIENh
bGxhYmxlIG9uIG9uIGFueSB0aHJlYWQuCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVGcmFt
ZSgpOyAvLyBDYWxsYWJsZSBvbiBpbXBsIHRocmVhZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkVXBk
YXRlTWF0cml4KGNvbnN0IGZsb2F0Kik7IC8vIENhbGxhYmxlIG9uIGltcGwgdGhyZWFkLgorCisg
ICAgdm9pZCBzZXROZWVkc1JlZHJhdygpOwogCiAgICAgc3RhdGljIGNvbnN0IGZsb2F0IHl1djJS
R0JbOV07CiAgICAgc3RhdGljIGNvbnN0IGZsb2F0IHl1dkFkanVzdFszXTsKKyAgICBzdGF0aWMg
Y29uc3QgZmxvYXQgZmxpcFRyYW5zZm9ybVsxNl07CiAKICAgICBzdHJ1Y3QgVGV4dHVyZSB7CiAg
ICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOwpAQCAtODQsNiArOTMsOSBA
QCBwcml2YXRlOgogCiAgICAgVGV4dHVyZSBtX3RleHR1cmVzW01heFBsYW5lc107CiAKKyAgICBm
bG9hdCBtX3N0cmVhbVRleHR1cmVNYXRyaXhbMTZdOworICAgIENDTGF5ZXJUcmVlSG9zdEltcGwq
IG1fbGF5ZXJUcmVlSG9zdEltcGw7CisKICAgICBWaWRlb0ZyYW1lQ2hyb21pdW0qIG1fZnJhbWU7
CiAgICAgR0MzRGVudW0gbV9mb3JtYXQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmlu
ZGV4IGE0MWM2ZDA3Mzg2MzEwNTI4ZDkzNTE5Yjg0ODY4ZWM1M2JhN2Q4YjYuLjI1NTcxNTMxMWQ1
MGU3NjNmMTdlYTMxN2MxNDkzMDVjODM2YzhiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAKQEAgLTI1Niw2ICsyNTYsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RvcmFn
ZU5hbWVzcGFjZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlN0b3JhZ2VRdW90YUNh
bGxiYWNrcy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlN0b3JhZ2VRdW90YVR5cGUu
aCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTdHJlYW1UZXh0dXJlQ2xpZW50LmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dEFmZmluaXR5LmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViVGV4dENhc2VTZW5zaXRpdml0eS5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb24uaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaAppbmRleCA5YWFmMWEzZDA5NWRjYjA5OGY4
M2RjYjI0ODI0ZWEzNjY2MjY1YmEzLi4yMzkxMzQ5NjM4Y2JhNGYyOWExNTEzZmU1OTg2YzgyNWE3
ODU3YTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRp
YVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxh
eWVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBdWRp
b1NvdXJjZVByb3ZpZGVyOwogY2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudDsKIGNs
YXNzIFdlYk1lZGlhUGxheWVyQ2xpZW50OworY2xhc3MgV2ViU3RyZWFtVGV4dHVyZUNsaWVudDsK
IGNsYXNzIFdlYlVSTDsKIHN0cnVjdCBXZWJSZWN0Owogc3RydWN0IFdlYlNpemU7CkBAIC0xNjIs
NiArMTYzLDggQEAgcHVibGljOgogICAgIC8vIG1ldGhvZCBzaG91bGQgbm8gbG9uZ2VyIGJlIHJl
ZmVyZW5jZWQgYWZ0ZXIgdGhlIGNhbGwgaXMgbWFkZS4KICAgICB2aXJ0dWFsIHZvaWQgcHV0Q3Vy
cmVudEZyYW1lKFdlYlZpZGVvRnJhbWUqKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBzZXRTdHJl
YW1UZXh0dXJlQ2xpZW50KFdlYlN0cmVhbVRleHR1cmVDbGllbnQqKSB7IH0KKwogICAgIHZpcnR1
YWwgV2ViQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIHsgcmV0dXJu
IDA7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VBcHBlbmQoY29uc3QgdW5zaWduZWQgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3RyZWFtVGV4dHVyZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3RyZWFtVGV4dHVyZUNsaWVudC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgxMDAyZmIyNmFkNzkzZGE2ZDZhNDY4ODYwYzBmMGFkZWU3MzRlNmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTdHJlYW1UZXh0
dXJlQ2xpZW50LmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
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
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU3RyZWFtVGV4dHVyZUNsaWVu
dF9oCisjZGVmaW5lIFdlYlN0cmVhbVRleHR1cmVDbGllbnRfaAorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViU3RyZWFtVGV4dHVyZUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVGcmFtZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRl
TWF0cml4KGNvbnN0IGZsb2F0KikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+V2Vi
U3RyZWFtVGV4dHVyZUNsaWVudCgpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlk
ZW9GcmFtZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZS5o
CmluZGV4IDhlM2IyY2RiZDJiZDFiOTZkZWM3ZDc5MmI4YjhjMmE5Y2Y2NjU0YjEuLjY0ZGFlOTg3
Mzc3YjNmYjQ2OGIzZDdhYzRiM2NmNGRhOTU0YmYxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlZpZGVvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJWaWRlb0ZyYW1lLmgKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgog
ICAgICAgICBGb3JtYXRBU0NJSSwKICAgICAgICAgRm9ybWF0STQyMCwKICAgICAgICAgRm9ybWF0
TmF0aXZlVGV4dHVyZSwKKyAgICAgICAgRm9ybWF0RXh0ZXJuYWxUZXh0dXJlLAogICAgIH07CiAK
ICAgICB2aXJ0dWFsIH5XZWJWaWRlb0ZyYW1lKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAppbmRleCA5OTZl
NzA3MTAwYWE5MWI5NjY1MzVkYzA4YzkzYzE5NTUwM2YzOTU5Li5mMzY0N2U0ODkyMDBjMjk5M2Q0
YjkwZDI1NGQ5ODQzMDgyZDgxYzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJXZWJNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllci5o
IgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYkNTdHJpbmcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDYW52
YXMuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKQEAgLTEw
NSw2ICsxMDYsNyBAQCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6On5XZWJNZWRpYVBsYXllckNs
aWVudEltcGwoKQogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2NvbXBvc2l0aW5nTXV0ZXgpOwog
ICAgIGlmIChtX3ZpZGVvRnJhbWVQcm92aWRlckNsaWVudCkKICAgICAgICAgbV92aWRlb0ZyYW1l
UHJvdmlkZXJDbGllbnQtPnN0b3BVc2luZ1Byb3ZpZGVyKCk7CisgICAgbV93ZWJNZWRpYVBsYXll
ci0+c2V0U3RyZWFtVGV4dHVyZUNsaWVudCgwKTsKICNlbmRpZgogfQogCkBAIC01OTcsNiArNTk5
LDcgQEAgdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNldFZpZGVvRnJhbWVQcm92aWRl
ckNsaWVudChWaWRlb0ZyYW1lUHJvdmlkZXI6OkMKIHsKICAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9jb21wb3NpdGluZ011dGV4KTsKICAgICBtX3ZpZGVvRnJhbWVQcm92aWRlckNsaWVudCA9IGNs
aWVudDsKKyAgICBtX3dlYk1lZGlhUGxheWVyLT5zZXRTdHJlYW1UZXh0dXJlQ2xpZW50KGNsaWVu
dCA/IHRoaXMgOiAwKTsKIH0KIAogVmlkZW9GcmFtZUNocm9taXVtKiBXZWJNZWRpYVBsYXllckNs
aWVudEltcGw6OmdldEN1cnJlbnRGcmFtZSgpCkBAIC02NzksNiArNjgyLDIwIEBAIHZvaWQgV2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzdGFydERlbGF5ZWRMb2FkKCkKICAgICBsb2FkSW50ZXJu
YWwoKTsKIH0KIAordm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmRpZFJlY2VpdmVGcmFt
ZSgpCit7CisgICAgLy8gTm8gbG9jayBzaW5jZSB0aGlzIGdldHMgY2FsbGVkIG9uIHRoZSBjbGll
bnQncyB0aHJlYWQuCisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKyAgICBt
X3ZpZGVvRnJhbWVQcm92aWRlckNsaWVudC0+ZGlkUmVjZWl2ZUZyYW1lKCk7Cit9CisKK3ZvaWQg
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpkaWRVcGRhdGVNYXRyaXgoY29uc3QgZmxvYXQqIG1h
dHJpeCkKK3sKKyAgICAvLyBObyBsb2NrIHNpbmNlIHRoaXMgZ2V0cyBjYWxsZWQgb24gdGhlIGNs
aWVudCdzIHRocmVhZC4KKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAg
IG1fdmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50LT5kaWRVcGRhdGVNYXRyaXgobWF0cml4KTsKK30K
KwogV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpXZWJNZWRpYVBsYXllckNsaWVudEltcGwoKQog
ICAgIDogbV9tZWRpYVBsYXllcigwKQogICAgICwgbV9kZWxheWluZ0xvYWQoZmFsc2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudElt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1w
bC5oCmluZGV4IGU3NWU3M2FlMTM1NWM2ZWE0NzcxZDA0N2FmODU2ODhkNTU3NGU3OGEuLmQ4NWUw
ZDFmYzU5ZmFhYjRmNTgwNmM1MjE3ZGZlZTczZTY1N2FmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCkBAIC00MCw3
ICs0MCw5IEBACiAjaW5jbHVkZSAiVmlkZW9MYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiV2Vi
QXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyQ2xp
ZW50LmgiCisjaW5jbHVkZSAiV2ViU3RyZWFtVGV4dHVyZUNsaWVudC5oIgogI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7IGNsYXNzIEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQ7IH0KIApAQCAtNTYsNyArNTgs
OCBAQCBjbGFzcyBXZWJNZWRpYVBsYXllckNsaWVudEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIFdlYkNvcmU6OlZpZGVv
RnJhbWVQcm92aWRlcgogI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBw
dWJsaWMgV2ViTWVkaWFQbGF5ZXJDbGllbnQgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICwgcHVibGljIFdlYk1lZGlhUGxheWVyQ2xpZW50CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLCBwdWJsaWMgV2ViU3RyZWFtVGV4dHVyZUNsaWVudCB7CiAKIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCBpc0VuYWJsZWQoKTsKQEAgLTE1MCw2ICsxNTMsMTAgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VFbmRPZlN0cmVhbShXZWJDb3JlOjpNZWRpYVBsYXllcjo6
RW5kT2ZTdHJlYW1TdGF0dXMpOwogI2VuZGlmCiAKKyAgICAvLyBXZWJTdHJlYW1UZXh0dXJlQ2xp
ZW50IG1ldGhvZHM6CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVGcmFtZSgpOworICAgIHZp
cnR1YWwgdm9pZCBkaWRVcGRhdGVNYXRyaXgoY29uc3QgZmxvYXQqKTsKKwogcHJpdmF0ZToKICAg
ICBXZWJNZWRpYVBsYXllckNsaWVudEltcGwoKTsKICAgICB2b2lkIHN0YXJ0RGVsYXllZExvYWQo
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128119</attachid>
            <date>2012-02-21 19:48:43 -0800</date>
            <delta_ts>2012-02-22 13:53:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78398-20120221194841.patch</filename>
            <type>text/plain</type>
            <size>34854</size>
            <attacher name="Daniel Sievers">sievers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzBkNzc3YTI1ZTFhNTll
NWJjNTc0ZmFjODliOTczOWE4MmRjMmQ1Ny4uOTE5MGUwZGQxYTZlMzJhYTljNDQ5M2QyMTUzZjY1
NjNiNWJiNGExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTAyLTIxICBEYW5p
ZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
QWRkIHZpZGVvIHN0cmVhbSB0ZXh0dXJlIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4Mzk4CisKKyAgICAgICAgVGhpcyB1cHN0cmVhbXMg
dGhlIGFic3RyYWN0aW9uIHVzZWQgb24gQW5kcm9pZCBmb3IKKyAgICAgICAgaGFyZHdhcmUgdmlk
ZW8gZGVjb2Rpbmcgd2l0aCB0aGUgY29tcG9zaXRvci4KKworICAgICAgICBNb3N0IG9mIHRoZSBp
bnRlcmZhY2VzIGFyZSBrZXB0IGdlbmVyaWMgYW5kIHRoZSBjb3JlCisgICAgICAgIG9mIHRoaXMg
Y2hhbmdlIGlzIHRvIGFsbG93IHRleHR1cmluZyBmcm9tIGFuIGV4dGVybmFsCisgICAgICAgIHRl
eHR1cmUgd2hpbGUgcmVjZWl2aW5nIG5vdGlmaWNhdGlvbnMgKG9uIHRoZSBjb21wb3NpdG9yCisg
ICAgICAgIHRocmVhZCBpZiB3ZSBhcmUgcnVubmluZyBpdCkgd2hlbiB0aGVyZSBhcmUgbmV3IGZy
YW1lcyB0bworICAgICAgICBiZSBkaXNwbGF5ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRl
bnNpb25zM0RDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdTaW5nbGVUZXh0dXJlVmlkZW9RdWFkKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JHQkEpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TmF0aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1N0cmVh
bVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
VmlkZW9RdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c3Ry
ZWFtVGV4dHVyZUxheWVyUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyUmVu
ZGVyZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hh
ZGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFu
c2Zvcm06OlZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OmluaXQpOgorICAg
ICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OmdldFNoYWRlclN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlck9FU0ltYWdlRXh0ZXJuYWw6Omlu
aXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJPRVNJbWFnZUV4dGVybmFsOjpn
ZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1No
YWRlckNocm9taXVtLmg6CisgICAgICAgIChWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6bWF0cml4TG9jYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OnRleFRy
YW5zZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclZpZGVvVHJh
bnNmb3JtOjp0ZXhNYXRyaXhMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KEZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmg6CisgICAgICAgIChDbGllbnQp
OgorICAgICAgICAoVmlkZW9GcmFtZVByb3ZpZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NWaWRlb0RyYXdRdWFkOjpDQ1ZpZGVvRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6
Q0NWaWRlb0RyYXdRdWFkOjptYXRyaXgpOgorICAgICAgICAoQ0NWaWRlb0RyYXdRdWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVmlkZW9EcmF3UXVhZDo6c2V0TWF0cml4KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6Q0NWaWRl
b0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VkZDRm9ybWF0VG9HQzNERm9y
bWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmRpZFJlY2VpdmVGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpkaWRVcGRhdGVNYXRyaXgpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6c2V0TmVlZHNSZWRyYXcpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NWaWRlb0xheWVySW1wbCk6CisKIDIwMTItMDIt
MjEgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBbU3VnZ2VzdEJveF0gdGV4dFByb21wdC5jc3MgZGlzYWJsZW1lbnQgZGlz
cGxheXMgZ2FyYmxlZCBzdWdnZXN0IGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4
ZTI5ODZhY2UwYTc1YjMwZTU3NTdmYTczNDQ2MGM2ZGZkZDllMTkyLi4zZTQ2OTZjYTViMDUyZTNl
MThjN2Y0MjZjMjM3YmZhOTAzMjUwMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM4IEBACisyMDEyLTAyLTIxICBEYW5pZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkIHZpZGVvIHN0cmVhbSB0ZXh0dXJlIHN1
cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4
Mzk4CisKKyAgICAgICAgVGhpcyB1cHN0cmVhbXMgdGhlIGFic3RyYWN0aW9uIHVzZWQgb24gQW5k
cm9pZCBmb3IKKyAgICAgICAgaGFyZHdhcmUgdmlkZW8gZGVjb2Rpbmcgd2l0aCB0aGUgY29tcG9z
aXRvci4KKworICAgICAgICBNb3N0IG9mIHRoZSBpbnRlcmZhY2VzIGFyZSBrZXB0IGdlbmVyaWMg
YW5kIHRoZSBjb3JlCisgICAgICAgIG9mIHRoaXMgY2hhbmdlIGlzIHRvIGFsbG93IHRleHR1cmlu
ZyBmcm9tIGFuIGV4dGVybmFsCisgICAgICAgIHRleHR1cmUgd2hpbGUgcmVjZWl2aW5nIG5vdGlm
aWNhdGlvbnMgKG9uIHRoZSBjb21wb3NpdG9yCisgICAgICAgIHRocmVhZCBpZiB3ZSBhcmUgcnVu
bmluZyBpdCkgd2hlbiB0aGVyZSBhcmUgbmV3IGZyYW1lcyB0bworICAgICAgICBiZSBkaXNwbGF5
ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJNZWRpYVBsYXllci5oOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXI6OnNldFN0cmVhbVRleHR1
cmVDbGllbnQpOgorICAgICAgICAoV2ViTWVkaWFQbGF5ZXIpOgorICAgICAgICAqIHB1YmxpYy9X
ZWJTdHJlYW1UZXh0dXJlQ2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlZpZGVvRnJhbWUuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJTdHJlYW1UZXh0dXJlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RyZWFtVGV4dHVy
ZUNsaWVudDo6fldlYlN0cmVhbVRleHR1cmVDbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9XZWJW
aWRlb0ZyYW1lLmg6CisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6fldlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1w
bDo6c2V0VmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjpkaWRSZWNlaXZlRnJhbWUpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpkaWRVcGRhdGVNYXRy
aXgpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoKKyAgICAgICAg
KFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCk6CisKIDIwMTItMDItMjEgIFl1cnkgU2VtaWtoYXRz
a3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBXZWIgSW5zcGVjdG9yOiBz
ZXQgYnJlYWtwb2ludC9wYXVzZSBkb2Vzbid0IHdvcmsgd2hlbiB3b3JrZXIgaXMgaW4gYSB0aWdo
dCBsb29wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaAppbmRleCA1MDlkYjMzZTg1M2Ew
MzgxYzJlZmU1YjQ3NzczODQwMGExMmVjY2U1Li41MzMyMmYwZjI1ZWQ0MDdhMjVlNmI2MjMyN2U4
NzEyODlkMThiZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgKQEAgLTYzLDYg
KzYzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRShQbGF0Zm9ybTNET2JqZWN0KTsKIAogICAgIGVudW0geworICAgICAgICAvLyBH
TF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsCisgICAgICAgIEdMX1RFWFRVUkVfRVhURVJOQUxfT0VT
ID0gMHg4RDY1LAorCiAgICAgICAgIC8vIEdMX0NIUk9NSVVNX21hcF9zdWIgKGVudW1zIGluaGVy
aXRlZCBmcm9tIEdMX0FSQl92ZXJ0ZXhfYnVmZmVyX29iamVjdCkKICAgICAgICAgUkVBRF9PTkxZ
ID0gMHg4OEI4LAogICAgICAgICBXUklURV9PTkxZID0gMHg4OEI5LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggYTUyNjY5ZThkNDI1MzVmNDQ3ZDZiODQyYzNjMThl
ODAyNTFmZjAwNS4uNGM3YzJkMTY1NmEyMDIzMzZmMjkxNDdlZDQ2YTFiZWZjZjMyZjg5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC03MzYsMTIgKzczNiwxMiBA
QCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1lVVihjb25zdCBDQ1ZpZGVvRHJhd1F1
YWQqIHF1YWQpCiB9CiAKIHRlbXBsYXRlPGNsYXNzIFByb2dyYW0+Ci12b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd1NpbmdsZVRleHR1cmVWaWRlb1F1YWQoY29uc3QgQ0NWaWRlb0RyYXdR
dWFkKiBxdWFkLCBQcm9ncmFtKiBwcm9ncmFtLCBmbG9hdCB3aWR0aFNjYWxlRmFjdG9yLCBQbGF0
Zm9ybTNET2JqZWN0IHRleHR1cmVJZCkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
U2luZ2xlVGV4dHVyZVZpZGVvUXVhZChjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqIHF1YWQsIFByb2dy
YW0qIHByb2dyYW0sIGZsb2F0IHdpZHRoU2NhbGVGYWN0b3IsIFBsYXRmb3JtM0RPYmplY3QgdGV4
dHVyZUlkLCBHQzNEZW51bSB0YXJnZXQpCiB7CiAgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3Jh
bS0+aW5pdGlhbGl6ZWQoKSk7CiAKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2
ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgR0xDKGNvbnRleHQo
KSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
dGV4dHVyZUlkKSk7CisgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZSh0
YXJnZXQsIHRleHR1cmVJZCkpOwogCiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQ
cm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQo
KS0+dW5pZm9ybTRmKHByb2dyYW0tPnZlcnRleFNoYWRlcigpLnRleFRyYW5zZm9ybUxvY2F0aW9u
KCksIDAsIDAsIHdpZHRoU2NhbGVGYWN0b3IsIDEpKTsKQEAgLTc1OSwxMyArNzU5LDI1IEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UkdCQShjb25zdCBDQ1ZpZGVvRHJhd1F1YWQq
IHF1YWQpCiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6UkdCQVByb2dyYW0qIHByb2dyYW0g
PSB2aWRlb0xheWVyUkdCQVByb2dyYW0oKTsKICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpU
ZXh0dXJlJiB0ZXh0dXJlID0gcXVhZC0+dGV4dHVyZXMoKVtWaWRlb0ZyYW1lQ2hyb21pdW06OnJn
YlBsYW5lXTsKICAgICBmbG9hdCB3aWR0aFNjYWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHRleHR1cmUubV92aXNpYmxlU2l6ZS53aWR0aCgpKSAvIHRleHR1cmUubV90ZXh0dXJlLT5zaXpl
KCkud2lkdGgoKTsKLSAgICBkcmF3U2luZ2xlVGV4dHVyZVZpZGVvUXVhZChxdWFkLCBwcm9ncmFt
LCB3aWR0aFNjYWxlRmFjdG9yLCB0ZXh0dXJlLm1fdGV4dHVyZS0+dGV4dHVyZUlkKCkpOworICAg
IGRyYXdTaW5nbGVUZXh0dXJlVmlkZW9RdWFkKHF1YWQsIHByb2dyYW0sIHdpZHRoU2NhbGVGYWN0
b3IsIHRleHR1cmUubV90ZXh0dXJlLT50ZXh0dXJlSWQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQpOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd05hdGl2ZVRl
eHR1cmUoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKiBxdWFkKQordm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdOYXRpdmVUZXh0dXJlMkQoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKiBxdWFkKQog
ewogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6Ok5hdGl2ZVRleHR1cmVQcm9ncmFtKiBwcm9n
cmFtID0gdmlkZW9MYXllck5hdGl2ZVRleHR1cmVQcm9ncmFtKCk7Ci0gICAgZHJhd1NpbmdsZVRl
eHR1cmVWaWRlb1F1YWQocXVhZCwgcHJvZ3JhbSwgMSwgcXVhZC0+ZnJhbWUoKS0+dGV4dHVyZUlk
KCkpOworICAgIGRyYXdTaW5nbGVUZXh0dXJlVmlkZW9RdWFkKHF1YWQsIHByb2dyYW0sIDEsIHF1
YWQtPmZyYW1lKCktPnRleHR1cmVJZCgpLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCk7
Cit9CisKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3U3RyZWFtVGV4dHVyZShjb25z
dCBDQ1ZpZGVvRHJhd1F1YWQqIHF1YWQpCit7CisgICAgQVNTRVJUKGNvbnRleHQoKS0+Z2V0RXh0
ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpICYmIGNvbnRl
eHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5pc0VuYWJsZWQoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJu
YWwiKSk7CisKKyAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpTdHJlYW1UZXh0dXJlUHJvZ3Jh
bSogcHJvZ3JhbSA9IHN0cmVhbVRleHR1cmVMYXllclByb2dyYW0oKTsKKyAgICBHTEMoY29udGV4
dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CisgICAgQVNT
RVJUKHF1YWQtPm1hdHJpeCgpKTsKKyAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZv
cm1NYXRyaXg0ZnYocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkudGV4TWF0cml4TG9jYXRpb24oKSwg
ZmFsc2UsIGNvbnN0X2Nhc3Q8ZmxvYXQqPihxdWFkLT5tYXRyaXgoKSksIDEpKTsKKworICAgIGRy
YXdTaW5nbGVUZXh0dXJlVmlkZW9RdWFkKHF1YWQsIHByb2dyYW0sIDEsIHF1YWQtPmZyYW1lKCkt
PnRleHR1cmVJZCgpLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6R0xfVEVYVFVSRV9FWFRFUk5BTF9P
RVMpOwogfQogCiBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weUZyYW1lVG9UZXh0dXJl
cyhjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqIHF1YWQpCkBAIC04MjIsNyArODM0LDEwIEBAIHZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VmlkZW9RdWFkKGNvbnN0IENDVmlkZW9EcmF3UXVh
ZCogcXVhZCkKICAgICAgICAgZHJhd1JHQkEocXVhZCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQ6Ci0gICAgICAgIGRyYXdOYXRpdmVUZXh0
dXJlKHF1YWQpOworICAgICAgICBkcmF3TmF0aXZlVGV4dHVyZTJEKHF1YWQpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRENocm9taXVtOjpHTF9URVhUVVJFX0VYVEVSTkFM
X09FUzoKKyAgICAgICAgZHJhd1N0cmVhbVRleHR1cmUocXVhZCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7IC8vIFNvbWVvbmUgdXBkYXRlZCBjb252ZXJ0
VkZDRm9ybWF0VG9HQzNERm9ybWF0IGFib3ZlIGJ1dCB1cGRhdGUgdGhpcyEKQEAgLTEzODQsNiAr
MTM5OSwxNiBAQCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpOYXRpdmVUZXh0dXJlUHJvZ3JhbSog
TGF5ZXJSZW5kZXJlckNocm9taXVtOjp2aWRlb0xheWVyTgogICAgIHJldHVybiBtX3ZpZGVvTGF5
ZXJOYXRpdmVUZXh0dXJlUHJvZ3JhbS5nZXQoKTsKIH0KIAorY29uc3QgQ0NWaWRlb0xheWVySW1w
bDo6U3RyZWFtVGV4dHVyZVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c3RyZWFtVGV4
dHVyZUxheWVyUHJvZ3JhbSgpCit7CisgICAgaWYgKCFtX3N0cmVhbVRleHR1cmVMYXllclByb2dy
YW0pCisgICAgICAgIG1fc3RyZWFtVGV4dHVyZUxheWVyUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBD
Q1ZpZGVvTGF5ZXJJbXBsOjpTdHJlYW1UZXh0dXJlUHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsK
KyAgICBpZiAoIW1fc3RyZWFtVGV4dHVyZUxheWVyUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewor
ICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzdHJlYW1UZXh0dXJl
TGF5ZXJQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIG1fc3RyZWFtVGV4
dHVyZUxheWVyUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOworICAgIH0KKyAg
ICByZXR1cm4gbV9zdHJlYW1UZXh0dXJlTGF5ZXJQcm9ncmFtLmdldCgpOworfQogCiB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMoKQogewpAQCAtMTQyNSw2
ICsxNDUwLDggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmpl
Y3RzKCkKICAgICAgICAgbV92aWRlb0xheWVyUkdCQVByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0
LmdldCgpKTsKICAgICBpZiAobV92aWRlb0xheWVyWVVWUHJvZ3JhbSkKICAgICAgICAgbV92aWRl
b0xheWVyWVVWUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOworICAgIGlmIChtX3N0
cmVhbVRleHR1cmVMYXllclByb2dyYW0pCisgICAgICAgIG1fc3RyZWFtVGV4dHVyZUxheWVyUHJv
Z3JhbS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOwogCiAgICAgbV9ib3JkZXJQcm9ncmFtLmNs
ZWFyKCk7CiAgICAgbV9oZWFkc1VwRGlzcGxheVByb2dyYW0uY2xlYXIoKTsKQEAgLTE0NDMsNiAr
MTQ3MCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0
cygpCiAgICAgbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBLmNsZWFyKCk7CiAgICAgbV92aWRlb0xh
eWVyUkdCQVByb2dyYW0uY2xlYXIoKTsKICAgICBtX3ZpZGVvTGF5ZXJZVVZQcm9ncmFtLmNsZWFy
KCk7CisgICAgbV9zdHJlYW1UZXh0dXJlTGF5ZXJQcm9ncmFtLmNsZWFyKCk7CiAgICAgaWYgKG1f
b2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkKICAgICAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9j
b250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCA4YzRiNmU5ZmU5MmE2ZmY4YWFl
ODU5NWQ0MzkwM2I5ODkwNWJlNDkzLi5lZTk4OTVhZTFkNGM5NGNkYTYzMTBkYzdiM2ZiMDQzZDI5
NWNiN2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtMTMwLDYgKzEz
MCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpSR0JBUHJvZ3JhbSog
dmlkZW9MYXllclJHQkFQcm9ncmFtKCk7CiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6WVVW
UHJvZ3JhbSogdmlkZW9MYXllcllVVlByb2dyYW0oKTsKICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJ
bXBsOjpOYXRpdmVUZXh0dXJlUHJvZ3JhbSogdmlkZW9MYXllck5hdGl2ZVRleHR1cmVQcm9ncmFt
KCk7CisgICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6U3RyZWFtVGV4dHVyZVByb2dyYW0qIHN0
cmVhbVRleHR1cmVMYXllclByb2dyYW0oKTsKIAogICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQaXhl
bHModm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0Jik7CiAKQEAgLTE3MCw4ICsxNzEsOSBAQCBw
cml2YXRlOgogICAgIE1hbmFnZWRUZXh0dXJlKiBnZXRPZmZzY3JlZW5MYXllclRleHR1cmUoKTsK
ICAgICB2b2lkIGNvcHlQbGFuZVRvVGV4dHVyZShjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqLCBjb25z
dCB2b2lkKiBwbGFuZSwgaW50IGluZGV4KTsKICAgICBib29sIGNvcHlGcmFtZVRvVGV4dHVyZXMo
Y29uc3QgQ0NWaWRlb0RyYXdRdWFkKik7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgUHJvZ3JhbT4gdm9p
ZCBkcmF3U2luZ2xlVGV4dHVyZVZpZGVvUXVhZChjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqLCBQcm9n
cmFtKiwgZmxvYXQgd2lkdGhTY2FsZUZhY3RvciwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQp
OwotICAgIHZvaWQgZHJhd05hdGl2ZVRleHR1cmUoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKik7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgUHJvZ3JhbT4gdm9pZCBkcmF3U2luZ2xlVGV4dHVyZVZpZGVvUXVh
ZChjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqLCBQcm9ncmFtKiwgZmxvYXQgd2lkdGhTY2FsZUZhY3Rv
ciwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIEdDM0RlbnVtIHRhcmdldCk7CisgICAgdm9p
ZCBkcmF3TmF0aXZlVGV4dHVyZTJEKGNvbnN0IENDVmlkZW9EcmF3UXVhZCopOworICAgIHZvaWQg
ZHJhd1N0cmVhbVRleHR1cmUoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKik7CiAgICAgdm9pZCBkcmF3
UkdCQShjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdZVVYoY29uc3QgQ0NW
aWRlb0RyYXdRdWFkKik7CiAKQEAgLTIzMyw2ICsyMzUsNyBAQCBwcml2YXRlOgogICAgIE93blB0
cjxDQ1ZpZGVvTGF5ZXJJbXBsOjpSR0JBUHJvZ3JhbT4gbV92aWRlb0xheWVyUkdCQVByb2dyYW07
CiAgICAgT3duUHRyPENDVmlkZW9MYXllckltcGw6OllVVlByb2dyYW0+IG1fdmlkZW9MYXllcllV
VlByb2dyYW07CiAgICAgT3duUHRyPENDVmlkZW9MYXllckltcGw6Ok5hdGl2ZVRleHR1cmVQcm9n
cmFtPiBtX3ZpZGVvTGF5ZXJOYXRpdmVUZXh0dXJlUHJvZ3JhbTsKKyAgICBPd25QdHI8Q0NWaWRl
b0xheWVySW1wbDo6U3RyZWFtVGV4dHVyZVByb2dyYW0+IG1fc3RyZWFtVGV4dHVyZUxheWVyUHJv
Z3JhbTsKIAogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gbV9yZW5kZXJTdXJmYWNlVGV4dHVy
ZU1hbmFnZXI7CiAgICAgT3duUHRyPFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4gbV9jb250ZW50
c1RleHR1cmVBbGxvY2F0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAKaW5kZXggZjY5YjZiMThh
YTc5YmU5NzU4OGFhYWJhZDg5MzM0Y2QzMjIyZjY2NC4uNzFkNGQxZmQxOGQ5ODYyMWQyY2M0YjQ5
YWY5ZGFlY2Q2MTVlYzc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcApAQCAtMjU1LDYgKzI1
NSwzOSBAQCBTdHJpbmcgVmVydGV4U2hhZGVyVGlsZTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QK
ICAgICApOwogfQogCitWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6VmVydGV4U2hhZGVyVmlk
ZW9UcmFuc2Zvcm0oKQorICAgIDogbV9tYXRyaXhMb2NhdGlvbigtMSkKKyAgICAsIG1fdGV4VHJh
bnNmb3JtTG9jYXRpb24oLTEpCisgICAgLCBtX3RleE1hdHJpeExvY2F0aW9uKC0xKQoreworfQor
Citib29sIFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtOjppbml0KEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQoreworICAgIG1fbWF0cml4TG9jYXRpb24gPSBj
b250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgIm1hdHJpeCIpOworICAgIG1fdGV4
VHJhbnNmb3JtTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
InRleFRyYW5zZm9ybSIpOworICAgIG1fdGV4TWF0cml4TG9jYXRpb24gPSBjb250ZXh0LT5nZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleE1hdHJpeCIpOworICAgIHJldHVybiBtX21hdHJp
eExvY2F0aW9uICE9IC0xICYmIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24gIT0gLTEgJiYgbV90ZXhN
YXRyaXhMb2NhdGlvbiAhPSAtMTsKK30KKworU3RyaW5nIFZlcnRleFNoYWRlclZpZGVvVHJhbnNm
b3JtOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBTSEFERVIoCisgICAg
ICAgIGF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247CisgICAgICAgIGF0dHJpYnV0ZSB2ZWMyIGFf
dGV4Q29vcmQ7CisgICAgICAgIHVuaWZvcm0gbWF0NCBtYXRyaXg7CisgICAgICAgIHVuaWZvcm0g
dmVjNCB0ZXhUcmFuc2Zvcm07CisgICAgICAgIHVuaWZvcm0gbWF0NCB0ZXhNYXRyaXg7CisgICAg
ICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOworICAgICAgICB2b2lkIG1haW4oKQorICAgICAg
ICB7CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IG1hdHJpeCAqIGFfcG9zaXRpb247CisgICAg
ICAgICAgICB2ZWMyIHRleENvb3JkID0gdmVjMih0ZXhNYXRyaXggKiB2ZWM0KGFfdGV4Q29vcmQu
eCwgMS4wIC0gYV90ZXhDb29yZC55LCAwLjAsIDEuMCkpOworICAgICAgICAgICAgdl90ZXhDb29y
ZCA9IHRleENvb3JkICogdGV4VHJhbnNmb3JtLnp3ICsgdGV4VHJhbnNmb3JtLnh5OworICAgICAg
ICB9CisgICAgKTsKK30KKwogRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmc6OkZyYWdtZW50VGV4QWxw
aGFCaW5kaW5nKCkKICAgICA6IG1fc2FtcGxlckxvY2F0aW9uKC0xKQogICAgICwgbV9hbHBoYUxv
Y2F0aW9uKC0xKQpAQCAtMjk2LDYgKzMyOSwyNyBAQCBTdHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JB
VGV4RmxpcEFscGhhOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAogICAgICk7CiB9CiAKK2Jvb2wg
RnJhZ21lbnRTaGFkZXJPRVNJbWFnZUV4dGVybmFsOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQoreworICAgIG1fc2FtcGxlckxvY2F0aW9uID0gY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX3RleHR1cmUiKTsKKworICAgIHJl
dHVybiBtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMTsKK30KKworU3RyaW5nIEZyYWdtZW50U2hhZGVy
T0VTSW1hZ2VFeHRlcm5hbDo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKK3sKKyAgICAvLyBDYW5u
b3QgdXNlIHRoZSBTSEFERVIoKSBtYWNybyBiZWNhdXNlIG9mIHRoZSAnIycgY2hhcgorICAgIHJl
dHVybiAiI2V4dGVuc2lvbiBHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIDogcmVxdWlyZSBcbiIK
KyAgICAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAgICAidmFy
eWluZyB2ZWMyIHZfdGV4Q29vcmQ7XG4iCisgICAgICAgICAgICJ1bmlmb3JtIHNhbXBsZXJFeHRl
cm5hbE9FUyBzX3RleHR1cmU7XG4iCisgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAg
ICAgICAie1xuIgorICAgICAgICAgICAiICAgIHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190
ZXh0dXJlLCB2X3RleENvb3JkKTtcbiIKKyAgICAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KHRleENvbG9yLngsIHRleENvbG9yLnksIHRleENvbG9yLnosIHRleENvbG9yLncpO1xuIgor
ICAgICAgICAgICAifVxuIjsKK30KKwogU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhh
OjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAogewogICAgIHJldHVybiBTSEFERVIoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVy
Q2hyb21pdW0uaAppbmRleCAzNDMyM2U2ZDMzOTk3N2VlM2Y1NWQyOTA1OWE4M2ZlYTBlZmVjNWRh
Li45NDk5YWM3ZmQ3MjFiYzQ5ZDBkNDU3ZGExYTJhMWM5ZWM1ZjI2YmU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNo
cm9taXVtLmgKQEAgLTE0NSw2ICsxNDUsMjMgQEAgcHJpdmF0ZToKICAgICBpbnQgbV92ZXJ0ZXhU
ZXhUcmFuc2Zvcm1Mb2NhdGlvbjsKIH07CiAKK2NsYXNzIFZlcnRleFNoYWRlclZpZGVvVHJhbnNm
b3JtIHsKK3B1YmxpYzoKKyAgICBWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybSgpOworCisgICAg
Ym9vbCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgU3Ry
aW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OworCisgICAgaW50IG1hdHJpeExvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbjsgfQorICAgIGludCB0ZXhUcmFuc2Zvcm1M
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4VHJhbnNmb3JtTG9jYXRpb247IH0KKyAgICBp
bnQgdGV4TWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3RleE1hdHJpeExvY2F0aW9u
OyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fbWF0cml4TG9jYXRpb247CisgICAgaW50IG1fdGV4
VHJhbnNmb3JtTG9jYXRpb247CisgICAgaW50IG1fdGV4TWF0cml4TG9jYXRpb247Cit9OworCiBj
bGFzcyBGcmFnbWVudFRleEFscGhhQmluZGluZyB7CiBwdWJsaWM6CiAgICAgRnJhZ21lbnRUZXhB
bHBoYUJpbmRpbmcoKTsKQEAgLTIxMSw2ICsyMjgsMTUgQEAgcHVibGljOgogICAgIFN0cmluZyBn
ZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIH07CiAKKy8vIEZyYWdtZW50IHNoYWRlciBmb3IgZXh0
ZXJuYWwgdGV4dHVyZXMuCitjbGFzcyBGcmFnbWVudFNoYWRlck9FU0ltYWdlRXh0ZXJuYWwgOiBw
dWJsaWMgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcgeworcHVibGljOgorICAgIFN0cmluZyBnZXRT
aGFkZXJTdHJpbmcoKSBjb25zdDsKKyAgICBib29sIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1
bnNpZ25lZCBwcm9ncmFtKTsKK3ByaXZhdGU6CisgICAgaW50IG1fc2FtcGxlckxvY2F0aW9uOwor
fTsKKwogY2xhc3MgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQSB7CiBwdWJsaWM6CiAgICAg
RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lQ2hyb21pdW0u
aAppbmRleCBjNGFiZDk2OWQxZWQxMWQ3ODQzN2Q1MDljMzRkYWQ5NWVkOTM0MmIyLi4yZDc2YzQ3
NTU4ZTBiOGI0YzRlODRkMDRjODA0MzkyY2RhNTQ2YzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lQ2hy
b21pdW0uaApAQCAtNzUsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBJbnRT
aXplIHJlcXVpcmVkVGV4dHVyZVNpemUodW5zaWduZWQgcGxhbmUpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgaGFzUGFkZGluZ0J5dGVzKHVuc2lnbmVkIHBsYW5lKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1
bnNpZ25lZCB0ZXh0dXJlVGFyZ2V0KCkgY29uc3QgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lUHJvdmlkZXIuaAppbmRleCAzZDQzYTkwYzM3YTYzN2Fj
ZTdjYzczMjE3NjNkZTRhMzk3OTk0MWRkLi45Nzk0Nzk0YTdiN2RmNTMzMzMzM2MwYTE0ZGYyNTFh
Njc0OGM5OTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9WaWRlb0ZyYW1lUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lUHJvdmlkZXIuaApAQCAtNDMsNiArNDMsOCBA
QCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICAvLyBQcm92aWRlciB3aWxsIGNhbGwgdGhp
cyBtZXRob2QgdG8gdGVsbCB0aGUgY2xpZW50IHRvIHN0b3AgdXNpbmcgaXQuCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBzdG9wVXNpbmdQcm92aWRlcigpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVGcmFtZSgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZU1h
dHJpeChjb25zdCBmbG9hdCopID0gMDsKICAgICB9OwogCiAgICAgdmlydHVhbCB2b2lkIHNldFZp
ZGVvRnJhbWVQcm92aWRlckNsaWVudChDbGllbnQqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0Ry
YXdRdWFkLmNwcAppbmRleCAxZjk2ZTFiMTIzZDBkMTcxMmNiOTY5YzkyZjAyZmI1OWE4OTBlYWZl
Li5iYTU3MzQ5MDk4NzVjNWRjY2NmODlhYjIwMzRjNDBlNDU5ZGY3Mjk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVmlkZW9EcmF3UXVhZC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAgQ0NWaWRlb0RyYXdRdWFkOjpD
Q1ZpZGVvRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Y29uc3QKICAgICAsIG1fdGV4dHVyZXModGV4dHVyZXMpCiAgICAgLCBtX2ZyYW1lKGZyYW1lKQog
ICAgICwgbV9mb3JtYXQoZm9ybWF0KQorICAgICwgbV9tYXRyaXgoMCkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRl
b0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1ZpZGVvRHJhd1F1YWQuaAppbmRleCAxNjVhYTYwZGM0NzdiYjk5NzNiYmVhNGY0MDdhZDY2
ODA2ZGMwNTk2Li5hZWY3ODQ3MmE0MGFjNmJlZjU0ODIzZmJhNDMwNDA2MzM2MTZkNDUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Zp
ZGVvRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuaApAQCAtNDEsNiArNDEsOSBAQCBwdWJsaWM6CiAgICAg
Q0NWaWRlb0xheWVySW1wbDo6VGV4dHVyZSogdGV4dHVyZXMoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHR1cmVzOyB9CiAgICAgVmlkZW9GcmFtZUNocm9taXVtKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhbWU7IH0KICAgICBHQzNEZW51bSBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1h
dDsgfQorICAgIGNvbnN0IGZsb2F0KiBtYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeDsg
fQorCisgICAgdm9pZCBzZXRNYXRyaXgoY29uc3QgZmxvYXQqIG1hdHJpeCkgeyBtX21hdHJpeCA9
IG1hdHJpeDsgfQogCiBwcml2YXRlOgogICAgIENDVmlkZW9EcmF3UXVhZChjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBDQ1ZpZGVvTGF5ZXJJbXBsOjpUZXh0dXJlKiB0
ZXh0dXJlcywgVmlkZW9GcmFtZUNocm9taXVtKiwgR0MzRGVudW0gZm9ybWF0KTsKQEAgLTQ4LDYg
KzUxLDcgQEAgcHJpdmF0ZToKICAgICBDQ1ZpZGVvTGF5ZXJJbXBsOjpUZXh0dXJlKiBtX3RleHR1
cmVzOwogICAgIFZpZGVvRnJhbWVDaHJvbWl1bSogbV9mcmFtZTsKICAgICBHQzNEZW51bSBtX2Zv
cm1hdDsKKyAgICBjb25zdCBmbG9hdCogbV9tYXRyaXg7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VmlkZW9MYXllckltcGwuY3BwCmluZGV4IDczMTliMTU3YWNmYWFiMDJhYjY4YjFmYzFmMDA5N2E2
ZDFlMWE3MDQuLjY3NTQ4OTQ4NDE1Zjk1MTFjZDZjMmZjMDE4NmJkOTg2NjlhNzRhYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlk
ZW9MYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCkBAIC02MiwxMCArNjIsMjEgQEAgY29uc3Qg
ZmxvYXQgQ0NWaWRlb0xheWVySW1wbDo6eXV2QWRqdXN0WzNdID0gewogICAgIC0wLjVmLAogfTsK
IAorLy8gVGhpcyBtYXRyaXggaXMgdGhlIGRlZmF1bHQgdHJhbnNmb3JtYXRpb24gZm9yIHN0cmVh
bSB0ZXh0dXJlcy4KK2NvbnN0IGZsb2F0IENDVmlkZW9MYXllckltcGw6OmZsaXBUcmFuc2Zvcm1b
MTZdID0geworICAgIDEsIDAsIDAsIDAsCisgICAgMCwgLTEsIDAsIDAsCisgICAgMCwgMCwgMSwg
MCwKKyAgICAwLCAxLCAwLCAxLAorfTsKKwogQ0NWaWRlb0xheWVySW1wbDo6Q0NWaWRlb0xheWVy
SW1wbChpbnQgaWQsIFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCiAgICAgOiBDQ0xheWVy
SW1wbChpZCkKICAgICAsIG1fcHJvdmlkZXIocHJvdmlkZXIpCisgICAgLCBtX2xheWVyVHJlZUhv
c3RJbXBsKDApCisgICAgLCBtX2ZyYW1lKDApCiB7CisgICAgbWVtY3B5KG1fc3RyZWFtVGV4dHVy
ZU1hdHJpeCwgZmxpcFRyYW5zZm9ybSwgc2l6ZW9mKG1fc3RyZWFtVGV4dHVyZU1hdHJpeCkpOwog
ICAgIHByb3ZpZGVyLT5zZXRWaWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQodGhpcyk7CiB9CiAKQEAg
LTg4LDE2ICs5OSwxNiBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OnN0b3BVc2luZ1Byb3ZpZGVy
KCkKIH0KIAogLy8gQ29udmVydCBWaWRlb0ZyYW1lQ2hyb21pdW06OkZvcm1hdCB0byBHcmFwaGlj
c0NvbnRleHQzRCdzIGZvcm1hdCBlbnVtIHZhbHVlcy4KLXN0YXRpYyBHQzNEZW51bSBjb252ZXJ0
VkZDRm9ybWF0VG9HQzNERm9ybWF0KFZpZGVvRnJhbWVDaHJvbWl1bTo6Rm9ybWF0IGZvcm1hdCkK
K3N0YXRpYyBHQzNEZW51bSBjb252ZXJ0VkZDRm9ybWF0VG9HQzNERm9ybWF0KGNvbnN0IFZpZGVv
RnJhbWVDaHJvbWl1bSogZnJhbWUpCiB7Ci0gICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBzd2l0
Y2ggKGZyYW1lLT5mb3JtYXQoKSkgewogICAgIGNhc2UgVmlkZW9GcmFtZUNocm9taXVtOjpZVjEy
OgogICAgIGNhc2UgVmlkZW9GcmFtZUNocm9taXVtOjpZVjE2OgogICAgICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0M0Q6OkxVTUlOQU5DRTsKICAgICBjYXNlIFZpZGVvRnJhbWVDaHJvbWl1bTo6
UkdCQToKICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwogICAgIGNhc2Ug
VmlkZW9GcmFtZUNocm9taXVtOjpOYXRpdmVUZXh0dXJlOgotICAgICAgICByZXR1cm4gR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQ7CisgICAgICAgIHJldHVybiBmcmFtZS0+dGV4dHVyZVRh
cmdldCgpOwogICAgIGNhc2UgVmlkZW9GcmFtZUNocm9taXVtOjpJbnZhbGlkOgogICAgIGNhc2Ug
VmlkZW9GcmFtZUNocm9taXVtOjpSR0I1NTU6CiAgICAgY2FzZSBWaWRlb0ZyYW1lQ2hyb21pdW06
OlJHQjU2NToKQEAgLTExOCwxNSArMTI5LDE3IEBAIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6d2ls
bERyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogCiAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fcHJvdmlkZXJNdXRleCk7CiAKLSAgICBpZiAoIW1fcHJvdmlkZXIpCisg
ICAgaWYgKCFtX3Byb3ZpZGVyKSB7CisgICAgICAgIG1fZnJhbWUgPSAwOwogICAgICAgICByZXR1
cm47CisgICAgfQogCiAgICAgbV9mcmFtZSA9IG1fcHJvdmlkZXItPmdldEN1cnJlbnRGcmFtZSgp
OwogCiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Zvcm1hdCA9
IGNvbnZlcnRWRkNGb3JtYXRUb0dDM0RGb3JtYXQobV9mcmFtZS0+Zm9ybWF0KCkpOworICAgIG1f
Zm9ybWF0ID0gY29udmVydFZGQ0Zvcm1hdFRvR0MzREZvcm1hdChtX2ZyYW1lKTsKIAogICAgIGlm
IChtX2Zvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSkgewogICAgICAg
ICBtX3Byb3ZpZGVyLT5wdXRDdXJyZW50RnJhbWUobV9mcmFtZSk7CkBAIC0xNDMsNyArMTU2LDEy
IEBAIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6d2lsbERyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVt
KiBsYXllclJlbmRlcmVyKQogdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1
YWRMaXN0JiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0
ZSkKIHsKICAgICBJbnRSZWN0IHF1YWRSZWN0KEludFBvaW50KCksIGJvdW5kcygpKTsKLSAgICBx
dWFkTGlzdC5hcHBlbmQoQ0NWaWRlb0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBx
dWFkUmVjdCwgbV90ZXh0dXJlcywgbV9mcmFtZSwgbV9mb3JtYXQpKTsKKyAgICBPd25QdHI8Q0NW
aWRlb0RyYXdRdWFkPiB2aWRlb1F1YWQgPSBDQ1ZpZGVvRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRR
dWFkU3RhdGUsIHF1YWRSZWN0LCBtX3RleHR1cmVzLCBtX2ZyYW1lLCBtX2Zvcm1hdCk7CisKKyAg
ICBpZiAobV9mb3JtYXQgPT0gRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdMX1RFWFRVUkVfRVhURVJO
QUxfT0VTKQorICAgICAgICB2aWRlb1F1YWQtPnNldE1hdHJpeChtX3N0cmVhbVRleHR1cmVNYXRy
aXgpOworCisgICAgcXVhZExpc3QuYXBwZW5kKHZpZGVvUXVhZC5yZWxlYXNlKCkpOwogfQogCiB2
b2lkIENDVmlkZW9MYXllckltcGw6OmRpZERyYXcoKQpAQCAtMjEzLDYgKzIzMSwyMyBAQCBib29s
IENDVmlkZW9MYXllckltcGw6OnJlc2VydmVUZXh0dXJlcyhjb25zdCBWaWRlb0ZyYW1lQ2hyb21p
dW0qIGZyYW1lLCBHQzNEZW51bQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIENDVmlkZW9M
YXllckltcGw6OmRpZFJlY2VpdmVGcmFtZSgpCit7CisgICAgc2V0TmVlZHNSZWRyYXcoKTsKK30K
Kwordm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpkaWRVcGRhdGVNYXRyaXgoY29uc3QgZmxvYXQgbWF0
cml4WzE2XSkKK3sKKyAgICBtZW1jcHkobV9zdHJlYW1UZXh0dXJlTWF0cml4LCBtYXRyaXgsIHNp
emVvZihtX3N0cmVhbVRleHR1cmVNYXRyaXgpKTsKKyAgICBzZXROZWVkc1JlZHJhdygpOworfQor
Cit2b2lkIENDVmlkZW9MYXllckltcGw6OnNldE5lZWRzUmVkcmF3KCkKK3sKKyAgICBpZiAobV9s
YXllclRyZWVIb3N0SW1wbCkKKyAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c2V0TmVlZHNS
ZWRyYXcoKTsKK30KKwogdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpkdW1wTGF5ZXJQcm9wZXJ0aWVz
KFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdAogewogICAgIHdyaXRlSW5kZW50KHRz
LCBpbmRlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCmluZGV4IDM5ZmMyZjZjMDgz
ZGFkZmNlM2NlM2U3YWFhZjBhMjJiYTlhYzI4OGMuLmNhYTcyZGZiOTI3NGZiMDhiYjgzN2EyZWI4
ZjkyOWIxNjU5NjhhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKQEAgLTM1LDYg
KzM1LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDQ0xheWVyVHJlZUhvc3RJ
bXBsOworY2xhc3MgQ0NWaWRlb0xheWVySW1wbDsKKwogdGVtcGxhdGU8Y2xhc3MgVmVydGV4U2hh
ZGVyLCBjbGFzcyBGcmFnbWVudFNoYWRlcj4gY2xhc3MgUHJvZ3JhbUJpbmRpbmc7CiAKIGNsYXNz
IENDVmlkZW9MYXllckltcGwgOiBwdWJsaWMgQ0NMYXllckltcGwKQEAgLTUzLDE3ICs1NiwyMyBA
QCBwdWJsaWM6CiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhU
cmFuc2Zvcm0sIEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYT4gUkdCQVByb2dyYW07CiAg
ICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZTdHJldGNoLCBG
cmFnbWVudFNoYWRlcllVVlZpZGVvPiBZVVZQcm9ncmFtOwogICAgIHR5cGVkZWYgUHJvZ3JhbUJp
bmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtLCBGcmFnbWVudFNoYWRlclJHQkFUZXhG
bGlwQWxwaGE+IE5hdGl2ZVRleHR1cmVQcm9ncmFtOworICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRp
bmc8VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm0sIEZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRl
cm5hbD4gU3RyZWFtVGV4dHVyZVByb2dyYW07CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcExheWVy
UHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3Q7CiAKICAgICBNdXRleCYg
cHJvdmlkZXJNdXRleCgpIHsgcmV0dXJuIG1fcHJvdmlkZXJNdXRleDsgfQogICAgIFZpZGVvRnJh
bWVQcm92aWRlciogcHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb3ZpZGVyOyB9CiAKLSAg
ICAvLyBWaWRlb0ZyYW1lUHJvdmlkZXI6OkNsaWVudCBpbXBsZW1lbnRhdGlvbiAoY2FsbGFibGUg
b24gYW55IHRocmVhZCkuCi0gICAgdmlydHVhbCB2b2lkIHN0b3BVc2luZ1Byb3ZpZGVyKCk7Cisg
ICAgLy8gVmlkZW9GcmFtZVByb3ZpZGVyOjpDbGllbnQgaW1wbGVtZW50YXRpb24uCisgICAgdmly
dHVhbCB2b2lkIHN0b3BVc2luZ1Byb3ZpZGVyKCk7IC8vIENhbGxhYmxlIG9uIGFueSB0aHJlYWQu
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVGcmFtZSgpOyAvLyBDYWxsYWJsZSBvbiBpbXBs
IHRocmVhZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlTWF0cml4KGNvbnN0IGZsb2F0Kik7
IC8vIENhbGxhYmxlIG9uIGltcGwgdGhyZWFkLgorCisgICAgdm9pZCBzZXROZWVkc1JlZHJhdygp
OwogCiAgICAgc3RhdGljIGNvbnN0IGZsb2F0IHl1djJSR0JbOV07CiAgICAgc3RhdGljIGNvbnN0
IGZsb2F0IHl1dkFkanVzdFszXTsKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQgZmxpcFRyYW5zZm9y
bVsxNl07CiAKICAgICBzdHJ1Y3QgVGV4dHVyZSB7CiAgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4
dHVyZT4gbV90ZXh0dXJlOwpAQCAtODQsNiArOTMsOSBAQCBwcml2YXRlOgogCiAgICAgVGV4dHVy
ZSBtX3RleHR1cmVzW01heFBsYW5lc107CiAKKyAgICBmbG9hdCBtX3N0cmVhbVRleHR1cmVNYXRy
aXhbMTZdOworICAgIENDTGF5ZXJUcmVlSG9zdEltcGwqIG1fbGF5ZXJUcmVlSG9zdEltcGw7CisK
ICAgICBWaWRlb0ZyYW1lQ2hyb21pdW0qIG1fZnJhbWU7CiAgICAgR0MzRGVudW0gbV9mb3JtYXQ7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGE0MWM2ZDA3Mzg2MzEwNTI4ZDkz
NTE5Yjg0ODY4ZWM1M2JhN2Q4YjYuLjI1NTcxNTMxMWQ1MGU3NjNmMTdlYTMxN2MxNDkzMDVjODM2
YzhiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTI1Niw2ICsyNTYsNyBAQAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RvcmFnZU5hbWVzcGFjZS5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYlN0b3JhZ2VRdW90YUNhbGxiYWNrcy5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYlN0b3JhZ2VRdW90YVR5cGUuaCcsCisgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJTdHJlYW1UZXh0dXJlQ2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViVGV4dEFmZmluaXR5LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dENhc2VT
ZW5zaXRpdml0eS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRDaGVja2luZ0Nv
bXBsZXRpb24uaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJNZWRpYVBsYXllci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQ
bGF5ZXIuaAppbmRleCA5YWFmMWEzZDA5NWRjYjA5OGY4M2RjYjI0ODI0ZWEzNjY2MjY1YmEzLi4y
MzkxMzQ5NjM4Y2JhNGYyOWExNTEzZmU1OTg2YzgyNWE3ODU3YTIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgKQEAgLTQwLDYgKzQwLDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyOwogY2xhc3Mg
V2ViQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudDsKIGNsYXNzIFdlYk1lZGlhUGxheWVyQ2xpZW50
OworY2xhc3MgV2ViU3RyZWFtVGV4dHVyZUNsaWVudDsKIGNsYXNzIFdlYlVSTDsKIHN0cnVjdCBX
ZWJSZWN0Owogc3RydWN0IFdlYlNpemU7CkBAIC0xNjIsNiArMTYzLDggQEAgcHVibGljOgogICAg
IC8vIG1ldGhvZCBzaG91bGQgbm8gbG9uZ2VyIGJlIHJlZmVyZW5jZWQgYWZ0ZXIgdGhlIGNhbGwg
aXMgbWFkZS4KICAgICB2aXJ0dWFsIHZvaWQgcHV0Q3VycmVudEZyYW1lKFdlYlZpZGVvRnJhbWUq
KSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBzZXRTdHJlYW1UZXh0dXJlQ2xpZW50KFdlYlN0cmVh
bVRleHR1cmVDbGllbnQqKSB7IH0KKwogICAgIHZpcnR1YWwgV2ViQXVkaW9Tb3VyY2VQcm92aWRl
ciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIHsgcmV0dXJuIDA7IH0KIAogICAgIHZpcnR1YWwgYm9v
bCBzb3VyY2VBcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViU3RyZWFtVGV4dHVyZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViU3RyZWFtVGV4dHVyZUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxMDAyZmIyNmFkNzkz
ZGE2ZDZhNDY4ODYwYzBmMGFkZWU3MzRlNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTdHJlYW1UZXh0dXJlQ2xpZW50LmgKQEAgLTAsMCArMSw0
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
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
CisKKyNpZm5kZWYgV2ViU3RyZWFtVGV4dHVyZUNsaWVudF9oCisjZGVmaW5lIFdlYlN0cmVhbVRl
eHR1cmVDbGllbnRfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU3RyZWFtVGV4
dHVyZUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVGcmFtZSgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlTWF0cml4KGNvbnN0IGZsb2F0KikgPSAw
OworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+V2ViU3RyZWFtVGV4dHVyZUNsaWVudCgpIHsg
fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZS5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZS5oCmluZGV4IDhlM2IyY2RiZDJiZDFiOTZk
ZWM3ZDc5MmI4YjhjMmE5Y2Y2NjU0YjEuLmUyNzNkNDRmMDVhMmMxMzg5N2ZlYzRkNzA3ZjFjNTEw
ZTc0OWJmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZp
ZGVvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0Zy
YW1lLmgKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgICAgICBGb3JtYXRBU0NJSSwKICAg
ICAgICAgRm9ybWF0STQyMCwKICAgICAgICAgRm9ybWF0TmF0aXZlVGV4dHVyZSwKKyAgICAgICAg
Rm9ybWF0RXh0ZXJuYWxUZXh0dXJlLAogICAgIH07CiAKICAgICB2aXJ0dWFsIH5XZWJWaWRlb0Zy
YW1lKCkgeyB9CkBAIC02MSw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBzdHJp
ZGUodW5zaWduZWQgcGxhbmUpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGNvbnN0
IHZvaWQqIGRhdGEodW5zaWduZWQgcGxhbmUpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0
dWFsIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFs
IHVuc2lnbmVkIHRleHR1cmVUYXJnZXQoKSBjb25zdCB7IHJldHVybiAwOyB9CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
VmlkZW9GcmFtZUNocm9taXVtSW1wbC5jcHAKaW5kZXggY2UzODlhZGM2MTQ2YTQ1OTc4OTAyZTM4
YjQzZjkyNmExMWYxMTY3Mi4uZmNjZTkzOWY3MzM3Zjc5YjM3MDhlOGE5YWE3ZmM5YTgwY2UzNjgw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVmlkZW9GcmFtZUNocm9t
aXVtSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVmlkZW9GcmFtZUNo
cm9taXVtSW1wbC5jcHAKQEAgLTEyOCw0ICsxMjgsMTEgQEAgdW5zaWduZWQgVmlkZW9GcmFtZUNo
cm9taXVtSW1wbDo6dGV4dHVyZUlkKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAordW5zaWdu
ZWQgVmlkZW9GcmFtZUNocm9taXVtSW1wbDo6dGV4dHVyZVRhcmdldCgpIGNvbnN0Cit7CisgICAg
aWYgKG1fd2ViVmlkZW9GcmFtZSkKKyAgICAgICAgcmV0dXJuIG1fd2ViVmlkZW9GcmFtZS0+dGV4
dHVyZVRhcmdldCgpOworICAgIHJldHVybiAwOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1
bUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUlt
cGwuaAppbmRleCA0NDZhYjVmNTQzMGQ1MWU2MjdlZjA3ZjNjZTQ1NzhmNTlhMThjZDU1Li42Nzky
MDg2NmZjNGRhMTE1Yjg3Y2VjYTkxMmUyNmEwOWEzNjQ0OTk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5oCkBAIC01OCw2ICs1
OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IFdlYkNvcmU6OkludFNpemUgcmVxdWly
ZWRUZXh0dXJlU2l6ZSh1bnNpZ25lZCBwbGFuZSkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGhh
c1BhZGRpbmdCeXRlcyh1bnNpZ25lZCBwbGFuZSkgY29uc3Q7CiAgICAgdmlydHVhbCB1bnNpZ25l
ZCB0ZXh0dXJlSWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHRleHR1cmVUYXJnZXQo
KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBXZWJWaWRlb0ZyYW1lKiBtX3dlYlZpZGVvRnJhbWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNs
aWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsLmNwcAppbmRleCA5OTZlNzA3MTAwYWE5MWI5NjY1MzVkYzA4YzkzYzE5NTUwM2Yz
OTU5Li5mMzY0N2U0ODkyMDBjMjk5M2Q0YjkwZDI1NGQ5ODQzMDgyZDgxYzI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1w
bC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJXZWJNZWRpYUVsZW1lbnQuaCIKICNp
bmNsdWRlICJXZWJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCisjaW5j
bHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNTdHJpbmcuaCIKICNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJDYW52YXMuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQ
bGF0Zm9ybVN1cHBvcnQuaCIKQEAgLTEwNSw2ICsxMDYsNyBAQCBXZWJNZWRpYVBsYXllckNsaWVu
dEltcGw6On5XZWJNZWRpYVBsYXllckNsaWVudEltcGwoKQogICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX2NvbXBvc2l0aW5nTXV0ZXgpOwogICAgIGlmIChtX3ZpZGVvRnJhbWVQcm92aWRlckNsaWVu
dCkKICAgICAgICAgbV92aWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQtPnN0b3BVc2luZ1Byb3ZpZGVy
KCk7CisgICAgbV93ZWJNZWRpYVBsYXllci0+c2V0U3RyZWFtVGV4dHVyZUNsaWVudCgwKTsKICNl
bmRpZgogfQogCkBAIC01OTcsNiArNTk5LDcgQEAgdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudElt
cGw6OnNldFZpZGVvRnJhbWVQcm92aWRlckNsaWVudChWaWRlb0ZyYW1lUHJvdmlkZXI6OkMKIHsK
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV9jb21wb3NpdGluZ011dGV4KTsKICAgICBtX3ZpZGVv
RnJhbWVQcm92aWRlckNsaWVudCA9IGNsaWVudDsKKyAgICBtX3dlYk1lZGlhUGxheWVyLT5zZXRT
dHJlYW1UZXh0dXJlQ2xpZW50KGNsaWVudCA/IHRoaXMgOiAwKTsKIH0KIAogVmlkZW9GcmFtZUNo
cm9taXVtKiBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmdldEN1cnJlbnRGcmFtZSgpCkBAIC02
NzksNiArNjgyLDIwIEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzdGFydERlbGF5
ZWRMb2FkKCkKICAgICBsb2FkSW50ZXJuYWwoKTsKIH0KIAordm9pZCBXZWJNZWRpYVBsYXllckNs
aWVudEltcGw6OmRpZFJlY2VpdmVGcmFtZSgpCit7CisgICAgLy8gTm8gbG9jayBzaW5jZSB0aGlz
IGdldHMgY2FsbGVkIG9uIHRoZSBjbGllbnQncyB0aHJlYWQuCisgICAgQVNTRVJUKENDUHJveHk6
OmlzSW1wbFRocmVhZCgpKTsKKyAgICBtX3ZpZGVvRnJhbWVQcm92aWRlckNsaWVudC0+ZGlkUmVj
ZWl2ZUZyYW1lKCk7Cit9CisKK3ZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpkaWRVcGRh
dGVNYXRyaXgoY29uc3QgZmxvYXQqIG1hdHJpeCkKK3sKKyAgICAvLyBObyBsb2NrIHNpbmNlIHRo
aXMgZ2V0cyBjYWxsZWQgb24gdGhlIGNsaWVudCdzIHRocmVhZC4KKyAgICBBU1NFUlQoQ0NQcm94
eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIG1fdmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50LT5kaWRV
cGRhdGVNYXRyaXgobWF0cml4KTsKK30KKwogV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpXZWJN
ZWRpYVBsYXllckNsaWVudEltcGwoKQogICAgIDogbV9tZWRpYVBsYXllcigwKQogICAgICwgbV9k
ZWxheWluZ0xvYWQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCmluZGV4IGU3NWU3M2FlMTM1NWM2ZWE0NzcxZDA0
N2FmODU2ODhkNTU3NGU3OGEuLmQ4NWUwZDFmYzU5ZmFhYjRmNTgwNmM1MjE3ZGZlZTczZTY1N2Fm
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbC5oCkBAIC00MCw3ICs0MCw5IEBACiAjaW5jbHVkZSAiVmlkZW9MYXllckNo
cm9taXVtLmgiCiAjaW5jbHVkZSAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudC5oIgogI2lu
Y2x1ZGUgIldlYk1lZGlhUGxheWVyQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViU3RyZWFtVGV4dHVy
ZUNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEF1ZGlvU291cmNlUHJvdmlkZXJD
bGllbnQ7IH0KIApAQCAtNTYsNyArNTgsOCBAQCBjbGFzcyBXZWJNZWRpYVBsYXllckNsaWVudElt
cGwgOiBwdWJsaWMgV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICwgcHVibGljIFdlYkNvcmU6OlZpZGVvRnJhbWVQcm92aWRlcgogI2VuZGlmCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgV2ViTWVkaWFQbGF5ZXJDbGllbnQgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIFdlYk1lZGlhUGxheWVyQ2xpZW50
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgV2ViU3RyZWFtVGV4dHVy
ZUNsaWVudCB7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0VuYWJsZWQoKTsKQEAgLTE1
MCw2ICsxNTMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VFbmRPZlN0cmVh
bShXZWJDb3JlOjpNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXMpOwogI2VuZGlmCiAKKyAg
ICAvLyBXZWJTdHJlYW1UZXh0dXJlQ2xpZW50IG1ldGhvZHM6CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVGcmFtZSgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVNYXRyaXgoY29uc3Qg
ZmxvYXQqKTsKKwogcHJpdmF0ZToKICAgICBXZWJNZWRpYVBsYXllckNsaWVudEltcGwoKTsKICAg
ICB2b2lkIHN0YXJ0RGVsYXllZExvYWQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128281</attachid>
            <date>2012-02-22 13:53:53 -0800</date>
            <delta_ts>2012-02-22 15:10:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78398-20120222135351.patch</filename>
            <type>text/plain</type>
            <size>34638</size>
            <attacher name="Daniel Sievers">sievers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTEyMjlhZTVkMGEzMThm
YWQ4NGNhYTM3ZTI4MzYyYjE4MjA5YTdhNS4uZTkzZTQyODc0OThjMDA3YjcwMGQzNzA5ZjNhOTEx
MDA0YmJiZDY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTAyLTIxICBEYW5p
ZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
QWRkIHZpZGVvIHN0cmVhbSB0ZXh0dXJlIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4Mzk4CisKKyAgICAgICAgVGhpcyB1cHN0cmVhbXMg
dGhlIGFic3RyYWN0aW9uIHVzZWQgb24gQW5kcm9pZCBmb3IKKyAgICAgICAgaGFyZHdhcmUgdmlk
ZW8gZGVjb2Rpbmcgd2l0aCB0aGUgY29tcG9zaXRvci4KKworICAgICAgICBNb3N0IG9mIHRoZSBp
bnRlcmZhY2VzIGFyZSBrZXB0IGdlbmVyaWMgYW5kIHRoZSBjb3JlCisgICAgICAgIG9mIHRoaXMg
Y2hhbmdlIGlzIHRvIGFsbG93IHRleHR1cmluZyBmcm9tIGFuIGV4dGVybmFsCisgICAgICAgIHRl
eHR1cmUgd2hpbGUgcmVjZWl2aW5nIG5vdGlmaWNhdGlvbnMgKG9uIHRoZSBjb21wb3NpdG9yCisg
ICAgICAgIHRocmVhZCBpZiB3ZSBhcmUgcnVubmluZyBpdCkgd2hlbiB0aGVyZSBhcmUgbmV3IGZy
YW1lcyB0bworICAgICAgICBiZSBkaXNwbGF5ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRl
bnNpb25zM0RDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdTaW5nbGVUZXh0dXJlVmlkZW9RdWFkKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JHQkEpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TmF0aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1N0cmVh
bVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
VmlkZW9RdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c3Ry
ZWFtVGV4dHVyZUxheWVyUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyUmVu
ZGVyZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hh
ZGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFu
c2Zvcm06OlZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OmluaXQpOgorICAg
ICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OmdldFNoYWRlclN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlck9FU0ltYWdlRXh0ZXJuYWw6Omlu
aXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJPRVNJbWFnZUV4dGVybmFsOjpn
ZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1No
YWRlckNocm9taXVtLmg6CisgICAgICAgIChWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6bWF0cml4TG9jYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OnRleFRy
YW5zZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclZpZGVvVHJh
bnNmb3JtOjp0ZXhNYXRyaXhMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KEZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmg6CisgICAgICAgIChDbGllbnQp
OgorICAgICAgICAoVmlkZW9GcmFtZVByb3ZpZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NWaWRlb0RyYXdRdWFkOjpDQ1ZpZGVvRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6
Q0NWaWRlb0RyYXdRdWFkOjptYXRyaXgpOgorICAgICAgICAoQ0NWaWRlb0RyYXdRdWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVmlkZW9EcmF3UXVhZDo6c2V0TWF0cml4KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6Q0NWaWRl
b0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VkZDRm9ybWF0VG9HQzNERm9y
bWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmRpZFJlY2VpdmVGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpkaWRVcGRhdGVNYXRyaXgpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6c2V0TmVlZHNSZWRyYXcpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NWaWRlb0xheWVySW1wbCk6CisKIDIwMTItMDIt
MjIgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGZp
cnN0UmVuZGVyZXJPZigpIHNob3VsZCBhbHNvIHJldHVybiBhIGZhbGxiYWNrIGVsZW1lbnQgcmVu
ZGVyZXIgaW4gTm9kZVJlbmRlcmluZ0NvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDEyOGY0MjgzMjdkYWQ0MGY4NmEyMzBjOGEyZjE1NDAxYTMwN2Y3NjUuLjgxNjUxMDcwMzdl
ZDc2YmIyMjViNmFlOGM3ODJjYWI3NWRiZjAzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzggQEAKKzIwMTItMDItMjEgIERhbmllbCBTaWV2ZXJzICA8c2lldmVyc0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBBZGQgdmlkZW8gc3RyZWFtIHRleHR1
cmUgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzgzOTgKKworICAgICAgICBUaGlzIHVwc3RyZWFtcyB0aGUgYWJzdHJhY3Rpb24gdXNlZCBv
biBBbmRyb2lkIGZvcgorICAgICAgICBoYXJkd2FyZSB2aWRlbyBkZWNvZGluZyB3aXRoIHRoZSBj
b21wb3NpdG9yLgorCisgICAgICAgIE1vc3Qgb2YgdGhlIGludGVyZmFjZXMgYXJlIGtlcHQgZ2Vu
ZXJpYyBhbmQgdGhlIGNvcmUKKyAgICAgICAgb2YgdGhpcyBjaGFuZ2UgaXMgdG8gYWxsb3cgdGV4
dHVyaW5nIGZyb20gYW4gZXh0ZXJuYWwKKyAgICAgICAgdGV4dHVyZSB3aGlsZSByZWNlaXZpbmcg
bm90aWZpY2F0aW9ucyAob24gdGhlIGNvbXBvc2l0b3IKKyAgICAgICAgdGhyZWFkIGlmIHdlIGFy
ZSBydW5uaW5nIGl0KSB3aGVuIHRoZXJlIGFyZSBuZXcgZnJhbWVzIHRvCisgICAgICAgIGJlIGRp
c3BsYXllZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYk1lZGlhUGxheWVyLmg6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllcjo6c2V0U3RyZWFt
VGV4dHVyZUNsaWVudCk6CisgICAgICAgIChXZWJNZWRpYVBsYXllcik6CisgICAgICAgICogcHVi
bGljL1dlYlN0cmVhbVRleHR1cmVDbGllbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZS5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYlN0cmVhbVRleHR1cmVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdHJlYW1U
ZXh0dXJlQ2xpZW50Ojp+V2ViU3RyZWFtVGV4dHVyZUNsaWVudCk6CisgICAgICAgICogcHVibGlj
L1dlYlZpZGVvRnJhbWUuaDoKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjp+V2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsOjpzZXRWaWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmRpZFJlY2VpdmVGcmFtZSk6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmRpZFVwZGF0
ZU1hdHJpeCk6CisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oOgorICAg
ICAgICAoV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsKToKKwogMjAxMi0wMi0yMCAgUm9sYW5kIFN0
ZWluZXIgIDxyb2xhbmRzdGVpbmVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICA8c3R5bGUgc2Nv
cGVkPjogQWRkIHJ1bnRpbWUtZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgKaW5k
ZXggNTA5ZGIzM2U4NTNhMDM4MWMyZWZlNWI0Nzc3Mzg0MDBhMTJlY2NlNS4uNTMzMjJmMGYyNWVk
NDA3YTI1ZTZiNjIzMjdlODcxMjg5ZDE4YmQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJv
bWl1bS5oCkBAIC02Myw2ICs2Myw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRU
cmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm0zRE9iamVjdCk7CiAKICAgICBlbnVt
IHsKKyAgICAgICAgLy8gR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbAorICAgICAgICBHTF9URVhU
VVJFX0VYVEVSTkFMX09FUyA9IDB4OEQ2NSwKKwogICAgICAgICAvLyBHTF9DSFJPTUlVTV9tYXBf
c3ViIChlbnVtcyBpbmhlcml0ZWQgZnJvbSBHTF9BUkJfdmVydGV4X2J1ZmZlcl9vYmplY3QpCiAg
ICAgICAgIFJFQURfT05MWSA9IDB4ODhCOCwKICAgICAgICAgV1JJVEVfT05MWSA9IDB4ODhCOSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDEyNTlkMWI1YzRjNTQy
NTYyNWZjNjMwMmUyN2UyNzE0Mzk5MDdhZWQuLjU0MmIzYWQxYzQyNzEzMzMzMjE3ODE5YjE4OGVm
YjNkZGY3NTU3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAt
NzM2LDEyICs3MzYsMTIgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdZVVYoY29u
c3QgQ0NWaWRlb0RyYXdRdWFkKiBxdWFkKQogfQogCiB0ZW1wbGF0ZTxjbGFzcyBQcm9ncmFtPgot
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdTaW5nbGVUZXh0dXJlVmlkZW9RdWFkKGNv
bnN0IENDVmlkZW9EcmF3UXVhZCogcXVhZCwgUHJvZ3JhbSogcHJvZ3JhbSwgZmxvYXQgd2lkdGhT
Y2FsZUZhY3RvciwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQpCit2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd1NpbmdsZVRleHR1cmVWaWRlb1F1YWQoY29uc3QgQ0NWaWRlb0RyYXdR
dWFkKiBxdWFkLCBQcm9ncmFtKiBwcm9ncmFtLCBmbG9hdCB3aWR0aFNjYWxlRmFjdG9yLCBQbGF0
Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgR0MzRGVudW0gdGFyZ2V0KQogewogICAgIEFTU0VSVChw
cm9ncmFtICYmIHByb2dyYW0tPmluaXRpYWxpemVkKCkpOwogCiAgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwot
ICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCkpOworICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQo
KS0+YmluZFRleHR1cmUodGFyZ2V0LCB0ZXh0dXJlSWQpKTsKIAogICAgIEdMQyhjb250ZXh0KCks
IGNvbnRleHQoKS0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKICAgICBHTEMoY29u
dGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm00Zihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS50ZXhU
cmFuc2Zvcm1Mb2NhdGlvbigpLCAwLCAwLCB3aWR0aFNjYWxlRmFjdG9yLCAxKSk7CkBAIC03NTks
MTMgKzc1OSwyNSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JHQkEoY29uc3Qg
Q0NWaWRlb0RyYXdRdWFkKiBxdWFkKQogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OlJHQkFQ
cm9ncmFtKiBwcm9ncmFtID0gdmlkZW9MYXllclJHQkFQcm9ncmFtKCk7CiAgICAgY29uc3QgQ0NW
aWRlb0xheWVySW1wbDo6VGV4dHVyZSYgdGV4dHVyZSA9IHF1YWQtPnRleHR1cmVzKClbVmlkZW9G
cmFtZUNocm9taXVtOjpyZ2JQbGFuZV07CiAgICAgZmxvYXQgd2lkdGhTY2FsZUZhY3RvciA9IHN0
YXRpY19jYXN0PGZsb2F0Pih0ZXh0dXJlLm1fdmlzaWJsZVNpemUud2lkdGgoKSkgLyB0ZXh0dXJl
Lm1fdGV4dHVyZS0+c2l6ZSgpLndpZHRoKCk7Ci0gICAgZHJhd1NpbmdsZVRleHR1cmVWaWRlb1F1
YWQocXVhZCwgcHJvZ3JhbSwgd2lkdGhTY2FsZUZhY3RvciwgdGV4dHVyZS5tX3RleHR1cmUtPnRl
eHR1cmVJZCgpKTsKKyAgICBkcmF3U2luZ2xlVGV4dHVyZVZpZGVvUXVhZChxdWFkLCBwcm9ncmFt
LCB3aWR0aFNjYWxlRmFjdG9yLCB0ZXh0dXJlLm1fdGV4dHVyZS0+dGV4dHVyZUlkKCksIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJEKTsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdOYXRpdmVUZXh0dXJlKGNvbnN0IENDVmlkZW9EcmF3UXVhZCogcXVhZCkKK3ZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TmF0aXZlVGV4dHVyZTJEKGNvbnN0IENDVmlkZW9E
cmF3UXVhZCogcXVhZCkKIHsKICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpOYXRpdmVUZXh0
dXJlUHJvZ3JhbSogcHJvZ3JhbSA9IHZpZGVvTGF5ZXJOYXRpdmVUZXh0dXJlUHJvZ3JhbSgpOwot
ICAgIGRyYXdTaW5nbGVUZXh0dXJlVmlkZW9RdWFkKHF1YWQsIHByb2dyYW0sIDEsIHF1YWQtPmZy
YW1lKCktPnRleHR1cmVJZCgpKTsKKyAgICBkcmF3U2luZ2xlVGV4dHVyZVZpZGVvUXVhZChxdWFk
LCBwcm9ncmFtLCAxLCBxdWFkLT5mcmFtZSgpLT50ZXh0dXJlSWQoKSwgR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQpOworfQorCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1N0
cmVhbVRleHR1cmUoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKiBxdWFkKQoreworICAgIEFTU0VSVChj
b250ZXh0KCktPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2VfZXh0
ZXJuYWwiKSAmJiBjb250ZXh0KCktPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFibGVkKCJHTF9PRVNf
RUdMX2ltYWdlX2V4dGVybmFsIikpOworCisgICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6U3Ry
ZWFtVGV4dHVyZVByb2dyYW0qIHByb2dyYW0gPSBzdHJlYW1UZXh0dXJlTGF5ZXJQcm9ncmFtKCk7
CisgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dy
YW0oKSkpOworICAgIEFTU0VSVChxdWFkLT5tYXRyaXgoKSk7CisgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT51bmlmb3JtTWF0cml4NGZ2KHByb2dyYW0tPnZlcnRleFNoYWRlcigpLnRleE1h
dHJpeExvY2F0aW9uKCksIGZhbHNlLCBjb25zdF9jYXN0PGZsb2F0Kj4ocXVhZC0+bWF0cml4KCkp
LCAxKSk7CisKKyAgICBkcmF3U2luZ2xlVGV4dHVyZVZpZGVvUXVhZChxdWFkLCBwcm9ncmFtLCAx
LCBxdWFkLT5mcmFtZSgpLT50ZXh0dXJlSWQoKSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdMX1RF
WFRVUkVfRVhURVJOQUxfT0VTKTsKIH0KIAogYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNv
cHlGcmFtZVRvVGV4dHVyZXMoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKiBxdWFkKQpAQCAtODIyLDcg
KzgzNCwxMCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1ZpZGVvUXVhZChjb25z
dCBDQ1ZpZGVvRHJhd1F1YWQqIHF1YWQpCiAgICAgICAgIGRyYXdSR0JBKHF1YWQpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJEOgotICAgICAg
ICBkcmF3TmF0aXZlVGV4dHVyZShxdWFkKTsKKyAgICAgICAgZHJhd05hdGl2ZVRleHR1cmUyRChx
dWFkKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHRlbnNpb25zM0RDaHJvbWl1bTo6R0xf
VEVYVFVSRV9FWFRFUk5BTF9PRVM6CisgICAgICAgIGRyYXdTdHJlYW1UZXh0dXJlKHF1YWQpOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOyAvLyBTb21lb25l
IHVwZGF0ZWQgY29udmVydFZGQ0Zvcm1hdFRvR0MzREZvcm1hdCBhYm92ZSBidXQgdXBkYXRlIHRo
aXMhCkBAIC0xMzg0LDYgKzEzOTksMTYgQEAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6TmF0aXZl
VGV4dHVyZVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9MYXllck4KICAgICBy
ZXR1cm4gbV92aWRlb0xheWVyTmF0aXZlVGV4dHVyZVByb2dyYW0uZ2V0KCk7CiB9CiAKK2NvbnN0
IENDVmlkZW9MYXllckltcGw6OlN0cmVhbVRleHR1cmVQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hy
b21pdW06OnN0cmVhbVRleHR1cmVMYXllclByb2dyYW0oKQoreworICAgIGlmICghbV9zdHJlYW1U
ZXh0dXJlTGF5ZXJQcm9ncmFtKQorICAgICAgICBtX3N0cmVhbVRleHR1cmVMYXllclByb2dyYW0g
PSBhZG9wdFB0cihuZXcgQ0NWaWRlb0xheWVySW1wbDo6U3RyZWFtVGV4dHVyZVByb2dyYW0obV9j
b250ZXh0LmdldCgpKSk7CisgICAgaWYgKCFtX3N0cmVhbVRleHR1cmVMYXllclByb2dyYW0tPmlu
aXRpYWxpemVkKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6c3RyZWFtVGV4dHVyZUxheWVyUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAg
ICAgICBtX3N0cmVhbVRleHR1cmVMYXllclByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0Lmdl
dCgpKTsKKyAgICB9CisgICAgcmV0dXJuIG1fc3RyZWFtVGV4dHVyZUxheWVyUHJvZ3JhbS5nZXQo
KTsKK30KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3Rz
KCkKIHsKQEAgLTE0MjUsNiArMTQ1MCw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpj
bGVhbnVwU2hhcmVkT2JqZWN0cygpCiAgICAgICAgIG1fdmlkZW9MYXllclJHQkFQcm9ncmFtLT5j
bGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1fdmlkZW9MYXllcllVVlByb2dyYW0p
CiAgICAgICAgIG1fdmlkZW9MYXllcllVVlByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgp
KTsKKyAgICBpZiAobV9zdHJlYW1UZXh0dXJlTGF5ZXJQcm9ncmFtKQorICAgICAgICBtX3N0cmVh
bVRleHR1cmVMYXllclByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKIAogICAgIG1f
Ym9yZGVyUHJvZ3JhbS5jbGVhcigpOwogICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLmNsZWFy
KCk7CkBAIC0xNDQzLDYgKzE0NzAsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xl
YW51cFNoYXJlZE9iamVjdHMoKQogICAgIG1fcmVuZGVyU3VyZmFjZVByb2dyYW1BQS5jbGVhcigp
OwogICAgIG1fdmlkZW9MYXllclJHQkFQcm9ncmFtLmNsZWFyKCk7CiAgICAgbV92aWRlb0xheWVy
WVVWUHJvZ3JhbS5jbGVhcigpOworICAgIG1fc3RyZWFtVGV4dHVyZUxheWVyUHJvZ3JhbS5jbGVh
cigpOwogICAgIGlmIChtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpCiAgICAgICAgIEdMQyhtX2Nv
bnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9vZmZzY3JlZW5GcmFt
ZWJ1ZmZlcklkKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggOGM0
YjZlOWZlOTJhNmZmOGFhZTg1OTVkNDM5MDNiOTg5MDViZTQ5My4uZWU5ODk1YWUxZDRjOTRjZGE2
MzEwZGM3YjNmYjA0M2QyOTVjYjdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKQEAgLTEzMCw2ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1w
bDo6UkdCQVByb2dyYW0qIHZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSgpOwogICAgIGNvbnN0IENDVmlk
ZW9MYXllckltcGw6OllVVlByb2dyYW0qIHZpZGVvTGF5ZXJZVVZQcm9ncmFtKCk7CiAgICAgY29u
c3QgQ0NWaWRlb0xheWVySW1wbDo6TmF0aXZlVGV4dHVyZVByb2dyYW0qIHZpZGVvTGF5ZXJOYXRp
dmVUZXh0dXJlUHJvZ3JhbSgpOworICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OlN0cmVhbVRl
eHR1cmVQcm9ncmFtKiBzdHJlYW1UZXh0dXJlTGF5ZXJQcm9ncmFtKCk7CiAKICAgICB2b2lkIGdl
dEZyYW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYpOwogCkBAIC0x
NzAsOCArMTcxLDkgQEAgcHJpdmF0ZToKICAgICBNYW5hZ2VkVGV4dHVyZSogZ2V0T2Zmc2NyZWVu
TGF5ZXJUZXh0dXJlKCk7CiAgICAgdm9pZCBjb3B5UGxhbmVUb1RleHR1cmUoY29uc3QgQ0NWaWRl
b0RyYXdRdWFkKiwgY29uc3Qgdm9pZCogcGxhbmUsIGludCBpbmRleCk7CiAgICAgYm9vbCBjb3B5
RnJhbWVUb1RleHR1cmVzKGNvbnN0IENDVmlkZW9EcmF3UXVhZCopOwotICAgIHRlbXBsYXRlPGNs
YXNzIFByb2dyYW0+IHZvaWQgZHJhd1NpbmdsZVRleHR1cmVWaWRlb1F1YWQoY29uc3QgQ0NWaWRl
b0RyYXdRdWFkKiwgUHJvZ3JhbSosIGZsb2F0IHdpZHRoU2NhbGVGYWN0b3IsIFBsYXRmb3JtM0RP
YmplY3QgdGV4dHVyZUlkKTsKLSAgICB2b2lkIGRyYXdOYXRpdmVUZXh0dXJlKGNvbnN0IENDVmlk
ZW9EcmF3UXVhZCopOworICAgIHRlbXBsYXRlPGNsYXNzIFByb2dyYW0+IHZvaWQgZHJhd1Npbmds
ZVRleHR1cmVWaWRlb1F1YWQoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKiwgUHJvZ3JhbSosIGZsb2F0
IHdpZHRoU2NhbGVGYWN0b3IsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBHQzNEZW51bSB0
YXJnZXQpOworICAgIHZvaWQgZHJhd05hdGl2ZVRleHR1cmUyRChjb25zdCBDQ1ZpZGVvRHJhd1F1
YWQqKTsKKyAgICB2b2lkIGRyYXdTdHJlYW1UZXh0dXJlKGNvbnN0IENDVmlkZW9EcmF3UXVhZCop
OwogICAgIHZvaWQgZHJhd1JHQkEoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKik7CiAgICAgdm9pZCBk
cmF3WVVWKGNvbnN0IENDVmlkZW9EcmF3UXVhZCopOwogCkBAIC0yMzMsNiArMjM1LDcgQEAgcHJp
dmF0ZToKICAgICBPd25QdHI8Q0NWaWRlb0xheWVySW1wbDo6UkdCQVByb2dyYW0+IG1fdmlkZW9M
YXllclJHQkFQcm9ncmFtOwogICAgIE93blB0cjxDQ1ZpZGVvTGF5ZXJJbXBsOjpZVVZQcm9ncmFt
PiBtX3ZpZGVvTGF5ZXJZVVZQcm9ncmFtOwogICAgIE93blB0cjxDQ1ZpZGVvTGF5ZXJJbXBsOjpO
YXRpdmVUZXh0dXJlUHJvZ3JhbT4gbV92aWRlb0xheWVyTmF0aXZlVGV4dHVyZVByb2dyYW07Cisg
ICAgT3duUHRyPENDVmlkZW9MYXllckltcGw6OlN0cmVhbVRleHR1cmVQcm9ncmFtPiBtX3N0cmVh
bVRleHR1cmVMYXllclByb2dyYW07CiAKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fcmVu
ZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyOwogICAgIE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxv
Y2F0b3I+IG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3Bw
CmluZGV4IGY2OWI2YjE4YWE3OWJlOTc1ODhhYWFiYWQ4OTMzNGNkMzIyMmY2NjQuLjcxZDRkMWZk
MThkOTg2MjFkMmNjNGI0OWFmOWRhZWNkNjE1ZWM3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5j
cHAKQEAgLTI1NSw2ICsyNTUsMzkgQEAgU3RyaW5nIFZlcnRleFNoYWRlclRpbGU6OmdldFNoYWRl
clN0cmluZygpIGNvbnN0CiAgICAgKTsKIH0KIAorVmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06
OlZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtKCkKKyAgICA6IG1fbWF0cml4TG9jYXRpb24oLTEp
CisgICAgLCBtX3RleFRyYW5zZm9ybUxvY2F0aW9uKC0xKQorICAgICwgbV90ZXhNYXRyaXhMb2Nh
dGlvbigtMSkKK3sKK30KKworYm9vbCBWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6aW5pdChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3sKKyAgICBtX21h
dHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRy
aXgiKTsKKyAgICBtX3RleFRyYW5zZm9ybUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sICJ0ZXhUcmFuc2Zvcm0iKTsKKyAgICBtX3RleE1hdHJpeExvY2F0aW9u
ID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhNYXRyaXgiKTsKKyAg
ICByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbiAhPSAtMSAmJiBtX3RleFRyYW5zZm9ybUxvY2F0aW9u
ICE9IC0xICYmIG1fdGV4TWF0cml4TG9jYXRpb24gIT0gLTE7Cit9CisKK1N0cmluZyBWZXJ0ZXhT
aGFkZXJWaWRlb1RyYW5zZm9ybTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gU0hBREVSKAorICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworICAgICAgICBh
dHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOworICAgICAgICB1bmlmb3JtIG1hdDQgbWF0cml4Owor
ICAgICAgICB1bmlmb3JtIHZlYzQgdGV4VHJhbnNmb3JtOworICAgICAgICB1bmlmb3JtIG1hdDQg
dGV4TWF0cml4OworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKyAgICAgICAgdm9p
ZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBtYXRyaXggKiBh
X3Bvc2l0aW9uOworICAgICAgICAgICAgdmVjMiB0ZXhDb29yZCA9IHZlYzIodGV4TWF0cml4ICog
dmVjNChhX3RleENvb3JkLngsIDEuMCAtIGFfdGV4Q29vcmQueSwgMC4wLCAxLjApKTsKKyAgICAg
ICAgICAgIHZfdGV4Q29vcmQgPSB0ZXhDb29yZCAqIHRleFRyYW5zZm9ybS56dyArIHRleFRyYW5z
Zm9ybS54eTsKKyAgICAgICAgfQorICAgICk7Cit9CisKIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5n
OjpGcmFnbWVudFRleEFscGhhQmluZGluZygpCiAgICAgOiBtX3NhbXBsZXJMb2NhdGlvbigtMSkK
ICAgICAsIG1fYWxwaGFMb2NhdGlvbigtMSkKQEAgLTI5Niw2ICszMjksMjcgQEAgU3RyaW5nIEZy
YWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKICAg
ICApOwogfQogCitib29sIEZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbDo6aW5pdChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3sKKyAgICBtX3NhbXBs
ZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0
dXJlIik7CisKKyAgICByZXR1cm4gbV9zYW1wbGVyTG9jYXRpb24gIT0gLTE7Cit9CisKK1N0cmlu
ZyBGcmFnbWVudFNoYWRlck9FU0ltYWdlRXh0ZXJuYWw6OmdldFNoYWRlclN0cmluZygpIGNvbnN0
Cit7CisgICAgLy8gQ2Fubm90IHVzZSB0aGUgU0hBREVSKCkgbWFjcm8gYmVjYXVzZSBvZiB0aGUg
JyMnIGNoYXIKKyAgICByZXR1cm4gIiNleHRlbnNpb24gR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5h
bCA6IHJlcXVpcmUgXG4iCisgICAgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIK
KyAgICAgICAgICAgInZhcnlpbmcgdmVjMiB2X3RleENvb3JkO1xuIgorICAgICAgICAgICAidW5p
Zm9ybSBzYW1wbGVyRXh0ZXJuYWxPRVMgc190ZXh0dXJlO1xuIgorICAgICAgICAgICAidm9pZCBt
YWluKClcbiIKKyAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgIiAgICB2ZWM0IHRleENvbG9y
ID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdl90ZXhDb29yZCk7XG4iCisgICAgICAgICAgICIgICAg
Z2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhDb2xvci54LCB0ZXhDb2xvci55LCB0ZXhDb2xvci56LCB0
ZXhDb2xvci53KTtcbiIKKyAgICAgICAgICAgIn1cbiI7Cit9CisKIFN0cmluZyBGcmFnbWVudFNo
YWRlclJHQkFUZXhBbHBoYTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4g
U0hBREVSKApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vU2hhZGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKaW5kZXggMzQzMjNlNmQzMzk5NzdlZTNmNTVkMjkw
NTlhODNmZWEwZWZlYzVkYS4uOTQ5OWFjN2ZkNzIxYmM0OWQwZDQ1N2RhMWEyYTFjOWVjNWYyNmJl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U2hhZGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCkBAIC0xNDUsNiArMTQ1LDIzIEBAIHByaXZhdGU6CiAg
ICAgaW50IG1fdmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb247CiB9OwogCitjbGFzcyBWZXJ0ZXhT
aGFkZXJWaWRlb1RyYW5zZm9ybSB7CitwdWJsaWM6CisgICAgVmVydGV4U2hhZGVyVmlkZW9UcmFu
c2Zvcm0oKTsKKworICAgIGJvb2wgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHBy
b2dyYW0pOworICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKKworICAgIGludCBt
YXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0KKyAgICBp
bnQgdGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3RleFRyYW5zZm9ybUxv
Y2F0aW9uOyB9CisgICAgaW50IHRleE1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90
ZXhNYXRyaXhMb2NhdGlvbjsgfQorCitwcml2YXRlOgorICAgIGludCBtX21hdHJpeExvY2F0aW9u
OworICAgIGludCBtX3RleFRyYW5zZm9ybUxvY2F0aW9uOworICAgIGludCBtX3RleE1hdHJpeExv
Y2F0aW9uOworfTsKKwogY2xhc3MgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcgewogcHVibGljOgog
ICAgIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nKCk7CkBAIC0yMTEsNiArMjI4LDE1IEBAIHB1Ymxp
YzoKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiB9OwogCisvLyBGcmFnbWVu
dCBzaGFkZXIgZm9yIGV4dGVybmFsIHRleHR1cmVzLgorY2xhc3MgRnJhZ21lbnRTaGFkZXJPRVNJ
bWFnZUV4dGVybmFsIDogcHVibGljIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nIHsKK3B1YmxpYzoK
KyAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CisgICAgYm9vbCBpbml0KEdyYXBo
aWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7Citwcml2YXRlOgorICAgIGludCBtX3Nh
bXBsZXJMb2NhdGlvbjsKK307CisKIGNsYXNzIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUEg
ewogcHVibGljOgogICAgIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUEoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlk
ZW9GcmFtZUNocm9taXVtLmgKaW5kZXggYzRhYmQ5NjlkMWVkMTFkNzg0MzdkNTA5YzM0ZGFkOTVl
ZDkzNDJiMi4uMmQ3NmM0NzU1OGUwYjhiNGM0ZTg0ZDA0YzgwNDM5MmNkYTU0NmM1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFt
ZUNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVmlkZW9GcmFtZUNocm9taXVtLmgKQEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgY29uc3QgSW50U2l6ZSByZXF1aXJlZFRleHR1cmVTaXplKHVuc2lnbmVkIHBsYW5lKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGhhc1BhZGRpbmdCeXRlcyh1bnNpZ25lZCBwbGFu
ZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgdW5zaWduZWQgdGV4dHVyZVRhcmdldCgpIGNvbnN0ID0gMDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVQcm92aWRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmgKaW5kZXgg
M2Q0M2E5MGMzN2E2MzdhY2U3Y2M3MzIxNzYzZGU0YTM5Nzk5NDFkZC4uOTc5NDc5NGE3YjdkZjUz
MzMzMzNjMGExNGRmMjUxYTY3NDhjOTkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmgK
QEAgLTQzLDYgKzQzLDggQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgLy8gUHJvdmlk
ZXIgd2lsbCBjYWxsIHRoaXMgbWV0aG9kIHRvIHRlbGwgdGhlIGNsaWVudCB0byBzdG9wIHVzaW5n
IGl0LgogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcFVzaW5nUHJvdmlkZXIoKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJhbWUoKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRVcGRhdGVNYXRyaXgoY29uc3QgZmxvYXQqKSA9IDA7CiAgICAgfTsKIAogICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQoQ2xpZW50KikgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NW
aWRlb0RyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5jcHAKaW5kZXggMWY5NmUxYjEyM2QwZDE3MTJjYjk2OWM5
MmYwMmZiNTlhODkwZWFmZS4uYmE1NzM0OTA5ODc1YzVkY2NjZjg5YWIyMDM0YzQwZTQ1OWRmNzI5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NWaWRlb0RyYXdRdWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuY3BwCkBAIC0zOSw2ICszOSw3IEBAIEND
VmlkZW9EcmF3UXVhZDo6Q0NWaWRlb0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIGNvbnN0CiAgICAgLCBtX3RleHR1cmVzKHRleHR1cmVzKQogICAgICwg
bV9mcmFtZShmcmFtZSkKICAgICAsIG1fZm9ybWF0KGZvcm1hdCkKKyAgICAsIG1fbWF0cml4KDAp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0RyYXdRdWFkLmgKaW5kZXggMTY1YWE2MGRjNDc3YmI5
OTczYmJlYTRmNDA3YWQ2NjgwNmRjMDU5Ni4uYWVmNzg0NzJhNDBhYzZiZWY1NDgyM2ZiYTQzMDQw
NjMzNjE2ZDQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NWaWRlb0RyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0RyYXdRdWFkLmgKQEAgLTQxLDYgKzQxLDkg
QEAgcHVibGljOgogICAgIENDVmlkZW9MYXllckltcGw6OlRleHR1cmUqIHRleHR1cmVzKCkgY29u
c3QgeyByZXR1cm4gbV90ZXh0dXJlczsgfQogICAgIFZpZGVvRnJhbWVDaHJvbWl1bSogZnJhbWUo
KSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CiAgICAgR0MzRGVudW0gZm9ybWF0KCkgY29uc3Qg
eyByZXR1cm4gbV9mb3JtYXQ7IH0KKyAgICBjb25zdCBmbG9hdCogbWF0cml4KCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXRyaXg7IH0KKworICAgIHZvaWQgc2V0TWF0cml4KGNvbnN0IGZsb2F0KiBtYXRy
aXgpIHsgbV9tYXRyaXggPSBtYXRyaXg7IH0KIAogcHJpdmF0ZToKICAgICBDQ1ZpZGVvRHJhd1F1
YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgQ0NWaWRlb0xheWVy
SW1wbDo6VGV4dHVyZSogdGV4dHVyZXMsIFZpZGVvRnJhbWVDaHJvbWl1bSosIEdDM0RlbnVtIGZv
cm1hdCk7CkBAIC00OCw2ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgQ0NWaWRlb0xheWVySW1wbDo6
VGV4dHVyZSogbV90ZXh0dXJlczsKICAgICBWaWRlb0ZyYW1lQ2hyb21pdW0qIG1fZnJhbWU7CiAg
ICAgR0MzRGVudW0gbV9mb3JtYXQ7CisgICAgY29uc3QgZmxvYXQqIG1fbWF0cml4OwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAppbmRleCA3MzE5YjE1N2FjZmFhYjAy
YWI2OGIxZmMxZjAwOTdhNmQxZTFhNzA0Li42NzU0ODk0ODQxNWY5NTExY2Q2YzJmYzAxODZiZDk4
NjY5YTc0YWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApAQCAtNjIsMTAg
KzYyLDIxIEBAIGNvbnN0IGZsb2F0IENDVmlkZW9MYXllckltcGw6Onl1dkFkanVzdFszXSA9IHsK
ICAgICAtMC41ZiwKIH07CiAKKy8vIFRoaXMgbWF0cml4IGlzIHRoZSBkZWZhdWx0IHRyYW5zZm9y
bWF0aW9uIGZvciBzdHJlYW0gdGV4dHVyZXMuCitjb25zdCBmbG9hdCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpmbGlwVHJhbnNmb3JtWzE2XSA9IHsKKyAgICAxLCAwLCAwLCAwLAorICAgIDAsIC0xLCAwLCAw
LAorICAgIDAsIDAsIDEsIDAsCisgICAgMCwgMSwgMCwgMSwKK307CisKIENDVmlkZW9MYXllcklt
cGw6OkNDVmlkZW9MYXllckltcGwoaW50IGlkLCBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVy
KQogICAgIDogQ0NMYXllckltcGwoaWQpCiAgICAgLCBtX3Byb3ZpZGVyKHByb3ZpZGVyKQorICAg
ICwgbV9sYXllclRyZWVIb3N0SW1wbCgwKQorICAgICwgbV9mcmFtZSgwKQogeworICAgIG1lbWNw
eShtX3N0cmVhbVRleHR1cmVNYXRyaXgsIGZsaXBUcmFuc2Zvcm0sIHNpemVvZihtX3N0cmVhbVRl
eHR1cmVNYXRyaXgpKTsKICAgICBwcm92aWRlci0+c2V0VmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50
KHRoaXMpOwogfQogCkBAIC04OCwxNiArOTksMTYgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpz
dG9wVXNpbmdQcm92aWRlcigpCiB9CiAKIC8vIENvbnZlcnQgVmlkZW9GcmFtZUNocm9taXVtOjpG
b3JtYXQgdG8gR3JhcGhpY3NDb250ZXh0M0QncyBmb3JtYXQgZW51bSB2YWx1ZXMuCi1zdGF0aWMg
R0MzRGVudW0gY29udmVydFZGQ0Zvcm1hdFRvR0MzREZvcm1hdChWaWRlb0ZyYW1lQ2hyb21pdW06
OkZvcm1hdCBmb3JtYXQpCitzdGF0aWMgR0MzRGVudW0gY29udmVydFZGQ0Zvcm1hdFRvR0MzREZv
cm1hdChjb25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qIGZyYW1lKQogewotICAgIHN3aXRjaCAoZm9y
bWF0KSB7CisgICAgc3dpdGNoIChmcmFtZS0+Zm9ybWF0KCkpIHsKICAgICBjYXNlIFZpZGVvRnJh
bWVDaHJvbWl1bTo6WVYxMjoKICAgICBjYXNlIFZpZGVvRnJhbWVDaHJvbWl1bTo6WVYxNjoKICAg
ICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpMVU1JTkFOQ0U7CiAgICAgY2FzZSBWaWRl
b0ZyYW1lQ2hyb21pdW06OlJHQkE6CiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQTsKICAgICBjYXNlIFZpZGVvRnJhbWVDaHJvbWl1bTo6TmF0aXZlVGV4dHVyZToKLSAgICAg
ICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJEOworICAgICAgICByZXR1cm4g
ZnJhbWUtPnRleHR1cmVUYXJnZXQoKTsKICAgICBjYXNlIFZpZGVvRnJhbWVDaHJvbWl1bTo6SW52
YWxpZDoKICAgICBjYXNlIFZpZGVvRnJhbWVDaHJvbWl1bTo6UkdCNTU1OgogICAgIGNhc2UgVmlk
ZW9GcmFtZUNocm9taXVtOjpSR0I1NjU6CkBAIC0xMTgsMTUgKzEyOSwxNyBAQCB2b2lkIENDVmlk
ZW9MYXllckltcGw6OndpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJl
cikKIAogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3Byb3ZpZGVyTXV0ZXgpOwogCi0gICAgaWYg
KCFtX3Byb3ZpZGVyKQorICAgIGlmICghbV9wcm92aWRlcikgeworICAgICAgICBtX2ZyYW1lID0g
MDsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIG1fZnJhbWUgPSBtX3Byb3ZpZGVyLT5n
ZXRDdXJyZW50RnJhbWUoKTsKIAogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9mb3JtYXQgPSBjb252ZXJ0VkZDRm9ybWF0VG9HQzNERm9ybWF0KG1fZnJhbWUtPmZv
cm1hdCgpKTsKKyAgICBtX2Zvcm1hdCA9IGNvbnZlcnRWRkNGb3JtYXRUb0dDM0RGb3JtYXQobV9m
cmFtZSk7CiAKICAgICBpZiAobV9mb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
VkFMVUUpIHsKICAgICAgICAgbV9wcm92aWRlci0+cHV0Q3VycmVudEZyYW1lKG1fZnJhbWUpOwpA
QCAtMTQzLDcgKzE1NiwxMiBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OndpbGxEcmF3KExheWVy
UmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6
YXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUpCiB7CiAgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgpLCBi
b3VuZHMoKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKENDVmlkZW9EcmF3UXVhZDo6Y3JlYXRlKHNo
YXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1fdGV4dHVyZXMsIG1fZnJhbWUsIG1fZm9ybWF0KSk7
CisgICAgT3duUHRyPENDVmlkZW9EcmF3UXVhZD4gdmlkZW9RdWFkID0gQ0NWaWRlb0RyYXdRdWFk
OjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV90ZXh0dXJlcywgbV9mcmFtZSwg
bV9mb3JtYXQpOworCisgICAgaWYgKG1fZm9ybWF0ID09IEV4dGVuc2lvbnMzRENocm9taXVtOjpH
TF9URVhUVVJFX0VYVEVSTkFMX09FUykKKyAgICAgICAgdmlkZW9RdWFkLT5zZXRNYXRyaXgobV9z
dHJlYW1UZXh0dXJlTWF0cml4KTsKKworICAgIHF1YWRMaXN0LmFwcGVuZCh2aWRlb1F1YWQucmVs
ZWFzZSgpKTsKIH0KIAogdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpkaWREcmF3KCkKQEAgLTIxMyw2
ICsyMzEsMjMgQEAgYm9vbCBDQ1ZpZGVvTGF5ZXJJbXBsOjpyZXNlcnZlVGV4dHVyZXMoY29uc3Qg
VmlkZW9GcmFtZUNocm9taXVtKiBmcmFtZSwgR0MzRGVudW0KICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAordm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpkaWRSZWNlaXZlRnJhbWUoKQoreworICAgIHNldE5l
ZWRzUmVkcmF3KCk7Cit9CisKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZGlkVXBkYXRlTWF0cml4
KGNvbnN0IGZsb2F0IG1hdHJpeFsxNl0pCit7CisgICAgbWVtY3B5KG1fc3RyZWFtVGV4dHVyZU1h
dHJpeCwgbWF0cml4LCBzaXplb2YobV9zdHJlYW1UZXh0dXJlTWF0cml4KSk7CisgICAgc2V0TmVl
ZHNSZWRyYXcoKTsKK30KKwordm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpzZXROZWVkc1JlZHJhdygp
Cit7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwpCisgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dEltcGwtPnNldE5lZWRzUmVkcmF3KCk7Cit9CisKIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZHVt
cExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKIHsKICAg
ICB3cml0ZUluZGVudCh0cywgaW5kZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaApp
bmRleCAzOWZjMmY2YzA4M2RhZGZjZTNjZTNlN2FhYWYwYTIyYmE5YWMyODhjLi5jYWE3MmRmYjky
NzRmYjA4YmI4MzdhMmViOGY5MjliMTY1OTY4YTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVy
SW1wbC5oCkBAIC0zNSw2ICszNSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
Q0NMYXllclRyZWVIb3N0SW1wbDsKK2NsYXNzIENDVmlkZW9MYXllckltcGw7CisKIHRlbXBsYXRl
PGNsYXNzIFZlcnRleFNoYWRlciwgY2xhc3MgRnJhZ21lbnRTaGFkZXI+IGNsYXNzIFByb2dyYW1C
aW5kaW5nOwogCiBjbGFzcyBDQ1ZpZGVvTGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBsCkBA
IC01MywxNyArNTYsMjMgQEAgcHVibGljOgogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVy
dGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtLCBGcmFnbWVudFNoYWRlclJHQkFUZXhGbGlwQWxwaGE+
IFJHQkFQcm9ncmFtOwogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9z
VGV4WVVWU3RyZXRjaCwgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbz4gWVVWUHJvZ3JhbTsKICAgICB0
eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSwgRnJhZ21l
bnRTaGFkZXJSR0JBVGV4RmxpcEFscGhhPiBOYXRpdmVUZXh0dXJlUHJvZ3JhbTsKKyAgICB0eXBl
ZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtLCBGcmFnbWVudFNo
YWRlck9FU0ltYWdlRXh0ZXJuYWw+IFN0cmVhbVRleHR1cmVQcm9ncmFtOwogCiAgICAgdmlydHVh
bCB2b2lkIGR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0
OwogCiAgICAgTXV0ZXgmIHByb3ZpZGVyTXV0ZXgoKSB7IHJldHVybiBtX3Byb3ZpZGVyTXV0ZXg7
IH0KICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9w
cm92aWRlcjsgfQogCi0gICAgLy8gVmlkZW9GcmFtZVByb3ZpZGVyOjpDbGllbnQgaW1wbGVtZW50
YXRpb24gKGNhbGxhYmxlIG9uIGFueSB0aHJlYWQpLgotICAgIHZpcnR1YWwgdm9pZCBzdG9wVXNp
bmdQcm92aWRlcigpOworICAgIC8vIFZpZGVvRnJhbWVQcm92aWRlcjo6Q2xpZW50IGltcGxlbWVu
dGF0aW9uLgorICAgIHZpcnR1YWwgdm9pZCBzdG9wVXNpbmdQcm92aWRlcigpOyAvLyBDYWxsYWJs
ZSBvbiBhbnkgdGhyZWFkLgorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJhbWUoKTsgLy8g
Q2FsbGFibGUgb24gaW1wbCB0aHJlYWQuCisgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZU1hdHJp
eChjb25zdCBmbG9hdCopOyAvLyBDYWxsYWJsZSBvbiBpbXBsIHRocmVhZC4KKworICAgIHZvaWQg
c2V0TmVlZHNSZWRyYXcoKTsKIAogICAgIHN0YXRpYyBjb25zdCBmbG9hdCB5dXYyUkdCWzldOwog
ICAgIHN0YXRpYyBjb25zdCBmbG9hdCB5dXZBZGp1c3RbM107CisgICAgc3RhdGljIGNvbnN0IGZs
b2F0IGZsaXBUcmFuc2Zvcm1bMTZdOwogCiAgICAgc3RydWN0IFRleHR1cmUgewogICAgICAgICBP
d25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKQEAgLTg0LDYgKzkzLDkgQEAgcHJpdmF0
ZToKIAogICAgIFRleHR1cmUgbV90ZXh0dXJlc1tNYXhQbGFuZXNdOwogCisgICAgZmxvYXQgbV9z
dHJlYW1UZXh0dXJlTWF0cml4WzE2XTsKKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsKiBtX2xheWVy
VHJlZUhvc3RJbXBsOworCiAgICAgVmlkZW9GcmFtZUNocm9taXVtKiBtX2ZyYW1lOwogICAgIEdD
M0RlbnVtIG1fZm9ybWF0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBhNDFj
NmQwNzM4NjMxMDUyOGQ5MzUxOWI4NDg2OGVjNTNiYTdkOGI2Li4yNTU3MTUzMTFkNTBlNzYzZjE3
ZWEzMTdjMTQ5MzA1YzgzNmM4YjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0y
NTYsNiArMjU2LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlN0b3JhZ2VOYW1lc3Bh
Y2UuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTdG9yYWdlUXVvdGFDYWxsYmFja3Mu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTdG9yYWdlUXVvdGFUeXBlLmgnLAorICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RyZWFtVGV4dHVyZUNsaWVudC5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYlRleHRBZmZpbml0eS5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYk1lZGlhUGxheWVyLmgKaW5kZXggOWFhZjFhM2QwOTVkY2IwOThmODNkY2IyNDgy
NGVhMzY2NjI2NWJhMy4uMjM5MTM0OTYzOGNiYTRmMjlhMTUxM2ZlNTk4NmM4MjVhNzg1N2EyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCkBA
IC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQXVkaW9Tb3VyY2VQ
cm92aWRlcjsKIGNsYXNzIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQ7CiBjbGFzcyBXZWJN
ZWRpYVBsYXllckNsaWVudDsKK2NsYXNzIFdlYlN0cmVhbVRleHR1cmVDbGllbnQ7CiBjbGFzcyBX
ZWJVUkw7CiBzdHJ1Y3QgV2ViUmVjdDsKIHN0cnVjdCBXZWJTaXplOwpAQCAtMTYyLDYgKzE2Myw4
IEBAIHB1YmxpYzoKICAgICAvLyBtZXRob2Qgc2hvdWxkIG5vIGxvbmdlciBiZSByZWZlcmVuY2Vk
IGFmdGVyIHRoZSBjYWxsIGlzIG1hZGUuCiAgICAgdmlydHVhbCB2b2lkIHB1dEN1cnJlbnRGcmFt
ZShXZWJWaWRlb0ZyYW1lKikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3RyZWFtVGV4dHVy
ZUNsaWVudChXZWJTdHJlYW1UZXh0dXJlQ2xpZW50KikgeyB9CisKICAgICB2aXJ0dWFsIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSB7IHJldHVybiAwOyB9CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc291cmNlQXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0cmVhbVRleHR1cmVDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0cmVhbVRleHR1cmVDbGllbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44MTAwMmZiMjZhZDc5M2RhNmQ2YTQ2ODg2MGMwZjBhZGVlNzM0ZTZhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3RyZWFtVGV4dHVyZUNsaWVu
dC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlN0cmVhbVRleHR1cmVDbGllbnRfaAorI2Rl
ZmluZSBXZWJTdHJlYW1UZXh0dXJlQ2xpZW50X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYlN0cmVhbVRleHR1cmVDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRnJhbWUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZU1hdHJpeChj
b25zdCBmbG9hdCopID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfldlYlN0cmVhbVRl
eHR1cmVDbGllbnQoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZGVvRnJhbWUu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZGVvRnJhbWUuaAppbmRleCA4
ZTNiMmNkYmQyYmQxYjk2ZGVjN2Q3OTJiOGI4YzJhOWNmNjY1NGIxLi43ODc5MDYyN2QxOWUxOTdl
OTNmYjE3ZTg0OWJjMjE1NTg0NGE0M2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJWaWRlb0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVmlkZW9GcmFtZS5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGludCBzdHJpZGUodW5zaWduZWQgcGxhbmUpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2
aXJ0dWFsIGNvbnN0IHZvaWQqIGRhdGEodW5zaWduZWQgcGxhbmUpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KICAgICB2aXJ0dWFsIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
KyAgICB2aXJ0dWFsIHVuc2lnbmVkIHRleHR1cmVUYXJnZXQoKSBjb25zdCB7IHJldHVybiAwOyB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5jcHAKaW5kZXggY2UzODlhZGM2MTQ2
YTQ1OTc4OTAyZTM4YjQzZjkyNmExMWYxMTY3Mi4uZmNjZTkzOWY3MzM3Zjc5YjM3MDhlOGE5YWE3
ZmM5YTgwY2UzNjgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVmlk
ZW9GcmFtZUNocm9taXVtSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
VmlkZW9GcmFtZUNocm9taXVtSW1wbC5jcHAKQEAgLTEyOCw0ICsxMjgsMTEgQEAgdW5zaWduZWQg
VmlkZW9GcmFtZUNocm9taXVtSW1wbDo6dGV4dHVyZUlkKCkgY29uc3QKICAgICByZXR1cm4gMDsK
IH0KIAordW5zaWduZWQgVmlkZW9GcmFtZUNocm9taXVtSW1wbDo6dGV4dHVyZVRhcmdldCgpIGNv
bnN0Cit7CisgICAgaWYgKG1fd2ViVmlkZW9GcmFtZSkKKyAgICAgICAgcmV0dXJuIG1fd2ViVmlk
ZW9GcmFtZS0+dGV4dHVyZVRhcmdldCgpOworICAgIHJldHVybiAwOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVv
RnJhbWVDaHJvbWl1bUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJh
bWVDaHJvbWl1bUltcGwuaAppbmRleCA0NDZhYjVmNTQzMGQ1MWU2MjdlZjA3ZjNjZTQ1NzhmNTlh
MThjZDU1Li42NzkyMDg2NmZjNGRhMTE1Yjg3Y2VjYTkxMmUyNmEwOWEzNjQ0OTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5o
CkBAIC01OCw2ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUgcmVxdWlyZWRUZXh0dXJlU2l6ZSh1bnNpZ25lZCBwbGFuZSkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIGhhc1BhZGRpbmdCeXRlcyh1bnNpZ25lZCBwbGFuZSkgY29uc3Q7CiAgICAgdmly
dHVhbCB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHRl
eHR1cmVUYXJnZXQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBXZWJWaWRlb0ZyYW1lKiBtX3dl
YlZpZGVvRnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJN
ZWRpYVBsYXllckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAppbmRleCA5OTZlNzA3MTAwYWE5MWI5NjY1MzVkYzA4
YzkzYzE5NTUwM2YzOTU5Li5mMzY0N2U0ODkyMDBjMjk5M2Q0YjkwZDI1NGQ5ODQzMDgyZDgxYzI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNs
aWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJXZWJNZWRpYUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIldlYlZpZXdJ
bXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNT
dHJpbmcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDYW52YXMuaCIKICNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKQEAgLTEwNSw2ICsxMDYsNyBAQCBXZWJNZWRp
YVBsYXllckNsaWVudEltcGw6On5XZWJNZWRpYVBsYXllckNsaWVudEltcGwoKQogICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX2NvbXBvc2l0aW5nTXV0ZXgpOwogICAgIGlmIChtX3ZpZGVvRnJhbWVQ
cm92aWRlckNsaWVudCkKICAgICAgICAgbV92aWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQtPnN0b3BV
c2luZ1Byb3ZpZGVyKCk7CisgICAgbV93ZWJNZWRpYVBsYXllci0+c2V0U3RyZWFtVGV4dHVyZUNs
aWVudCgwKTsKICNlbmRpZgogfQogCkBAIC01OTcsNiArNTk5LDcgQEAgdm9pZCBXZWJNZWRpYVBs
YXllckNsaWVudEltcGw6OnNldFZpZGVvRnJhbWVQcm92aWRlckNsaWVudChWaWRlb0ZyYW1lUHJv
dmlkZXI6OkMKIHsKICAgICBNdXRleExvY2tlciBsb2NrZXIobV9jb21wb3NpdGluZ011dGV4KTsK
ICAgICBtX3ZpZGVvRnJhbWVQcm92aWRlckNsaWVudCA9IGNsaWVudDsKKyAgICBtX3dlYk1lZGlh
UGxheWVyLT5zZXRTdHJlYW1UZXh0dXJlQ2xpZW50KGNsaWVudCA/IHRoaXMgOiAwKTsKIH0KIAog
VmlkZW9GcmFtZUNocm9taXVtKiBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmdldEN1cnJlbnRG
cmFtZSgpCkBAIC02NzksNiArNjgyLDIwIEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
OjpzdGFydERlbGF5ZWRMb2FkKCkKICAgICBsb2FkSW50ZXJuYWwoKTsKIH0KIAordm9pZCBXZWJN
ZWRpYVBsYXllckNsaWVudEltcGw6OmRpZFJlY2VpdmVGcmFtZSgpCit7CisgICAgLy8gTm8gbG9j
ayBzaW5jZSB0aGlzIGdldHMgY2FsbGVkIG9uIHRoZSBjbGllbnQncyB0aHJlYWQuCisgICAgQVNT
RVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKyAgICBtX3ZpZGVvRnJhbWVQcm92aWRlckNs
aWVudC0+ZGlkUmVjZWl2ZUZyYW1lKCk7Cit9CisKK3ZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsOjpkaWRVcGRhdGVNYXRyaXgoY29uc3QgZmxvYXQqIG1hdHJpeCkKK3sKKyAgICAvLyBObyBs
b2NrIHNpbmNlIHRoaXMgZ2V0cyBjYWxsZWQgb24gdGhlIGNsaWVudCdzIHRocmVhZC4KKyAgICBB
U1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIG1fdmlkZW9GcmFtZVByb3ZpZGVy
Q2xpZW50LT5kaWRVcGRhdGVNYXRyaXgobWF0cml4KTsKK30KKwogV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsOjpXZWJNZWRpYVBsYXllckNsaWVudEltcGwoKQogICAgIDogbV9tZWRpYVBsYXllcigw
KQogICAgICwgbV9kZWxheWluZ0xvYWQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCmluZGV4IGU3NWU3M2FlMTM1
NWM2ZWE0NzcxZDA0N2FmODU2ODhkNTU3NGU3OGEuLmQ4NWUwZDFmYzU5ZmFhYjRmNTgwNmM1MjE3
ZGZlZTczZTY1N2FmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCkBAIC00MCw3ICs0MCw5IEBACiAjaW5jbHVkZSAi
VmlkZW9MYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNs
aWVudC5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyQ2xpZW50LmgiCisjaW5jbHVkZSAiV2Vi
U3RyZWFtVGV4dHVyZUNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEF1ZGlvU291
cmNlUHJvdmlkZXJDbGllbnQ7IH0KIApAQCAtNTYsNyArNTgsOCBAQCBjbGFzcyBXZWJNZWRpYVBs
YXllckNsaWVudEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICwgcHVibGljIFdlYkNvcmU6OlZpZGVvRnJhbWVQcm92aWRlcgogI2VuZGlm
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgV2ViTWVkaWFQbGF5ZXJD
bGllbnQgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIFdlYk1lZGlh
UGxheWVyQ2xpZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgV2Vi
U3RyZWFtVGV4dHVyZUNsaWVudCB7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0VuYWJs
ZWQoKTsKQEAgLTE1MCw2ICsxNTMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzb3Vy
Y2VFbmRPZlN0cmVhbShXZWJDb3JlOjpNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXMpOwog
I2VuZGlmCiAKKyAgICAvLyBXZWJTdHJlYW1UZXh0dXJlQ2xpZW50IG1ldGhvZHM6CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVGcmFtZSgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVN
YXRyaXgoY29uc3QgZmxvYXQqKTsKKwogcHJpdmF0ZToKICAgICBXZWJNZWRpYVBsYXllckNsaWVu
dEltcGwoKTsKICAgICB2b2lkIHN0YXJ0RGVsYXllZExvYWQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128298</attachid>
            <date>2012-02-22 15:10:43 -0800</date>
            <delta_ts>2012-02-23 14:09:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78398-20120222151042.patch</filename>
            <type>text/plain</type>
            <size>35337</size>
            <attacher name="Daniel Sievers">sievers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTEyMjlhZTVkMGEzMThm
YWQ4NGNhYTM3ZTI4MzYyYjE4MjA5YTdhNS4uZTkzZTQyODc0OThjMDA3YjcwMGQzNzA5ZjNhOTEx
MDA0YmJiZDY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTAyLTIxICBEYW5p
ZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
QWRkIHZpZGVvIHN0cmVhbSB0ZXh0dXJlIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4Mzk4CisKKyAgICAgICAgVGhpcyB1cHN0cmVhbXMg
dGhlIGFic3RyYWN0aW9uIHVzZWQgb24gQW5kcm9pZCBmb3IKKyAgICAgICAgaGFyZHdhcmUgdmlk
ZW8gZGVjb2Rpbmcgd2l0aCB0aGUgY29tcG9zaXRvci4KKworICAgICAgICBNb3N0IG9mIHRoZSBp
bnRlcmZhY2VzIGFyZSBrZXB0IGdlbmVyaWMgYW5kIHRoZSBjb3JlCisgICAgICAgIG9mIHRoaXMg
Y2hhbmdlIGlzIHRvIGFsbG93IHRleHR1cmluZyBmcm9tIGFuIGV4dGVybmFsCisgICAgICAgIHRl
eHR1cmUgd2hpbGUgcmVjZWl2aW5nIG5vdGlmaWNhdGlvbnMgKG9uIHRoZSBjb21wb3NpdG9yCisg
ICAgICAgIHRocmVhZCBpZiB3ZSBhcmUgcnVubmluZyBpdCkgd2hlbiB0aGVyZSBhcmUgbmV3IGZy
YW1lcyB0bworICAgICAgICBiZSBkaXNwbGF5ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRl
bnNpb25zM0RDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdTaW5nbGVUZXh0dXJlVmlkZW9RdWFkKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JHQkEpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TmF0aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1N0cmVh
bVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
VmlkZW9RdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c3Ry
ZWFtVGV4dHVyZUxheWVyUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyUmVu
ZGVyZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hh
ZGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFu
c2Zvcm06OlZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OmluaXQpOgorICAg
ICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OmdldFNoYWRlclN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlck9FU0ltYWdlRXh0ZXJuYWw6Omlu
aXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJPRVNJbWFnZUV4dGVybmFsOjpn
ZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1No
YWRlckNocm9taXVtLmg6CisgICAgICAgIChWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6bWF0cml4TG9jYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OnRleFRy
YW5zZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclZpZGVvVHJh
bnNmb3JtOjp0ZXhNYXRyaXhMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KEZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmg6CisgICAgICAgIChDbGllbnQp
OgorICAgICAgICAoVmlkZW9GcmFtZVByb3ZpZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NWaWRlb0RyYXdRdWFkOjpDQ1ZpZGVvRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6
Q0NWaWRlb0RyYXdRdWFkOjptYXRyaXgpOgorICAgICAgICAoQ0NWaWRlb0RyYXdRdWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVmlkZW9EcmF3UXVhZDo6c2V0TWF0cml4KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6Q0NWaWRl
b0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VkZDRm9ybWF0VG9HQzNERm9y
bWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmRpZFJlY2VpdmVGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpkaWRVcGRhdGVNYXRyaXgpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6c2V0TmVlZHNSZWRyYXcpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NWaWRlb0xheWVySW1wbCk6CisKIDIwMTItMDIt
MjIgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGZp
cnN0UmVuZGVyZXJPZigpIHNob3VsZCBhbHNvIHJldHVybiBhIGZhbGxiYWNrIGVsZW1lbnQgcmVu
ZGVyZXIgaW4gTm9kZVJlbmRlcmluZ0NvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDEyOGY0MjgzMjdkYWQ0MGY4NmEyMzBjOGEyZjE1NDAxYTMwN2Y3NjUuLjgxNjUxMDcwMzdl
ZDc2YmIyMjViNmFlOGM3ODJjYWI3NWRiZjAzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzggQEAKKzIwMTItMDItMjEgIERhbmllbCBTaWV2ZXJzICA8c2lldmVyc0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBBZGQgdmlkZW8gc3RyZWFtIHRleHR1
cmUgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzgzOTgKKworICAgICAgICBUaGlzIHVwc3RyZWFtcyB0aGUgYWJzdHJhY3Rpb24gdXNlZCBv
biBBbmRyb2lkIGZvcgorICAgICAgICBoYXJkd2FyZSB2aWRlbyBkZWNvZGluZyB3aXRoIHRoZSBj
b21wb3NpdG9yLgorCisgICAgICAgIE1vc3Qgb2YgdGhlIGludGVyZmFjZXMgYXJlIGtlcHQgZ2Vu
ZXJpYyBhbmQgdGhlIGNvcmUKKyAgICAgICAgb2YgdGhpcyBjaGFuZ2UgaXMgdG8gYWxsb3cgdGV4
dHVyaW5nIGZyb20gYW4gZXh0ZXJuYWwKKyAgICAgICAgdGV4dHVyZSB3aGlsZSByZWNlaXZpbmcg
bm90aWZpY2F0aW9ucyAob24gdGhlIGNvbXBvc2l0b3IKKyAgICAgICAgdGhyZWFkIGlmIHdlIGFy
ZSBydW5uaW5nIGl0KSB3aGVuIHRoZXJlIGFyZSBuZXcgZnJhbWVzIHRvCisgICAgICAgIGJlIGRp
c3BsYXllZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYk1lZGlhUGxheWVyLmg6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllcjo6c2V0U3RyZWFt
VGV4dHVyZUNsaWVudCk6CisgICAgICAgIChXZWJNZWRpYVBsYXllcik6CisgICAgICAgICogcHVi
bGljL1dlYlN0cmVhbVRleHR1cmVDbGllbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZS5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYlN0cmVhbVRleHR1cmVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdHJlYW1U
ZXh0dXJlQ2xpZW50Ojp+V2ViU3RyZWFtVGV4dHVyZUNsaWVudCk6CisgICAgICAgICogcHVibGlj
L1dlYlZpZGVvRnJhbWUuaDoKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjp+V2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsOjpzZXRWaWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmRpZFJlY2VpdmVGcmFtZSk6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmRpZFVwZGF0
ZU1hdHJpeCk6CisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oOgorICAg
ICAgICAoV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsKToKKwogMjAxMi0wMi0yMCAgUm9sYW5kIFN0
ZWluZXIgIDxyb2xhbmRzdGVpbmVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICA8c3R5bGUgc2Nv
cGVkPjogQWRkIHJ1bnRpbWUtZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgKaW5k
ZXggNTA5ZGIzM2U4NTNhMDM4MWMyZWZlNWI0Nzc3Mzg0MDBhMTJlY2NlNS4uNTMzMjJmMGYyNWVk
NDA3YTI1ZTZiNjIzMjdlODcxMjg5ZDE4YmQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJv
bWl1bS5oCkBAIC02Myw2ICs2Myw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRU
cmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm0zRE9iamVjdCk7CiAKICAgICBlbnVt
IHsKKyAgICAgICAgLy8gR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbAorICAgICAgICBHTF9URVhU
VVJFX0VYVEVSTkFMX09FUyA9IDB4OEQ2NSwKKwogICAgICAgICAvLyBHTF9DSFJPTUlVTV9tYXBf
c3ViIChlbnVtcyBpbmhlcml0ZWQgZnJvbSBHTF9BUkJfdmVydGV4X2J1ZmZlcl9vYmplY3QpCiAg
ICAgICAgIFJFQURfT05MWSA9IDB4ODhCOCwKICAgICAgICAgV1JJVEVfT05MWSA9IDB4ODhCOSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDEyNTlkMWI1YzRjNTQy
NTYyNWZjNjMwMmUyN2UyNzE0Mzk5MDdhZWQuLjU0MmIzYWQxYzQyNzEzMzMzMjE3ODE5YjE4OGVm
YjNkZGY3NTU3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAt
NzM2LDEyICs3MzYsMTIgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdZVVYoY29u
c3QgQ0NWaWRlb0RyYXdRdWFkKiBxdWFkKQogfQogCiB0ZW1wbGF0ZTxjbGFzcyBQcm9ncmFtPgot
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdTaW5nbGVUZXh0dXJlVmlkZW9RdWFkKGNv
bnN0IENDVmlkZW9EcmF3UXVhZCogcXVhZCwgUHJvZ3JhbSogcHJvZ3JhbSwgZmxvYXQgd2lkdGhT
Y2FsZUZhY3RvciwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQpCit2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd1NpbmdsZVRleHR1cmVWaWRlb1F1YWQoY29uc3QgQ0NWaWRlb0RyYXdR
dWFkKiBxdWFkLCBQcm9ncmFtKiBwcm9ncmFtLCBmbG9hdCB3aWR0aFNjYWxlRmFjdG9yLCBQbGF0
Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgR0MzRGVudW0gdGFyZ2V0KQogewogICAgIEFTU0VSVChw
cm9ncmFtICYmIHByb2dyYW0tPmluaXRpYWxpemVkKCkpOwogCiAgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwot
ICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCkpOworICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQo
KS0+YmluZFRleHR1cmUodGFyZ2V0LCB0ZXh0dXJlSWQpKTsKIAogICAgIEdMQyhjb250ZXh0KCks
IGNvbnRleHQoKS0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKICAgICBHTEMoY29u
dGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm00Zihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS50ZXhU
cmFuc2Zvcm1Mb2NhdGlvbigpLCAwLCAwLCB3aWR0aFNjYWxlRmFjdG9yLCAxKSk7CkBAIC03NTks
MTMgKzc1OSwyNSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JHQkEoY29uc3Qg
Q0NWaWRlb0RyYXdRdWFkKiBxdWFkKQogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OlJHQkFQ
cm9ncmFtKiBwcm9ncmFtID0gdmlkZW9MYXllclJHQkFQcm9ncmFtKCk7CiAgICAgY29uc3QgQ0NW
aWRlb0xheWVySW1wbDo6VGV4dHVyZSYgdGV4dHVyZSA9IHF1YWQtPnRleHR1cmVzKClbVmlkZW9G
cmFtZUNocm9taXVtOjpyZ2JQbGFuZV07CiAgICAgZmxvYXQgd2lkdGhTY2FsZUZhY3RvciA9IHN0
YXRpY19jYXN0PGZsb2F0Pih0ZXh0dXJlLm1fdmlzaWJsZVNpemUud2lkdGgoKSkgLyB0ZXh0dXJl
Lm1fdGV4dHVyZS0+c2l6ZSgpLndpZHRoKCk7Ci0gICAgZHJhd1NpbmdsZVRleHR1cmVWaWRlb1F1
YWQocXVhZCwgcHJvZ3JhbSwgd2lkdGhTY2FsZUZhY3RvciwgdGV4dHVyZS5tX3RleHR1cmUtPnRl
eHR1cmVJZCgpKTsKKyAgICBkcmF3U2luZ2xlVGV4dHVyZVZpZGVvUXVhZChxdWFkLCBwcm9ncmFt
LCB3aWR0aFNjYWxlRmFjdG9yLCB0ZXh0dXJlLm1fdGV4dHVyZS0+dGV4dHVyZUlkKCksIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJEKTsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdOYXRpdmVUZXh0dXJlKGNvbnN0IENDVmlkZW9EcmF3UXVhZCogcXVhZCkKK3ZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TmF0aXZlVGV4dHVyZTJEKGNvbnN0IENDVmlkZW9E
cmF3UXVhZCogcXVhZCkKIHsKICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpOYXRpdmVUZXh0
dXJlUHJvZ3JhbSogcHJvZ3JhbSA9IHZpZGVvTGF5ZXJOYXRpdmVUZXh0dXJlUHJvZ3JhbSgpOwot
ICAgIGRyYXdTaW5nbGVUZXh0dXJlVmlkZW9RdWFkKHF1YWQsIHByb2dyYW0sIDEsIHF1YWQtPmZy
YW1lKCktPnRleHR1cmVJZCgpKTsKKyAgICBkcmF3U2luZ2xlVGV4dHVyZVZpZGVvUXVhZChxdWFk
LCBwcm9ncmFtLCAxLCBxdWFkLT5mcmFtZSgpLT50ZXh0dXJlSWQoKSwgR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQpOworfQorCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1N0
cmVhbVRleHR1cmUoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKiBxdWFkKQoreworICAgIEFTU0VSVChj
b250ZXh0KCktPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2VfZXh0
ZXJuYWwiKSAmJiBjb250ZXh0KCktPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFibGVkKCJHTF9PRVNf
RUdMX2ltYWdlX2V4dGVybmFsIikpOworCisgICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6U3Ry
ZWFtVGV4dHVyZVByb2dyYW0qIHByb2dyYW0gPSBzdHJlYW1UZXh0dXJlTGF5ZXJQcm9ncmFtKCk7
CisgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dy
YW0oKSkpOworICAgIEFTU0VSVChxdWFkLT5tYXRyaXgoKSk7CisgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT51bmlmb3JtTWF0cml4NGZ2KHByb2dyYW0tPnZlcnRleFNoYWRlcigpLnRleE1h
dHJpeExvY2F0aW9uKCksIGZhbHNlLCBjb25zdF9jYXN0PGZsb2F0Kj4ocXVhZC0+bWF0cml4KCkp
LCAxKSk7CisKKyAgICBkcmF3U2luZ2xlVGV4dHVyZVZpZGVvUXVhZChxdWFkLCBwcm9ncmFtLCAx
LCBxdWFkLT5mcmFtZSgpLT50ZXh0dXJlSWQoKSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdMX1RF
WFRVUkVfRVhURVJOQUxfT0VTKTsKIH0KIAogYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNv
cHlGcmFtZVRvVGV4dHVyZXMoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKiBxdWFkKQpAQCAtODIyLDcg
KzgzNCwxMCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1ZpZGVvUXVhZChjb25z
dCBDQ1ZpZGVvRHJhd1F1YWQqIHF1YWQpCiAgICAgICAgIGRyYXdSR0JBKHF1YWQpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJEOgotICAgICAg
ICBkcmF3TmF0aXZlVGV4dHVyZShxdWFkKTsKKyAgICAgICAgZHJhd05hdGl2ZVRleHR1cmUyRChx
dWFkKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHRlbnNpb25zM0RDaHJvbWl1bTo6R0xf
VEVYVFVSRV9FWFRFUk5BTF9PRVM6CisgICAgICAgIGRyYXdTdHJlYW1UZXh0dXJlKHF1YWQpOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOyAvLyBTb21lb25l
IHVwZGF0ZWQgY29udmVydFZGQ0Zvcm1hdFRvR0MzREZvcm1hdCBhYm92ZSBidXQgdXBkYXRlIHRo
aXMhCkBAIC0xMzg0LDYgKzEzOTksMTYgQEAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6TmF0aXZl
VGV4dHVyZVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9MYXllck4KICAgICBy
ZXR1cm4gbV92aWRlb0xheWVyTmF0aXZlVGV4dHVyZVByb2dyYW0uZ2V0KCk7CiB9CiAKK2NvbnN0
IENDVmlkZW9MYXllckltcGw6OlN0cmVhbVRleHR1cmVQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hy
b21pdW06OnN0cmVhbVRleHR1cmVMYXllclByb2dyYW0oKQoreworICAgIGlmICghbV9zdHJlYW1U
ZXh0dXJlTGF5ZXJQcm9ncmFtKQorICAgICAgICBtX3N0cmVhbVRleHR1cmVMYXllclByb2dyYW0g
PSBhZG9wdFB0cihuZXcgQ0NWaWRlb0xheWVySW1wbDo6U3RyZWFtVGV4dHVyZVByb2dyYW0obV9j
b250ZXh0LmdldCgpKSk7CisgICAgaWYgKCFtX3N0cmVhbVRleHR1cmVMYXllclByb2dyYW0tPmlu
aXRpYWxpemVkKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6c3RyZWFtVGV4dHVyZUxheWVyUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAg
ICAgICBtX3N0cmVhbVRleHR1cmVMYXllclByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0Lmdl
dCgpKTsKKyAgICB9CisgICAgcmV0dXJuIG1fc3RyZWFtVGV4dHVyZUxheWVyUHJvZ3JhbS5nZXQo
KTsKK30KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3Rz
KCkKIHsKQEAgLTE0MjUsNiArMTQ1MCw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpj
bGVhbnVwU2hhcmVkT2JqZWN0cygpCiAgICAgICAgIG1fdmlkZW9MYXllclJHQkFQcm9ncmFtLT5j
bGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1fdmlkZW9MYXllcllVVlByb2dyYW0p
CiAgICAgICAgIG1fdmlkZW9MYXllcllVVlByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgp
KTsKKyAgICBpZiAobV9zdHJlYW1UZXh0dXJlTGF5ZXJQcm9ncmFtKQorICAgICAgICBtX3N0cmVh
bVRleHR1cmVMYXllclByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKIAogICAgIG1f
Ym9yZGVyUHJvZ3JhbS5jbGVhcigpOwogICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLmNsZWFy
KCk7CkBAIC0xNDQzLDYgKzE0NzAsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xl
YW51cFNoYXJlZE9iamVjdHMoKQogICAgIG1fcmVuZGVyU3VyZmFjZVByb2dyYW1BQS5jbGVhcigp
OwogICAgIG1fdmlkZW9MYXllclJHQkFQcm9ncmFtLmNsZWFyKCk7CiAgICAgbV92aWRlb0xheWVy
WVVWUHJvZ3JhbS5jbGVhcigpOworICAgIG1fc3RyZWFtVGV4dHVyZUxheWVyUHJvZ3JhbS5jbGVh
cigpOwogICAgIGlmIChtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpCiAgICAgICAgIEdMQyhtX2Nv
bnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9vZmZzY3JlZW5GcmFt
ZWJ1ZmZlcklkKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggOGM0
YjZlOWZlOTJhNmZmOGFhZTg1OTVkNDM5MDNiOTg5MDViZTQ5My4uZWU5ODk1YWUxZDRjOTRjZGE2
MzEwZGM3YjNmYjA0M2QyOTVjYjdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKQEAgLTEzMCw2ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1w
bDo6UkdCQVByb2dyYW0qIHZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSgpOwogICAgIGNvbnN0IENDVmlk
ZW9MYXllckltcGw6OllVVlByb2dyYW0qIHZpZGVvTGF5ZXJZVVZQcm9ncmFtKCk7CiAgICAgY29u
c3QgQ0NWaWRlb0xheWVySW1wbDo6TmF0aXZlVGV4dHVyZVByb2dyYW0qIHZpZGVvTGF5ZXJOYXRp
dmVUZXh0dXJlUHJvZ3JhbSgpOworICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OlN0cmVhbVRl
eHR1cmVQcm9ncmFtKiBzdHJlYW1UZXh0dXJlTGF5ZXJQcm9ncmFtKCk7CiAKICAgICB2b2lkIGdl
dEZyYW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYpOwogCkBAIC0x
NzAsOCArMTcxLDkgQEAgcHJpdmF0ZToKICAgICBNYW5hZ2VkVGV4dHVyZSogZ2V0T2Zmc2NyZWVu
TGF5ZXJUZXh0dXJlKCk7CiAgICAgdm9pZCBjb3B5UGxhbmVUb1RleHR1cmUoY29uc3QgQ0NWaWRl
b0RyYXdRdWFkKiwgY29uc3Qgdm9pZCogcGxhbmUsIGludCBpbmRleCk7CiAgICAgYm9vbCBjb3B5
RnJhbWVUb1RleHR1cmVzKGNvbnN0IENDVmlkZW9EcmF3UXVhZCopOwotICAgIHRlbXBsYXRlPGNs
YXNzIFByb2dyYW0+IHZvaWQgZHJhd1NpbmdsZVRleHR1cmVWaWRlb1F1YWQoY29uc3QgQ0NWaWRl
b0RyYXdRdWFkKiwgUHJvZ3JhbSosIGZsb2F0IHdpZHRoU2NhbGVGYWN0b3IsIFBsYXRmb3JtM0RP
YmplY3QgdGV4dHVyZUlkKTsKLSAgICB2b2lkIGRyYXdOYXRpdmVUZXh0dXJlKGNvbnN0IENDVmlk
ZW9EcmF3UXVhZCopOworICAgIHRlbXBsYXRlPGNsYXNzIFByb2dyYW0+IHZvaWQgZHJhd1Npbmds
ZVRleHR1cmVWaWRlb1F1YWQoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKiwgUHJvZ3JhbSosIGZsb2F0
IHdpZHRoU2NhbGVGYWN0b3IsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBHQzNEZW51bSB0
YXJnZXQpOworICAgIHZvaWQgZHJhd05hdGl2ZVRleHR1cmUyRChjb25zdCBDQ1ZpZGVvRHJhd1F1
YWQqKTsKKyAgICB2b2lkIGRyYXdTdHJlYW1UZXh0dXJlKGNvbnN0IENDVmlkZW9EcmF3UXVhZCop
OwogICAgIHZvaWQgZHJhd1JHQkEoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKik7CiAgICAgdm9pZCBk
cmF3WVVWKGNvbnN0IENDVmlkZW9EcmF3UXVhZCopOwogCkBAIC0yMzMsNiArMjM1LDcgQEAgcHJp
dmF0ZToKICAgICBPd25QdHI8Q0NWaWRlb0xheWVySW1wbDo6UkdCQVByb2dyYW0+IG1fdmlkZW9M
YXllclJHQkFQcm9ncmFtOwogICAgIE93blB0cjxDQ1ZpZGVvTGF5ZXJJbXBsOjpZVVZQcm9ncmFt
PiBtX3ZpZGVvTGF5ZXJZVVZQcm9ncmFtOwogICAgIE93blB0cjxDQ1ZpZGVvTGF5ZXJJbXBsOjpO
YXRpdmVUZXh0dXJlUHJvZ3JhbT4gbV92aWRlb0xheWVyTmF0aXZlVGV4dHVyZVByb2dyYW07Cisg
ICAgT3duUHRyPENDVmlkZW9MYXllckltcGw6OlN0cmVhbVRleHR1cmVQcm9ncmFtPiBtX3N0cmVh
bVRleHR1cmVMYXllclByb2dyYW07CiAKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fcmVu
ZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyOwogICAgIE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxv
Y2F0b3I+IG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3Bw
CmluZGV4IGY2OWI2YjE4YWE3OWJlOTc1ODhhYWFiYWQ4OTMzNGNkMzIyMmY2NjQuLjcxZDRkMWZk
MThkOTg2MjFkMmNjNGI0OWFmOWRhZWNkNjE1ZWM3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5j
cHAKQEAgLTI1NSw2ICsyNTUsMzkgQEAgU3RyaW5nIFZlcnRleFNoYWRlclRpbGU6OmdldFNoYWRl
clN0cmluZygpIGNvbnN0CiAgICAgKTsKIH0KIAorVmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06
OlZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtKCkKKyAgICA6IG1fbWF0cml4TG9jYXRpb24oLTEp
CisgICAgLCBtX3RleFRyYW5zZm9ybUxvY2F0aW9uKC0xKQorICAgICwgbV90ZXhNYXRyaXhMb2Nh
dGlvbigtMSkKK3sKK30KKworYm9vbCBWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6aW5pdChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3sKKyAgICBtX21h
dHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRy
aXgiKTsKKyAgICBtX3RleFRyYW5zZm9ybUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sICJ0ZXhUcmFuc2Zvcm0iKTsKKyAgICBtX3RleE1hdHJpeExvY2F0aW9u
ID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhNYXRyaXgiKTsKKyAg
ICByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbiAhPSAtMSAmJiBtX3RleFRyYW5zZm9ybUxvY2F0aW9u
ICE9IC0xICYmIG1fdGV4TWF0cml4TG9jYXRpb24gIT0gLTE7Cit9CisKK1N0cmluZyBWZXJ0ZXhT
aGFkZXJWaWRlb1RyYW5zZm9ybTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gU0hBREVSKAorICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworICAgICAgICBh
dHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOworICAgICAgICB1bmlmb3JtIG1hdDQgbWF0cml4Owor
ICAgICAgICB1bmlmb3JtIHZlYzQgdGV4VHJhbnNmb3JtOworICAgICAgICB1bmlmb3JtIG1hdDQg
dGV4TWF0cml4OworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKyAgICAgICAgdm9p
ZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBtYXRyaXggKiBh
X3Bvc2l0aW9uOworICAgICAgICAgICAgdmVjMiB0ZXhDb29yZCA9IHZlYzIodGV4TWF0cml4ICog
dmVjNChhX3RleENvb3JkLngsIDEuMCAtIGFfdGV4Q29vcmQueSwgMC4wLCAxLjApKTsKKyAgICAg
ICAgICAgIHZfdGV4Q29vcmQgPSB0ZXhDb29yZCAqIHRleFRyYW5zZm9ybS56dyArIHRleFRyYW5z
Zm9ybS54eTsKKyAgICAgICAgfQorICAgICk7Cit9CisKIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5n
OjpGcmFnbWVudFRleEFscGhhQmluZGluZygpCiAgICAgOiBtX3NhbXBsZXJMb2NhdGlvbigtMSkK
ICAgICAsIG1fYWxwaGFMb2NhdGlvbigtMSkKQEAgLTI5Niw2ICszMjksMjcgQEAgU3RyaW5nIEZy
YWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKICAg
ICApOwogfQogCitib29sIEZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbDo6aW5pdChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3sKKyAgICBtX3NhbXBs
ZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0
dXJlIik7CisKKyAgICByZXR1cm4gbV9zYW1wbGVyTG9jYXRpb24gIT0gLTE7Cit9CisKK1N0cmlu
ZyBGcmFnbWVudFNoYWRlck9FU0ltYWdlRXh0ZXJuYWw6OmdldFNoYWRlclN0cmluZygpIGNvbnN0
Cit7CisgICAgLy8gQ2Fubm90IHVzZSB0aGUgU0hBREVSKCkgbWFjcm8gYmVjYXVzZSBvZiB0aGUg
JyMnIGNoYXIKKyAgICByZXR1cm4gIiNleHRlbnNpb24gR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5h
bCA6IHJlcXVpcmUgXG4iCisgICAgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIK
KyAgICAgICAgICAgInZhcnlpbmcgdmVjMiB2X3RleENvb3JkO1xuIgorICAgICAgICAgICAidW5p
Zm9ybSBzYW1wbGVyRXh0ZXJuYWxPRVMgc190ZXh0dXJlO1xuIgorICAgICAgICAgICAidm9pZCBt
YWluKClcbiIKKyAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgIiAgICB2ZWM0IHRleENvbG9y
ID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdl90ZXhDb29yZCk7XG4iCisgICAgICAgICAgICIgICAg
Z2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhDb2xvci54LCB0ZXhDb2xvci55LCB0ZXhDb2xvci56LCB0
ZXhDb2xvci53KTtcbiIKKyAgICAgICAgICAgIn1cbiI7Cit9CisKIFN0cmluZyBGcmFnbWVudFNo
YWRlclJHQkFUZXhBbHBoYTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4g
U0hBREVSKApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vU2hhZGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKaW5kZXggMzQzMjNlNmQzMzk5NzdlZTNmNTVkMjkw
NTlhODNmZWEwZWZlYzVkYS4uOTQ5OWFjN2ZkNzIxYmM0OWQwZDQ1N2RhMWEyYTFjOWVjNWYyNmJl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U2hhZGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCkBAIC0xNDUsNiArMTQ1LDIzIEBAIHByaXZhdGU6CiAg
ICAgaW50IG1fdmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb247CiB9OwogCitjbGFzcyBWZXJ0ZXhT
aGFkZXJWaWRlb1RyYW5zZm9ybSB7CitwdWJsaWM6CisgICAgVmVydGV4U2hhZGVyVmlkZW9UcmFu
c2Zvcm0oKTsKKworICAgIGJvb2wgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHBy
b2dyYW0pOworICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKKworICAgIGludCBt
YXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0KKyAgICBp
bnQgdGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3RleFRyYW5zZm9ybUxv
Y2F0aW9uOyB9CisgICAgaW50IHRleE1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90
ZXhNYXRyaXhMb2NhdGlvbjsgfQorCitwcml2YXRlOgorICAgIGludCBtX21hdHJpeExvY2F0aW9u
OworICAgIGludCBtX3RleFRyYW5zZm9ybUxvY2F0aW9uOworICAgIGludCBtX3RleE1hdHJpeExv
Y2F0aW9uOworfTsKKwogY2xhc3MgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcgewogcHVibGljOgog
ICAgIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nKCk7CkBAIC0yMTEsNiArMjI4LDE1IEBAIHB1Ymxp
YzoKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiB9OwogCisvLyBGcmFnbWVu
dCBzaGFkZXIgZm9yIGV4dGVybmFsIHRleHR1cmVzLgorY2xhc3MgRnJhZ21lbnRTaGFkZXJPRVNJ
bWFnZUV4dGVybmFsIDogcHVibGljIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nIHsKK3B1YmxpYzoK
KyAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CisgICAgYm9vbCBpbml0KEdyYXBo
aWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7Citwcml2YXRlOgorICAgIGludCBtX3Nh
bXBsZXJMb2NhdGlvbjsKK307CisKIGNsYXNzIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUEg
ewogcHVibGljOgogICAgIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUEoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlk
ZW9GcmFtZUNocm9taXVtLmgKaW5kZXggYzRhYmQ5NjlkMWVkMTFkNzg0MzdkNTA5YzM0ZGFkOTVl
ZDkzNDJiMi4uMmQ3NmM0NzU1OGUwYjhiNGM0ZTg0ZDA0YzgwNDM5MmNkYTU0NmM1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFt
ZUNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVmlkZW9GcmFtZUNocm9taXVtLmgKQEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgY29uc3QgSW50U2l6ZSByZXF1aXJlZFRleHR1cmVTaXplKHVuc2lnbmVkIHBsYW5lKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGhhc1BhZGRpbmdCeXRlcyh1bnNpZ25lZCBwbGFu
ZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgdW5zaWduZWQgdGV4dHVyZVRhcmdldCgpIGNvbnN0ID0gMDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVQcm92aWRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmgKaW5kZXgg
M2Q0M2E5MGMzN2E2MzdhY2U3Y2M3MzIxNzYzZGU0YTM5Nzk5NDFkZC4uOTc5NDc5NGE3YjdkZjUz
MzMzMzNjMGExNGRmMjUxYTY3NDhjOTkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmgK
QEAgLTQzLDYgKzQzLDggQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgLy8gUHJvdmlk
ZXIgd2lsbCBjYWxsIHRoaXMgbWV0aG9kIHRvIHRlbGwgdGhlIGNsaWVudCB0byBzdG9wIHVzaW5n
IGl0LgogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcFVzaW5nUHJvdmlkZXIoKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJhbWUoKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRVcGRhdGVNYXRyaXgoY29uc3QgZmxvYXQqKSA9IDA7CiAgICAgfTsKIAogICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQoQ2xpZW50KikgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NW
aWRlb0RyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5jcHAKaW5kZXggMWY5NmUxYjEyM2QwZDE3MTJjYjk2OWM5
MmYwMmZiNTlhODkwZWFmZS4uYmE1NzM0OTA5ODc1YzVkY2NjZjg5YWIyMDM0YzQwZTQ1OWRmNzI5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NWaWRlb0RyYXdRdWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuY3BwCkBAIC0zOSw2ICszOSw3IEBAIEND
VmlkZW9EcmF3UXVhZDo6Q0NWaWRlb0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIGNvbnN0CiAgICAgLCBtX3RleHR1cmVzKHRleHR1cmVzKQogICAgICwg
bV9mcmFtZShmcmFtZSkKICAgICAsIG1fZm9ybWF0KGZvcm1hdCkKKyAgICAsIG1fbWF0cml4KDAp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0RyYXdRdWFkLmgKaW5kZXggMTY1YWE2MGRjNDc3YmI5
OTczYmJlYTRmNDA3YWQ2NjgwNmRjMDU5Ni4uYWVmNzg0NzJhNDBhYzZiZWY1NDgyM2ZiYTQzMDQw
NjMzNjE2ZDQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NWaWRlb0RyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0RyYXdRdWFkLmgKQEAgLTQxLDYgKzQxLDkg
QEAgcHVibGljOgogICAgIENDVmlkZW9MYXllckltcGw6OlRleHR1cmUqIHRleHR1cmVzKCkgY29u
c3QgeyByZXR1cm4gbV90ZXh0dXJlczsgfQogICAgIFZpZGVvRnJhbWVDaHJvbWl1bSogZnJhbWUo
KSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CiAgICAgR0MzRGVudW0gZm9ybWF0KCkgY29uc3Qg
eyByZXR1cm4gbV9mb3JtYXQ7IH0KKyAgICBjb25zdCBmbG9hdCogbWF0cml4KCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXRyaXg7IH0KKworICAgIHZvaWQgc2V0TWF0cml4KGNvbnN0IGZsb2F0KiBtYXRy
aXgpIHsgbV9tYXRyaXggPSBtYXRyaXg7IH0KIAogcHJpdmF0ZToKICAgICBDQ1ZpZGVvRHJhd1F1
YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgQ0NWaWRlb0xheWVy
SW1wbDo6VGV4dHVyZSogdGV4dHVyZXMsIFZpZGVvRnJhbWVDaHJvbWl1bSosIEdDM0RlbnVtIGZv
cm1hdCk7CkBAIC00OCw2ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgQ0NWaWRlb0xheWVySW1wbDo6
VGV4dHVyZSogbV90ZXh0dXJlczsKICAgICBWaWRlb0ZyYW1lQ2hyb21pdW0qIG1fZnJhbWU7CiAg
ICAgR0MzRGVudW0gbV9mb3JtYXQ7CisgICAgY29uc3QgZmxvYXQqIG1fbWF0cml4OwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAppbmRleCA3MzE5YjE1N2FjZmFhYjAy
YWI2OGIxZmMxZjAwOTdhNmQxZTFhNzA0Li42NzU0ODk0ODQxNWY5NTExY2Q2YzJmYzAxODZiZDk4
NjY5YTc0YWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApAQCAtNjIsMTAg
KzYyLDIxIEBAIGNvbnN0IGZsb2F0IENDVmlkZW9MYXllckltcGw6Onl1dkFkanVzdFszXSA9IHsK
ICAgICAtMC41ZiwKIH07CiAKKy8vIFRoaXMgbWF0cml4IGlzIHRoZSBkZWZhdWx0IHRyYW5zZm9y
bWF0aW9uIGZvciBzdHJlYW0gdGV4dHVyZXMuCitjb25zdCBmbG9hdCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpmbGlwVHJhbnNmb3JtWzE2XSA9IHsKKyAgICAxLCAwLCAwLCAwLAorICAgIDAsIC0xLCAwLCAw
LAorICAgIDAsIDAsIDEsIDAsCisgICAgMCwgMSwgMCwgMSwKK307CisKIENDVmlkZW9MYXllcklt
cGw6OkNDVmlkZW9MYXllckltcGwoaW50IGlkLCBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVy
KQogICAgIDogQ0NMYXllckltcGwoaWQpCiAgICAgLCBtX3Byb3ZpZGVyKHByb3ZpZGVyKQorICAg
ICwgbV9sYXllclRyZWVIb3N0SW1wbCgwKQorICAgICwgbV9mcmFtZSgwKQogeworICAgIG1lbWNw
eShtX3N0cmVhbVRleHR1cmVNYXRyaXgsIGZsaXBUcmFuc2Zvcm0sIHNpemVvZihtX3N0cmVhbVRl
eHR1cmVNYXRyaXgpKTsKICAgICBwcm92aWRlci0+c2V0VmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50
KHRoaXMpOwogfQogCkBAIC04OCwxNiArOTksMTYgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpz
dG9wVXNpbmdQcm92aWRlcigpCiB9CiAKIC8vIENvbnZlcnQgVmlkZW9GcmFtZUNocm9taXVtOjpG
b3JtYXQgdG8gR3JhcGhpY3NDb250ZXh0M0QncyBmb3JtYXQgZW51bSB2YWx1ZXMuCi1zdGF0aWMg
R0MzRGVudW0gY29udmVydFZGQ0Zvcm1hdFRvR0MzREZvcm1hdChWaWRlb0ZyYW1lQ2hyb21pdW06
OkZvcm1hdCBmb3JtYXQpCitzdGF0aWMgR0MzRGVudW0gY29udmVydFZGQ0Zvcm1hdFRvR0MzREZv
cm1hdChjb25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qIGZyYW1lKQogewotICAgIHN3aXRjaCAoZm9y
bWF0KSB7CisgICAgc3dpdGNoIChmcmFtZS0+Zm9ybWF0KCkpIHsKICAgICBjYXNlIFZpZGVvRnJh
bWVDaHJvbWl1bTo6WVYxMjoKICAgICBjYXNlIFZpZGVvRnJhbWVDaHJvbWl1bTo6WVYxNjoKICAg
ICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpMVU1JTkFOQ0U7CiAgICAgY2FzZSBWaWRl
b0ZyYW1lQ2hyb21pdW06OlJHQkE6CiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQTsKICAgICBjYXNlIFZpZGVvRnJhbWVDaHJvbWl1bTo6TmF0aXZlVGV4dHVyZToKLSAgICAg
ICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJEOworICAgICAgICByZXR1cm4g
ZnJhbWUtPnRleHR1cmVUYXJnZXQoKTsKICAgICBjYXNlIFZpZGVvRnJhbWVDaHJvbWl1bTo6SW52
YWxpZDoKICAgICBjYXNlIFZpZGVvRnJhbWVDaHJvbWl1bTo6UkdCNTU1OgogICAgIGNhc2UgVmlk
ZW9GcmFtZUNocm9taXVtOjpSR0I1NjU6CkBAIC0xMTgsMTUgKzEyOSwxNyBAQCB2b2lkIENDVmlk
ZW9MYXllckltcGw6OndpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJl
cikKIAogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3Byb3ZpZGVyTXV0ZXgpOwogCi0gICAgaWYg
KCFtX3Byb3ZpZGVyKQorICAgIGlmICghbV9wcm92aWRlcikgeworICAgICAgICBtX2ZyYW1lID0g
MDsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIG1fZnJhbWUgPSBtX3Byb3ZpZGVyLT5n
ZXRDdXJyZW50RnJhbWUoKTsKIAogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9mb3JtYXQgPSBjb252ZXJ0VkZDRm9ybWF0VG9HQzNERm9ybWF0KG1fZnJhbWUtPmZv
cm1hdCgpKTsKKyAgICBtX2Zvcm1hdCA9IGNvbnZlcnRWRkNGb3JtYXRUb0dDM0RGb3JtYXQobV9m
cmFtZSk7CiAKICAgICBpZiAobV9mb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
VkFMVUUpIHsKICAgICAgICAgbV9wcm92aWRlci0+cHV0Q3VycmVudEZyYW1lKG1fZnJhbWUpOwpA
QCAtMTQzLDcgKzE1NiwxMiBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OndpbGxEcmF3KExheWVy
UmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6
YXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUpCiB7CiAgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgpLCBi
b3VuZHMoKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKENDVmlkZW9EcmF3UXVhZDo6Y3JlYXRlKHNo
YXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1fdGV4dHVyZXMsIG1fZnJhbWUsIG1fZm9ybWF0KSk7
CisgICAgT3duUHRyPENDVmlkZW9EcmF3UXVhZD4gdmlkZW9RdWFkID0gQ0NWaWRlb0RyYXdRdWFk
OjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV90ZXh0dXJlcywgbV9mcmFtZSwg
bV9mb3JtYXQpOworCisgICAgaWYgKG1fZm9ybWF0ID09IEV4dGVuc2lvbnMzRENocm9taXVtOjpH
TF9URVhUVVJFX0VYVEVSTkFMX09FUykKKyAgICAgICAgdmlkZW9RdWFkLT5zZXRNYXRyaXgobV9z
dHJlYW1UZXh0dXJlTWF0cml4KTsKKworICAgIHF1YWRMaXN0LmFwcGVuZCh2aWRlb1F1YWQucmVs
ZWFzZSgpKTsKIH0KIAogdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpkaWREcmF3KCkKQEAgLTIxMyw2
ICsyMzEsMjMgQEAgYm9vbCBDQ1ZpZGVvTGF5ZXJJbXBsOjpyZXNlcnZlVGV4dHVyZXMoY29uc3Qg
VmlkZW9GcmFtZUNocm9taXVtKiBmcmFtZSwgR0MzRGVudW0KICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAordm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpkaWRSZWNlaXZlRnJhbWUoKQoreworICAgIHNldE5l
ZWRzUmVkcmF3KCk7Cit9CisKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZGlkVXBkYXRlTWF0cml4
KGNvbnN0IGZsb2F0IG1hdHJpeFsxNl0pCit7CisgICAgbWVtY3B5KG1fc3RyZWFtVGV4dHVyZU1h
dHJpeCwgbWF0cml4LCBzaXplb2YobV9zdHJlYW1UZXh0dXJlTWF0cml4KSk7CisgICAgc2V0TmVl
ZHNSZWRyYXcoKTsKK30KKwordm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpzZXROZWVkc1JlZHJhdygp
Cit7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwpCisgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dEltcGwtPnNldE5lZWRzUmVkcmF3KCk7Cit9CisKIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZHVt
cExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKIHsKICAg
ICB3cml0ZUluZGVudCh0cywgaW5kZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaApp
bmRleCAzOWZjMmY2YzA4M2RhZGZjZTNjZTNlN2FhYWYwYTIyYmE5YWMyODhjLi5jYWE3MmRmYjky
NzRmYjA4YmI4MzdhMmViOGY5MjliMTY1OTY4YTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVy
SW1wbC5oCkBAIC0zNSw2ICszNSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
Q0NMYXllclRyZWVIb3N0SW1wbDsKK2NsYXNzIENDVmlkZW9MYXllckltcGw7CisKIHRlbXBsYXRl
PGNsYXNzIFZlcnRleFNoYWRlciwgY2xhc3MgRnJhZ21lbnRTaGFkZXI+IGNsYXNzIFByb2dyYW1C
aW5kaW5nOwogCiBjbGFzcyBDQ1ZpZGVvTGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBsCkBA
IC01MywxNyArNTYsMjMgQEAgcHVibGljOgogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVy
dGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtLCBGcmFnbWVudFNoYWRlclJHQkFUZXhGbGlwQWxwaGE+
IFJHQkFQcm9ncmFtOwogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9z
VGV4WVVWU3RyZXRjaCwgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbz4gWVVWUHJvZ3JhbTsKICAgICB0
eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSwgRnJhZ21l
bnRTaGFkZXJSR0JBVGV4RmxpcEFscGhhPiBOYXRpdmVUZXh0dXJlUHJvZ3JhbTsKKyAgICB0eXBl
ZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtLCBGcmFnbWVudFNo
YWRlck9FU0ltYWdlRXh0ZXJuYWw+IFN0cmVhbVRleHR1cmVQcm9ncmFtOwogCiAgICAgdmlydHVh
bCB2b2lkIGR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0
OwogCiAgICAgTXV0ZXgmIHByb3ZpZGVyTXV0ZXgoKSB7IHJldHVybiBtX3Byb3ZpZGVyTXV0ZXg7
IH0KICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9w
cm92aWRlcjsgfQogCi0gICAgLy8gVmlkZW9GcmFtZVByb3ZpZGVyOjpDbGllbnQgaW1wbGVtZW50
YXRpb24gKGNhbGxhYmxlIG9uIGFueSB0aHJlYWQpLgotICAgIHZpcnR1YWwgdm9pZCBzdG9wVXNp
bmdQcm92aWRlcigpOworICAgIC8vIFZpZGVvRnJhbWVQcm92aWRlcjo6Q2xpZW50IGltcGxlbWVu
dGF0aW9uLgorICAgIHZpcnR1YWwgdm9pZCBzdG9wVXNpbmdQcm92aWRlcigpOyAvLyBDYWxsYWJs
ZSBvbiBhbnkgdGhyZWFkLgorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJhbWUoKTsgLy8g
Q2FsbGFibGUgb24gaW1wbCB0aHJlYWQuCisgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZU1hdHJp
eChjb25zdCBmbG9hdCopOyAvLyBDYWxsYWJsZSBvbiBpbXBsIHRocmVhZC4KKworICAgIHZvaWQg
c2V0TmVlZHNSZWRyYXcoKTsKIAogICAgIHN0YXRpYyBjb25zdCBmbG9hdCB5dXYyUkdCWzldOwog
ICAgIHN0YXRpYyBjb25zdCBmbG9hdCB5dXZBZGp1c3RbM107CisgICAgc3RhdGljIGNvbnN0IGZs
b2F0IGZsaXBUcmFuc2Zvcm1bMTZdOwogCiAgICAgc3RydWN0IFRleHR1cmUgewogICAgICAgICBP
d25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKQEAgLTg0LDYgKzkzLDkgQEAgcHJpdmF0
ZToKIAogICAgIFRleHR1cmUgbV90ZXh0dXJlc1tNYXhQbGFuZXNdOwogCisgICAgZmxvYXQgbV9z
dHJlYW1UZXh0dXJlTWF0cml4WzE2XTsKKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsKiBtX2xheWVy
VHJlZUhvc3RJbXBsOworCiAgICAgVmlkZW9GcmFtZUNocm9taXVtKiBtX2ZyYW1lOwogICAgIEdD
M0RlbnVtIG1fZm9ybWF0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBhNDFj
NmQwNzM4NjMxMDUyOGQ5MzUxOWI4NDg2OGVjNTNiYTdkOGI2Li4yNTU3MTUzMTFkNTBlNzYzZjE3
ZWEzMTdjMTQ5MzA1YzgzNmM4YjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0y
NTYsNiArMjU2LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlN0b3JhZ2VOYW1lc3Bh
Y2UuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTdG9yYWdlUXVvdGFDYWxsYmFja3Mu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTdG9yYWdlUXVvdGFUeXBlLmgnLAorICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RyZWFtVGV4dHVyZUNsaWVudC5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYlRleHRBZmZpbml0eS5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYk1lZGlhUGxheWVyLmgKaW5kZXggOWFhZjFhM2QwOTVkY2IwOThmODNkY2IyNDgy
NGVhMzY2NjI2NWJhMy4uMjM5MTM0OTYzOGNiYTRmMjlhMTUxM2ZlNTk4NmM4MjVhNzg1N2EyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCkBA
IC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQXVkaW9Tb3VyY2VQ
cm92aWRlcjsKIGNsYXNzIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQ7CiBjbGFzcyBXZWJN
ZWRpYVBsYXllckNsaWVudDsKK2NsYXNzIFdlYlN0cmVhbVRleHR1cmVDbGllbnQ7CiBjbGFzcyBX
ZWJVUkw7CiBzdHJ1Y3QgV2ViUmVjdDsKIHN0cnVjdCBXZWJTaXplOwpAQCAtMTYyLDYgKzE2Myw4
IEBAIHB1YmxpYzoKICAgICAvLyBtZXRob2Qgc2hvdWxkIG5vIGxvbmdlciBiZSByZWZlcmVuY2Vk
IGFmdGVyIHRoZSBjYWxsIGlzIG1hZGUuCiAgICAgdmlydHVhbCB2b2lkIHB1dEN1cnJlbnRGcmFt
ZShXZWJWaWRlb0ZyYW1lKikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3RyZWFtVGV4dHVy
ZUNsaWVudChXZWJTdHJlYW1UZXh0dXJlQ2xpZW50KikgeyB9CisKICAgICB2aXJ0dWFsIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSB7IHJldHVybiAwOyB9CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc291cmNlQXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0cmVhbVRleHR1cmVDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0cmVhbVRleHR1cmVDbGllbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44MTAwMmZiMjZhZDc5M2RhNmQ2YTQ2ODg2MGMwZjBhZGVlNzM0ZTZhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3RyZWFtVGV4dHVyZUNsaWVu
dC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlN0cmVhbVRleHR1cmVDbGllbnRfaAorI2Rl
ZmluZSBXZWJTdHJlYW1UZXh0dXJlQ2xpZW50X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYlN0cmVhbVRleHR1cmVDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRnJhbWUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZU1hdHJpeChj
b25zdCBmbG9hdCopID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfldlYlN0cmVhbVRl
eHR1cmVDbGllbnQoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZGVvRnJhbWUu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZGVvRnJhbWUuaAppbmRleCA4
ZTNiMmNkYmQyYmQxYjk2ZGVjN2Q3OTJiOGI4YzJhOWNmNjY1NGIxLi43ODc5MDYyN2QxOWUxOTdl
OTNmYjE3ZTg0OWJjMjE1NTg0NGE0M2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJWaWRlb0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVmlkZW9GcmFtZS5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGludCBzdHJpZGUodW5zaWduZWQgcGxhbmUpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2
aXJ0dWFsIGNvbnN0IHZvaWQqIGRhdGEodW5zaWduZWQgcGxhbmUpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KICAgICB2aXJ0dWFsIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
KyAgICB2aXJ0dWFsIHVuc2lnbmVkIHRleHR1cmVUYXJnZXQoKSBjb25zdCB7IHJldHVybiAwOyB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5jcHAKaW5kZXggY2UzODlhZGM2MTQ2
YTQ1OTc4OTAyZTM4YjQzZjkyNmExMWYxMTY3Mi4uZmNjZTkzOWY3MzM3Zjc5YjM3MDhlOGE5YWE3
ZmM5YTgwY2UzNjgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVmlk
ZW9GcmFtZUNocm9taXVtSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
VmlkZW9GcmFtZUNocm9taXVtSW1wbC5jcHAKQEAgLTEyOCw0ICsxMjgsMTEgQEAgdW5zaWduZWQg
VmlkZW9GcmFtZUNocm9taXVtSW1wbDo6dGV4dHVyZUlkKCkgY29uc3QKICAgICByZXR1cm4gMDsK
IH0KIAordW5zaWduZWQgVmlkZW9GcmFtZUNocm9taXVtSW1wbDo6dGV4dHVyZVRhcmdldCgpIGNv
bnN0Cit7CisgICAgaWYgKG1fd2ViVmlkZW9GcmFtZSkKKyAgICAgICAgcmV0dXJuIG1fd2ViVmlk
ZW9GcmFtZS0+dGV4dHVyZVRhcmdldCgpOworICAgIHJldHVybiAwOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVv
RnJhbWVDaHJvbWl1bUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJh
bWVDaHJvbWl1bUltcGwuaAppbmRleCA0NDZhYjVmNTQzMGQ1MWU2MjdlZjA3ZjNjZTQ1NzhmNTlh
MThjZDU1Li42NzkyMDg2NmZjNGRhMTE1Yjg3Y2VjYTkxMmUyNmEwOWEzNjQ0OTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5o
CkBAIC01OCw2ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUgcmVxdWlyZWRUZXh0dXJlU2l6ZSh1bnNpZ25lZCBwbGFuZSkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIGhhc1BhZGRpbmdCeXRlcyh1bnNpZ25lZCBwbGFuZSkgY29uc3Q7CiAgICAgdmly
dHVhbCB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHRl
eHR1cmVUYXJnZXQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBXZWJWaWRlb0ZyYW1lKiBtX3dl
YlZpZGVvRnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJN
ZWRpYVBsYXllckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAppbmRleCA5OTZlNzA3MTAwYWE5MWI5NjY1MzVkYzA4
YzkzYzE5NTUwM2YzOTU5Li43NGM0YTcyMDBiOTY0ZjBmMDQyMzgwOGY1OTc1ZmM1YTc1MWRhMWUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNs
aWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJXZWJNZWRpYUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIldlYlZpZXdJ
bXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNT
dHJpbmcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDYW52YXMuaCIKICNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKQEAgLTEwNSw2ICsxMDYsOCBAQCBXZWJNZWRp
YVBsYXllckNsaWVudEltcGw6On5XZWJNZWRpYVBsYXllckNsaWVudEltcGwoKQogICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX2NvbXBvc2l0aW5nTXV0ZXgpOwogICAgIGlmIChtX3ZpZGVvRnJhbWVQ
cm92aWRlckNsaWVudCkKICAgICAgICAgbV92aWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQtPnN0b3BV
c2luZ1Byb3ZpZGVyKCk7CisgICAgaWYgKG1fd2ViTWVkaWFQbGF5ZXIpCisgICAgICAgIG1fd2Vi
TWVkaWFQbGF5ZXItPnNldFN0cmVhbVRleHR1cmVDbGllbnQoMCk7CiAjZW5kaWYKIH0KIApAQCAt
MjM3LDYgKzI0MCw3IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpsb2FkKGNvbnN0
IFN0cmluZyYgdXJsKQogICAgIG1fdXJsID0gdXJsOwogCiAgICAgaWYgKG1fcHJlbG9hZCA9PSBN
ZWRpYVBsYXllcjo6Tm9uZSkgeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9jb21wb3Np
dGluZ011dGV4KTsKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgICAgICBtX2F1ZGlvU291cmNl
UHJvdmlkZXIud3JhcCgwKTsgLy8gQ2xlYXIgd2VhayByZWZlcmVuY2UgdG8gbV93ZWJNZWRpYVBs
YXllcidzIFdlYkF1ZGlvU291cmNlUHJvdmlkZXIuCiAjZW5kaWYKQEAgLTI0OCw2ICsyNTIsNyBA
QCB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6bG9hZChjb25zdCBTdHJpbmcmIHVybCkK
IAogdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmxvYWRJbnRlcm5hbCgpCiB7CisgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fY29tcG9zaXRpbmdNdXRleCk7CiAjaWYgRU5BQkxFKFdFQl9B
VURJTykKICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIud3JhcCgwKTsgLy8gQ2xlYXIgd2VhayBy
ZWZlcmVuY2UgdG8gbV93ZWJNZWRpYVBsYXllcidzIFdlYkF1ZGlvU291cmNlUHJvdmlkZXIuCiAj
ZW5kaWYKQEAgLTU5Nyw2ICs2MDIsOCBAQCB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6
c2V0VmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50KFZpZGVvRnJhbWVQcm92aWRlcjo6QwogewogICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX2NvbXBvc2l0aW5nTXV0ZXgpOwogICAgIG1fdmlkZW9GcmFt
ZVByb3ZpZGVyQ2xpZW50ID0gY2xpZW50OworICAgIGlmIChtX3dlYk1lZGlhUGxheWVyKQorICAg
ICAgICBtX3dlYk1lZGlhUGxheWVyLT5zZXRTdHJlYW1UZXh0dXJlQ2xpZW50KGNsaWVudCA/IHRo
aXMgOiAwKTsKIH0KIAogVmlkZW9GcmFtZUNocm9taXVtKiBXZWJNZWRpYVBsYXllckNsaWVudElt
cGw6OmdldEN1cnJlbnRGcmFtZSgpCkBAIC02NzksNiArNjg2LDIwIEBAIHZvaWQgV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsOjpzdGFydERlbGF5ZWRMb2FkKCkKICAgICBsb2FkSW50ZXJuYWwoKTsK
IH0KIAordm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmRpZFJlY2VpdmVGcmFtZSgpCit7
CisgICAgLy8gTm8gbG9jayBzaW5jZSB0aGlzIGdldHMgY2FsbGVkIG9uIHRoZSBjbGllbnQncyB0
aHJlYWQuCisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKyAgICBtX3ZpZGVv
RnJhbWVQcm92aWRlckNsaWVudC0+ZGlkUmVjZWl2ZUZyYW1lKCk7Cit9CisKK3ZvaWQgV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjpkaWRVcGRhdGVNYXRyaXgoY29uc3QgZmxvYXQqIG1hdHJpeCkK
K3sKKyAgICAvLyBObyBsb2NrIHNpbmNlIHRoaXMgZ2V0cyBjYWxsZWQgb24gdGhlIGNsaWVudCdz
IHRocmVhZC4KKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIG1fdmlk
ZW9GcmFtZVByb3ZpZGVyQ2xpZW50LT5kaWRVcGRhdGVNYXRyaXgobWF0cml4KTsKK30KKwogV2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpXZWJNZWRpYVBsYXllckNsaWVudEltcGwoKQogICAgIDog
bV9tZWRpYVBsYXllcigwKQogICAgICwgbV9kZWxheWluZ0xvYWQoZmFsc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCmlu
ZGV4IGU3NWU3M2FlMTM1NWM2ZWE0NzcxZDA0N2FmODU2ODhkNTU3NGU3OGEuLmQ4NWUwZDFmYzU5
ZmFhYjRmNTgwNmM1MjE3ZGZlZTczZTY1N2FmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCkBAIC00MCw3ICs0MCw5
IEBACiAjaW5jbHVkZSAiVmlkZW9MYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiV2ViQXVkaW9T
b3VyY2VQcm92aWRlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyQ2xpZW50Lmgi
CisjaW5jbHVkZSAiV2ViU3RyZWFtVGV4dHVyZUNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
IGNsYXNzIEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQ7IH0KIApAQCAtNTYsNyArNTgsOCBAQCBj
bGFzcyBXZWJNZWRpYVBsYXllckNsaWVudEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYWNlCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIFdlYkNvcmU6OlZpZGVvRnJhbWVQ
cm92aWRlcgogI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMg
V2ViTWVkaWFQbGF5ZXJDbGllbnQgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwg
cHVibGljIFdlYk1lZGlhUGxheWVyQ2xpZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLCBwdWJsaWMgV2ViU3RyZWFtVGV4dHVyZUNsaWVudCB7CiAKIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBpc0VuYWJsZWQoKTsKQEAgLTE1MCw2ICsxNTMsMTAgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzb3VyY2VFbmRPZlN0cmVhbShXZWJDb3JlOjpNZWRpYVBsYXllcjo6RW5kT2ZT
dHJlYW1TdGF0dXMpOwogI2VuZGlmCiAKKyAgICAvLyBXZWJTdHJlYW1UZXh0dXJlQ2xpZW50IG1l
dGhvZHM6CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVGcmFtZSgpOworICAgIHZpcnR1YWwg
dm9pZCBkaWRVcGRhdGVNYXRyaXgoY29uc3QgZmxvYXQqKTsKKwogcHJpdmF0ZToKICAgICBXZWJN
ZWRpYVBsYXllckNsaWVudEltcGwoKTsKICAgICB2b2lkIHN0YXJ0RGVsYXllZExvYWQoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>