<?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>70838</bug_id>
          
          <creation_ts>2011-10-25 12:31:03 -0700</creation_ts>
          <short_desc>[chromium] Enable threaded compositing via CCThreadProxy::hasThread only</short_desc>
          <delta_ts>2011-11-30 17:24:37 -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>
          <dependson>70881</dependson>
    
    <dependson>73429</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nat Duca">nduca</reporter>
          <assigned_to name="Nat Duca">nduca</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>levin+threading</cc>
    
    <cc>piman</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>490237</commentid>
    <comment_count>0</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-25 12:31:03 -0700</bug_when>
    <thetext>[chromium] Remove enableCompositorThread field from CCSettings and derive it from CCThreadProxy::hasThread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490276</commentid>
    <comment_count>1</comment_count>
      <attachid>112383</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-25 13:10:20 -0700</bug_when>
    <thetext>Created attachment 112383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490282</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-25 13:12:38 -0700</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>490291</commentid>
    <comment_count>3</comment_count>
      <attachid>112383</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-25 13:18:45 -0700</bug_when>
    <thetext>Comment on attachment 112383
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:69
&gt; +        // Accelerated Painting is not supported in threaded mode. Turn it off.
&gt; +        m_settings.acceleratePainting = false;

This isn&apos;t true any more, you can remove this

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:206
&gt; +    ASSERT(CCThreadProxy::hasThread());
&gt; +    if (CCThreadProxy::hasThread())
&gt; +        m_proxy-&gt;setNeedsAnimate();
&gt; +    else
&gt; +        m_client-&gt;scheduleComposite();

it doesn&apos;t make much sense to have an ASSERT() and then have an else clause to deal with the case where the ASSERT fails</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490298</commentid>
    <comment_count>4</comment_count>
      <attachid>112383</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-25 13:27:41 -0700</bug_when>
    <thetext>Comment on attachment 112383
Patch

Attachment 112383 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10210337</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490444</commentid>
    <comment_count>5</comment_count>
      <attachid>112421</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-25 16:12:11 -0700</bug_when>
    <thetext>Created attachment 112421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490449</commentid>
    <comment_count>6</comment_count>
      <attachid>112421</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-25 16:19:04 -0700</bug_when>
    <thetext>Comment on attachment 112421
Patch

R=me. the WebKit/chromium/public/ warning is just for a comment, so I think you&apos;re OK submitting without waiting for Darin on this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490555</commentid>
    <comment_count>7</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-25 22:02:02 -0700</bug_when>
    <thetext>Committed r98429: &lt;http://trac.webkit.org/changeset/98429&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490690</commentid>
    <comment_count>8</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-26 02:25:34 -0700</bug_when>
    <thetext>Broke the build: 
https://bugs.webkit.org/show_bug.cgi?id=70881

The problem: DRT. But also discovered other issues. Will re-attack this as time permits, lower priority than scheduling. :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506166</commentid>
    <comment_count>9</comment_count>
      <attachid>115900</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-18 16:08:20 -0800</bug_when>
    <thetext>Created attachment 115900
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506169</commentid>
    <comment_count>10</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-18 16:13:42 -0800</bug_when>
    <thetext>My CCMainThread-&gt;CCThread integration caused some problems with the way Aura initializes the compositor. I have modified this patch to make init and shutdown of the compositor explicit, which makes things not just cleaner than before [in my estimation] but also makes it clear when the compositor should be available.

This is paired with http://codereview.chromium.org/8558030/ now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506184</commentid>
    <comment_count>11</comment_count>
      <attachid>115900</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-18 16:26:58 -0800</bug_when>
    <thetext>Comment on attachment 115900
Patch

WebKit API changes LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506209</commentid>
    <comment_count>12</comment_count>
      <attachid>115900</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-18 16:47:08 -0800</bug_when>
    <thetext>Comment on attachment 115900
Patch

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

Mostly looks good but the shutdown() semantics seem a little scary. I think that needs to be resolved and documented clearly in WebCompositor.h

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:199
&gt; +    if (CCProxy::implThread())

a lot of code in this patch null-checks CCProxy::implThread() to tell if we&apos;re in threaded mode or not. should we provide a bool getter with a friendlier name?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCProxy.cpp:70
&gt; +    return !mainThreadIsImplThread &amp;&amp; currentThread() == s_mainThread-&gt;threadID();

this looks weird but maybe it&apos;s just because of the variable name. &quot;mainThreadIsImplThread&quot; makes me think that when that flag is set we should only return true if the current thread is the impl thread. This seems to be doing something more permissive.

maybe the bool should be &quot;currentThreadIsImplThread&quot; ?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCProxy.cpp:76
&gt; +    return mainThreadIsImplThread || currentThread() == implThreadID;

same here - from the variable name, i&apos;d think that if the bool is true this should check that the current thread == the main thread

&gt; Source/WebKit/chromium/public/WebCompositor.h:45
&gt; +    // compositing, pass a WebThread. To use single-threaded compositing, pass
&gt; +    // 0.

line wrapping a bit awkward - can you move the &apos;0&apos; up to the previous line at least?

&gt; Source/WebKit/chromium/public/WebCompositor.h:48
&gt; +    WEBKIT_EXPORT static void shutdown();

the requirements and conditions on this function should be documented here - i.e. it looks like you can&apos;t call this with active compositor instances and it&apos;s not valid to call any functions on this interface after shutdown() depending on what the initialize/shutdown requirements are

&gt; Source/WebKit/chromium/src/WebCompositorImpl.cpp:31
&gt; +#include &quot;WebKit.h&quot;

this #include doesn&apos;t appear to be used

&gt; Source/WebKit/chromium/src/WebCompositorImpl.cpp:42
&gt; +bool webCompositorInitialized = false;

can we make this a static member s_initialized? we&apos;re doing that for WebComopsitorImpl::s_nextAvailableIndentifier and WebCompositorImpl::s_compositors so it seems nice to be consistent

&gt; Source/WebKit/chromium/src/WebCompositorImpl.cpp:59
&gt; +    if (webCompositorInitialized)
&gt; +        ASSERT_NOT_REACHED();

ASSERT(!webCompositorInitialized) ?

&gt; Source/WebKit/chromium/src/WebCompositorImpl.cpp:62
&gt; +    CCProxy::setMainThread(CCThreadImpl::create(webKitPlatformSupport()-&gt;currentThread()).leakPtr());

seems weird to .leakPtr() this here, and then make an explicit delete call in shutdown(). Can we hang on to this pointer explicitly in a static with some comments on the lifetime?

&gt; Source/WebKit/chromium/src/WebCompositorImpl.cpp:64
&gt; +        CCProxy::setImplThread(CCThreadImpl::create(implThread).leakPtr());

we&apos;ve been leaking this object since it&apos;s pretty small and only exists once per process, but if we&apos;re going to delete the mainthread CCThreadImpl it seems to make sense to treat this one the same way.

&gt; Source/WebKit/chromium/src/WebCompositorImpl.cpp:69
&gt; +void WebCompositor::shutdown()

could you add an ASSERT() that the s_compositors map is empty (i.e. enforce that you can&apos;t call this with active compositor instances) ?

&gt; Source/WebKit/chromium/src/WebCompositorImpl.cpp:74
&gt; +    webCompositorInitialized = false;

does this mean we now support shutting down and reinitializing in the same address space? WebKit in general does not support this operation, and I&apos;m not sure that our compositor does either

Unless this is really necessary I&apos;d prefer to not support this and leave the initialized flag alone so another call to initialize() will ASSERT(). Alternately if we do need to support this we need some tests to make sure it works and doesn&apos;t regress.

&gt; Source/WebKit/chromium/src/WebLayerTreeView.cpp:33
&gt; +#include &quot;cc/CCThreadProxy.h&quot;

this looks unused

&gt; Source/WebKit/chromium/src/WebLayerTreeViewImpl.cpp:96
&gt; +    GraphicsContext3DPrivate::ThreadUsage usage = CCThreadProxy::implThread() ? GraphicsContext3DPrivate::ForUseOnAnotherThread : GraphicsContext3DPrivate::ForUseOnThisThread;

shouldn&apos;t this be CCProxy::implThread() ?

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:137
&gt; +#include &quot;cc/CCThreadProxy.h&quot;

I think this should be CCProxy.h, since it&apos;s pulling in a header to check CCProxy::implThread()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506319</commentid>
    <comment_count>13</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-18 20:26:59 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; could you add an ASSERT() that the s_compositors map is empty (i.e. enforce that you can&apos;t call this with active compositor instances) ?
That&apos;s not threadsafe. I did something similar though -- checking that there are no CCLTH&apos;s is safe.

&gt; &gt; Source/WebKit/chromium/src/WebCompositorImpl.cpp:74
&gt; does this mean we now support shutting down and reinitializing in the same address space? WebKit in general does not support this operation, and I&apos;m not sure that our compositor does either
So we actually already do this in the CCLayerTreeHostProxy. A lot of my refactoring of CCMainThread/CCThread has enabled this. We should be able to do this, and I think it is good software engineering discipline to encourage us to do so. The compositor feature is emphatically not webkit -- its a small library and if you can&apos;t turn it on and off, something is screwed up with our implementation.

&gt; Unless this is really necessary I&apos;d prefer to not support this and leave the initialized flag alone so another call to initialize() will ASSERT(). Alternately if we do need to support this we need some tests to make sure it works and doesn&apos;t regress.
Disagree. And, the CCLayerTreeHost tests test this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506327</commentid>
    <comment_count>14</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-18 22:08:03 -0800</bug_when>
    <thetext>Also, WebKit.h is needed to obtain webPlatformSupport()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506379</commentid>
    <comment_count>15</comment_count>
      <attachid>115944</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-19 04:01:48 -0800</bug_when>
    <thetext>Created attachment 115944
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506380</commentid>
    <comment_count>16</comment_count>
      <attachid>115944</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-19 04:07:50 -0800</bug_when>
    <thetext>Comment on attachment 115944
Patch

Attachment 115944 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10525043</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506384</commentid>
    <comment_count>17</comment_count>
      <attachid>115946</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-19 04:26:08 -0800</bug_when>
    <thetext>Created attachment 115946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506385</commentid>
    <comment_count>18</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-19 04:27:11 -0800</bug_when>
    <thetext>So, in adding asserts to shutdown, I found an issue with the opacity test and our test harness.

The core issue is that opacity test changes the root layer. The shutdown code was hard coded to assume that the root layer was not changed. When it was, the clean up code we had to break the circular reference between layers &amp; treeHost would fail to break the reference and the CCLTH would stay alive.

Fixing this proved tricky because some tests expect endTest to &quot;destroy&quot; the CCLayerTreeHost in order to test recovery. Other tests dont particularly care when the layerTreeHost dies.

I re-did things so that endTest just ends the test. Tests that want the layerTreeHost to die with messages in flight need to orchestrate that death explicitly.

In doing this I also discovered that the continuous redrawing test was set up to just exit right after starting. I.e. not doing anything at all. :&apos;(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506393</commentid>
    <comment_count>19</comment_count>
      <attachid>115946</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-19 05:58:21 -0800</bug_when>
    <thetext>Comment on attachment 115946
Patch

Attachment 115946 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10515450</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506468</commentid>
    <comment_count>20</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-19 18:07:29 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; could you add an ASSERT() that the s_compositors map is empty (i.e. enforce that you can&apos;t call this with active compositor instances) ?
&gt; That&apos;s not threadsafe. I did something similar though -- checking that there are no CCLTH&apos;s is safe.
&gt; 

Interesting - what are the threading requirements for the shutdown() call then?  I assumed it was the same as the initialize and fromIdentifier() (has to be called from the compositor thread, whatever that is) so checking the s_compositor map should be fine.  If this can be called from other threads then it makes things a bit more interesting but still possible.  Earlier versions of this code had a mutex guarding s_compositor.

From the header docs I would assume shutdown() has to be called from the compositor thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507054</commentid>
    <comment_count>21</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-21 10:27:38 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Interesting - what are the threading requirements for the shutdown() call then?  I assumed it was the same as the initialize and fromIdentifier() (has to be called from the compositor thread, whatever that is) so checking the s_compositor map should be fine.  If this can be called from other threads then it makes things a bit more interesting but still possible.  Earlier versions of this code had a mutex guarding s_compositor.
&gt; 
&gt; From the header docs I would assume shutdown() has to be called from the compositor thread.

Ah, the idea was this is a main thread only concept. This is building on the fact that, on ToT, SetImplThread was a main thread function [not documented to be so, however].

To me, WebCompositor contained, from an API point of view, our global interfaces for the compositor. Perhaps the disconnect here is that your mental model is that WebCompositor is some impl-thread concept?

I&apos;m fine tweaking API / doc / impl once we settle on something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507141</commentid>
    <comment_count>22</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-21 12:49:45 -0800</bug_when>
    <thetext>Yeah, I think this is a mental model mismatch.

In my head WebCompositor is the interface that the embedder can use to communicate directly with the compositor&apos;s impl thread.  The initialization routine is used to set the impl thread, fromIdentifier() is used to grab an interface to the impl thread, and the instance functions are used to poke at the thread.  The normal WebLayer... interfaces are used to communicate with the &apos;main thread&apos; data structures (when using that API).

If a separate compositor thread is not being used then I had envisioned that the WebCompositor interface wouldn&apos;t be used at all.

Perhaps we need to split out the impl thread interface from common initialization/shutdown routines?  Then the API would be in three parts:

1.) General compositor initialization and shutdown. Apply to all compositor instances in the process and both threaded and single threaded uses.
2.) Per-compositor instance APIs - WebLayer, etc. Always use the &apos;main thread&apos;, whatever that means for a given configuration.
2.) Per-compositor instance impl-thread specific APIs, like input handling.

Does that make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507180</commentid>
    <comment_count>23</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-21 13:38:11 -0800</bug_when>
    <thetext>Recapping our discussion, here&apos;s where I think we&apos;ll try to end up:

&gt; The API would be in three parts:
&gt; 1.) General compositor initialization and shutdown. Apply to all compositor instances in the process and both threaded and single threaded uses

WebCompositor

&gt; 2.) Per-compositor instance APIs - WebLayer, etc. Always use the &apos;main thread&apos;, whatever that means for a given configuration.
WebLayer*, WebLayerTreeView
CCLayerTreeHost gets renamed to CCLayerTreeView


&gt; 2.) Per-compositor instance impl-thread specific APIs, like input handling.
The aspects of WebCompositor that do this move out to WebCompositorInputHandler</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507181</commentid>
    <comment_count>24</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-21 13:41:49 -0800</bug_when>
    <thetext>*thumbsup*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507229</commentid>
    <comment_count>25</comment_count>
      <attachid>115946</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-21 14:50:14 -0800</bug_when>
    <thetext>Comment on attachment 115946
Patch

WebKit API LGTM + jamesr: &quot;thumbs up&quot; == R+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507234</commentid>
    <comment_count>26</comment_count>
      <attachid>115946</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-21 14:51:55 -0800</bug_when>
    <thetext>Comment on attachment 115946
Patch

whoops, /me misunderstood the thumbsup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507237</commentid>
    <comment_count>27</comment_count>
      <attachid>115946</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-21 14:52:33 -0800</bug_when>
    <thetext>Comment on attachment 115946
Patch

Sorry, that was thumbs up on the plan. I think that plan implies some changes to this patch - set r? if you disagree, Nat.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507396</commentid>
    <comment_count>28</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-21 20:42:14 -0800</bug_when>
    <thetext>Trying to pull together a new patch that is worthy of thumbs. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507406</commentid>
    <comment_count>29</comment_count>
      <attachid>116178</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-21 21:53:41 -0800</bug_when>
    <thetext>Created attachment 116178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507409</commentid>
    <comment_count>30</comment_count>
      <attachid>116178</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-21 21:59:36 -0800</bug_when>
    <thetext>Comment on attachment 116178
Patch

Attachment 116178 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10551100</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507410</commentid>
    <comment_count>31</comment_count>
      <attachid>116178</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-21 22:17:08 -0800</bug_when>
    <thetext>Comment on attachment 116178
Patch

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

Require additional pylons! I mean comments!

R=me but please go through comments carefully before landing.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:42
&gt; +namespace {
&gt; +static int numLayerTreeInstances;
&gt; +}

anonymous namespace and static is redundant, normally we just do one or the other.

could (should) this be #ifndef NDEBUG or ASSERT_ENABLED (or whatever it&apos;s called)? I think it&apos;d be pretty bad if people started basing logic beyond ASSERT()s on this mechanism

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h:112
&gt; +    // Returns true if any CCLayerTreeHost is alive.
&gt; +    static bool anyLayerTreeHostInstanceExists();
&gt; +

#ifndef NDEBUG? I don&apos;t think this is normal &apos;public&apos; API that we want to support outside of checking things

&gt; Source/WebKit/chromium/public/WebCompositor.h:31
&gt; +#include &quot;WebCompositorInputHandler.h&quot;
&gt;  namespace WebKit {

newline between #include and namespace declaration

&gt; Source/WebKit/chromium/public/WebCompositor.h:33
&gt;  class WebInputEvent;

pretty sure you don&apos;t need this forward decl any more

&gt; Source/WebKit/chromium/public/WebCompositor.h:41
&gt; +// All calls to the WebCompositor must be made from the main thread.

&apos;main thread&apos; is ill defined here. does that mean the WebKit main thread? I think not for browser compositing.  I think at the API level this means that all calls must be made from the same thread that the WebLayer* APIs are used on, right?

&gt; Source/WebKit/chromium/public/WebCompositor.h:48
&gt; +    // Initializes the compositor. Threaded compositing is enabled by passing in
&gt; +    // a non-null WebThread. No compositor classes or methods should be used

second sentence is a little awkward since it uses the passive voice. how about:

Pass a non-null WebThread* to enable threaded compositing, otherwise the compositor will run on the thread the WebLayer APIs are used on.

or something like that

&gt; Source/WebKit/chromium/public/WebCompositorInputHandlerClient.h:33
&gt; +    // Callbacks invoked from the compositor thread.

can you move this do be a class-level comment?

&gt; Source/WebKit/chromium/public/WebCompositorInputHandlerClient.h:36
&gt; +    // Exactly one of the following two callbacks will be invoked after every call to WebCompositor::handleInputEvent():

update comment for new class name

&gt; Source/WebKit/chromium/public/WebCompositorInputHandlerClient.h:38
&gt; +    // Called when the WebCompositor handled the input event and no further processing is required.

update comment for new class name

&gt; Source/WebKit/chromium/public/WebCompositorInputHandlerClient.h:41
&gt; +    // Called when the WebCompositor did not handle the input event. If sendToWidget is true, the input event

update comment for new class name

&gt; Source/WebKit/chromium/src/WebCompositorImpl.cpp:43
&gt; +OwnPtr&lt;CCThread&gt; WebCompositorImpl::s_mainThread;
&gt; +OwnPtr&lt;CCThread&gt; WebCompositorImpl::s_implThread;

i know i asked you to make these OwnPtr&lt;&gt; but now that I think about it doing this will create static destructors, which we generally try to avoid. I think raw ptrs would probably be better - if we shut down the process without calling WebCompositor::shutdown() then we don&apos;t want to attempt to destroy these

&gt; Source/WebKit/chromium/src/WebCompositorImpl.cpp:58
&gt; +/*WebCompositor* WebCompositor::initialize(WebThread* implThread)
&gt;  {
&gt; -    ASSERT(CCProxy::isImplThread());
&gt;  
&gt; -    if (!s_compositors)
&gt; -        s_compositors = new HashSet&lt;WebCompositorImpl*&gt;;
&gt; -    s_compositors-&gt;add(this);
&gt;  }
&gt; -
&gt; -WebCompositorImpl::~WebCompositorImpl()
&gt; +*/

please don&apos;t check in commented-out code. if it&apos;s not needed, just kill it with fire

&gt; Source/WebKit/chromium/src/WebCompositorImpl.cpp:86
&gt; +    s_implThread.clear();
&gt; +    s_mainThread.clear();
&gt; +    CCProxy::setImplThread(0);
&gt; +    CCProxy::setMainThread(0);

nit: would it be safer to reverse the order of these calls, just in case CCProxy::... wanted to do something with the pointer?

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:1013
&gt; +        // clear m_updateCheckLayer so CCLayerTreeHost dies.

Capitalize &apos;clear&apos; please</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507411</commentid>
    <comment_count>32</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-21 22:17:32 -0800</bug_when>
    <thetext>Oh, and it&apos;s probably a good idea to make it compile too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511272</commentid>
    <comment_count>33</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-29 18:09:48 -0800</bug_when>
    <thetext>Committed r101440: &lt;http://trac.webkit.org/changeset/101440&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512129</commentid>
    <comment_count>34</comment_count>
      <attachid>117274</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-30 14:24:09 -0800</bug_when>
    <thetext>Created attachment 117274
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512279</commentid>
    <comment_count>35</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-30 17:24:37 -0800</bug_when>
    <thetext>Committed r101576: &lt;http://trac.webkit.org/changeset/101576&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112383</attachid>
            <date>2011-10-25 13:10:20 -0700</date>
            <delta_ts>2011-10-25 14:47:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70838-20111025131019.patch</filename>
            <type>text/plain</type>
            <size>14430</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgzNjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkZDdlMTZkNWYwOTVhYjZl
MDZlYjA4OWE5ODRmNzA3NjEwNmVjZjA0Li4wYTJiYzEzMmU3NTQ1ZmQyYTdkMzI4OTlkNjhiYTJm
ZDcxMmM2MTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMTAtMjUgIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5hYmxlIHRo
cmVhZGVkIGNvbXBvc2l0aW5nIHZpYSBDQ1RocmVhZFByb3h5OjpoYXNUaHJlYWQgb25seQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA4MzgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OmxheWVyUmVuZGVyZXJDb250ZXh0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OmVuYWJsZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0Ojpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6c2V0TmVlZHNBbmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdDo6c2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNSZWRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0Ojpjb21wb3NpdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6
Q0NTZXR0aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpoYXNUaHJl
YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuaDoKKwogMjAxMS0xMC0yNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyODg1ODApOiBDdXJzb3IgZmFpbHMgdG8gY2hhbmdl
IHRvIHBvaW50ZXIgb24gZW1iZWRkZWQgR29vZ2xlIG1hcHMgcG9wdXBzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDY2NzU5MmI1ZDAxZGEyMTFkZmUxMjVjNjYzNzg2MjVhMTc5ZDdkYTYu
LjE3ZGE5YjBjYzNhNzFmNmFiNGI4MTZjYTg1YzZhODliMjRjZTgyNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTAtMjUgIE5hdCBEdWNhICA8bmR1
Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5hYmxlIHRocmVhZGVkIGNv
bXBvc2l0aW5nIHZpYSBDQ1RocmVhZFByb3h5OjpoYXNUaHJlYWQgb25seQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA4MzgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJMYXllclRyZWVW
aWV3Lmg6CisgICAgICAgICogc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcDoKKyAgICAgICAgKiBz
cmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZp
ZXc6OlNldHRpbmdzOjpvcGVyYXRvciBDQ1NldHRpbmdzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJUcmVlVmlldzo6Y29tcG9zaXRlKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmll
d0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6Y3JlYXRl
TGF5ZXJUcmVlSG9zdENvbnRleHQzRCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0FjdGl2ZSk6CisKIDIwMTEtMTAtMjUgIEdlbmUgR2lyYXJkICA8Z2lyYXJkQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZS1lbmFibGUgdG91Y2ggdGVzdHMgKGZyb20gNjY1NzcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCAwNTc2YWQ5MjM4MzkyNjhiODUwYzA5
NDhmZTQ0YjIyMDg3MzRhNmVlLi4xMjk4NzEwZDNjOGQzMTlmMTIxZDhiZDUxM2ZjNzVkYmFhZjMy
YWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTE5MCw3ICsx
OTAsNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSgpCiAgICAgICAg
IGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX21hcF9zdWIiKTsKIAogICAg
IC8vIFVzZSB0aGUgc3dhcEJ1ZmZlcnMgY2FsbGJhY2sgb25seSB3aXRoIHRoZSB0aHJlYWRlZCBw
cm94eS4KLSAgICBpZiAoc2V0dGluZ3MoKS5lbmFibGVDb21wb3NpdG9yVGhyZWFkKQorICAgIGlm
IChDQ1RocmVhZFByb3h5OjpoYXNUaHJlYWQoKSkKICAgICAgICAgbV9jYXBhYmlsaXRpZXMudXNp
bmdTd2FwQ29tcGxldGVDYWxsYmFjayA9IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlV
TV9zd2FwYnVmZmVyc19jb21wbGV0ZV9jYWxsYmFjayIpOwogICAgIGlmIChtX2NhcGFiaWxpdGll
cy51c2luZ1N3YXBDb21wbGV0ZUNhbGxiYWNrKSB7CiAgICAgICAgIGV4dGVuc2lvbnMtPmVuc3Vy
ZUVuYWJsZWQoIkdMX0NIUk9NSVVNX3N3YXBidWZmZXJzX2NvbXBsZXRlX2NhbGxiYWNrIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAppbmRleCBmMzg3ZmRhNWY4NWQwN2EwNTRkNGY0
ZDk3NTM0MTJiODM0ZGIxNjkzLi44Y2NmNDA3NWZkMzk0MjAxMmE3NTk1ZjZhYmEwY2ExODQwZDhj
MTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJD
aHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNpbmNsdWRlICJjYy9DQ1RocmVh
ZFByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQ5LDcgKzE1MCw3IEBAIEdy
YXBoaWNzQ29udGV4dDNEKiBXZWJHTExheWVyQ2hyb21pdW06OmxheWVyUmVuZGVyZXJDb250ZXh0
KCkKIHsKICAgICAvLyBGSVhNRTogSW4gdGhlIHRocmVhZGVkIGNhc2UsIHBhaW50UmVuZGVyZWRS
ZXN1bHRzVG9DYW52YXMgbXVzdCBiZQogICAgIC8vIHJlZmFjdG9yZWQgdG8gYmUgYXN5bmNocm9u
b3VzLiBDdXJyZW50bHkgdGhpcyBpcyB1bmltcGxlbWVudGVkLgotICAgIGlmICghbGF5ZXJUcmVl
SG9zdCgpIHx8IGxheWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKS5lbmFibGVDb21wb3NpdG9yVGhy
ZWFkKQorICAgIGlmICghbGF5ZXJUcmVlSG9zdCgpIHx8IENDVGhyZWFkUHJveHk6Omhhc1RocmVh
ZCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gbGF5ZXJUcmVlSG9zdCgpLT5jb250
ZXh0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCmluZGV4IGI2OGY0NmNm
OGI4MWM5ZTc2ZTM3NzljNjkwMWJjYjk0NTUxYzkxY2YuLjgyNmMzMDgyZTNkNzhhNTNlZWMyYWJm
ZTdlYTc2YjZjYzgwZjYxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCkBA
IC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgIlRleHRTdHJl
YW0uaCIKICNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgorI2luY2x1ZGUgImNjL0NDVGhyZWFk
UHJveHkuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC05MCw3ICs5
MSw3IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6b25Td2FwQnVmZmVycygpCiBib29sIENDSGVh
ZHNVcERpc3BsYXk6OmVuYWJsZWQoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBIVUQgZG9lcyBu
b3Qgd29yayBpbiBjb21wb3NpdG9yIHRocmVhZCBtb2RlLgotICAgIGlmIChzZXR0aW5ncygpLmVu
YWJsZUNvbXBvc2l0b3JUaHJlYWQpCisgICAgaWYgKENDVGhyZWFkUHJveHk6Omhhc1RocmVhZCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHNldHRpbmdzKCkuc2hvd1BsYXRm
b3JtTGF5ZXJUcmVlIHx8IHNldHRpbmdzKCkuc2hvd0ZQU0NvdW50ZXI7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBlMTg0MzcxNGY1ZTJhOWE1OTVlODUwMGY0YTUxYmIx
ZDMzNWQxZDIyLi5jMmVlMzgwOWFkZDI1ZGY5NDI0NWIyODZmZmZmYTg5ZWQ4NTlmOTViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTY0LDcgKzY0LDkgQEAgQ0NMYXllclRy
ZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIFBh
c3NSZWZQdHI8TGF5ZXIKIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKCkKIHsKICAg
ICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplIiwgdGhpcywgMCk7Ci0g
ICAgaWYgKG1fc2V0dGluZ3MuZW5hYmxlQ29tcG9zaXRvclRocmVhZCkgeworICAgIGlmIChDQ1Ro
cmVhZFByb3h5OjpoYXNUaHJlYWQoKSkgeworICAgICAgICAvLyBBY2NlbGVyYXRlZCBQYWludGlu
ZyBpcyBub3Qgc3VwcG9ydGVkIGluIHRocmVhZGVkIG1vZGUuIFR1cm4gaXQgb2ZmLgorICAgICAg
ICBtX3NldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9IGZhbHNlOwogICAgICAgICAvLyBUaGUg
SFVEIGRvZXMgbm90IHdvcmsgaW4gdGhyZWFkZWQgbW9kZS4gVHVybiBpdCBvZmYuCiAgICAgICAg
IG1fc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgPSBmYWxzZTsKICAgICAgICAgbV9zZXR0aW5ncy5z
aG93UGxhdGZvcm1MYXllclRyZWUgPSBmYWxzZTsKQEAgLTE2Niw3ICsxNjgsNyBAQCB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6ZGlkUmVjcmVhdGVHcmFwaGljc0NvbnRleHQoYm9vbCBzdWNjZXNzKQog
Ly8gVGVtcG9yYXJ5IGhhY2sgdW50aWwgV2ViVmlld0ltcGwgY29udGV4dCBjcmVhdGlvbiBnZXRz
IHNpbXBsaWZpZWQKIEdyYXBoaWNzQ29udGV4dDNEKiBDQ0xheWVyVHJlZUhvc3Q6OmNvbnRleHQo
KQogewotICAgIEFTU0VSVCghbV9zZXR0aW5ncy5lbmFibGVDb21wb3NpdG9yVGhyZWFkKTsKKyAg
ICBBU1NFUlQoIUNDVGhyZWFkUHJveHk6Omhhc1RocmVhZCgpKTsKICAgICByZXR1cm4gbV9wcm94
eS0+Y29udGV4dCgpOwogfQogCkBAIC0xOTcsMTMgKzE5OSwxNiBAQCB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB6b29tKQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNBbmltYXRlKCkKIHsKLSAg
ICBBU1NFUlQobV9zZXR0aW5ncy5lbmFibGVDb21wb3NpdG9yVGhyZWFkKTsKLSAgICBtX3Byb3h5
LT5zZXROZWVkc0FuaW1hdGUoKTsKKyAgICBBU1NFUlQoQ0NUaHJlYWRQcm94eTo6aGFzVGhyZWFk
KCkpOworICAgIGlmIChDQ1RocmVhZFByb3h5OjpoYXNUaHJlYWQoKSkKKyAgICAgICAgbV9wcm94
eS0+c2V0TmVlZHNBbmltYXRlKCk7CisgICAgZWxzZQorICAgICAgICBtX2NsaWVudC0+c2NoZWR1
bGVDb21wb3NpdGUoKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzQ29tbWl0
VGhlblJlZHJhdygpCiB7Ci0gICAgaWYgKG1fc2V0dGluZ3MuZW5hYmxlQ29tcG9zaXRvclRocmVh
ZCkgeworICAgIGlmIChDQ1RocmVhZFByb3h5OjpoYXNUaHJlYWQoKSkgewogICAgICAgICBUUkFD
RV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpzZXROZWVkc1JlZHJhdyIsIHRoaXMsIDApOwogICAg
ICAgICBtX3Byb3h5LT5zZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcoKTsKICAgICB9IGVsc2UKQEAg
LTIxMiw3ICsyMTcsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNDb21taXRUaGVu
UmVkcmF3KCkKIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzUmVkcmF3KCkKIHsKLSAg
ICBpZiAobV9zZXR0aW5ncy5lbmFibGVDb21wb3NpdG9yVGhyZWFkKQorICAgIGlmIChDQ1RocmVh
ZFByb3h5OjpoYXNUaHJlYWQoKSkKICAgICAgICAgbV9wcm94eS0+c2V0TmVlZHNSZWRyYXcoKTsK
ICAgICBlbHNlCiAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZUNvbXBvc2l0ZSgpOwpAQCAtMjQ4
LDcgKzI1Myw3IEBAIFRleHR1cmVNYW5hZ2VyKiBDQ0xheWVyVHJlZUhvc3Q6OmNvbnRlbnRzVGV4
dHVyZU1hbmFnZXIoKSBjb25zdAogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y29tcG9zaXRlKCkK
IHsKLSAgICBBU1NFUlQoIW1fc2V0dGluZ3MuZW5hYmxlQ29tcG9zaXRvclRocmVhZCk7CisgICAg
QVNTRVJUKCFDQ1RocmVhZFByb3h5OjpoYXNUaHJlYWQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8Q0NT
aW5nbGVUaHJlYWRQcm94eSo+KG1fcHJveHkuZ2V0KCkpLT5jb21wb3NpdGVJbW1lZGlhdGVseSgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGJmZmI3OWQ2ZWY4ZDg2ZTEw
YjFmZjI5OWQ4MDQxYzEwMmYzYWJiOWEuLjgzMDQzODUzMWRlMGUxOWYyZjY0N2NmMjM5M2RjMzAw
NDZhYjQ3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC02NywxMyArNjcsMTEg
QEAgc3RydWN0IENDU2V0dGluZ3MgewogICAgIENDU2V0dGluZ3MoKQogICAgICAgICAgICAgOiBh
Y2NlbGVyYXRlUGFpbnRpbmcoZmFsc2UpCiAgICAgICAgICAgICAsIGNvbXBvc2l0ZU9mZnNjcmVl
bihmYWxzZSkKLSAgICAgICAgICAgICwgZW5hYmxlQ29tcG9zaXRvclRocmVhZChmYWxzZSkKICAg
ICAgICAgICAgICwgc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQbGF0
Zm9ybUxheWVyVHJlZShmYWxzZSkgeyB9CiAKICAgICBib29sIGFjY2VsZXJhdGVQYWludGluZzsK
ICAgICBib29sIGNvbXBvc2l0ZU9mZnNjcmVlbjsKLSAgICBib29sIGVuYWJsZUNvbXBvc2l0b3JU
aHJlYWQ7CiAgICAgYm9vbCBzaG93RlBTQ291bnRlcjsKICAgICBib29sIHNob3dQbGF0Zm9ybUxh
eWVyVHJlZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDcxNzZjMjQwNzBm
Y2M3ZjNjMzhjZTAyZjlkOGEwNjBhODM0MWVkODcuLjA1YWFjNjU0ZmJmMTEwZTNjZTU5NmVmMzdk
MTJiYWJhZDVlMzM1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC00NSw2ICs0
NSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENDVGhyZWFkKiBDQ1RocmVhZFByb3h5Ojpz
X2NjVGhyZWFkID0gMDsKIAorYm9vbCBDQ1RocmVhZFByb3h5OjpoYXNUaHJlYWQoKQoreworICAg
IHJldHVybiBzX2NjVGhyZWFkOworfQorCiB2b2lkIENDVGhyZWFkUHJveHk6OnNldFRocmVhZChD
Q1RocmVhZCogY2NUaHJlYWQpCiB7CiAgICAgc19jY1RocmVhZCA9IGNjVGhyZWFkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5oCmluZGV4IDcxMTBmNzMyMjI3MWQwZjZlZDkzYzFmNDlkMDkwMDQ1ZDVl
MGNkNzIuLjg5ODEwZDdhZGVhNDAzYzJiZDJmMmUyOTAyOWVkOTI4ZjNiYWRmZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgQ0NUaHJlYWRQcm94eVNj
aGVkdWxlckNsaWVudDsKIGNsYXNzIENDVGhyZWFkUHJveHkgOiBwdWJsaWMgQ0NQcm94eSwgQ0NM
YXllclRyZWVIb3N0SW1wbENsaWVudCB7CiAgICAgZnJpZW5kIGNsYXNzIENDVGhyZWFkUHJveHlT
Y2hlZHVsZXJDbGllbnQ7CiBwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgaGFzVGhyZWFkKCk7CiAg
ICAgc3RhdGljIHZvaWQgc2V0VGhyZWFkKENDVGhyZWFkKik7CiAKICAgICBzdGF0aWMgUGFzc093
blB0cjxDQ1Byb3h5PiBjcmVhdGUoQ0NMYXllclRyZWVIb3N0Kik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKaW5kZXggYWE4YjIxMzkwZTBl
OTk1M2JlMTg2NGQyMDAyNDNiNGI1YjA0Mzk1My4uNWFiMzkyNzIzZTEzZWNjODE3ZTUyNWJlYTll
YmRhNTg0MzMwMWY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXJUcmVlVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkxheWVyVHJlZVZpZXcuaApAQCAtNDksNiArNDksOCBAQCBwdWJsaWM6CiAKICAgICAgICAgYm9v
bCBhY2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgICAgIGJvb2wgY29tcG9zaXRlT2Zmc2NyZWVuOwor
ICAgICAgICAvLyBGSVhNRTogdGhpcyBmaWVsZCBpcyBpZ25vcmVkLCBidXQgaXMgY3VycmVudGx5
IGluIHVzZSBieSBkb3duc3RyZWFtIGNvZGUuCisgICAgICAgIC8vIFJlbW92ZSB0aGlzIGZpZWxk
IG9uY2UgZG93bnN0cmVhbSBzdG9wcyBzZXR0aW5nIGl0LgogICAgICAgICBib29sIGVuYWJsZUNv
bXBvc2l0b3JUaHJlYWQ7CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgICAgIG9wZXJh
dG9yIFdlYkNvcmU6OkNDU2V0dGluZ3MoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcAppbmRleCAwMjg2ZjE5ODc3YjFkNjA0M2Yz
NWI2MDkzMWJkODMwYTljMzZkZTA0Li5mOGY2ZjYwYTRmYWZmMTY4NzlmODkwMWIwN2MyMmI1N2Ew
OGE3M2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3Np
dG9ySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRv
ckltcGwuY3BwCkBAIC0xMjcsNCArMTI3LDMgQEAgaW50IFdlYkNvbXBvc2l0b3JJbXBsOjppZGVu
dGlmaWVyKCkgY29uc3QKIH0KIAogfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVyVHJlZVZpZXcuY3BwCmluZGV4IGEzZmUzMDdiMWFiZTFiMjVlOTQ2M2I1ZmYyZDQx
MTZiZGViM2EyNDUuLjZiOWVjNmJkYjkwYWE4YTlkZGM5MmRjMjRiOTJkZTA1ODNhNmQyYTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlVmlld0ltcGwuaCIKICNpbmNs
dWRlICJXZWJTaXplLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVk
ZSAiY2MvQ0NUaHJlYWRQcm94eS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAt
MzgsNyArMzksNiBAQCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NTZXR0
aW5ncygpIGNvbnN0CiAgICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKICAgICBzZXR0aW5ncy5hY2Nl
bGVyYXRlUGFpbnRpbmcgPSBhY2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgc2V0dGluZ3MuY29tcG9z
aXRlT2Zmc2NyZWVuID0gY29tcG9zaXRlT2Zmc2NyZWVuOwotICAgIHNldHRpbmdzLmVuYWJsZUNv
bXBvc2l0b3JUaHJlYWQgPSBlbmFibGVDb21wb3NpdG9yVGhyZWFkOwogCiAgICAgLy8gRklYTUU6
IHNob3dGUFNDb3VudGVyIC8gc2hvd1BsYXRmb3JtTGF5ZXJUcmVlIGFyZW4ndCBzdXBwb3J0ZWQg
Y3VycmVudGx5LgogICAgIHNldHRpbmdzLnNob3dGUFNDb3VudGVyID0gZmFsc2U7CkBAIC02OCw3
ICs2OCw3IEBAIGJvb2wgV2ViTGF5ZXJUcmVlVmlldzo6ZXF1YWxzKGNvbnN0IFdlYkxheWVyVHJl
ZVZpZXcmIG4pIGNvbnN0CiAKIHZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6Y29tcG9zaXRlKCkKIHsK
LSAgICBpZiAobV9wcml2YXRlLT5zZXR0aW5ncygpLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQpCisg
ICAgaWYgKENDVGhyZWFkUHJveHk6Omhhc1RocmVhZCgpKQogICAgICAgICBtX3ByaXZhdGUtPnNl
dE5lZWRzQ29tbWl0VGhlblJlZHJhdygpOwogICAgIGVsc2UKICAgICAgICAgbV9wcml2YXRlLT5j
b21wb3NpdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyVHJlZVZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVy
VHJlZVZpZXdJbXBsLmNwcAppbmRleCAxN2YyNTUxNDcyZmZkODE5ZTU2ZDE0MDg5NjA4YmMwZDA3
MDViMDBjLi41ZTliMzk2OTZmZWVkZGQzZjdlNmJhNDhjNzBhMDIxMDhjM2E2NzQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3Bw
CkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oIgog
I2luY2x1ZGUgIldlYlNpemUuaCIKICNpbmNsdWRlICJXZWJUaHJlYWQuaCIKKyNpbmNsdWRlICJj
Yy9DQ1RocmVhZFByb3h5LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC05MSw3
ICs5Miw3IEBAIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IFdlYkxheWVyVHJlZVZpZXdJ
bXBsOjpjcmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNECiAgICAgYXR0cmlidXRlcy5wcmVzZXJ2
ZURyYXdpbmdCdWZmZXIgPSBmYWxzZTsKIAogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJT
dHlsZSBzdHlsZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRv
dzsKLSAgICBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OlRocmVhZFVzYWdlIHVzYWdlID0gc2V0
dGluZ3MoKS5lbmFibGVDb21wb3NpdG9yVGhyZWFkID8gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpGb3JVc2VPbkFub3RoZXJUaHJlYWQgOiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkZvclVz
ZU9uVGhpc1RocmVhZDsKKyAgICBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OlRocmVhZFVzYWdl
IHVzYWdlID0gQ0NUaHJlYWRQcm94eTo6aGFzVGhyZWFkKCkgPyBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OkZvclVzZU9uQW5vdGhlclRocmVhZCA6IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
Rm9yVXNlT25UaGlzVGhyZWFkOwogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KHdlYkNvbnRleHQucmVsZWFzZSgp
LCBhdHRyaWJ1dGVzLCAwLCBzdHlsZSwgdXNhZ2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNTAyMzczYjE3ODNmMjM2M2I0NWFiYWZkZDZl
NGI0MzQwMTdkMzI0Ny4uYTIzY2NlMzM3ZmY1Mzg2YTRhZmIxMTU2MWVjY2Q4MzQxNGY1MjQzZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMjY3OCw3
ICsyNjc4LDYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5n
QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICBXZWJDb3JlOjpDQ1NldHRpbmdzIGNjU2V0dGlu
Z3M7CiAgICAgICAgIGNjU2V0dGluZ3MuYWNjZWxlcmF0ZVBhaW50aW5nID0gcGFnZSgpLT5zZXR0
aW5ncygpLT5hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKCk7CiAgICAgICAgIGNjU2V0dGluZ3Mu
Y29tcG9zaXRlT2Zmc2NyZWVuID0gc2V0dGluZ3MoKS0+Y29tcG9zaXRlVG9UZXh0dXJlRW5hYmxl
ZCgpOwotICAgICAgICBjY1NldHRpbmdzLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQgPSBzZXR0aW5n
cygpLT51c2VUaHJlYWRlZENvbXBvc2l0b3IoKTsKICAgICAgICAgY2NTZXR0aW5ncy5zaG93RlBT
Q291bnRlciA9IHNldHRpbmdzKCktPnNob3dGUFNDb3VudGVyKCk7CiAgICAgICAgIGNjU2V0dGlu
Z3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlID0gc2V0dGluZ3MoKS0+c2hvd1BsYXRmb3JtTGF5ZXJU
cmVlKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112421</attachid>
            <date>2011-10-25 16:12:11 -0700</date>
            <delta_ts>2011-11-18 16:08:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70838-20111025161210.patch</filename>
            <type>text/plain</type>
            <size>16691</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgzNjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkZDdlMTZkNWYwOTVhYjZl
MDZlYjA4OWE5ODRmNzA3NjEwNmVjZjA0Li4wYTJiYzEzMmU3NTQ1ZmQyYTdkMzI4OTlkNjhiYTJm
ZDcxMmM2MTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMTAtMjUgIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5hYmxlIHRo
cmVhZGVkIGNvbXBvc2l0aW5nIHZpYSBDQ1RocmVhZFByb3h5OjpoYXNUaHJlYWQgb25seQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA4MzgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OmxheWVyUmVuZGVyZXJDb250ZXh0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OmVuYWJsZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0Ojpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6c2V0TmVlZHNBbmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdDo6c2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNSZWRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0Ojpjb21wb3NpdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6
Q0NTZXR0aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpoYXNUaHJl
YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuaDoKKwogMjAxMS0xMC0yNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyODg1ODApOiBDdXJzb3IgZmFpbHMgdG8gY2hhbmdl
IHRvIHBvaW50ZXIgb24gZW1iZWRkZWQgR29vZ2xlIG1hcHMgcG9wdXBzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDY2NzU5MmI1ZDAxZGEyMTFkZmUxMjVjNjYzNzg2MjVhMTc5ZDdkYTYu
LjE3ZGE5YjBjYzNhNzFmNmFiNGI4MTZjYTg1YzZhODliMjRjZTgyNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTAtMjUgIE5hdCBEdWNhICA8bmR1
Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5hYmxlIHRocmVhZGVkIGNv
bXBvc2l0aW5nIHZpYSBDQ1RocmVhZFByb3h5OjpoYXNUaHJlYWQgb25seQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA4MzgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJMYXllclRyZWVW
aWV3Lmg6CisgICAgICAgICogc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcDoKKyAgICAgICAgKiBz
cmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZp
ZXc6OlNldHRpbmdzOjpvcGVyYXRvciBDQ1NldHRpbmdzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJUcmVlVmlldzo6Y29tcG9zaXRlKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmll
d0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6Y3JlYXRl
TGF5ZXJUcmVlSG9zdENvbnRleHQzRCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0FjdGl2ZSk6CisKIDIwMTEtMTAtMjUgIEdlbmUgR2lyYXJkICA8Z2lyYXJkQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZS1lbmFibGUgdG91Y2ggdGVzdHMgKGZyb20gNjY1NzcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCAwNTc2YWQ5MjM4MzkyNjhiODUwYzA5
NDhmZTQ0YjIyMDg3MzRhNmVlLi4xMjk4NzEwZDNjOGQzMTlmMTIxZDhiZDUxM2ZjNzVkYmFhZjMy
YWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTE5MCw3ICsx
OTAsNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSgpCiAgICAgICAg
IGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX21hcF9zdWIiKTsKIAogICAg
IC8vIFVzZSB0aGUgc3dhcEJ1ZmZlcnMgY2FsbGJhY2sgb25seSB3aXRoIHRoZSB0aHJlYWRlZCBw
cm94eS4KLSAgICBpZiAoc2V0dGluZ3MoKS5lbmFibGVDb21wb3NpdG9yVGhyZWFkKQorICAgIGlm
IChDQ1RocmVhZFByb3h5OjpoYXNUaHJlYWQoKSkKICAgICAgICAgbV9jYXBhYmlsaXRpZXMudXNp
bmdTd2FwQ29tcGxldGVDYWxsYmFjayA9IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlV
TV9zd2FwYnVmZmVyc19jb21wbGV0ZV9jYWxsYmFjayIpOwogICAgIGlmIChtX2NhcGFiaWxpdGll
cy51c2luZ1N3YXBDb21wbGV0ZUNhbGxiYWNrKSB7CiAgICAgICAgIGV4dGVuc2lvbnMtPmVuc3Vy
ZUVuYWJsZWQoIkdMX0NIUk9NSVVNX3N3YXBidWZmZXJzX2NvbXBsZXRlX2NhbGxiYWNrIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAppbmRleCBmMzg3ZmRhNWY4NWQwN2EwNTRkNGY0
ZDk3NTM0MTJiODM0ZGIxNjkzLi44Y2NmNDA3NWZkMzk0MjAxMmE3NTk1ZjZhYmEwY2ExODQwZDhj
MTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJD
aHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNpbmNsdWRlICJjYy9DQ1RocmVh
ZFByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQ5LDcgKzE1MCw3IEBAIEdy
YXBoaWNzQ29udGV4dDNEKiBXZWJHTExheWVyQ2hyb21pdW06OmxheWVyUmVuZGVyZXJDb250ZXh0
KCkKIHsKICAgICAvLyBGSVhNRTogSW4gdGhlIHRocmVhZGVkIGNhc2UsIHBhaW50UmVuZGVyZWRS
ZXN1bHRzVG9DYW52YXMgbXVzdCBiZQogICAgIC8vIHJlZmFjdG9yZWQgdG8gYmUgYXN5bmNocm9u
b3VzLiBDdXJyZW50bHkgdGhpcyBpcyB1bmltcGxlbWVudGVkLgotICAgIGlmICghbGF5ZXJUcmVl
SG9zdCgpIHx8IGxheWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKS5lbmFibGVDb21wb3NpdG9yVGhy
ZWFkKQorICAgIGlmICghbGF5ZXJUcmVlSG9zdCgpIHx8IENDVGhyZWFkUHJveHk6Omhhc1RocmVh
ZCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gbGF5ZXJUcmVlSG9zdCgpLT5jb250
ZXh0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCmluZGV4IGI2OGY0NmNm
OGI4MWM5ZTc2ZTM3NzljNjkwMWJjYjk0NTUxYzkxY2YuLjgyNmMzMDgyZTNkNzhhNTNlZWMyYWJm
ZTdlYTc2YjZjYzgwZjYxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCkBA
IC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgIlRleHRTdHJl
YW0uaCIKICNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgorI2luY2x1ZGUgImNjL0NDVGhyZWFk
UHJveHkuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC05MCw3ICs5
MSw3IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6b25Td2FwQnVmZmVycygpCiBib29sIENDSGVh
ZHNVcERpc3BsYXk6OmVuYWJsZWQoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBIVUQgZG9lcyBu
b3Qgd29yayBpbiBjb21wb3NpdG9yIHRocmVhZCBtb2RlLgotICAgIGlmIChzZXR0aW5ncygpLmVu
YWJsZUNvbXBvc2l0b3JUaHJlYWQpCisgICAgaWYgKENDVGhyZWFkUHJveHk6Omhhc1RocmVhZCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHNldHRpbmdzKCkuc2hvd1BsYXRm
b3JtTGF5ZXJUcmVlIHx8IHNldHRpbmdzKCkuc2hvd0ZQU0NvdW50ZXI7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBlMTg0MzcxNGY1ZTJhOWE1OTVlODUwMGY0YTUxYmIx
ZDMzNWQxZDIyLi41ZGU3NmRmZjFhN2ZjOTFkODY1MGNlMjJmNmI1MDJkOTRiYTY3ZmVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgQ0NMYXllclRy
ZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIFBh
c3NSZWZQdHI8TGF5ZXIKIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKCkKIHsKICAg
ICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplIiwgdGhpcywgMCk7Ci0g
ICAgaWYgKG1fc2V0dGluZ3MuZW5hYmxlQ29tcG9zaXRvclRocmVhZCkgeworICAgIGlmIChDQ1Ro
cmVhZFByb3h5OjpoYXNUaHJlYWQoKSkgewogICAgICAgICAvLyBUaGUgSFVEIGRvZXMgbm90IHdv
cmsgaW4gdGhyZWFkZWQgbW9kZS4gVHVybiBpdCBvZmYuCiAgICAgICAgIG1fc2V0dGluZ3Muc2hv
d0ZQU0NvdW50ZXIgPSBmYWxzZTsKICAgICAgICAgbV9zZXR0aW5ncy5zaG93UGxhdGZvcm1MYXll
clRyZWUgPSBmYWxzZTsKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
ZGlkUmVjcmVhdGVHcmFwaGljc0NvbnRleHQoYm9vbCBzdWNjZXNzKQogLy8gVGVtcG9yYXJ5IGhh
Y2sgdW50aWwgV2ViVmlld0ltcGwgY29udGV4dCBjcmVhdGlvbiBnZXRzIHNpbXBsaWZpZWQKIEdy
YXBoaWNzQ29udGV4dDNEKiBDQ0xheWVyVHJlZUhvc3Q6OmNvbnRleHQoKQogewotICAgIEFTU0VS
VCghbV9zZXR0aW5ncy5lbmFibGVDb21wb3NpdG9yVGhyZWFkKTsKKyAgICBBU1NFUlQoIUNDVGhy
ZWFkUHJveHk6Omhhc1RocmVhZCgpKTsKICAgICByZXR1cm4gbV9wcm94eS0+Y29udGV4dCgpOwog
fQogCkBAIC0xOTcsMTMgKzE5NywxNSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0Wm9vbUFu
aW1hdG9yVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB6b29tKQogCiB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNBbmltYXRlKCkKIHsKLSAgICBBU1NFUlQobV9zZXR0
aW5ncy5lbmFibGVDb21wb3NpdG9yVGhyZWFkKTsKLSAgICBtX3Byb3h5LT5zZXROZWVkc0FuaW1h
dGUoKTsKKyAgICBpZiAoQ0NUaHJlYWRQcm94eTo6aGFzVGhyZWFkKCkpCisgICAgICAgIG1fcHJv
eHktPnNldE5lZWRzQW5pbWF0ZSgpOworICAgIGVsc2UKKyAgICAgICAgbV9jbGllbnQtPnNjaGVk
dWxlQ29tcG9zaXRlKCk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXROZWVkc0NvbW1p
dFRoZW5SZWRyYXcoKQogewotICAgIGlmIChtX3NldHRpbmdzLmVuYWJsZUNvbXBvc2l0b3JUaHJl
YWQpIHsKKyAgICBpZiAoQ0NUaHJlYWRQcm94eTo6aGFzVGhyZWFkKCkpIHsKICAgICAgICAgVFJB
Q0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNSZWRyYXciLCB0aGlzLCAwKTsKICAg
ICAgICAgbV9wcm94eS0+c2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCk7CiAgICAgfSBlbHNlCkBA
IC0yMTIsNyArMjE0LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzQ29tbWl0VGhl
blJlZHJhdygpCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXROZWVkc1JlZHJhdygpCiB7Ci0g
ICAgaWYgKG1fc2V0dGluZ3MuZW5hYmxlQ29tcG9zaXRvclRocmVhZCkKKyAgICBpZiAoQ0NUaHJl
YWRQcm94eTo6aGFzVGhyZWFkKCkpCiAgICAgICAgIG1fcHJveHktPnNldE5lZWRzUmVkcmF3KCk7
CiAgICAgZWxzZQogICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVDb21wb3NpdGUoKTsKQEAgLTI0
OCw3ICsyNTAsNyBAQCBUZXh0dXJlTWFuYWdlciogQ0NMYXllclRyZWVIb3N0Ojpjb250ZW50c1Rl
eHR1cmVNYW5hZ2VyKCkgY29uc3QKIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbXBvc2l0ZSgp
CiB7Ci0gICAgQVNTRVJUKCFtX3NldHRpbmdzLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQpOworICAg
IEFTU0VSVCghQ0NUaHJlYWRQcm94eTo6aGFzVGhyZWFkKCkpOwogICAgIHN0YXRpY19jYXN0PEND
U2luZ2xlVGhyZWFkUHJveHkqPihtX3Byb3h5LmdldCgpKS0+Y29tcG9zaXRlSW1tZWRpYXRlbHko
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBiZmZiNzlkNmVmOGQ4NmUx
MGIxZmYyOTlkODA0MWMxMDJmM2FiYjlhLi44MzA0Mzg1MzFkZTBlMTlmMmY2NDdjZjIzOTNkYzMw
MDQ2YWI0N2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNjcsMTMgKzY3LDEx
IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBDQ1NldHRpbmdzKCkKICAgICAgICAgICAgIDog
YWNjZWxlcmF0ZVBhaW50aW5nKGZhbHNlKQogICAgICAgICAgICAgLCBjb21wb3NpdGVPZmZzY3Jl
ZW4oZmFsc2UpCi0gICAgICAgICAgICAsIGVuYWJsZUNvbXBvc2l0b3JUaHJlYWQoZmFsc2UpCiAg
ICAgICAgICAgICAsIHNob3dGUFNDb3VudGVyKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93UGxh
dGZvcm1MYXllclRyZWUoZmFsc2UpIHsgfQogCiAgICAgYm9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7
CiAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47Ci0gICAgYm9vbCBlbmFibGVDb21wb3NpdG9y
VGhyZWFkOwogICAgIGJvb2wgc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9vbCBzaG93UGxhdGZvcm1M
YXllclRyZWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCA3MTc2YzI0MDcw
ZmNjN2YzYzM4Y2UwMmY5ZDhhMDYwYTgzNDFlZDg3Li5iYjA3MjczZDU0MDFhY2ZlYzY4MmJiNmU4
ZWE2Njk5YzQxNjdhYTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtNDUsMTEg
KzQ1LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ0NUaHJlYWQqIENDVGhyZWFkUHJveHk6
OnNfY2NUaHJlYWQgPSAwOwogCitib29sIENDVGhyZWFkUHJveHk6Omhhc1RocmVhZCgpCit7Cisg
ICAgcmV0dXJuIHNfY2NUaHJlYWQ7Cit9CisKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0VGhyZWFk
KENDVGhyZWFkKiBjY1RocmVhZCkKIHsKICAgICBzX2NjVGhyZWFkID0gY2NUaHJlYWQ7CiAjaWZu
ZGVmIE5ERUJVRwotICAgIENDUHJveHk6OnNldEltcGxUaHJlYWQoc19jY1RocmVhZC0+dGhyZWFk
SUQoKSk7CisgICAgQ0NQcm94eTo6c2V0SW1wbFRocmVhZChzX2NjVGhyZWFkID8gc19jY1RocmVh
ZC0+dGhyZWFkSUQoKSA6IDApOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApp
bmRleCA3MTEwZjczMjIyNzFkMGY2ZWQ5M2MxZjQ5ZDA5MDA0NWQ1ZTBjZDcyLi44OTgxMGQ3YWRl
YTQwM2MyYmQyZjJlMjkwMjllZDkyOGYzYmFkZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
CkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIENDVGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ7CiBj
bGFzcyBDQ1RocmVhZFByb3h5IDogcHVibGljIENDUHJveHksIENDTGF5ZXJUcmVlSG9zdEltcGxD
bGllbnQgewogICAgIGZyaWVuZCBjbGFzcyBDQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50Owog
cHVibGljOgorICAgIHN0YXRpYyBib29sIGhhc1RocmVhZCgpOwogICAgIHN0YXRpYyB2b2lkIHNl
dFRocmVhZChDQ1RocmVhZCopOwogCiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NQcm94eT4gY3Jl
YXRlKENDTGF5ZXJUcmVlSG9zdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViTGF5ZXJUcmVlVmlldy5oCmluZGV4IGFhOGIyMTM5MGUwZTk5NTNiZTE4NjRkMjAwMjQz
YjRiNWIwNDM5NTMuLjVhYjM5MjcyM2UxM2VjYzgxN2U1MjViZWE5ZWJkYTU4NDMzMDFmNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgK
QEAgLTQ5LDYgKzQ5LDggQEAgcHVibGljOgogCiAgICAgICAgIGJvb2wgYWNjZWxlcmF0ZVBhaW50
aW5nOwogICAgICAgICBib29sIGNvbXBvc2l0ZU9mZnNjcmVlbjsKKyAgICAgICAgLy8gRklYTUU6
IHRoaXMgZmllbGQgaXMgaWdub3JlZCwgYnV0IGlzIGN1cnJlbnRseSBpbiB1c2UgYnkgZG93bnN0
cmVhbSBjb2RlLgorICAgICAgICAvLyBSZW1vdmUgdGhpcyBmaWVsZCBvbmNlIGRvd25zdHJlYW0g
c3RvcHMgc2V0dGluZyBpdC4KICAgICAgICAgYm9vbCBlbmFibGVDb21wb3NpdG9yVGhyZWFkOwog
I2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgICAgICBvcGVyYXRvciBXZWJDb3JlOjpDQ1Nl
dHRpbmdzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJDb21wb3NpdG9ySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21w
b3NpdG9ySW1wbC5jcHAKaW5kZXggMDI4NmYxOTg3N2IxZDYwNDNmMzViNjA5MzFiZDgzMGE5YzM2
ZGUwNC4uMmI1MzNmYTFmYTE4NzY1M2M2YWM0NWEwMzY1NWVlMGI4YTBkYTM3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcApAQCAtNDks
OCArNDksMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViQ29tcG9zaXRvcjo6c2V0
VGhyZWFkKFdlYlRocmVhZCogY29tcG9zaXRvclRocmVhZCkKIHsKLSAgICBBU1NFUlQoY29tcG9z
aXRvclRocmVhZCk7Ci0gICAgQ0NUaHJlYWRQcm94eTo6c2V0VGhyZWFkKENDVGhyZWFkSW1wbDo6
Y3JlYXRlKGNvbXBvc2l0b3JUaHJlYWQpLmxlYWtQdHIoKSk7CisgICAgaWYgKGNvbXBvc2l0b3JU
aHJlYWQpCisgICAgICAgIENDVGhyZWFkUHJveHk6OnNldFRocmVhZChDQ1RocmVhZEltcGw6OmNy
ZWF0ZShjb21wb3NpdG9yVGhyZWFkKS5sZWFrUHRyKCkpOworICAgIGVsc2UKKyAgICAgICAgQ0NU
aHJlYWRQcm94eTo6c2V0VGhyZWFkKDApOwogfQogCiAKQEAgLTEyNyw0ICsxMjksMyBAQCBpbnQg
V2ViQ29tcG9zaXRvckltcGw6OmlkZW50aWZpZXIoKSBjb25zdAogfQogCiB9Ci0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKaW5kZXggYTNmZTMw
N2IxYWJlMWIyNWU5NDYzYjVmZjJkNDExNmJkZWIzYTI0NS4uNmI5ZWM2YmRiOTBhYThhOWRkYzky
ZGMyNGI5MmRlMDU4M2E2ZDJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXJUcmVlVmlldy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJXZWJMYXll
clRyZWVWaWV3SW1wbC5oIgogI2luY2x1ZGUgIldlYlNpemUuaCIKICNpbmNsdWRlICJjYy9DQ0xh
eWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC0zOCw3ICszOSw2IEBAIFdlYkxheWVyVHJlZVZpZXc6OlNl
dHRpbmdzOjpvcGVyYXRvciBDQ1NldHRpbmdzKCkgY29uc3QKICAgICBDQ1NldHRpbmdzIHNldHRp
bmdzOwogICAgIHNldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9IGFjY2VsZXJhdGVQYWludGlu
ZzsKICAgICBzZXR0aW5ncy5jb21wb3NpdGVPZmZzY3JlZW4gPSBjb21wb3NpdGVPZmZzY3JlZW47
Ci0gICAgc2V0dGluZ3MuZW5hYmxlQ29tcG9zaXRvclRocmVhZCA9IGVuYWJsZUNvbXBvc2l0b3JU
aHJlYWQ7CiAKICAgICAvLyBGSVhNRTogc2hvd0ZQU0NvdW50ZXIgLyBzaG93UGxhdGZvcm1MYXll
clRyZWUgYXJlbid0IHN1cHBvcnRlZCBjdXJyZW50bHkuCiAgICAgc2V0dGluZ3Muc2hvd0ZQU0Nv
dW50ZXIgPSBmYWxzZTsKQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBXZWJMYXllclRyZWVWaWV3Ojpl
cXVhbHMoY29uc3QgV2ViTGF5ZXJUcmVlVmlldyYgbikgY29uc3QKIAogdm9pZCBXZWJMYXllclRy
ZWVWaWV3Ojpjb21wb3NpdGUoKQogewotICAgIGlmIChtX3ByaXZhdGUtPnNldHRpbmdzKCkuZW5h
YmxlQ29tcG9zaXRvclRocmVhZCkKKyAgICBpZiAoQ0NUaHJlYWRQcm94eTo6aGFzVGhyZWFkKCkp
CiAgICAgICAgIG1fcHJpdmF0ZS0+c2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCk7CiAgICAgZWxz
ZQogICAgICAgICBtX3ByaXZhdGUtPmNvbXBvc2l0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCmluZGV4IDE3ZjI1NTE0NzJm
ZmQ4MTllNTZkMTQwODk2MDhiYzBkMDcwNWIwMGMuLjVlOWIzOTY5NmZlZWRkZDNmN2U2YmE0OGM3
MGEwMjEwOGMzYTY3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkxheWVyVHJlZVZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJXZWJM
YXllclRyZWVWaWV3Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViU2l6ZS5oIgogI2luY2x1ZGUgIldl
YlRocmVhZC5oIgorI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKQEAgLTkxLDcgKzkyLDcgQEAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QK
ICAgICBhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9IGZhbHNlOwogCiAgICAgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHN0eWxlID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJl
bmRlckRpcmVjdGx5VG9Ib3N0V2luZG93OwotICAgIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
VGhyZWFkVXNhZ2UgdXNhZ2UgPSBzZXR0aW5ncygpLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQgPyBH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkZvclVzZU9uQW5vdGhlclRocmVhZCA6IEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6Rm9yVXNlT25UaGlzVGhyZWFkOworICAgIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6VGhyZWFkVXNhZ2UgdXNhZ2UgPSBDQ1RocmVhZFByb3h5OjpoYXNUaHJlYWQo
KSA/IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Rm9yVXNlT25Bbm90aGVyVGhyZWFkIDogR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpGb3JVc2VPblRoaXNUaHJlYWQ7CiAgICAgcmV0dXJuIEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRl
eHQod2ViQ29udGV4dC5yZWxlYXNlKCksIGF0dHJpYnV0ZXMsIDAsIHN0eWxlLCB1c2FnZSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA1MDIz
NzNiMTc4M2YyMzYzYjQ1YWJhZmRkNmU0YjQzNDAxN2QzMjQ3Li5hMjNjY2UzMzdmZjUzODZhNGFm
YjExNTYxZWNjZDgzNDE0ZjUyNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCkBAIC0yNjc4LDcgKzI2NzgsNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJ
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgIFdlYkNv
cmU6OkNDU2V0dGluZ3MgY2NTZXR0aW5nczsKICAgICAgICAgY2NTZXR0aW5ncy5hY2NlbGVyYXRl
UGFpbnRpbmcgPSBwYWdlKCktPnNldHRpbmdzKCktPmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQo
KTsKICAgICAgICAgY2NTZXR0aW5ncy5jb21wb3NpdGVPZmZzY3JlZW4gPSBzZXR0aW5ncygpLT5j
b21wb3NpdGVUb1RleHR1cmVFbmFibGVkKCk7Ci0gICAgICAgIGNjU2V0dGluZ3MuZW5hYmxlQ29t
cG9zaXRvclRocmVhZCA9IHNldHRpbmdzKCktPnVzZVRocmVhZGVkQ29tcG9zaXRvcigpOwogICAg
ICAgICBjY1NldHRpbmdzLnNob3dGUFNDb3VudGVyID0gc2V0dGluZ3MoKS0+c2hvd0ZQU0NvdW50
ZXIoKTsKICAgICAgICAgY2NTZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUgPSBzZXR0aW5n
cygpLT5zaG93UGxhdGZvcm1MYXllclRyZWUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggZjJlMjQyNWRkNDZk
MzI0NDQ5MjQ1YWUzYjIxZTNkMzA5NGEwYTdjNi4uMDk3YmVlYmIyYzExMWQ1ZDFkODllN2FhMDE1
NDc4ZmIxMGUzMTI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0yMjIsMTMgKzIyMiw2IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgLCBtX2VuZFdoZW5CZWdpblJldHVybnMoZmFsc2UpCiAgICAgICAgICwgbV90aW1l
ZE91dChmYWxzZSkKICAgICB7Ci0gICAgICAgIG1fd2ViVGhyZWFkID0gYWRvcHRQdHIod2ViS2l0
UGxhdGZvcm1TdXBwb3J0KCktPmNyZWF0ZVRocmVhZCgiQ0NMYXllclRyZWVIb3N0VGVzdCIpKTsK
LSAgICAgICAgV2ViQ29tcG9zaXRvcjo6c2V0VGhyZWFkKG1fd2ViVGhyZWFkLmdldCgpKTsKLSNp
Zm5kZWYgTkRFQlVHCi0gICAgICAgIENDUHJveHk6OnNldE1haW5UaHJlYWQoY3VycmVudFRocmVh
ZCgpKTsKLSNlbmRpZgotICAgICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwot
ICAgICAgICBtX21haW5UaHJlYWRQcm94eSA9IENDU2NvcGVkTWFpblRocmVhZFByb3h5OjpjcmVh
dGUoKTsKICAgICB9CiAKICAgICB2b2lkIGRvQmVnaW5UZXN0KCk7CkBAIC0yOTYsNyArMjg5LDE4
IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBydW5UZXN0KGJvb2wgdGhyZWFkZWQp
CiAgICAgewotICAgICAgICBtX3NldHRpbmdzLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQgPSB0aHJl
YWRlZDsKKyAgICAgICAgaWYgKHRocmVhZGVkKSB7CisgICAgICAgICAgICBtX3dlYlRocmVhZCA9
IGFkb3B0UHRyKHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jcmVhdGVUaHJlYWQoIkNDTGF5ZXJU
cmVlSG9zdFRlc3QiKSk7CisgICAgICAgICAgICBXZWJDb21wb3NpdG9yOjpzZXRUaHJlYWQobV93
ZWJUaHJlYWQuZ2V0KCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFdlYkNvbXBvc2l0
b3I6OnNldFRocmVhZCgwKTsKKworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgQ0NQcm94eTo6c2V0
TWFpblRocmVhZChjdXJyZW50VGhyZWFkKCkpOworI2VuZGlmCisgICAgICAgIEFTU0VSVChDQ1By
b3h5Ojppc01haW5UaHJlYWQoKSk7CisgICAgICAgIG1fbWFpblRocmVhZFByb3h5ID0gQ0NTY29w
ZWRNYWluVGhyZWFkUHJveHk6OmNyZWF0ZSgpOworCiAgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpQ
b3N0RGVsYXllZFRhc2soQ0NMYXllclRyZWVIb3N0VGVzdDo6b25CZWdpblRlc3QsIHN0YXRpY19j
YXN0PHZvaWQqPih0aGlzKSwgMCk7CiAgICAgICAgIG1fdGltZW91dFRhc2sgPSBuZXcgVGltZW91
dFRhc2sodGhpcyk7CiAgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpQb3N0RGVsYXllZFRhc2sobV90
aW1lb3V0VGFzaywgNTAwMCk7IC8vIHdlYmtpdF9zdXBwb3J0IHRha2VzIG93bmVyc2hpcCBvZiB0
aGUgdGFzawpAQCAtMzEzLDYgKzMxNyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICBhZnRlclRlc3QoKTsKKyAgICAgICAgV2ViQ29tcG9zaXRv
cjo6c2V0VGhyZWFkKDApOwogICAgIH0KIAogICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKQEAg
LTc1Myw0ICs3NTgsMyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFNjcm9sbE11bHRpcGxl
UmVkcmF3LCBydW5NdWx0aVRocmVhZCkKIH0KIAogfSAvLyBuYW1lc3BhY2UKLQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115900</attachid>
            <date>2011-11-18 16:08:20 -0800</date>
            <delta_ts>2011-11-19 04:01:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70838-20111118160819.patch</filename>
            <type>text/plain</type>
            <size>34266</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg0MjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwZmZmOWNmODNjM2ZiOGI3
Y2RhNzRkNWZjYzA5NTdiYTIzZDBjMDRlLi5mYWQ0NWEzYWUwYjZmNTkxYjlhZjQ5ZDExNGVlZTlh
YmU2N2RkMDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMTEtMTggIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5hYmxlIHRo
cmVhZGVkIGNvbXBvc2l0aW5nIHZpYSBDQ1RocmVhZFByb3h5OjpoYXNUaHJlYWQgb25seQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA4MzgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OmxheWVyUmVuZGVyZXJDb250ZXh0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OmVuYWJsZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0Ojpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6c2V0TmVlZHNBbmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdDo6c2V0TmVlZHNDb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0OjpzZXROZWVkc1JlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OmNvbXBvc2l0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjpDQ1NldHRpbmdz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDUHJveHk6OmlzTWFpblRocmVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1Byb3h5Ojppc0ltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcm94eTo6
c2V0TWFpblRocmVhZElzSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlYnVnU2Nv
cGVkU2V0SW1wbFRocmVhZDo6RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlYnVnU2NvcGVkU2V0SW1wbFRocmVhZDo6fkRlYnVnU2NvcGVkU2V0SW1wbFRocmVh
ZCk6CisKIDIwMTEtMTEtMTggIFZpbmVldCBDaGF1ZGhhcnkgIDx2aW5lZXQuY2hhdWRoYXJ5QG1v
dG9yb2xhLmNvbT4KIAogICAgICAgICBBY2Nlc3Mga2V5IHNob3VsZCB3b3JrIG9uIGFsbCBlbGVt
ZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggODRmM2E5YWNiNDI4ODFiMjkwZTRi
NWU0YjBiZDZhYmY1NTdjY2ViMS4uYTMwNjdiOGFiNjc4M2IxZWU1MTgxYjZlMDc1NDg2MDU4MmU5
MDQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMS0x
MS0xOCAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVt
XSBFbmFibGUgdGhyZWFkZWQgY29tcG9zaXRpbmcgdmlhIENDVGhyZWFkUHJveHk6Omhhc1RocmVh
ZCBvbmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MDgzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cHVibGljL1dlYkNvbXBvc2l0b3IuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViTGF5ZXJUcmVlVmll
dy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6U2V0dGlu
Z3MpOgorICAgICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAgICAgICAqIHNyYy9XZWJD
b21wb3NpdG9ySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OmluaXRp
YWxpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OmZyb21JZGVudGlmaWVyKToKKyAgICAgICAgKiBz
cmMvV2ViS2l0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVdpdGhvdXRWOCk6Cisg
ICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJM
YXllclRyZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NTZXR0aW5ncyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OmNvbXBvc2l0ZSk6CisgICAgICAgICogc3JjL1dlYkxh
eWVyVHJlZVZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0lt
cGw6OmNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QpOgorICAgICAgICAqIHNyYy9XZWJTZXR0
aW5nc0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OldlYlNldHRp
bmdzSW1wbCk6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorICAgICAgICAqIHNy
Yy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjphbmltYXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbXBvc2l0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpzY2hlZHVsZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzY2hlZHVsZUNvbXBvc2l0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpncmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9z
dFRlc3Q6OkNDTGF5ZXJUcmVlSG9zdFRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhv
c3RUZXN0OjpydW5UZXN0KToKKwogMjAxMS0xMS0xNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFu
QGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZGlzcGF0Y2ggbWVzc2FnZXMg
ZnJvbSB0aGUgZnJvbnQtZW5kIHRvIHRoZSBiYWNrZW5kIGFzeW5jaHJvbm91c2x5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggMGJkNmRiYzM4OTZhZTRhMDc3MTlh
NGVhNGEzY2NlNzM1OTI3M2UwNC4uNjk3NjM5ODQ4ZTJhMzAxNmI1ZjMyNGJhZDE1NzUxYmI2NWU0
MzY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0xOTYsNyAr
MTk2LDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemUoKQogICAgICAg
ICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9tYXBfc3ViIik7CiAKICAg
ICAvLyBVc2UgdGhlIHN3YXBCdWZmZXJzIGNhbGxiYWNrIG9ubHkgd2l0aCB0aGUgdGhyZWFkZWQg
cHJveHkuCi0gICAgaWYgKHNldHRpbmdzKCkuZW5hYmxlQ29tcG9zaXRvclRocmVhZCkKKyAgICBp
ZiAoQ0NQcm94eTo6aW1wbFRocmVhZCgpKQogICAgICAgICBtX2NhcGFiaWxpdGllcy51c2luZ1N3
YXBDb21wbGV0ZUNhbGxiYWNrID0gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX3N3
YXBidWZmZXJzX2NvbXBsZXRlX2NhbGxiYWNrIik7CiAgICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVz
aW5nU3dhcENvbXBsZXRlQ2FsbGJhY2spIHsKICAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5h
YmxlZCgiR0xfQ0hST01JVU1fc3dhcGJ1ZmZlcnNfY29tcGxldGVfY2FsbGJhY2siKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDI3NmYzYzlmYzJmZTEwN2YxNjNiMmFiYTA5
OGMwM2ZiYjMzNDRjYjYuLjY5NTBjOTc4MzUzYjZlZTkzN2U5M2UyMTU4NWRlYjU3YzVlN2Y4MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dl
YkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcApAQCAtMzksNiArMzksNyBAQAogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJv
eHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNjIsNyArMTYzLDcgQEAgR3JhcGhp
Y3NDb250ZXh0M0QqIFdlYkdMTGF5ZXJDaHJvbWl1bTo6bGF5ZXJSZW5kZXJlckNvbnRleHQoKQog
ewogICAgIC8vIEZJWE1FOiBJbiB0aGUgdGhyZWFkZWQgY2FzZSwgcGFpbnRSZW5kZXJlZFJlc3Vs
dHNUb0NhbnZhcyBtdXN0IGJlCiAgICAgLy8gcmVmYWN0b3JlZCB0byBiZSBhc3luY2hyb25vdXMu
IEN1cnJlbnRseSB0aGlzIGlzIHVuaW1wbGVtZW50ZWQuCi0gICAgaWYgKCFsYXllclRyZWVIb3N0
KCkgfHwgbGF5ZXJUcmVlSG9zdCgpLT5zZXR0aW5ncygpLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQp
CisgICAgaWYgKCFsYXllclRyZWVIb3N0KCkgfHwgQ0NQcm94eTo6aW1wbFRocmVhZCgpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gbGF5ZXJUcmVlSG9zdCgpLT5jb250ZXh0KCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0hlYWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCmluZGV4IGI2OGY0NmNmOGI4MWM5ZTc2
ZTM3NzljNjkwMWJjYjk0NTUxYzkxY2YuLmZhMzU1NDZmY2ExNjhiZjM5ZGFjMjk4YTk0ZmQyZGU2
NTZhMTdmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNp
bmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgorI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIK
ICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC05MCw3ICs5MSw3IEBAIHZv
aWQgQ0NIZWFkc1VwRGlzcGxheTo6b25Td2FwQnVmZmVycygpCiBib29sIENDSGVhZHNVcERpc3Bs
YXk6OmVuYWJsZWQoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBIVUQgZG9lcyBub3Qgd29yayBp
biBjb21wb3NpdG9yIHRocmVhZCBtb2RlLgotICAgIGlmIChzZXR0aW5ncygpLmVuYWJsZUNvbXBv
c2l0b3JUaHJlYWQpCisgICAgaWYgKENDUHJveHk6OmltcGxUaHJlYWQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIHJldHVybiBzZXR0aW5ncygpLnNob3dQbGF0Zm9ybUxheWVyVHJlZSB8
fCBzZXR0aW5ncygpLnNob3dGUFNDb3VudGVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5jcHAKaW5kZXggYmFlNmZiM2NlOTM0ZmRiNGMzZjdjNTk3OWEwYTBiZmRiNDY5MDViNS4uYjNi
YjBjMjM5ZmNmZmZlODlhYzIxZGZlNzViNzg1NmY5MmI2NDU1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuY3BwCkBAIC02NSw3ICs2NSw3IEBAIENDTGF5ZXJUcmVlSG9zdDo6Q0NMYXll
clRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25zdCBDQ1NldHRpbmdz
CiBib29sIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZSgpCiB7CiAgICAgVFJBQ0VfRVZFTlQo
IkNDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwotICAgIGlmIChtX3NldHRp
bmdzLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQpIHsKKyAgICBpZiAoQ0NQcm94eTo6aW1wbFRocmVh
ZCgpKSB7CiAgICAgICAgIC8vIFRoZSBIVUQgZG9lcyBub3Qgd29yayBpbiB0aHJlYWRlZCBtb2Rl
LiBUdXJuIGl0IG9mZi4KICAgICAgICAgbV9zZXR0aW5ncy5zaG93RlBTQ291bnRlciA9IGZhbHNl
OwogICAgICAgICBtX3NldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSA9IGZhbHNlOwpAQCAt
MTY4LDcgKzE2OCw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpkaWRSZWNyZWF0ZUdyYXBoaWNz
Q29udGV4dChib29sIHN1Y2Nlc3MpCiAvLyBUZW1wb3JhcnkgaGFjayB1bnRpbCBXZWJWaWV3SW1w
bCBjb250ZXh0IGNyZWF0aW9uIGdldHMgc2ltcGxpZmllZAogR3JhcGhpY3NDb250ZXh0M0QqIEND
TGF5ZXJUcmVlSG9zdDo6Y29udGV4dCgpCiB7Ci0gICAgQVNTRVJUKCFtX3NldHRpbmdzLmVuYWJs
ZUNvbXBvc2l0b3JUaHJlYWQpOworICAgIEFTU0VSVCghQ0NQcm94eTo6aW1wbFRocmVhZCgpKTsK
ICAgICByZXR1cm4gbV9wcm94eS0+Y29udGV4dCgpOwogfQogCkBAIC0xOTksMTMgKzE5OSwxNSBA
QCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiB6b29tKQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0TmVl
ZHNBbmltYXRlKCkKIHsKLSAgICBBU1NFUlQobV9zZXR0aW5ncy5lbmFibGVDb21wb3NpdG9yVGhy
ZWFkKTsKLSAgICBtX3Byb3h5LT5zZXROZWVkc0FuaW1hdGUoKTsKKyAgICBpZiAoQ0NQcm94eTo6
aW1wbFRocmVhZCgpKQorICAgICAgICBtX3Byb3h5LT5zZXROZWVkc0FuaW1hdGUoKTsKKyAgICBl
bHNlCisgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZUNvbXBvc2l0ZSgpOwogfQogCiB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNDb21taXQoKQogewotICAgIGlmIChtX3NldHRpbmdzLmVu
YWJsZUNvbXBvc2l0b3JUaHJlYWQpIHsKKyAgICBpZiAoQ0NUaHJlYWRQcm94eTo6aW1wbFRocmVh
ZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzQ29t
bWl0IiwgdGhpcywgMCk7CiAgICAgICAgIG1fcHJveHktPnNldE5lZWRzQ29tbWl0KCk7CiAgICAg
fSBlbHNlCkBAIC0yMTQsNyArMjE2LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRz
Q29tbWl0KCkKIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzUmVkcmF3KCkKIHsKLSAg
ICBpZiAobV9zZXR0aW5ncy5lbmFibGVDb21wb3NpdG9yVGhyZWFkKQorICAgIGlmIChDQ1RocmVh
ZFByb3h5OjppbXBsVGhyZWFkKCkpCiAgICAgICAgIG1fcHJveHktPnNldE5lZWRzUmVkcmF3KCk7
CiAgICAgZWxzZQogICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVDb21wb3NpdGUoKTsKQEAgLTI5
MCw3ICsyOTIsNyBAQCBUZXh0dXJlTWFuYWdlciogQ0NMYXllclRyZWVIb3N0Ojpjb250ZW50c1Rl
eHR1cmVNYW5hZ2VyKCkgY29uc3QKIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbXBvc2l0ZSgp
CiB7Ci0gICAgQVNTRVJUKCFtX3NldHRpbmdzLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQpOworICAg
IEFTU0VSVCghQ0NUaHJlYWRQcm94eTo6aW1wbFRocmVhZCgpKTsKICAgICBzdGF0aWNfY2FzdDxD
Q1NpbmdsZVRocmVhZFByb3h5Kj4obV9wcm94eS5nZXQoKSktPmNvbXBvc2l0ZUltbWVkaWF0ZWx5
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggYTc5M2NjYTI2NTdmNjE1
MzMyMmFmMTI4MTI1YWEwNTNhMDEzMTEyMi4uZjY5N2EyNjhlN2U2ZDQwM2FkNzA5YzJkZWMyYjA5
ZThmMTA2Y2EwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTcxLDE0ICs3MSwx
MiBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgQ0NTZXR0aW5ncygpCiAgICAgICAgICAgICA6
IGFjY2VsZXJhdGVQYWludGluZyhmYWxzZSkKICAgICAgICAgICAgICwgY29tcG9zaXRlT2Zmc2Ny
ZWVuKGZhbHNlKQotICAgICAgICAgICAgLCBlbmFibGVDb21wb3NpdG9yVGhyZWFkKGZhbHNlKQog
ICAgICAgICAgICAgLCBzaG93RlBTQ291bnRlcihmYWxzZSkKICAgICAgICAgICAgICwgc2hvd1Bs
YXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQogICAgICAgICAgICAgLCByZWZyZXNoUmF0ZSgwKSB7IH0K
IAogICAgIGJvb2wgYWNjZWxlcmF0ZVBhaW50aW5nOwogICAgIGJvb2wgY29tcG9zaXRlT2Zmc2Ny
ZWVuOwotICAgIGJvb2wgZW5hYmxlQ29tcG9zaXRvclRocmVhZDsKICAgICBib29sIHNob3dGUFND
b3VudGVyOwogICAgIGJvb2wgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOwogICAgIGRvdWJsZSByZWZy
ZXNoUmF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcm94eS5jcHAKaW5kZXggNjA2MmVjMDljMTc1ZDFhYzQ3MWZiNmU0YmQ2
MTJlM2ExODcyZmUxZC4uMDA2MDViYzc4ZWI4MmVkMzExMGQ3ODNhYWUxMzNhOTVmYThkMmQ1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQcm94eS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBuYW1lc3BhY2UgewogI2lmbmRlZiBOREVCVUcKLWJvb2wgZmFrZUltcGxUaHJlYWQgPSBmYWxz
ZTsKK2Jvb2wgbWFpblRocmVhZElzSW1wbFRocmVhZCA9IGZhbHNlOwogI2VuZGlmCiBDQ1RocmVh
ZCogc19tYWluVGhyZWFkID0gMDsKIENDVGhyZWFkKiBzX2ltcGxUaHJlYWQgPSAwOwpAQCAtNjcs
MTggKzY3LDE4IEBAIENDVGhyZWFkKiBDQ1Byb3h5OjppbXBsVGhyZWFkKCkKIGJvb2wgQ0NQcm94
eTo6aXNNYWluVGhyZWFkKCkKIHsKICAgICBBU1NFUlQoc19tYWluVGhyZWFkKTsKLSAgICByZXR1
cm4gIWZha2VJbXBsVGhyZWFkICYmIGN1cnJlbnRUaHJlYWQoKSA9PSBzX21haW5UaHJlYWQtPnRo
cmVhZElEKCk7CisgICAgcmV0dXJuICFtYWluVGhyZWFkSXNJbXBsVGhyZWFkICYmIGN1cnJlbnRU
aHJlYWQoKSA9PSBzX21haW5UaHJlYWQtPnRocmVhZElEKCk7CiB9CiAKIGJvb2wgQ0NQcm94eTo6
aXNJbXBsVGhyZWFkKCkKIHsKICAgICBXVEY6OlRocmVhZElkZW50aWZpZXIgaW1wbFRocmVhZElE
ID0gc19pbXBsVGhyZWFkID8gc19pbXBsVGhyZWFkLT50aHJlYWRJRCgpIDogMDsKLSAgICByZXR1
cm4gZmFrZUltcGxUaHJlYWQgfHwgY3VycmVudFRocmVhZCgpID09IGltcGxUaHJlYWRJRDsKKyAg
ICByZXR1cm4gbWFpblRocmVhZElzSW1wbFRocmVhZCB8fCBjdXJyZW50VGhyZWFkKCkgPT0gaW1w
bFRocmVhZElEOwogfQogCi12b2lkIENDUHJveHk6OnNldEltcGxUaHJlYWQoYm9vbCBpc0ltcGxU
aHJlYWQpCit2b2lkIENDUHJveHk6OnNldE1haW5UaHJlYWRJc0ltcGxUaHJlYWQoYm9vbCBpc0lt
cGxUaHJlYWQpCiB7Ci0gICAgZmFrZUltcGxUaHJlYWQgPSBpc0ltcGxUaHJlYWQ7CisgICAgbWFp
blRocmVhZElzSW1wbFRocmVhZCA9IGlzSW1wbFRocmVhZDsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5
LmgKaW5kZXggYTYyMzBlYWNkNTY4OWQ1YmVhNDJmMGQwY2RiOWM2Mzg1MzM3ODhhYS4uNDBlOGRi
ZThhYTJmZDA0N2ExOTQzMGFlODRjNDUzZmMyYTk3YWIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtOTEs
NyArOTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvc2VDb21wb3NpdG9yQ29udGV4
dChpbnQgbnVtVGltZXMpID0gMDsKIAogI2lmbmRlZiBOREVCVUcKLSAgICBzdGF0aWMgdm9pZCBz
ZXRJbXBsVGhyZWFkKGJvb2wpOworICAgIHN0YXRpYyB2b2lkIHNldE1haW5UaHJlYWRJc0ltcGxU
aHJlYWQoYm9vbCk7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5oCmluZGV4IGVkYWI2MWYyYzAzMjc5NmVjODQyMzViNDFiNGVmNzczYTgyMjlm
MTMuLjkwNTdhNjJkMTY0MjU2ZTRmNDA4NjNiN2UzOGZkOTdlMzhhYzBlN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTkxLDEzICs5MSwxMyBAQCBwdWJsaWM6CiAg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkKCkKICAgICB7CiAjaWYgIUFTU0VSVF9ESVNBQkxF
RAotICAgICAgICBDQ1Byb3h5OjpzZXRJbXBsVGhyZWFkKHRydWUpOworICAgICAgICBDQ1Byb3h5
OjpzZXRNYWluVGhyZWFkSXNJbXBsVGhyZWFkKHRydWUpOwogI2VuZGlmCiAgICAgfQogICAgIH5E
ZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQoKQogICAgIHsKICNpZiAhQVNTRVJUX0RJU0FCTEVECi0g
ICAgICAgIENDUHJveHk6OnNldEltcGxUaHJlYWQoZmFsc2UpOworICAgICAgICBDQ1Byb3h5Ojpz
ZXRNYWluVGhyZWFkSXNJbXBsVGhyZWFkKGZhbHNlKTsKICNlbmRpZgogICAgIH0KIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yLmgKaW5kZXggNzliOGJj
NTgxMTJiNzUwODFmNjQ1ZjY4NjNkYzJkMjdjZjNhMWQ3Ny4uZWIwN2Q3ODY2ZmI0MGFmZDZiZTVm
OGNhYTRlZjQ5YTUyOGIwYTUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkNvbXBvc2l0b3IuaApAQCAtMzQsMTIgKzM0LDE5IEBAIGNsYXNzIFdlYkNvbXBvc2l0b3JD
bGllbnQ7CiBjbGFzcyBXZWJJbnB1dEV2ZW50OwogY2xhc3MgV2ViVGhyZWFkOwogCi0vLyBUaGlz
IHJlcHJlc2VudHMgdGhlIGNvbXBvc2l0b3IgYXNzb2NpYXRlZCB3aXRoIGEgV2ViV2lkZ2V0LiBB
bGwgY2FsbHMgdG8gdGhlIFdlYkNvbXBvc2l0b3IgbXVzdAotLy8gYmUgbWFkZSBmcm9tIHRoZSBj
b21wb3NpdG9yIHRocmVhZC4KKyNkZWZpbmUgV0VCQ09NUE9TSVRPUl9IQVNfSU5JVElBTElaRQor
CisvLyBUaGlzIHJlcHJlc2VudHMgdGhlIGNvbXBvc2l0b3IgYXNzb2NpYXRlZCB3aXRoIGEgV2Vi
V2lkZ2V0LiBBbGwgY2FsbHMgdG8gdGhlCisvLyBXZWJDb21wb3NpdG9yIG11c3QgYmUgbWFkZSBm
cm9tIHRoZSBjb21wb3NpdG9yIHRocmVhZC4KIGNsYXNzIFdlYkNvbXBvc2l0b3IgewogcHVibGlj
OgotICAgIC8vIFRoaXMgbXVzdCBiZSBjYWxsZWQgb25jZSB3aXRoIGEgbm9uLW51bGwgV2ViVGhy
ZWFkIGJlZm9yZSBhbnkgY29tcG9zaXRvcnMgYXR0ZW1wdCB0byBpbml0aWFsaXplLgotICAgIFdF
QktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0VGhyZWFkKFdlYlRocmVhZCopOworICAgIC8vIFRo
aXMgbXVzdCBiZSBjYWxsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgY29tcG9zaXRvci4gVG8gZW5hYmxl
IHRocmVhZGVkCisgICAgLy8gY29tcG9zaXRpbmcsIHBhc3MgYSBXZWJUaHJlYWQuIFRvIHVzZSBz
aW5nbGUtdGhyZWFkZWQgY29tcG9zaXRpbmcsIHBhc3MKKyAgICAvLyAwLgorICAgIFdFQktJVF9F
WFBPUlQgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZShXZWJUaHJlYWQqKTsKKworICAgIFdFQktJVF9F
WFBPUlQgc3RhdGljIHZvaWQgc2h1dGRvd24oKTsKKwogICAgIFdFQktJVF9FWFBPUlQgc3RhdGlj
IFdlYkNvbXBvc2l0b3IqIGZyb21JZGVudGlmaWVyKGludCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2V0Q2xpZW50KFdlYkNvbXBvc2l0b3JDbGllbnQqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKaW5kZXggY2EwOGNlZDA3NGI5NDkz
MjRiYjljYzA3NDgxM2QyYzIxYmZlNzFkZS4uYzUyYjM3ODZlZTE5ZDNmODE0NWYxMjZlMGViODY2
ZmY5ZDlkNzdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
TGF5ZXJUcmVlVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkxh
eWVyVHJlZVZpZXcuaApAQCAtNDUsMTIgKzQ1LDEwIEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgU2V0
dGluZ3MgewogICAgICAgICBTZXR0aW5ncygpCiAgICAgICAgICAgICA6IGFjY2VsZXJhdGVQYWlu
dGluZyhmYWxzZSkKLSAgICAgICAgICAgICwgY29tcG9zaXRlT2Zmc2NyZWVuKGZhbHNlKQotICAg
ICAgICAgICAgLCBlbmFibGVDb21wb3NpdG9yVGhyZWFkKGZhbHNlKSB7IH0KKyAgICAgICAgICAg
ICwgY29tcG9zaXRlT2Zmc2NyZWVuKGZhbHNlKSB7IH0KIAogICAgICAgICBib29sIGFjY2VsZXJh
dGVQYWludGluZzsKICAgICAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47Ci0gICAgICAgIGJv
b2wgZW5hYmxlQ29tcG9zaXRvclRocmVhZDsKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAg
ICAgICAgb3BlcmF0b3IgV2ViQ29yZTo6Q0NTZXR0aW5ncygpIGNvbnN0OwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCAxMjM2YjMyN2Qw
NjQ5MDM2ZDNmZjljODM1MTIwY2Q3MDJhMWY0YzI3Li4xZTdkNjk3YmVkNjk2ZTM1ZTQ5MzA3MTkx
OGY4YmE0NTM2OTI1MTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNl
dHRpbmdzLmgKQEAgLTExNyw4ICsxMTcsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNl
dExlZ2FjeUFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0TWluaW11bUFjY2VsZXJhdGVkMmRDYW52YXNTaXplKGludCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKGJvb2wpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0VXNlVGhyZWFkZWRDb21wb3NpdG9yKGJvb2wpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgdXNlVGhyZWFkZWRDb21wb3NpdG9yKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
dEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
dEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcAppbmRleCA4MWRlZTJm
MWIyNWE4NzViNmRlMThhMjU5ZTcyYTU4MGFjN2QwYTkzLi5kMmRiMjViNjBkZDI3ZDFlYTExYTQ4
OWU0NzMwZTQyMjNiZGUxZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJDb21wb3NpdG9ySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQ29tcG9zaXRvckltcGwuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVkZSAiV2ViQ29t
cG9zaXRvckltcGwuaCIKIAogI2luY2x1ZGUgIkNDVGhyZWFkSW1wbC5oIgorI2luY2x1ZGUgIldl
YktpdC5oIgorI2luY2x1ZGUgIldlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgogI2luY2x1ZGUgIldl
YkNvbXBvc2l0b3JDbGllbnQuaCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAjaW5jbHVk
ZSAiY2MvQ0NTY3JvbGxDb250cm9sbGVyLmgiCkBAIC0zNiw2ICszOCwxMCBAQAogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAorbmFtZXNwYWNlIHsKK2Jvb2wgd2ViQ29tcG9zaXRvckluaXRp
YWxpemVkID0gZmFsc2U7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc093blB0cjxD
Q0lucHV0SGFuZGxlcj4gQ0NJbnB1dEhhbmRsZXI6OmNyZWF0ZShDQ1Njcm9sbENvbnRyb2xsZXIq
IHNjcm9sbENvbnRyb2xsZXIpCkBAIC00NywxMiArNTMsMjYgQEAgUGFzc093blB0cjxDQ0lucHV0
SGFuZGxlcj4gQ0NJbnB1dEhhbmRsZXI6OmNyZWF0ZShDQ1Njcm9sbENvbnRyb2xsZXIqIHNjcm9s
bENvbnQKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViQ29tcG9zaXRvcjo6c2V0VGhy
ZWFkKFdlYlRocmVhZCogY29tcG9zaXRvclRocmVhZCkKK3ZvaWQgV2ViQ29tcG9zaXRvcjo6aW5p
dGlhbGl6ZShXZWJUaHJlYWQqIGltcGxUaHJlYWQpCiB7Ci0gICAgQVNTRVJUKGNvbXBvc2l0b3JU
aHJlYWQpOwotICAgIENDVGhyZWFkUHJveHk6OnNldEltcGxUaHJlYWQoQ0NUaHJlYWRJbXBsOjpj
cmVhdGUoY29tcG9zaXRvclRocmVhZCkubGVha1B0cigpKTsKKyAgICBpZiAod2ViQ29tcG9zaXRv
ckluaXRpYWxpemVkKQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB3ZWJDb21w
b3NpdG9ySW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgQ0NQcm94eTo6c2V0TWFpblRocmVhZChD
Q1RocmVhZEltcGw6OmNyZWF0ZSh3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y3VycmVudFRocmVh
ZCgpKS5sZWFrUHRyKCkpOworICAgIGlmIChpbXBsVGhyZWFkKQorICAgICAgICBDQ1Byb3h5Ojpz
ZXRJbXBsVGhyZWFkKENDVGhyZWFkSW1wbDo6Y3JlYXRlKGltcGxUaHJlYWQpLmxlYWtQdHIoKSk7
CisgICAgZWxzZQorICAgICAgICBDQ1Byb3h5OjpzZXRJbXBsVGhyZWFkKDApOwogfQogCit2b2lk
IFdlYkNvbXBvc2l0b3I6OnNodXRkb3duKCkKK3sKKyAgICBDQ1Byb3h5OjpzZXRJbXBsVGhyZWFk
KDApOworICAgIGRlbGV0ZSBDQ1Byb3h5OjptYWluVGhyZWFkKCk7CisgICAgQ0NQcm94eTo6c2V0
TWFpblRocmVhZCgwKTsKKyAgICB3ZWJDb21wb3NpdG9ySW5pdGlhbGl6ZWQgPSBmYWxzZTsKK30K
IAogLy8gVGhlc2Ugc3RhdGljcyBtYXkgb25seSBiZSBhY2Nlc3NlZCBmcm9tIHRoZSBjb21wb3Np
dG9yIHRocmVhZC4KIGludCBXZWJDb21wb3NpdG9ySW1wbDo6c19uZXh0QXZhaWxhYmxlSWRlbnRp
ZmllciA9IDE7CkBAIC02MCw2ICs4MCw3IEBAIEhhc2hTZXQ8V2ViQ29tcG9zaXRvckltcGwqPiog
V2ViQ29tcG9zaXRvckltcGw6OnNfY29tcG9zaXRvcnMgPSAwOwogCiBXZWJDb21wb3NpdG9yKiBX
ZWJDb21wb3NpdG9yOjpmcm9tSWRlbnRpZmllcihpbnQgaWRlbnRpZmllcikKIHsKKyAgICBBU1NF
UlQod2ViQ29tcG9zaXRvckluaXRpYWxpemVkKTsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBs
VGhyZWFkKCkpOwogICAgIHJldHVybiBXZWJDb21wb3NpdG9ySW1wbDo6ZnJvbUlkZW50aWZpZXIo
aWRlbnRpZmllcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJLaXQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcAppbmRleCA3
YmNkOWNmMjM5YTUxY2Q1MmI0Mjk3ZjVlZGMyMDA4NzQ5YTA2ZTFmLi43NGIwNWEyM2Q3OTMwMDU3
NzFmNzE4OWNhMGM0NGQ1MTlmYjdjYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktp
dC5jcHAKQEAgLTk4LDggKzk4LDYgQEAgdm9pZCBpbml0aWFsaXplV2l0aG91dFY4KFdlYktpdFBs
YXRmb3JtU3VwcG9ydCogd2ViS2l0UGxhdGZvcm1TdXBwb3J0KQogICAgIC8vIHRoZSBpbml0aWFs
aXphdGlvbiB0aHJlYWQtc2FmZSwgYnV0IGdpdmVuIHRoYXQgc28gbWFueSBjb2RlIHBhdGhzIHVz
ZQogICAgIC8vIHRoaXMsIGluaXRpYWxpemluZyB0aGlzIGxhemlseSBwcm9iYWJseSBkb2Vzbid0
IGJ1eSB1cyBtdWNoLgogICAgIFdlYkNvcmU6OlVURjhFbmNvZGluZygpOwotCi0gICAgV2ViQ29y
ZTo6Q0NQcm94eTo6c2V0TWFpblRocmVhZChDQ1RocmVhZEltcGw6OmNyZWF0ZSh3ZWJLaXRQbGF0
Zm9ybVN1cHBvcnQtPmN1cnJlbnRUaHJlYWQoKSkubGVha1B0cigpKTsKIH0KIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmluZGV4IGM3Njhl
MWE2NjI5NzdhZDYxYjQxMjVhOTU4NDMyNmQwYTU5ZjU3NWIuLjMyMjVmZDdjMThkYzU0MmYxOGRk
NTRiZGFlY2IxZmQyNTIxZDZiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiV2ViUmVj
dC5oIgogI2luY2x1ZGUgIldlYlNpemUuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3Qu
aCIKKyNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCkBAIC0zOSw3ICs0MCw2IEBAIFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpvcGVy
YXRvciBDQ1NldHRpbmdzKCkgY29uc3QKICAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwogICAgIHNl
dHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9IGFjY2VsZXJhdGVQYWludGluZzsKICAgICBzZXR0
aW5ncy5jb21wb3NpdGVPZmZzY3JlZW4gPSBjb21wb3NpdGVPZmZzY3JlZW47Ci0gICAgc2V0dGlu
Z3MuZW5hYmxlQ29tcG9zaXRvclRocmVhZCA9IGVuYWJsZUNvbXBvc2l0b3JUaHJlYWQ7CiAKICAg
ICAvLyBGSVhNRTogc2hvd0ZQU0NvdW50ZXIgLyBzaG93UGxhdGZvcm1MYXllclRyZWUgYXJlbid0
IHN1cHBvcnRlZCBjdXJyZW50bHkuCiAgICAgc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgPSBmYWxz
ZTsKQEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBXZWJMYXllclRyZWVWaWV3OjplcXVhbHMoY29uc3Qg
V2ViTGF5ZXJUcmVlVmlldyYgbikgY29uc3QKIAogdm9pZCBXZWJMYXllclRyZWVWaWV3Ojpjb21w
b3NpdGUoKQogewotICAgIGlmIChtX3ByaXZhdGUtPnNldHRpbmdzKCkuZW5hYmxlQ29tcG9zaXRv
clRocmVhZCkKKyAgICBpZiAoQ0NQcm94eTo6aW1wbFRocmVhZCgpKQogICAgICAgICBtX3ByaXZh
dGUtPnNldE5lZWRzQ29tbWl0KCk7CiAgICAgZWxzZQogICAgICAgICBtX3ByaXZhdGUtPmNvbXBv
c2l0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVl
Vmlld0ltcGwuY3BwCmluZGV4IDhjODY4NGI2ZmNhOGM5ZjMwZDFiNzcxNjBmMDI1OTM4MjRiYmI5
NTAuLmU2YWFmZjM2NzNkNmNjMjE3Yzc0NThlMTU3ZGQ4NWFkZmNiYjFkY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJXZWJMYXllclRyZWVWaWV3Q2xpZW50LmgiCiAjaW5j
bHVkZSAiV2ViU2l6ZS5oIgogI2luY2x1ZGUgIldlYlRocmVhZC5oIgorI2luY2x1ZGUgImNjL0ND
VGhyZWFkUHJveHkuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTkyLDcgKzkz
LDcgQEAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gV2ViTGF5ZXJUcmVlVmlld0ltcGw6
OmNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QKICAgICBhdHRyaWJ1dGVzLnByZXNlcnZlRHJh
d2luZ0J1ZmZlciA9IGZhbHNlOwogCiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxl
IHN0eWxlID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93Owot
ICAgIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6VGhyZWFkVXNhZ2UgdXNhZ2UgPSBzZXR0aW5n
cygpLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQgPyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkZv
clVzZU9uQW5vdGhlclRocmVhZCA6IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Rm9yVXNlT25U
aGlzVGhyZWFkOworICAgIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6VGhyZWFkVXNhZ2UgdXNh
Z2UgPSBDQ1RocmVhZFByb3h5OjppbXBsVGhyZWFkKCkgPyBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OkZvclVzZU9uQW5vdGhlclRocmVhZCA6IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Rm9y
VXNlT25UaGlzVGhyZWFkOwogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KHdlYkNvbnRleHQucmVsZWFzZSgpLCBh
dHRyaWJ1dGVzLCAwLCBzdHlsZSwgdXNhZ2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCAyNDJhZWQyMjFiYTc1ZDBiMzQwOWQ2
NzI3ZGY0NDM5ODc0ZTYxYWEwLi4yNzlhMjk4NDM3Y2ZkOTMyYWE5ZWY5OGFmOGFhZGRlOTllNDY1
OGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0lt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5j
cHAKQEAgLTUwLDcgKzUwLDYgQEAgV2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0
dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKGZhbHNl
KQogICAgICwgbV9zaG93RlBTQ291bnRlcihmYWxzZSkKICAgICAsIG1fc2hvd1BsYXRmb3JtTGF5
ZXJUcmVlKGZhbHNlKQotICAgICwgbV91c2VUaHJlYWRlZENvbXBvc2l0b3IoZmFsc2UpCiB7CiAg
ICAgQVNTRVJUKHNldHRpbmdzKTsKIH0KQEAgLTM3OSwxMSArMzc4LDYgQEAgdm9pZCBXZWJTZXR0
aW5nc0ltcGw6OnNldE1pbmltdW1BY2NlbGVyYXRlZDJkQ2FudmFzU2l6ZShpbnQgbnVtUGl4ZWxz
KQogICAgIG1fc2V0dGluZ3MtPnNldE1pbmltdW1BY2NlbGVyYXRlZDJkQ2FudmFzU2l6ZShudW1Q
aXhlbHMpOwogfQogCi12b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0VXNlVGhyZWFkZWRDb21wb3Np
dG9yKGJvb2wgdXNlVGhyZWFkZWRDb21wb3NpdG9yKQotewotICAgIG1fdXNlVGhyZWFkZWRDb21w
b3NpdG9yID0gdXNlVGhyZWFkZWRDb21wb3NpdG9yOwotfQotCiB2b2lkIFdlYlNldHRpbmdzSW1w
bDo6c2V0TWVtb3J5SW5mb0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIG1fc2V0dGluZ3Mt
PnNldE1lbW9yeUluZm9FbmFibGVkKGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCBmYTM0YWE4OGU0MTAxNmMxODk4ZDUyNTAyYWFk
MGUzNTA0Mjc3MjliLi4zZGIwNTdkOTc0NmY4Zjc1ZGIxMDE2YzU4Nzc5MDRiMjI3ZDQ1MzU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApAQCAtMTA5
LDggKzEwOSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGVnYWN5QWNjZWxlcmF0
ZWQyZENhbnZhc0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE1pbmltdW1BY2Nl
bGVyYXRlZDJkQ2FudmFzU2l6ZShpbnQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRl
ZERyYXdpbmdFbmFibGVkKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VUaHJlYWRlZENv
bXBvc2l0b3IoYm9vbCk7Ci0gICAgdmlydHVhbCBib29sIHVzZVRocmVhZGVkQ29tcG9zaXRvcigp
IGNvbnN0IHsgcmV0dXJuIG1fdXNlVGhyZWFkZWRDb21wb3NpdG9yOyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRIeXBl
cmxpbmtBdWRpdGluZ0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEFzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpOwpAQCAtMTMxLDcgKzEyOSw2IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2NvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQ7CiAgICAgYm9vbCBtX3No
b3dGUFNDb3VudGVyOwogICAgIGJvb2wgbV9zaG93UGxhdGZvcm1MYXllclRyZWU7Ci0gICAgYm9v
bCBtX3VzZVRocmVhZGVkQ29tcG9zaXRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDc3ZjU4ZmJi
YmY4MGQzZjY5YzVkYjFmNDExOGMwODc2YTIzNTQ4M2UuLmQxYmUxNDg4OGU5MzA0MzIzNmVjNTRl
ZGYxMmM1NzViMmM1MGZmOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQAogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2lu
Y2x1ZGUgIldlYlZlY3Rvci5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKLSNpbmNsdWRl
ICJjYy9DQ0hlYWRzVXBEaXNwbGF5LmgiCisjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94eS5oIgog
I2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtMTA3NiwxMiArMTA3NiwxMiBAQCB2b2lk
IFdlYlZpZXdJbXBsOjphbmltYXRlKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKICAgICBpZiAod2Vi
ZnJhbWUpIHsKICAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gd2ViZnJhbWUtPmZyYW1lVmlldygp
OwogICAgICAgICBpZiAodmlldykgewotICAgICAgICAgICAgaWYgKCFzZXR0aW5ncygpLT51c2VU
aHJlYWRlZENvbXBvc2l0b3IoKSAmJiBtX2xheWVyVHJlZUhvc3QpCisgICAgICAgICAgICBpZiAo
IUNDUHJveHk6OmltcGxUaHJlYWQoKSAmJiBtX2xheWVyVHJlZUhvc3QpCiAgICAgICAgICAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5zZXRBbmltYXRpbmcodHJ1ZSk7CiAKICAgICAgICAgICAgIHZp
ZXctPnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoY29udmVydFNlY29uZHNUb0RPTVRpbWVTdGFt
cChmcmFtZUJlZ2luVGltZSkpOwogCi0gICAgICAgICAgICBpZiAoIXNldHRpbmdzKCktPnVzZVRo
cmVhZGVkQ29tcG9zaXRvcigpICYmIG1fbGF5ZXJUcmVlSG9zdCkKKyAgICAgICAgICAgIGlmICgh
Q0NQcm94eTo6aW1wbFRocmVhZCgpICYmIG1fbGF5ZXJUcmVlSG9zdCkKICAgICAgICAgICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnNldEFuaW1hdGluZyhmYWxzZSk7CiAgICAgICAgIH0KICAgICB9
CkBAIC0xMTgzLDcgKzExODMsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp0aGVtZUNoYW5nZWQoKQog
dm9pZCBXZWJWaWV3SW1wbDo6Y29tcG9zaXRlKGJvb2wpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQotICAgIGlmIChzZXR0aW5ncygpLT51c2VUaHJlYWRlZENvbXBvc2l0b3Io
KSkKKyAgICBpZiAoQ0NQcm94eTo6aW1wbFRocmVhZCgpKQogICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnNldE5lZWRzUmVkcmF3KCk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVChpc0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSk7CkBAIC0yNjgwLDcgKzI2ODAsNyBAQCBXZWJDb3Jl
OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3QqIFdlYlZpZXdJbXBsOjpub25Db21wb3NpdGVkQ29u
dGVudEhvc3QoKQogdm9pZCBXZWJWaWV3SW1wbDo6c2NoZWR1bGVBbmltYXRpb24oKQogewogICAg
IGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkgewotICAgICAgICBpZiAoc2V0
dGluZ3MoKS0+dXNlVGhyZWFkZWRDb21wb3NpdG9yKCkpIHsKKyAgICAgICAgaWYgKENDUHJveHk6
OmltcGxUaHJlYWQoKSkgewogICAgICAgICAgICAgQVNTRVJUKG1fbGF5ZXJUcmVlSG9zdCk7CiAg
ICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQW5pbWF0ZSgpOwogICAgICAgICB9
IGVsc2UKQEAgLTI3NTEsNyArMjc1MSw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgV2ViQ29yZTo6Q0NT
ZXR0aW5ncyBjY1NldHRpbmdzOwogICAgICAgICBjY1NldHRpbmdzLmFjY2VsZXJhdGVQYWludGlu
ZyA9IHBhZ2UoKS0+c2V0dGluZ3MoKS0+YWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCgpOwogICAg
ICAgICBjY1NldHRpbmdzLmNvbXBvc2l0ZU9mZnNjcmVlbiA9IHNldHRpbmdzKCktPmNvbXBvc2l0
ZVRvVGV4dHVyZUVuYWJsZWQoKTsKLSAgICAgICAgY2NTZXR0aW5ncy5lbmFibGVDb21wb3NpdG9y
VGhyZWFkID0gc2V0dGluZ3MoKS0+dXNlVGhyZWFkZWRDb21wb3NpdG9yKCk7CiAgICAgICAgIGNj
U2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgPSBzZXR0aW5ncygpLT5zaG93RlBTQ291bnRlcigpOwog
ICAgICAgICBjY1NldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSA9IHNldHRpbmdzKCktPnNo
b3dQbGF0Zm9ybUxheWVyVHJlZSgpOwogICAgICAgICBjY1NldHRpbmdzLnJlZnJlc2hSYXRlID0g
c2NyZWVuUmVmcmVzaFJhdGUocGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpKTsKQEAgLTI3ODcs
NyArMjc4Niw3IEBAIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IFdlYlZpZXdJbXBsOjpj
cmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCkKIHsKICAgICBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGNvbnRleHQgPSBtX3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhpY3NDb250ZXh0M0QucmVs
ZWFzZSgpOwogICAgIGlmICghY29udGV4dCkgewotICAgICAgICBpZiAoc2V0dGluZ3MoKS0+dXNl
VGhyZWFkZWRDb21wb3NpdG9yKCkpCisgICAgICAgIGlmIChDQ1Byb3h5OjppbXBsVGhyZWFkKCkp
CiAgICAgICAgICAgICBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVH
cmFwaGljc0NvbnRleHRGb3JBbm90aGVyVGhyZWFkKGdldENvbXBvc2l0b3JDb250ZXh0QXR0cmli
dXRlcygpLCBtX3BhZ2UtPmNocm9tZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0
bHlUb0hvc3RXaW5kb3cpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb250ZXh0ID0gR3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShnZXRDb21wb3NpdG9yQ29udGV4dEF0dHJpYnV0ZXMoKSwg
bV9wYWdlLT5jaHJvbWUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0
V2luZG93KTsKQEAgLTI4NTUsNyArMjg1NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRpZFJlY3Jl
YXRlR3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2VzcykKIAogdm9pZCBXZWJWaWV3SW1wbDo6c2No
ZWR1bGVDb21wb3NpdGUoKQogewotICAgIEFTU0VSVCghc2V0dGluZ3MoKS0+dXNlVGhyZWFkZWRD
b21wb3NpdG9yKCkpOworICAgIEFTU0VSVCghQ0NQcm94eTo6aW1wbFRocmVhZCgpKTsKICAgICBt
X2NsaWVudC0+c2NoZWR1bGVDb21wb3NpdGUoKTsKIH0KIApAQCAtMjg4Nyw3ICsyODg2LDcgQEAg
V2ViR3JhcGhpY3NDb250ZXh0M0QqIFdlYlZpZXdJbXBsOjpncmFwaGljc0NvbnRleHQzRCgpCiAg
ICAgICAgICAgICBpZiAod2ViQ29udGV4dCAmJiAhd2ViQ29udGV4dC0+aXNDb250ZXh0TG9zdCgp
KQogICAgICAgICAgICAgICAgIHJldHVybiB3ZWJDb250ZXh0OwogICAgICAgICB9Ci0gICAgICAg
IGlmIChzZXR0aW5ncygpLT51c2VUaHJlYWRlZENvbXBvc2l0b3IoKSkKKyAgICAgICAgaWYgKEND
UHJveHk6OmltcGxUaHJlYWQoKSkKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5T25zY3JlZW5HcmFw
aGljc0NvbnRleHQzRCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3ND
b250ZXh0Rm9yQW5vdGhlclRocmVhZChnZXRDb21wb3NpdG9yQ29udGV4dEF0dHJpYnV0ZXMoKSwg
bV9wYWdlLT5jaHJvbWUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0
V2luZG93KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV90ZW1wb3JhcnlPbnNjcmVlbkdy
YXBoaWNzQ29udGV4dDNEID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShnZXRDb21wb3NpdG9y
Q29udGV4dEF0dHJpYnV0ZXMoKSwgbV9wYWdlLT5jaHJvbWUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKQEAgLTI4OTgsNyArMjg5Nyw2IEBAIFdlYkdy
YXBoaWNzQ29udGV4dDNEKiBXZWJWaWV3SW1wbDo6Z3JhcGhpY3NDb250ZXh0M0QoKQogICAgIHJl
dHVybiAwOwogfQogCi0KIHZvaWQgV2ViVmlld0ltcGw6OnNldFZpc2liaWxpdHlTdGF0ZShXZWJQ
YWdlVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGlzSW5pdGlhbFN0YXRlKSB7CiAgICAgaWYgKCFwYWdlKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcAppbmRleCA0YTQxNzk2NDc5MTNiOGRmMGE2N2Y5M2UzMjg2OWY0YzNkM2U3Y2Y2Li5h
MmEzNzdkZjg5MzBiNzI3MmVhYWE5NmYwYjM2NzBlYjc2N2VlYTUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTI0
OSwxNSArMjQ5LDcgQEAgcHJvdGVjdGVkOgogICAgIENDTGF5ZXJUcmVlSG9zdFRlc3QoKQogICAg
ICAgICA6IG1fYmVnaW5uaW5nKGZhbHNlKQogICAgICAgICAsIG1fZW5kV2hlbkJlZ2luUmV0dXJu
cyhmYWxzZSkKLSAgICAgICAgLCBtX3RpbWVkT3V0KGZhbHNlKQotICAgIHsKLSAgICAgICAgbV93
ZWJUaHJlYWQgPSBhZG9wdFB0cih3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y3JlYXRlVGhyZWFk
KCJDQ0xheWVyVHJlZUhvc3RUZXN0IikpOwotICAgICAgICBBU1NFUlQoQ0NQcm94eTo6bWFpblRo
cmVhZCgpKTsKLQotICAgICAgICBXZWJDb21wb3NpdG9yOjpzZXRUaHJlYWQobV93ZWJUaHJlYWQu
Z2V0KCkpOwotICAgICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwotICAgICAg
ICBtX21haW5UaHJlYWRQcm94eSA9IENDU2NvcGVkVGhyZWFkUHJveHk6OmNyZWF0ZShDQ1Byb3h5
OjptYWluVGhyZWFkKCkpOwotICAgIH0KKyAgICAgICAgLCBtX3RpbWVkT3V0KGZhbHNlKSB7IH0K
IAogICAgIHZvaWQgZG9CZWdpblRlc3QoKTsKIApAQCAtMzYyLDggKzM1NCwxNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgcnVuVGVzdChib29sIHRocmVhZGVkKQogICAgIHsKLSAg
ICAgICAgbV9zZXR0aW5ncy5lbmFibGVDb21wb3NpdG9yVGhyZWFkID0gdGhyZWFkZWQ7CiAgICAg
ICAgIG1fc2V0dGluZ3MucmVmcmVzaFJhdGUgPSAxMDAuMDsKKworICAgICAgICBpZiAodGhyZWFk
ZWQpIHsKKyAgICAgICAgICAgIG1fd2ViVGhyZWFkID0gYWRvcHRQdHIod2ViS2l0UGxhdGZvcm1T
dXBwb3J0KCktPmNyZWF0ZVRocmVhZCgiQ0NMYXllclRyZWVIb3N0VGVzdCIpKTsKKyAgICAgICAg
ICAgIFdlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUobV93ZWJUaHJlYWQuZ2V0KCkpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIFdlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoMCk7CisKKyAg
ICAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgbV9tYWluVGhy
ZWFkUHJveHkgPSBDQ1Njb3BlZFRocmVhZFByb3h5OjpjcmVhdGUoQ0NQcm94eTo6bWFpblRocmVh
ZCgpKTsKKwogICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UG9zdERlbGF5ZWRUYXNrKENDTGF5ZXJU
cmVlSG9zdFRlc3Q6Om9uQmVnaW5UZXN0LCBzdGF0aWNfY2FzdDx2b2lkKj4odGhpcyksIDApOwog
ICAgICAgICBtX3RpbWVvdXRUYXNrID0gbmV3IFRpbWVvdXRUYXNrKHRoaXMpOwogICAgICAgICB3
ZWJraXRfc3VwcG9ydDo6UG9zdERlbGF5ZWRUYXNrKG1fdGltZW91dFRhc2ssIDUwMDApOyAvLyB3
ZWJraXRfc3VwcG9ydCB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHRhc2sKQEAgLTM4MSw2ICszODIs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICAgICAgbV9yb290TGF5ZXItPnNldExheWVy
VHJlZUhvc3QoMCk7CiAgICAgICAgIGFmdGVyVGVzdCgpOworICAgICAgICBXZWJDb21wb3NpdG9y
OjpzaHV0ZG93bigpOwogICAgIH0KIAogICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1YmU2NGFiNmM2
NTk3NzEzMTIxYzcxMTU1MzAxZjJlYmMwOTA3YjRmLi44OGY3ZWE5ZjNlMWZjZjc5YjkyMmRjM2I0
NTI2YTBmOGMxNmJmOGU3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMTEtMTggIE5hdCBEdWNhICA8bmR1Y2FA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5hYmxlIHRocmVhZGVkIGNvbXBv
c2l0aW5nIHZpYSBDQ1RocmVhZFByb3h5OjpoYXNUaHJlYWQgb25seQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA4MzgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbC5jcHA6CisgICAgICAgIChUZXN0U2hlbGw6OnJlc2V0V2ViU2V0dGluZ3MpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oOgorICAgICAgICAo
VGVzdFNoZWxsOjp0aHJlYWRlZENvbXBvc2l0aW5nRW5hYmxlZCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViUHJlZmVy
ZW5jZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjphcHBseVRvKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5oOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZp
ZXdIb3N0OjpXZWJWaWV3SG9zdCk6CisgICAgICAgIChXZWJWaWV3SG9zdDo6fldlYlZpZXdIb3N0
KToKKwogMjAxMS0xMS0xOCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgSWdub3JlIGFuIEFOR0xFIGxlYWsgdGhhdCBpcyBub3QgV2ViS2l0J3MgZmF1bHQKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCmluZGV4IGNiMWUyMTliMDc2
NmI4YjkwOWU2M2MwZDhkYjAxMmMzMjhmYmQ0OTguLmI5ZjkzNjA3MDNmZGZhNjg4MGNiNTcxMGIw
NTBkZGQ2MjQzNjZhMzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsLmNwcApAQCAtMTk4LDcgKzE5OCw2IEBAIHZvaWQgVGVzdFNoZWxsOjpyZXNldFdlYlNldHRp
bmdzKFdlYlZpZXcmIHdlYlZpZXcpCiAgICAgbV9wcmVmcy5yZXNldCgpOwogICAgIG1fcHJlZnMu
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQgPSB0cnVlOwogICAgIG1fcHJlZnMuYWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZCA9IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0ZvclZpZGVvRW5hYmxlZDsKLSAgICBtX3ByZWZzLnRocmVhZGVkQ29tcG9zaXRpbmdFbmFibGVk
ID0gbV90aHJlYWRlZENvbXBvc2l0aW5nRW5hYmxlZDsKICAgICBtX3ByZWZzLmNvbXBvc2l0ZVRv
VGV4dHVyZSA9IG1fY29tcG9zaXRlVG9UZXh0dXJlOwogICAgIG1fcHJlZnMuZm9yY2VDb21wb3Np
dGluZ01vZGUgPSBtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlOwogICAgIG1fcHJlZnMuYWNjZWxlcmF0
ZWQyZENhbnZhc0VuYWJsZWQgPSBtX2FjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAppbmRleCBiMTk0ZWIwYjIzOTYzMGUx
MjNkZmI0MzEyZDBjZjc0MTM3Mzg2MjExLi4wOTAwNzk0YjQwZWVjMjM2NzQzOWQ2YWQxY2ViYmJk
YTVlMWFjMWQ4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGwuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaApA
QCAtMTMwLDYgKzEzMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0ZvclZpZGVvRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9hY2NlbGVyYXRlZENvbXBv
c2l0aW5nRm9yVmlkZW9FbmFibGVkID0gZW5hYmxlZDsgfQogICAgIHZvaWQgc2V0VGhyZWFkZWRD
b21wb3NpdGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fdGhyZWFkZWRDb21wb3NpdGluZ0Vu
YWJsZWQgPSBlbmFibGVkOyB9CisgICAgYm9vbCB0aHJlYWRlZENvbXBvc2l0aW5nRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFkZWRDb21wb3NpdGluZ0VuYWJsZWQ7IH0KICAgICB2b2lk
IHNldENvbXBvc2l0ZVRvVGV4dHVyZShib29sIGVuYWJsZWQpIHsgbV9jb21wb3NpdGVUb1RleHR1
cmUgPSBlbmFibGVkOyB9CiAgICAgdm9pZCBzZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShib29sIGVu
YWJsZWQpIHsgbV9mb3JjZUNvbXBvc2l0aW5nTW9kZSA9IGVuYWJsZWQ7IH0KICAgICB2b2lkIHNl
dEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2FjY2VsZXJhdGVk
MmRDYW52YXNFbmFibGVkID0gZW5hYmxlZDsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IDVjYzhmYWI5OTU4YTc5NmFjNDlkZTgx
NDE5YWE5OWYwZGQzMmZjNmIuLjc1YTA1Nzc4OThhMmRmYWEzODU0ZDBmYjY1NThlOTA2ZDEzMzI2
ZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVu
Y2VzLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNl
cy5jcHAKQEAgLTEwOSw3ICsxMDksNiBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpyZXNldCgpCiAg
ICAgaHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkID0gZmFsc2U7CiAgICAgYWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0ZvclZpZGVvRW5hYmxlZCA9IGZhbHNlOwogICAgIGFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdFbmFibGVkID0gZmFsc2U7Ci0gICAgdGhyZWFkZWRDb21wb3NpdGluZ0VuYWJsZWQgPSBmYWxz
ZTsKICAgICBjb21wb3NpdGVUb1RleHR1cmUgPSBmYWxzZTsKICAgICBhY2NlbGVyYXRlZDJkQ2Fu
dmFzRW5hYmxlZCA9IGZhbHNlOwogICAgIGxlZ2FjeUFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVk
ID0gZmFsc2U7CkBAIC0yMTMsNyArMjEyLDYgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6YXBwbHlU
byhXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHNldHRpbmdzLT5zZXRDYXJldEJyb3dzaW5nRW5hYmxl
ZChjYXJldEJyb3dzaW5nRW5hYmxlZCk7CiAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkKGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKTsKICAgICBzZXR0
aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZChhY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkKTsKLSAgICBzZXR0aW5ncy0+c2V0VXNlVGhyZWFk
ZWRDb21wb3NpdG9yKHRocmVhZGVkQ29tcG9zaXRpbmdFbmFibGVkKTsKICAgICBzZXR0aW5ncy0+
c2V0Q29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZChjb21wb3NpdGVUb1RleHR1cmUpOwogICAgIHNl
dHRpbmdzLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShmb3JjZUNvbXBvc2l0aW5nTW9kZSk7CiAg
ICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKGFjY2VsZXJhdGVkMmRD
YW52YXNFbmFibGVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlByZWZlcmVuY2VzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVm
ZXJlbmNlcy5oCmluZGV4IDIzMzdhNDA1NTlkMGU4YWM0ZmE3NjVlODUzNjE2NDhiMjEzYjBhOWIu
LjIxNjQ5NDQ4ZDg5ZThiNGMxOWIzNzY5OTZkYWYxNjgxNGRhZDJiNGUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmgKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuaApAQCAtMTAyLDcgKzEwMiw2
IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlcyB7CiAgICAgYm9vbCBjYXJldEJyb3dzaW5nRW5hYmxl
ZDsKICAgICBib29sIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQ7CiAgICAg
Ym9vbCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZDsKLSAgICBib29sIHRocmVhZGVkQ29t
cG9zaXRpbmdFbmFibGVkOwogICAgIGJvb2wgY29tcG9zaXRlVG9UZXh0dXJlOwogICAgIGJvb2wg
Zm9yY2VDb21wb3NpdGluZ01vZGU7CiAgICAgYm9vbCBhY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxl
ZDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRl
eCA0ODE2YzM5MGQ2YTgyOGNhMGZjODVmMmYwYzRjOTBlZjExZDIyYmJjLi44NjcwMzhiZDczMDY1
MWY2ZmE5YmY1NzZjY2NjMzExMGM1NzA5YWVmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC0xMTkxLDggKzExOTEsMTEgQEAgV2ViVmlld0hv
c3Q6OldlYlZpZXdIb3N0KFRlc3RTaGVsbCogc2hlbGwpCiB7CiAgICAgV1RGOjppbml0aWFsaXpl
VGhyZWFkaW5nKCk7CiAKLSAgICBtX2NvbXBvc2l0b3JUaHJlYWQgPSBhZG9wdFB0cihXZWJLaXQ6
OndlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jcmVhdGVUaHJlYWQoIkNvbXBvc2l0b3IiKSk7Ci0g
ICAgV2ViQ29tcG9zaXRvcjo6c2V0VGhyZWFkKG1fY29tcG9zaXRvclRocmVhZC5nZXQoKSk7Cisg
ICAgaWYgKHNoZWxsLT50aHJlYWRlZENvbXBvc2l0aW5nRW5hYmxlZCgpKSB7CisgICAgICAgIG1f
Y29tcG9zaXRvclRocmVhZCA9IGFkb3B0UHRyKFdlYktpdDo6d2ViS2l0UGxhdGZvcm1TdXBwb3J0
KCktPmNyZWF0ZVRocmVhZCgiQ29tcG9zaXRvciIpKTsKKyAgICAgICAgV2ViQ29tcG9zaXRvcjo6
aW5pdGlhbGl6ZShtX2NvbXBvc2l0b3JUaHJlYWQuZ2V0KCkpOworICAgIH0gZWxzZQorICAgICAg
ICBXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOwogCiAgICAgcmVzZXQoKTsKIH0KQEAgLTEy
MTQsNiArMTIxNyw4IEBAIFdlYlZpZXdIb3N0Ojp+V2ViVmlld0hvc3QoKQogICAgIHdlYldpZGdl
dCgpLT5jbG9zZSgpOwogICAgIGlmIChtX2luTW9kYWxMb29wKQogICAgICAgICB3ZWJraXRfc3Vw
cG9ydDo6UXVpdE1lc3NhZ2VMb29wKCk7CisKKyAgICBXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigp
OwogfQogCiB2b2lkIFdlYlZpZXdIb3N0OjpzZXRXZWJXaWRnZXQoV2ViS2l0OjpXZWJXaWRnZXQq
IHdpZGdldCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115944</attachid>
            <date>2011-11-19 04:01:48 -0800</date>
            <delta_ts>2011-11-19 04:26:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70838-20111119040147.patch</filename>
            <type>text/plain</type>
            <size>43284</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjliY2UyNDQ3Zjg1MzRj
ZWI1ZGExMGRiYmE1MjA5M2ZmMjY5YjA3MC4uN2VlYjU5MzA4MGI3N2NkZGI2Nzg3MjNlOTM4YjJh
NGU1ZjliN2I5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDExLTExLTE4ICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEVuYWJsZSB0
aHJlYWRlZCBjb21wb3NpdGluZyB2aWEgQ0NUaHJlYWRQcm94eTo6aGFzVGhyZWFkIG9ubHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODM4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpsYXllclJlbmRlcmVyQ29udGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjplbmFibGVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Y29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OnNldE5lZWRzQW5pbWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OnNldE5lZWRzQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVl
SG9zdDo6c2V0TmVlZHNSZWRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
Ojpjb21wb3NpdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6Q0NTZXR0aW5n
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1Byb3h5Ojppc01haW5UaHJlYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NQcm94eTo6aXNJbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJveHk6
OnNldE1haW5UaHJlYWRJc0ltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjpEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQ6OkRlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQ6On5EZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQpOgorCiAyMDExLTExLTE4ICBUYWthc2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFtXZWJTb2NrZXRdIGV4cG9ydCBXZWJTb2NrZXRD
aGFubmVsIGludGVyZmFjZSBmb3IgcGx1Z2lucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCA1ZTBiZTliOGI2N2U4YTFiYzNhZWNhNTNkMTcwYTBhYjNmOTUyYzE5Li4wMTg0ZTc3OTAxMmIx
NjVlNmM0ZDI2M2EwMzZmZDk3ZWJhNTkyNzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQwIEBACisyMDExLTExLTE4ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbY2hyb21pdW1dIEVuYWJsZSB0aHJlYWRlZCBjb21wb3NpdGluZyB2aWEg
Q0NUaHJlYWRQcm94eTo6aGFzVGhyZWFkIG9ubHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQ29tcG9zaXRvci5oOgorICAgICAgICAq
IHB1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJl
ZVZpZXc6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdz
Lmg6CisgICAgICAgICogc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBv
c2l0b3I6OnNodXRkb3duKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6ZnJvbUlk
ZW50aWZpZXIpOgorICAgICAgICAqIHNyYy9XZWJLaXQuY3BwOgorICAgICAgICAoV2ViS2l0Ojpp
bml0aWFsaXplV2l0aG91dFY4KToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpvcGVyYXRvciBD
Q1NldHRpbmdzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6Y29tcG9zaXRl
KToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6Y3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCk6
CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGlu
Z3NJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OmFuaW1hdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
Y29tcG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNjaGVkdWxlQW5pbWF0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjcmVhdGVMYXll
clRyZWVIb3N0Q29udGV4dDNEKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNjaGVk
dWxlQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmdyYXBoaWNzQ29u
dGV4dDNEKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAg
ICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdDo6Q0NMYXllclRyZWVIb3N0VGVzdCk6CisgICAg
ICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Q6OnJ1blRlc3QpOgorCiAyMDExLTExLTE4ICBU
YWthc2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hy
b21pdW1dIFtXZWJTb2NrZXRdIGV4cG9ydCBXZWJTb2NrZXRDaGFubmVsIGludGVyZmFjZSBmb3Ig
cGx1Z2lucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggMGJkNmRi
YzM4OTZhZTRhMDc3MTlhNGVhNGEzY2NlNzM1OTI3M2UwNC4uOWUyMzg1ZjE4MGYxYjNjZGFlYmI5
YzUzZGVmNzRiMGE0MzM1Njg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRp
YWxpemUoKQogICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9t
YXBfc3ViIik7CiAKICAgICAvLyBVc2UgdGhlIHN3YXBCdWZmZXJzIGNhbGxiYWNrIG9ubHkgd2l0
aCB0aGUgdGhyZWFkZWQgcHJveHkuCi0gICAgaWYgKHNldHRpbmdzKCkuZW5hYmxlQ29tcG9zaXRv
clRocmVhZCkKKyAgICBpZiAoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKQogICAgICAgICBtX2Nh
cGFiaWxpdGllcy51c2luZ1N3YXBDb21wbGV0ZUNhbGxiYWNrID0gZXh0ZW5zaW9ucy0+c3VwcG9y
dHMoIkdMX0NIUk9NSVVNX3N3YXBidWZmZXJzX2NvbXBsZXRlX2NhbGxiYWNrIik7CiAgICAgaWYg
KG1fY2FwYWJpbGl0aWVzLnVzaW5nU3dhcENvbXBsZXRlQ2FsbGJhY2spIHsKICAgICAgICAgZXh0
ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fc3dhcGJ1ZmZlcnNfY29tcGxldGVf
Y2FsbGJhY2siKTsKQEAgLTM5Nyw3ICszOTcsOCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZHJhd0xheWVyc0ludGVybmFsKCkKICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRl
eHQtPmJsZW5kRnVuYyhHcmFwaGljc0NvbnRleHQzRDo6T05FLCBHcmFwaGljc0NvbnRleHQzRDo6
T05FX01JTlVTX1NSQ19BTFBIQSkpOwogICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4
dC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpKTsKIAotICAgIGRyYXdM
YXllcnNPbnRvUmVuZGVyU3VyZmFjZXMocm9vdERyYXdMYXllciwgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdCk7CisgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllckxpc3Quc2l6ZSgpID4gMSB8fCByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0WzBdLT5yZW5kZXJTdXJmYWNlKCktPmxheWVyTGlzdCgpLnNpemUo
KSA+IDApCisgICAgICAgIGRyYXdMYXllcnNPbnRvUmVuZGVyU3VyZmFjZXMocm9vdERyYXdMYXll
ciwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKICAgICBpZiAobV9oZWFkc1VwRGlzcGxheS0+
ZW5hYmxlZCgpKSB7CiAgICAgICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZW5h
YmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1
bS5jcHAKaW5kZXggMjc2ZjNjOWZjMmZlMTA3ZjE2M2IyYWJhMDk4YzAzZmJiMzM0NGNiNi4uMmIw
ZDE2ZTUxOTk1ZjUzOWY2NjgzMGJmMzVhODNlYzVkODNkNzNkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExh
eWVyQ2hyb21pdW0uY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgR3JhcGhpY3NDb250ZXh0M0QqIFdl
YkdMTGF5ZXJDaHJvbWl1bTo6bGF5ZXJSZW5kZXJlckNvbnRleHQoKQogewogICAgIC8vIEZJWE1F
OiBJbiB0aGUgdGhyZWFkZWQgY2FzZSwgcGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyBtdXN0
IGJlCiAgICAgLy8gcmVmYWN0b3JlZCB0byBiZSBhc3luY2hyb25vdXMuIEN1cnJlbnRseSB0aGlz
IGlzIHVuaW1wbGVtZW50ZWQuCi0gICAgaWYgKCFsYXllclRyZWVIb3N0KCkgfHwgbGF5ZXJUcmVl
SG9zdCgpLT5zZXR0aW5ncygpLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQpCisgICAgaWYgKCFsYXll
clRyZWVIb3N0KCkgfHwgQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKQogICAgICAgICByZXR1cm4g
MDsKICAgICByZXR1cm4gbGF5ZXJUcmVlSG9zdCgpLT5jb250ZXh0KCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBE
aXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDSGVhZHNVcERpc3BsYXkuY3BwCmluZGV4IGI2OGY0NmNmOGI4MWM5ZTc2ZTM3NzljNjkwMWJj
Yjk0NTUxYzkxY2YuLjcwOGJjZmY4ODAxYjc4ODgxMDYwYjUyOTg1OGIyODliOTUzMjhhZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
SGVhZHNVcERpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQg
Q0NIZWFkc1VwRGlzcGxheTo6b25Td2FwQnVmZmVycygpCiBib29sIENDSGVhZHNVcERpc3BsYXk6
OmVuYWJsZWQoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBIVUQgZG9lcyBub3Qgd29yayBpbiBj
b21wb3NpdG9yIHRocmVhZCBtb2RlLgotICAgIGlmIChzZXR0aW5ncygpLmVuYWJsZUNvbXBvc2l0
b3JUaHJlYWQpCisgICAgaWYgKENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIHJldHVybiBzZXR0aW5ncygpLnNob3dQbGF0Zm9ybUxheWVyVHJlZSB8
fCBzZXR0aW5ncygpLnNob3dGUFNDb3VudGVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5jcHAKaW5kZXggYmFlNmZiM2NlOTM0ZmRiNGMzZjdjNTk3OWEwYTBiZmRiNDY5MDViNS4uYTk2
NDYyZjllNzdjNDVmNzdhOTY5MGRiNGIzOTViZjcyOTUyZTBhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuY3BwCkBAIC0zNyw4ICszNywxNyBAQAogI2luY2x1ZGUgImNjL0NDVGhyZWFk
LmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94eS5oIgogCituYW1lc3BhY2Ugeworc3RhdGlj
IGludCBudW1MYXllclRyZWVJbnN0YW5jZXM7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Ym9vbCBDQ0xheWVyVHJlZUhvc3Q6OmFueUxheWVyVHJlZUhvc3RJbnN0YW5jZUV4aXN0cygpCit7
CisgICAgcmV0dXJuIG51bUxheWVyVHJlZUluc3RhbmNlcyA+IDA7Cit9CisKIFBhc3NSZWZQdHI8
Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RD
bGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgUmVmUHRy
PENDTGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9zdCA9IGFkb3B0UmVmKG5ldyBDQ0xheWVyVHJl
ZUhvc3QoY2xpZW50LCBzZXR0aW5ncykpOwpAQCAtNjAsMTIgKzY5LDEzIEBAIENDTGF5ZXJUcmVl
SG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25z
dCBDQ1NldHRpbmdzCiAgICAgLCBtX21heFBhZ2VTY2FsZSgxKQogewogICAgIEFTU0VSVChDQ1By
b3h5Ojppc01haW5UaHJlYWQoKSk7CisgICAgbnVtTGF5ZXJUcmVlSW5zdGFuY2VzKys7CiB9CiAK
IGJvb2wgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKCkKIHsKICAgICBUUkFDRV9FVkVOVCgi
Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplIiwgdGhpcywgMCk7Ci0gICAgaWYgKG1fc2V0dGlu
Z3MuZW5hYmxlQ29tcG9zaXRvclRocmVhZCkgeworICAgIGlmIChDQ1Byb3h5OjpoYXNJbXBsVGhy
ZWFkKCkpIHsKICAgICAgICAgLy8gVGhlIEhVRCBkb2VzIG5vdCB3b3JrIGluIHRocmVhZGVkIG1v
ZGUuIFR1cm4gaXQgb2ZmLgogICAgICAgICBtX3NldHRpbmdzLnNob3dGUFNDb3VudGVyID0gZmFs
c2U7CiAgICAgICAgIG1fc2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlID0gZmFsc2U7CkBA
IC05NCw2ICsxMDQsNyBAQCBDQ0xheWVyVHJlZUhvc3Q6On5DQ0xheWVyVHJlZUhvc3QoKQogICAg
IG1fcHJveHktPnN0b3AoKTsKICAgICBtX3Byb3h5LmNsZWFyKCk7CiAgICAgY2xlYXJQZW5kaW5n
VXBkYXRlKCk7CisgICAgbnVtTGF5ZXJUcmVlSW5zdGFuY2VzLS07CiB9CiAKIHZvaWQgQ0NMYXll
clRyZWVIb3N0OjpkZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvcikKQEAgLTE2OCw3ICsxNzksNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6ZGlkUmVjcmVhdGVHcmFwaGljc0NvbnRleHQoYm9vbCBzdWNjZXNzKQogLy8gVGVtcG9yYXJ5
IGhhY2sgdW50aWwgV2ViVmlld0ltcGwgY29udGV4dCBjcmVhdGlvbiBnZXRzIHNpbXBsaWZpZWQK
IEdyYXBoaWNzQ29udGV4dDNEKiBDQ0xheWVyVHJlZUhvc3Q6OmNvbnRleHQoKQogewotICAgIEFT
U0VSVCghbV9zZXR0aW5ncy5lbmFibGVDb21wb3NpdG9yVGhyZWFkKTsKKyAgICBBU1NFUlQoIUND
UHJveHk6Omhhc0ltcGxUaHJlYWQoKSk7CiAgICAgcmV0dXJuIG1fcHJveHktPmNvbnRleHQoKTsK
IH0KIApAQCAtMTk5LDEzICsyMTAsMTMgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldFpvb21B
bmltYXRvclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgem9vbSkKIAogdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzQW5pbWF0ZSgpCiB7Ci0gICAgQVNTRVJUKG1fc2V0
dGluZ3MuZW5hYmxlQ29tcG9zaXRvclRocmVhZCk7CisgICAgQVNTRVJUKENDUHJveHk6Omhhc0lt
cGxUaHJlYWQoKSk7CiAgICAgbV9wcm94eS0+c2V0TmVlZHNBbmltYXRlKCk7CiB9CiAKIHZvaWQg
Q0NMYXllclRyZWVIb3N0OjpzZXROZWVkc0NvbW1pdCgpCiB7Ci0gICAgaWYgKG1fc2V0dGluZ3Mu
ZW5hYmxlQ29tcG9zaXRvclRocmVhZCkgeworICAgIGlmIChDQ1RocmVhZFByb3h5OjppbXBsVGhy
ZWFkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHND
b21taXQiLCB0aGlzLCAwKTsKICAgICAgICAgbV9wcm94eS0+c2V0TmVlZHNDb21taXQoKTsKICAg
ICB9IGVsc2UKQEAgLTIxNCw3ICsyMjUsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0TmVl
ZHNDb21taXQoKQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNSZWRyYXcoKQogewot
ICAgIGlmIChtX3NldHRpbmdzLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQpCisgICAgaWYgKENDVGhy
ZWFkUHJveHk6OmltcGxUaHJlYWQoKSkKICAgICAgICAgbV9wcm94eS0+c2V0TmVlZHNSZWRyYXco
KTsKICAgICBlbHNlCiAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZUNvbXBvc2l0ZSgpOwpAQCAt
MjkwLDcgKzMwMSw3IEBAIFRleHR1cmVNYW5hZ2VyKiBDQ0xheWVyVHJlZUhvc3Q6OmNvbnRlbnRz
VGV4dHVyZU1hbmFnZXIoKSBjb25zdAogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y29tcG9zaXRl
KCkKIHsKLSAgICBBU1NFUlQoIW1fc2V0dGluZ3MuZW5hYmxlQ29tcG9zaXRvclRocmVhZCk7Cisg
ICAgQVNTRVJUKCFDQ1RocmVhZFByb3h5OjppbXBsVGhyZWFkKCkpOwogICAgIHN0YXRpY19jYXN0
PENDU2luZ2xlVGhyZWFkUHJveHkqPihtX3Byb3h5LmdldCgpKS0+Y29tcG9zaXRlSW1tZWRpYXRl
bHkoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBhNzkzY2NhMjY1N2Y2
MTUzMzIyYWYxMjgxMjVhYTA1M2EwMTMxMTIyLi5hZTVmODc3Yjk0ODQ4NTlhOTFkZWNmMzg3MDY0
MDBhOGRiMTMyMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNzEsMTQgKzcx
LDEyIEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBDQ1NldHRpbmdzKCkKICAgICAgICAgICAg
IDogYWNjZWxlcmF0ZVBhaW50aW5nKGZhbHNlKQogICAgICAgICAgICAgLCBjb21wb3NpdGVPZmZz
Y3JlZW4oZmFsc2UpCi0gICAgICAgICAgICAsIGVuYWJsZUNvbXBvc2l0b3JUaHJlYWQoZmFsc2Up
CiAgICAgICAgICAgICAsIHNob3dGUFNDb3VudGVyKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93
UGxhdGZvcm1MYXllclRyZWUoZmFsc2UpCiAgICAgICAgICAgICAsIHJlZnJlc2hSYXRlKDApIHsg
fQogCiAgICAgYm9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgYm9vbCBjb21wb3NpdGVPZmZz
Y3JlZW47Ci0gICAgYm9vbCBlbmFibGVDb21wb3NpdG9yVGhyZWFkOwogICAgIGJvb2wgc2hvd0ZQ
U0NvdW50ZXI7CiAgICAgYm9vbCBzaG93UGxhdGZvcm1MYXllclRyZWU7CiAgICAgZG91YmxlIHJl
ZnJlc2hSYXRlOwpAQCAtMTA5LDYgKzEwNyw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDQ0xheWVyVHJlZUhvc3Q+IGNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqLCBjb25z
dCBDQ1NldHRpbmdzJik7CiAgICAgdmlydHVhbCB+Q0NMYXllclRyZWVIb3N0KCk7CiAKKyAgICAv
LyBSZXR1cm5zIHRydWUgaWYgYW55IENDTGF5ZXJUcmVlSG9zdCBpcyBhbGl2ZS4KKyAgICBzdGF0
aWMgYm9vbCBhbnlMYXllclRyZWVIb3N0SW5zdGFuY2VFeGlzdHMoKTsKKwogICAgIC8vIENDTGF5
ZXJUcmVlSG9zdCBpbnRlcmZhY2UgdG8gQ0NQcm94eS4KICAgICB2b2lkIGFuaW1hdGVBbmRMYXlv
dXQoZG91YmxlIGZyYW1lQmVnaW5UaW1lKTsKICAgICB2b2lkIGJlZ2luQ29tbWl0T25JbXBsVGhy
ZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAKaW5kZXggNjA2MmVjMDlj
MTc1ZDFhYzQ3MWZiNmU0YmQ2MTJlM2ExODcyZmUxZC4uZTRkNjAxNDUxMWJjMWM1ZGIwZTY4N2Jk
MWY2ODNmYWU4MDM2YzVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAKQEAgLTM3LDcgKzM3LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewogI2lmbmRlZiBOREVCVUcKLWJvb2wgZmFr
ZUltcGxUaHJlYWQgPSBmYWxzZTsKK2Jvb2wgaW1wbFRocmVhZElzT3ZlcnJpZGRlbiA9IGZhbHNl
OworVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRE92ZXJyaWRlblRvQmVJbXBsVGhyZWFkOwogI2Vu
ZGlmCiBDQ1RocmVhZCogc19tYWluVGhyZWFkID0gMDsKIENDVGhyZWFkKiBzX2ltcGxUaHJlYWQg
PSAwOwpAQCAtNTMsNiArNTQsMTEgQEAgQ0NUaHJlYWQqIENDUHJveHk6Om1haW5UaHJlYWQoKQog
ICAgIHJldHVybiBzX21haW5UaHJlYWQ7CiB9CiAKK2Jvb2wgQ0NQcm94eTo6aGFzSW1wbFRocmVh
ZCgpCit7CisgICAgcmV0dXJuIHNfaW1wbFRocmVhZDsKK30KKwogdm9pZCBDQ1Byb3h5OjpzZXRJ
bXBsVGhyZWFkKENDVGhyZWFkKiB0aHJlYWQpCiB7CiAgICAgc19pbXBsVGhyZWFkID0gdGhyZWFk
OwpAQCAtNjcsMTggKzczLDI0IEBAIENDVGhyZWFkKiBDQ1Byb3h5OjppbXBsVGhyZWFkKCkKIGJv
b2wgQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkKIHsKICAgICBBU1NFUlQoc19tYWluVGhyZWFkKTsK
LSAgICByZXR1cm4gIWZha2VJbXBsVGhyZWFkICYmIGN1cnJlbnRUaHJlYWQoKSA9PSBzX21haW5U
aHJlYWQtPnRocmVhZElEKCk7CisgICAgaWYgKGltcGxUaHJlYWRJc092ZXJyaWRkZW4gJiYgY3Vy
cmVudFRocmVhZCgpID09IHRocmVhZElET3ZlcnJpZGVuVG9CZUltcGxUaHJlYWQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gY3VycmVudFRocmVhZCgpID09IHNfbWFpblRocmVh
ZC0+dGhyZWFkSUQoKTsKIH0KIAogYm9vbCBDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKQogewogICAg
IFdURjo6VGhyZWFkSWRlbnRpZmllciBpbXBsVGhyZWFkSUQgPSBzX2ltcGxUaHJlYWQgPyBzX2lt
cGxUaHJlYWQtPnRocmVhZElEKCkgOiAwOwotICAgIHJldHVybiBmYWtlSW1wbFRocmVhZCB8fCBj
dXJyZW50VGhyZWFkKCkgPT0gaW1wbFRocmVhZElEOworICAgIGlmIChpbXBsVGhyZWFkSXNPdmVy
cmlkZGVuICYmIGN1cnJlbnRUaHJlYWQoKSA9PSB0aHJlYWRJRE92ZXJyaWRlblRvQmVJbXBsVGhy
ZWFkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gY3VycmVudFRocmVhZCgpID09
IGltcGxUaHJlYWRJRDsKIH0KIAotdm9pZCBDQ1Byb3h5OjpzZXRJbXBsVGhyZWFkKGJvb2wgaXNJ
bXBsVGhyZWFkKQordm9pZCBDQ1Byb3h5OjpzZXRDdXJyZW50VGhyZWFkSXNJbXBsVGhyZWFkKGJv
b2wgaXNJbXBsVGhyZWFkKQogewotICAgIGZha2VJbXBsVGhyZWFkID0gaXNJbXBsVGhyZWFkOwor
ICAgIGltcGxUaHJlYWRJc092ZXJyaWRkZW4gPSBpc0ltcGxUaHJlYWQ7CisgICAgaWYgKGlzSW1w
bFRocmVhZCkKKyAgICAgICAgdGhyZWFkSURPdmVycmlkZW5Ub0JlSW1wbFRocmVhZCA9IGN1cnJl
bnRUaHJlYWQoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggYTYyMzBlYWNkNTY4OWQ1
YmVhNDJmMGQwY2RiOWM2Mzg1MzM3ODhhYS4uYmIzNzgwMTQ3YjE2YzI2Yjc1YTdjY2QyMmFhOGI4
ZmU4NGU3NmJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIHZvaWQgc2V0TWFpblRocmVhZChDQ1RocmVhZCopOwogICAgIHN0YXRpYyBDQ1RocmVh
ZCogbWFpblRocmVhZCgpOwogCisgICAgc3RhdGljIGJvb2wgaGFzSW1wbFRocmVhZCgpOwogICAg
IHN0YXRpYyB2b2lkIHNldEltcGxUaHJlYWQoQ0NUaHJlYWQqKTsKICAgICBzdGF0aWMgQ0NUaHJl
YWQqIGltcGxUaHJlYWQoKTsKIApAQCAtOTEsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGxvc2VDb21wb3NpdG9yQ29udGV4dChpbnQgbnVtVGltZXMpID0gMDsKIAogI2lmbmRl
ZiBOREVCVUcKLSAgICBzdGF0aWMgdm9pZCBzZXRJbXBsVGhyZWFkKGJvb2wpOworICAgIHN0YXRp
YyB2b2lkIHNldEN1cnJlbnRUaHJlYWRJc0ltcGxUaHJlYWQoYm9vbCk7CiAjZW5kaWYKIAogcHJv
dGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IGVkYWI2MWYy
YzAzMjc5NmVjODQyMzViNDFiNGVmNzczYTgyMjlmMTMuLjBkNWE0YTJkOGE1MTZiMWQ3YmNmOTkx
YTk5ZTFjNzg3ODk5NDNlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgK
QEAgLTkxLDEzICs5MSwxMyBAQCBwdWJsaWM6CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFk
KCkKICAgICB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICBDQ1Byb3h5OjpzZXRJbXBs
VGhyZWFkKHRydWUpOworICAgICAgICBDQ1Byb3h5OjpzZXRDdXJyZW50VGhyZWFkSXNJbXBsVGhy
ZWFkKHRydWUpOwogI2VuZGlmCiAgICAgfQogICAgIH5EZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQo
KQogICAgIHsKICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgICAgIENDUHJveHk6OnNldEltcGxU
aHJlYWQoZmFsc2UpOworICAgICAgICBDQ1Byb3h5OjpzZXRDdXJyZW50VGhyZWFkSXNJbXBsVGhy
ZWFkKGZhbHNlKTsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJDb21wb3NpdG9yLmgKaW5kZXggNzliOGJjNTgxMTJiNzUwODFmNjQ1ZjY4NjNk
YzJkMjdjZjNhMWQ3Ny4uZjExZGFiNmVkYzk2Yjc1ZWM2M2E5YzhlMDM1NGQ0Yjc2M2M0ODAxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3IuaApAQCAt
MzQsMTIgKzM0LDIyIEBAIGNsYXNzIFdlYkNvbXBvc2l0b3JDbGllbnQ7CiBjbGFzcyBXZWJJbnB1
dEV2ZW50OwogY2xhc3MgV2ViVGhyZWFkOwogCi0vLyBUaGlzIHJlcHJlc2VudHMgdGhlIGNvbXBv
c2l0b3IgYXNzb2NpYXRlZCB3aXRoIGEgV2ViV2lkZ2V0LiBBbGwgY2FsbHMgdG8gdGhlIFdlYkNv
bXBvc2l0b3IgbXVzdAotLy8gYmUgbWFkZSBmcm9tIHRoZSBjb21wb3NpdG9yIHRocmVhZC4KKyNk
ZWZpbmUgV0VCQ09NUE9TSVRPUl9IQVNfSU5JVElBTElaRQorCisvLyBUaGlzIHJlcHJlc2VudHMg
dGhlIGNvbXBvc2l0b3IgYXNzb2NpYXRlZCB3aXRoIGEgV2ViV2lkZ2V0LiBBbGwgY2FsbHMgdG8g
dGhlCisvLyBXZWJDb21wb3NpdG9yIG11c3QgYmUgbWFkZSBmcm9tIHRoZSBjb21wb3NpdG9yIHRo
cmVhZC4KIGNsYXNzIFdlYkNvbXBvc2l0b3IgewogcHVibGljOgotICAgIC8vIFRoaXMgbXVzdCBi
ZSBjYWxsZWQgb25jZSB3aXRoIGEgbm9uLW51bGwgV2ViVGhyZWFkIGJlZm9yZSBhbnkgY29tcG9z
aXRvcnMgYXR0ZW1wdCB0byBpbml0aWFsaXplLgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZv
aWQgc2V0VGhyZWFkKFdlYlRocmVhZCopOworICAgIC8vIEluaXRpYWxpemVzIHRoZSBjb21wb3Np
dG9yLiBUaHJlYWRlZCBjb21wb3NpdGluZyBpcyBlbmFibGVkIGJ5IHBhc3NpbmcgaW4KKyAgICAv
LyBhIG5vbi1udWxsIFdlYlRocmVhZC4gTm8gY29tcG9zaXRvciBjbGFzc2VzIG9yIG1ldGhvZHMg
c2hvdWxkIGJlIHVzZWQKKyAgICAvLyBwcmlvciB0byBjYWxsaW5nIGluaXRpYWxpemUuCisgICAg
V0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBpbml0aWFsaXplKFdlYlRocmVhZCopOworCisgICAg
Ly8gU2h1dHMgZG93biB0aGUgY29tcG9zaXRvci4gVGhpcyBtdXN0IGJlIGNhbGxlZCB3aGVuIGFs
bCBjb21wb3NpdG9yIGRhdGEKKyAgICAvLyB0eXBlcyBoYXZlIGJlZW4gZGVsZXRlZC4gTm8gY29t
cG9zaXRvciBjbGFzc2VzIG9yIG1ldGhvZHMgc2hvdWxkIGJlIHVzZWQKKyAgICAvLyBhZnRlciBz
aHV0ZG93bi4KKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNodXRkb3duKCk7CisKICAg
ICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJDb21wb3NpdG9yKiBmcm9tSWRlbnRpZmllcihpbnQp
OwogCiAgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChXZWJDb21wb3NpdG9yQ2xpZW50KikgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVl
Vmlldy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5o
CmluZGV4IGNhMDhjZWQwNzRiOTQ5MzI0YmI5Y2MwNzQ4MTNkMmMyMWJmZTcxZGUuLmM1MmIzNzg2
ZWUxOWQzZjgxNDVmMTI2ZTBlYjg2NmZmOWQ5ZDc3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKQEAgLTQ1LDEyICs0NSwxMCBAQCBw
dWJsaWM6CiAgICAgc3RydWN0IFNldHRpbmdzIHsKICAgICAgICAgU2V0dGluZ3MoKQogICAgICAg
ICAgICAgOiBhY2NlbGVyYXRlUGFpbnRpbmcoZmFsc2UpCi0gICAgICAgICAgICAsIGNvbXBvc2l0
ZU9mZnNjcmVlbihmYWxzZSkKLSAgICAgICAgICAgICwgZW5hYmxlQ29tcG9zaXRvclRocmVhZChm
YWxzZSkgeyB9CisgICAgICAgICAgICAsIGNvbXBvc2l0ZU9mZnNjcmVlbihmYWxzZSkgeyB9CiAK
ICAgICAgICAgYm9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgICAgIGJvb2wgY29tcG9zaXRl
T2Zmc2NyZWVuOwotICAgICAgICBib29sIGVuYWJsZUNvbXBvc2l0b3JUaHJlYWQ7CiAjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCiAgICAgICAgIG9wZXJhdG9yIFdlYkNvcmU6OkNDU2V0dGluZ3Mo
KSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRp
bmdzLmgKaW5kZXggMTIzNmIzMjdkMDY0OTAzNmQzZmY5YzgzNTEyMGNkNzAyYTFmNGMyNy4uMWU3
ZDY5N2JlZDY5NmUzNWU0OTMwNzE5MThmOGJhNDUzNjkyNTE0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC0xMTcsOCArMTE3LDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXRMZWdhY3lBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZChi
b29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE1pbmltdW1BY2NlbGVyYXRlZDJkQ2FudmFz
U2l6ZShpbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5h
YmxlZChib29sKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFVzZVRocmVhZGVkQ29tcG9zaXRv
cihib29sKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHVzZVRocmVhZGVkQ29tcG9zaXRvcigpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVtb3J5SW5mb0VuYWJsZWQoYm9vbCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQoYm9vbCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChi
b29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21w
b3NpdG9ySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9y
SW1wbC5jcHAKaW5kZXggODFkZWUyZjFiMjVhODc1YjZkZTE4YTI1OWU3MmE1ODBhYzdkMGE5My4u
NDYxMzRlMDRlZTUxOGE5YTFiMGU2YWVjMDRjNDhkMWU0ZjRlZDVlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcApAQCAtMjgsNiArMjgs
OCBAQAogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JJbXBsLmgiCiAKICNpbmNsdWRlICJDQ1RocmVh
ZEltcGwuaCIKKyNpbmNsdWRlICJXZWJLaXQuaCIKKyNpbmNsdWRlICJXZWJLaXRQbGF0Zm9ybVN1
cHBvcnQuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
SW5wdXRFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDU2Nyb2xsQ29udHJvbGxlci5oIgpAQCAtNDcs
MTIgKzQ5LDQ0IEBAIFBhc3NPd25QdHI8Q0NJbnB1dEhhbmRsZXI+IENDSW5wdXRIYW5kbGVyOjpj
cmVhdGUoQ0NTY3JvbGxDb250cm9sbGVyKiBzY3JvbGxDb250CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi12b2lkIFdlYkNvbXBvc2l0b3I6OnNldFRocmVhZChXZWJUaHJlYWQqIGNvbXBvc2l0b3JU
aHJlYWQpCitib29sIFdlYkNvbXBvc2l0b3JJbXBsOjpzX2luaXRpYWxpemVkID0gZmFsc2U7CitP
d25QdHI8Q0NUaHJlYWQ+IFdlYkNvbXBvc2l0b3JJbXBsOjpzX21haW5UaHJlYWQ7CitPd25QdHI8
Q0NUaHJlYWQ+IFdlYkNvbXBvc2l0b3JJbXBsOjpzX2ltcGxUaHJlYWQ7CisKK3ZvaWQgV2ViQ29t
cG9zaXRvcjo6aW5pdGlhbGl6ZShXZWJUaHJlYWQqIGltcGxUaHJlYWQpCit7CisgICAgV2ViQ29t
cG9zaXRvckltcGw6OmluaXRpYWxpemUoaW1wbFRocmVhZCk7Cit9Cit2b2lkIFdlYkNvbXBvc2l0
b3I6OnNodXRkb3duKCkKIHsKLSAgICBBU1NFUlQoY29tcG9zaXRvclRocmVhZCk7Ci0gICAgQ0NU
aHJlYWRQcm94eTo6c2V0SW1wbFRocmVhZChDQ1RocmVhZEltcGw6OmNyZWF0ZShjb21wb3NpdG9y
VGhyZWFkKS5sZWFrUHRyKCkpOworICAgIFdlYkNvbXBvc2l0b3JJbXBsOjpzaHV0ZG93bigpOwog
fQogCit2b2lkIFdlYkNvbXBvc2l0b3JJbXBsOjppbml0aWFsaXplKFdlYlRocmVhZCogaW1wbFRo
cmVhZCkKK3sKKyAgICBBU1NFUlQoIXNfaW5pdGlhbGl6ZWQpOworICAgIHNfaW5pdGlhbGl6ZWQg
PSB0cnVlOworCisgICAgc19tYWluVGhyZWFkID0gQ0NUaHJlYWRJbXBsOjpjcmVhdGUod2ViS2l0
UGxhdGZvcm1TdXBwb3J0KCktPmN1cnJlbnRUaHJlYWQoKSk7CisgICAgQ0NQcm94eTo6c2V0TWFp
blRocmVhZChzX21haW5UaHJlYWQuZ2V0KCkpOworICAgIGlmIChpbXBsVGhyZWFkKSB7CisgICAg
ICAgIHNfaW1wbFRocmVhZCA9IENDVGhyZWFkSW1wbDo6Y3JlYXRlKGltcGxUaHJlYWQpOworICAg
ICAgICBDQ1Byb3h5OjpzZXRJbXBsVGhyZWFkKHNfaW1wbFRocmVhZC5nZXQoKSk7CisgICAgfSBl
bHNlCisgICAgICAgIENDUHJveHk6OnNldEltcGxUaHJlYWQoMCk7Cit9CisKK3ZvaWQgV2ViQ29t
cG9zaXRvckltcGw6OnNodXRkb3duKCkKK3sKKyAgICBBU1NFUlQoc19pbml0aWFsaXplZCk7Cisg
ICAgQVNTRVJUKCFDQ0xheWVyVHJlZUhvc3Q6OmFueUxheWVyVHJlZUhvc3RJbnN0YW5jZUV4aXN0
cygpKTsKKworICAgIHNfaW1wbFRocmVhZC5jbGVhcigpOworICAgIHNfbWFpblRocmVhZC5jbGVh
cigpOworICAgIENDUHJveHk6OnNldEltcGxUaHJlYWQoMCk7CisgICAgQ0NQcm94eTo6c2V0TWFp
blRocmVhZCgwKTsKKyAgICBzX2luaXRpYWxpemVkID0gZmFsc2U7Cit9CiAKIC8vIFRoZXNlIHN0
YXRpY3MgbWF5IG9ubHkgYmUgYWNjZXNzZWQgZnJvbSB0aGUgY29tcG9zaXRvciB0aHJlYWQuCiBp
bnQgV2ViQ29tcG9zaXRvckltcGw6OnNfbmV4dEF2YWlsYWJsZUlkZW50aWZpZXIgPSAxOwpAQCAt
NjAsMTIgKzk0LDEyIEBAIEhhc2hTZXQ8V2ViQ29tcG9zaXRvckltcGwqPiogV2ViQ29tcG9zaXRv
ckltcGw6OnNfY29tcG9zaXRvcnMgPSAwOwogCiBXZWJDb21wb3NpdG9yKiBXZWJDb21wb3NpdG9y
Ojpmcm9tSWRlbnRpZmllcihpbnQgaWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQoQ0NQcm94eTo6
aXNJbXBsVGhyZWFkKCkpOwogICAgIHJldHVybiBXZWJDb21wb3NpdG9ySW1wbDo6ZnJvbUlkZW50
aWZpZXIoaWRlbnRpZmllcik7CiB9CiAKIFdlYkNvbXBvc2l0b3IqIFdlYkNvbXBvc2l0b3JJbXBs
Ojpmcm9tSWRlbnRpZmllcihpbnQgaWRlbnRpZmllcikKIHsKKyAgICBBU1NFUlQoc19pbml0aWFs
aXplZCk7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKIAogICAgIGlmICgh
c19jb21wb3NpdG9ycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkNvbXBvc2l0b3JJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3Np
dG9ySW1wbC5oCmluZGV4IGY0ZTRlMjFkOTQxNTk2ZWJkMmM4NDFkMWFmMTJhM2ZiOTZlMjI1Yzgu
LjkxMTgyYzFmYzcyZmY0ZGVjZmNlZDBiOTJjMmEwMDliZGQ1OWIyYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuaApAQCAtMzEsNyArMzEsNyBA
QAogI2luY2x1ZGUgImNjL0NDSW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBN
dXRleDsKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgTXV0ZXg7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIENDU2Nyb2xsQ29udHJvbGxlcjsKK2NsYXNzIENDVGhyZWFkOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTY1LDEyICs2NiwyMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBp
bnQgaWRlbnRpZmllcigpIGNvbnN0OwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBXZWJD
b21wb3NpdG9yOworICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoV2ViVGhyZWFkKiBpbXBsVGhy
ZWFkKTsKKyAgICBzdGF0aWMgdm9pZCBzaHV0ZG93bigpOworCiAgICAgZXhwbGljaXQgV2ViQ29t
cG9zaXRvckltcGwoV2ViQ29yZTo6Q0NTY3JvbGxDb250cm9sbGVyKik7CiAKICAgICBXZWJDb21w
b3NpdG9yQ2xpZW50KiBtX2NsaWVudDsKICAgICBpbnQgbV9pZGVudGlmaWVyOwogICAgIFdlYkNv
cmU6OkNDU2Nyb2xsQ29udHJvbGxlciogbV9zY3JvbGxDb250cm9sbGVyOwogCisgICAgc3RhdGlj
IGJvb2wgc19pbml0aWFsaXplZDsKKyAgICBzdGF0aWMgT3duUHRyPFdlYkNvcmU6OkNDVGhyZWFk
PiBzX21haW5UaHJlYWQ7CisgICAgc3RhdGljIE93blB0cjxXZWJDb3JlOjpDQ1RocmVhZD4gc19p
bXBsVGhyZWFkOworCiAgICAgc3RhdGljIGludCBzX25leHRBdmFpbGFibGVJZGVudGlmaWVyOwog
ICAgIHN0YXRpYyBIYXNoU2V0PFdlYkNvbXBvc2l0b3JJbXBsKj4qIHNfY29tcG9zaXRvcnM7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKaW5kZXggN2JjZDljZjIzOWE1MWNk
NTJiNDI5N2Y1ZWRjMjAwODc0OWEwNmUxZi4uNjJiNDE4MDhkNzA1MzE4ZTA1NTA5YzcyZTk2M2Y2
ZmY4MjJmMWNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCkBAIC0zMSw4
ICszMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAKLSNp
bmNsdWRlICJDQ1RocmVhZEltcGwuaCIKLSNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgiCkBAIC05OCwxNSArOTYsMTEgQEAgdm9pZCBpbml0aWFsaXplV2l0aG91dFY4
KFdlYktpdFBsYXRmb3JtU3VwcG9ydCogd2ViS2l0UGxhdGZvcm1TdXBwb3J0KQogICAgIC8vIHRo
ZSBpbml0aWFsaXphdGlvbiB0aHJlYWQtc2FmZSwgYnV0IGdpdmVuIHRoYXQgc28gbWFueSBjb2Rl
IHBhdGhzIHVzZQogICAgIC8vIHRoaXMsIGluaXRpYWxpemluZyB0aGlzIGxhemlseSBwcm9iYWJs
eSBkb2Vzbid0IGJ1eSB1cyBtdWNoLgogICAgIFdlYkNvcmU6OlVURjhFbmNvZGluZygpOwotCi0g
ICAgV2ViQ29yZTo6Q0NQcm94eTo6c2V0TWFpblRocmVhZChDQ1RocmVhZEltcGw6OmNyZWF0ZSh3
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQtPmN1cnJlbnRUaHJlYWQoKSkubGVha1B0cigpKTsKIH0KIAog
CiB2b2lkIHNodXRkb3duKCkKIHsKLSAgICBkZWxldGUgV2ViQ29yZTo6Q0NQcm94eTo6bWFpblRo
cmVhZCgpOwotICAgIFdlYkNvcmU6OkNDUHJveHk6OnNldE1haW5UaHJlYWQoMCk7CiAgICAgc193
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQgPSAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmluZGV4IGM3NjhlMWE2NjI5NzdhZDYxYjQxMjVh
OTU4NDMyNmQwYTU5ZjU3NWIuLjZiODlhZTkwOTI4ZDE0NWExMzNiOWViNDJiMWQ4MDY3YjZlZjc3
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcu
Y3BwCkBAIC0zOSw3ICszOSw2IEBAIFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpvcGVyYXRv
ciBDQ1NldHRpbmdzKCkgY29uc3QKICAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwogICAgIHNldHRp
bmdzLmFjY2VsZXJhdGVQYWludGluZyA9IGFjY2VsZXJhdGVQYWludGluZzsKICAgICBzZXR0aW5n
cy5jb21wb3NpdGVPZmZzY3JlZW4gPSBjb21wb3NpdGVPZmZzY3JlZW47Ci0gICAgc2V0dGluZ3Mu
ZW5hYmxlQ29tcG9zaXRvclRocmVhZCA9IGVuYWJsZUNvbXBvc2l0b3JUaHJlYWQ7CiAKICAgICAv
LyBGSVhNRTogc2hvd0ZQU0NvdW50ZXIgLyBzaG93UGxhdGZvcm1MYXllclRyZWUgYXJlbid0IHN1
cHBvcnRlZCBjdXJyZW50bHkuCiAgICAgc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgPSBmYWxzZTsK
QEAgLTY5LDcgKzY4LDcgQEAgYm9vbCBXZWJMYXllclRyZWVWaWV3OjplcXVhbHMoY29uc3QgV2Vi
TGF5ZXJUcmVlVmlldyYgbikgY29uc3QKIAogdm9pZCBXZWJMYXllclRyZWVWaWV3Ojpjb21wb3Np
dGUoKQogewotICAgIGlmIChtX3ByaXZhdGUtPnNldHRpbmdzKCkuZW5hYmxlQ29tcG9zaXRvclRo
cmVhZCkKKyAgICBpZiAoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKQogICAgICAgICBtX3ByaXZh
dGUtPnNldE5lZWRzQ29tbWl0KCk7CiAgICAgZWxzZQogICAgICAgICBtX3ByaXZhdGUtPmNvbXBv
c2l0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVl
Vmlld0ltcGwuY3BwCmluZGV4IDhjODY4NGI2ZmNhOGM5ZjMwZDFiNzcxNjBmMDI1OTM4MjRiYmI5
NTAuLmE2ZjFkMGZhZjViYmY3MWU3NGFhMzkwZTQwYTA0ZWUyYmYzZjVlOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJXZWJMYXllclRyZWVWaWV3Q2xpZW50LmgiCiAjaW5j
bHVkZSAiV2ViU2l6ZS5oIgogI2luY2x1ZGUgIldlYlRocmVhZC5oIgorI2luY2x1ZGUgImNjL0ND
VGhyZWFkUHJveHkuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTkyLDcgKzkz
LDcgQEAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gV2ViTGF5ZXJUcmVlVmlld0ltcGw6
OmNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QKICAgICBhdHRyaWJ1dGVzLnByZXNlcnZlRHJh
d2luZ0J1ZmZlciA9IGZhbHNlOwogCiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxl
IHN0eWxlID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93Owot
ICAgIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6VGhyZWFkVXNhZ2UgdXNhZ2UgPSBzZXR0aW5n
cygpLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQgPyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkZv
clVzZU9uQW5vdGhlclRocmVhZCA6IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Rm9yVXNlT25U
aGlzVGhyZWFkOworICAgIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6VGhyZWFkVXNhZ2UgdXNh
Z2UgPSBDQ1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkgPyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OkZvclVzZU9uQW5vdGhlclRocmVhZCA6IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Rm9yVXNl
T25UaGlzVGhyZWFkOwogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0
ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KHdlYkNvbnRleHQucmVsZWFzZSgpLCBhdHRy
aWJ1dGVzLCAwLCBzdHlsZSwgdXNhZ2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCAyNDJhZWQyMjFiYTc1ZDBiMzQwOWQ2NzI3
ZGY0NDM5ODc0ZTYxYWEwLi4yNzlhMjk4NDM3Y2ZkOTMyYWE5ZWY5OGFmOGFhZGRlOTllNDY1OGZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAK
QEAgLTUwLDcgKzUwLDYgQEAgV2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0dGlu
Z3MqIHNldHRpbmdzKQogICAgICwgbV9jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKGZhbHNlKQog
ICAgICwgbV9zaG93RlBTQ291bnRlcihmYWxzZSkKICAgICAsIG1fc2hvd1BsYXRmb3JtTGF5ZXJU
cmVlKGZhbHNlKQotICAgICwgbV91c2VUaHJlYWRlZENvbXBvc2l0b3IoZmFsc2UpCiB7CiAgICAg
QVNTRVJUKHNldHRpbmdzKTsKIH0KQEAgLTM3OSwxMSArMzc4LDYgQEAgdm9pZCBXZWJTZXR0aW5n
c0ltcGw6OnNldE1pbmltdW1BY2NlbGVyYXRlZDJkQ2FudmFzU2l6ZShpbnQgbnVtUGl4ZWxzKQog
ICAgIG1fc2V0dGluZ3MtPnNldE1pbmltdW1BY2NlbGVyYXRlZDJkQ2FudmFzU2l6ZShudW1QaXhl
bHMpOwogfQogCi12b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0VXNlVGhyZWFkZWRDb21wb3NpdG9y
KGJvb2wgdXNlVGhyZWFkZWRDb21wb3NpdG9yKQotewotICAgIG1fdXNlVGhyZWFkZWRDb21wb3Np
dG9yID0gdXNlVGhyZWFkZWRDb21wb3NpdG9yOwotfQotCiB2b2lkIFdlYlNldHRpbmdzSW1wbDo6
c2V0TWVtb3J5SW5mb0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIG1fc2V0dGluZ3MtPnNl
dE1lbW9yeUluZm9FbmFibGVkKGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCBmYTM0YWE4OGU0MTAxNmMxODk4ZDUyNTAyYWFkMGUz
NTA0Mjc3MjliLi4zZGIwNTdkOTc0NmY4Zjc1ZGIxMDE2YzU4Nzc5MDRiMjI3ZDQ1MzU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApAQCAtMTA5LDgg
KzEwOSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGVnYWN5QWNjZWxlcmF0ZWQy
ZENhbnZhc0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE1pbmltdW1BY2NlbGVy
YXRlZDJkQ2FudmFzU2l6ZShpbnQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZERy
YXdpbmdFbmFibGVkKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VUaHJlYWRlZENvbXBv
c2l0b3IoYm9vbCk7Ci0gICAgdmlydHVhbCBib29sIHVzZVRocmVhZGVkQ29tcG9zaXRvcigpIGNv
bnN0IHsgcmV0dXJuIG1fdXNlVGhyZWFkZWRDb21wb3NpdG9yOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRIeXBlcmxp
bmtBdWRpdGluZ0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEFzeW5jaHJvbm91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpOwpAQCAtMTMxLDcgKzEyOSw2IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2NvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQ7CiAgICAgYm9vbCBtX3Nob3dG
UFNDb3VudGVyOwogICAgIGJvb2wgbV9zaG93UGxhdGZvcm1MYXllclRyZWU7Ci0gICAgYm9vbCBt
X3VzZVRocmVhZGVkQ29tcG9zaXRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGIzM2IxMGQ4Mzkw
YzZiYWQ2YmYxNjFjMTFjYjNhYTM1ZjBlYjgxMTAuLmQ4ZDNjMjg4ZmIzNzUyM2ZkMjZiYjM2Y2M5
NjUxMTU4MDc5YjBhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQAogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1
ZGUgIldlYlZlY3Rvci5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKLSNpbmNsdWRlICJj
Yy9DQ0hlYWRzVXBEaXNwbGF5LmgiCisjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUg
PHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgpAQCAtMTEzMywxMiArMTEzMywxMiBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjphbmltYXRlKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKICAgICBpZiAod2ViZnJhbWUpIHsK
ICAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gd2ViZnJhbWUtPmZyYW1lVmlldygpOwogICAgICAg
ICBpZiAodmlldykgewotICAgICAgICAgICAgaWYgKCFzZXR0aW5ncygpLT51c2VUaHJlYWRlZENv
bXBvc2l0b3IoKSAmJiBtX2xheWVyVHJlZUhvc3QpCisgICAgICAgICAgICBpZiAoIUNDUHJveHk6
Omhhc0ltcGxUaHJlYWQoKSAmJiBtX2xheWVyVHJlZUhvc3QpCiAgICAgICAgICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5zZXRBbmltYXRpbmcodHJ1ZSk7CiAKICAgICAgICAgICAgIHZpZXctPnNl
cnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoY29udmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcChmcmFt
ZUJlZ2luVGltZSkpOwogCi0gICAgICAgICAgICBpZiAoIXNldHRpbmdzKCktPnVzZVRocmVhZGVk
Q29tcG9zaXRvcigpICYmIG1fbGF5ZXJUcmVlSG9zdCkKKyAgICAgICAgICAgIGlmICghQ0NQcm94
eTo6aGFzSW1wbFRocmVhZCgpICYmIG1fbGF5ZXJUcmVlSG9zdCkKICAgICAgICAgICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnNldEFuaW1hdGluZyhmYWxzZSk7CiAgICAgICAgIH0KICAgICB9CkBA
IC0xMjQwLDcgKzEyNDAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp0aGVtZUNoYW5nZWQoKQogdm9p
ZCBXZWJWaWV3SW1wbDo6Y29tcG9zaXRlKGJvb2wpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQotICAgIGlmIChzZXR0aW5ncygpLT51c2VUaHJlYWRlZENvbXBvc2l0b3IoKSkK
KyAgICBpZiAoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKQogICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnNldE5lZWRzUmVkcmF3KCk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVChpc0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSk7CkBAIC0yNzY0LDcgKzI3NjQsNyBAQCBXZWJDb3Jl
OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3QqIFdlYlZpZXdJbXBsOjpub25Db21wb3NpdGVkQ29u
dGVudEhvc3QoKQogdm9pZCBXZWJWaWV3SW1wbDo6c2NoZWR1bGVBbmltYXRpb24oKQogewogICAg
IGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkgewotICAgICAgICBpZiAoc2V0
dGluZ3MoKS0+dXNlVGhyZWFkZWRDb21wb3NpdG9yKCkpIHsKKyAgICAgICAgaWYgKENDUHJveHk6
Omhhc0ltcGxUaHJlYWQoKSkgewogICAgICAgICAgICAgQVNTRVJUKG1fbGF5ZXJUcmVlSG9zdCk7
CiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQW5pbWF0ZSgpOwogICAgICAg
ICB9IGVsc2UKQEAgLTI4MzUsNyArMjgzNSw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgV2ViQ29yZTo6
Q0NTZXR0aW5ncyBjY1NldHRpbmdzOwogICAgICAgICBjY1NldHRpbmdzLmFjY2VsZXJhdGVQYWlu
dGluZyA9IHBhZ2UoKS0+c2V0dGluZ3MoKS0+YWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCgpOwog
ICAgICAgICBjY1NldHRpbmdzLmNvbXBvc2l0ZU9mZnNjcmVlbiA9IHNldHRpbmdzKCktPmNvbXBv
c2l0ZVRvVGV4dHVyZUVuYWJsZWQoKTsKLSAgICAgICAgY2NTZXR0aW5ncy5lbmFibGVDb21wb3Np
dG9yVGhyZWFkID0gc2V0dGluZ3MoKS0+dXNlVGhyZWFkZWRDb21wb3NpdG9yKCk7CiAgICAgICAg
IGNjU2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgPSBzZXR0aW5ncygpLT5zaG93RlBTQ291bnRlcigp
OwogICAgICAgICBjY1NldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSA9IHNldHRpbmdzKCkt
PnNob3dQbGF0Zm9ybUxheWVyVHJlZSgpOwogICAgICAgICBjY1NldHRpbmdzLnJlZnJlc2hSYXRl
ID0gc2NyZWVuUmVmcmVzaFJhdGUocGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpKTsKQEAgLTI4
NzIsNyArMjg3MSw3IEBAIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IFdlYlZpZXdJbXBs
OjpjcmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCkKIHsKICAgICBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IGNvbnRleHQgPSBtX3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhpY3NDb250ZXh0M0Qu
cmVsZWFzZSgpOwogICAgIGlmICghY29udGV4dCkgewotICAgICAgICBpZiAoc2V0dGluZ3MoKS0+
dXNlVGhyZWFkZWRDb21wb3NpdG9yKCkpCisgICAgICAgIGlmIChDQ1Byb3h5OjpoYXNJbXBsVGhy
ZWFkKCkpCiAgICAgICAgICAgICBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpj
cmVhdGVHcmFwaGljc0NvbnRleHRGb3JBbm90aGVyVGhyZWFkKGdldENvbXBvc2l0b3JDb250ZXh0
QXR0cmlidXRlcygpLCBtX3BhZ2UtPmNocm9tZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVy
RGlyZWN0bHlUb0hvc3RXaW5kb3cpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb250ZXh0
ID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShnZXRDb21wb3NpdG9yQ29udGV4dEF0dHJpYnV0
ZXMoKSwgbV9wYWdlLT5jaHJvbWUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5
VG9Ib3N0V2luZG93KTsKQEAgLTI5NDAsNyArMjkzOSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRp
ZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2VzcykKIAogdm9pZCBXZWJWaWV3SW1w
bDo6c2NoZWR1bGVDb21wb3NpdGUoKQogewotICAgIEFTU0VSVCghc2V0dGluZ3MoKS0+dXNlVGhy
ZWFkZWRDb21wb3NpdG9yKCkpOworICAgIEFTU0VSVCghQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgp
KTsKICAgICBtX2NsaWVudC0+c2NoZWR1bGVDb21wb3NpdGUoKTsKIH0KIApAQCAtMjk3Miw3ICsy
OTcxLDcgQEAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIFdlYlZpZXdJbXBsOjpncmFwaGljc0NvbnRl
eHQzRCgpCiAgICAgICAgICAgICBpZiAod2ViQ29udGV4dCAmJiAhd2ViQ29udGV4dC0+aXNDb250
ZXh0TG9zdCgpKQogICAgICAgICAgICAgICAgIHJldHVybiB3ZWJDb250ZXh0OwogICAgICAgICB9
Ci0gICAgICAgIGlmIChzZXR0aW5ncygpLT51c2VUaHJlYWRlZENvbXBvc2l0b3IoKSkKKyAgICAg
ICAgaWYgKENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSkKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5
T25zY3JlZW5HcmFwaGljc0NvbnRleHQzRCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0Rm9yQW5vdGhlclRocmVhZChnZXRDb21wb3NpdG9yQ29udGV4dEF0
dHJpYnV0ZXMoKSwgbV9wYWdlLT5jaHJvbWUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRp
cmVjdGx5VG9Ib3N0V2luZG93KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV90ZW1wb3Jh
cnlPbnNjcmVlbkdyYXBoaWNzQ29udGV4dDNEID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShn
ZXRDb21wb3NpdG9yQ29udGV4dEF0dHJpYnV0ZXMoKSwgbV9wYWdlLT5jaHJvbWUoKSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKQEAgLTI5ODMsNyArMjk4
Miw2IEBAIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBXZWJWaWV3SW1wbDo6Z3JhcGhpY3NDb250ZXh0
M0QoKQogICAgIHJldHVybiAwOwogfQogCi0KIHZvaWQgV2ViVmlld0ltcGw6OnNldFZpc2liaWxp
dHlTdGF0ZShXZWJQYWdlVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzSW5pdGlhbFN0YXRlKSB7CiAgICAg
aWYgKCFwYWdlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCA0YTQxNzk2NDc5MTNiOGRmMGE2N2Y5M2UzMjg2OWY0
YzNkM2U3Y2Y2Li5lMjIwODgwODVkN2VkMGQ2NTAyOTVjNjk1Nzk4MDA5ZjcyZTdiZWUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVz
dC5jcHAKQEAgLTI0OSwxNSArMjQ5LDcgQEAgcHJvdGVjdGVkOgogICAgIENDTGF5ZXJUcmVlSG9z
dFRlc3QoKQogICAgICAgICA6IG1fYmVnaW5uaW5nKGZhbHNlKQogICAgICAgICAsIG1fZW5kV2hl
bkJlZ2luUmV0dXJucyhmYWxzZSkKLSAgICAgICAgLCBtX3RpbWVkT3V0KGZhbHNlKQotICAgIHsK
LSAgICAgICAgbV93ZWJUaHJlYWQgPSBhZG9wdFB0cih3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+
Y3JlYXRlVGhyZWFkKCJDQ0xheWVyVHJlZUhvc3RUZXN0IikpOwotICAgICAgICBBU1NFUlQoQ0NQ
cm94eTo6bWFpblRocmVhZCgpKTsKLQotICAgICAgICBXZWJDb21wb3NpdG9yOjpzZXRUaHJlYWQo
bV93ZWJUaHJlYWQuZ2V0KCkpOwotICAgICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFk
KCkpOwotICAgICAgICBtX21haW5UaHJlYWRQcm94eSA9IENDU2NvcGVkVGhyZWFkUHJveHk6OmNy
ZWF0ZShDQ1Byb3h5OjptYWluVGhyZWFkKCkpOwotICAgIH0KKyAgICAgICAgLCBtX3RpbWVkT3V0
KGZhbHNlKSB7IH0KIAogICAgIHZvaWQgZG9CZWdpblRlc3QoKTsKIApAQCAtMjcxLDkgKzI2Myw2
IEBAIHByb3RlY3RlZDoKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAg
d2Via2l0X3N1cHBvcnQ6OlF1aXRNZXNzYWdlTG9vcCgpOwogICAgICAgICB3ZWJraXRfc3VwcG9y
dDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7Ci0gICAgICAgIENDTGF5ZXJUcmVlSG9zdFRlc3Qq
IHRlc3QgPSBzdGF0aWNfY2FzdDxDQ0xheWVyVHJlZUhvc3RUZXN0Kj4oc2VsZik7Ci0gICAgICAg
IEFTU0VSVF9UUlVFKHRlc3QpOwotICAgICAgICB0ZXN0LT5tX2xheWVyVHJlZUhvc3QuY2xlYXIo
KTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFNldE5lZWRzQW5pbWF0ZSh2b2lk
KiBzZWxmKQpAQCAtMzYyLDE0ICszNTEsMjcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2
b2lkIHJ1blRlc3QoYm9vbCB0aHJlYWRlZCkKICAgICB7Ci0gICAgICAgIG1fc2V0dGluZ3MuZW5h
YmxlQ29tcG9zaXRvclRocmVhZCA9IHRocmVhZGVkOwogICAgICAgICBtX3NldHRpbmdzLnJlZnJl
c2hSYXRlID0gMTAwLjA7CisKKyAgICAgICAgaWYgKHRocmVhZGVkKSB7CisgICAgICAgICAgICBt
X3dlYlRocmVhZCA9IGFkb3B0UHRyKHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jcmVhdGVUaHJl
YWQoIkNDTGF5ZXJUcmVlSG9zdFRlc3QiKSk7CisgICAgICAgICAgICBXZWJDb21wb3NpdG9yOjpp
bml0aWFsaXplKG1fd2ViVGhyZWFkLmdldCgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOworCisgICAgICAgIEFTU0VSVChDQ1Byb3h5
Ojppc01haW5UaHJlYWQoKSk7CisgICAgICAgIG1fbWFpblRocmVhZFByb3h5ID0gQ0NTY29wZWRU
aHJlYWRQcm94eTo6Y3JlYXRlKENDUHJveHk6Om1haW5UaHJlYWQoKSk7CisKICAgICAgICAgd2Vi
a2l0X3N1cHBvcnQ6OlBvc3REZWxheWVkVGFzayhDQ0xheWVyVHJlZUhvc3RUZXN0OjpvbkJlZ2lu
VGVzdCwgc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMpLCAwKTsKICAgICAgICAgbV90aW1lb3V0VGFz
ayA9IG5ldyBUaW1lb3V0VGFzayh0aGlzKTsKICAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlBvc3RE
ZWxheWVkVGFzayhtX3RpbWVvdXRUYXNrLCA1MDAwKTsgLy8gd2Via2l0X3N1cHBvcnQgdGFrZXMg
b3duZXJzaGlwIG9mIHRoZSB0YXNrCiAgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5NZXNzYWdl
TG9vcCgpOwogICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7
CiAKKyAgICAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCAmJiBtX2xheWVyVHJlZUhvc3QtPnJvb3RM
YXllcigpKQorICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIoKS0+c2V0TGF5
ZXJUcmVlSG9zdCgwKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LmNsZWFyKCk7CisKICAgICAg
ICAgaWYgKG1fdGltZW91dFRhc2spCiAgICAgICAgICAgICBtX3RpbWVvdXRUYXNrLT5jbGVhclRl
c3QoKTsKIApAQCAtMzc3LDEwICszNzksMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICBtX2NsaWVu
dC5jbGVhcigpOwogICAgICAgICBpZiAobV90aW1lZE91dCkgewogICAgICAgICAgICAgRkFJTCgp
IDw8ICJUZXN0IHRpbWVkIG91dCI7CisgICAgICAgICAgICBXZWJDb21wb3NpdG9yOjpzaHV0ZG93
bigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1fcm9vdExheWVy
LT5zZXRMYXllclRyZWVIb3N0KDApOwogICAgICAgICBhZnRlclRlc3QoKTsKKyAgICAgICAgV2Vi
Q29tcG9zaXRvcjo6c2h1dGRvd24oKTsKICAgICB9CiAKICAgICBDQ1NldHRpbmdzIG1fc2V0dGlu
Z3M7CkBAIC0zOTIsNyArMzk1LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZW5kV2hlbkJlZ2lu
UmV0dXJuczsKICAgICBib29sIG1fdGltZWRPdXQ7CiAKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gbV9yb290TGF5ZXI7CiAgICAgT3duUHRyPFdlYlRocmVhZD4gbV93ZWJUaHJlYWQ7CiAgICAg
UmVmUHRyPENDU2NvcGVkVGhyZWFkUHJveHk+IG1fbWFpblRocmVhZFByb3h5OwogICAgIFRpbWVv
dXRUYXNrKiBtX3RpbWVvdXRUYXNrOwpAQCAtNDAzLDEwICs0MDUsMTAgQEAgdm9pZCBDQ0xheWVy
VHJlZUhvc3RUZXN0Ojpkb0JlZ2luVGVzdCgpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICBtX2NsaWVudCA9IE1vY2tMYXllclRyZWVIb3N0Q2xpZW50OjpjcmVhdGUodGhpcyk7CiAK
LSAgICBtX3Jvb3RMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBtX2xheWVy
VHJlZUhvc3QgPSBNb2NrTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKHRoaXMsIG1fY2xpZW50LmdldCgp
LCBtX3Jvb3RMYXllciwgbV9zZXR0aW5ncyk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJv
b3RMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBtX2xheWVyVHJlZUhvc3Qg
PSBNb2NrTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKHRoaXMsIG1fY2xpZW50LmdldCgpLCByb290TGF5
ZXIsIG1fc2V0dGluZ3MpOwogICAgIEFTU0VSVF9UUlVFKG1fbGF5ZXJUcmVlSG9zdCk7Ci0gICAg
bV9yb290TGF5ZXItPnNldExheWVyVHJlZUhvc3QobV9sYXllclRyZWVIb3N0LmdldCgpKTsKKyAg
ICByb290TGF5ZXItPnNldExheWVyVHJlZUhvc3QobV9sYXllclRyZWVIb3N0LmdldCgpKTsKIAog
ICAgIG1fYmVnaW5uaW5nID0gdHJ1ZTsKICAgICBiZWdpblRlc3QoKTsKQEAgLTQ0NSw2ICs0NDcs
MTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCiAgICAgeworICAg
ICAgICAvLyBLaWxsIHRoZSBsYXllclRyZWVIb3N0IGltbWVkaWF0ZWx5LgorICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnJvb3RMYXllcigpLT5zZXRMYXllclRyZWVIb3N0KDApOworICAgICAgICBt
X2xheWVyVHJlZUhvc3QuY2xlYXIoKTsKKwogICAgICAgICBlbmRUZXN0KCk7CiAgICAgfQogCkBA
IC00NzMsNiArNDc5LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkK
ICAgICB7CiAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworCisgICAg
ICAgIC8vIEtpbGwgdGhlIGxheWVyVHJlZUhvc3QgaW1tZWRpYXRlbHkuCisgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+cm9vdExheWVyKCktPnNldExheWVyVHJlZUhvc3QoMCk7CisgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC5jbGVhcigpOworCiAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9CiAKQEAg
LTQ5MSw2ICs1MDIsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQog
ICAgIHsKICAgICAgICAgcG9zdFNldE5lZWRzUmVkcmF3VG9NYWluVGhyZWFkKCk7CisKKyAgICAg
ICAgLy8gS2lsbCB0aGUgbGF5ZXJUcmVlSG9zdCBpbW1lZGlhdGVseS4KKyAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5yb290TGF5ZXIoKS0+c2V0TGF5ZXJUcmVlSG9zdCgwKTsKKyAgICAgICAgbV9s
YXllclRyZWVIb3N0LmNsZWFyKCk7CisKICAgICAgICAgZW5kVGVzdCgpOwogICAgIH0KIApAQCAt
NTAxLDggKzUxNyw4IEBAIHB1YmxpYzoKIAogU0lOR0xFX0FORF9NVUxUSV9USFJFQURfVEVTVF9G
KENDTGF5ZXJUcmVlSG9zdFRlc3RTaG9ydGxpdmVkMykKIAotLy8gQ29uc3RhbnRseSByZWRyYXdp
bmcgbGF5ZXJUcmVlSG9zdHMgc2hvdWxkbid0IGRpZSB3aGVuIHRoZXkgY29tbWl0Ci1jbGFzcyBD
Q0xheWVyVHJlZUhvc3RUZXN0Q29tbWl0aW5nV2l0aENvbnRpbnVvdXNSZWRyYXcgOiBwdWJsaWMg
Q0NMYXllclRyZWVIb3N0VGVzdCB7CisvLyBUZXN0IGludGVybGVhdmluZyBvZiByZWRyYXdzIGFu
ZCBjb21taXRzCitjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0Q29tbWl0aW5nV2l0aENvbnRpbnVv
dXNSZWRyYXcgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdFRocmVhZE9ubHkgewogcHVibGlj
OgogICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RDb21taXRpbmdXaXRoQ29udGludW91c1JlZHJhdygp
CiAgICAgICAgIDogbV9udW1Db21wbGV0ZUNvbW1pdHMoMCkKQEAgLTUxMyw3ICs1MjksNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCiAgICAgewogICAgICAgICBwb3N0
U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKLSAgICAgICAgZW5kVGVzdCgpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCopCkBAIC01NDAsNyArNTU1LDEwIEBAIHByaXZhdGU6CiAgICAgaW50IG1fbnVtRHJh
d3M7CiB9OwogCi1TSU5HTEVfQU5EX01VTFRJX1RIUkVBRF9URVNUX0YoQ0NMYXllclRyZWVIb3N0
VGVzdENvbW1pdGluZ1dpdGhDb250aW51b3VzUmVkcmF3KQorVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dFRlc3RDb21taXRpbmdXaXRoQ29udGludW91c1JlZHJhdywgcnVuTXVsdGlUaHJlYWQpCit7Cisg
ICAgcnVuVGVzdFRocmVhZGVkKCk7Cit9CiAKIC8vIFR3byBzZXROZWVkc0NvbW1pdHMgaW4gYSBy
b3cgc2hvdWxkIGxlYWQgdG8gYXQgbGVhc3QgMSBjb21taXQgYW5kIGF0IGxlYXN0IDEKIC8vIGRy
YXcgd2l0aCBmcmFtZSAwLgpAQCAtOTkxLDYgKzEwMDksOSBAQCBwdWJsaWM6CiAgICAgICAgIC8v
IGFtb3V0IG9mIHRpbWVzIGFzIHBhaW50Q29udGVudHNJZkRpcnR5KCkuCiAgICAgICAgIEVYUEVD
VF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgpLAogICAgICAgICAg
ICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLT51cGRhdGVDb3VudCgpKTsKKworICAgICAgICAv
LyBjbGVhciBtX3VwZGF0ZUNoZWNrTGF5ZXIgc28gQ0NMYXllclRyZWVIb3N0IGRpZXMuCisgICAg
ICAgIG1fdXBkYXRlQ2hlY2tMYXllci5jbGVhcigpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvckltcGxUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvckltcGxUZXN0
LmNwcAppbmRleCBhMzMzMzY5Y2VlZjU5OGE5YmE4OTY3OGEyNDI1ODA1NzIxOTJjNGI5Li5lMDc4
ZTU0MDJmZDRiMGMwNzgxMDMyMDYxZWYxZjNkNDI0ZGQ2MGEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbXBsVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW1wbFRlc3QuY3BwCkBAIC0z
OSw2ICszOSw3IEBAIG5hbWVzcGFjZSB7CiAKIFRFU1QoV2ViQ29tcG9zaXRvckltcGwsIGZyb21J
ZGVudGlmaWVyKQogeworICAgIFdlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoMCk7CiAjaWZuZGVm
IE5ERUJVRwogICAgIC8vIFdlYkNvbXBvc2l0b3IgQVBJcyBjYW4gb25seSBiZSBjYWxsZWQgZnJv
bSB0aGUgY29tcG9zaXRvciB0aHJlYWQuCiAgICAgV2ViQ29yZTo6RGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGFsd2F5c0ltcGxUaHJlYWQ7CkBAIC02Miw2ICs2Myw4IEBAIFRFU1QoV2ViQ29tcG9z
aXRvckltcGwsIGZyb21JZGVudGlmaWVyKQogCiAgICAgLy8gQWZ0ZXIgdGhlIGNvbXBvc2l0b3Ig
aXMgZGVzdHJveWVkLCBpdHMgZW50cnkgc2hvdWxkIGJlIHJlbW92ZWQgZnJvbSB0aGUgbWFwLgog
ICAgIEVYUEVDVF9FUSgwLCBXZWJDb21wb3NpdG9yOjpmcm9tSWRlbnRpZmllcihjb21wb3NpdG9y
SWRlbnRpZmllcikpOworCisgICAgV2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZmYzMx
NzU4ZmY3MmNkOGZhNjdmZmIwYzJlOWViNjRiZGY5MmI1ZTUuLmU5OGZiY2RlYTdkMzFmZDYzNmZh
NmVjYmM5ZDgxYTZiODQ0M2QxYmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0xMS0xOCAgTmF0IER1Y2EgIDxu
ZHVjYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFbmFibGUgdGhyZWFkZWQg
Y29tcG9zaXRpbmcgdmlhIENDVGhyZWFkUHJveHk6Omhhc1RocmVhZCBvbmx5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDgzOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsLmNwcDoKKyAgICAgICAgKFRlc3RTaGVsbDo6cmVzZXRXZWJTZXR0aW5n
cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmg6CisgICAg
ICAgIChUZXN0U2hlbGw6OnRocmVhZGVkQ29tcG9zaXRpbmdFbmFibGVkKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJQ
cmVmZXJlbmNlczo6cmVzZXQpOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OmFwcGx5VG8pOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmg6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAo
V2ViVmlld0hvc3Q6OldlYlZpZXdIb3N0KToKKyAgICAgICAgKFdlYlZpZXdIb3N0Ojp+V2ViVmll
d0hvc3QpOgorCiAyMDExLTExLTE4ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KIAog
ICAgICAgICBBZGQgQ01ha2UgYnVpbGQgaW5mcmFzdHJ1Y3R1cmUgZm9yIHRoZSBCbGFja0JlcnJ5
IHBvcnQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCmluZGV4
IDg1MDdmMjRjMDIyMzNiY2QxMDg4MTFmMGJjNzE3YjU2M2RlN2NmMDguLjU5NjQwNjM3YTQ5NjM0
NmM2N2IxOTEyOTZlNmY1ZmZkZDg2NDEzZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsLmNwcApAQCAtMTk5LDcgKzE5OSw2IEBAIHZvaWQgVGVzdFNoZWxsOjpy
ZXNldFdlYlNldHRpbmdzKFdlYlZpZXcmIHdlYlZpZXcpCiAgICAgbV9wcmVmcy5yZXNldCgpOwog
ICAgIG1fcHJlZnMuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQgPSB0cnVlOwogICAgIG1f
cHJlZnMuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZCA9IG1fYWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZDsKLSAgICBtX3ByZWZzLnRocmVhZGVkQ29tcG9z
aXRpbmdFbmFibGVkID0gbV90aHJlYWRlZENvbXBvc2l0aW5nRW5hYmxlZDsKICAgICBtX3ByZWZz
LmNvbXBvc2l0ZVRvVGV4dHVyZSA9IG1fY29tcG9zaXRlVG9UZXh0dXJlOwogICAgIG1fcHJlZnMu
Zm9yY2VDb21wb3NpdGluZ01vZGUgPSBtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlOwogICAgIG1fcHJl
ZnMuYWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQgPSBtX2FjY2VsZXJhdGVkMmRDYW52YXNFbmFi
bGVkOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxs
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAppbmRleCBiMTk0
ZWIwYjIzOTYzMGUxMjNkZmI0MzEyZDBjZjc0MTM3Mzg2MjExLi4wOTAwNzk0YjQwZWVjMjM2NzQz
OWQ2YWQxY2ViYmJkYTVlMWFjMWQ4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0U2hlbGwuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0U2hlbGwuaApAQCAtMTMwLDYgKzEzMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkID0gZW5hYmxlZDsgfQogICAgIHZvaWQg
c2V0VGhyZWFkZWRDb21wb3NpdGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fdGhyZWFkZWRD
b21wb3NpdGluZ0VuYWJsZWQgPSBlbmFibGVkOyB9CisgICAgYm9vbCB0aHJlYWRlZENvbXBvc2l0
aW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFkZWRDb21wb3NpdGluZ0VuYWJsZWQ7
IH0KICAgICB2b2lkIHNldENvbXBvc2l0ZVRvVGV4dHVyZShib29sIGVuYWJsZWQpIHsgbV9jb21w
b3NpdGVUb1RleHR1cmUgPSBlbmFibGVkOyB9CiAgICAgdm9pZCBzZXRGb3JjZUNvbXBvc2l0aW5n
TW9kZShib29sIGVuYWJsZWQpIHsgbV9mb3JjZUNvbXBvc2l0aW5nTW9kZSA9IGVuYWJsZWQ7IH0K
ICAgICB2b2lkIHNldEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBt
X2FjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkID0gZW5hYmxlZDsgfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IDVjYzhmYWI5OTU4
YTc5NmFjNDlkZTgxNDE5YWE5OWYwZGQzMmZjNmIuLjc1YTA1Nzc4OThhMmRmYWEzODU0ZDBmYjY1
NThlOTA2ZDEzMzI2ZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTEwOSw3ICsxMDksNiBAQCB2b2lkIFdlYlByZWZlcmVuY2Vz
OjpyZXNldCgpCiAgICAgaHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkID0gZmFsc2U7CiAgICAgYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZCA9IGZhbHNlOwogICAgIGFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdFbmFibGVkID0gZmFsc2U7Ci0gICAgdGhyZWFkZWRDb21wb3NpdGluZ0Vu
YWJsZWQgPSBmYWxzZTsKICAgICBjb21wb3NpdGVUb1RleHR1cmUgPSBmYWxzZTsKICAgICBhY2Nl
bGVyYXRlZDJkQ2FudmFzRW5hYmxlZCA9IGZhbHNlOwogICAgIGxlZ2FjeUFjY2VsZXJhdGVkMmRD
YW52YXNFbmFibGVkID0gZmFsc2U7CkBAIC0yMTMsNyArMjEyLDYgQEAgdm9pZCBXZWJQcmVmZXJl
bmNlczo6YXBwbHlUbyhXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHNldHRpbmdzLT5zZXRDYXJldEJy
b3dzaW5nRW5hYmxlZChjYXJldEJyb3dzaW5nRW5hYmxlZCk7CiAgICAgc2V0dGluZ3MtPnNldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVk
KTsKICAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxl
ZChhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkKTsKLSAgICBzZXR0aW5ncy0+
c2V0VXNlVGhyZWFkZWRDb21wb3NpdG9yKHRocmVhZGVkQ29tcG9zaXRpbmdFbmFibGVkKTsKICAg
ICBzZXR0aW5ncy0+c2V0Q29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZChjb21wb3NpdGVUb1RleHR1
cmUpOwogICAgIHNldHRpbmdzLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShmb3JjZUNvbXBvc2l0
aW5nTW9kZSk7CiAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKGFj
Y2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJQcmVmZXJlbmNlcy5oCmluZGV4IDIzMzdhNDA1NTlkMGU4YWM0ZmE3NjVlODUzNjE2
NDhiMjEzYjBhOWIuLjIxNjQ5NDQ4ZDg5ZThiNGMxOWIzNzY5OTZkYWYxNjgxNGRhZDJiNGUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmgK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuaApAQCAt
MTAyLDcgKzEwMiw2IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlcyB7CiAgICAgYm9vbCBjYXJldEJy
b3dzaW5nRW5hYmxlZDsKICAgICBib29sIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0Vu
YWJsZWQ7CiAgICAgYm9vbCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZDsKLSAgICBib29s
IHRocmVhZGVkQ29tcG9zaXRpbmdFbmFibGVkOwogICAgIGJvb2wgY29tcG9zaXRlVG9UZXh0dXJl
OwogICAgIGJvb2wgZm9yY2VDb21wb3NpdGluZ01vZGU7CiAgICAgYm9vbCBhY2NlbGVyYXRlZDJk
Q2FudmFzRW5hYmxlZDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlZpZXdIb3N0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmNwcAppbmRleCA3NWI3OWNlZmM3ZmRhOTU0ZjBmODBiZGQ2NzFhMTFjZjgyNjAzYWUxLi43
NTI2NDk2MGQyZDViYjhiNTJlNDMwMmVhMWQ4ZTc4OTQ4MTM2ZTcyIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC0xMjAyLDggKzEyMDIsMTEg
QEAgV2ViVmlld0hvc3Q6OldlYlZpZXdIb3N0KFRlc3RTaGVsbCogc2hlbGwpCiB7CiAgICAgV1RG
Ojppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSAgICBtX2NvbXBvc2l0b3JUaHJlYWQgPSBhZG9w
dFB0cihXZWJLaXQ6OndlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jcmVhdGVUaHJlYWQoIkNvbXBv
c2l0b3IiKSk7Ci0gICAgV2ViQ29tcG9zaXRvcjo6c2V0VGhyZWFkKG1fY29tcG9zaXRvclRocmVh
ZC5nZXQoKSk7CisgICAgaWYgKHNoZWxsLT50aHJlYWRlZENvbXBvc2l0aW5nRW5hYmxlZCgpKSB7
CisgICAgICAgIG1fY29tcG9zaXRvclRocmVhZCA9IGFkb3B0UHRyKFdlYktpdDo6d2ViS2l0UGxh
dGZvcm1TdXBwb3J0KCktPmNyZWF0ZVRocmVhZCgiQ29tcG9zaXRvciIpKTsKKyAgICAgICAgV2Vi
Q29tcG9zaXRvcjo6aW5pdGlhbGl6ZShtX2NvbXBvc2l0b3JUaHJlYWQuZ2V0KCkpOworICAgIH0g
ZWxzZQorICAgICAgICBXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOwogCiAgICAgcmVzZXQo
KTsKIH0KQEAgLTEyMjUsNiArMTIyOCw4IEBAIFdlYlZpZXdIb3N0Ojp+V2ViVmlld0hvc3QoKQog
ICAgIHdlYldpZGdldCgpLT5jbG9zZSgpOwogICAgIGlmIChtX2luTW9kYWxMb29wKQogICAgICAg
ICB3ZWJraXRfc3VwcG9ydDo6UXVpdE1lc3NhZ2VMb29wKCk7CisKKyAgICBXZWJDb21wb3NpdG9y
OjpzaHV0ZG93bigpOwogfQogCiB2b2lkIFdlYlZpZXdIb3N0OjpzZXRXZWJXaWRnZXQoV2ViS2l0
OjpXZWJXaWRnZXQqIHdpZGdldCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115946</attachid>
            <date>2011-11-19 04:26:08 -0800</date>
            <delta_ts>2011-11-21 21:53:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70838-20111119042607.patch</filename>
            <type>text/plain</type>
            <size>42589</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDMzZTQ1YjNmMzkwMTFk
MTlkZTIzOTQ3NWQyNDJkOTJkNzA1YjcxMi4uNjJlZDgyNWViMjBkYWZiNmI5M2MzZTUyYmFkMTc3
OWNmNTRmODgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDExLTExLTE4ICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEVuYWJsZSB0
aHJlYWRlZCBjb21wb3NpdGluZyB2aWEgQ0NUaHJlYWRQcm94eTo6aGFzVGhyZWFkIG9ubHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODM4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpsYXllclJlbmRlcmVyQ29udGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjplbmFibGVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Y29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OnNldE5lZWRzQW5pbWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OnNldE5lZWRzQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVl
SG9zdDo6c2V0TmVlZHNSZWRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
Ojpjb21wb3NpdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6Q0NTZXR0aW5n
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1Byb3h5Ojppc01haW5UaHJlYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NQcm94eTo6aXNJbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJveHk6
OnNldE1haW5UaHJlYWRJc0ltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjpEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQ6OkRlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQ6On5EZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQpOgorCiAyMDExLTExLTE5ICBKYXkgQ2l2ZWxsaSAgPGpjaXZlbGxpQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBXaGVuIGxvYWRpbmcgYSBNSFRNTCBkb2N1bWVudCwgbWFrZSBzdXJlIHdlIHNl
dCB0aGUgYmFzZSBVUkwgYmVmb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGU2NzYz
ZDJjNGVmZjgzNDU1MmY1ZmU5N2M3ZWMxMTA4YzQ2OWQ5MTAuLmIzZDQzOTQ0ZWVkNWRkNmVjNjFk
NWE2NTdmYTg3NDJjMTE4NWI4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDAgQEAKKzIwMTEtMTEtMTggIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtjaHJvbWl1bV0gRW5hYmxlIHRocmVhZGVkIGNvbXBvc2l0aW5nIHZpYSBDQ1RocmVh
ZFByb3h5OjpoYXNUaHJlYWQgb25seQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzA4MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHB1YmxpYy9XZWJDb21wb3NpdG9yLmg6CisgICAgICAgICogcHVibGlj
L1dlYkxheWVyVHJlZVZpZXcuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6
U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAg
ICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b21wb3NpdG9yOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6
c2h1dGRvd24pOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpmcm9tSWRlbnRpZmll
cik6CisgICAgICAgICogc3JjL1dlYktpdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxp
emVXaXRob3V0VjgpOgorICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3M6Om9wZXJhdG9yIENDU2V0dGlu
Z3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Ojpjb21wb3NpdGUpOgorICAg
ICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNEKToKKyAgICAg
ICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGlu
Z3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwu
aDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjb21wb3Np
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2NoZWR1bGVBbmltYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5n
QWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNyZWF0ZUxheWVyVHJlZUhv
c3RDb250ZXh0M0QpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2NoZWR1bGVDb21w
b3NpdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Z3JhcGhpY3NDb250ZXh0M0Qp
OgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RG
OjpDQ0xheWVyVHJlZUhvc3RUZXN0OjpDQ0xheWVyVHJlZUhvc3RUZXN0KToKKyAgICAgICAgKFdU
Rjo6Q0NMYXllclRyZWVIb3N0VGVzdDo6cnVuVGVzdCk6CisKIDIwMTEtMTEtMTkgIE5hdCBEdWNh
ICA8bmR1Y2FAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBSb2xsZWQgREVQ
UyAxMDk2OTYtPjExMDgzOApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5k
ZXggMGJkNmRiYzM4OTZhZTRhMDc3MTlhNGVhNGEzY2NlNzM1OTI3M2UwNC4uNzAwNDE4N2M2MDFl
Y2QwOTkwMTVmYTZlNzFhMzVjNzQxMWNiNjc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmluaXRpYWxpemUoKQogICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9D
SFJPTUlVTV9tYXBfc3ViIik7CiAKICAgICAvLyBVc2UgdGhlIHN3YXBCdWZmZXJzIGNhbGxiYWNr
IG9ubHkgd2l0aCB0aGUgdGhyZWFkZWQgcHJveHkuCi0gICAgaWYgKHNldHRpbmdzKCkuZW5hYmxl
Q29tcG9zaXRvclRocmVhZCkKKyAgICBpZiAoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKQogICAg
ICAgICBtX2NhcGFiaWxpdGllcy51c2luZ1N3YXBDb21wbGV0ZUNhbGxiYWNrID0gZXh0ZW5zaW9u
cy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX3N3YXBidWZmZXJzX2NvbXBsZXRlX2NhbGxiYWNrIik7
CiAgICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVzaW5nU3dhcENvbXBsZXRlQ2FsbGJhY2spIHsKICAg
ICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fc3dhcGJ1ZmZlcnNf
Y29tcGxldGVfY2FsbGJhY2siKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmluZGV4
IDI3NmYzYzlmYzJmZTEwN2YxNjNiMmFiYTA5OGMwM2ZiYjMzNDRjYjYuLjJiMGQxNmU1MTk5NWY1
MzlmNjY4MzBiZjM1YTgzZWM1ZDgzZDczZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVt
LmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIEdyYXBoaWNzQ29udGV4dDNEKiBXZWJHTExheWVyQ2hy
b21pdW06OmxheWVyUmVuZGVyZXJDb250ZXh0KCkKIHsKICAgICAvLyBGSVhNRTogSW4gdGhlIHRo
cmVhZGVkIGNhc2UsIHBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMgbXVzdCBiZQogICAgIC8v
IHJlZmFjdG9yZWQgdG8gYmUgYXN5bmNocm9ub3VzLiBDdXJyZW50bHkgdGhpcyBpcyB1bmltcGxl
bWVudGVkLgotICAgIGlmICghbGF5ZXJUcmVlSG9zdCgpIHx8IGxheWVyVHJlZUhvc3QoKS0+c2V0
dGluZ3MoKS5lbmFibGVDb21wb3NpdG9yVGhyZWFkKQorICAgIGlmICghbGF5ZXJUcmVlSG9zdCgp
IHx8IENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0
dXJuIGxheWVyVHJlZUhvc3QoKS0+Y29udGV4dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBE
aXNwbGF5LmNwcAppbmRleCBiNjhmNDZjZjhiODFjOWU3NmUzNzc5YzY5MDFiY2I5NDU1MWM5MWNm
Li43MDhiY2ZmODgwMWI3ODg4MTA2MGI1Mjk4NThiMjg5Yjk1MzI4YWVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNw
bGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIENDSGVhZHNVcERp
c3BsYXk6Om9uU3dhcEJ1ZmZlcnMoKQogYm9vbCBDQ0hlYWRzVXBEaXNwbGF5OjplbmFibGVkKCkg
Y29uc3QKIHsKICAgICAvLyBGSVhNRTogSFVEIGRvZXMgbm90IHdvcmsgaW4gY29tcG9zaXRvciB0
aHJlYWQgbW9kZS4KLSAgICBpZiAoc2V0dGluZ3MoKS5lbmFibGVDb21wb3NpdG9yVGhyZWFkKQor
ICAgIGlmIChDQ1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICByZXR1cm4gc2V0dGluZ3MoKS5zaG93UGxhdGZvcm1MYXllclRyZWUgfHwgc2V0dGluZ3Mo
KS5zaG93RlBTQ291bnRlcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4
IGJhZTZmYjNjZTkzNGZkYjRjM2Y3YzU5NzlhMGEwYmZkYjQ2OTA1YjUuLmE5NjQ2MmY5ZTc3YzQ1
Zjc3YTk2OTBkYjRiMzk1YmY3Mjk1MmUwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcApAQCAtMzcsOCArMzcsMTcgQEAKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1
ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKIAorbmFtZXNwYWNlIHsKK3N0YXRpYyBpbnQgbnVtTGF5
ZXJUcmVlSW5zdGFuY2VzOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jvb2wgQ0NMYXll
clRyZWVIb3N0OjphbnlMYXllclRyZWVIb3N0SW5zdGFuY2VFeGlzdHMoKQoreworICAgIHJldHVy
biBudW1MYXllclRyZWVJbnN0YW5jZXMgPiAwOworfQorCiBQYXNzUmVmUHRyPENDTGF5ZXJUcmVl
SG9zdD4gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGll
bnQsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIFJlZlB0cjxDQ0xheWVyVHJl
ZUhvc3Q+IGxheWVyVHJlZUhvc3QgPSBhZG9wdFJlZihuZXcgQ0NMYXllclRyZWVIb3N0KGNsaWVu
dCwgc2V0dGluZ3MpKTsKQEAgLTYwLDEyICs2OSwxMyBAQCBDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5
ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5n
cwogICAgICwgbV9tYXhQYWdlU2NhbGUoMSkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWlu
VGhyZWFkKCkpOworICAgIG51bUxheWVyVHJlZUluc3RhbmNlcysrOwogfQogCiBib29sIENDTGF5
ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZSgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVl
SG9zdDo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwotICAgIGlmIChtX3NldHRpbmdzLmVuYWJsZUNv
bXBvc2l0b3JUaHJlYWQpIHsKKyAgICBpZiAoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKSB7CiAg
ICAgICAgIC8vIFRoZSBIVUQgZG9lcyBub3Qgd29yayBpbiB0aHJlYWRlZCBtb2RlLiBUdXJuIGl0
IG9mZi4KICAgICAgICAgbV9zZXR0aW5ncy5zaG93RlBTQ291bnRlciA9IGZhbHNlOwogICAgICAg
ICBtX3NldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSA9IGZhbHNlOwpAQCAtOTQsNiArMTA0
LDcgQEAgQ0NMYXllclRyZWVIb3N0Ojp+Q0NMYXllclRyZWVIb3N0KCkKICAgICBtX3Byb3h5LT5z
dG9wKCk7CiAgICAgbV9wcm94eS5jbGVhcigpOwogICAgIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwor
ICAgIG51bUxheWVyVHJlZUluc3RhbmNlcy0tOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IpCkBAIC0xNjgsNyArMTc5LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRpZFJlY3Jl
YXRlR3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2VzcykKIC8vIFRlbXBvcmFyeSBoYWNrIHVudGls
IFdlYlZpZXdJbXBsIGNvbnRleHQgY3JlYXRpb24gZ2V0cyBzaW1wbGlmaWVkCiBHcmFwaGljc0Nv
bnRleHQzRCogQ0NMYXllclRyZWVIb3N0Ojpjb250ZXh0KCkKIHsKLSAgICBBU1NFUlQoIW1fc2V0
dGluZ3MuZW5hYmxlQ29tcG9zaXRvclRocmVhZCk7CisgICAgQVNTRVJUKCFDQ1Byb3h5OjpoYXNJ
bXBsVGhyZWFkKCkpOwogICAgIHJldHVybiBtX3Byb3h5LT5jb250ZXh0KCk7CiB9CiAKQEAgLTE5
OSwxMyArMjEwLDEzIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRab29tQW5pbWF0b3JUcmFu
c2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHpvb20pCiAKIHZvaWQgQ0NMYXllclRy
ZWVIb3N0OjpzZXROZWVkc0FuaW1hdGUoKQogewotICAgIEFTU0VSVChtX3NldHRpbmdzLmVuYWJs
ZUNvbXBvc2l0b3JUaHJlYWQpOworICAgIEFTU0VSVChDQ1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkp
OwogICAgIG1fcHJveHktPnNldE5lZWRzQW5pbWF0ZSgpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6c2V0TmVlZHNDb21taXQoKQogewotICAgIGlmIChtX3NldHRpbmdzLmVuYWJsZUNvbXBv
c2l0b3JUaHJlYWQpIHsKKyAgICBpZiAoQ0NUaHJlYWRQcm94eTo6aW1wbFRocmVhZCgpKSB7CiAg
ICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzQ29tbWl0IiwgdGhp
cywgMCk7CiAgICAgICAgIG1fcHJveHktPnNldE5lZWRzQ29tbWl0KCk7CiAgICAgfSBlbHNlCkBA
IC0yMTQsNyArMjI1LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzQ29tbWl0KCkK
IAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzUmVkcmF3KCkKIHsKLSAgICBpZiAobV9z
ZXR0aW5ncy5lbmFibGVDb21wb3NpdG9yVGhyZWFkKQorICAgIGlmIChDQ1RocmVhZFByb3h5Ojpp
bXBsVGhyZWFkKCkpCiAgICAgICAgIG1fcHJveHktPnNldE5lZWRzUmVkcmF3KCk7CiAgICAgZWxz
ZQogICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVDb21wb3NpdGUoKTsKQEAgLTI5MCw3ICszMDEs
NyBAQCBUZXh0dXJlTWFuYWdlciogQ0NMYXllclRyZWVIb3N0Ojpjb250ZW50c1RleHR1cmVNYW5h
Z2VyKCkgY29uc3QKIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbXBvc2l0ZSgpCiB7Ci0gICAg
QVNTRVJUKCFtX3NldHRpbmdzLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQpOworICAgIEFTU0VSVCgh
Q0NUaHJlYWRQcm94eTo6aW1wbFRocmVhZCgpKTsKICAgICBzdGF0aWNfY2FzdDxDQ1NpbmdsZVRo
cmVhZFByb3h5Kj4obV9wcm94eS5nZXQoKSktPmNvbXBvc2l0ZUltbWVkaWF0ZWx5KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggYTc5M2NjYTI2NTdmNjE1MzMyMmFmMTI4
MTI1YWEwNTNhMDEzMTEyMi4uYWU1Zjg3N2I5NDg0ODU5YTkxZGVjZjM4NzA2NDAwYThkYjEzMjIx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTcxLDE0ICs3MSwxMiBAQCBzdHJ1
Y3QgQ0NTZXR0aW5ncyB7CiAgICAgQ0NTZXR0aW5ncygpCiAgICAgICAgICAgICA6IGFjY2VsZXJh
dGVQYWludGluZyhmYWxzZSkKICAgICAgICAgICAgICwgY29tcG9zaXRlT2Zmc2NyZWVuKGZhbHNl
KQotICAgICAgICAgICAgLCBlbmFibGVDb21wb3NpdG9yVGhyZWFkKGZhbHNlKQogICAgICAgICAg
ICAgLCBzaG93RlBTQ291bnRlcihmYWxzZSkKICAgICAgICAgICAgICwgc2hvd1BsYXRmb3JtTGF5
ZXJUcmVlKGZhbHNlKQogICAgICAgICAgICAgLCByZWZyZXNoUmF0ZSgwKSB7IH0KIAogICAgIGJv
b2wgYWNjZWxlcmF0ZVBhaW50aW5nOwogICAgIGJvb2wgY29tcG9zaXRlT2Zmc2NyZWVuOwotICAg
IGJvb2wgZW5hYmxlQ29tcG9zaXRvclRocmVhZDsKICAgICBib29sIHNob3dGUFNDb3VudGVyOwog
ICAgIGJvb2wgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOwogICAgIGRvdWJsZSByZWZyZXNoUmF0ZTsK
QEAgLTEwOSw2ICsxMDcsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NMYXll
clRyZWVIb3N0PiBjcmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiwgY29uc3QgQ0NTZXR0aW5n
cyYpOwogICAgIHZpcnR1YWwgfkNDTGF5ZXJUcmVlSG9zdCgpOwogCisgICAgLy8gUmV0dXJucyB0
cnVlIGlmIGFueSBDQ0xheWVyVHJlZUhvc3QgaXMgYWxpdmUuCisgICAgc3RhdGljIGJvb2wgYW55
TGF5ZXJUcmVlSG9zdEluc3RhbmNlRXhpc3RzKCk7CisKICAgICAvLyBDQ0xheWVyVHJlZUhvc3Qg
aW50ZXJmYWNlIHRvIENDUHJveHkuCiAgICAgdm9pZCBhbmltYXRlQW5kTGF5b3V0KGRvdWJsZSBm
cmFtZUJlZ2luVGltZSk7CiAgICAgdm9pZCBiZWdpbkNvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVy
VHJlZUhvc3RJbXBsKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3BwCmluZGV4IDYwNjJlYzA5YzE3NWQxYWM0NzFm
YjZlNGJkNjEyZTNhMTg3MmZlMWQuLmU0ZDYwMTQ1MTFiYzFjNWRiMGU2ODdiZDFmNjgzZmFlODAz
NmM1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJveHkuY3BwCkBAIC0zNyw3ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogbmFtZXNwYWNlIHsKICNpZm5kZWYgTkRFQlVHCi1ib29sIGZha2VJbXBsVGhyZWFk
ID0gZmFsc2U7Citib29sIGltcGxUaHJlYWRJc092ZXJyaWRkZW4gPSBmYWxzZTsKK1RocmVhZElk
ZW50aWZpZXIgdGhyZWFkSURPdmVycmlkZW5Ub0JlSW1wbFRocmVhZDsKICNlbmRpZgogQ0NUaHJl
YWQqIHNfbWFpblRocmVhZCA9IDA7CiBDQ1RocmVhZCogc19pbXBsVGhyZWFkID0gMDsKQEAgLTUz
LDYgKzU0LDExIEBAIENDVGhyZWFkKiBDQ1Byb3h5OjptYWluVGhyZWFkKCkKICAgICByZXR1cm4g
c19tYWluVGhyZWFkOwogfQogCitib29sIENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKQoreworICAg
IHJldHVybiBzX2ltcGxUaHJlYWQ7Cit9CisKIHZvaWQgQ0NQcm94eTo6c2V0SW1wbFRocmVhZChD
Q1RocmVhZCogdGhyZWFkKQogewogICAgIHNfaW1wbFRocmVhZCA9IHRocmVhZDsKQEAgLTY3LDE4
ICs3MywyNCBAQCBDQ1RocmVhZCogQ0NQcm94eTo6aW1wbFRocmVhZCgpCiBib29sIENDUHJveHk6
OmlzTWFpblRocmVhZCgpCiB7CiAgICAgQVNTRVJUKHNfbWFpblRocmVhZCk7Ci0gICAgcmV0dXJu
ICFmYWtlSW1wbFRocmVhZCAmJiBjdXJyZW50VGhyZWFkKCkgPT0gc19tYWluVGhyZWFkLT50aHJl
YWRJRCgpOworICAgIGlmIChpbXBsVGhyZWFkSXNPdmVycmlkZGVuICYmIGN1cnJlbnRUaHJlYWQo
KSA9PSB0aHJlYWRJRE92ZXJyaWRlblRvQmVJbXBsVGhyZWFkKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIGN1cnJlbnRUaHJlYWQoKSA9PSBzX21haW5UaHJlYWQtPnRocmVhZElE
KCk7CiB9CiAKIGJvb2wgQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkKIHsKICAgICBXVEY6OlRocmVh
ZElkZW50aWZpZXIgaW1wbFRocmVhZElEID0gc19pbXBsVGhyZWFkID8gc19pbXBsVGhyZWFkLT50
aHJlYWRJRCgpIDogMDsKLSAgICByZXR1cm4gZmFrZUltcGxUaHJlYWQgfHwgY3VycmVudFRocmVh
ZCgpID09IGltcGxUaHJlYWRJRDsKKyAgICBpZiAoaW1wbFRocmVhZElzT3ZlcnJpZGRlbiAmJiBj
dXJyZW50VGhyZWFkKCkgPT0gdGhyZWFkSURPdmVycmlkZW5Ub0JlSW1wbFRocmVhZCkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGN1cnJlbnRUaHJlYWQoKSA9PSBpbXBsVGhyZWFk
SUQ7CiB9CiAKLXZvaWQgQ0NQcm94eTo6c2V0SW1wbFRocmVhZChib29sIGlzSW1wbFRocmVhZCkK
K3ZvaWQgQ0NQcm94eTo6c2V0Q3VycmVudFRocmVhZElzSW1wbFRocmVhZChib29sIGlzSW1wbFRo
cmVhZCkKIHsKLSAgICBmYWtlSW1wbFRocmVhZCA9IGlzSW1wbFRocmVhZDsKKyAgICBpbXBsVGhy
ZWFkSXNPdmVycmlkZGVuID0gaXNJbXBsVGhyZWFkOworICAgIGlmIChpc0ltcGxUaHJlYWQpCisg
ICAgICAgIHRocmVhZElET3ZlcnJpZGVuVG9CZUltcGxUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IGE2MjMwZWFjZDU2ODlkNWJlYTQyZjBkMGNk
YjljNjM4NTMzNzg4YWEuLmJiMzc4MDE0N2IxNmMyNmI3NWE3Y2NkMjJhYThiOGZlODRlNzZiYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Byb3h5LmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lk
IHNldE1haW5UaHJlYWQoQ0NUaHJlYWQqKTsKICAgICBzdGF0aWMgQ0NUaHJlYWQqIG1haW5UaHJl
YWQoKTsKIAorICAgIHN0YXRpYyBib29sIGhhc0ltcGxUaHJlYWQoKTsKICAgICBzdGF0aWMgdm9p
ZCBzZXRJbXBsVGhyZWFkKENDVGhyZWFkKik7CiAgICAgc3RhdGljIENDVGhyZWFkKiBpbXBsVGhy
ZWFkKCk7CiAKQEAgLTkxLDcgKzkyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb3Nl
Q29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKSA9IDA7CiAKICNpZm5kZWYgTkRFQlVHCi0g
ICAgc3RhdGljIHZvaWQgc2V0SW1wbFRocmVhZChib29sKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRD
dXJyZW50VGhyZWFkSXNJbXBsVGhyZWFkKGJvb2wpOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCBlZGFiNjFmMmMwMzI3OTZlYzg0
MjM1YjQxYjRlZjc3M2E4MjI5ZjEzLi4wZDVhNGEyZDhhNTE2YjFkN2JjZjk5MWE5OWUxYzc4Nzg5
OTQzZWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC05MSwxMyAr
OTEsMTMgQEAgcHVibGljOgogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCgpCiAgICAgewog
I2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgQ0NQcm94eTo6c2V0SW1wbFRocmVhZCh0cnVl
KTsKKyAgICAgICAgQ0NQcm94eTo6c2V0Q3VycmVudFRocmVhZElzSW1wbFRocmVhZCh0cnVlKTsK
ICNlbmRpZgogICAgIH0KICAgICB+RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkKCkKICAgICB7CiAj
aWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICBDQ1Byb3h5OjpzZXRJbXBsVGhyZWFkKGZhbHNl
KTsKKyAgICAgICAgQ0NQcm94eTo6c2V0Q3VycmVudFRocmVhZElzSW1wbFRocmVhZChmYWxzZSk7
CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Q29tcG9zaXRvci5oCmluZGV4IDc5YjhiYzU4MTEyYjc1MDgxZjY0NWY2ODYzZGMyZDI3Y2YzYTFk
NzcuLmYxMWRhYjZlZGM5NmI3NWVjNjNhOWM4ZTAzNTRkNGI3NjNjNDgwMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yLmgKQEAgLTM0LDEyICszNCwy
MiBAQCBjbGFzcyBXZWJDb21wb3NpdG9yQ2xpZW50OwogY2xhc3MgV2ViSW5wdXRFdmVudDsKIGNs
YXNzIFdlYlRocmVhZDsKIAotLy8gVGhpcyByZXByZXNlbnRzIHRoZSBjb21wb3NpdG9yIGFzc29j
aWF0ZWQgd2l0aCBhIFdlYldpZGdldC4gQWxsIGNhbGxzIHRvIHRoZSBXZWJDb21wb3NpdG9yIG11
c3QKLS8vIGJlIG1hZGUgZnJvbSB0aGUgY29tcG9zaXRvciB0aHJlYWQuCisjZGVmaW5lIFdFQkNP
TVBPU0lUT1JfSEFTX0lOSVRJQUxJWkUKKworLy8gVGhpcyByZXByZXNlbnRzIHRoZSBjb21wb3Np
dG9yIGFzc29jaWF0ZWQgd2l0aCBhIFdlYldpZGdldC4gQWxsIGNhbGxzIHRvIHRoZQorLy8gV2Vi
Q29tcG9zaXRvciBtdXN0IGJlIG1hZGUgZnJvbSB0aGUgY29tcG9zaXRvciB0aHJlYWQuCiBjbGFz
cyBXZWJDb21wb3NpdG9yIHsKIHB1YmxpYzoKLSAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkIG9u
Y2Ugd2l0aCBhIG5vbi1udWxsIFdlYlRocmVhZCBiZWZvcmUgYW55IGNvbXBvc2l0b3JzIGF0dGVt
cHQgdG8gaW5pdGlhbGl6ZS4KLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFRocmVh
ZChXZWJUaHJlYWQqKTsKKyAgICAvLyBJbml0aWFsaXplcyB0aGUgY29tcG9zaXRvci4gVGhyZWFk
ZWQgY29tcG9zaXRpbmcgaXMgZW5hYmxlZCBieSBwYXNzaW5nIGluCisgICAgLy8gYSBub24tbnVs
bCBXZWJUaHJlYWQuIE5vIGNvbXBvc2l0b3IgY2xhc3NlcyBvciBtZXRob2RzIHNob3VsZCBiZSB1
c2VkCisgICAgLy8gcHJpb3IgdG8gY2FsbGluZyBpbml0aWFsaXplLgorICAgIFdFQktJVF9FWFBP
UlQgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZShXZWJUaHJlYWQqKTsKKworICAgIC8vIFNodXRzIGRv
d24gdGhlIGNvbXBvc2l0b3IuIFRoaXMgbXVzdCBiZSBjYWxsZWQgd2hlbiBhbGwgY29tcG9zaXRv
ciBkYXRhCisgICAgLy8gdHlwZXMgaGF2ZSBiZWVuIGRlbGV0ZWQuIE5vIGNvbXBvc2l0b3IgY2xh
c3NlcyBvciBtZXRob2RzIHNob3VsZCBiZSB1c2VkCisgICAgLy8gYWZ0ZXIgc2h1dGRvd24uCisg
ICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzaHV0ZG93bigpOworCiAgICAgV0VCS0lUX0VY
UE9SVCBzdGF0aWMgV2ViQ29tcG9zaXRvciogZnJvbUlkZW50aWZpZXIoaW50KTsKIAogICAgIHZp
cnR1YWwgdm9pZCBzZXRDbGllbnQoV2ViQ29tcG9zaXRvckNsaWVudCopID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCBjYTA4
Y2VkMDc0Yjk0OTMyNGJiOWNjMDc0ODEzZDJjMjFiZmU3MWRlLi5jNTJiMzc4NmVlMTlkM2Y4MTQ1
ZjEyNmUwZWI4NjZmZjlkOWQ3N2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCkBAIC00NSwxMiArNDUsMTAgQEAgcHVibGljOgogICAg
IHN0cnVjdCBTZXR0aW5ncyB7CiAgICAgICAgIFNldHRpbmdzKCkKICAgICAgICAgICAgIDogYWNj
ZWxlcmF0ZVBhaW50aW5nKGZhbHNlKQotICAgICAgICAgICAgLCBjb21wb3NpdGVPZmZzY3JlZW4o
ZmFsc2UpCi0gICAgICAgICAgICAsIGVuYWJsZUNvbXBvc2l0b3JUaHJlYWQoZmFsc2UpIHsgfQor
ICAgICAgICAgICAgLCBjb21wb3NpdGVPZmZzY3JlZW4oZmFsc2UpIHsgfQogCiAgICAgICAgIGJv
b2wgYWNjZWxlcmF0ZVBhaW50aW5nOwogICAgICAgICBib29sIGNvbXBvc2l0ZU9mZnNjcmVlbjsK
LSAgICAgICAgYm9vbCBlbmFibGVDb21wb3NpdG9yVGhyZWFkOwogI2lmIFdFQktJVF9JTVBMRU1F
TlRBVElPTgogICAgICAgICBvcGVyYXRvciBXZWJDb3JlOjpDQ1NldHRpbmdzKCkgY29uc3Q7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRp
bmdzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4
IDEyMzZiMzI3ZDA2NDkwMzZkM2ZmOWM4MzUxMjBjZDcwMmExZjRjMjcuLjFlN2Q2OTdiZWQ2OTZl
MzVlNDkzMDcxOTE4ZjhiYTQ1MzY5MjUxNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViU2V0dGluZ3MuaApAQCAtMTE3LDggKzExNyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TGVnYWN5QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQoYm9vbCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRNaW5pbXVtQWNjZWxlcmF0ZWQyZENhbnZhc1NpemUoaW50KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoYm9vbCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VUaHJlYWRlZENvbXBvc2l0b3IoYm9vbCkgPSAw
OwotICAgIHZpcnR1YWwgYm9vbCB1c2VUaHJlYWRlZENvbXBvc2l0b3IoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwCmlu
ZGV4IDgxZGVlMmYxYjI1YTg3NWI2ZGUxOGEyNTllNzJhNTgwYWM3ZDBhOTMuLjQ2MTM0ZTA0ZWU1
MThhOWExYjBlNmFlYzA0YzQ4ZDFlNGY0ZWQ1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5jcHAKQEAgLTI4LDYgKzI4LDggQEAKICNpbmNs
dWRlICJXZWJDb21wb3NpdG9ySW1wbC5oIgogCiAjaW5jbHVkZSAiQ0NUaHJlYWRJbXBsLmgiCisj
aW5jbHVkZSAiV2ViS2l0LmgiCisjaW5jbHVkZSAiV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCiAj
aW5jbHVkZSAiV2ViQ29tcG9zaXRvckNsaWVudC5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnQu
aCIKICNpbmNsdWRlICJjYy9DQ1Njcm9sbENvbnRyb2xsZXIuaCIKQEAgLTQ3LDEyICs0OSw0NCBA
QCBQYXNzT3duUHRyPENDSW5wdXRIYW5kbGVyPiBDQ0lucHV0SGFuZGxlcjo6Y3JlYXRlKENDU2Ny
b2xsQ29udHJvbGxlciogc2Nyb2xsQ29udAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBX
ZWJDb21wb3NpdG9yOjpzZXRUaHJlYWQoV2ViVGhyZWFkKiBjb21wb3NpdG9yVGhyZWFkKQorYm9v
bCBXZWJDb21wb3NpdG9ySW1wbDo6c19pbml0aWFsaXplZCA9IGZhbHNlOworT3duUHRyPENDVGhy
ZWFkPiBXZWJDb21wb3NpdG9ySW1wbDo6c19tYWluVGhyZWFkOworT3duUHRyPENDVGhyZWFkPiBX
ZWJDb21wb3NpdG9ySW1wbDo6c19pbXBsVGhyZWFkOworCit2b2lkIFdlYkNvbXBvc2l0b3I6Omlu
aXRpYWxpemUoV2ViVGhyZWFkKiBpbXBsVGhyZWFkKQoreworICAgIFdlYkNvbXBvc2l0b3JJbXBs
Ojppbml0aWFsaXplKGltcGxUaHJlYWQpOworfQordm9pZCBXZWJDb21wb3NpdG9yOjpzaHV0ZG93
bigpCiB7Ci0gICAgQVNTRVJUKGNvbXBvc2l0b3JUaHJlYWQpOwotICAgIENDVGhyZWFkUHJveHk6
OnNldEltcGxUaHJlYWQoQ0NUaHJlYWRJbXBsOjpjcmVhdGUoY29tcG9zaXRvclRocmVhZCkubGVh
a1B0cigpKTsKKyAgICBXZWJDb21wb3NpdG9ySW1wbDo6c2h1dGRvd24oKTsKIH0KIAordm9pZCBX
ZWJDb21wb3NpdG9ySW1wbDo6aW5pdGlhbGl6ZShXZWJUaHJlYWQqIGltcGxUaHJlYWQpCit7Cisg
ICAgQVNTRVJUKCFzX2luaXRpYWxpemVkKTsKKyAgICBzX2luaXRpYWxpemVkID0gdHJ1ZTsKKwor
ICAgIHNfbWFpblRocmVhZCA9IENDVGhyZWFkSW1wbDo6Y3JlYXRlKHdlYktpdFBsYXRmb3JtU3Vw
cG9ydCgpLT5jdXJyZW50VGhyZWFkKCkpOworICAgIENDUHJveHk6OnNldE1haW5UaHJlYWQoc19t
YWluVGhyZWFkLmdldCgpKTsKKyAgICBpZiAoaW1wbFRocmVhZCkgeworICAgICAgICBzX2ltcGxU
aHJlYWQgPSBDQ1RocmVhZEltcGw6OmNyZWF0ZShpbXBsVGhyZWFkKTsKKyAgICAgICAgQ0NQcm94
eTo6c2V0SW1wbFRocmVhZChzX2ltcGxUaHJlYWQuZ2V0KCkpOworICAgIH0gZWxzZQorICAgICAg
ICBDQ1Byb3h5OjpzZXRJbXBsVGhyZWFkKDApOworfQorCit2b2lkIFdlYkNvbXBvc2l0b3JJbXBs
OjpzaHV0ZG93bigpCit7CisgICAgQVNTRVJUKHNfaW5pdGlhbGl6ZWQpOworICAgIEFTU0VSVCgh
Q0NMYXllclRyZWVIb3N0OjphbnlMYXllclRyZWVIb3N0SW5zdGFuY2VFeGlzdHMoKSk7CisKKyAg
ICBzX2ltcGxUaHJlYWQuY2xlYXIoKTsKKyAgICBzX21haW5UaHJlYWQuY2xlYXIoKTsKKyAgICBD
Q1Byb3h5OjpzZXRJbXBsVGhyZWFkKDApOworICAgIENDUHJveHk6OnNldE1haW5UaHJlYWQoMCk7
CisgICAgc19pbml0aWFsaXplZCA9IGZhbHNlOworfQogCiAvLyBUaGVzZSBzdGF0aWNzIG1heSBv
bmx5IGJlIGFjY2Vzc2VkIGZyb20gdGhlIGNvbXBvc2l0b3IgdGhyZWFkLgogaW50IFdlYkNvbXBv
c2l0b3JJbXBsOjpzX25leHRBdmFpbGFibGVJZGVudGlmaWVyID0gMTsKQEAgLTYwLDEyICs5NCwx
MiBAQCBIYXNoU2V0PFdlYkNvbXBvc2l0b3JJbXBsKj4qIFdlYkNvbXBvc2l0b3JJbXBsOjpzX2Nv
bXBvc2l0b3JzID0gMDsKIAogV2ViQ29tcG9zaXRvciogV2ViQ29tcG9zaXRvcjo6ZnJvbUlkZW50
aWZpZXIoaW50IGlkZW50aWZpZXIpCiB7Ci0gICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVh
ZCgpKTsKICAgICByZXR1cm4gV2ViQ29tcG9zaXRvckltcGw6OmZyb21JZGVudGlmaWVyKGlkZW50
aWZpZXIpOwogfQogCiBXZWJDb21wb3NpdG9yKiBXZWJDb21wb3NpdG9ySW1wbDo6ZnJvbUlkZW50
aWZpZXIoaW50IGlkZW50aWZpZXIpCiB7CisgICAgQVNTRVJUKHNfaW5pdGlhbGl6ZWQpOwogICAg
IEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAKICAgICBpZiAoIXNfY29tcG9zaXRv
cnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9y
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuaApp
bmRleCBmNGU0ZTIxZDk0MTU5NmViZDJjODQxZDFhZjEyYTNmYjk2ZTIyNWM4Li45MTE4MmMxZmM3
MmZmNGRlY2ZjZWQwYjkyYzJhMDA5YmRkNTliMmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRl
ICJjYy9DQ0lucHV0SGFuZGxlci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTXV0ZXg7CkBAIC0z
OSw2ICszOSw3IEBAIGNsYXNzIE11dGV4OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBD
Q1Njcm9sbENvbnRyb2xsZXI7CitjbGFzcyBDQ1RocmVhZDsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC02NSwxMiArNjYsMjAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IGlkZW50aWZp
ZXIoKSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgV2ViQ29tcG9zaXRvcjsK
KyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKFdlYlRocmVhZCogaW1wbFRocmVhZCk7CisgICAg
c3RhdGljIHZvaWQgc2h1dGRvd24oKTsKKwogICAgIGV4cGxpY2l0IFdlYkNvbXBvc2l0b3JJbXBs
KFdlYkNvcmU6OkNDU2Nyb2xsQ29udHJvbGxlciopOwogCiAgICAgV2ViQ29tcG9zaXRvckNsaWVu
dCogbV9jbGllbnQ7CiAgICAgaW50IG1faWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpDQ1Njcm9s
bENvbnRyb2xsZXIqIG1fc2Nyb2xsQ29udHJvbGxlcjsKIAorICAgIHN0YXRpYyBib29sIHNfaW5p
dGlhbGl6ZWQ7CisgICAgc3RhdGljIE93blB0cjxXZWJDb3JlOjpDQ1RocmVhZD4gc19tYWluVGhy
ZWFkOworICAgIHN0YXRpYyBPd25QdHI8V2ViQ29yZTo6Q0NUaHJlYWQ+IHNfaW1wbFRocmVhZDsK
KwogICAgIHN0YXRpYyBpbnQgc19uZXh0QXZhaWxhYmxlSWRlbnRpZmllcjsKICAgICBzdGF0aWMg
SGFzaFNldDxXZWJDb21wb3NpdG9ySW1wbCo+KiBzX2NvbXBvc2l0b3JzOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCmluZGV4IDdiY2Q5Y2YyMzlhNTFjZDUyYjQyOTdmNWVk
YzIwMDg3NDlhMDZlMWYuLjYyYjQxODA4ZDcwNTMxOGUwNTUwOWM3MmU5NjNmNmZmODIyZjFjY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcApAQCAtMzEsOCArMzEsNiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogCi0jaW5jbHVkZSAiQ0NU
aHJlYWRJbXBsLmgiCi0jaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
IgpAQCAtOTgsMTUgKzk2LDExIEBAIHZvaWQgaW5pdGlhbGl6ZVdpdGhvdXRWOChXZWJLaXRQbGF0
Zm9ybVN1cHBvcnQqIHdlYktpdFBsYXRmb3JtU3VwcG9ydCkKICAgICAvLyB0aGUgaW5pdGlhbGl6
YXRpb24gdGhyZWFkLXNhZmUsIGJ1dCBnaXZlbiB0aGF0IHNvIG1hbnkgY29kZSBwYXRocyB1c2UK
ICAgICAvLyB0aGlzLCBpbml0aWFsaXppbmcgdGhpcyBsYXppbHkgcHJvYmFibHkgZG9lc24ndCBi
dXkgdXMgbXVjaC4KICAgICBXZWJDb3JlOjpVVEY4RW5jb2RpbmcoKTsKLQotICAgIFdlYkNvcmU6
OkNDUHJveHk6OnNldE1haW5UaHJlYWQoQ0NUaHJlYWRJbXBsOjpjcmVhdGUod2ViS2l0UGxhdGZv
cm1TdXBwb3J0LT5jdXJyZW50VGhyZWFkKCkpLmxlYWtQdHIoKSk7CiB9CiAKIAogdm9pZCBzaHV0
ZG93bigpCiB7Ci0gICAgZGVsZXRlIFdlYkNvcmU6OkNDUHJveHk6Om1haW5UaHJlYWQoKTsKLSAg
ICBXZWJDb3JlOjpDQ1Byb3h5OjpzZXRNYWluVGhyZWFkKDApOwogICAgIHNfd2ViS2l0UGxhdGZv
cm1TdXBwb3J0ID0gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJM
YXllclRyZWVWaWV3LmNwcAppbmRleCBjNzY4ZTFhNjYyOTc3YWQ2MWI0MTI1YTk1ODQzMjZkMGE1
OWY1NzViLi42Yjg5YWU5MDkyOGQxNDVhMTMzYjllYjQyYjFkODA2N2I2ZWY3Nzg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcApAQCAtMzks
NyArMzksNiBAQCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NTZXR0aW5n
cygpIGNvbnN0CiAgICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKICAgICBzZXR0aW5ncy5hY2NlbGVy
YXRlUGFpbnRpbmcgPSBhY2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgc2V0dGluZ3MuY29tcG9zaXRl
T2Zmc2NyZWVuID0gY29tcG9zaXRlT2Zmc2NyZWVuOwotICAgIHNldHRpbmdzLmVuYWJsZUNvbXBv
c2l0b3JUaHJlYWQgPSBlbmFibGVDb21wb3NpdG9yVGhyZWFkOwogCiAgICAgLy8gRklYTUU6IHNo
b3dGUFNDb3VudGVyIC8gc2hvd1BsYXRmb3JtTGF5ZXJUcmVlIGFyZW4ndCBzdXBwb3J0ZWQgY3Vy
cmVudGx5LgogICAgIHNldHRpbmdzLnNob3dGUFNDb3VudGVyID0gZmFsc2U7CkBAIC02OSw3ICs2
OCw3IEBAIGJvb2wgV2ViTGF5ZXJUcmVlVmlldzo6ZXF1YWxzKGNvbnN0IFdlYkxheWVyVHJlZVZp
ZXcmIG4pIGNvbnN0CiAKIHZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6Y29tcG9zaXRlKCkKIHsKLSAg
ICBpZiAobV9wcml2YXRlLT5zZXR0aW5ncygpLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQpCisgICAg
aWYgKENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSkKICAgICAgICAgbV9wcml2YXRlLT5zZXROZWVk
c0NvbW1pdCgpOwogICAgIGVsc2UKICAgICAgICAgbV9wcml2YXRlLT5jb21wb3NpdGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNw
cAppbmRleCA4Yzg2ODRiNmZjYThjOWYzMGQxYjc3MTYwZjAyNTkzODI0YmJiOTUwLi5hNmYxZDBm
YWY1YmJmNzFlNzRhYTM5MGU0MGEwNGVlMmJmM2Y1ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCkBAIC0zNSw2ICszNSw3
IEBACiAjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oIgogI2luY2x1ZGUgIldlYlNp
emUuaCIKICNpbmNsdWRlICJXZWJUaHJlYWQuaCIKKyNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5
LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC05Miw3ICs5Myw3IEBAIFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IFdlYkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGVMYXll
clRyZWVIb3N0Q29udGV4dDNECiAgICAgYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIg
PSBmYWxzZTsKIAogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSBzdHlsZSA9IEdy
YXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdzsKLSAgICBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OlRocmVhZFVzYWdlIHVzYWdlID0gc2V0dGluZ3MoKS5lbmFibGVD
b21wb3NpdG9yVGhyZWFkID8gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpGb3JVc2VPbkFub3Ro
ZXJUaHJlYWQgOiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkZvclVzZU9uVGhpc1RocmVhZDsK
KyAgICBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OlRocmVhZFVzYWdlIHVzYWdlID0gQ0NQcm94
eTo6aGFzSW1wbFRocmVhZCgpID8gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpGb3JVc2VPbkFu
b3RoZXJUaHJlYWQgOiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkZvclVzZU9uVGhpc1RocmVh
ZDsKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRGcm9tV2ViQ29udGV4dCh3ZWJDb250ZXh0LnJlbGVhc2UoKSwgYXR0cmlidXRlcywgMCwg
c3R5bGUsIHVzYWdlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5jcHAKaW5kZXggMjQyYWVkMjIxYmE3NWQwYjM0MDlkNjcyN2RmNDQzOTg3NGU2
MWFhMC4uMjc5YTI5ODQzN2NmZDkzMmFhOWVmOThhZjhhYWRkZTk5ZTQ2NThmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC01MCw3ICs1
MCw2IEBAIFdlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKFNldHRpbmdzKiBzZXR0aW5n
cykKICAgICAsIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2hv
d0ZQU0NvdW50ZXIoZmFsc2UpCiAgICAgLCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkK
LSAgICAsIG1fdXNlVGhyZWFkZWRDb21wb3NpdG9yKGZhbHNlKQogewogICAgIEFTU0VSVChzZXR0
aW5ncyk7CiB9CkBAIC0zNzksMTEgKzM3OCw2IEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRN
aW5pbXVtQWNjZWxlcmF0ZWQyZENhbnZhc1NpemUoaW50IG51bVBpeGVscykKICAgICBtX3NldHRp
bmdzLT5zZXRNaW5pbXVtQWNjZWxlcmF0ZWQyZENhbnZhc1NpemUobnVtUGl4ZWxzKTsKIH0KIAot
dm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFVzZVRocmVhZGVkQ29tcG9zaXRvcihib29sIHVzZVRo
cmVhZGVkQ29tcG9zaXRvcikKLXsKLSAgICBtX3VzZVRocmVhZGVkQ29tcG9zaXRvciA9IHVzZVRo
cmVhZGVkQ29tcG9zaXRvcjsKLX0KLQogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldE1lbW9yeUlu
Zm9FbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX3NldHRpbmdzLT5zZXRNZW1vcnlJbmZv
RW5hYmxlZChlbmFibGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNldHRpbmdzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGlu
Z3NJbXBsLmgKaW5kZXggZmEzNGFhODhlNDEwMTZjMTg5OGQ1MjUwMmFhZDBlMzUwNDI3NzI5Yi4u
M2RiMDU3ZDk3NDZmOGY3NWRiMTAxNmM1ODc3OTA0YjIyN2Q0NTM1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTEwOSw4ICsxMDksNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldExlZ2FjeUFjY2VsZXJhdGVkMmRDYW52YXNFbmFi
bGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNaW5pbXVtQWNjZWxlcmF0ZWQyZENhbnZh
c1NpemUoaW50KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxl
ZChib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlVGhyZWFkZWRDb21wb3NpdG9yKGJvb2wp
OwotICAgIHZpcnR1YWwgYm9vbCB1c2VUaHJlYWRlZENvbXBvc2l0b3IoKSBjb25zdCB7IHJldHVy
biBtX3VzZVRocmVhZGVkQ29tcG9zaXRvcjsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNZW1vcnlJ
bmZvRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SHlwZXJsaW5rQXVkaXRpbmdF
bmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNr
aW5nRW5hYmxlZChib29sKTsKQEAgLTEzMSw3ICsxMjksNiBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkOwogICAgIGJvb2wgbV9zaG93RlBTQ291bnRlcjsK
ICAgICBib29sIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOwotICAgIGJvb2wgbV91c2VUaHJlYWRl
ZENvbXBvc2l0b3I7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBiMzNiMTBkODM5MGM2YmFkNmJmMTYx
YzExY2IzYWEzNWYwZWI4MTEwLi5kOGQzYzI4OGZiMzc1MjNmZDI2YmIzNmNjOTY1MTE1ODA3OWIw
YWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0x
MzQsNyArMTM0LDcgQEAKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJWZWN0
b3IuaCIKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCi0jaW5jbHVkZSAiY2MvQ0NIZWFkc1Vw
RGlzcGxheS5oIgorI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvQnl0ZUFy
cmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KQEAgLTExMzMsMTIgKzExMzMsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6YW5pbWF0
ZShkb3VibGUgZnJhbWVCZWdpblRpbWUpCiAgICAgaWYgKHdlYmZyYW1lKSB7CiAgICAgICAgIEZy
YW1lVmlldyogdmlldyA9IHdlYmZyYW1lLT5mcmFtZVZpZXcoKTsKICAgICAgICAgaWYgKHZpZXcp
IHsKLSAgICAgICAgICAgIGlmICghc2V0dGluZ3MoKS0+dXNlVGhyZWFkZWRDb21wb3NpdG9yKCkg
JiYgbV9sYXllclRyZWVIb3N0KQorICAgICAgICAgICAgaWYgKCFDQ1Byb3h5OjpoYXNJbXBsVGhy
ZWFkKCkgJiYgbV9sYXllclRyZWVIb3N0KQogICAgICAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+c2V0QW5pbWF0aW5nKHRydWUpOwogCiAgICAgICAgICAgICB2aWV3LT5zZXJ2aWNlU2NyaXB0
ZWRBbmltYXRpb25zKGNvbnZlcnRTZWNvbmRzVG9ET01UaW1lU3RhbXAoZnJhbWVCZWdpblRpbWUp
KTsKIAotICAgICAgICAgICAgaWYgKCFzZXR0aW5ncygpLT51c2VUaHJlYWRlZENvbXBvc2l0b3Io
KSAmJiBtX2xheWVyVHJlZUhvc3QpCisgICAgICAgICAgICBpZiAoIUNDUHJveHk6Omhhc0ltcGxU
aHJlYWQoKSAmJiBtX2xheWVyVHJlZUhvc3QpCiAgICAgICAgICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5zZXRBbmltYXRpbmcoZmFsc2UpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTI0MCw3ICsx
MjQwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dGhlbWVDaGFuZ2VkKCkKIHZvaWQgV2ViVmlld0lt
cGw6OmNvbXBvc2l0ZShib29sKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
LSAgICBpZiAoc2V0dGluZ3MoKS0+dXNlVGhyZWFkZWRDb21wb3NpdG9yKCkpCisgICAgaWYgKEND
UHJveHk6Omhhc0ltcGxUaHJlYWQoKSkKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXROZWVk
c1JlZHJhdygpOwogICAgIGVsc2UgewogICAgICAgICBBU1NFUlQoaXNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQWN0aXZlKCkpOwpAQCAtMjc2NCw3ICsyNzY0LDcgQEAgV2ViQ29yZTo6Tm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0KiBXZWJWaWV3SW1wbDo6bm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KCkK
IHZvaWQgV2ViVmlld0ltcGw6OnNjaGVkdWxlQW5pbWF0aW9uKCkKIHsKICAgICBpZiAoaXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpIHsKLSAgICAgICAgaWYgKHNldHRpbmdzKCktPnVz
ZVRocmVhZGVkQ29tcG9zaXRvcigpKSB7CisgICAgICAgIGlmIChDQ1Byb3h5OjpoYXNJbXBsVGhy
ZWFkKCkpIHsKICAgICAgICAgICAgIEFTU0VSVChtX2xheWVyVHJlZUhvc3QpOwogICAgICAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0FuaW1hdGUoKTsKICAgICAgICAgfSBlbHNlCkBA
IC0yODM1LDcgKzI4MzUsNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgIFdlYkNvcmU6OkNDU2V0dGluZ3Mg
Y2NTZXR0aW5nczsKICAgICAgICAgY2NTZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBwYWdl
KCktPnNldHRpbmdzKCktPmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoKTsKICAgICAgICAgY2NT
ZXR0aW5ncy5jb21wb3NpdGVPZmZzY3JlZW4gPSBzZXR0aW5ncygpLT5jb21wb3NpdGVUb1RleHR1
cmVFbmFibGVkKCk7Ci0gICAgICAgIGNjU2V0dGluZ3MuZW5hYmxlQ29tcG9zaXRvclRocmVhZCA9
IHNldHRpbmdzKCktPnVzZVRocmVhZGVkQ29tcG9zaXRvcigpOwogICAgICAgICBjY1NldHRpbmdz
LnNob3dGUFNDb3VudGVyID0gc2V0dGluZ3MoKS0+c2hvd0ZQU0NvdW50ZXIoKTsKICAgICAgICAg
Y2NTZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUgPSBzZXR0aW5ncygpLT5zaG93UGxhdGZv
cm1MYXllclRyZWUoKTsKICAgICAgICAgY2NTZXR0aW5ncy5yZWZyZXNoUmF0ZSA9IHNjcmVlblJl
ZnJlc2hSYXRlKHBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKSk7CkBAIC0yODcyLDcgKzI4NzEs
NyBAQCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBXZWJWaWV3SW1wbDo6Y3JlYXRlTGF5
ZXJUcmVlSG9zdENvbnRleHQzRCgpCiB7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBj
b250ZXh0ID0gbV90ZW1wb3JhcnlPbnNjcmVlbkdyYXBoaWNzQ29udGV4dDNELnJlbGVhc2UoKTsK
ICAgICBpZiAoIWNvbnRleHQpIHsKLSAgICAgICAgaWYgKHNldHRpbmdzKCktPnVzZVRocmVhZGVk
Q29tcG9zaXRvcigpKQorICAgICAgICBpZiAoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKQogICAg
ICAgICAgICAgY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0Rm9yQW5vdGhlclRocmVhZChnZXRDb21wb3NpdG9yQ29udGV4dEF0dHJpYnV0ZXMo
KSwgbV9wYWdlLT5jaHJvbWUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9I
b3N0V2luZG93KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29udGV4dCA9IEdyYXBoaWNz
Q29udGV4dDNEOjpjcmVhdGUoZ2V0Q29tcG9zaXRvckNvbnRleHRBdHRyaWJ1dGVzKCksIG1fcGFn
ZS0+Y2hyb21lKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRv
dyk7CkBAIC0yOTQwLDcgKzI5MzksNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkaWRSZWNyZWF0ZUdy
YXBoaWNzQ29udGV4dChib29sIHN1Y2Nlc3MpCiAKIHZvaWQgV2ViVmlld0ltcGw6OnNjaGVkdWxl
Q29tcG9zaXRlKCkKIHsKLSAgICBBU1NFUlQoIXNldHRpbmdzKCktPnVzZVRocmVhZGVkQ29tcG9z
aXRvcigpKTsKKyAgICBBU1NFUlQoIUNDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSk7CiAgICAgbV9j
bGllbnQtPnNjaGVkdWxlQ29tcG9zaXRlKCk7CiB9CiAKQEAgLTI5NzIsNyArMjk3MSw3IEBAIFdl
YkdyYXBoaWNzQ29udGV4dDNEKiBXZWJWaWV3SW1wbDo6Z3JhcGhpY3NDb250ZXh0M0QoKQogICAg
ICAgICAgICAgaWYgKHdlYkNvbnRleHQgJiYgIXdlYkNvbnRleHQtPmlzQ29udGV4dExvc3QoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gd2ViQ29udGV4dDsKICAgICAgICAgfQotICAgICAgICBp
ZiAoc2V0dGluZ3MoKS0+dXNlVGhyZWFkZWRDb21wb3NpdG9yKCkpCisgICAgICAgIGlmIChDQ1By
b3h5OjpoYXNJbXBsVGhyZWFkKCkpCiAgICAgICAgICAgICBtX3RlbXBvcmFyeU9uc2NyZWVuR3Jh
cGhpY3NDb250ZXh0M0QgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dEZvckFub3RoZXJUaHJlYWQoZ2V0Q29tcG9zaXRvckNvbnRleHRBdHRyaWJ1dGVzKCks
IG1fcGFnZS0+Y2hyb21lKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9z
dFdpbmRvdyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5T25zY3JlZW5H
cmFwaGljc0NvbnRleHQzRCA9IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoZ2V0Q29tcG9zaXRv
ckNvbnRleHRBdHRyaWJ1dGVzKCksIG1fcGFnZS0+Y2hyb21lKCksIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CkBAIC0yOTgzLDcgKzI5ODIsNiBAQCBXZWJH
cmFwaGljc0NvbnRleHQzRCogV2ViVmlld0ltcGw6OmdyYXBoaWNzQ29udGV4dDNEKCkKICAgICBy
ZXR1cm4gMDsKIH0KIAotCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRWaXNpYmlsaXR5U3RhdGUoV2Vi
UGFnZVZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBpc0luaXRpYWxTdGF0ZSkgewogICAgIGlmICghcGFnZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAKaW5kZXggNGE0MTc5NjQ3OTEzYjhkZjBhNjdmOTNlMzI4NjlmNGMzZDNlN2NmNi4u
ZTIyMDg4MDg1ZDdlZDBkNjUwMjk1YzY5NTc5ODAwOWY3MmU3YmVlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0y
NDksMTUgKzI0OSw3IEBAIHByb3RlY3RlZDoKICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0KCkKICAg
ICAgICAgOiBtX2JlZ2lubmluZyhmYWxzZSkKICAgICAgICAgLCBtX2VuZFdoZW5CZWdpblJldHVy
bnMoZmFsc2UpCi0gICAgICAgICwgbV90aW1lZE91dChmYWxzZSkKLSAgICB7Ci0gICAgICAgIG1f
d2ViVGhyZWFkID0gYWRvcHRQdHIod2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmNyZWF0ZVRocmVh
ZCgiQ0NMYXllclRyZWVIb3N0VGVzdCIpKTsKLSAgICAgICAgQVNTRVJUKENDUHJveHk6Om1haW5U
aHJlYWQoKSk7Ci0KLSAgICAgICAgV2ViQ29tcG9zaXRvcjo6c2V0VGhyZWFkKG1fd2ViVGhyZWFk
LmdldCgpKTsKLSAgICAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKLSAgICAg
ICAgbV9tYWluVGhyZWFkUHJveHkgPSBDQ1Njb3BlZFRocmVhZFByb3h5OjpjcmVhdGUoQ0NQcm94
eTo6bWFpblRocmVhZCgpKTsKLSAgICB9CisgICAgICAgICwgbV90aW1lZE91dChmYWxzZSkgeyB9
CiAKICAgICB2b2lkIGRvQmVnaW5UZXN0KCk7CiAKQEAgLTI3MSw5ICsyNjMsNiBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIHdlYmtpdF9zdXBw
b3J0OjpRdWl0TWVzc2FnZUxvb3AoKTsKICAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBl
bmRpbmdNZXNzYWdlcygpOwotICAgICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0ID0gc3Rh
dGljX2Nhc3Q8Q0NMYXllclRyZWVIb3N0VGVzdCo+KHNlbGYpOwotICAgICAgICBBU1NFUlRfVFJV
RSh0ZXN0KTsKLSAgICAgICAgdGVzdC0+bV9sYXllclRyZWVIb3N0LmNsZWFyKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hTZXROZWVkc0FuaW1hdGUodm9pZCogc2VsZikKQEAg
LTM2MiwxNCArMzUxLDI3IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBydW5UZXN0
KGJvb2wgdGhyZWFkZWQpCiAgICAgewotICAgICAgICBtX3NldHRpbmdzLmVuYWJsZUNvbXBvc2l0
b3JUaHJlYWQgPSB0aHJlYWRlZDsKICAgICAgICAgbV9zZXR0aW5ncy5yZWZyZXNoUmF0ZSA9IDEw
MC4wOworCisgICAgICAgIGlmICh0aHJlYWRlZCkgeworICAgICAgICAgICAgbV93ZWJUaHJlYWQg
PSBhZG9wdFB0cih3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y3JlYXRlVGhyZWFkKCJDQ0xheWVy
VHJlZUhvc3RUZXN0IikpOworICAgICAgICAgICAgV2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSht
X3dlYlRocmVhZC5nZXQoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgV2ViQ29tcG9z
aXRvcjo6aW5pdGlhbGl6ZSgwKTsKKworICAgICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhy
ZWFkKCkpOworICAgICAgICBtX21haW5UaHJlYWRQcm94eSA9IENDU2NvcGVkVGhyZWFkUHJveHk6
OmNyZWF0ZShDQ1Byb3h5OjptYWluVGhyZWFkKCkpOworCiAgICAgICAgIHdlYmtpdF9zdXBwb3J0
OjpQb3N0RGVsYXllZFRhc2soQ0NMYXllclRyZWVIb3N0VGVzdDo6b25CZWdpblRlc3QsIHN0YXRp
Y19jYXN0PHZvaWQqPih0aGlzKSwgMCk7CiAgICAgICAgIG1fdGltZW91dFRhc2sgPSBuZXcgVGlt
ZW91dFRhc2sodGhpcyk7CiAgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpQb3N0RGVsYXllZFRhc2so
bV90aW1lb3V0VGFzaywgNTAwMCk7IC8vIHdlYmtpdF9zdXBwb3J0IHRha2VzIG93bmVyc2hpcCBv
ZiB0aGUgdGFzawogICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UnVuTWVzc2FnZUxvb3AoKTsKICAg
ICAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOwogCisgICAgICAg
IGlmIChtX2xheWVyVHJlZUhvc3QgJiYgbV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIoKSkKKyAg
ICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCktPnNldExheWVyVHJlZUhvc3Qo
MCk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC5jbGVhcigpOworCiAgICAgICAgIGlmIChtX3Rp
bWVvdXRUYXNrKQogICAgICAgICAgICAgbV90aW1lb3V0VGFzay0+Y2xlYXJUZXN0KCk7CiAKQEAg
LTM3NywxMCArMzc5LDExIEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9jbGllbnQuY2xlYXIoKTsK
ICAgICAgICAgaWYgKG1fdGltZWRPdXQpIHsKICAgICAgICAgICAgIEZBSUwoKSA8PCAiVGVzdCB0
aW1lZCBvdXQiOworICAgICAgICAgICAgV2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX3Jvb3RMYXllci0+c2V0TGF5ZXJU
cmVlSG9zdCgwKTsKICAgICAgICAgYWZ0ZXJUZXN0KCk7CisgICAgICAgIFdlYkNvbXBvc2l0b3I6
OnNodXRkb3duKCk7CiAgICAgfQogCiAgICAgQ0NTZXR0aW5ncyBtX3NldHRpbmdzOwpAQCAtMzky
LDcgKzM5NSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2VuZFdoZW5CZWdpblJldHVybnM7CiAg
ICAgYm9vbCBtX3RpbWVkT3V0OwogCi0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9vdExh
eWVyOwogICAgIE93blB0cjxXZWJUaHJlYWQ+IG1fd2ViVGhyZWFkOwogICAgIFJlZlB0cjxDQ1Nj
b3BlZFRocmVhZFByb3h5PiBtX21haW5UaHJlYWRQcm94eTsKICAgICBUaW1lb3V0VGFzayogbV90
aW1lb3V0VGFzazsKQEAgLTQwMywxMCArNDA1LDEwIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0VGVz
dDo6ZG9CZWdpblRlc3QoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9jbGll
bnQgPSBNb2NrTGF5ZXJUcmVlSG9zdENsaWVudDo6Y3JlYXRlKHRoaXMpOwogCi0gICAgbV9yb290
TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgbV9sYXllclRyZWVIb3N0ID0g
TW9ja0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlzLCBtX2NsaWVudC5nZXQoKSwgbV9yb290TGF5
ZXIsIG1fc2V0dGluZ3MpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByb290TGF5ZXIgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAgbV9sYXllclRyZWVIb3N0ID0gTW9ja0xheWVy
VHJlZUhvc3Q6OmNyZWF0ZSh0aGlzLCBtX2NsaWVudC5nZXQoKSwgcm9vdExheWVyLCBtX3NldHRp
bmdzKTsKICAgICBBU1NFUlRfVFJVRShtX2xheWVyVHJlZUhvc3QpOwotICAgIG1fcm9vdExheWVy
LT5zZXRMYXllclRyZWVIb3N0KG1fbGF5ZXJUcmVlSG9zdC5nZXQoKSk7CisgICAgcm9vdExheWVy
LT5zZXRMYXllclRyZWVIb3N0KG1fbGF5ZXJUcmVlSG9zdC5nZXQoKSk7CiAKICAgICBtX2JlZ2lu
bmluZyA9IHRydWU7CiAgICAgYmVnaW5UZXN0KCk7CkBAIC00NDUsNiArNDQ3LDEwIEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQogICAgIHsKKyAgICAgICAgLy8gS2ls
bCB0aGUgbGF5ZXJUcmVlSG9zdCBpbW1lZGlhdGVseS4KKyAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5yb290TGF5ZXIoKS0+c2V0TGF5ZXJUcmVlSG9zdCgwKTsKKyAgICAgICAgbV9sYXllclRyZWVI
b3N0LmNsZWFyKCk7CisKICAgICAgICAgZW5kVGVzdCgpOwogICAgIH0KIApAQCAtNDczLDYgKzQ3
OSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCiAgICAgewogICAg
ICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKKworICAgICAgICAvLyBLaWxs
IHRoZSBsYXllclRyZWVIb3N0IGltbWVkaWF0ZWx5LgorICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnJvb3RMYXllcigpLT5zZXRMYXllclRyZWVIb3N0KDApOworICAgICAgICBtX2xheWVyVHJlZUhv
c3QuY2xlYXIoKTsKKwogICAgICAgICBlbmRUZXN0KCk7CiAgICAgfQogCkBAIC00OTEsNiArNTAy
LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKICAgICB7CiAgICAg
ICAgIHBvc3RTZXROZWVkc1JlZHJhd1RvTWFpblRocmVhZCgpOworCisgICAgICAgIC8vIEtpbGwg
dGhlIGxheWVyVHJlZUhvc3QgaW1tZWRpYXRlbHkuCisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
cm9vdExheWVyKCktPnNldExheWVyVHJlZUhvc3QoMCk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC5jbGVhcigpOworCiAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9CiAKQEAgLTUwMSw4ICs1MTcs
OCBAQCBwdWJsaWM6CiAKIFNJTkdMRV9BTkRfTVVMVElfVEhSRUFEX1RFU1RfRihDQ0xheWVyVHJl
ZUhvc3RUZXN0U2hvcnRsaXZlZDMpCiAKLS8vIENvbnN0YW50bHkgcmVkcmF3aW5nIGxheWVyVHJl
ZUhvc3RzIHNob3VsZG4ndCBkaWUgd2hlbiB0aGV5IGNvbW1pdAotY2xhc3MgQ0NMYXllclRyZWVI
b3N0VGVzdENvbW1pdGluZ1dpdGhDb250aW51b3VzUmVkcmF3IDogcHVibGljIENDTGF5ZXJUcmVl
SG9zdFRlc3QgeworLy8gVGVzdCBpbnRlcmxlYXZpbmcgb2YgcmVkcmF3cyBhbmQgY29tbWl0cwor
Y2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdENvbW1pdGluZ1dpdGhDb250aW51b3VzUmVkcmF3IDog
cHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3RUaHJlYWRPbmx5IHsKIHB1YmxpYzoKICAgICBDQ0xh
eWVyVHJlZUhvc3RUZXN0Q29tbWl0aW5nV2l0aENvbnRpbnVvdXNSZWRyYXcoKQogICAgICAgICA6
IG1fbnVtQ29tcGxldGVDb21taXRzKDApCkBAIC01MTMsNyArNTI5LDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQogICAgIHsKICAgICAgICAgcG9zdFNldE5lZWRzQ29t
bWl0VG9NYWluVGhyZWFkKCk7Ci0gICAgICAgIGVuZFRlc3QoKTsKICAgICB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKQpA
QCAtNTQwLDcgKzU1NSwxMCBAQCBwcml2YXRlOgogICAgIGludCBtX251bURyYXdzOwogfTsKIAot
U0lOR0xFX0FORF9NVUxUSV9USFJFQURfVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RDb21taXRp
bmdXaXRoQ29udGludW91c1JlZHJhdykKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0Q29tbWl0
aW5nV2l0aENvbnRpbnVvdXNSZWRyYXcsIHJ1bk11bHRpVGhyZWFkKQoreworICAgIHJ1blRlc3RU
aHJlYWRlZCgpOworfQogCiAvLyBUd28gc2V0TmVlZHNDb21taXRzIGluIGEgcm93IHNob3VsZCBs
ZWFkIHRvIGF0IGxlYXN0IDEgY29tbWl0IGFuZCBhdCBsZWFzdCAxCiAvLyBkcmF3IHdpdGggZnJh
bWUgMC4KQEAgLTk5MSw2ICsxMDA5LDkgQEAgcHVibGljOgogICAgICAgICAvLyBhbW91dCBvZiB0
aW1lcyBhcyBwYWludENvbnRlbnRzSWZEaXJ0eSgpLgogICAgICAgICBFWFBFQ1RfRVEobV91cGRh
dGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzQ291bnQoKSwKICAgICAgICAgICAgICAgICAgIG1f
dXBkYXRlQ2hlY2tMYXllci0+dXBkYXRlQ291bnQoKSk7CisKKyAgICAgICAgLy8gY2xlYXIgbV91
cGRhdGVDaGVja0xheWVyIHNvIENDTGF5ZXJUcmVlSG9zdCBkaWVzLgorICAgICAgICBtX3VwZGF0
ZUNoZWNrTGF5ZXIuY2xlYXIoKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbXBsVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbXBsVGVzdC5jcHAKaW5kZXgg
YTMzMzM2OWNlZWY1OThhOWJhODk2NzhhMjQyNTgwNTcyMTkyYzRiOS4uZTA3OGU1NDAyZmQ0YjBj
MDc4MTAzMjA2MWVmMWYzZDQyNGRkNjBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvckltcGxUZXN0LmNwcApAQCAtMzksNiArMzksNyBA
QCBuYW1lc3BhY2UgewogCiBURVNUKFdlYkNvbXBvc2l0b3JJbXBsLCBmcm9tSWRlbnRpZmllcikK
IHsKKyAgICBXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOwogI2lmbmRlZiBOREVCVUcKICAg
ICAvLyBXZWJDb21wb3NpdG9yIEFQSXMgY2FuIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIGNvbXBv
c2l0b3IgdGhyZWFkLgogICAgIFdlYkNvcmU6OkRlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBhbHdh
eXNJbXBsVGhyZWFkOwpAQCAtNjIsNiArNjMsOCBAQCBURVNUKFdlYkNvbXBvc2l0b3JJbXBsLCBm
cm9tSWRlbnRpZmllcikKIAogICAgIC8vIEFmdGVyIHRoZSBjb21wb3NpdG9yIGlzIGRlc3Ryb3ll
ZCwgaXRzIGVudHJ5IHNob3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIG1hcC4KICAgICBFWFBFQ1Rf
RVEoMCwgV2ViQ29tcG9zaXRvcjo6ZnJvbUlkZW50aWZpZXIoY29tcG9zaXRvcklkZW50aWZpZXIp
KTsKKworICAgIFdlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2ZmMzMTc1OGZmNzJjZDhm
YTY3ZmZiMGMyZTllYjY0YmRmOTJiNWU1Li5lOThmYmNkZWE3ZDMxZmQ2MzZmYTZlY2JjOWQ4MWE2
Yjg0NDNkMWJlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMTEtMTggIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5hYmxlIHRocmVhZGVkIGNvbXBvc2l0aW5n
IHZpYSBDQ1RocmVhZFByb3h5OjpoYXNUaHJlYWQgb25seQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA4MzgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RT
aGVsbC5jcHA6CisgICAgICAgIChUZXN0U2hlbGw6OnJlc2V0V2ViU2V0dGluZ3MpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oOgorICAgICAgICAoVGVzdFNo
ZWxsOjp0aHJlYWRlZENvbXBvc2l0aW5nRW5hYmxlZCk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6
OnJlc2V0KToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjphcHBseVRvKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5oOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdIb3N0
OjpXZWJWaWV3SG9zdCk6CisgICAgICAgIChXZWJWaWV3SG9zdDo6fldlYlZpZXdIb3N0KToKKwog
MjAxMS0xMS0xOCAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+CiAKICAgICAgICAgQWRk
IENNYWtlIGJ1aWxkIGluZnJhc3RydWN0dXJlIGZvciB0aGUgQmxhY2tCZXJyeSBwb3J0CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAppbmRleCA4NTA3ZjI0YzAy
MjMzYmNkMTA4ODExZjBiYzcxN2I1NjNkZTdjZjA4Li41OTY0MDYzN2E0OTYzNDZjNjdiMTkxMjk2
ZTZmNWZmZGQ4NjQxM2RkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RT
aGVsbC5jcHAKQEAgLTE5OSw3ICsxOTksNiBAQCB2b2lkIFRlc3RTaGVsbDo6cmVzZXRXZWJTZXR0
aW5ncyhXZWJWaWV3JiB3ZWJWaWV3KQogICAgIG1fcHJlZnMucmVzZXQoKTsKICAgICBtX3ByZWZz
LmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkID0gdHJ1ZTsKICAgICBtX3ByZWZzLmFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQgPSBtX2FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdGb3JWaWRlb0VuYWJsZWQ7Ci0gICAgbV9wcmVmcy50aHJlYWRlZENvbXBvc2l0aW5nRW5hYmxl
ZCA9IG1fdGhyZWFkZWRDb21wb3NpdGluZ0VuYWJsZWQ7CiAgICAgbV9wcmVmcy5jb21wb3NpdGVU
b1RleHR1cmUgPSBtX2NvbXBvc2l0ZVRvVGV4dHVyZTsKICAgICBtX3ByZWZzLmZvcmNlQ29tcG9z
aXRpbmdNb2RlID0gbV9mb3JjZUNvbXBvc2l0aW5nTW9kZTsKICAgICBtX3ByZWZzLmFjY2VsZXJh
dGVkMmRDYW52YXNFbmFibGVkID0gbV9hY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZDsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKaW5kZXggYjE5NGViMGIyMzk2MzBl
MTIzZGZiNDMxMmQwY2Y3NDEzNzM4NjIxMS4uMDkwMDc5NGI0MGVlYzIzNjc0MzlkNmFkMWNlYmJi
ZGE1ZTFhYzFkOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFNoZWxsLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgK
QEAgLTEzMCw2ICsxMzAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fYWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0ZvclZpZGVvRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICB2b2lkIHNldFRocmVhZGVk
Q29tcG9zaXRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3RocmVhZGVkQ29tcG9zaXRpbmdF
bmFibGVkID0gZW5hYmxlZDsgfQorICAgIGJvb2wgdGhyZWFkZWRDb21wb3NpdGluZ0VuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX3RocmVhZGVkQ29tcG9zaXRpbmdFbmFibGVkOyB9CiAgICAgdm9p
ZCBzZXRDb21wb3NpdGVUb1RleHR1cmUoYm9vbCBlbmFibGVkKSB7IG1fY29tcG9zaXRlVG9UZXh0
dXJlID0gZW5hYmxlZDsgfQogICAgIHZvaWQgc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoYm9vbCBl
bmFibGVkKSB7IG1fZm9yY2VDb21wb3NpdGluZ01vZGUgPSBlbmFibGVkOyB9CiAgICAgdm9pZCBz
ZXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9hY2NlbGVyYXRl
ZDJkQ2FudmFzRW5hYmxlZCA9IGVuYWJsZWQ7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCA1Y2M4ZmFiOTk1OGE3OTZhYzQ5ZGU4
MTQxOWFhOTlmMGRkMzJmYzZiLi43NWEwNTc3ODk4YTJkZmFhMzg1NGQwZmI2NTU4ZTkwNmQxMzMy
NmQ5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJl
bmNlcy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5j
ZXMuY3BwCkBAIC0xMDksNyArMTA5LDYgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6cmVzZXQoKQog
ICAgIGh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZCA9IGZhbHNlOwogICAgIGFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQgPSBmYWxzZTsKICAgICBhY2NlbGVyYXRlZENvbXBvc2l0
aW5nRW5hYmxlZCA9IGZhbHNlOwotICAgIHRocmVhZGVkQ29tcG9zaXRpbmdFbmFibGVkID0gZmFs
c2U7CiAgICAgY29tcG9zaXRlVG9UZXh0dXJlID0gZmFsc2U7CiAgICAgYWNjZWxlcmF0ZWQyZENh
bnZhc0VuYWJsZWQgPSBmYWxzZTsKICAgICBsZWdhY3lBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxl
ZCA9IGZhbHNlOwpAQCAtMjEzLDcgKzIxMiw2IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmFwcGx5
VG8oV2ViVmlldyogd2ViVmlldykKICAgICBzZXR0aW5ncy0+c2V0Q2FyZXRCcm93c2luZ0VuYWJs
ZWQoY2FyZXRCcm93c2luZ0VuYWJsZWQpOwogICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nRW5hYmxlZChhY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCk7CiAgICAgc2V0
dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQoYWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZCk7Ci0gICAgc2V0dGluZ3MtPnNldFVzZVRocmVh
ZGVkQ29tcG9zaXRvcih0aHJlYWRlZENvbXBvc2l0aW5nRW5hYmxlZCk7CiAgICAgc2V0dGluZ3Mt
PnNldENvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoY29tcG9zaXRlVG9UZXh0dXJlKTsKICAgICBz
ZXR0aW5ncy0+c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoZm9yY2VDb21wb3NpdGluZ01vZGUpOwog
ICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZChhY2NlbGVyYXRlZDJk
Q2FudmFzRW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJQcmVmZXJlbmNlcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJl
ZmVyZW5jZXMuaAppbmRleCAyMzM3YTQwNTU5ZDBlOGFjNGZhNzY1ZTg1MzYxNjQ4YjIxM2IwYTli
Li4yMTY0OTQ0OGQ4OWU4YjRjMTliMzc2OTk2ZGFmMTY4MTRkYWQyYjRlIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5oCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmgKQEAgLTEwMiw3ICsxMDIs
NiBAQCBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXMgewogICAgIGJvb2wgY2FyZXRCcm93c2luZ0VuYWJs
ZWQ7CiAgICAgYm9vbCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkOwogICAg
IGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQ7Ci0gICAgYm9vbCB0aHJlYWRlZENv
bXBvc2l0aW5nRW5hYmxlZDsKICAgICBib29sIGNvbXBvc2l0ZVRvVGV4dHVyZTsKICAgICBib29s
IGZvcmNlQ29tcG9zaXRpbmdNb2RlOwogICAgIGJvb2wgYWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJs
ZWQ7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5k
ZXggNzViNzljZWZjN2ZkYTk1NGYwZjgwYmRkNjcxYTExY2Y4MjYwM2FlMS4uNzUyNjQ5NjBkMmQ1
YmI4YjUyZTQzMDJlYTFkOGU3ODk0ODEzNmU3MiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtMTIwMiw4ICsxMjAyLDExIEBAIFdlYlZpZXdI
b3N0OjpXZWJWaWV3SG9zdChUZXN0U2hlbGwqIHNoZWxsKQogewogICAgIFdURjo6aW5pdGlhbGl6
ZVRocmVhZGluZygpOwogCi0gICAgbV9jb21wb3NpdG9yVGhyZWFkID0gYWRvcHRQdHIoV2ViS2l0
Ojp3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y3JlYXRlVGhyZWFkKCJDb21wb3NpdG9yIikpOwot
ICAgIFdlYkNvbXBvc2l0b3I6OnNldFRocmVhZChtX2NvbXBvc2l0b3JUaHJlYWQuZ2V0KCkpOwor
ICAgIGlmIChzaGVsbC0+dGhyZWFkZWRDb21wb3NpdGluZ0VuYWJsZWQoKSkgeworICAgICAgICBt
X2NvbXBvc2l0b3JUaHJlYWQgPSBhZG9wdFB0cihXZWJLaXQ6OndlYktpdFBsYXRmb3JtU3VwcG9y
dCgpLT5jcmVhdGVUaHJlYWQoIkNvbXBvc2l0b3IiKSk7CisgICAgICAgIFdlYkNvbXBvc2l0b3I6
OmluaXRpYWxpemUobV9jb21wb3NpdG9yVGhyZWFkLmdldCgpKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgV2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKIAogICAgIHJlc2V0KCk7CiB9CkBAIC0x
MjI1LDYgKzEyMjgsOCBAQCBXZWJWaWV3SG9zdDo6fldlYlZpZXdIb3N0KCkKICAgICB3ZWJXaWRn
ZXQoKS0+Y2xvc2UoKTsKICAgICBpZiAobV9pbk1vZGFsTG9vcCkKICAgICAgICAgd2Via2l0X3N1
cHBvcnQ6OlF1aXRNZXNzYWdlTG9vcCgpOworCisgICAgV2ViQ29tcG9zaXRvcjo6c2h1dGRvd24o
KTsKIH0KIAogdm9pZCBXZWJWaWV3SG9zdDo6c2V0V2ViV2lkZ2V0KFdlYktpdDo6V2ViV2lkZ2V0
KiB3aWRnZXQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116178</attachid>
            <date>2011-11-21 21:53:41 -0800</date>
            <delta_ts>2011-11-30 14:24:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70838-20111121215340.patch</filename>
            <type>text/plain</type>
            <size>68089</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwOTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRjOTNkOTAwNTZkY2Y0
YzM3ZWYwYzY1Yjk5MDBmNWIxZDcwMmFmZC4uMDk1ODk0OTg0ZjBlMTQzNGIxNGFmMTBhMzMwMDUz
ODM5OTBlNTJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDExLTExLTE4ICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEVuYWJsZSB0
aHJlYWRlZCBjb21wb3NpdGluZyB2aWEgQ0NUaHJlYWRQcm94eTo6aGFzVGhyZWFkIG9ubHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODM4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpsYXllclJlbmRlcmVyQ29udGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjplbmFibGVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Y29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OnNldE5lZWRzQW5pbWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OnNldE5lZWRzQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVl
SG9zdDo6c2V0TmVlZHNSZWRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
Ojpjb21wb3NpdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6Q0NTZXR0aW5n
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1Byb3h5Ojppc01haW5UaHJlYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NQcm94eTo6aXNJbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJveHk6
OnNldE1haW5UaHJlYWRJc0ltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjpEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQ6OkRlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQ6On5EZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQpOgorCiAyMDExLTExLTIxICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBTdHlsZVNoZWV0OiBNb3ZlIGNvbXBsZXRlVVJMKCkgdG8gQ1NTU3R5bGVTaGVldC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNjVmMTI5MjE3NDFiMGE1YWYzOGUxNTI1ZjYw
ZTAyMjMzZGE1MWM3My4uZmQwZDM4ZWQ3ODIzNDNkZjAyNTgxZDliZjg3NTYwMDYyN2YyMGMzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMS0xMS0xOCAg
TmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFbmFi
bGUgdGhyZWFkZWQgY29tcG9zaXRpbmcgdmlhIENDVGhyZWFkUHJveHk6Omhhc1RocmVhZCBvbmx5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDgzOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGlj
L1dlYkNvbXBvc2l0b3IuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6U2V0dGluZ3MpOgor
ICAgICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAgICAgICAqIHNyYy9XZWJDb21wb3Np
dG9ySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbXBvc2l0b3I6OmZyb21JZGVudGlmaWVyKToKKyAgICAgICAgKiBzcmMvV2Vi
S2l0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVdpdGhvdXRWOCk6CisgICAgICAg
ICogc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRy
ZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NTZXR0aW5ncyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVyVHJlZVZpZXc6OmNvbXBvc2l0ZSk6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJl
ZVZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNy
ZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QpOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0lt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OldlYlNldHRpbmdzSW1w
bCk6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJW
aWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjphbmltYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbXBvc2l0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpzY2hlZHVsZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6Y3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzY2hlZHVsZUNvbXBvc2l0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpncmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogdGVzdHMvQ0NM
YXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Q6
OkNDTGF5ZXJUcmVlSG9zdFRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0
OjpydW5UZXN0KToKKwogMjAxMS0xMS0yMSAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0Bnb29n
bGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBhIHNldHRlciBmb3IgVW5pZmllZFRleHRDaGVj
a2VyRW5hYmxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDBi
ZDZkYmMzODk2YWU0YTA3NzE5YTRlYTRhM2NjZTczNTkyNzNlMDQuLjcwMDQxODdjNjAxZWNkMDk5
MDE1ZmE2ZTcxYTM1Yzc0MTFjYjY3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpp
bml0aWFsaXplKCkKICAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01J
VU1fbWFwX3N1YiIpOwogCiAgICAgLy8gVXNlIHRoZSBzd2FwQnVmZmVycyBjYWxsYmFjayBvbmx5
IHdpdGggdGhlIHRocmVhZGVkIHByb3h5LgotICAgIGlmIChzZXR0aW5ncygpLmVuYWJsZUNvbXBv
c2l0b3JUaHJlYWQpCisgICAgaWYgKENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSkKICAgICAgICAg
bV9jYXBhYmlsaXRpZXMudXNpbmdTd2FwQ29tcGxldGVDYWxsYmFjayA9IGV4dGVuc2lvbnMtPnN1
cHBvcnRzKCJHTF9DSFJPTUlVTV9zd2FwYnVmZmVyc19jb21wbGV0ZV9jYWxsYmFjayIpOwogICAg
IGlmIChtX2NhcGFiaWxpdGllcy51c2luZ1N3YXBDb21wbGV0ZUNhbGxiYWNrKSB7CiAgICAgICAg
IGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX3N3YXBidWZmZXJzX2NvbXBs
ZXRlX2NhbGxiYWNrIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAppbmRleCAyNzZm
M2M5ZmMyZmUxMDdmMTYzYjJhYmEwOThjMDNmYmIzMzQ0Y2I2Li4yYjBkMTZlNTE5OTVmNTM5ZjY2
ODMwYmYzNWE4M2VjNWQ4M2Q3M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTE2Miw3ICsxNjIsNyBAQCBHcmFwaGljc0NvbnRleHQzRCogV2ViR0xMYXllckNocm9taXVt
OjpsYXllclJlbmRlcmVyQ29udGV4dCgpCiB7CiAgICAgLy8gRklYTUU6IEluIHRoZSB0aHJlYWRl
ZCBjYXNlLCBwYWludFJlbmRlcmVkUmVzdWx0c1RvQ2FudmFzIG11c3QgYmUKICAgICAvLyByZWZh
Y3RvcmVkIHRvIGJlIGFzeW5jaHJvbm91cy4gQ3VycmVudGx5IHRoaXMgaXMgdW5pbXBsZW1lbnRl
ZC4KLSAgICBpZiAoIWxheWVyVHJlZUhvc3QoKSB8fCBsYXllclRyZWVIb3N0KCktPnNldHRpbmdz
KCkuZW5hYmxlQ29tcG9zaXRvclRocmVhZCkKKyAgICBpZiAoIWxheWVyVHJlZUhvc3QoKSB8fCBD
Q1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBs
YXllclRyZWVIb3N0KCktPmNvbnRleHQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxh
eS5jcHAKaW5kZXggYjY4ZjQ2Y2Y4YjgxYzllNzZlMzc3OWM2OTAxYmNiOTQ1NTFjOTFjZi4uNzA4
YmNmZjg4MDFiNzg4ODEwNjBiNTI5ODU4YjI4OWI5NTMyOGFlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NI
ZWFkc1VwRGlzcGxheS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5
OjpvblN3YXBCdWZmZXJzKCkKIGJvb2wgQ0NIZWFkc1VwRGlzcGxheTo6ZW5hYmxlZCgpIGNvbnN0
CiB7CiAgICAgLy8gRklYTUU6IEhVRCBkb2VzIG5vdCB3b3JrIGluIGNvbXBvc2l0b3IgdGhyZWFk
IG1vZGUuCi0gICAgaWYgKHNldHRpbmdzKCkuZW5hYmxlQ29tcG9zaXRvclRocmVhZCkKKyAgICBp
ZiAoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
cmV0dXJuIHNldHRpbmdzKCkuc2hvd1BsYXRmb3JtTGF5ZXJUcmVlIHx8IHNldHRpbmdzKCkuc2hv
d0ZQU0NvdW50ZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBiYWU2
ZmIzY2U5MzRmZGI0YzNmN2M1OTc5YTBhMGJmZGI0NjkwNWI1Li5hOTY0NjJmOWU3N2M0NWY3N2E5
NjkwZGI0YjM5NWJmNzI5NTJlMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
QEAgLTM3LDggKzM3LDE3IEBACiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIKICNpbmNsdWRlICJj
Yy9DQ1RocmVhZFByb3h5LmgiCiAKK25hbWVzcGFjZSB7CitzdGF0aWMgaW50IG51bUxheWVyVHJl
ZUluc3RhbmNlczsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitib29sIENDTGF5ZXJUcmVl
SG9zdDo6YW55TGF5ZXJUcmVlSG9zdEluc3RhbmNlRXhpc3RzKCkKK3sKKyAgICByZXR1cm4gbnVt
TGF5ZXJUcmVlSW5zdGFuY2VzID4gMDsKK30KKwogUGFzc1JlZlB0cjxDQ0xheWVyVHJlZUhvc3Q+
IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBj
b25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBSZWZQdHI8Q0NMYXllclRyZWVIb3N0
PiBsYXllclRyZWVIb3N0ID0gYWRvcHRSZWYobmV3IENDTGF5ZXJUcmVlSG9zdChjbGllbnQsIHNl
dHRpbmdzKSk7CkBAIC02MCwxMiArNjksMTMgQEAgQ0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJl
ZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IENDU2V0dGluZ3MKICAg
ICAsIG1fbWF4UGFnZVNjYWxlKDEpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVh
ZCgpKTsKKyAgICBudW1MYXllclRyZWVJbnN0YW5jZXMrKzsKIH0KIAogYm9vbCBDQ0xheWVyVHJl
ZUhvc3Q6OmluaXRpYWxpemUoKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6
OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKLSAgICBpZiAobV9zZXR0aW5ncy5lbmFibGVDb21wb3Np
dG9yVGhyZWFkKSB7CisgICAgaWYgKENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSkgewogICAgICAg
ICAvLyBUaGUgSFVEIGRvZXMgbm90IHdvcmsgaW4gdGhyZWFkZWQgbW9kZS4gVHVybiBpdCBvZmYu
CiAgICAgICAgIG1fc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgPSBmYWxzZTsKICAgICAgICAgbV9z
ZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUgPSBmYWxzZTsKQEAgLTk0LDYgKzEwNCw3IEBA
IENDTGF5ZXJUcmVlSG9zdDo6fkNDTGF5ZXJUcmVlSG9zdCgpCiAgICAgbV9wcm94eS0+c3RvcCgp
OwogICAgIG1fcHJveHkuY2xlYXIoKTsKICAgICBjbGVhclBlbmRpbmdVcGRhdGUoKTsKKyAgICBu
dW1MYXllclRyZWVJbnN0YW5jZXMtLTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRlbGV0
ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9y
KQpAQCAtMTY4LDcgKzE3OSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpkaWRSZWNyZWF0ZUdy
YXBoaWNzQ29udGV4dChib29sIHN1Y2Nlc3MpCiAvLyBUZW1wb3JhcnkgaGFjayB1bnRpbCBXZWJW
aWV3SW1wbCBjb250ZXh0IGNyZWF0aW9uIGdldHMgc2ltcGxpZmllZAogR3JhcGhpY3NDb250ZXh0
M0QqIENDTGF5ZXJUcmVlSG9zdDo6Y29udGV4dCgpCiB7Ci0gICAgQVNTRVJUKCFtX3NldHRpbmdz
LmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQpOworICAgIEFTU0VSVCghQ0NQcm94eTo6aGFzSW1wbFRo
cmVhZCgpKTsKICAgICByZXR1cm4gbV9wcm94eS0+Y29udGV4dCgpOwogfQogCkBAIC0xOTksMTMg
KzIxMCwxMyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3Jt
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB6b29tKQogCiB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6c2V0TmVlZHNBbmltYXRlKCkKIHsKLSAgICBBU1NFUlQobV9zZXR0aW5ncy5lbmFibGVDb21w
b3NpdG9yVGhyZWFkKTsKKyAgICBBU1NFUlQoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKTsKICAg
ICBtX3Byb3h5LT5zZXROZWVkc0FuaW1hdGUoKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnNldE5lZWRzQ29tbWl0KCkKIHsKLSAgICBpZiAobV9zZXR0aW5ncy5lbmFibGVDb21wb3NpdG9y
VGhyZWFkKSB7CisgICAgaWYgKENDVGhyZWFkUHJveHk6OmltcGxUaHJlYWQoKSkgewogICAgICAg
ICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpzZXROZWVkc0NvbW1pdCIsIHRoaXMsIDAp
OwogICAgICAgICBtX3Byb3h5LT5zZXROZWVkc0NvbW1pdCgpOwogICAgIH0gZWxzZQpAQCAtMjE0
LDcgKzIyNSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXROZWVkc0NvbW1pdCgpCiAKIHZv
aWQgQ0NMYXllclRyZWVIb3N0OjpzZXROZWVkc1JlZHJhdygpCiB7Ci0gICAgaWYgKG1fc2V0dGlu
Z3MuZW5hYmxlQ29tcG9zaXRvclRocmVhZCkKKyAgICBpZiAoQ0NUaHJlYWRQcm94eTo6aW1wbFRo
cmVhZCgpKQogICAgICAgICBtX3Byb3h5LT5zZXROZWVkc1JlZHJhdygpOwogICAgIGVsc2UKICAg
ICAgICAgbV9jbGllbnQtPnNjaGVkdWxlQ29tcG9zaXRlKCk7CkBAIC0yOTAsNyArMzAxLDcgQEAg
VGV4dHVyZU1hbmFnZXIqIENDTGF5ZXJUcmVlSG9zdDo6Y29udGVudHNUZXh0dXJlTWFuYWdlcigp
IGNvbnN0CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpjb21wb3NpdGUoKQogewotICAgIEFTU0VS
VCghbV9zZXR0aW5ncy5lbmFibGVDb21wb3NpdG9yVGhyZWFkKTsKKyAgICBBU1NFUlQoIUNDVGhy
ZWFkUHJveHk6OmltcGxUaHJlYWQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8Q0NTaW5nbGVUaHJlYWRQ
cm94eSo+KG1fcHJveHkuZ2V0KCkpLT5jb21wb3NpdGVJbW1lZGlhdGVseSgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGE3OTNjY2EyNjU3ZjYxNTMzMjJhZjEyODEyNWFh
MDUzYTAxMzExMjIuLmFlNWY4NzdiOTQ4NDg1OWE5MWRlY2YzODcwNjQwMGE4ZGIxMzIyMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC03MSwxNCArNzEsMTIgQEAgc3RydWN0IEND
U2V0dGluZ3MgewogICAgIENDU2V0dGluZ3MoKQogICAgICAgICAgICAgOiBhY2NlbGVyYXRlUGFp
bnRpbmcoZmFsc2UpCiAgICAgICAgICAgICAsIGNvbXBvc2l0ZU9mZnNjcmVlbihmYWxzZSkKLSAg
ICAgICAgICAgICwgZW5hYmxlQ29tcG9zaXRvclRocmVhZChmYWxzZSkKICAgICAgICAgICAgICwg
c2hvd0ZQU0NvdW50ZXIoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQbGF0Zm9ybUxheWVyVHJl
ZShmYWxzZSkKICAgICAgICAgICAgICwgcmVmcmVzaFJhdGUoMCkgeyB9CiAKICAgICBib29sIGFj
Y2VsZXJhdGVQYWludGluZzsKICAgICBib29sIGNvbXBvc2l0ZU9mZnNjcmVlbjsKLSAgICBib29s
IGVuYWJsZUNvbXBvc2l0b3JUaHJlYWQ7CiAgICAgYm9vbCBzaG93RlBTQ291bnRlcjsKICAgICBi
b29sIHNob3dQbGF0Zm9ybUxheWVyVHJlZTsKICAgICBkb3VibGUgcmVmcmVzaFJhdGU7CkBAIC0x
MDksNiArMTA3LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENDTGF5ZXJUcmVl
SG9zdD4gY3JlYXRlKENDTGF5ZXJUcmVlSG9zdENsaWVudCosIGNvbnN0IENDU2V0dGluZ3MmKTsK
ICAgICB2aXJ0dWFsIH5DQ0xheWVyVHJlZUhvc3QoKTsKIAorICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiBhbnkgQ0NMYXllclRyZWVIb3N0IGlzIGFsaXZlLgorICAgIHN0YXRpYyBib29sIGFueUxheWVy
VHJlZUhvc3RJbnN0YW5jZUV4aXN0cygpOworCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0IGludGVy
ZmFjZSB0byBDQ1Byb3h5LgogICAgIHZvaWQgYW5pbWF0ZUFuZExheW91dChkb3VibGUgZnJhbWVC
ZWdpblRpbWUpOwogICAgIHZvaWQgYmVnaW5Db21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcAppbmRleCA2MDYyZWMwOWMxNzVkMWFjNDcxZmI2ZTRi
ZDYxMmUzYTE4NzJmZTFkLi5lNGQ2MDE0NTExYmMxYzVkYjBlNjg3YmQxZjY4M2ZhZTgwMzZjNWFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1Byb3h5LmNwcApAQCAtMzcsNyArMzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIG5hbWVzcGFjZSB7CiAjaWZuZGVmIE5ERUJVRwotYm9vbCBmYWtlSW1wbFRocmVhZCA9IGZh
bHNlOworYm9vbCBpbXBsVGhyZWFkSXNPdmVycmlkZGVuID0gZmFsc2U7CitUaHJlYWRJZGVudGlm
aWVyIHRocmVhZElET3ZlcnJpZGVuVG9CZUltcGxUaHJlYWQ7CiAjZW5kaWYKIENDVGhyZWFkKiBz
X21haW5UaHJlYWQgPSAwOwogQ0NUaHJlYWQqIHNfaW1wbFRocmVhZCA9IDA7CkBAIC01Myw2ICs1
NCwxMSBAQCBDQ1RocmVhZCogQ0NQcm94eTo6bWFpblRocmVhZCgpCiAgICAgcmV0dXJuIHNfbWFp
blRocmVhZDsKIH0KIAorYm9vbCBDQ1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkKK3sKKyAgICByZXR1
cm4gc19pbXBsVGhyZWFkOworfQorCiB2b2lkIENDUHJveHk6OnNldEltcGxUaHJlYWQoQ0NUaHJl
YWQqIHRocmVhZCkKIHsKICAgICBzX2ltcGxUaHJlYWQgPSB0aHJlYWQ7CkBAIC02NywxOCArNzMs
MjQgQEAgQ0NUaHJlYWQqIENDUHJveHk6OmltcGxUaHJlYWQoKQogYm9vbCBDQ1Byb3h5Ojppc01h
aW5UaHJlYWQoKQogewogICAgIEFTU0VSVChzX21haW5UaHJlYWQpOwotICAgIHJldHVybiAhZmFr
ZUltcGxUaHJlYWQgJiYgY3VycmVudFRocmVhZCgpID09IHNfbWFpblRocmVhZC0+dGhyZWFkSUQo
KTsKKyAgICBpZiAoaW1wbFRocmVhZElzT3ZlcnJpZGRlbiAmJiBjdXJyZW50VGhyZWFkKCkgPT0g
dGhyZWFkSURPdmVycmlkZW5Ub0JlSW1wbFRocmVhZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiBjdXJyZW50VGhyZWFkKCkgPT0gc19tYWluVGhyZWFkLT50aHJlYWRJRCgpOwog
fQogCiBib29sIENDUHJveHk6OmlzSW1wbFRocmVhZCgpCiB7CiAgICAgV1RGOjpUaHJlYWRJZGVu
dGlmaWVyIGltcGxUaHJlYWRJRCA9IHNfaW1wbFRocmVhZCA/IHNfaW1wbFRocmVhZC0+dGhyZWFk
SUQoKSA6IDA7Ci0gICAgcmV0dXJuIGZha2VJbXBsVGhyZWFkIHx8IGN1cnJlbnRUaHJlYWQoKSA9
PSBpbXBsVGhyZWFkSUQ7CisgICAgaWYgKGltcGxUaHJlYWRJc092ZXJyaWRkZW4gJiYgY3VycmVu
dFRocmVhZCgpID09IHRocmVhZElET3ZlcnJpZGVuVG9CZUltcGxUaHJlYWQpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBjdXJyZW50VGhyZWFkKCkgPT0gaW1wbFRocmVhZElEOwog
fQogCi12b2lkIENDUHJveHk6OnNldEltcGxUaHJlYWQoYm9vbCBpc0ltcGxUaHJlYWQpCit2b2lk
IENDUHJveHk6OnNldEN1cnJlbnRUaHJlYWRJc0ltcGxUaHJlYWQoYm9vbCBpc0ltcGxUaHJlYWQp
CiB7Ci0gICAgZmFrZUltcGxUaHJlYWQgPSBpc0ltcGxUaHJlYWQ7CisgICAgaW1wbFRocmVhZElz
T3ZlcnJpZGRlbiA9IGlzSW1wbFRocmVhZDsKKyAgICBpZiAoaXNJbXBsVGhyZWFkKQorICAgICAg
ICB0aHJlYWRJRE92ZXJyaWRlblRvQmVJbXBsVGhyZWFkID0gY3VycmVudFRocmVhZCgpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJveHkuaAppbmRleCBhNjIzMGVhY2Q1Njg5ZDViZWE0MmYwZDBjZGI5YzYz
ODUzMzc4OGFhLi5iYjM3ODAxNDdiMTZjMjZiNzVhN2NjZDIyYWE4YjhmZTg0ZTc2YmJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQcm94eS5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRN
YWluVGhyZWFkKENDVGhyZWFkKik7CiAgICAgc3RhdGljIENDVGhyZWFkKiBtYWluVGhyZWFkKCk7
CiAKKyAgICBzdGF0aWMgYm9vbCBoYXNJbXBsVGhyZWFkKCk7CiAgICAgc3RhdGljIHZvaWQgc2V0
SW1wbFRocmVhZChDQ1RocmVhZCopOwogICAgIHN0YXRpYyBDQ1RocmVhZCogaW1wbFRocmVhZCgp
OwogCkBAIC05MSw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9zZUNvbXBv
c2l0b3JDb250ZXh0KGludCBudW1UaW1lcykgPSAwOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIHN0
YXRpYyB2b2lkIHNldEltcGxUaHJlYWQoYm9vbCk7CisgICAgc3RhdGljIHZvaWQgc2V0Q3VycmVu
dFRocmVhZElzSW1wbFRocmVhZChib29sKTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Npbmds
ZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggZWRhYjYxZjJjMDMyNzk2ZWM4NDIzNWI0
MWI0ZWY3NzNhODIyOWYxMy4uMGQ1YTRhMmQ4YTUxNmIxZDdiY2Y5OTFhOTllMWM3ODc4OTk0M2Vj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtOTEsMTMgKzkxLDEz
IEBAIHB1YmxpYzoKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQoKQogICAgIHsKICNpZiAh
QVNTRVJUX0RJU0FCTEVECi0gICAgICAgIENDUHJveHk6OnNldEltcGxUaHJlYWQodHJ1ZSk7Cisg
ICAgICAgIENDUHJveHk6OnNldEN1cnJlbnRUaHJlYWRJc0ltcGxUaHJlYWQodHJ1ZSk7CiAjZW5k
aWYKICAgICB9CiAgICAgfkRlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCgpCiAgICAgewogI2lmICFB
U1NFUlRfRElTQUJMRUQKLSAgICAgICAgQ0NQcm94eTo6c2V0SW1wbFRocmVhZChmYWxzZSk7Cisg
ICAgICAgIENDUHJveHk6OnNldEN1cnJlbnRUaHJlYWRJc0ltcGxUaHJlYWQoZmFsc2UpOwogI2Vu
ZGlmCiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCAxMjEwODk0NjZm
NTY5ODRkNWQ0N2Q5ZmMxNjc5YzE3MDYzMzM2NTI2Li40MjIzYjgxMjBmZDZjMDI4NzY1Yzg0ODg0
Y2ZjMjBkZGI3NTliYjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xMzYsNiAr
MTM2LDggQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkNvbXBvc2l0aW9uVW5kZXJsaW5l
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQ29tcG9zaXRvckNsaWVudC5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkNvbXBvc2l0b3IuaCcsCisgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50LmgnLAorICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlci5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkNvbnNvbGVNZXNzYWdlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViQ29udGVudExheWVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQ29udGVudExh
eWVyQ2xpZW50LmgnLApAQCAtNDcwLDYgKzQ3Miw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJDb21tb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDb21wb3NpdG9ySW1wbC5oJywKKyAgICAgICAg
ICAgICAgICAnc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcCcsCisgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYkNvbnRlbnRMYXllci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViQ29udGVudExheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQ29udGVu
dExheWVySW1wbC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IDBmNTk4ZTc4
YTk4Njg4MzFlODJhMmY1Yzg4MmQ0ZjM4NGNmYmM2MDUuLjBiYzgxNzdjNmY1Y2NmYTIwNzkxOGNm
ZWY5M2VkZTE3NDY2ZDU1MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtODUs
NyArODUsNyBAQAogICAgICAgICAgICAgJ3Rlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcCcs
CiAgICAgICAgICAgICAndGVzdHMvVHJlZVRlc3RIZWxwZXJzLmNwcCcsCiAgICAgICAgICAgICAn
dGVzdHMvVHJlZVRlc3RIZWxwZXJzLmgnLAotICAgICAgICAgICAgJ3Rlc3RzL1dlYkNvbXBvc2l0
b3JJbXBsVGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAn
LAogICAgICAgICAgICAgJ3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rl
c3RzL1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvci5oCmluZGV4IDc5YjhiYzU4MTEyYjc1MDgxZjY0NWY2
ODYzZGMyZDI3Y2YzYTFkNzcuLjM2NmVhNmMyNzNkNjc5OGU5NWUwYWJjOTk1YzczYmM1NTc3NDky
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0
b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yLmgK
QEAgLTI3LDIzICsyNywzMiBAQAogI2RlZmluZSBXZWJDb21wb3NpdG9yX2gKIAogI2luY2x1ZGUg
IldlYkNvbW1vbi5oIgotCisjaW5jbHVkZSAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlci5oIgog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYkNvbXBvc2l0b3JDbGllbnQ7CiBjbGFzcyBX
ZWJJbnB1dEV2ZW50OwogY2xhc3MgV2ViVGhyZWFkOwogCi0vLyBUaGlzIHJlcHJlc2VudHMgdGhl
IGNvbXBvc2l0b3IgYXNzb2NpYXRlZCB3aXRoIGEgV2ViV2lkZ2V0LiBBbGwgY2FsbHMgdG8gdGhl
IFdlYkNvbXBvc2l0b3IgbXVzdAotLy8gYmUgbWFkZSBmcm9tIHRoZSBjb21wb3NpdG9yIHRocmVh
ZC4KLWNsYXNzIFdlYkNvbXBvc2l0b3IgewotcHVibGljOgotICAgIC8vIFRoaXMgbXVzdCBiZSBj
YWxsZWQgb25jZSB3aXRoIGEgbm9uLW51bGwgV2ViVGhyZWFkIGJlZm9yZSBhbnkgY29tcG9zaXRv
cnMgYXR0ZW1wdCB0byBpbml0aWFsaXplLgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQg
c2V0VGhyZWFkKFdlYlRocmVhZCopOwotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkNvbXBv
c2l0b3IqIGZyb21JZGVudGlmaWVyKGludCk7CisjZGVmaW5lIFdFQkNPTVBPU0lUT1JfSEFTX0lO
SVRJQUxJWkUKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoV2ViQ29tcG9zaXRvckNsaWVu
dCopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1
dEV2ZW50JikgPSAwOworLy8gVGhpcyBjbGFzcyBjb250YWlucyBnbG9iYWwgcm91dGluZXMgZm9y
IGludGVyYWN0aW5nIHdpdGggdGhlCisvLyBjb21wb3NpdG9yLgorLy8KKy8vIEFsbCBjYWxscyB0
byB0aGUgV2ViQ29tcG9zaXRvciBtdXN0IGJlIG1hZGUgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCisv
LworLy8gVGhpcyBjbGFzcyBjdXJyZW50bHkgdGVtcG9yYXJpbHkgaW5oZXJpdHMgZnJvbSBXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVyCisvLyB3aGlsZSB3ZSBtaWdyYXRlIGRvd25zdHJlYW0gY29k
ZSB0byB1c2UgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlciBkaXJlY3RseS4KK2NsYXNzIFdlYkNv
bXBvc2l0b3IgOiBwdWJsaWMgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlciB7CitwdWJsaWM6Cisg
ICAgLy8gSW5pdGlhbGl6ZXMgdGhlIGNvbXBvc2l0b3IuIFRocmVhZGVkIGNvbXBvc2l0aW5nIGlz
IGVuYWJsZWQgYnkgcGFzc2luZyBpbgorICAgIC8vIGEgbm9uLW51bGwgV2ViVGhyZWFkLiBObyBj
b21wb3NpdG9yIGNsYXNzZXMgb3IgbWV0aG9kcyBzaG91bGQgYmUgdXNlZAorICAgIC8vIHByaW9y
IHRvIGNhbGxpbmcgaW5pdGlhbGl6ZS4KKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIGlu
aXRpYWxpemUoV2ViVGhyZWFkKik7CisKKyAgICAvLyBTaHV0cyBkb3duIHRoZSBjb21wb3NpdG9y
LiBUaGlzIG11c3QgYmUgY2FsbGVkIHdoZW4gYWxsIGNvbXBvc2l0b3IgZGF0YQorICAgIC8vIHR5
cGVzIGhhdmUgYmVlbiBkZWxldGVkLiBObyBjb21wb3NpdG9yIGNsYXNzZXMgb3IgbWV0aG9kcyBz
aG91bGQgYmUgdXNlZAorICAgIC8vIGFmdGVyIHNodXRkb3duLgorICAgIFdFQktJVF9FWFBPUlQg
c3RhdGljIHZvaWQgc2h1dGRvd24oKTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfldlYkNv
bXBvc2l0b3IoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkNvbXBvc2l0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkNvbXBvc2l0b3JDbGllbnQuaAppbmRleCAyZDBiNDI4Yjc2MWQxZWYwOWQ5ZDQwZmQ0YjcyMDlk
MmI4Mzk5ODczLi5jMjc1ZjcwNTU3NjhlOGIwZTg4YzFmMzE1MTllNGRmZGE1YjU0NjIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvckNsaWVu
dC5oCkBAIC0yNiwyMiArMjYsMTQgQEAKICNpZm5kZWYgV2ViQ29tcG9zaXRvckNsaWVudF9oCiAj
ZGVmaW5lIFdlYkNvbXBvc2l0b3JDbGllbnRfaAogCisjaW5jbHVkZSAiV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckNsaWVudC5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViQ29t
cG9zaXRvckNsaWVudCB7CisvLyBUaGlzIGNsYXNzIHdpbGwgZ28gYXdheSBvbmNlIGRvd25zdHJl
YW0gY29kZSBoYXMgdHJhbnNpdGlvbmVkCisvLyB0byBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
Q2xpZW50LgorY2xhc3MgV2ViQ29tcG9zaXRvckNsaWVudCA6IHB1YmxpYyBXZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICAvLyBDYWxsYmFja3MgaW52b2tlZCBm
cm9tIHRoZSBjb21wb3NpdG9yIHRocmVhZC4KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFNodXRkb3du
KCkgPSAwOwotCi0gICAgLy8gRXhhY3RseSBvbmUgb2YgdGhlIGZvbGxvd2luZyB0d28gY2FsbGJh
Y2tzIHdpbGwgYmUgaW52b2tlZCBhZnRlciBldmVyeSBjYWxsIHRvIFdlYkNvbXBvc2l0b3I6Omhh
bmRsZUlucHV0RXZlbnQoKToKLQotICAgIC8vIENhbGxlZCB3aGVuIHRoZSBXZWJDb21wb3NpdG9y
IGhhbmRsZWQgdGhlIGlucHV0IGV2ZW50IGFuZCBubyBmdXJ0aGVyIHByb2Nlc3NpbmcgaXMgcmVx
dWlyZWQuCi0gICAgdmlydHVhbCB2b2lkIGRpZEhhbmRsZUlucHV0RXZlbnQoKSA9IDA7Ci0KLSAg
ICAvLyBDYWxsZWQgd2hlbiB0aGUgV2ViQ29tcG9zaXRvciBkaWQgbm90IGhhbmRsZSB0aGUgaW5w
dXQgZXZlbnQuIElmIHNlbmRUb1dpZGdldCBpcyB0cnVlLCB0aGUgaW5wdXQgZXZlbnQKLSAgICAv
LyBzaG91bGQgYmUgZm9yd2FyZGVkIHRvIHRoZSBXZWJXaWRnZXQgYXNzb2NpYXRlZCB3aXRoIHRo
aXMgY29tcG9zaXRvciBmb3IgZnVydGhlciBwcm9jZXNzaW5nLgotICAgIHZpcnR1YWwgdm9pZCBk
aWROb3RIYW5kbGVJbnB1dEV2ZW50KGJvb2wgc2VuZFRvV2lkZ2V0KSA9IDA7Ci0KIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIH5XZWJDb21wb3NpdG9yQ2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ4ZWU2ODZkNzU0MTI4YjA3Yzg2NmQyZTNkODhhYzQwYmQ2MjQ1
YWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVyLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcl9oCisjZGVmaW5lIFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJDb21wb3NpdG9yOworY2xhc3MgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNs
aWVudDsKK2NsYXNzIFdlYklucHV0RXZlbnQ7CitjbGFzcyBXZWJUaHJlYWQ7CisKKy8vIFRoaXMg
cmVwcmVzZW50cyB0aGUgY29tcG9zaXRvciBhc3NvY2lhdGVkIHdpdGggYSBXZWJXaWRnZXQuIEFs
bCBjYWxscyB0byB0aGUgV2ViQ29tcG9zaXRvciBtdXN0CisvLyBiZSBtYWRlIGZyb20gdGhlIGNv
bXBvc2l0b3IgdGhyZWFkLgorY2xhc3MgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlciB7CitwdWJs
aWM6CisgICAgLy8gVGhlIHJldHVybiB2YWx1ZSBpcyB0ZW1wb3JhcmlseSBXZWJDb21wb3NpdG9y
IHVudGlsIGFsbCBkb3duc3RyZWFtIGNvZGUKKyAgICAvLyBpcyBzd2l0Y2hlZCB0byB1c2UgV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlci4KKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJDb21w
b3NpdG9yKiBmcm9tSWRlbnRpZmllcihpbnQpOworCisgICAgdmlydHVhbCB2b2lkIHNldENsaWVu
dChXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50KikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmKSA9IDA7CisKK3Byb3RlY3Rl
ZDoKKyAgICB2aXJ0dWFsIH5XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyKCkgeyB9Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZThiYjU1NTk4MzRkZDE4M2EyNTg0OTg1MTdlMjJlNjA1YTQ2ZmUwMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJDbGllbnQuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50X2gKKyNkZWZpbmUgV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBDYWxsYmFja3Mg
aW52b2tlZCBmcm9tIHRoZSBjb21wb3NpdG9yIHRocmVhZC4KKyAgICB2aXJ0dWFsIHZvaWQgd2ls
bFNodXRkb3duKCkgPSAwOworCisgICAgLy8gRXhhY3RseSBvbmUgb2YgdGhlIGZvbGxvd2luZyB0
d28gY2FsbGJhY2tzIHdpbGwgYmUgaW52b2tlZCBhZnRlciBldmVyeSBjYWxsIHRvIFdlYkNvbXBv
c2l0b3I6OmhhbmRsZUlucHV0RXZlbnQoKToKKworICAgIC8vIENhbGxlZCB3aGVuIHRoZSBXZWJD
b21wb3NpdG9yIGhhbmRsZWQgdGhlIGlucHV0IGV2ZW50IGFuZCBubyBmdXJ0aGVyIHByb2Nlc3Np
bmcgaXMgcmVxdWlyZWQuCisgICAgdmlydHVhbCB2b2lkIGRpZEhhbmRsZUlucHV0RXZlbnQoKSA9
IDA7CisKKyAgICAvLyBDYWxsZWQgd2hlbiB0aGUgV2ViQ29tcG9zaXRvciBkaWQgbm90IGhhbmRs
ZSB0aGUgaW5wdXQgZXZlbnQuIElmIHNlbmRUb1dpZGdldCBpcyB0cnVlLCB0aGUgaW5wdXQgZXZl
bnQKKyAgICAvLyBzaG91bGQgYmUgZm9yd2FyZGVkIHRvIHRoZSBXZWJXaWRnZXQgYXNzb2NpYXRl
ZCB3aXRoIHRoaXMgY29tcG9zaXRvciBmb3IgZnVydGhlciBwcm9jZXNzaW5nLgorICAgIHZpcnR1
YWwgdm9pZCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KGJvb2wgc2VuZFRvV2lkZ2V0KSA9IDA7CisK
K3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50
KCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKaW5kZXggY2EwOGNl
ZDA3NGI5NDkzMjRiYjljYzA3NDgxM2QyYzIxYmZlNzFkZS4uYzUyYjM3ODZlZTE5ZDNmODE0NWYx
MjZlMGViODY2ZmY5ZDlkNzdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyVHJlZVZpZXcuaApAQCAtNDUsMTIgKzQ1LDEwIEBAIHB1YmxpYzoKICAgICBz
dHJ1Y3QgU2V0dGluZ3MgewogICAgICAgICBTZXR0aW5ncygpCiAgICAgICAgICAgICA6IGFjY2Vs
ZXJhdGVQYWludGluZyhmYWxzZSkKLSAgICAgICAgICAgICwgY29tcG9zaXRlT2Zmc2NyZWVuKGZh
bHNlKQotICAgICAgICAgICAgLCBlbmFibGVDb21wb3NpdG9yVGhyZWFkKGZhbHNlKSB7IH0KKyAg
ICAgICAgICAgICwgY29tcG9zaXRlT2Zmc2NyZWVuKGZhbHNlKSB7IH0KIAogICAgICAgICBib29s
IGFjY2VsZXJhdGVQYWludGluZzsKICAgICAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47Ci0g
ICAgICAgIGJvb2wgZW5hYmxlQ29tcG9zaXRvclRocmVhZDsKICNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KICAgICAgICAgb3BlcmF0b3IgV2ViQ29yZTo6Q0NTZXR0aW5ncygpIGNvbnN0OwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5n
cy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCBj
ODczMGU1NmU1NjY2YzAzMzE2MmNiNzlmYjZlMDIzMmNlYWJiNjdlLi4yZTFiYzBjMWJlNDY2ZGZj
NWUwZTkzYzk5NjRhNTdkMmVmMDAzNTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlNldHRpbmdzLmgKQEAgLTExNyw4ICsxMTcsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldExlZ2FjeUFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKGJvb2wpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TWluaW11bUFjY2VsZXJhdGVkMmRDYW52YXNTaXplKGludCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKGJvb2wpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlVGhyZWFkZWRDb21wb3NpdG9yKGJvb2wpID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgdXNlVGhyZWFkZWRDb21wb3NpdG9yKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcAppbmRl
eCA4MWRlZTJmMWIyNWE4NzViNmRlMThhMjU5ZTcyYTU4MGFjN2QwYTkzLi5lM2I4MGIwMWIwMDgz
OGMxNDgwMTJjNGY0OTNlNGRkNTlkZDdkNTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwCkBAIC0yOCwxMDggKzI4LDYzIEBACiAjaW5j
bHVkZSAiV2ViQ29tcG9zaXRvckltcGwuaCIKIAogI2luY2x1ZGUgIkNDVGhyZWFkSW1wbC5oIgot
I2luY2x1ZGUgIldlYkNvbXBvc2l0b3JDbGllbnQuaCIKLSNpbmNsdWRlICJXZWJJbnB1dEV2ZW50
LmgiCi0jaW5jbHVkZSAiY2MvQ0NTY3JvbGxDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiY2MvQ0NU
aHJlYWRQcm94eS5oIgorI2luY2x1ZGUgIldlYktpdC5oIgorI2luY2x1ZGUgIldlYktpdFBsYXRm
b3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUg
ImNjL0NDUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzT3du
UHRyPENDSW5wdXRIYW5kbGVyPiBDQ0lucHV0SGFuZGxlcjo6Y3JlYXRlKENDU2Nyb2xsQ29udHJv
bGxlciogc2Nyb2xsQ29udHJvbGxlcikKLXsKLSAgICByZXR1cm4gV2ViS2l0OjpXZWJDb21wb3Np
dG9ySW1wbDo6Y3JlYXRlKHNjcm9sbENvbnRyb2xsZXIpOwotfQotCi19Ci0KIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi12b2lkIFdlYkNvbXBvc2l0b3I6OnNldFRocmVhZChXZWJUaHJlYWQqIGNvbXBv
c2l0b3JUaHJlYWQpCi17Ci0gICAgQVNTRVJUKGNvbXBvc2l0b3JUaHJlYWQpOwotICAgIENDVGhy
ZWFkUHJveHk6OnNldEltcGxUaHJlYWQoQ0NUaHJlYWRJbXBsOjpjcmVhdGUoY29tcG9zaXRvclRo
cmVhZCkubGVha1B0cigpKTsKLX0KLQotCi0vLyBUaGVzZSBzdGF0aWNzIG1heSBvbmx5IGJlIGFj
Y2Vzc2VkIGZyb20gdGhlIGNvbXBvc2l0b3IgdGhyZWFkLgotaW50IFdlYkNvbXBvc2l0b3JJbXBs
OjpzX25leHRBdmFpbGFibGVJZGVudGlmaWVyID0gMTsKLUhhc2hTZXQ8V2ViQ29tcG9zaXRvcklt
cGwqPiogV2ViQ29tcG9zaXRvckltcGw6OnNfY29tcG9zaXRvcnMgPSAwOworYm9vbCBXZWJDb21w
b3NpdG9ySW1wbDo6c19pbml0aWFsaXplZCA9IGZhbHNlOworT3duUHRyPENDVGhyZWFkPiBXZWJD
b21wb3NpdG9ySW1wbDo6c19tYWluVGhyZWFkOworT3duUHRyPENDVGhyZWFkPiBXZWJDb21wb3Np
dG9ySW1wbDo6c19pbXBsVGhyZWFkOwogCi1XZWJDb21wb3NpdG9yKiBXZWJDb21wb3NpdG9yOjpm
cm9tSWRlbnRpZmllcihpbnQgaWRlbnRpZmllcikKK3ZvaWQgV2ViQ29tcG9zaXRvcjo6aW5pdGlh
bGl6ZShXZWJUaHJlYWQqIGltcGxUaHJlYWQpCiB7Ci0gICAgQVNTRVJUKENDUHJveHk6OmlzSW1w
bFRocmVhZCgpKTsKLSAgICByZXR1cm4gV2ViQ29tcG9zaXRvckltcGw6OmZyb21JZGVudGlmaWVy
KGlkZW50aWZpZXIpOworICAgIFdlYkNvbXBvc2l0b3JJbXBsOjppbml0aWFsaXplKGltcGxUaHJl
YWQpOwogfQotCi1XZWJDb21wb3NpdG9yKiBXZWJDb21wb3NpdG9ySW1wbDo6ZnJvbUlkZW50aWZp
ZXIoaW50IGlkZW50aWZpZXIpCit2b2lkIFdlYkNvbXBvc2l0b3I6OnNodXRkb3duKCkKIHsKLSAg
ICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotCi0gICAgaWYgKCFzX2NvbXBvc2l0
b3JzKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGZvciAoSGFzaFNldDxXZWJDb21wb3NpdG9y
SW1wbCo+OjppdGVyYXRvciBpdCA9IHNfY29tcG9zaXRvcnMtPmJlZ2luKCk7IGl0ICE9IHNfY29t
cG9zaXRvcnMtPmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmICgoKml0KS0+aWRlbnRpZmllcigp
ID09IGlkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm4gKml0OwotICAgIH0KLSAgICByZXR1
cm4gMDsKKyAgICBXZWJDb21wb3NpdG9ySW1wbDo6c2h1dGRvd24oKTsKIH0KIAotV2ViQ29tcG9z
aXRvckltcGw6OldlYkNvbXBvc2l0b3JJbXBsKENDU2Nyb2xsQ29udHJvbGxlciogc2Nyb2xsQ29u
dHJvbGxlcikKLSAgICA6IG1fY2xpZW50KDApCi0gICAgLCBtX2lkZW50aWZpZXIoc19uZXh0QXZh
aWxhYmxlSWRlbnRpZmllcisrKQotICAgICwgbV9zY3JvbGxDb250cm9sbGVyKHNjcm9sbENvbnRy
b2xsZXIpCisvKldlYkNvbXBvc2l0b3IqIFdlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoV2ViVGhy
ZWFkKiBpbXBsVGhyZWFkKQogewotICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7
CiAKLSAgICBpZiAoIXNfY29tcG9zaXRvcnMpCi0gICAgICAgIHNfY29tcG9zaXRvcnMgPSBuZXcg
SGFzaFNldDxXZWJDb21wb3NpdG9ySW1wbCo+OwotICAgIHNfY29tcG9zaXRvcnMtPmFkZCh0aGlz
KTsKIH0KLQotV2ViQ29tcG9zaXRvckltcGw6On5XZWJDb21wb3NpdG9ySW1wbCgpCisqLwordm9p
ZCBXZWJDb21wb3NpdG9ySW1wbDo6aW5pdGlhbGl6ZShXZWJUaHJlYWQqIGltcGxUaHJlYWQpCiB7
Ci0gICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKLSAgICBpZiAobV9jbGllbnQp
Ci0gICAgICAgIG1fY2xpZW50LT53aWxsU2h1dGRvd24oKTsKLQotICAgIEFTU0VSVChzX2NvbXBv
c2l0b3JzKTsKLSAgICBzX2NvbXBvc2l0b3JzLT5yZW1vdmUodGhpcyk7Ci0gICAgaWYgKCFzX2Nv
bXBvc2l0b3JzLT5zaXplKCkpIHsKLSAgICAgICAgZGVsZXRlIHNfY29tcG9zaXRvcnM7Ci0gICAg
ICAgIHNfY29tcG9zaXRvcnMgPSAwOwotICAgIH0KKyAgICBBU1NFUlQoIXNfaW5pdGlhbGl6ZWQp
OworICAgIHNfaW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgc19tYWluVGhyZWFkID0gQ0NUaHJl
YWRJbXBsOjpjcmVhdGUod2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmN1cnJlbnRUaHJlYWQoKSk7
CisgICAgQ0NQcm94eTo6c2V0TWFpblRocmVhZChzX21haW5UaHJlYWQuZ2V0KCkpOworICAgIGlm
IChpbXBsVGhyZWFkKSB7CisgICAgICAgIHNfaW1wbFRocmVhZCA9IENDVGhyZWFkSW1wbDo6Y3Jl
YXRlKGltcGxUaHJlYWQpOworICAgICAgICBDQ1Byb3h5OjpzZXRJbXBsVGhyZWFkKHNfaW1wbFRo
cmVhZC5nZXQoKSk7CisgICAgfSBlbHNlCisgICAgICAgIENDUHJveHk6OnNldEltcGxUaHJlYWQo
MCk7CiB9CiAKLXZvaWQgV2ViQ29tcG9zaXRvckltcGw6OnNldENsaWVudChXZWJDb21wb3NpdG9y
Q2xpZW50KiBjbGllbnQpCitib29sIFdlYkNvbXBvc2l0b3JJbXBsOjppbml0aWFsaXplZCgpCiB7
Ci0gICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKLSAgICAvLyBJdCdzIHZhbGlk
IHRvIHNldCBhIG5ldyBjbGllbnQgaWYgd2UndmUgbmV2ZXIgaGFkIG9uZSBvciB0byBjbGVhciB0
aGUgY2xpZW50LCBidXQgaXQncyBub3QgdmFsaWQgdG8gY2hhbmdlIGZyb20gaGF2aW5nIG9uZSBj
bGllbnQgdG8gYSBkaWZmZXJlbnQgb25lLgotICAgIEFTU0VSVCghbV9jbGllbnQgfHwgIWNsaWVu
dCk7Ci0gICAgbV9jbGllbnQgPSBjbGllbnQ7Ci19Ci0KLXZvaWQgV2ViQ29tcG9zaXRvckltcGw6
OmhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQpCi17Ci0gICAgQVNT
RVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKLSAgICBBU1NFUlQobV9jbGllbnQpOwotCi0g
ICAgaWYgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbCAmJiAhbV9zY3Jv
bGxDb250cm9sbGVyLT5oYXZlV2hlZWxFdmVudEhhbmRsZXJzKCkpIHsKLSAgICAgICAgY29uc3Qg
V2ViTW91c2VXaGVlbEV2ZW50JiB3aGVlbEV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYk1v
dXNlV2hlZWxFdmVudCo+KCZldmVudCk7Ci0gICAgICAgIG1fc2Nyb2xsQ29udHJvbGxlci0+c2Ny
b2xsUm9vdExheWVyKEludFNpemUoLXdoZWVsRXZlbnQuZGVsdGFYLCAtd2hlZWxFdmVudC5kZWx0
YVkpKTsKLSAgICAgICAgbV9jbGllbnQtPmRpZEhhbmRsZUlucHV0RXZlbnQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBtX2NsaWVudC0+ZGlkTm90SGFuZGxlSW5wdXRFdmVudCh0cnVl
IC8qIHNlbmRUb1dpZGdldCAqLyk7CisgICAgcmV0dXJuIHNfaW5pdGlhbGl6ZWQ7CiB9CiAKLWlu
dCBXZWJDb21wb3NpdG9ySW1wbDo6aWRlbnRpZmllcigpIGNvbnN0Cit2b2lkIFdlYkNvbXBvc2l0
b3JJbXBsOjpzaHV0ZG93bigpCiB7Ci0gICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgp
KTsKLSAgICByZXR1cm4gbV9pZGVudGlmaWVyOworICAgIEFTU0VSVChzX2luaXRpYWxpemVkKTsK
KyAgICBBU1NFUlQoIUNDTGF5ZXJUcmVlSG9zdDo6YW55TGF5ZXJUcmVlSG9zdEluc3RhbmNlRXhp
c3RzKCkpOworCisgICAgc19pbXBsVGhyZWFkLmNsZWFyKCk7CisgICAgc19tYWluVGhyZWFkLmNs
ZWFyKCk7CisgICAgQ0NQcm94eTo6c2V0SW1wbFRocmVhZCgwKTsKKyAgICBDQ1Byb3h5OjpzZXRN
YWluVGhyZWFkKDApOworICAgIHNfaW5pdGlhbGl6ZWQgPSBmYWxzZTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmgKaW5kZXggZjRlNGUy
MWQ5NDE1OTZlYmQyYzg0MWQxYWYxMmEzZmI5NmUyMjVjOC4uYTQ2ZTY1NTYxOWQ0OTYzNTc3YWY5
YjM5OTRmOTdlNWM5NWQ3OGVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViQ29tcG9zaXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJDb21wb3NpdG9ySW1wbC5oCkBAIC0zMSw0OCArMzEsMjkgQEAKICNpbmNsdWRlICJjYy9DQ0lu
cHV0SGFuZGxlci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLQotbmFtZXNwYWNlIFdU
RiB7Ci1jbGFzcyBNdXRleDsKLX0KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLWNsYXNzIENDU2Nyb2xsQ29udHJvbGxlcjsKK2NsYXNzIENDVGhyZWFkOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViQ29tcG9zaXRvckNsaWVudDsKK2Ns
YXNzIFdlYlRocmVhZDsKIAotY2xhc3MgV2ViQ29tcG9zaXRvckltcGwgOiBwdWJsaWMgV2ViQ29t
cG9zaXRvciwgcHVibGljIFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyIHsKK2NsYXNzIFdlYkNvbXBv
c2l0b3JJbXBsIDogcHVibGljIFdlYkNvbXBvc2l0b3IgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFdlYkNvbXBvc2l0b3JJbXBsKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViQ29tcG9zaXRv
ciogZnJvbUlkZW50aWZpZXIoaW50IGlkZW50aWZpZXIpOwotCi0gICAgc3RhdGljIFBhc3NPd25Q
dHI8V2ViQ29tcG9zaXRvckltcGw+IGNyZWF0ZShXZWJDb3JlOjpDQ1Njcm9sbENvbnRyb2xsZXIq
IHNjcm9sbENvbnRyb2xsZXIpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdl
YkNvbXBvc2l0b3JJbXBsKHNjcm9sbENvbnRyb2xsZXIpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFs
IH5XZWJDb21wb3NpdG9ySW1wbCgpOwotCi0gICAgLy8gV2ViQ29tcG9zaXRvciBpbXBsZW1lbnRh
dGlvbgotICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoV2ViQ29tcG9zaXRvckNsaWVudCopOwot
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmKTsK
LQotICAgIC8vIFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyIGltcGxlbWVudGF0aW9uCi0gICAgdmly
dHVhbCBpbnQgaWRlbnRpZmllcigpIGNvbnN0OworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVk
KCk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViQ29tcG9zaXRvckltcGwoV2ViQ29yZTo6
Q0NTY3JvbGxDb250cm9sbGVyKik7Ci0KLSAgICBXZWJDb21wb3NpdG9yQ2xpZW50KiBtX2NsaWVu
dDsKLSAgICBpbnQgbV9pZGVudGlmaWVyOwotICAgIFdlYkNvcmU6OkNDU2Nyb2xsQ29udHJvbGxl
ciogbV9zY3JvbGxDb250cm9sbGVyOworICAgIGZyaWVuZCBjbGFzcyBXZWJDb21wb3NpdG9yOwor
ICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoV2ViVGhyZWFkKiBpbXBsVGhyZWFkKTsKKyAgICBz
dGF0aWMgdm9pZCBzaHV0ZG93bigpOwogCi0gICAgc3RhdGljIGludCBzX25leHRBdmFpbGFibGVJ
ZGVudGlmaWVyOwotICAgIHN0YXRpYyBIYXNoU2V0PFdlYkNvbXBvc2l0b3JJbXBsKj4qIHNfY29t
cG9zaXRvcnM7CisgICAgc3RhdGljIGJvb2wgc19pbml0aWFsaXplZDsKKyAgICBzdGF0aWMgT3du
UHRyPFdlYkNvcmU6OkNDVGhyZWFkPiBzX21haW5UaHJlYWQ7CisgICAgc3RhdGljIE93blB0cjxX
ZWJDb3JlOjpDQ1RocmVhZD4gc19pbXBsVGhyZWFkOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM3NzNkZWI1MTFjNTk3OTU2YTk4YTI1NTk5YjdmMTY3MWM3MzUx
ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bC5oIgorCisjaW5jbHVkZSAiV2ViQ29tcG9zaXRvckltcGwuaCIKKyNpbmNsdWRlICJXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgor
I2luY2x1ZGUgIldlYktpdC5oIgorI2luY2x1ZGUgIldlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgor
I2luY2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1Njcm9sbENvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPENDSW5wdXRI
YW5kbGVyPiBDQ0lucHV0SGFuZGxlcjo6Y3JlYXRlKENDU2Nyb2xsQ29udHJvbGxlciogc2Nyb2xs
Q29udHJvbGxlcikKK3sKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbDo6Y3JlYXRlKHNjcm9sbENvbnRyb2xsZXIpOworfQorCit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCisvLyBUaGVzZSBzdGF0aWNzIG1heSBvbmx5IGJlIGFjY2Vzc2VkIGZyb20gdGhl
IGNvbXBvc2l0b3IgdGhyZWFkLgoraW50IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpz
X25leHRBdmFpbGFibGVJZGVudGlmaWVyID0gMTsKK0hhc2hTZXQ8V2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGwqPiogV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNfY29tcG9zaXRv
cnMgPSAwOworCitXZWJDb21wb3NpdG9yKiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyOjpmcm9t
SWRlbnRpZmllcihpbnQgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2Vi
Q29tcG9zaXRvcio+KFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpmcm9tSWRlbnRpZmll
cihpZGVudGlmaWVyKSk7Cit9CisKK1Bhc3NPd25QdHI8V2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGw+IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpjcmVhdGUoV2ViQ29yZTo6Q0NT
Y3JvbGxDb250cm9sbGVyKiBzY3JvbGxDb250cm9sbGVyKQoreworICAgIHJldHVybiBhZG9wdFB0
cihuZXcgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwoc2Nyb2xsQ29udHJvbGxlcikpOwor
fQorCitXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyKiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbDo6ZnJvbUlkZW50aWZpZXIoaW50IGlkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKFdlYkNv
bXBvc2l0b3JJbXBsOjppbml0aWFsaXplZCgpKTsKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBs
VGhyZWFkKCkpOworCisgICAgaWYgKCFzX2NvbXBvc2l0b3JzKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIGZvciAoSGFzaFNldDxXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbCo+OjppdGVy
YXRvciBpdCA9IHNfY29tcG9zaXRvcnMtPmJlZ2luKCk7IGl0ICE9IHNfY29tcG9zaXRvcnMtPmVu
ZCgpOyArK2l0KSB7CisgICAgICAgIGlmICgoKml0KS0+aWRlbnRpZmllcigpID09IGlkZW50aWZp
ZXIpCisgICAgICAgICAgICByZXR1cm4gKml0OworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwor
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsKENDU2Nyb2xsQ29udHJvbGxlciogc2Nyb2xsQ29udHJvbGxlcikKKyAgICA6IG1fY2xpZW50
KDApCisgICAgLCBtX2lkZW50aWZpZXIoc19uZXh0QXZhaWxhYmxlSWRlbnRpZmllcisrKQorICAg
ICwgbV9zY3JvbGxDb250cm9sbGVyKHNjcm9sbENvbnRyb2xsZXIpCit7CisgICAgQVNTRVJUKEND
UHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKworICAgIGlmICghc19jb21wb3NpdG9ycykKKyAgICAg
ICAgc19jb21wb3NpdG9ycyA9IG5ldyBIYXNoU2V0PFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsKj47CisgICAgc19jb21wb3NpdG9ycy0+YWRkKHRoaXMpOworfQorCitXZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVySW1wbDo6fldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsKCkKK3sKKyAg
ICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIGlmIChtX2NsaWVudCkKKyAg
ICAgICAgbV9jbGllbnQtPndpbGxTaHV0ZG93bigpOworCisgICAgQVNTRVJUKHNfY29tcG9zaXRv
cnMpOworICAgIHNfY29tcG9zaXRvcnMtPnJlbW92ZSh0aGlzKTsKKyAgICBpZiAoIXNfY29tcG9z
aXRvcnMtPnNpemUoKSkgeworICAgICAgICBkZWxldGUgc19jb21wb3NpdG9yczsKKyAgICAgICAg
c19jb21wb3NpdG9ycyA9IDA7CisgICAgfQorfQorCit2b2lkIFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsOjpzZXRDbGllbnQoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudCogY2xp
ZW50KQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgLy8gSXQn
cyB2YWxpZCB0byBzZXQgYSBuZXcgY2xpZW50IGlmIHdlJ3ZlIG5ldmVyIGhhZCBvbmUgb3IgdG8g
Y2xlYXIgdGhlIGNsaWVudCwgYnV0IGl0J3Mgbm90IHZhbGlkIHRvIGNoYW5nZSBmcm9tIGhhdmlu
ZyBvbmUgY2xpZW50IHRvIGEgZGlmZmVyZW50IG9uZS4KKyAgICBBU1NFUlQoIW1fY2xpZW50IHx8
ICFjbGllbnQpOworICAgIG1fY2xpZW50ID0gY2xpZW50OworfQorCit2b2lkIFdlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQm
IGV2ZW50KQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgQVNT
RVJUKG1fY2xpZW50KTsKKworICAgIGlmIChldmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6Ok1v
dXNlV2hlZWwgJiYgIW1fc2Nyb2xsQ29udHJvbGxlci0+aGF2ZVdoZWVsRXZlbnRIYW5kbGVycygp
KSB7CisgICAgICAgIGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYgd2hlZWxFdmVudCA9ICpzdGF0
aWNfY2FzdDxjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQqPigmZXZlbnQpOworICAgICAgICBtX3Nj
cm9sbENvbnRyb2xsZXItPnNjcm9sbFJvb3RMYXllcihJbnRTaXplKC13aGVlbEV2ZW50LmRlbHRh
WCwgLXdoZWVsRXZlbnQuZGVsdGFZKSk7CisgICAgICAgIG1fY2xpZW50LT5kaWRIYW5kbGVJbnB1
dEV2ZW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9jbGllbnQtPmRpZE5vdEhh
bmRsZUlucHV0RXZlbnQodHJ1ZSAvKiBzZW5kVG9XaWRnZXQgKi8pOworfQorCitpbnQgV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGw6OmlkZW50aWZpZXIoKSBjb25zdAoreworICAgIEFTU0VS
VChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgcmV0dXJuIG1faWRlbnRpZmllcjsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzRjNDk5OWNlNzQ2ZjNhNTM0YWM1
ZDE4M2FmMGQxOGRhMmMzMTE3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgKQEAgLTAsMCArMSw3OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxfaAorI2RlZmlu
ZSBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbF9oCisKKyNpbmNsdWRlICJXZWJDb21wb3Np
dG9yLmgiCisjaW5jbHVkZSAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlci5oIgorI2luY2x1ZGUg
ImNjL0NDSW5wdXRIYW5kbGVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFj
ZSBXVEYgeworY2xhc3MgTXV0ZXg7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEND
U2Nyb2xsQ29udHJvbGxlcjsKK2NsYXNzIENDVGhyZWFkOworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudDsKKworLy8gVGVtcG9y
YXJpbHkgc3ViY2xhc3NpbmcgZnJvbSBXZWJDb21wb3NpdG9yIHdoaWxlIGRvd25zdHJlYW0gY2hh
bmdlcyBsYW5kLgorY2xhc3MgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwgOiBwdWJsaWMg
V2ViQ29tcG9zaXRvciwgcHVibGljIFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbCk7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw+IGNy
ZWF0ZShXZWJDb3JlOjpDQ1Njcm9sbENvbnRyb2xsZXIqKTsKKyAgICBzdGF0aWMgV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlciogZnJvbUlkZW50aWZpZXIoaW50IGlkZW50aWZpZXIpOworCisgICAg
dmlydHVhbCB+V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwoKTsKKworICAgIC8vIFdlYkNv
bXBvc2l0b3IgaW1wbGVtZW50YXRpb24KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFdlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlSW5w
dXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50Jik7CisKKyAgICAvLyBXZWJDb3JlOjpDQ0lucHV0
SGFuZGxlciBpbXBsZW1lbnRhdGlvbgorICAgIHZpcnR1YWwgaW50IGlkZW50aWZpZXIoKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bChXZWJDb3JlOjpDQ1Njcm9sbENvbnRyb2xsZXIqKTsKKworICAgIFdlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJDbGllbnQqIG1fY2xpZW50OworICAgIGludCBtX2lkZW50aWZpZXI7CisgICAgV2Vi
Q29yZTo6Q0NTY3JvbGxDb250cm9sbGVyKiBtX3Njcm9sbENvbnRyb2xsZXI7CisKKyAgICBzdGF0
aWMgaW50IHNfbmV4dEF2YWlsYWJsZUlkZW50aWZpZXI7CisgICAgc3RhdGljIEhhc2hTZXQ8V2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGwqPiogc19jb21wb3NpdG9yczsKK307CisKK30KKwor
I2VuZGlmIC8vIFdlYkNvbXBvc2l0b3JJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYktpdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJL
aXQuY3BwCmluZGV4IDdiY2Q5Y2YyMzlhNTFjZDUyYjQyOTdmNWVkYzIwMDg3NDlhMDZlMWYuLjYy
YjQxODA4ZDcwNTMxOGUwNTUwOWM3MmU5NjNmNmZmODIyZjFjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViS2l0LmNwcApAQCAtMzEsOCArMzEsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYktpdC5oIgogCi0jaW5jbHVkZSAiQ0NUaHJlYWRJbXBsLmgiCi0jaW5j
bHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgpAQCAtOTgsMTUgKzk2LDEx
IEBAIHZvaWQgaW5pdGlhbGl6ZVdpdGhvdXRWOChXZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHdlYktp
dFBsYXRmb3JtU3VwcG9ydCkKICAgICAvLyB0aGUgaW5pdGlhbGl6YXRpb24gdGhyZWFkLXNhZmUs
IGJ1dCBnaXZlbiB0aGF0IHNvIG1hbnkgY29kZSBwYXRocyB1c2UKICAgICAvLyB0aGlzLCBpbml0
aWFsaXppbmcgdGhpcyBsYXppbHkgcHJvYmFibHkgZG9lc24ndCBidXkgdXMgbXVjaC4KICAgICBX
ZWJDb3JlOjpVVEY4RW5jb2RpbmcoKTsKLQotICAgIFdlYkNvcmU6OkNDUHJveHk6OnNldE1haW5U
aHJlYWQoQ0NUaHJlYWRJbXBsOjpjcmVhdGUod2ViS2l0UGxhdGZvcm1TdXBwb3J0LT5jdXJyZW50
VGhyZWFkKCkpLmxlYWtQdHIoKSk7CiB9CiAKIAogdm9pZCBzaHV0ZG93bigpCiB7Ci0gICAgZGVs
ZXRlIFdlYkNvcmU6OkNDUHJveHk6Om1haW5UaHJlYWQoKTsKLSAgICBXZWJDb3JlOjpDQ1Byb3h5
OjpzZXRNYWluVGhyZWFkKDApOwogICAgIHNfd2ViS2l0UGxhdGZvcm1TdXBwb3J0ID0gMDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcApp
bmRleCBjNzY4ZTFhNjYyOTc3YWQ2MWI0MTI1YTk1ODQzMjZkMGE1OWY1NzViLi42Yjg5YWU5MDky
OGQxNDVhMTMzYjllYjQyYjFkODA2N2I2ZWY3Nzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcApAQCAtMzksNyArMzksNiBAQCBXZWJMYXll
clRyZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NTZXR0aW5ncygpIGNvbnN0CiAgICAgQ0NT
ZXR0aW5ncyBzZXR0aW5nczsKICAgICBzZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBhY2Nl
bGVyYXRlUGFpbnRpbmc7CiAgICAgc2V0dGluZ3MuY29tcG9zaXRlT2Zmc2NyZWVuID0gY29tcG9z
aXRlT2Zmc2NyZWVuOwotICAgIHNldHRpbmdzLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQgPSBlbmFi
bGVDb21wb3NpdG9yVGhyZWFkOwogCiAgICAgLy8gRklYTUU6IHNob3dGUFNDb3VudGVyIC8gc2hv
d1BsYXRmb3JtTGF5ZXJUcmVlIGFyZW4ndCBzdXBwb3J0ZWQgY3VycmVudGx5LgogICAgIHNldHRp
bmdzLnNob3dGUFNDb3VudGVyID0gZmFsc2U7CkBAIC02OSw3ICs2OCw3IEBAIGJvb2wgV2ViTGF5
ZXJUcmVlVmlldzo6ZXF1YWxzKGNvbnN0IFdlYkxheWVyVHJlZVZpZXcmIG4pIGNvbnN0CiAKIHZv
aWQgV2ViTGF5ZXJUcmVlVmlldzo6Y29tcG9zaXRlKCkKIHsKLSAgICBpZiAobV9wcml2YXRlLT5z
ZXR0aW5ncygpLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQpCisgICAgaWYgKENDUHJveHk6Omhhc0lt
cGxUaHJlYWQoKSkKICAgICAgICAgbV9wcml2YXRlLT5zZXROZWVkc0NvbW1pdCgpOwogICAgIGVs
c2UKICAgICAgICAgbV9wcml2YXRlLT5jb21wb3NpdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAppbmRleCA4Yzg2ODRiNmZj
YThjOWYzMGQxYjc3MTYwZjAyNTkzODI0YmJiOTUwLi5hNmYxZDBmYWY1YmJmNzFlNzRhYTM5MGU0
MGEwNGVlMmJmM2Y1ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiV2Vi
TGF5ZXJUcmVlVmlld0NsaWVudC5oIgogI2luY2x1ZGUgIldlYlNpemUuaCIKICNpbmNsdWRlICJX
ZWJUaHJlYWQuaCIKKyNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC05Miw3ICs5Myw3IEBAIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IFdlYkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNE
CiAgICAgYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPSBmYWxzZTsKIAogICAgIEdy
YXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSBzdHlsZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpS
ZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdzsKLSAgICBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OlRocmVhZFVzYWdlIHVzYWdlID0gc2V0dGluZ3MoKS5lbmFibGVDb21wb3NpdG9yVGhyZWFkID8g
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpGb3JVc2VPbkFub3RoZXJUaHJlYWQgOiBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OkZvclVzZU9uVGhpc1RocmVhZDsKKyAgICBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OlRocmVhZFVzYWdlIHVzYWdlID0gQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgp
ID8gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpGb3JVc2VPbkFub3RoZXJUaHJlYWQgOiBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OkZvclVzZU9uVGhpc1RocmVhZDsKICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4
dCh3ZWJDb250ZXh0LnJlbGVhc2UoKSwgYXR0cmlidXRlcywgMCwgc3R5bGUsIHVzYWdlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKaW5k
ZXggNmZjNDYyOGJlY2I2YjVlZjdiZGRmNGQ5ZDdlMTMyNDM3NzU4MWZjOS4uYTFiY2ViZjEyZTVm
ZDdiZGE0YTQzZGUyMzUwM2VkNjkzZTM4ZGJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC01MCw3ICs1MCw2IEBAIFdlYlNldHRpbmdz
SW1wbDo6V2ViU2V0dGluZ3NJbXBsKFNldHRpbmdzKiBzZXR0aW5ncykKICAgICAsIG1fY29tcG9z
aXRlVG9UZXh0dXJlRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2hvd0ZQU0NvdW50ZXIoZmFsc2Up
CiAgICAgLCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkKLSAgICAsIG1fdXNlVGhyZWFk
ZWRDb21wb3NpdG9yKGZhbHNlKQogewogICAgIEFTU0VSVChzZXR0aW5ncyk7CiB9CkBAIC0zNzks
MTEgKzM3OCw2IEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRNaW5pbXVtQWNjZWxlcmF0ZWQy
ZENhbnZhc1NpemUoaW50IG51bVBpeGVscykKICAgICBtX3NldHRpbmdzLT5zZXRNaW5pbXVtQWNj
ZWxlcmF0ZWQyZENhbnZhc1NpemUobnVtUGl4ZWxzKTsKIH0KIAotdm9pZCBXZWJTZXR0aW5nc0lt
cGw6OnNldFVzZVRocmVhZGVkQ29tcG9zaXRvcihib29sIHVzZVRocmVhZGVkQ29tcG9zaXRvcikK
LXsKLSAgICBtX3VzZVRocmVhZGVkQ29tcG9zaXRvciA9IHVzZVRocmVhZGVkQ29tcG9zaXRvcjsK
LX0KLQogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wgZW5h
YmxlZCkKIHsKICAgICBtX3NldHRpbmdzLT5zZXRNZW1vcnlJbmZvRW5hYmxlZChlbmFibGVkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5kZXggNDY5
ODQ0M2U0MDcxMWI1OThjMTVlYzE5NjZkOTViYzMxZmU2ZmY4Mi4uNzRiOGFmOWNkODU1YjJkMmIx
ZmQ5Njg1YTk3NmUxM2ZhMWZmNmQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2V0dGluZ3NJbXBsLmgKQEAgLTEwOSw4ICsxMDksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldExlZ2FjeUFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKGJvb2wpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRNaW5pbXVtQWNjZWxlcmF0ZWQyZENhbnZhc1NpemUoaW50KTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZChib29sKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0VXNlVGhyZWFkZWRDb21wb3NpdG9yKGJvb2wpOwotICAgIHZpcnR1YWwgYm9v
bCB1c2VUaHJlYWRlZENvbXBvc2l0b3IoKSBjb25zdCB7IHJldHVybiBtX3VzZVRocmVhZGVkQ29t
cG9zaXRvcjsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChib29sKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGJvb2wpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKTsK
QEAgLTEzMiw3ICsxMzAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jb21wb3NpdGVUb1RleHR1
cmVFbmFibGVkOwogICAgIGJvb2wgbV9zaG93RlBTQ291bnRlcjsKICAgICBib29sIG1fc2hvd1Bs
YXRmb3JtTGF5ZXJUcmVlOwotICAgIGJvb2wgbV91c2VUaHJlYWRlZENvbXBvc2l0b3I7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcAppbmRleCBiZjNmNDQ5ZTc0NTBiM2EyYmIwMTU3MmY4MjYwMTlmMDJiMTI0ZWFi
Li45YmY3MDg3ZjQzNWU4MGIzYzJjODRlMzJlYjAzZTY1OGYwNTBiZDViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAKICNp
bmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKICNpbmNsdWRlICJX
ZWJWaWV3Q2xpZW50LmgiCi0jaW5jbHVkZSAiY2MvQ0NIZWFkc1VwRGlzcGxheS5oIgorI2luY2x1
ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8
d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTExMzMs
MTIgKzExMzMsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6YW5pbWF0ZShkb3VibGUgZnJhbWVCZWdp
blRpbWUpCiAgICAgaWYgKHdlYmZyYW1lKSB7CiAgICAgICAgIEZyYW1lVmlldyogdmlldyA9IHdl
YmZyYW1lLT5mcmFtZVZpZXcoKTsKICAgICAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgICAgIGlm
ICghc2V0dGluZ3MoKS0+dXNlVGhyZWFkZWRDb21wb3NpdG9yKCkgJiYgbV9sYXllclRyZWVIb3N0
KQorICAgICAgICAgICAgaWYgKCFDQ1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkgJiYgbV9sYXllclRy
ZWVIb3N0KQogICAgICAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0QW5pbWF0aW5nKHRy
dWUpOwogCiAgICAgICAgICAgICB2aWV3LT5zZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKGNvbnZl
cnRTZWNvbmRzVG9ET01UaW1lU3RhbXAoZnJhbWVCZWdpblRpbWUpKTsKIAotICAgICAgICAgICAg
aWYgKCFzZXR0aW5ncygpLT51c2VUaHJlYWRlZENvbXBvc2l0b3IoKSAmJiBtX2xheWVyVHJlZUhv
c3QpCisgICAgICAgICAgICBpZiAoIUNDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSAmJiBtX2xheWVy
VHJlZUhvc3QpCiAgICAgICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRBbmltYXRpbmco
ZmFsc2UpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTI0MCw3ICsxMjQwLDcgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6dGhlbWVDaGFuZ2VkKCkKIHZvaWQgV2ViVmlld0ltcGw6OmNvbXBvc2l0ZShib29s
KQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBpZiAoc2V0dGluZ3Mo
KS0+dXNlVGhyZWFkZWRDb21wb3NpdG9yKCkpCisgICAgaWYgKENDUHJveHk6Omhhc0ltcGxUaHJl
YWQoKSkKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXROZWVkc1JlZHJhdygpOwogICAgIGVs
c2UgewogICAgICAgICBBU1NFUlQoaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpOwpA
QCAtMjc2Niw3ICsyNzY2LDcgQEAgV2ViQ29yZTo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KiBX
ZWJWaWV3SW1wbDo6bm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KCkKIHZvaWQgV2ViVmlld0ltcGw6
OnNjaGVkdWxlQW5pbWF0aW9uKCkKIHsKICAgICBpZiAoaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5n
QWN0aXZlKCkpIHsKLSAgICAgICAgaWYgKHNldHRpbmdzKCktPnVzZVRocmVhZGVkQ29tcG9zaXRv
cigpKSB7CisgICAgICAgIGlmIChDQ1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkpIHsKICAgICAgICAg
ICAgIEFTU0VSVChtX2xheWVyVHJlZUhvc3QpOwogICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5zZXROZWVkc0FuaW1hdGUoKTsKICAgICAgICAgfSBlbHNlCkBAIC0yODM3LDcgKzI4MzcsNiBA
QCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9v
bCBhY3RpdmUpCiAgICAgICAgIFdlYkNvcmU6OkNDU2V0dGluZ3MgY2NTZXR0aW5nczsKICAgICAg
ICAgY2NTZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBwYWdlKCktPnNldHRpbmdzKCktPmFj
Y2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoKTsKICAgICAgICAgY2NTZXR0aW5ncy5jb21wb3NpdGVP
ZmZzY3JlZW4gPSBzZXR0aW5ncygpLT5jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKCk7Ci0gICAg
ICAgIGNjU2V0dGluZ3MuZW5hYmxlQ29tcG9zaXRvclRocmVhZCA9IHNldHRpbmdzKCktPnVzZVRo
cmVhZGVkQ29tcG9zaXRvcigpOwogICAgICAgICBjY1NldHRpbmdzLnNob3dGUFNDb3VudGVyID0g
c2V0dGluZ3MoKS0+c2hvd0ZQU0NvdW50ZXIoKTsKICAgICAgICAgY2NTZXR0aW5ncy5zaG93UGxh
dGZvcm1MYXllclRyZWUgPSBzZXR0aW5ncygpLT5zaG93UGxhdGZvcm1MYXllclRyZWUoKTsKICAg
ICAgICAgY2NTZXR0aW5ncy5yZWZyZXNoUmF0ZSA9IHNjcmVlblJlZnJlc2hSYXRlKHBhZ2UoKS0+
bWFpbkZyYW1lKCktPnZpZXcoKSk7CkBAIC0yODc0LDcgKzI4NzMsNyBAQCBQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBXZWJWaWV3SW1wbDo6Y3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQz
RCgpCiB7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gbV90ZW1wb3Jh
cnlPbnNjcmVlbkdyYXBoaWNzQ29udGV4dDNELnJlbGVhc2UoKTsKICAgICBpZiAoIWNvbnRleHQp
IHsKLSAgICAgICAgaWYgKHNldHRpbmdzKCktPnVzZVRocmVhZGVkQ29tcG9zaXRvcigpKQorICAg
ICAgICBpZiAoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKQogICAgICAgICAgICAgY29udGV4dCA9
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0Rm9yQW5vdGhl
clRocmVhZChnZXRDb21wb3NpdG9yQ29udGV4dEF0dHJpYnV0ZXMoKSwgbV9wYWdlLT5jaHJvbWUo
KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUo
Z2V0Q29tcG9zaXRvckNvbnRleHRBdHRyaWJ1dGVzKCksIG1fcGFnZS0+Y2hyb21lKCksIEdyYXBo
aWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CkBAIC0yOTQyLDcgKzI5
NDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkaWRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dChib29s
IHN1Y2Nlc3MpCiAKIHZvaWQgV2ViVmlld0ltcGw6OnNjaGVkdWxlQ29tcG9zaXRlKCkKIHsKLSAg
ICBBU1NFUlQoIXNldHRpbmdzKCktPnVzZVRocmVhZGVkQ29tcG9zaXRvcigpKTsKKyAgICBBU1NF
UlQoIUNDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSk7CiAgICAgbV9jbGllbnQtPnNjaGVkdWxlQ29t
cG9zaXRlKCk7CiB9CiAKQEAgLTI5NzQsNyArMjk3Myw3IEBAIFdlYkdyYXBoaWNzQ29udGV4dDNE
KiBXZWJWaWV3SW1wbDo6Z3JhcGhpY3NDb250ZXh0M0QoKQogICAgICAgICAgICAgaWYgKHdlYkNv
bnRleHQgJiYgIXdlYkNvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gd2ViQ29udGV4dDsKICAgICAgICAgfQotICAgICAgICBpZiAoc2V0dGluZ3MoKS0+dXNl
VGhyZWFkZWRDb21wb3NpdG9yKCkpCisgICAgICAgIGlmIChDQ1Byb3h5OjpoYXNJbXBsVGhyZWFk
KCkpCiAgICAgICAgICAgICBtX3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhpY3NDb250ZXh0M0QgPSBH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZvckFub3RoZXJU
aHJlYWQoZ2V0Q29tcG9zaXRvckNvbnRleHRBdHRyaWJ1dGVzKCksIG1fcGFnZS0+Y2hyb21lKCks
IEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5T25zY3JlZW5HcmFwaGljc0NvbnRleHQzRCA9
IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoZ2V0Q29tcG9zaXRvckNvbnRleHRBdHRyaWJ1dGVz
KCksIG1fcGFnZS0+Y2hyb21lKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRv
SG9zdFdpbmRvdyk7CkBAIC0yOTg1LDcgKzI5ODQsNiBAQCBXZWJHcmFwaGljc0NvbnRleHQzRCog
V2ViVmlld0ltcGw6OmdyYXBoaWNzQ29udGV4dDNEKCkKICAgICByZXR1cm4gMDsKIH0KIAotCiB2
b2lkIFdlYlZpZXdJbXBsOjpzZXRWaXNpYmlsaXR5U3RhdGUoV2ViUGFnZVZpc2liaWxpdHlTdGF0
ZSB2aXNpYmlsaXR5U3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc0luaXRpYWxTdGF0ZSkgewogICAgIGlmICghcGFnZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggNGE0
MTc5NjQ3OTEzYjhkZjBhNjdmOTNlMzI4NjlmNGMzZDNlN2NmNi4uZTIyMDg4MDg1ZDdlZDBkNjUw
Mjk1YzY5NTc5ODAwOWY3MmU3YmVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0yNDksMTUgKzI0OSw3IEBAIHBy
b3RlY3RlZDoKICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0KCkKICAgICAgICAgOiBtX2JlZ2lubmlu
ZyhmYWxzZSkKICAgICAgICAgLCBtX2VuZFdoZW5CZWdpblJldHVybnMoZmFsc2UpCi0gICAgICAg
ICwgbV90aW1lZE91dChmYWxzZSkKLSAgICB7Ci0gICAgICAgIG1fd2ViVGhyZWFkID0gYWRvcHRQ
dHIod2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmNyZWF0ZVRocmVhZCgiQ0NMYXllclRyZWVIb3N0
VGVzdCIpKTsKLSAgICAgICAgQVNTRVJUKENDUHJveHk6Om1haW5UaHJlYWQoKSk7Ci0KLSAgICAg
ICAgV2ViQ29tcG9zaXRvcjo6c2V0VGhyZWFkKG1fd2ViVGhyZWFkLmdldCgpKTsKLSAgICAgICAg
QVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgbV9tYWluVGhyZWFkUHJv
eHkgPSBDQ1Njb3BlZFRocmVhZFByb3h5OjpjcmVhdGUoQ0NQcm94eTo6bWFpblRocmVhZCgpKTsK
LSAgICB9CisgICAgICAgICwgbV90aW1lZE91dChmYWxzZSkgeyB9CiAKICAgICB2b2lkIGRvQmVn
aW5UZXN0KCk7CiAKQEAgLTI3MSw5ICsyNjMsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpRdWl0TWVzc2FnZUxv
b3AoKTsKICAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOwot
ICAgICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8Q0NMYXllclRy
ZWVIb3N0VGVzdCo+KHNlbGYpOwotICAgICAgICBBU1NFUlRfVFJVRSh0ZXN0KTsKLSAgICAgICAg
dGVzdC0+bV9sYXllclRyZWVIb3N0LmNsZWFyKCk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQg
ZGlzcGF0Y2hTZXROZWVkc0FuaW1hdGUodm9pZCogc2VsZikKQEAgLTM2MiwxNCArMzUxLDI3IEBA
IHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBydW5UZXN0KGJvb2wgdGhyZWFkZWQpCiAg
ICAgewotICAgICAgICBtX3NldHRpbmdzLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQgPSB0aHJlYWRl
ZDsKICAgICAgICAgbV9zZXR0aW5ncy5yZWZyZXNoUmF0ZSA9IDEwMC4wOworCisgICAgICAgIGlm
ICh0aHJlYWRlZCkgeworICAgICAgICAgICAgbV93ZWJUaHJlYWQgPSBhZG9wdFB0cih3ZWJLaXRQ
bGF0Zm9ybVN1cHBvcnQoKS0+Y3JlYXRlVGhyZWFkKCJDQ0xheWVyVHJlZUhvc3RUZXN0IikpOwor
ICAgICAgICAgICAgV2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZShtX3dlYlRocmVhZC5nZXQoKSk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgV2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgw
KTsKKworICAgICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOworICAgICAgICBt
X21haW5UaHJlYWRQcm94eSA9IENDU2NvcGVkVGhyZWFkUHJveHk6OmNyZWF0ZShDQ1Byb3h5Ojpt
YWluVGhyZWFkKCkpOworCiAgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpQb3N0RGVsYXllZFRhc2so
Q0NMYXllclRyZWVIb3N0VGVzdDo6b25CZWdpblRlc3QsIHN0YXRpY19jYXN0PHZvaWQqPih0aGlz
KSwgMCk7CiAgICAgICAgIG1fdGltZW91dFRhc2sgPSBuZXcgVGltZW91dFRhc2sodGhpcyk7CiAg
ICAgICAgIHdlYmtpdF9zdXBwb3J0OjpQb3N0RGVsYXllZFRhc2sobV90aW1lb3V0VGFzaywgNTAw
MCk7IC8vIHdlYmtpdF9zdXBwb3J0IHRha2VzIG93bmVyc2hpcCBvZiB0aGUgdGFzawogICAgICAg
ICB3ZWJraXRfc3VwcG9ydDo6UnVuTWVzc2FnZUxvb3AoKTsKICAgICAgICAgd2Via2l0X3N1cHBv
cnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOwogCisgICAgICAgIGlmIChtX2xheWVyVHJlZUhv
c3QgJiYgbV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIoKSkKKyAgICAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+cm9vdExheWVyKCktPnNldExheWVyVHJlZUhvc3QoMCk7CisgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC5jbGVhcigpOworCiAgICAgICAgIGlmIChtX3RpbWVvdXRUYXNrKQogICAgICAg
ICAgICAgbV90aW1lb3V0VGFzay0+Y2xlYXJUZXN0KCk7CiAKQEAgLTM3NywxMCArMzc5LDExIEBA
IHByb3RlY3RlZDoKICAgICAgICAgbV9jbGllbnQuY2xlYXIoKTsKICAgICAgICAgaWYgKG1fdGlt
ZWRPdXQpIHsKICAgICAgICAgICAgIEZBSUwoKSA8PCAiVGVzdCB0aW1lZCBvdXQiOworICAgICAg
ICAgICAgV2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICBtX3Jvb3RMYXllci0+c2V0TGF5ZXJUcmVlSG9zdCgwKTsKICAgICAg
ICAgYWZ0ZXJUZXN0KCk7CisgICAgICAgIFdlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CiAgICAg
fQogCiAgICAgQ0NTZXR0aW5ncyBtX3NldHRpbmdzOwpAQCAtMzkyLDcgKzM5NSw2IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2VuZFdoZW5CZWdpblJldHVybnM7CiAgICAgYm9vbCBtX3RpbWVkT3V0
OwogCi0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9vdExheWVyOwogICAgIE93blB0cjxX
ZWJUaHJlYWQ+IG1fd2ViVGhyZWFkOwogICAgIFJlZlB0cjxDQ1Njb3BlZFRocmVhZFByb3h5PiBt
X21haW5UaHJlYWRQcm94eTsKICAgICBUaW1lb3V0VGFzayogbV90aW1lb3V0VGFzazsKQEAgLTQw
MywxMCArNDA1LDEwIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0VGVzdDo6ZG9CZWdpblRlc3QoKQog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9jbGllbnQgPSBNb2NrTGF5ZXJUcmVl
SG9zdENsaWVudDo6Y3JlYXRlKHRoaXMpOwogCi0gICAgbV9yb290TGF5ZXIgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoMCk7Ci0gICAgbV9sYXllclRyZWVIb3N0ID0gTW9ja0xheWVyVHJlZUhvc3Q6
OmNyZWF0ZSh0aGlzLCBtX2NsaWVudC5nZXQoKSwgbV9yb290TGF5ZXIsIG1fc2V0dGluZ3MpOwor
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByb290TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoMCk7CisgICAgbV9sYXllclRyZWVIb3N0ID0gTW9ja0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0
aGlzLCBtX2NsaWVudC5nZXQoKSwgcm9vdExheWVyLCBtX3NldHRpbmdzKTsKICAgICBBU1NFUlRf
VFJVRShtX2xheWVyVHJlZUhvc3QpOwotICAgIG1fcm9vdExheWVyLT5zZXRMYXllclRyZWVIb3N0
KG1fbGF5ZXJUcmVlSG9zdC5nZXQoKSk7CisgICAgcm9vdExheWVyLT5zZXRMYXllclRyZWVIb3N0
KG1fbGF5ZXJUcmVlSG9zdC5nZXQoKSk7CiAKICAgICBtX2JlZ2lubmluZyA9IHRydWU7CiAgICAg
YmVnaW5UZXN0KCk7CkBAIC00NDUsNiArNDQ3LDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBiZWdpblRlc3QoKQogICAgIHsKKyAgICAgICAgLy8gS2lsbCB0aGUgbGF5ZXJUcmVlSG9z
dCBpbW1lZGlhdGVseS4KKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIoKS0+c2V0
TGF5ZXJUcmVlSG9zdCgwKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LmNsZWFyKCk7CisKICAg
ICAgICAgZW5kVGVzdCgpOwogICAgIH0KIApAQCAtNDczLDYgKzQ3OSwxMSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCiAgICAgewogICAgICAgICBwb3N0U2V0TmVlZHND
b21taXRUb01haW5UaHJlYWQoKTsKKworICAgICAgICAvLyBLaWxsIHRoZSBsYXllclRyZWVIb3N0
IGltbWVkaWF0ZWx5LgorICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnJvb3RMYXllcigpLT5zZXRM
YXllclRyZWVIb3N0KDApOworICAgICAgICBtX2xheWVyVHJlZUhvc3QuY2xlYXIoKTsKKwogICAg
ICAgICBlbmRUZXN0KCk7CiAgICAgfQogCkBAIC00OTEsNiArNTAyLDExIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKICAgICB7CiAgICAgICAgIHBvc3RTZXROZWVkc1Jl
ZHJhd1RvTWFpblRocmVhZCgpOworCisgICAgICAgIC8vIEtpbGwgdGhlIGxheWVyVHJlZUhvc3Qg
aW1tZWRpYXRlbHkuCisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCktPnNldExh
eWVyVHJlZUhvc3QoMCk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC5jbGVhcigpOworCiAgICAg
ICAgIGVuZFRlc3QoKTsKICAgICB9CiAKQEAgLTUwMSw4ICs1MTcsOCBAQCBwdWJsaWM6CiAKIFNJ
TkdMRV9BTkRfTVVMVElfVEhSRUFEX1RFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0U2hvcnRsaXZl
ZDMpCiAKLS8vIENvbnN0YW50bHkgcmVkcmF3aW5nIGxheWVyVHJlZUhvc3RzIHNob3VsZG4ndCBk
aWUgd2hlbiB0aGV5IGNvbW1pdAotY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdENvbW1pdGluZ1dp
dGhDb250aW51b3VzUmVkcmF3IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3QgeworLy8gVGVz
dCBpbnRlcmxlYXZpbmcgb2YgcmVkcmF3cyBhbmQgY29tbWl0cworY2xhc3MgQ0NMYXllclRyZWVI
b3N0VGVzdENvbW1pdGluZ1dpdGhDb250aW51b3VzUmVkcmF3IDogcHVibGljIENDTGF5ZXJUcmVl
SG9zdFRlc3RUaHJlYWRPbmx5IHsKIHB1YmxpYzoKICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0Q29t
bWl0aW5nV2l0aENvbnRpbnVvdXNSZWRyYXcoKQogICAgICAgICA6IG1fbnVtQ29tcGxldGVDb21t
aXRzKDApCkBAIC01MTMsNyArNTI5LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBiZWdp
blRlc3QoKQogICAgIHsKICAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7
Ci0gICAgICAgIGVuZFRlc3QoKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29t
cGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKQpAQCAtNTQwLDcgKzU1NSwxMCBA
QCBwcml2YXRlOgogICAgIGludCBtX251bURyYXdzOwogfTsKIAotU0lOR0xFX0FORF9NVUxUSV9U
SFJFQURfVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RDb21taXRpbmdXaXRoQ29udGludW91c1Jl
ZHJhdykKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0Q29tbWl0aW5nV2l0aENvbnRpbnVvdXNS
ZWRyYXcsIHJ1bk11bHRpVGhyZWFkKQoreworICAgIHJ1blRlc3RUaHJlYWRlZCgpOworfQogCiAv
LyBUd28gc2V0TmVlZHNDb21taXRzIGluIGEgcm93IHNob3VsZCBsZWFkIHRvIGF0IGxlYXN0IDEg
Y29tbWl0IGFuZCBhdCBsZWFzdCAxCiAvLyBkcmF3IHdpdGggZnJhbWUgMC4KQEAgLTk5MSw2ICsx
MDA5LDkgQEAgcHVibGljOgogICAgICAgICAvLyBhbW91dCBvZiB0aW1lcyBhcyBwYWludENvbnRl
bnRzSWZEaXJ0eSgpLgogICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5wYWlu
dENvbnRlbnRzQ291bnQoKSwKICAgICAgICAgICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+
dXBkYXRlQ291bnQoKSk7CisKKyAgICAgICAgLy8gY2xlYXIgbV91cGRhdGVDaGVja0xheWVyIHNv
IENDTGF5ZXJUcmVlSG9zdCBkaWVzLgorICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXIuY2xlYXIo
KTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYkNvbXBvc2l0b3JJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYkNvbXBvc2l0b3JJbXBsVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGEzMzMzNjljZWVmNTk4YTliYTg5Njc4YTI0MjU4MDU3MjE5MmM0YjkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW1wbFRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0g
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgIldlYkNv
bXBvc2l0b3JJbXBsLmgiCi0KLSNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCi0K
LSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLQotdXNp
bmcgV2ViS2l0OjpXZWJDb21wb3NpdG9yOwotdXNpbmcgV2ViS2l0OjpXZWJDb21wb3NpdG9ySW1w
bDsKLQotbmFtZXNwYWNlIHsKLQotVEVTVChXZWJDb21wb3NpdG9ySW1wbCwgZnJvbUlkZW50aWZp
ZXIpCi17Ci0jaWZuZGVmIE5ERUJVRwotICAgIC8vIFdlYkNvbXBvc2l0b3IgQVBJcyBjYW4gb25s
eSBiZSBjYWxsZWQgZnJvbSB0aGUgY29tcG9zaXRvciB0aHJlYWQuCi0gICAgV2ViQ29yZTo6RGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGFsd2F5c0ltcGxUaHJlYWQ7Ci0jZW5kaWYKLQotICAgIC8v
IEJlZm9yZSBjcmVhdGluZyBhbnkgV2ViQ29tcG9zaXRvcnMsIGxvb2t1cHMgZm9yIGFueSB2YWx1
ZSBzaG91bGQgZmFpbCBhbmQgbm90IGNyYXNoLgotICAgIEVYUEVDVF9FUSgwLCBXZWJDb21wb3Np
dG9yOjpmcm9tSWRlbnRpZmllcigyKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFdlYkNvbXBvc2l0b3I6
OmZyb21JZGVudGlmaWVyKDApKTsKLSAgICBFWFBFQ1RfRVEoMCwgV2ViQ29tcG9zaXRvcjo6ZnJv
bUlkZW50aWZpZXIoLTEpKTsKLQotICAgIGludCBjb21wb3NpdG9ySWRlbnRpZmllciA9IC0xOwot
ICAgIHsKLSAgICAgICAgT3duUHRyPFdlYkNvbXBvc2l0b3JJbXBsPiBjb21wID0gV2ViQ29tcG9z
aXRvckltcGw6OmNyZWF0ZSgwKTsKLSAgICAgICAgY29tcG9zaXRvcklkZW50aWZpZXIgPSBjb21w
LT5pZGVudGlmaWVyKCk7Ci0gICAgICAgIC8vIFRoZSBjb21wb3NpdG9yIHdlIGp1c3QgY3JlYXRl
ZCBzaG91bGQgYmUgbG9jYXRhYmxlLgotICAgICAgICBFWFBFQ1RfRVEoY29tcC5nZXQoKSwgV2Vi
Q29tcG9zaXRvcjo6ZnJvbUlkZW50aWZpZXIoY29tcG9zaXRvcklkZW50aWZpZXIpKTsKLQotICAg
ICAgICAvLyBCdXQgbm90aGluZyBlbHNlLgotICAgICAgICBFWFBFQ1RfRVEoMCwgV2ViQ29tcG9z
aXRvcjo6ZnJvbUlkZW50aWZpZXIoY29tcC0+aWRlbnRpZmllcigpICsgMTApKTsKLSAgICB9Ci0K
LSAgICAvLyBBZnRlciB0aGUgY29tcG9zaXRvciBpcyBkZXN0cm95ZWQsIGl0cyBlbnRyeSBzaG91
bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBtYXAuCi0gICAgRVhQRUNUX0VRKDAsIFdlYkNvbXBvc2l0
b3I6OmZyb21JZGVudGlmaWVyKGNvbXBvc2l0b3JJZGVudGlmaWVyKSk7Ci19Ci0KLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjA3YzA2YTJiNTcxYTk0
ZjM3NzhmMDVlNjc4ODMyNTA4ZDhiMmYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCkBA
IC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oIgorCisjaW5jbHVkZSAiV2ViQ29tcG9zaXRv
ci5oIgorI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKKworI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCit1c2luZyBXZWJLaXQ6Oldl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXI7Cit1c2luZyBXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsOworCituYW1lc3BhY2UgeworCitURVNUKFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsLCBmcm9tSWRlbnRpZmllcikKK3sKKyAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6
OmluaXRpYWxpemUoMCk7CisjaWZuZGVmIE5ERUJVRworICAgIC8vIFdlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXIgQVBJcyBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgY29tcG9zaXRvciB0aHJl
YWQuCisgICAgV2ViQ29yZTo6RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGFsd2F5c0ltcGxUaHJl
YWQ7CisjZW5kaWYKKworICAgIC8vIEJlZm9yZSBjcmVhdGluZyBhbnkgV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlcnMsIGxvb2t1cHMgZm9yIGFueSB2YWx1ZSBzaG91bGQgZmFpbCBhbmQgbm90IGNy
YXNoLgorICAgIEVYUEVDVF9FUSgwLCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyOjpmcm9tSWRl
bnRpZmllcigyKSk7CisgICAgRVhQRUNUX0VRKDAsIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXI6
OmZyb21JZGVudGlmaWVyKDApKTsKKyAgICBFWFBFQ1RfRVEoMCwgV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlcjo6ZnJvbUlkZW50aWZpZXIoLTEpKTsKKworICAgIGludCBjb21wb3NpdG9ySWRlbnRp
ZmllciA9IC0xOworICAgIHsKKyAgICAgICAgT3duUHRyPFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsPiBjb21wID0gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmNyZWF0ZSgwKTsK
KyAgICAgICAgY29tcG9zaXRvcklkZW50aWZpZXIgPSBjb21wLT5pZGVudGlmaWVyKCk7CisgICAg
ICAgIC8vIFRoZSBjb21wb3NpdG9yIHdlIGp1c3QgY3JlYXRlZCBzaG91bGQgYmUgbG9jYXRhYmxl
LgorICAgICAgICBFWFBFQ1RfRVEoY29tcC5nZXQoKSwgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
cjo6ZnJvbUlkZW50aWZpZXIoY29tcG9zaXRvcklkZW50aWZpZXIpKTsKKworICAgICAgICAvLyBC
dXQgbm90aGluZyBlbHNlLgorICAgICAgICBFWFBFQ1RfRVEoMCwgV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlcjo6ZnJvbUlkZW50aWZpZXIoY29tcC0+aWRlbnRpZmllcigpICsgMTApKTsKKyAgICB9
CisKKyAgICAvLyBBZnRlciB0aGUgY29tcG9zaXRvciBpcyBkZXN0cm95ZWQsIGl0cyBlbnRyeSBz
aG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBtYXAuCisgICAgRVhQRUNUX0VRKDAsIFdlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXI6OmZyb21JZGVudGlmaWVyKGNvbXBvc2l0b3JJZGVudGlmaWVyKSk7
CisKKyAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7Cit9CisKK30KZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1M2Q2YzQ4NzAw
YzYxN2RhNWYwYWFjMDExMDQ3MzRmNDY3MWYwMjIzLi4yMTI0NDViMjc4MmQzZjRjNGJlYzIxZDQy
ODViYjk1YWU4NjM5Y2VjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMTEtMTggIE5hdCBEdWNhICA8bmR1Y2FA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5hYmxlIHRocmVhZGVkIGNvbXBv
c2l0aW5nIHZpYSBDQ1RocmVhZFByb3h5OjpoYXNUaHJlYWQgb25seQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA4MzgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbC5jcHA6CisgICAgICAgIChUZXN0U2hlbGw6OnJlc2V0V2ViU2V0dGluZ3MpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oOgorICAgICAgICAo
VGVzdFNoZWxsOjp0aHJlYWRlZENvbXBvc2l0aW5nRW5hYmxlZCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViUHJlZmVy
ZW5jZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjphcHBseVRvKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5oOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZp
ZXdIb3N0OjpXZWJWaWV3SG9zdCk6CisgICAgICAgIChXZWJWaWV3SG9zdDo6fldlYlZpZXdIb3N0
KToKKwogMjAxMS0xMS0yMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcnVuLWd0ay10ZXN0cyB0ZW1wb3Jhcnkgd29ya2Fyb3Vu
ZCBhZnRlciByOTg1MDAuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0U2hlbGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxs
LmNwcAppbmRleCA4NTA3ZjI0YzAyMjMzYmNkMTA4ODExZjBiYzcxN2I1NjNkZTdjZjA4Li41OTY0
MDYzN2E0OTYzNDZjNjdiMTkxMjk2ZTZmNWZmZGQ4NjQxM2RkIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTE5OSw3ICsxOTksNiBAQCB2b2lkIFRl
c3RTaGVsbDo6cmVzZXRXZWJTZXR0aW5ncyhXZWJWaWV3JiB3ZWJWaWV3KQogICAgIG1fcHJlZnMu
cmVzZXQoKTsKICAgICBtX3ByZWZzLmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkID0gdHJ1
ZTsKICAgICBtX3ByZWZzLmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQgPSBt
X2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQ7Ci0gICAgbV9wcmVmcy50aHJl
YWRlZENvbXBvc2l0aW5nRW5hYmxlZCA9IG1fdGhyZWFkZWRDb21wb3NpdGluZ0VuYWJsZWQ7CiAg
ICAgbV9wcmVmcy5jb21wb3NpdGVUb1RleHR1cmUgPSBtX2NvbXBvc2l0ZVRvVGV4dHVyZTsKICAg
ICBtX3ByZWZzLmZvcmNlQ29tcG9zaXRpbmdNb2RlID0gbV9mb3JjZUNvbXBvc2l0aW5nTW9kZTsK
ICAgICBtX3ByZWZzLmFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkID0gbV9hY2NlbGVyYXRlZDJk
Q2FudmFzRW5hYmxlZDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgK
aW5kZXggYjE5NGViMGIyMzk2MzBlMTIzZGZiNDMxMmQwY2Y3NDEzNzM4NjIxMS4uMDkwMDc5NGI0
MGVlYzIzNjc0MzlkNmFkMWNlYmJiZGE1ZTFhYzFkOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFNoZWxsLmgKQEAgLTEzMCw2ICsxMzAsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQoYm9vbCBlbmFibGVk
KSB7IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZCA9IGVuYWJsZWQ7IH0K
ICAgICB2b2lkIHNldFRocmVhZGVkQ29tcG9zaXRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBt
X3RocmVhZGVkQ29tcG9zaXRpbmdFbmFibGVkID0gZW5hYmxlZDsgfQorICAgIGJvb2wgdGhyZWFk
ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZGVkQ29tcG9zaXRp
bmdFbmFibGVkOyB9CiAgICAgdm9pZCBzZXRDb21wb3NpdGVUb1RleHR1cmUoYm9vbCBlbmFibGVk
KSB7IG1fY29tcG9zaXRlVG9UZXh0dXJlID0gZW5hYmxlZDsgfQogICAgIHZvaWQgc2V0Rm9yY2VD
b21wb3NpdGluZ01vZGUoYm9vbCBlbmFibGVkKSB7IG1fZm9yY2VDb21wb3NpdGluZ01vZGUgPSBl
bmFibGVkOyB9CiAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZChib29sIGVu
YWJsZWQpIHsgbV9hY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZCA9IGVuYWJsZWQ7IH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCA1
Y2M4ZmFiOTk1OGE3OTZhYzQ5ZGU4MTQxOWFhOTlmMGRkMzJmYzZiLi43NWEwNTc3ODk4YTJkZmFh
Mzg1NGQwZmI2NTU4ZTkwNmQxMzMyNmQ5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0xMDksNyArMTA5LDYgQEAgdm9pZCBXZWJQ
cmVmZXJlbmNlczo6cmVzZXQoKQogICAgIGh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZCA9IGZhbHNl
OwogICAgIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQgPSBmYWxzZTsKICAg
ICBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCA9IGZhbHNlOwotICAgIHRocmVhZGVkQ29t
cG9zaXRpbmdFbmFibGVkID0gZmFsc2U7CiAgICAgY29tcG9zaXRlVG9UZXh0dXJlID0gZmFsc2U7
CiAgICAgYWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQgPSBmYWxzZTsKICAgICBsZWdhY3lBY2Nl
bGVyYXRlZDJkQ2FudmFzRW5hYmxlZCA9IGZhbHNlOwpAQCAtMjEzLDcgKzIxMiw2IEBAIHZvaWQg
V2ViUHJlZmVyZW5jZXM6OmFwcGx5VG8oV2ViVmlldyogd2ViVmlldykKICAgICBzZXR0aW5ncy0+
c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoY2FyZXRCcm93c2luZ0VuYWJsZWQpOwogICAgIHNldHRp
bmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChhY2NlbGVyYXRlZENvbXBvc2l0
aW5nRW5hYmxlZCk7CiAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JW
aWRlb0VuYWJsZWQoYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZCk7Ci0gICAg
c2V0dGluZ3MtPnNldFVzZVRocmVhZGVkQ29tcG9zaXRvcih0aHJlYWRlZENvbXBvc2l0aW5nRW5h
YmxlZCk7CiAgICAgc2V0dGluZ3MtPnNldENvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoY29tcG9z
aXRlVG9UZXh0dXJlKTsKICAgICBzZXR0aW5ncy0+c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoZm9y
Y2VDb21wb3NpdGluZ01vZGUpOwogICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZDJkQ2FudmFz
RW5hYmxlZChhY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuaAppbmRleCAyMzM3YTQwNTU5ZDBlOGFjNGZh
NzY1ZTg1MzYxNjQ4YjIxM2IwYTliLi4yMTY0OTQ0OGQ4OWU4YjRjMTliMzc2OTk2ZGFmMTY4MTRk
YWQyYjRlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVm
ZXJlbmNlcy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVu
Y2VzLmgKQEAgLTEwMiw3ICsxMDIsNiBAQCBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXMgewogICAgIGJv
b2wgY2FyZXRCcm93c2luZ0VuYWJsZWQ7CiAgICAgYm9vbCBhY2NlbGVyYXRlZENvbXBvc2l0aW5n
Rm9yVmlkZW9FbmFibGVkOwogICAgIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQ7
Ci0gICAgYm9vbCB0aHJlYWRlZENvbXBvc2l0aW5nRW5hYmxlZDsKICAgICBib29sIGNvbXBvc2l0
ZVRvVGV4dHVyZTsKICAgICBib29sIGZvcmNlQ29tcG9zaXRpbmdNb2RlOwogICAgIGJvb2wgYWNj
ZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQ7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggNzBiYmRkNTMyNGVlYzQ1MmY4MjZjMDY5MjQ0N2VmNDEx
OTg4YTJmMC4uYWI3ODQ0MGVmNGIxNTljMWZiNzU1ZDRiODlkMWI1MGRmNmM3YzA2MiAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtMTIwMiw4
ICsxMjAyLDExIEBAIFdlYlZpZXdIb3N0OjpXZWJWaWV3SG9zdChUZXN0U2hlbGwqIHNoZWxsKQog
ewogICAgIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogCi0gICAgbV9jb21wb3NpdG9yVGhy
ZWFkID0gYWRvcHRQdHIoV2ViS2l0Ojp3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y3JlYXRlVGhy
ZWFkKCJDb21wb3NpdG9yIikpOwotICAgIFdlYkNvbXBvc2l0b3I6OnNldFRocmVhZChtX2NvbXBv
c2l0b3JUaHJlYWQuZ2V0KCkpOworICAgIGlmIChzaGVsbC0+dGhyZWFkZWRDb21wb3NpdGluZ0Vu
YWJsZWQoKSkgeworICAgICAgICBtX2NvbXBvc2l0b3JUaHJlYWQgPSBhZG9wdFB0cihXZWJLaXQ6
OndlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jcmVhdGVUaHJlYWQoIkNvbXBvc2l0b3IiKSk7Cisg
ICAgICAgIFdlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUobV9jb21wb3NpdG9yVGhyZWFkLmdldCgp
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgV2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKIAog
ICAgIHJlc2V0KCk7CiB9CkBAIC0xMjI1LDYgKzEyMjgsOCBAQCBXZWJWaWV3SG9zdDo6fldlYlZp
ZXdIb3N0KCkKICAgICB3ZWJXaWRnZXQoKS0+Y2xvc2UoKTsKICAgICBpZiAobV9pbk1vZGFsTG9v
cCkKICAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlF1aXRNZXNzYWdlTG9vcCgpOworCisgICAgV2Vi
Q29tcG9zaXRvcjo6c2h1dGRvd24oKTsKIH0KIAogdm9pZCBXZWJWaWV3SG9zdDo6c2V0V2ViV2lk
Z2V0KFdlYktpdDo6V2ViV2lkZ2V0KiB3aWRnZXQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117274</attachid>
            <date>2011-11-30 14:24:09 -0800</date>
            <delta_ts>2011-11-30 17:17:03 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-70838-20111130142408.patch</filename>
            <type>text/plain</type>
            <size>71676</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQwNjAyMmY4MWQwZTUx
M2E0Zjg2MjY0ZmY2M2RlNmVhMWEwOWQ1MS4uZDI3ZjE5NDNkMWQzNmIxNzgzZmJhZmI5ODhjODZk
Yjc3ZGNlYmQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDExLTExLTE4ICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEVuYWJsZSB0
aHJlYWRlZCBjb21wb3NpdGluZyB2aWEgQ0NUaHJlYWRQcm94eTo6aGFzVGhyZWFkIG9ubHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODM4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpsYXllclJlbmRlcmVyQ29udGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjplbmFibGVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Y29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OnNldE5lZWRzQW5pbWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OnNldE5lZWRzQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVl
SG9zdDo6c2V0TmVlZHNSZWRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
Ojpjb21wb3NpdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6Q0NTZXR0aW5n
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1Byb3h5Ojppc01haW5UaHJlYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NQcm94eTo6aXNJbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJveHk6
OnNldE1haW5UaHJlYWRJc0ltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjpEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQ6OkRlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQ6On5EZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQpOgorCiAyMDExLTExLTMwICBSZW5hdGEgSG9kb3ZhbiAgPHJlbmlAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBDRyBidWlsZGZpeCBhZnRlciByMTAxNTE3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCAwNDA1OWZiNTdlOGZmZmViNTc3OTY0MWM5MThjYzJlMjMwZWZiMjk2Li5kNjYyMWYx
OGIwNzJiM2E3MjMxMmZhMzM4YWM3Yzk3YjZhYmM0NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDExLTExLTE4ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEVuYWJsZSB0aHJlYWRlZCBjb21wb3NpdGlu
ZyB2aWEgQ0NUaHJlYWRQcm94eTo6aGFzVGhyZWFkIG9ubHkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
SmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQ29tcG9zaXRvci5oOgorICAg
ICAgICAqIHB1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkxh
eWVyVHJlZVZpZXc6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICogcHVibGljL1dlYlNl
dHRpbmdzLmg6CisgICAgICAgICogc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbXBvc2l0b3I6OnNodXRkb3duKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6
ZnJvbUlkZW50aWZpZXIpOgorICAgICAgICAqIHNyYy9XZWJLaXQuY3BwOgorICAgICAgICAoV2Vi
S2l0Ojppbml0aWFsaXplV2l0aG91dFY4KToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmll
dy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpvcGVy
YXRvciBDQ1NldHRpbmdzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6Y29t
cG9zaXRlKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6Y3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRl
eHQzRCk6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAgKiBzcmMvV2Vi
U2V0dGluZ3NJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OmFuaW1hdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6Y29tcG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNjaGVkdWxl
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjcmVh
dGVMYXllclRyZWVIb3N0Q29udGV4dDNEKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnNjaGVkdWxlQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmdyYXBo
aWNzQ29udGV4dDNEKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoK
KyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdDo6Q0NMYXllclRyZWVIb3N0VGVzdCk6
CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Q6OnJ1blRlc3QpOgorCiAyMDExLTEx
LTMwICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBnZXQgcmlkIG9mIGRlZmVycmVkIGJhY2tlbmQtPmZyb250LWVuZCBjb21tYW5k
cyBwcm9jZXNzaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXgg
MDc3OGU1ZGZmZjE5ODgwMTFlZjJmNmMwZmM2MmViYmJlNzgyNjVlZC4uZDQ3MmM3YTc4M2E0MjEy
OGI2MDJiNWM3NGFjZTY0MTUwYjI2N2Q3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmluaXRpYWxpemUoKQogICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9DSFJP
TUlVTV9tYXBfc3ViIik7CiAKICAgICAvLyBVc2UgdGhlIHN3YXBCdWZmZXJzIGNhbGxiYWNrIG9u
bHkgd2l0aCB0aGUgdGhyZWFkZWQgcHJveHkuCi0gICAgaWYgKHNldHRpbmdzKCkuZW5hYmxlQ29t
cG9zaXRvclRocmVhZCkKKyAgICBpZiAoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKQogICAgICAg
ICBtX2NhcGFiaWxpdGllcy51c2luZ1N3YXBDb21wbGV0ZUNhbGxiYWNrID0gZXh0ZW5zaW9ucy0+
c3VwcG9ydHMoIkdMX0NIUk9NSVVNX3N3YXBidWZmZXJzX2NvbXBsZXRlX2NhbGxiYWNrIik7CiAg
ICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVzaW5nU3dhcENvbXBsZXRlQ2FsbGJhY2spIHsKICAgICAg
ICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fc3dhcGJ1ZmZlcnNfY29t
cGxldGVfY2FsbGJhY2siKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDI3
NmYzYzlmYzJmZTEwN2YxNjNiMmFiYTA5OGMwM2ZiYjMzNDRjYjYuLjJiMGQxNmU1MTk5NWY1Mzlm
NjY4MzBiZjM1YTgzZWM1ZDgzZDczZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNw
cApAQCAtMTYyLDcgKzE2Miw3IEBAIEdyYXBoaWNzQ29udGV4dDNEKiBXZWJHTExheWVyQ2hyb21p
dW06OmxheWVyUmVuZGVyZXJDb250ZXh0KCkKIHsKICAgICAvLyBGSVhNRTogSW4gdGhlIHRocmVh
ZGVkIGNhc2UsIHBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMgbXVzdCBiZQogICAgIC8vIHJl
ZmFjdG9yZWQgdG8gYmUgYXN5bmNocm9ub3VzLiBDdXJyZW50bHkgdGhpcyBpcyB1bmltcGxlbWVu
dGVkLgotICAgIGlmICghbGF5ZXJUcmVlSG9zdCgpIHx8IGxheWVyVHJlZUhvc3QoKS0+c2V0dGlu
Z3MoKS5lbmFibGVDb21wb3NpdG9yVGhyZWFkKQorICAgIGlmICghbGF5ZXJUcmVlSG9zdCgpIHx8
IENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJu
IGxheWVyVHJlZUhvc3QoKS0+Y29udGV4dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNw
bGF5LmNwcAppbmRleCBiNjhmNDZjZjhiODFjOWU3NmUzNzc5YzY5MDFiY2I5NDU1MWM5MWNmLi43
MDhiY2ZmODgwMWI3ODg4MTA2MGI1Mjk4NThiMjg5Yjk1MzI4YWVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0hlYWRzVXBEaXNwbGF5LmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIENDSGVhZHNVcERpc3Bs
YXk6Om9uU3dhcEJ1ZmZlcnMoKQogYm9vbCBDQ0hlYWRzVXBEaXNwbGF5OjplbmFibGVkKCkgY29u
c3QKIHsKICAgICAvLyBGSVhNRTogSFVEIGRvZXMgbm90IHdvcmsgaW4gY29tcG9zaXRvciB0aHJl
YWQgbW9kZS4KLSAgICBpZiAoc2V0dGluZ3MoKS5lbmFibGVDb21wb3NpdG9yVGhyZWFkKQorICAg
IGlmIChDQ1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICByZXR1cm4gc2V0dGluZ3MoKS5zaG93UGxhdGZvcm1MYXllclRyZWUgfHwgc2V0dGluZ3MoKS5z
aG93RlBTQ291bnRlcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGFi
ZGYxNjJkMDNhMDlmYjJkMjA5MmFlOTQ5YWVlOTA1Y2E3ZWFlZDQuLjE0NWE3OTk4MDI3ZDA1ZmVk
Mjg1OGU1ODg3ZjRiNDllNjk3Yjg0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cApAQCAtMzcsOCArMzcsMTcgQEAKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1ZGUg
ImNjL0NDVGhyZWFkUHJveHkuaCIKIAorbmFtZXNwYWNlIHsKK3N0YXRpYyBpbnQgbnVtTGF5ZXJU
cmVlSW5zdGFuY2VzOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jvb2wgQ0NMYXllclRy
ZWVIb3N0OjphbnlMYXllclRyZWVIb3N0SW5zdGFuY2VFeGlzdHMoKQoreworICAgIHJldHVybiBu
dW1MYXllclRyZWVJbnN0YW5jZXMgPiAwOworfQorCiBQYXNzUmVmUHRyPENDTGF5ZXJUcmVlSG9z
dD4gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQs
IGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIFJlZlB0cjxDQ0xheWVyVHJlZUhv
c3Q+IGxheWVyVHJlZUhvc3QgPSBhZG9wdFJlZihuZXcgQ0NMYXllclRyZWVIb3N0KGNsaWVudCwg
c2V0dGluZ3MpKTsKQEAgLTYwLDEyICs2OSwxMyBAQCBDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJU
cmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncwog
ICAgICwgbV9tYXhQYWdlU2NhbGUoMSkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhy
ZWFkKCkpOworICAgIG51bUxheWVyVHJlZUluc3RhbmNlcysrOwogfQogCiBib29sIENDTGF5ZXJU
cmVlSG9zdDo6aW5pdGlhbGl6ZSgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9z
dDo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwotICAgIGlmIChtX3NldHRpbmdzLmVuYWJsZUNvbXBv
c2l0b3JUaHJlYWQpIHsKKyAgICBpZiAoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKSB7CiAgICAg
ICAgIC8vIFRoZSBIVUQgZG9lcyBub3Qgd29yayBpbiB0aHJlYWRlZCBtb2RlLiBUdXJuIGl0IG9m
Zi4KICAgICAgICAgbV9zZXR0aW5ncy5zaG93RlBTQ291bnRlciA9IGZhbHNlOwogICAgICAgICBt
X3NldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSA9IGZhbHNlOwpAQCAtOTUsNiArMTA1LDcg
QEAgQ0NMYXllclRyZWVIb3N0Ojp+Q0NMYXllclRyZWVIb3N0KCkKICAgICBtX3Byb3h5LT5zdG9w
KCk7CiAgICAgbV9wcm94eS5jbGVhcigpOwogICAgIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOworICAg
IG51bUxheWVyVHJlZUluc3RhbmNlcy0tOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGVs
ZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IpCkBAIC0xNjksNyArMTgwLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRpZFJlY3JlYXRl
R3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2VzcykKIC8vIFRlbXBvcmFyeSBoYWNrIHVudGlsIFdl
YlZpZXdJbXBsIGNvbnRleHQgY3JlYXRpb24gZ2V0cyBzaW1wbGlmaWVkCiBHcmFwaGljc0NvbnRl
eHQzRCogQ0NMYXllclRyZWVIb3N0Ojpjb250ZXh0KCkKIHsKLSAgICBBU1NFUlQoIW1fc2V0dGlu
Z3MuZW5hYmxlQ29tcG9zaXRvclRocmVhZCk7CisgICAgQVNTRVJUKCFDQ1Byb3h5OjpoYXNJbXBs
VGhyZWFkKCkpOwogICAgIHJldHVybiBtX3Byb3h5LT5jb250ZXh0KCk7CiB9CiAKQEAgLTIwMCwx
MyArMjExLDEzIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRab29tQW5pbWF0b3JUcmFuc2Zv
cm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHpvb20pCiAKIHZvaWQgQ0NMYXllclRyZWVI
b3N0OjpzZXROZWVkc0FuaW1hdGUoKQogewotICAgIEFTU0VSVChtX3NldHRpbmdzLmVuYWJsZUNv
bXBvc2l0b3JUaHJlYWQpOworICAgIEFTU0VSVChDQ1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkpOwog
ICAgIG1fcHJveHktPnNldE5lZWRzQW5pbWF0ZSgpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6c2V0TmVlZHNDb21taXQoKQogewotICAgIGlmIChtX3NldHRpbmdzLmVuYWJsZUNvbXBvc2l0
b3JUaHJlYWQpIHsKKyAgICBpZiAoQ0NUaHJlYWRQcm94eTo6aW1wbFRocmVhZCgpKSB7CiAgICAg
ICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzQ29tbWl0IiwgdGhpcywg
MCk7CiAgICAgICAgIG1fcHJveHktPnNldE5lZWRzQ29tbWl0KCk7CiAgICAgfSBlbHNlCkBAIC0y
MTUsNyArMjI2LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzQ29tbWl0KCkKIAog
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzUmVkcmF3KCkKIHsKLSAgICBpZiAobV9zZXR0
aW5ncy5lbmFibGVDb21wb3NpdG9yVGhyZWFkKQorICAgIGlmIChDQ1RocmVhZFByb3h5OjppbXBs
VGhyZWFkKCkpCiAgICAgICAgIG1fcHJveHktPnNldE5lZWRzUmVkcmF3KCk7CiAgICAgZWxzZQog
ICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVDb21wb3NpdGUoKTsKQEAgLTI5NSw3ICszMDYsNyBA
QCBUZXh0dXJlTWFuYWdlciogQ0NMYXllclRyZWVIb3N0Ojpjb250ZW50c1RleHR1cmVNYW5hZ2Vy
KCkgY29uc3QKIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbXBvc2l0ZSgpCiB7Ci0gICAgQVNT
RVJUKCFtX3NldHRpbmdzLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQpOworICAgIEFTU0VSVCghQ0NU
aHJlYWRQcm94eTo6aW1wbFRocmVhZCgpKTsKICAgICBzdGF0aWNfY2FzdDxDQ1NpbmdsZVRocmVh
ZFByb3h5Kj4obV9wcm94eS5nZXQoKSktPmNvbXBvc2l0ZUltbWVkaWF0ZWx5KCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggNTZkMmI2YzQxODljNzY5ZTA0ZjRhZWM3ZGMw
OGJmMzFkMWIyMTE2Ni4uNTA5MzAxMzM4M2JmYjAzNDRiMTBjYjg0NGFlY2ExNzc4YmFhMWU5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTcyLDcgKzcyLDYgQEAgc3RydWN0IEND
U2V0dGluZ3MgewogICAgICAgICAgICAgOiBhY2NlbGVyYXRlUGFpbnRpbmcoZmFsc2UpCiAgICAg
ICAgICAgICAsIGNvbXBvc2l0ZU9mZnNjcmVlbihmYWxzZSkKICAgICAgICAgICAgICwgZGlzY2Fy
ZEFsbFRleHR1cmVzKGZhbHNlKQotICAgICAgICAgICAgLCBlbmFibGVDb21wb3NpdG9yVGhyZWFk
KGZhbHNlKQogICAgICAgICAgICAgLCBzaG93RlBTQ291bnRlcihmYWxzZSkKICAgICAgICAgICAg
ICwgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQogICAgICAgICAgICAgLCB1c2VEYW1hZ2VU
cmFja2VyKGZhbHNlKQpAQCAtODEsNyArODAsNiBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAg
Ym9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47CiAg
ICAgYm9vbCBkaXNjYXJkQWxsVGV4dHVyZXM7Ci0gICAgYm9vbCBlbmFibGVDb21wb3NpdG9yVGhy
ZWFkOwogICAgIGJvb2wgc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9vbCBzaG93UGxhdGZvcm1MYXll
clRyZWU7CiAgICAgYm9vbCB1c2VEYW1hZ2VUcmFja2VyOwpAQCAtMTE1LDYgKzExMyw5IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQ0xheWVyVHJlZUhvc3Q+IGNyZWF0ZShDQ0xh
eWVyVHJlZUhvc3RDbGllbnQqLCBjb25zdCBDQ1NldHRpbmdzJik7CiAgICAgdmlydHVhbCB+Q0NM
YXllclRyZWVIb3N0KCk7CiAKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgYW55IENDTGF5ZXJUcmVl
SG9zdCBpcyBhbGl2ZS4KKyAgICBzdGF0aWMgYm9vbCBhbnlMYXllclRyZWVIb3N0SW5zdGFuY2VF
eGlzdHMoKTsKKwogICAgIC8vIENDTGF5ZXJUcmVlSG9zdCBpbnRlcmZhY2UgdG8gQ0NQcm94eS4K
ICAgICB2b2lkIGFuaW1hdGVBbmRMYXlvdXQoZG91YmxlIGZyYW1lQmVnaW5UaW1lKTsKICAgICB2
b2lkIGJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
cm94eS5jcHAKaW5kZXggNjA2MmVjMDljMTc1ZDFhYzQ3MWZiNmU0YmQ2MTJlM2ExODcyZmUxZC4u
ZTRkNjAxNDUxMWJjMWM1ZGIwZTY4N2JkMWY2ODNmYWU4MDM2YzVhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5j
cHAKQEAgLTM3LDcgKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2Ugewog
I2lmbmRlZiBOREVCVUcKLWJvb2wgZmFrZUltcGxUaHJlYWQgPSBmYWxzZTsKK2Jvb2wgaW1wbFRo
cmVhZElzT3ZlcnJpZGRlbiA9IGZhbHNlOworVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRE92ZXJy
aWRlblRvQmVJbXBsVGhyZWFkOwogI2VuZGlmCiBDQ1RocmVhZCogc19tYWluVGhyZWFkID0gMDsK
IENDVGhyZWFkKiBzX2ltcGxUaHJlYWQgPSAwOwpAQCAtNTMsNiArNTQsMTEgQEAgQ0NUaHJlYWQq
IENDUHJveHk6Om1haW5UaHJlYWQoKQogICAgIHJldHVybiBzX21haW5UaHJlYWQ7CiB9CiAKK2Jv
b2wgQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpCit7CisgICAgcmV0dXJuIHNfaW1wbFRocmVhZDsK
K30KKwogdm9pZCBDQ1Byb3h5OjpzZXRJbXBsVGhyZWFkKENDVGhyZWFkKiB0aHJlYWQpCiB7CiAg
ICAgc19pbXBsVGhyZWFkID0gdGhyZWFkOwpAQCAtNjcsMTggKzczLDI0IEBAIENDVGhyZWFkKiBD
Q1Byb3h5OjppbXBsVGhyZWFkKCkKIGJvb2wgQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkKIHsKICAg
ICBBU1NFUlQoc19tYWluVGhyZWFkKTsKLSAgICByZXR1cm4gIWZha2VJbXBsVGhyZWFkICYmIGN1
cnJlbnRUaHJlYWQoKSA9PSBzX21haW5UaHJlYWQtPnRocmVhZElEKCk7CisgICAgaWYgKGltcGxU
aHJlYWRJc092ZXJyaWRkZW4gJiYgY3VycmVudFRocmVhZCgpID09IHRocmVhZElET3ZlcnJpZGVu
VG9CZUltcGxUaHJlYWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gY3VycmVu
dFRocmVhZCgpID09IHNfbWFpblRocmVhZC0+dGhyZWFkSUQoKTsKIH0KIAogYm9vbCBDQ1Byb3h5
Ojppc0ltcGxUaHJlYWQoKQogewogICAgIFdURjo6VGhyZWFkSWRlbnRpZmllciBpbXBsVGhyZWFk
SUQgPSBzX2ltcGxUaHJlYWQgPyBzX2ltcGxUaHJlYWQtPnRocmVhZElEKCkgOiAwOwotICAgIHJl
dHVybiBmYWtlSW1wbFRocmVhZCB8fCBjdXJyZW50VGhyZWFkKCkgPT0gaW1wbFRocmVhZElEOwor
ICAgIGlmIChpbXBsVGhyZWFkSXNPdmVycmlkZGVuICYmIGN1cnJlbnRUaHJlYWQoKSA9PSB0aHJl
YWRJRE92ZXJyaWRlblRvQmVJbXBsVGhyZWFkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBy
ZXR1cm4gY3VycmVudFRocmVhZCgpID09IGltcGxUaHJlYWRJRDsKIH0KIAotdm9pZCBDQ1Byb3h5
OjpzZXRJbXBsVGhyZWFkKGJvb2wgaXNJbXBsVGhyZWFkKQordm9pZCBDQ1Byb3h5OjpzZXRDdXJy
ZW50VGhyZWFkSXNJbXBsVGhyZWFkKGJvb2wgaXNJbXBsVGhyZWFkKQogewotICAgIGZha2VJbXBs
VGhyZWFkID0gaXNJbXBsVGhyZWFkOworICAgIGltcGxUaHJlYWRJc092ZXJyaWRkZW4gPSBpc0lt
cGxUaHJlYWQ7CisgICAgaWYgKGlzSW1wbFRocmVhZCkKKyAgICAgICAgdGhyZWFkSURPdmVycmlk
ZW5Ub0JlSW1wbFRocmVhZCA9IGN1cnJlbnRUaHJlYWQoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5
LmgKaW5kZXggYTYyMzBlYWNkNTY4OWQ1YmVhNDJmMGQwY2RiOWM2Mzg1MzM3ODhhYS4uYmIzNzgw
MTQ3YjE2YzI2Yjc1YTdjY2QyMmFhOGI4ZmU4NGU3NmJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtNTMs
NiArNTMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0TWFpblRocmVhZChDQ1RocmVh
ZCopOwogICAgIHN0YXRpYyBDQ1RocmVhZCogbWFpblRocmVhZCgpOwogCisgICAgc3RhdGljIGJv
b2wgaGFzSW1wbFRocmVhZCgpOwogICAgIHN0YXRpYyB2b2lkIHNldEltcGxUaHJlYWQoQ0NUaHJl
YWQqKTsKICAgICBzdGF0aWMgQ0NUaHJlYWQqIGltcGxUaHJlYWQoKTsKIApAQCAtOTEsNyArOTIs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvc2VDb21wb3NpdG9yQ29udGV4dChpbnQg
bnVtVGltZXMpID0gMDsKIAogI2lmbmRlZiBOREVCVUcKLSAgICBzdGF0aWMgdm9pZCBzZXRJbXBs
VGhyZWFkKGJvb2wpOworICAgIHN0YXRpYyB2b2lkIHNldEN1cnJlbnRUaHJlYWRJc0ltcGxUaHJl
YWQoYm9vbCk7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oCmluZGV4IGVkYWI2MWYyYzAzMjc5NmVjODQyMzViNDFiNGVmNzczYTgyMjlmMTMu
LjBkNWE0YTJkOGE1MTZiMWQ3YmNmOTkxYTk5ZTFjNzg3ODk5NDNlYzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTkxLDEzICs5MSwxMyBAQCBwdWJsaWM6CiAgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkKCkKICAgICB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAot
ICAgICAgICBDQ1Byb3h5OjpzZXRJbXBsVGhyZWFkKHRydWUpOworICAgICAgICBDQ1Byb3h5Ojpz
ZXRDdXJyZW50VGhyZWFkSXNJbXBsVGhyZWFkKHRydWUpOwogI2VuZGlmCiAgICAgfQogICAgIH5E
ZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQoKQogICAgIHsKICNpZiAhQVNTRVJUX0RJU0FCTEVECi0g
ICAgICAgIENDUHJveHk6OnNldEltcGxUaHJlYWQoZmFsc2UpOworICAgICAgICBDQ1Byb3h5Ojpz
ZXRDdXJyZW50VGhyZWFkSXNJbXBsVGhyZWFkKGZhbHNlKTsKICNlbmRpZgogICAgIH0KIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggNGUyYTc2MGFlNTE2YTUxZjUyMDQ2YWNlMjZh
ODI4M2NjN2NhM2ZmYi4uNzhhN2UwZDk5MmQ4NjIxZGQyMTUyZWQxZDI2YmQxYzFiYjlmN2ZkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTM2LDYgKzEzNiw4IEBACiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJDb21wb3NpdGlvblVuZGVybGluZS5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkNvbXBvc2l0b3JDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJDb21wb3NpdG9yLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckNsaWVudC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJDb25z
b2xlTWVzc2FnZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkNvbnRlbnRMYXllci5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkNvbnRlbnRMYXllckNsaWVudC5oJywKQEAg
LTQ3Myw2ICs0NzUsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViQ29tbW9uLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJDb21wb3NpdG9ySW1wbC5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViQ29tcG9zaXRvckltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJD
b250ZW50TGF5ZXIuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkNvbnRlbnRMYXllcklt
cGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkNvbnRlbnRMYXllckltcGwuaCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCBjOTA2Njg5N2Y3ZmQwN2I5NjZkMmVmYTlj
YTkyY2UwOTdhNmI2YjRlLi5kNzQzM2FiMDhmYmZkMjY0ZWEzODM4ZmQ4ZjM0YjdkNjYzZjQ4NmQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTg5LDcgKzg5LDcgQEAKICAgICAg
ICAgICAgICd0ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rl
c3RzL1RyZWVUZXN0SGVscGVycy5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RyZWVUZXN0SGVs
cGVycy5oJywKLSAgICAgICAgICAgICd0ZXN0cy9XZWJDb21wb3NpdG9ySW1wbFRlc3QuY3BwJywK
KyAgICAgICAgICAgICd0ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3Bw
JywKICAgICAgICAgICAgICd0ZXN0cy9XZWJGcmFtZVRlc3QuY3BwJywKICAgICAgICAgICAgICd0
ZXN0cy9XZWJMYXllclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlTmV3U2Vy
aWFsaXplclRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3IuaAppbmRleCAzMjZiMmFjZjFmNzg2MGI3MDYzZTU4YTBiYWIwNTY3NWM1M2IxMjkz
Li4zMmI2MGUyODQ1ZTg3ODZmZjRiYjQ2ZTZiOWQyYmYyOTNmZWQ1OGFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvci5oCkBAIC0yNiwyNCArMjYsMzQg
QEAKICNpZm5kZWYgV2ViQ29tcG9zaXRvcl9oCiAjZGVmaW5lIFdlYkNvbXBvc2l0b3JfaAogCisj
aW5jbHVkZSAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlci5oIgogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkNvbW1vbi5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViQ29tcG9zaXRv
ckNsaWVudDsKIGNsYXNzIFdlYklucHV0RXZlbnQ7CiBjbGFzcyBXZWJUaHJlYWQ7CiAKLS8vIFRo
aXMgcmVwcmVzZW50cyB0aGUgY29tcG9zaXRvciBhc3NvY2lhdGVkIHdpdGggYSBXZWJXaWRnZXQu
IEFsbCBjYWxscyB0byB0aGUgV2ViQ29tcG9zaXRvciBtdXN0Ci0vLyBiZSBtYWRlIGZyb20gdGhl
IGNvbXBvc2l0b3IgdGhyZWFkLgotY2xhc3MgV2ViQ29tcG9zaXRvciB7CisjZGVmaW5lIFdFQkNP
TVBPU0lUT1JfSEFTX0lOSVRJQUxJWkUKKworLy8gVGhpcyBjbGFzcyBjb250YWlucyBnbG9iYWwg
cm91dGluZXMgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlCisvLyBjb21wb3NpdG9yLgorLy8KKy8v
IEFsbCBjYWxscyB0byB0aGUgV2ViQ29tcG9zaXRvciBtdXN0IGJlIG1hZGUgZnJvbSB0aGUgbWFp
biB0aHJlYWQuCisvLworLy8gVGhpcyBjbGFzcyBjdXJyZW50bHkgdGVtcG9yYXJpbHkgaW5oZXJp
dHMgZnJvbSBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyCisvLyB3aGlsZSB3ZSBtaWdyYXRlIGRv
d25zdHJlYW0gY29kZSB0byB1c2UgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlciBkaXJlY3RseS4K
K2NsYXNzIFdlYkNvbXBvc2l0b3IgOiBwdWJsaWMgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlciB7
CiBwdWJsaWM6Ci0gICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCBvbmNlIHdpdGggYSBub24tbnVs
bCBXZWJUaHJlYWQgYmVmb3JlIGFueSBjb21wb3NpdG9ycyBhdHRlbXB0IHRvIGluaXRpYWxpemUu
Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRUaHJlYWQoV2ViVGhyZWFkKik7Ci0g
ICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViQ29tcG9zaXRvciogZnJvbUlkZW50aWZpZXIoaW50
KTsKKyAgICAvLyBJbml0aWFsaXplcyB0aGUgY29tcG9zaXRvci4gVGhyZWFkZWQgY29tcG9zaXRp
bmcgaXMgZW5hYmxlZCBieSBwYXNzaW5nIGluCisgICAgLy8gYSBub24tbnVsbCBXZWJUaHJlYWQu
IE5vIGNvbXBvc2l0b3IgY2xhc3NlcyBvciBtZXRob2RzIHNob3VsZCBiZSB1c2VkCisgICAgLy8g
cHJpb3IgdG8gY2FsbGluZyBpbml0aWFsaXplLgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZShXZWJUaHJlYWQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQo
V2ViQ29tcG9zaXRvckNsaWVudCopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlSW5wdXRF
dmVudChjb25zdCBXZWJJbnB1dEV2ZW50JikgPSAwOworICAgIC8vIFNodXRzIGRvd24gdGhlIGNv
bXBvc2l0b3IuIFRoaXMgbXVzdCBiZSBjYWxsZWQgd2hlbiBhbGwgY29tcG9zaXRvciBkYXRhCisg
ICAgLy8gdHlwZXMgaGF2ZSBiZWVuIGRlbGV0ZWQuIE5vIGNvbXBvc2l0b3IgY2xhc3NlcyBvciBt
ZXRob2RzIHNob3VsZCBiZSB1c2VkCisgICAgLy8gYWZ0ZXIgc2h1dGRvd24uCisgICAgV0VCS0lU
X0VYUE9SVCBzdGF0aWMgdm9pZCBzaHV0ZG93bigpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB+V2ViQ29tcG9zaXRvcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViQ29tcG9zaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViQ29tcG9zaXRvckNsaWVudC5oCmluZGV4IDJkMGI0MjhiNzYxZDFlZjA5ZDlkNDBm
ZDRiNzIwOWQyYjgzOTk4NzMuLmMyNzVmNzA1NTc2OGU4YjBlODhjMWYzMTUxOWU0ZGZkYTViNTQ2
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3Np
dG9yQ2xpZW50LmgKQEAgLTI2LDIyICsyNiwxNCBAQAogI2lmbmRlZiBXZWJDb21wb3NpdG9yQ2xp
ZW50X2gKICNkZWZpbmUgV2ViQ29tcG9zaXRvckNsaWVudF9oCiAKKyNpbmNsdWRlICJXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50LmgiCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFz
cyBXZWJDb21wb3NpdG9yQ2xpZW50IHsKKy8vIFRoaXMgY2xhc3Mgd2lsbCBnbyBhd2F5IG9uY2Ug
ZG93bnN0cmVhbSBjb2RlIGhhcyB0cmFuc2l0aW9uZWQKKy8vIHRvIFdlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJDbGllbnQuCitjbGFzcyBXZWJDb21wb3NpdG9yQ2xpZW50IDogcHVibGljIFdlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQgewogcHVibGljOgotICAgIC8vIENhbGxiYWNrcyBp
bnZva2VkIGZyb20gdGhlIGNvbXBvc2l0b3IgdGhyZWFkLgotICAgIHZpcnR1YWwgdm9pZCB3aWxs
U2h1dGRvd24oKSA9IDA7Ci0KLSAgICAvLyBFeGFjdGx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIHR3
byBjYWxsYmFja3Mgd2lsbCBiZSBpbnZva2VkIGFmdGVyIGV2ZXJ5IGNhbGwgdG8gV2ViQ29tcG9z
aXRvcjo6aGFuZGxlSW5wdXRFdmVudCgpOgotCi0gICAgLy8gQ2FsbGVkIHdoZW4gdGhlIFdlYkNv
bXBvc2l0b3IgaGFuZGxlZCB0aGUgaW5wdXQgZXZlbnQgYW5kIG5vIGZ1cnRoZXIgcHJvY2Vzc2lu
ZyBpcyByZXF1aXJlZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkSGFuZGxlSW5wdXRFdmVudCgpID0g
MDsKLQotICAgIC8vIENhbGxlZCB3aGVuIHRoZSBXZWJDb21wb3NpdG9yIGRpZCBub3QgaGFuZGxl
IHRoZSBpbnB1dCBldmVudC4gSWYgc2VuZFRvV2lkZ2V0IGlzIHRydWUsIHRoZSBpbnB1dCBldmVu
dAotICAgIC8vIHNob3VsZCBiZSBmb3J3YXJkZWQgdG8gdGhlIFdlYldpZGdldCBhc3NvY2lhdGVk
IHdpdGggdGhpcyBjb21wb3NpdG9yIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmcuCi0gICAgdmlydHVh
bCB2b2lkIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQoYm9vbCBzZW5kVG9XaWRnZXQpID0gMDsKLQog
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfldlYkNvbXBvc2l0b3JDbGllbnQoKSB7IH0KIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDhlZTY4NmQ3NTQxMjhiMDdjODY2ZDJlM2Q4OGFj
NDBiZDYyNDVhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXIuaApAQCAtMCwwICsxLDU1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyX2gKKyNkZWZpbmUgV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYkNvbXBvc2l0b3I7CitjbGFzcyBXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVyQ2xpZW50OworY2xhc3MgV2ViSW5wdXRFdmVudDsKK2NsYXNzIFdlYlRocmVhZDsKKwor
Ly8gVGhpcyByZXByZXNlbnRzIHRoZSBjb21wb3NpdG9yIGFzc29jaWF0ZWQgd2l0aCBhIFdlYldp
ZGdldC4gQWxsIGNhbGxzIHRvIHRoZSBXZWJDb21wb3NpdG9yIG11c3QKKy8vIGJlIG1hZGUgZnJv
bSB0aGUgY29tcG9zaXRvciB0aHJlYWQuCitjbGFzcyBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
IHsKK3B1YmxpYzoKKyAgICAvLyBUaGUgcmV0dXJuIHZhbHVlIGlzIHRlbXBvcmFyaWx5IFdlYkNv
bXBvc2l0b3IgdW50aWwgYWxsIGRvd25zdHJlYW0gY29kZQorICAgIC8vIGlzIHN3aXRjaGVkIHRv
IHVzZSBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyLgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGlj
IFdlYkNvbXBvc2l0b3IqIGZyb21JZGVudGlmaWVyKGludCk7CisKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Q2xpZW50KFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQqKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYpID0gMDsKKwor
cHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXIoKSB7IH0K
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGJiNTU1OTgzNGRkMTgzYTI1ODQ5ODUxN2UyMmU2MDVh
NDZmZTAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnRfaAorI2RlZmluZSBXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQgeworcHVibGljOgorICAgIC8vIENh
bGxiYWNrcyBpbnZva2VkIGZyb20gdGhlIGNvbXBvc2l0b3IgdGhyZWFkLgorICAgIHZpcnR1YWwg
dm9pZCB3aWxsU2h1dGRvd24oKSA9IDA7CisKKyAgICAvLyBFeGFjdGx5IG9uZSBvZiB0aGUgZm9s
bG93aW5nIHR3byBjYWxsYmFja3Mgd2lsbCBiZSBpbnZva2VkIGFmdGVyIGV2ZXJ5IGNhbGwgdG8g
V2ViQ29tcG9zaXRvcjo6aGFuZGxlSW5wdXRFdmVudCgpOgorCisgICAgLy8gQ2FsbGVkIHdoZW4g
dGhlIFdlYkNvbXBvc2l0b3IgaGFuZGxlZCB0aGUgaW5wdXQgZXZlbnQgYW5kIG5vIGZ1cnRoZXIg
cHJvY2Vzc2luZyBpcyByZXF1aXJlZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkSGFuZGxlSW5wdXRF
dmVudCgpID0gMDsKKworICAgIC8vIENhbGxlZCB3aGVuIHRoZSBXZWJDb21wb3NpdG9yIGRpZCBu
b3QgaGFuZGxlIHRoZSBpbnB1dCBldmVudC4gSWYgc2VuZFRvV2lkZ2V0IGlzIHRydWUsIHRoZSBp
bnB1dCBldmVudAorICAgIC8vIHNob3VsZCBiZSBmb3J3YXJkZWQgdG8gdGhlIFdlYldpZGdldCBh
c3NvY2lhdGVkIHdpdGggdGhpcyBjb21wb3NpdG9yIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmcuCisg
ICAgdmlydHVhbCB2b2lkIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQoYm9vbCBzZW5kVG9XaWRnZXQp
ID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfldlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJDbGllbnQoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRl
eCBlNmQwMDIyNDIwMDA2YWRkZjVjMmRmNGVjZmE5ODA0ODFhNWUxYzM1Li44MDI4YWQ1MGFmNTYx
ZWQ3Mzg5NmEzOTE3NjUxNmVmZTNkZmU4M2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCkBAIC00NiwxMyArNDYsMTEgQEAgcHVibGlj
OgogICAgICAgICBTZXR0aW5ncygpCiAgICAgICAgICAgICA6IGFjY2VsZXJhdGVQYWludGluZyhm
YWxzZSkKICAgICAgICAgICAgICwgY29tcG9zaXRlT2Zmc2NyZWVuKGZhbHNlKQotICAgICAgICAg
ICAgLCBlbmFibGVDb21wb3NpdG9yVGhyZWFkKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93RlBT
Q291bnRlcihmYWxzZSkKICAgICAgICAgICAgICwgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNl
KSB7IH0KIAogICAgICAgICBib29sIGFjY2VsZXJhdGVQYWludGluZzsKICAgICAgICAgYm9vbCBj
b21wb3NpdGVPZmZzY3JlZW47Ci0gICAgICAgIGJvb2wgZW5hYmxlQ29tcG9zaXRvclRocmVhZDsK
ICAgICAgICAgYm9vbCBzaG93RlBTQ291bnRlcjsKICAgICAgICAgYm9vbCBzaG93UGxhdGZvcm1M
YXllclRyZWU7CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCkBAIC03NCw4ICs3Miw4IEBAIHB1
YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYkxheWVyVHJlZVZp
ZXcmKTsKICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgZXF1YWxzKGNvbnN0IFdlYkxheWVyVHJlZVZp
ZXcmKSBjb25zdDsKIAotICAgIC8vIFRyaWdnZXJzIGEgY29tcG9zaXRpbmcgcGFzcy4gSWYgdGhl
IGNvbXBvc2l0b3IgdGhyZWFkIGlzIGRpc2FibGVkCi0gICAgLy8gKGVuYWJsZUNvbXBvc2l0b3JU
aHJlYWQgPT0gZmFsc2UpLCB0aGUgY29tcG9zaXRpbmcgcGFzcyBoYXBwZW5zCisgICAgLy8gVHJp
Z2dlcnMgYSBjb21wb3NpdGluZyBwYXNzLiBJZiB0aGUgY29tcG9zaXRvciB0aHJlYWQgd2FzIG5v
dAorICAgIC8vIGVuYWJsZWQgdmlhIFdlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUsIHRoZSBjb21w
b3NpdGluZyBwYXNzIGhhcHBlbnMKICAgICAvLyBpbW1lZGlhdGVseS4gSWYgaXQgaXMgZW5hYmxl
ZCwgdGhlIGNvbXBvc2l0aW5nIHBhc3Mgd2lsbCBoYXBwZW4gYXQgYQogICAgIC8vIGxhdGVyIHRp
bWUuIEJlZm9yZSB0aGUgY29tcG9zaXRpbmcgcGFzcyBoYXBwZW5zIChpLmUuIGJlZm9yZSBjb21w
b3NpdGUoKQogICAgIC8vIHJldHVybnMgd2hlbiB0aGUgY29tcG9zaXRvciB0aHJlYWQgaXMgZGlz
YWJsZWQpLCBXZWJDb250ZW50TGF5ZXJzIHdpbGwgYmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4IDQ2NDM2M2IwNmNlY2IyMzVlZjBlMzlmYTA1OTEw
YmY5Mzk1NzYxMzUuLmRkNzc0OTkwYjYzYTE0OThiYTQzOGFiNmY1OTAxN2Q4OWFlY2Y0YjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaApAQCAtMTE3LDgg
KzExNyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGVnYWN5QWNjZWxlcmF0ZWQy
ZENhbnZhc0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNaW5pbXVtQWNj
ZWxlcmF0ZWQyZENhbnZhc1NpemUoaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2Vs
ZXJhdGVkRHJhd2luZ0VuYWJsZWQoYm9vbCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VU
aHJlYWRlZENvbXBvc2l0b3IoYm9vbCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCB1c2VUaHJlYWRl
ZENvbXBvc2l0b3IoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE1lbW9yeUluZm9F
bmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SHlwZXJsaW5rQXVkaXRpbmdF
bmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQoYm9vbCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViQ29tcG9zaXRvckltcGwuY3BwCmluZGV4IGUwMzFlMGU5ZGYyOWJmZDc0MTVmOTY5ZmY3
Zjc4OWIwNWNjMTIyZGUuLmYyZmJjZDQ2M2VlMTY2YzY0ODZhYTU5NDY5MzA1NzYxMWY0ZDYxMzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5j
cHAKQEAgLTI4LDExMiArMjgsNjQgQEAKICNpbmNsdWRlICJXZWJDb21wb3NpdG9ySW1wbC5oIgog
CiAjaW5jbHVkZSAiQ0NUaHJlYWRJbXBsLmgiCisjaW5jbHVkZSAiV2ViS2l0LmgiCisjaW5jbHVk
ZSAiV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRvckNsaWVu
dC5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKLSNpbmNsdWRlICJjYy9DQ0lucHV0SGFu
ZGxlci5oIgotI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ0xh
eWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZ1ByaW1pdGl2ZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotUGFzc093blB0cjxDQ0lucHV0SGFuZGxlcj4gQ0NJbnB1dEhhbmRs
ZXI6OmNyZWF0ZShDQ0lucHV0SGFuZGxlckNsaWVudCogaW5wdXRIYW5kbGVyQ2xpZW50KQotewot
ICAgIHJldHVybiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbXBsOjpjcmVhdGUoaW5wdXRIYW5kbGVy
Q2xpZW50KTsKLX0KLQotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJDb21wb3Np
dG9yOjpzZXRUaHJlYWQoV2ViVGhyZWFkKiBjb21wb3NpdG9yVGhyZWFkKQotewotICAgIEFTU0VS
VChjb21wb3NpdG9yVGhyZWFkKTsKLSAgICBDQ1RocmVhZFByb3h5OjpzZXRJbXBsVGhyZWFkKEND
VGhyZWFkSW1wbDo6Y3JlYXRlKGNvbXBvc2l0b3JUaHJlYWQpLmxlYWtQdHIoKSk7Ci19Ci0KLQot
Ly8gVGhlc2Ugc3RhdGljcyBtYXkgb25seSBiZSBhY2Nlc3NlZCBmcm9tIHRoZSBjb21wb3NpdG9y
IHRocmVhZC4KLWludCBXZWJDb21wb3NpdG9ySW1wbDo6c19uZXh0QXZhaWxhYmxlSWRlbnRpZmll
ciA9IDE7Ci1IYXNoU2V0PFdlYkNvbXBvc2l0b3JJbXBsKj4qIFdlYkNvbXBvc2l0b3JJbXBsOjpz
X2NvbXBvc2l0b3JzID0gMDsKLQotV2ViQ29tcG9zaXRvciogV2ViQ29tcG9zaXRvcjo6ZnJvbUlk
ZW50aWZpZXIoaW50IGlkZW50aWZpZXIpCi17Ci0gICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRo
cmVhZCgpKTsKLSAgICByZXR1cm4gV2ViQ29tcG9zaXRvckltcGw6OmZyb21JZGVudGlmaWVyKGlk
ZW50aWZpZXIpOwotfQorYm9vbCBXZWJDb21wb3NpdG9ySW1wbDo6c19pbml0aWFsaXplZCA9IGZh
bHNlOworQ0NUaHJlYWQqIFdlYkNvbXBvc2l0b3JJbXBsOjpzX21haW5UaHJlYWQgPSAwOworQ0NU
aHJlYWQqIFdlYkNvbXBvc2l0b3JJbXBsOjpzX2ltcGxUaHJlYWQgPSAwOwogCi1XZWJDb21wb3Np
dG9yKiBXZWJDb21wb3NpdG9ySW1wbDo6ZnJvbUlkZW50aWZpZXIoaW50IGlkZW50aWZpZXIpCit2
b2lkIFdlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoV2ViVGhyZWFkKiBpbXBsVGhyZWFkKQogewot
ICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0KLSAgICBpZiAoIXNfY29tcG9z
aXRvcnMpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgZm9yIChIYXNoU2V0PFdlYkNvbXBvc2l0
b3JJbXBsKj46Oml0ZXJhdG9yIGl0ID0gc19jb21wb3NpdG9ycy0+YmVnaW4oKTsgaXQgIT0gc19j
b21wb3NpdG9ycy0+ZW5kKCk7ICsraXQpIHsKLSAgICAgICAgaWYgKCgqaXQpLT5pZGVudGlmaWVy
KCkgPT0gaWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybiAqaXQ7Ci0gICAgfQotICAgIHJl
dHVybiAwOworICAgIFdlYkNvbXBvc2l0b3JJbXBsOjppbml0aWFsaXplKGltcGxUaHJlYWQpOwog
fQotCi1XZWJDb21wb3NpdG9ySW1wbDo6V2ViQ29tcG9zaXRvckltcGwoQ0NJbnB1dEhhbmRsZXJD
bGllbnQqIGlucHV0SGFuZGxlckNsaWVudCkKLSAgICA6IG1fY2xpZW50KDApCi0gICAgLCBtX2lk
ZW50aWZpZXIoc19uZXh0QXZhaWxhYmxlSWRlbnRpZmllcisrKQotICAgICwgbV9pbnB1dEhhbmRs
ZXJDbGllbnQoaW5wdXRIYW5kbGVyQ2xpZW50KQordm9pZCBXZWJDb21wb3NpdG9yOjpzaHV0ZG93
bigpCiB7Ci0gICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKLQotICAgIGlmICgh
c19jb21wb3NpdG9ycykKLSAgICAgICAgc19jb21wb3NpdG9ycyA9IG5ldyBIYXNoU2V0PFdlYkNv
bXBvc2l0b3JJbXBsKj47Ci0gICAgc19jb21wb3NpdG9ycy0+YWRkKHRoaXMpOworICAgIFdlYkNv
bXBvc2l0b3JJbXBsOjpzaHV0ZG93bigpOwogfQogCi1XZWJDb21wb3NpdG9ySW1wbDo6fldlYkNv
bXBvc2l0b3JJbXBsKCkKK3ZvaWQgV2ViQ29tcG9zaXRvckltcGw6OmluaXRpYWxpemUoV2ViVGhy
ZWFkKiBpbXBsVGhyZWFkKQogewotICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7
Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+d2lsbFNodXRkb3duKCk7Ci0K
LSAgICBBU1NFUlQoc19jb21wb3NpdG9ycyk7Ci0gICAgc19jb21wb3NpdG9ycy0+cmVtb3ZlKHRo
aXMpOwotICAgIGlmICghc19jb21wb3NpdG9ycy0+c2l6ZSgpKSB7Ci0gICAgICAgIGRlbGV0ZSBz
X2NvbXBvc2l0b3JzOwotICAgICAgICBzX2NvbXBvc2l0b3JzID0gMDsKLSAgICB9CisgICAgQVNT
RVJUKCFzX2luaXRpYWxpemVkKTsKKyAgICBzX2luaXRpYWxpemVkID0gdHJ1ZTsKKworICAgIHNf
bWFpblRocmVhZCA9IENDVGhyZWFkSW1wbDo6Y3JlYXRlKHdlYktpdFBsYXRmb3JtU3VwcG9ydCgp
LT5jdXJyZW50VGhyZWFkKCkpLmxlYWtQdHIoKTsKKyAgICBDQ1Byb3h5OjpzZXRNYWluVGhyZWFk
KHNfbWFpblRocmVhZCk7CisgICAgaWYgKGltcGxUaHJlYWQpIHsKKyAgICAgICAgc19pbXBsVGhy
ZWFkID0gQ0NUaHJlYWRJbXBsOjpjcmVhdGUoaW1wbFRocmVhZCkubGVha1B0cigpOworICAgICAg
ICBDQ1Byb3h5OjpzZXRJbXBsVGhyZWFkKHNfaW1wbFRocmVhZCk7CisgICAgfSBlbHNlCisgICAg
ICAgIENDUHJveHk6OnNldEltcGxUaHJlYWQoMCk7CiB9CiAKLXZvaWQgV2ViQ29tcG9zaXRvcklt
cGw6OnNldENsaWVudChXZWJDb21wb3NpdG9yQ2xpZW50KiBjbGllbnQpCitib29sIFdlYkNvbXBv
c2l0b3JJbXBsOjppbml0aWFsaXplZCgpCiB7Ci0gICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRo
cmVhZCgpKTsKLSAgICAvLyBJdCdzIHZhbGlkIHRvIHNldCBhIG5ldyBjbGllbnQgaWYgd2UndmUg
bmV2ZXIgaGFkIG9uZSBvciB0byBjbGVhciB0aGUgY2xpZW50LCBidXQgaXQncyBub3QgdmFsaWQg
dG8gY2hhbmdlIGZyb20gaGF2aW5nIG9uZSBjbGllbnQgdG8gYSBkaWZmZXJlbnQgb25lLgotICAg
IEFTU0VSVCghbV9jbGllbnQgfHwgIWNsaWVudCk7Ci0gICAgbV9jbGllbnQgPSBjbGllbnQ7Cisg
ICAgcmV0dXJuIHNfaW5pdGlhbGl6ZWQ7CiB9CiAKLXZvaWQgV2ViQ29tcG9zaXRvckltcGw6Omhh
bmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQpCit2b2lkIFdlYkNvbXBv
c2l0b3JJbXBsOjpzaHV0ZG93bigpCiB7Ci0gICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVh
ZCgpKTsKLSAgICBBU1NFUlQobV9jbGllbnQpOworICAgIEFTU0VSVChzX2luaXRpYWxpemVkKTsK
KyAgICBBU1NFUlQoIUNDTGF5ZXJUcmVlSG9zdDo6YW55TGF5ZXJUcmVlSG9zdEluc3RhbmNlRXhp
c3RzKCkpOwogCi0gICAgaWYgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVl
bCAmJiAhbV9pbnB1dEhhbmRsZXJDbGllbnQtPmhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoKSkgewot
ICAgICAgICBjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQgPSAqc3RhdGljX2Nh
c3Q8Y29uc3QgV2ViTW91c2VXaGVlbEV2ZW50Kj4oJmV2ZW50KTsKLSAgICAgICAgbV9pbnB1dEhh
bmRsZXJDbGllbnQtPnNjcm9sbFJvb3RMYXllcihJbnRTaXplKC13aGVlbEV2ZW50LmRlbHRhWCwg
LXdoZWVsRXZlbnQuZGVsdGFZKSk7Ci0gICAgICAgIG1fY2xpZW50LT5kaWRIYW5kbGVJbnB1dEV2
ZW50KCk7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAoc19pbXBsVGhyZWFkKSB7CisgICAgICAg
IGRlbGV0ZSBzX2ltcGxUaHJlYWQ7CisgICAgICAgIHNfaW1wbFRocmVhZCA9IDA7CiAgICAgfQot
ICAgIG1fY2xpZW50LT5kaWROb3RIYW5kbGVJbnB1dEV2ZW50KHRydWUgLyogc2VuZFRvV2lkZ2V0
ICovKTsKLX0KLQotaW50IFdlYkNvbXBvc2l0b3JJbXBsOjppZGVudGlmaWVyKCkgY29uc3QKLXsK
LSAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIHJldHVybiBtX2lkZW50
aWZpZXI7Ci19Ci0KLXZvaWQgV2ViQ29tcG9zaXRvckltcGw6OndpbGxEcmF3KGRvdWJsZSBmcmFt
ZUJlZ2luVGltZU1zKQoteworICAgIGRlbGV0ZSBzX21haW5UaHJlYWQ7CisgICAgc19tYWluVGhy
ZWFkID0gMDsKKyAgICBDQ1Byb3h5OjpzZXRJbXBsVGhyZWFkKDApOworICAgIENDUHJveHk6OnNl
dE1haW5UaHJlYWQoMCk7CisgICAgc19pbml0aWFsaXplZCA9IGZhbHNlOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuaAppbmRleCBiZGUw
OTY4OWM5NDVlOTdiODQ2Y2JlNTY4OTdlMDk3MTgzNWRiYzFlLi4zNGM2YmQwZmRjNjc2NGRiM2Fk
ZWQyZTJlODM5NTM2ODM0ZmFhMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJDb21wb3NpdG9ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkNvbXBvc2l0b3JJbXBsLmgKQEAgLTI4LDQ4ICsyOCwzMiBAQAogCiAjaW5jbHVkZSAiV2Vi
Q29tcG9zaXRvci5oIgogCi0jaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCi1uYW1lc3BhY2Ug
V1RGIHsKLWNsYXNzIE11dGV4OworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0NUaHJlYWQ7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJDb21wb3NpdG9yQ2xpZW50Owor
Y2xhc3MgV2ViVGhyZWFkOwogCi1jbGFzcyBXZWJDb21wb3NpdG9ySW1wbCA6IHB1YmxpYyBXZWJD
b21wb3NpdG9yLCBwdWJsaWMgV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXIgeworY2xhc3MgV2ViQ29t
cG9zaXRvckltcGwgOiBwdWJsaWMgV2ViQ29tcG9zaXRvciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoV2ViQ29tcG9zaXRvckltcGwpOwogcHVibGljOgotICAgIHN0YXRpYyBXZWJDb21wb3Np
dG9yKiBmcm9tSWRlbnRpZmllcihpbnQgaWRlbnRpZmllcik7Ci0KLSAgICBzdGF0aWMgUGFzc093
blB0cjxXZWJDb21wb3NpdG9ySW1wbD4gY3JlYXRlKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xp
ZW50KiBjbGllbnQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBv
c2l0b3JJbXBsKGNsaWVudCkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgfldlYkNvbXBvc2l0b3JJ
bXBsKCk7Ci0KLSAgICAvLyBXZWJDb21wb3NpdG9yIGltcGxlbWVudGF0aW9uCi0gICAgdmlydHVh
bCB2b2lkIHNldENsaWVudChXZWJDb21wb3NpdG9yQ2xpZW50Kik7Ci0gICAgdmlydHVhbCB2b2lk
IGhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYpOwotCi0gICAgLy8gV2ViQ29y
ZTo6Q0NJbnB1dEhhbmRsZXIgaW1wbGVtZW50YXRpb24KLSAgICB2aXJ0dWFsIGludCBpZGVudGlm
aWVyKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KGRvdWJsZSBmcmFtZUJlZ2lu
VGltZSk7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQoKTsKIAogcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBXZWJDb21wb3NpdG9ySW1wbChXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudCop
OwogCi0gICAgV2ViQ29tcG9zaXRvckNsaWVudCogbV9jbGllbnQ7Ci0gICAgaW50IG1faWRlbnRp
ZmllcjsKLSAgICBXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudCogbV9pbnB1dEhhbmRsZXJD
bGllbnQ7CisgICAgZnJpZW5kIGNsYXNzIFdlYkNvbXBvc2l0b3I7CisgICAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZShXZWJUaHJlYWQqIGltcGxUaHJlYWQpOworICAgIHN0YXRpYyB2b2lkIHNodXRk
b3duKCk7CiAKLSAgICBzdGF0aWMgaW50IHNfbmV4dEF2YWlsYWJsZUlkZW50aWZpZXI7Ci0gICAg
c3RhdGljIEhhc2hTZXQ8V2ViQ29tcG9zaXRvckltcGwqPiogc19jb21wb3NpdG9yczsKKyAgICBz
dGF0aWMgYm9vbCBzX2luaXRpYWxpemVkOworICAgIHN0YXRpYyBXZWJDb3JlOjpDQ1RocmVhZCog
c19tYWluVGhyZWFkOworICAgIHN0YXRpYyBXZWJDb3JlOjpDQ1RocmVhZCogc19pbXBsVGhyZWFk
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmODNmM2IwMGU4
MzczYTQ3YjhhNWJmZjRjZjRiY2M3NGZjNDljOTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKQEAg
LTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oIgorCisjaW5jbHVkZSAiV2ViQ29tcG9zaXRv
ckltcGwuaCIKKyNpbmNsdWRlICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50LmgiCisj
aW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgorI2luY2x1ZGUgIldlYktpdC5oIgorI2luY2x1ZGUg
IldlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPENDSW5wdXRIYW5kbGVyPiBD
Q0lucHV0SGFuZGxlcjo6Y3JlYXRlKENDSW5wdXRIYW5kbGVyQ2xpZW50KiBpbnB1dEhhbmRsZXJD
bGllbnQpCit7CisgICAgcmV0dXJuIFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw6OmNyZWF0ZShpbnB1dEhhbmRsZXJDbGllbnQpOworfQorCit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCisvLyBUaGVzZSBzdGF0aWNzIG1heSBvbmx5IGJlIGFjY2Vzc2VkIGZyb20gdGhlIGNv
bXBvc2l0b3IgdGhyZWFkLgoraW50IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzX25l
eHRBdmFpbGFibGVJZGVudGlmaWVyID0gMTsKK0hhc2hTZXQ8V2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGwqPiogV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNfY29tcG9zaXRvcnMg
PSAwOworCitXZWJDb21wb3NpdG9yKiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyOjpmcm9tSWRl
bnRpZmllcihpbnQgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29t
cG9zaXRvcio+KFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpmcm9tSWRlbnRpZmllcihp
ZGVudGlmaWVyKSk7Cit9CisKK1Bhc3NPd25QdHI8V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw+IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpjcmVhdGUoV2ViQ29yZTo6Q0NJbnB1
dEhhbmRsZXJDbGllbnQqIGlucHV0SGFuZGxlckNsaWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsKGlucHV0SGFuZGxlckNsaWVudCkp
OworfQorCitXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyKiBXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbDo6ZnJvbUlkZW50aWZpZXIoaW50IGlkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKFdl
YkNvbXBvc2l0b3JJbXBsOjppbml0aWFsaXplZCgpKTsKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJ
bXBsVGhyZWFkKCkpOworCisgICAgaWYgKCFzX2NvbXBvc2l0b3JzKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIGZvciAoSGFzaFNldDxXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbCo+Ojpp
dGVyYXRvciBpdCA9IHNfY29tcG9zaXRvcnMtPmJlZ2luKCk7IGl0ICE9IHNfY29tcG9zaXRvcnMt
PmVuZCgpOyArK2l0KSB7CisgICAgICAgIGlmICgoKml0KS0+aWRlbnRpZmllcigpID09IGlkZW50
aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gKml0OworICAgIH0KKyAgICByZXR1cm4gMDsKK30K
KworV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsKENDSW5wdXRIYW5kbGVyQ2xpZW50KiBpbnB1dEhhbmRsZXJDbGllbnQpCisgICAgOiBt
X2NsaWVudCgwKQorICAgICwgbV9pZGVudGlmaWVyKHNfbmV4dEF2YWlsYWJsZUlkZW50aWZpZXIr
KykKKyAgICAsIG1faW5wdXRIYW5kbGVyQ2xpZW50KGlucHV0SGFuZGxlckNsaWVudCkKK3sKKyAg
ICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworCisgICAgaWYgKCFzX2NvbXBvc2l0
b3JzKQorICAgICAgICBzX2NvbXBvc2l0b3JzID0gbmV3IEhhc2hTZXQ8V2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGwqPjsKKyAgICBzX2NvbXBvc2l0b3JzLT5hZGQodGhpcyk7Cit9CisKK1dl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjp+V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGwoKQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgaWYgKG1f
Y2xpZW50KQorICAgICAgICBtX2NsaWVudC0+d2lsbFNodXRkb3duKCk7CisKKyAgICBBU1NFUlQo
c19jb21wb3NpdG9ycyk7CisgICAgc19jb21wb3NpdG9ycy0+cmVtb3ZlKHRoaXMpOworICAgIGlm
ICghc19jb21wb3NpdG9ycy0+c2l6ZSgpKSB7CisgICAgICAgIGRlbGV0ZSBzX2NvbXBvc2l0b3Jz
OworICAgICAgICBzX2NvbXBvc2l0b3JzID0gMDsKKyAgICB9Cit9CisKK3ZvaWQgV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGw6OnNldENsaWVudChXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
Q2xpZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsK
KyAgICAvLyBJdCdzIHZhbGlkIHRvIHNldCBhIG5ldyBjbGllbnQgaWYgd2UndmUgbmV2ZXIgaGFk
IG9uZSBvciB0byBjbGVhciB0aGUgY2xpZW50LCBidXQgaXQncyBub3QgdmFsaWQgdG8gY2hhbmdl
IGZyb20gaGF2aW5nIG9uZSBjbGllbnQgdG8gYSBkaWZmZXJlbnQgb25lLgorICAgIEFTU0VSVCgh
bV9jbGllbnQgfHwgIWNsaWVudCk7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7Cit9CisKK3ZvaWQg
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2Vi
SW5wdXRFdmVudCYgZXZlbnQpCit7CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgp
KTsKKyAgICBBU1NFUlQobV9jbGllbnQpOworCisgICAgaWYgKGV2ZW50LnR5cGUgPT0gV2ViSW5w
dXRFdmVudDo6TW91c2VXaGVlbCAmJiAhbV9pbnB1dEhhbmRsZXJDbGllbnQtPmhhdmVXaGVlbEV2
ZW50SGFuZGxlcnMoKSkgeworICAgICAgICBjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmIHdoZWVs
RXZlbnQgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VXaGVlbEV2ZW50Kj4oJmV2ZW50KTsK
KyAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbFJvb3RMYXllcihJbnRTaXplKC13
aGVlbEV2ZW50LmRlbHRhWCwgLXdoZWVsRXZlbnQuZGVsdGFZKSk7CisgICAgICAgIG1fY2xpZW50
LT5kaWRIYW5kbGVJbnB1dEV2ZW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9j
bGllbnQtPmRpZE5vdEhhbmRsZUlucHV0RXZlbnQodHJ1ZSAvKiBzZW5kVG9XaWRnZXQgKi8pOwor
fQorCitpbnQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmlkZW50aWZpZXIoKSBjb25z
dAoreworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgcmV0dXJuIG1f
aWRlbnRpZmllcjsKK30KKwordm9pZCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6d2ls
bERyYXcoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpCit7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFlYmMxZTE1NTdiNTFiMzg1YjM4OTEzMGZmN2MxOGY1MmY0YTg2NTMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbC5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsX2gKKyNkZWZpbmUgV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGxfaAorCisjaW5jbHVkZSAiV2ViQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgIldl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ0lucHV0SGFuZGxlci5o
IgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIE11dGV4
OworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDQ0lucHV0SGFuZGxlckNsaWVudDsK
K2NsYXNzIENDVGhyZWFkOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckNsaWVudDsKKworLy8gVGVtcG9yYXJpbHkgc3ViY2xhc3Npbmcg
ZnJvbSBXZWJDb21wb3NpdG9yIHdoaWxlIGRvd25zdHJlYW0gY2hhbmdlcyBsYW5kLgorY2xhc3Mg
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwgOiBwdWJsaWMgV2ViQ29tcG9zaXRvciwgcHVi
bGljIFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbCk7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NP
d25QdHI8V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw+IGNyZWF0ZShXZWJDb3JlOjpDQ0lu
cHV0SGFuZGxlckNsaWVudCopOworICAgIHN0YXRpYyBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
KiBmcm9tSWRlbnRpZmllcihpbnQgaWRlbnRpZmllcik7CisKKyAgICB2aXJ0dWFsIH5XZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbCgpOworCisgICAgLy8gV2ViQ29tcG9zaXRvciBpbXBsZW1l
bnRhdGlvbgorICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckNsaWVudCopOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdl
YklucHV0RXZlbnQmKTsKKworICAgIC8vIFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyIGltcGxlbWVu
dGF0aW9uCisgICAgdmlydHVhbCBpbnQgaWRlbnRpZmllcigpIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCB3aWxsRHJhdyhkb3VibGUgZnJhbWVCZWdpblRpbWVNcyk7CisKK3ByaXZhdGU6CisgICAg
ZXhwbGljaXQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwoV2ViQ29yZTo6Q0NJbnB1dEhh
bmRsZXJDbGllbnQqKTsKKworICAgIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQqIG1f
Y2xpZW50OworICAgIGludCBtX2lkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6Q0NJbnB1dEhhbmRs
ZXJDbGllbnQqIG1faW5wdXRIYW5kbGVyQ2xpZW50OworCisgICAgc3RhdGljIGludCBzX25leHRB
dmFpbGFibGVJZGVudGlmaWVyOworICAgIHN0YXRpYyBIYXNoU2V0PFdlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsKj4qIHNfY29tcG9zaXRvcnM7Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJD
b21wb3NpdG9ySW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJLaXQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcAppbmRleCA3
YmNkOWNmMjM5YTUxY2Q1MmI0Mjk3ZjVlZGMyMDA4NzQ5YTA2ZTFmLi42MmI0MTgwOGQ3MDUzMThl
MDU1MDljNzJlOTYzZjZmZjgyMmYxY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktp
dC5jcHAKQEAgLTMxLDggKzMxLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJLaXQuaCIKIAotI2luY2x1ZGUgIkNDVGhyZWFkSW1wbC5oIgotI2luY2x1ZGUgImNjL0NDUHJv
eHkuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKQEAgLTk4LDE1ICs5NiwxMSBAQCB2b2lkIGluaXRp
YWxpemVXaXRob3V0VjgoV2ViS2l0UGxhdGZvcm1TdXBwb3J0KiB3ZWJLaXRQbGF0Zm9ybVN1cHBv
cnQpCiAgICAgLy8gdGhlIGluaXRpYWxpemF0aW9uIHRocmVhZC1zYWZlLCBidXQgZ2l2ZW4gdGhh
dCBzbyBtYW55IGNvZGUgcGF0aHMgdXNlCiAgICAgLy8gdGhpcywgaW5pdGlhbGl6aW5nIHRoaXMg
bGF6aWx5IHByb2JhYmx5IGRvZXNuJ3QgYnV5IHVzIG11Y2guCiAgICAgV2ViQ29yZTo6VVRGOEVu
Y29kaW5nKCk7Ci0KLSAgICBXZWJDb3JlOjpDQ1Byb3h5OjpzZXRNYWluVGhyZWFkKENDVGhyZWFk
SW1wbDo6Y3JlYXRlKHdlYktpdFBsYXRmb3JtU3VwcG9ydC0+Y3VycmVudFRocmVhZCgpKS5sZWFr
UHRyKCkpOwogfQogCiAKIHZvaWQgc2h1dGRvd24oKQogewotICAgIGRlbGV0ZSBXZWJDb3JlOjpD
Q1Byb3h5OjptYWluVGhyZWFkKCk7Ci0gICAgV2ViQ29yZTo6Q0NQcm94eTo6c2V0TWFpblRocmVh
ZCgwKTsKICAgICBzX3dlYktpdFBsYXRmb3JtU3VwcG9ydCA9IDA7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKaW5kZXggZTc3OWFmYTYz
NzFmNjNkY2U1ODc2MDUyNWE2ZDFiM2UzMmUzNzljYi4uMzBiZGNiZTE5MDAxODM1YzI1M2JlODQ3
MGJkMDM5ZGY4ZDAxZGNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXJUcmVlVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TGF5ZXJUcmVlVmlldy5jcHAKQEAgLTM5LDkgKzM5LDEyIEBAIFdlYkxheWVyVHJlZVZpZXc6OlNl
dHRpbmdzOjpvcGVyYXRvciBDQ1NldHRpbmdzKCkgY29uc3QKICAgICBDQ1NldHRpbmdzIHNldHRp
bmdzOwogICAgIHNldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9IGFjY2VsZXJhdGVQYWludGlu
ZzsKICAgICBzZXR0aW5ncy5jb21wb3NpdGVPZmZzY3JlZW4gPSBjb21wb3NpdGVPZmZzY3JlZW47
Ci0gICAgc2V0dGluZ3MuZW5hYmxlQ29tcG9zaXRvclRocmVhZCA9IGVuYWJsZUNvbXBvc2l0b3JU
aHJlYWQ7CiAgICAgc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgPSBzaG93RlBTQ291bnRlcjsKICAg
ICBzZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUgPSBzaG93UGxhdGZvcm1MYXllclRyZWU7
CisKKyAgICAvLyBGSVhNRTogc2hvd0ZQU0NvdW50ZXIgLyBzaG93UGxhdGZvcm1MYXllclRyZWUg
YXJlbid0IHN1cHBvcnRlZCBjdXJyZW50bHkuCisgICAgc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIg
PSBmYWxzZTsKKyAgICBzZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUgPSBmYWxzZTsKICAg
ICByZXR1cm4gc2V0dGluZ3M7CiB9CiAKQEAgLTY3LDcgKzcwLDcgQEAgYm9vbCBXZWJMYXllclRy
ZWVWaWV3OjplcXVhbHMoY29uc3QgV2ViTGF5ZXJUcmVlVmlldyYgbikgY29uc3QKIAogdm9pZCBX
ZWJMYXllclRyZWVWaWV3Ojpjb21wb3NpdGUoKQogewotICAgIGlmIChtX3ByaXZhdGUtPnNldHRp
bmdzKCkuZW5hYmxlQ29tcG9zaXRvclRocmVhZCkKKyAgICBpZiAoQ0NQcm94eTo6aGFzSW1wbFRo
cmVhZCgpKQogICAgICAgICBtX3ByaXZhdGUtPnNldE5lZWRzQ29tbWl0KCk7CiAgICAgZWxzZQog
ICAgICAgICBtX3ByaXZhdGUtPmNvbXBvc2l0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCmluZGV4IDhjODY4NGI2ZmNhOGM5
ZjMwZDFiNzcxNjBmMDI1OTM4MjRiYmI5NTAuLmE2ZjFkMGZhZjViYmY3MWU3NGFhMzkwZTQwYTA0
ZWUyYmYzZjVlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyVHJlZVZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJM
YXllclRyZWVWaWV3SW1wbC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJXZWJMYXll
clRyZWVWaWV3Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViU2l6ZS5oIgogI2luY2x1ZGUgIldlYlRo
cmVhZC5oIgorI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTkyLDcgKzkzLDcgQEAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QKICAg
ICBhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9IGZhbHNlOwogCiAgICAgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHN0eWxlID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRl
ckRpcmVjdGx5VG9Ib3N0V2luZG93OwotICAgIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6VGhy
ZWFkVXNhZ2UgdXNhZ2UgPSBzZXR0aW5ncygpLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQgPyBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OkZvclVzZU9uQW5vdGhlclRocmVhZCA6IEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Rm9yVXNlT25UaGlzVGhyZWFkOworICAgIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6VGhyZWFkVXNhZ2UgdXNhZ2UgPSBDQ1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkgPyBH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkZvclVzZU9uQW5vdGhlclRocmVhZCA6IEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6Rm9yVXNlT25UaGlzVGhyZWFkOwogICAgIHJldHVybiBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KHdl
YkNvbnRleHQucmVsZWFzZSgpLCBhdHRyaWJ1dGVzLCAwLCBzdHlsZSwgdXNhZ2UpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCA2
ZmM0NjI4YmVjYjZiNWVmN2JkZGY0ZDlkN2UxMzI0Mzc3NTgxZmM5Li5hMWJjZWJmMTJlNWZkN2Jk
YTRhNDNkZTIzNTAzZWQ2OTNlMzhkYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKQEAgLTUwLDcgKzUwLDYgQEAgV2ViU2V0dGluZ3NJbXBs
OjpXZWJTZXR0aW5nc0ltcGwoU2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9jb21wb3NpdGVU
b1RleHR1cmVFbmFibGVkKGZhbHNlKQogICAgICwgbV9zaG93RlBTQ291bnRlcihmYWxzZSkKICAg
ICAsIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQotICAgICwgbV91c2VUaHJlYWRlZENv
bXBvc2l0b3IoZmFsc2UpCiB7CiAgICAgQVNTRVJUKHNldHRpbmdzKTsKIH0KQEAgLTM3OSwxMSAr
Mzc4LDYgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldE1pbmltdW1BY2NlbGVyYXRlZDJkQ2Fu
dmFzU2l6ZShpbnQgbnVtUGl4ZWxzKQogICAgIG1fc2V0dGluZ3MtPnNldE1pbmltdW1BY2NlbGVy
YXRlZDJkQ2FudmFzU2l6ZShudW1QaXhlbHMpOwogfQogCi12b2lkIFdlYlNldHRpbmdzSW1wbDo6
c2V0VXNlVGhyZWFkZWRDb21wb3NpdG9yKGJvb2wgdXNlVGhyZWFkZWRDb21wb3NpdG9yKQotewot
ICAgIG1fdXNlVGhyZWFkZWRDb21wb3NpdG9yID0gdXNlVGhyZWFkZWRDb21wb3NpdG9yOwotfQot
CiB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0TWVtb3J5SW5mb0VuYWJsZWQoYm9vbCBlbmFibGVk
KQogewogICAgIG1fc2V0dGluZ3MtPnNldE1lbW9yeUluZm9FbmFibGVkKGVuYWJsZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCA0Njk4NDQz
ZTQwNzExYjU5OGMxNWVjMTk2NmQ5NWJjMzFmZTZmZjgyLi43NGI4YWY5Y2Q4NTViMmQyYjFmZDk2
ODVhOTc2ZTEzZmExZmY2ZDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTZXR0aW5nc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXR0aW5nc0ltcGwuaApAQCAtMTA5LDggKzEwOSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0TGVnYWN5QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVh
bCB2b2lkIHNldE1pbmltdW1BY2NlbGVyYXRlZDJkQ2FudmFzU2l6ZShpbnQpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKGJvb2wpOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRVc2VUaHJlYWRlZENvbXBvc2l0b3IoYm9vbCk7Ci0gICAgdmlydHVhbCBib29sIHVz
ZVRocmVhZGVkQ29tcG9zaXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlVGhyZWFkZWRDb21wb3Np
dG9yOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQoYm9vbCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpOwpAQCAt
MTMyLDcgKzEzMCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NvbXBvc2l0ZVRvVGV4dHVyZUVu
YWJsZWQ7CiAgICAgYm9vbCBtX3Nob3dGUFNDb3VudGVyOwogICAgIGJvb2wgbV9zaG93UGxhdGZv
cm1MYXllclRyZWU7Ci0gICAgYm9vbCBtX3VzZVRocmVhZGVkQ29tcG9zaXRvcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCmluZGV4IGE4ZmMxYTZmZGY0ZDk2NWY0NWYyN2Y5MzY5Y2JjNDFiYjE1NzFkNDYuLjRm
ZTgyMWUyNmY2YzBiYTY5ZjMwZjhkNzRjMTI3MGIxN2U0Zjg0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQAogI2luY2x1
ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlZlY3Rvci5oIgogI2luY2x1ZGUgIldlYlZp
ZXdDbGllbnQuaCIKLSNpbmNsdWRlICJjYy9DQ0hlYWRzVXBEaXNwbGF5LmgiCisjaW5jbHVkZSAi
Y2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtMTE0MiwxMiAr
MTE0MiwxMiBAQCB2b2lkIFdlYlZpZXdJbXBsOjphbmltYXRlKGRvdWJsZSBmcmFtZUJlZ2luVGlt
ZSkKICAgICBpZiAod2ViZnJhbWUpIHsKICAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gd2ViZnJh
bWUtPmZyYW1lVmlldygpOwogICAgICAgICBpZiAodmlldykgewotICAgICAgICAgICAgaWYgKCFz
ZXR0aW5ncygpLT51c2VUaHJlYWRlZENvbXBvc2l0b3IoKSAmJiBtX2xheWVyVHJlZUhvc3QpCisg
ICAgICAgICAgICBpZiAoIUNDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSAmJiBtX2xheWVyVHJlZUhv
c3QpCiAgICAgICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRBbmltYXRpbmcodHJ1ZSk7
CiAKICAgICAgICAgICAgIHZpZXctPnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoY29udmVydFNl
Y29uZHNUb0RPTVRpbWVTdGFtcChmcmFtZUJlZ2luVGltZSkpOwogCi0gICAgICAgICAgICBpZiAo
IXNldHRpbmdzKCktPnVzZVRocmVhZGVkQ29tcG9zaXRvcigpICYmIG1fbGF5ZXJUcmVlSG9zdCkK
KyAgICAgICAgICAgIGlmICghQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpICYmIG1fbGF5ZXJUcmVl
SG9zdCkKICAgICAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldEFuaW1hdGluZyhmYWxz
ZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMjQ5LDcgKzEyNDksNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjp0aGVtZUNoYW5nZWQoKQogdm9pZCBXZWJWaWV3SW1wbDo6Y29tcG9zaXRlKGJvb2wpCiB7
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmIChzZXR0aW5ncygpLT51
c2VUaHJlYWRlZENvbXBvc2l0b3IoKSkKKyAgICBpZiAoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgp
KQogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzUmVkcmF3KCk7CiAgICAgZWxzZSB7
CiAgICAgICAgIEFTU0VSVChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSk7CkBAIC0y
Nzc1LDcgKzI3NzUsNyBAQCBXZWJDb3JlOjpOb25Db21wb3NpdGVkQ29udGVudEhvc3QqIFdlYlZp
ZXdJbXBsOjpub25Db21wb3NpdGVkQ29udGVudEhvc3QoKQogdm9pZCBXZWJWaWV3SW1wbDo6c2No
ZWR1bGVBbmltYXRpb24oKQogewogICAgIGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3Rp
dmUoKSkgewotICAgICAgICBpZiAoc2V0dGluZ3MoKS0+dXNlVGhyZWFkZWRDb21wb3NpdG9yKCkp
IHsKKyAgICAgICAgaWYgKENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSkgewogICAgICAgICAgICAg
QVNTRVJUKG1fbGF5ZXJUcmVlSG9zdCk7CiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dE5lZWRzQW5pbWF0ZSgpOwogICAgICAgICB9IGVsc2UKQEAgLTI4NDYsNyArMjg0Niw2IEBAIHZv
aWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFj
dGl2ZSkKICAgICAgICAgV2ViQ29yZTo6Q0NTZXR0aW5ncyBjY1NldHRpbmdzOwogICAgICAgICBj
Y1NldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9IHBhZ2UoKS0+c2V0dGluZ3MoKS0+YWNjZWxl
cmF0ZWREcmF3aW5nRW5hYmxlZCgpOwogICAgICAgICBjY1NldHRpbmdzLmNvbXBvc2l0ZU9mZnNj
cmVlbiA9IHNldHRpbmdzKCktPmNvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoKTsKLSAgICAgICAg
Y2NTZXR0aW5ncy5lbmFibGVDb21wb3NpdG9yVGhyZWFkID0gc2V0dGluZ3MoKS0+dXNlVGhyZWFk
ZWRDb21wb3NpdG9yKCk7CiAgICAgICAgIGNjU2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgPSBzZXR0
aW5ncygpLT5zaG93RlBTQ291bnRlcigpOwogICAgICAgICBjY1NldHRpbmdzLnNob3dQbGF0Zm9y
bUxheWVyVHJlZSA9IHNldHRpbmdzKCktPnNob3dQbGF0Zm9ybUxheWVyVHJlZSgpOwogICAgICAg
ICBjY1NldHRpbmdzLnJlZnJlc2hSYXRlID0gc2NyZWVuUmVmcmVzaFJhdGUocGFnZSgpLT5tYWlu
RnJhbWUoKS0+dmlldygpKTsKQEAgLTI4ODMsNyArMjg4Miw3IEBAIFBhc3NSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IFdlYlZpZXdJbXBsOjpjcmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCkK
IHsKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBtX3RlbXBvcmFyeU9u
c2NyZWVuR3JhcGhpY3NDb250ZXh0M0QucmVsZWFzZSgpOwogICAgIGlmICghY29udGV4dCkgewot
ICAgICAgICBpZiAoc2V0dGluZ3MoKS0+dXNlVGhyZWFkZWRDb21wb3NpdG9yKCkpCisgICAgICAg
IGlmIChDQ1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkpCiAgICAgICAgICAgICBjb250ZXh0ID0gR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGb3JBbm90aGVyVGhy
ZWFkKGdldENvbXBvc2l0b3JDb250ZXh0QXR0cmlidXRlcygpLCBtX3BhZ2UtPmNocm9tZSgpLCBH
cmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShnZXRD
b21wb3NpdG9yQ29udGV4dEF0dHJpYnV0ZXMoKSwgbV9wYWdlLT5jaHJvbWUoKSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKQEAgLTI5NTEsNyArMjk1MCw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRpZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0KGJvb2wgc3Vj
Y2VzcykKIAogdm9pZCBXZWJWaWV3SW1wbDo6c2NoZWR1bGVDb21wb3NpdGUoKQogewotICAgIEFT
U0VSVCghc2V0dGluZ3MoKS0+dXNlVGhyZWFkZWRDb21wb3NpdG9yKCkpOworICAgIEFTU0VSVCgh
Q0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKTsKICAgICBtX2NsaWVudC0+c2NoZWR1bGVDb21wb3Np
dGUoKTsKIH0KIApAQCAtMjk4Myw3ICsyOTgyLDcgQEAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIFdl
YlZpZXdJbXBsOjpncmFwaGljc0NvbnRleHQzRCgpCiAgICAgICAgICAgICBpZiAod2ViQ29udGV4
dCAmJiAhd2ViQ29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQogICAgICAgICAgICAgICAgIHJldHVy
biB3ZWJDb250ZXh0OwogICAgICAgICB9Ci0gICAgICAgIGlmIChzZXR0aW5ncygpLT51c2VUaHJl
YWRlZENvbXBvc2l0b3IoKSkKKyAgICAgICAgaWYgKENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSkK
ICAgICAgICAgICAgIG1fdGVtcG9yYXJ5T25zY3JlZW5HcmFwaGljc0NvbnRleHQzRCA9IEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0Rm9yQW5vdGhlclRocmVh
ZChnZXRDb21wb3NpdG9yQ29udGV4dEF0dHJpYnV0ZXMoKSwgbV9wYWdlLT5jaHJvbWUoKSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgbV90ZW1wb3JhcnlPbnNjcmVlbkdyYXBoaWNzQ29udGV4dDNEID0gR3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShnZXRDb21wb3NpdG9yQ29udGV4dEF0dHJpYnV0ZXMoKSwg
bV9wYWdlLT5jaHJvbWUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0
V2luZG93KTsKQEAgLTI5OTQsNyArMjk5Myw2IEBAIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBXZWJW
aWV3SW1wbDo6Z3JhcGhpY3NDb250ZXh0M0QoKQogICAgIHJldHVybiAwOwogfQogCi0KIHZvaWQg
V2ViVmlld0ltcGw6OnNldFZpc2liaWxpdHlTdGF0ZShXZWJQYWdlVmlzaWJpbGl0eVN0YXRlIHZp
c2liaWxpdHlTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGlzSW5pdGlhbFN0YXRlKSB7CiAgICAgaWYgKCFwYWdlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCA0YTQxNzk2
NDc5MTNiOGRmMGE2N2Y5M2UzMjg2OWY0YzNkM2U3Y2Y2Li5lMjIwODgwODVkN2VkMGQ2NTAyOTVj
Njk1Nzk4MDA5ZjcyZTdiZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTI0OSwxNSArMjQ5LDcgQEAgcHJvdGVj
dGVkOgogICAgIENDTGF5ZXJUcmVlSG9zdFRlc3QoKQogICAgICAgICA6IG1fYmVnaW5uaW5nKGZh
bHNlKQogICAgICAgICAsIG1fZW5kV2hlbkJlZ2luUmV0dXJucyhmYWxzZSkKLSAgICAgICAgLCBt
X3RpbWVkT3V0KGZhbHNlKQotICAgIHsKLSAgICAgICAgbV93ZWJUaHJlYWQgPSBhZG9wdFB0cih3
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y3JlYXRlVGhyZWFkKCJDQ0xheWVyVHJlZUhvc3RUZXN0
IikpOwotICAgICAgICBBU1NFUlQoQ0NQcm94eTo6bWFpblRocmVhZCgpKTsKLQotICAgICAgICBX
ZWJDb21wb3NpdG9yOjpzZXRUaHJlYWQobV93ZWJUaHJlYWQuZ2V0KCkpOwotICAgICAgICBBU1NF
UlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwotICAgICAgICBtX21haW5UaHJlYWRQcm94eSA9
IENDU2NvcGVkVGhyZWFkUHJveHk6OmNyZWF0ZShDQ1Byb3h5OjptYWluVGhyZWFkKCkpOwotICAg
IH0KKyAgICAgICAgLCBtX3RpbWVkT3V0KGZhbHNlKSB7IH0KIAogICAgIHZvaWQgZG9CZWdpblRl
c3QoKTsKIApAQCAtMjcxLDkgKzI2Myw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlF1aXRNZXNzYWdlTG9vcCgp
OwogICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7Ci0gICAg
ICAgIENDTGF5ZXJUcmVlSG9zdFRlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxDQ0xheWVyVHJlZUhv
c3RUZXN0Kj4oc2VsZik7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHRlc3QpOwotICAgICAgICB0ZXN0
LT5tX2xheWVyVHJlZUhvc3QuY2xlYXIoKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBkaXNw
YXRjaFNldE5lZWRzQW5pbWF0ZSh2b2lkKiBzZWxmKQpAQCAtMzYyLDE0ICszNTEsMjcgQEAgcHJv
dGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIHJ1blRlc3QoYm9vbCB0aHJlYWRlZCkKICAgICB7
Ci0gICAgICAgIG1fc2V0dGluZ3MuZW5hYmxlQ29tcG9zaXRvclRocmVhZCA9IHRocmVhZGVkOwog
ICAgICAgICBtX3NldHRpbmdzLnJlZnJlc2hSYXRlID0gMTAwLjA7CisKKyAgICAgICAgaWYgKHRo
cmVhZGVkKSB7CisgICAgICAgICAgICBtX3dlYlRocmVhZCA9IGFkb3B0UHRyKHdlYktpdFBsYXRm
b3JtU3VwcG9ydCgpLT5jcmVhdGVUaHJlYWQoIkNDTGF5ZXJUcmVlSG9zdFRlc3QiKSk7CisgICAg
ICAgICAgICBXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKG1fd2ViVGhyZWFkLmdldCgpKTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOwor
CisgICAgICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CisgICAgICAgIG1fbWFp
blRocmVhZFByb3h5ID0gQ0NTY29wZWRUaHJlYWRQcm94eTo6Y3JlYXRlKENDUHJveHk6Om1haW5U
aHJlYWQoKSk7CisKICAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlBvc3REZWxheWVkVGFzayhDQ0xh
eWVyVHJlZUhvc3RUZXN0OjpvbkJlZ2luVGVzdCwgc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMpLCAw
KTsKICAgICAgICAgbV90aW1lb3V0VGFzayA9IG5ldyBUaW1lb3V0VGFzayh0aGlzKTsKICAgICAg
ICAgd2Via2l0X3N1cHBvcnQ6OlBvc3REZWxheWVkVGFzayhtX3RpbWVvdXRUYXNrLCA1MDAwKTsg
Ly8gd2Via2l0X3N1cHBvcnQgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSB0YXNrCiAgICAgICAgIHdl
YmtpdF9zdXBwb3J0OjpSdW5NZXNzYWdlTG9vcCgpOwogICAgICAgICB3ZWJraXRfc3VwcG9ydDo6
UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CiAKKyAgICAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCAm
JiBtX2xheWVyVHJlZUhvc3QtPnJvb3RMYXllcigpKQorICAgICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5yb290TGF5ZXIoKS0+c2V0TGF5ZXJUcmVlSG9zdCgwKTsKKyAgICAgICAgbV9sYXllclRy
ZWVIb3N0LmNsZWFyKCk7CisKICAgICAgICAgaWYgKG1fdGltZW91dFRhc2spCiAgICAgICAgICAg
ICBtX3RpbWVvdXRUYXNrLT5jbGVhclRlc3QoKTsKIApAQCAtMzc3LDEwICszNzksMTEgQEAgcHJv
dGVjdGVkOgogICAgICAgICBtX2NsaWVudC5jbGVhcigpOwogICAgICAgICBpZiAobV90aW1lZE91
dCkgewogICAgICAgICAgICAgRkFJTCgpIDw8ICJUZXN0IHRpbWVkIG91dCI7CisgICAgICAgICAg
ICBXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9Ci0gICAgICAgIG1fcm9vdExheWVyLT5zZXRMYXllclRyZWVIb3N0KDApOwogICAgICAgICBh
ZnRlclRlc3QoKTsKKyAgICAgICAgV2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKICAgICB9CiAK
ICAgICBDQ1NldHRpbmdzIG1fc2V0dGluZ3M7CkBAIC0zOTIsNyArMzk1LDYgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fZW5kV2hlbkJlZ2luUmV0dXJuczsKICAgICBib29sIG1fdGltZWRPdXQ7CiAK
LSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290TGF5ZXI7CiAgICAgT3duUHRyPFdlYlRo
cmVhZD4gbV93ZWJUaHJlYWQ7CiAgICAgUmVmUHRyPENDU2NvcGVkVGhyZWFkUHJveHk+IG1fbWFp
blRocmVhZFByb3h5OwogICAgIFRpbWVvdXRUYXNrKiBtX3RpbWVvdXRUYXNrOwpAQCAtNDAzLDEw
ICs0MDUsMTAgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RUZXN0Ojpkb0JlZ2luVGVzdCgpCiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBtX2NsaWVudCA9IE1vY2tMYXllclRyZWVIb3N0
Q2xpZW50OjpjcmVhdGUodGhpcyk7CiAKLSAgICBtX3Jvb3RMYXllciA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZSgwKTsKLSAgICBtX2xheWVyVHJlZUhvc3QgPSBNb2NrTGF5ZXJUcmVlSG9zdDo6Y3Jl
YXRlKHRoaXMsIG1fY2xpZW50LmdldCgpLCBtX3Jvb3RMYXllciwgbV9zZXR0aW5ncyk7CisgICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IHJvb3RMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgw
KTsKKyAgICBtX2xheWVyVHJlZUhvc3QgPSBNb2NrTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKHRoaXMs
IG1fY2xpZW50LmdldCgpLCByb290TGF5ZXIsIG1fc2V0dGluZ3MpOwogICAgIEFTU0VSVF9UUlVF
KG1fbGF5ZXJUcmVlSG9zdCk7Ci0gICAgbV9yb290TGF5ZXItPnNldExheWVyVHJlZUhvc3QobV9s
YXllclRyZWVIb3N0LmdldCgpKTsKKyAgICByb290TGF5ZXItPnNldExheWVyVHJlZUhvc3QobV9s
YXllclRyZWVIb3N0LmdldCgpKTsKIAogICAgIG1fYmVnaW5uaW5nID0gdHJ1ZTsKICAgICBiZWdp
blRlc3QoKTsKQEAgLTQ0NSw2ICs0NDcsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IGJlZ2luVGVzdCgpCiAgICAgeworICAgICAgICAvLyBLaWxsIHRoZSBsYXllclRyZWVIb3N0IGlt
bWVkaWF0ZWx5LgorICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnJvb3RMYXllcigpLT5zZXRMYXll
clRyZWVIb3N0KDApOworICAgICAgICBtX2xheWVyVHJlZUhvc3QuY2xlYXIoKTsKKwogICAgICAg
ICBlbmRUZXN0KCk7CiAgICAgfQogCkBAIC00NzMsNiArNDc5LDExIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKICAgICB7CiAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1p
dFRvTWFpblRocmVhZCgpOworCisgICAgICAgIC8vIEtpbGwgdGhlIGxheWVyVHJlZUhvc3QgaW1t
ZWRpYXRlbHkuCisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCktPnNldExheWVy
VHJlZUhvc3QoMCk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC5jbGVhcigpOworCiAgICAgICAg
IGVuZFRlc3QoKTsKICAgICB9CiAKQEAgLTQ5MSw2ICs1MDIsMTEgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBiZWdpblRlc3QoKQogICAgIHsKICAgICAgICAgcG9zdFNldE5lZWRzUmVkcmF3
VG9NYWluVGhyZWFkKCk7CisKKyAgICAgICAgLy8gS2lsbCB0aGUgbGF5ZXJUcmVlSG9zdCBpbW1l
ZGlhdGVseS4KKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIoKS0+c2V0TGF5ZXJU
cmVlSG9zdCgwKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LmNsZWFyKCk7CisKICAgICAgICAg
ZW5kVGVzdCgpOwogICAgIH0KIApAQCAtNTAxLDggKzUxNyw4IEBAIHB1YmxpYzoKIAogU0lOR0xF
X0FORF9NVUxUSV9USFJFQURfVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RTaG9ydGxpdmVkMykK
IAotLy8gQ29uc3RhbnRseSByZWRyYXdpbmcgbGF5ZXJUcmVlSG9zdHMgc2hvdWxkbid0IGRpZSB3
aGVuIHRoZXkgY29tbWl0Ci1jbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0Q29tbWl0aW5nV2l0aENv
bnRpbnVvdXNSZWRyYXcgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdCB7CisvLyBUZXN0IGlu
dGVybGVhdmluZyBvZiByZWRyYXdzIGFuZCBjb21taXRzCitjbGFzcyBDQ0xheWVyVHJlZUhvc3RU
ZXN0Q29tbWl0aW5nV2l0aENvbnRpbnVvdXNSZWRyYXcgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0
VGVzdFRocmVhZE9ubHkgewogcHVibGljOgogICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RDb21taXRp
bmdXaXRoQ29udGludW91c1JlZHJhdygpCiAgICAgICAgIDogbV9udW1Db21wbGV0ZUNvbW1pdHMo
MCkKQEAgLTUxMyw3ICs1MjksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVz
dCgpCiAgICAgewogICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKLSAg
ICAgICAgZW5kVGVzdCgpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0
ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopCkBAIC01NDAsNyArNTU1LDEwIEBAIHBy
aXZhdGU6CiAgICAgaW50IG1fbnVtRHJhd3M7CiB9OwogCi1TSU5HTEVfQU5EX01VTFRJX1RIUkVB
RF9URVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdENvbW1pdGluZ1dpdGhDb250aW51b3VzUmVkcmF3
KQorVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RDb21taXRpbmdXaXRoQ29udGludW91c1JlZHJh
dywgcnVuTXVsdGlUaHJlYWQpCit7CisgICAgcnVuVGVzdFRocmVhZGVkKCk7Cit9CiAKIC8vIFR3
byBzZXROZWVkc0NvbW1pdHMgaW4gYSByb3cgc2hvdWxkIGxlYWQgdG8gYXQgbGVhc3QgMSBjb21t
aXQgYW5kIGF0IGxlYXN0IDEKIC8vIGRyYXcgd2l0aCBmcmFtZSAwLgpAQCAtOTkxLDYgKzEwMDks
OSBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGFtb3V0IG9mIHRpbWVzIGFzIHBhaW50Q29udGVudHNJ
ZkRpcnR5KCkuCiAgICAgICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29u
dGVudHNDb3VudCgpLAogICAgICAgICAgICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLT51cGRh
dGVDb3VudCgpKTsKKworICAgICAgICAvLyBjbGVhciBtX3VwZGF0ZUNoZWNrTGF5ZXIgc28gQ0NM
YXllclRyZWVIb3N0IGRpZXMuCisgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci5jbGVhcigpOwog
ICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvV2ViQ29tcG9zaXRvckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvV2ViQ29tcG9zaXRvckltcGxUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTMzMzM2OWNlZWY1OThhOWJhODk2NzhhMjQyNTgwNTcyMTkyYzRiOS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYkNvbXBvc2l0b3JJbXBsVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiV2ViQ29tcG9z
aXRvckltcGwuaCIKLQotI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKLQotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotCi11c2luZyBX
ZWJLaXQ6OldlYkNvbXBvc2l0b3I7Ci11c2luZyBXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbXBsOwot
Ci1uYW1lc3BhY2UgewotCi1URVNUKFdlYkNvbXBvc2l0b3JJbXBsLCBmcm9tSWRlbnRpZmllcikK
LXsKLSNpZm5kZWYgTkRFQlVHCi0gICAgLy8gV2ViQ29tcG9zaXRvciBBUElzIGNhbiBvbmx5IGJl
IGNhbGxlZCBmcm9tIHRoZSBjb21wb3NpdG9yIHRocmVhZC4KLSAgICBXZWJDb3JlOjpEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgYWx3YXlzSW1wbFRocmVhZDsKLSNlbmRpZgotCi0gICAgLy8gQmVm
b3JlIGNyZWF0aW5nIGFueSBXZWJDb21wb3NpdG9ycywgbG9va3VwcyBmb3IgYW55IHZhbHVlIHNo
b3VsZCBmYWlsIGFuZCBub3QgY3Jhc2guCi0gICAgRVhQRUNUX0VRKDAsIFdlYkNvbXBvc2l0b3I6
OmZyb21JZGVudGlmaWVyKDIpKTsKLSAgICBFWFBFQ1RfRVEoMCwgV2ViQ29tcG9zaXRvcjo6ZnJv
bUlkZW50aWZpZXIoMCkpOwotICAgIEVYUEVDVF9FUSgwLCBXZWJDb21wb3NpdG9yOjpmcm9tSWRl
bnRpZmllcigtMSkpOwotCi0gICAgaW50IGNvbXBvc2l0b3JJZGVudGlmaWVyID0gLTE7Ci0gICAg
ewotICAgICAgICBPd25QdHI8V2ViQ29tcG9zaXRvckltcGw+IGNvbXAgPSBXZWJDb21wb3NpdG9y
SW1wbDo6Y3JlYXRlKDApOwotICAgICAgICBjb21wb3NpdG9ySWRlbnRpZmllciA9IGNvbXAtPmlk
ZW50aWZpZXIoKTsKLSAgICAgICAgLy8gVGhlIGNvbXBvc2l0b3Igd2UganVzdCBjcmVhdGVkIHNo
b3VsZCBiZSBsb2NhdGFibGUuCi0gICAgICAgIEVYUEVDVF9FUShjb21wLmdldCgpLCBXZWJDb21w
b3NpdG9yOjpmcm9tSWRlbnRpZmllcihjb21wb3NpdG9ySWRlbnRpZmllcikpOwotCi0gICAgICAg
IC8vIEJ1dCBub3RoaW5nIGVsc2UuCi0gICAgICAgIEVYUEVDVF9FUSgwLCBXZWJDb21wb3NpdG9y
Ojpmcm9tSWRlbnRpZmllcihjb21wLT5pZGVudGlmaWVyKCkgKyAxMCkpOwotICAgIH0KLQotICAg
IC8vIEFmdGVyIHRoZSBjb21wb3NpdG9yIGlzIGRlc3Ryb3llZCwgaXRzIGVudHJ5IHNob3VsZCBi
ZSByZW1vdmVkIGZyb20gdGhlIG1hcC4KLSAgICBFWFBFQ1RfRVEoMCwgV2ViQ29tcG9zaXRvcjo6
ZnJvbUlkZW50aWZpZXIoY29tcG9zaXRvcklkZW50aWZpZXIpKTsKLX0KLQotfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyMDdjMDZhMmI1NzFhOTRmMzc3
OGYwNWU2Nzg4MzI1MDhkOGIyZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAKQEAgLTAs
MCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgiCisKKyNpbmNsdWRlICJXZWJDb21wb3NpdG9yLmgi
CisjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgorCisjaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK3VzaW5nIFdlYktpdDo6V2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlcjsKK3VzaW5nIFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGw7CisKK25hbWVzcGFjZSB7CisKK1RFU1QoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGwsIGZyb21JZGVudGlmaWVyKQoreworICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6aW5p
dGlhbGl6ZSgwKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgLy8gV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlciBBUElzIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBjb21wb3NpdG9yIHRocmVhZC4K
KyAgICBXZWJDb3JlOjpEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgYWx3YXlzSW1wbFRocmVhZDsK
KyNlbmRpZgorCisgICAgLy8gQmVmb3JlIGNyZWF0aW5nIGFueSBXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVycywgbG9va3VwcyBmb3IgYW55IHZhbHVlIHNob3VsZCBmYWlsIGFuZCBub3QgY3Jhc2gu
CisgICAgRVhQRUNUX0VRKDAsIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXI6OmZyb21JZGVudGlm
aWVyKDIpKTsKKyAgICBFWFBFQ1RfRVEoMCwgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcjo6ZnJv
bUlkZW50aWZpZXIoMCkpOworICAgIEVYUEVDVF9FUSgwLCBXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVyOjpmcm9tSWRlbnRpZmllcigtMSkpOworCisgICAgaW50IGNvbXBvc2l0b3JJZGVudGlmaWVy
ID0gLTE7CisgICAgeworICAgICAgICBPd25QdHI8V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw+IGNvbXAgPSBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6Y3JlYXRlKDApOworICAg
ICAgICBjb21wb3NpdG9ySWRlbnRpZmllciA9IGNvbXAtPmlkZW50aWZpZXIoKTsKKyAgICAgICAg
Ly8gVGhlIGNvbXBvc2l0b3Igd2UganVzdCBjcmVhdGVkIHNob3VsZCBiZSBsb2NhdGFibGUuCisg
ICAgICAgIEVYUEVDVF9FUShjb21wLmdldCgpLCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyOjpm
cm9tSWRlbnRpZmllcihjb21wb3NpdG9ySWRlbnRpZmllcikpOworCisgICAgICAgIC8vIEJ1dCBu
b3RoaW5nIGVsc2UuCisgICAgICAgIEVYUEVDVF9FUSgwLCBXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVyOjpmcm9tSWRlbnRpZmllcihjb21wLT5pZGVudGlmaWVyKCkgKyAxMCkpOworICAgIH0KKwor
ICAgIC8vIEFmdGVyIHRoZSBjb21wb3NpdG9yIGlzIGRlc3Ryb3llZCwgaXRzIGVudHJ5IHNob3Vs
ZCBiZSByZW1vdmVkIGZyb20gdGhlIG1hcC4KKyAgICBFWFBFQ1RfRVEoMCwgV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlcjo6ZnJvbUlkZW50aWZpZXIoY29tcG9zaXRvcklkZW50aWZpZXIpKTsKKwor
ICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKK30KKworfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGFjMDVlNTc3M2U1Mzdi
MTFlMWY0ZTE0YmRiNjE4ZWIxNGY3NWMxMTIuLjc0NDMyYTgzYTAzODZlYjE5MGZjZDg0OTE5YTE5
Y2M1ZTVkNWJjNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0xMS0zMCAgbmR1Y2FAY2hyb21pdW0ub3JnICA8
bmR1Y2FAY2hyb21pdW0ub3JnQDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYz4K
KworICAgICAgICBbY2hyb21pdW1dIEVuYWJsZSB0aHJlYWRlZCBjb21wb3NpdGluZyB2aWEgQ0NU
aHJlYWRQcm94eTo6aGFzVGhyZWFkIG9ubHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcwODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9i
aW5zb24uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3Bw
OgorICAgICAgICAoVGVzdFNoZWxsOjpyZXNldFdlYlNldHRpbmdzKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaDoKKyAgICAgICAgKFRlc3RTaGVsbDo6dGhy
ZWFkZWRDb21wb3NpdGluZ0VuYWJsZWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjpyZXNldCk6
CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6YXBwbHlUbyk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9zdDo6V2ViVmll
d0hvc3QpOgorICAgICAgICAoV2ViVmlld0hvc3Q6On5XZWJWaWV3SG9zdCk6CisKIDIwMTEtMTEt
MzAgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgogCiAgICAgICAg
IFtRdF0gUmVtb3ZlIGRlcGVuZGVuY3kgb2YgUXQgRFJUIG9uIEphdmFTY3JpcHRDb3JlLgpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKaW5kZXggMWUwYTYyNjgz
NDNjZGNiYjQ2OWUzNjlkZmUyNGJkOTljNWJmNzEzOS4uMjI2NDA1YmNkMTA0Y2U0YjhiMTRmNWZi
MDBmZWZmYWFjMWQ3YzhkMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFNoZWxsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGwuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRFJURGV2VG9vbHNDbGllbnQu
aCIKICNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYkFycmF5
QnVmZmVyVmlldy5oIgorI2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJXZWJE
YXRhU291cmNlLmgiCiAjaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKICNpbmNsdWRlICJXZWJFbGVt
ZW50LmgiCkBAIC00Miw3ICs0Myw5IEBACiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0ZW0uaCIKICNp
bmNsdWRlICJXZWJJREJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViVGVzdGluZ1N1cHBvcnQuaCIK
KyNpbmNsdWRlICJXZWJUaHJlYWQuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKKyNpbmNsdWRlICJX
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJXZWJQZXJtaXNzaW9ucy5oIgogI2lu
Y2x1ZGUgIldlYlBvaW50LmgiCiAjaW5jbHVkZSAiV2ViUnVudGltZUZlYXR1cmVzLmgiCkBAIC0x
MzcsNiArMTQwLDE1IEBAIFRlc3RTaGVsbDo6VGVzdFNoZWxsKGJvb2wgdGVzdFNoZWxsTW9kZSkK
ICNlbmRpZgogICAgIG1fcHJpbnRlciA9IG1fdGVzdFNoZWxsTW9kZSA/IFRlc3RFdmVudFByaW50
ZXI6OmNyZWF0ZVRlc3RTaGVsbFByaW50ZXIoKSA6IFRlc3RFdmVudFByaW50ZXI6OmNyZWF0ZURS
VFByaW50ZXIoKTsKIAorICAgIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworCisgICAgaWYg
KG1fdGhyZWFkZWRDb21wb3NpdGluZ0VuYWJsZWQpIHsKKyAgICAgICAgbV93ZWJDb21wb3NpdG9y
VGhyZWFkID0gYWRvcHRQdHIoV2ViS2l0Ojp3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y3JlYXRl
VGhyZWFkKCJDb21wb3NpdG9yIikpOworICAgICAgICBXZWJDb21wb3NpdG9yOjppbml0aWFsaXpl
KG1fd2ViQ29tcG9zaXRvclRocmVhZC5nZXQoKSk7CisgICAgfSBlbHNlCisgICAgICAgIFdlYkNv
bXBvc2l0b3I6OmluaXRpYWxpemUoMCk7CisKKwogICAgIC8vIDMwIHNlY29uZCBpcyB0aGUgc2Ft
ZSBhcyB0aGUgdmFsdWUgaW4gTWFjIERSVC4KICAgICAvLyBJZiB3ZSB1c2UgYSB2YWx1ZSBzbWFs
bGVyIHRoYW4gdGhlIHRpbWVvdXQgdmFsdWUgb2YKICAgICAvLyAobmV3LSlydW4td2Via2l0LXRl
c3RzLCAobmV3LSlydW4td2Via2l0LXRlc3RzIG1pc3VuZGVyc3RhbmRzIHRoYXQgYQpAQCAtMTYx
LDYgKzE3Myw4IEBAIFRlc3RTaGVsbDo6flRlc3RTaGVsbCgpCiAKICAgICAvLyBEZXN0cm95IHRo
ZSBXZWJWaWV3IGJlZm9yZSBpdHMgV2ViVmlld0hvc3QuCiAgICAgbV9kcnREZXZUb29sc0FnZW50
LT5zZXRXZWJWaWV3KDApOworCisgICAgV2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKIH0KIAog
dm9pZCBUZXN0U2hlbGw6OmNyZWF0ZURSVERldlRvb2xzQ2xpZW50KERSVERldlRvb2xzQWdlbnQq
IGFnZW50KQpAQCAtMjAxLDcgKzIxNSw2IEBAIHZvaWQgVGVzdFNoZWxsOjpyZXNldFdlYlNldHRp
bmdzKFdlYlZpZXcmIHdlYlZpZXcpCiAgICAgbV9wcmVmcy5yZXNldCgpOwogICAgIG1fcHJlZnMu
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQgPSB0cnVlOwogICAgIG1fcHJlZnMuYWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZCA9IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0ZvclZpZGVvRW5hYmxlZDsKLSAgICBtX3ByZWZzLnRocmVhZGVkQ29tcG9zaXRpbmdFbmFibGVk
ID0gbV90aHJlYWRlZENvbXBvc2l0aW5nRW5hYmxlZDsKICAgICBtX3ByZWZzLmNvbXBvc2l0ZVRv
VGV4dHVyZSA9IG1fY29tcG9zaXRlVG9UZXh0dXJlOwogICAgIG1fcHJlZnMuZm9yY2VDb21wb3Np
dGluZ01vZGUgPSBtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlOwogICAgIG1fcHJlZnMuYWNjZWxlcmF0
ZWQyZENhbnZhc0VuYWJsZWQgPSBtX2FjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAppbmRleCAxZjY0OGIxNWVmYjQ0MDI2
MWMwZTgzODIzNmVjZjM2ZTJjM2YyMjQ0Li5lNzMxM2RmNWZmOTVkNzIyMmY0ZTc2Njc1ZDgwOWY4
MTAxYjI5MmFjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGwuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaApA
QCAtNTIsNiArNTIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkRldlRvb2xzQWdl
bnRDbGllbnQ7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYk5vdGlmaWNhdGlvblByZXNlbnRl
cjsKK2NsYXNzIFdlYlRocmVhZDsKIGNsYXNzIFdlYlZpZXc7CiBjbGFzcyBXZWJVUkw7CiB9CkBA
IC0yMTQsNiArMjE1LDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8VGV4dElucHV0Q29udHJvbGxl
cj4gbV90ZXh0SW5wdXRDb250cm9sbGVyOwogICAgIE93blB0cjxOb3RpZmljYXRpb25QcmVzZW50
ZXI+IG1fbm90aWZpY2F0aW9uUHJlc2VudGVyOwogICAgIE93blB0cjxXZWJWaWV3SG9zdD4gbV93
ZWJWaWV3SG9zdDsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJUaHJlYWQ+IG1fd2ViQ29tcG9zaXRv
clRocmVhZDsKIAogICAgIFRlc3RQYXJhbXMgbV9wYXJhbXM7CiAgICAgaW50IG1fdGltZW91dDsg
Ly8gdGltZW91dCB2YWx1ZSBpbiBtaWxsaXNlY29uZApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IDVjYzhmYWI5OTU4YTc5NmFjNDlk
ZTgxNDE5YWE5OWYwZGQzMmZjNmIuLjc1YTA1Nzc4OThhMmRmYWEzODU0ZDBmYjY1NThlOTA2ZDEz
MzI2ZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZl
cmVuY2VzLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJl
bmNlcy5jcHAKQEAgLTEwOSw3ICsxMDksNiBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpyZXNldCgp
CiAgICAgaHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkID0gZmFsc2U7CiAgICAgYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZCA9IGZhbHNlOwogICAgIGFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdFbmFibGVkID0gZmFsc2U7Ci0gICAgdGhyZWFkZWRDb21wb3NpdGluZ0VuYWJsZWQgPSBm
YWxzZTsKICAgICBjb21wb3NpdGVUb1RleHR1cmUgPSBmYWxzZTsKICAgICBhY2NlbGVyYXRlZDJk
Q2FudmFzRW5hYmxlZCA9IGZhbHNlOwogICAgIGxlZ2FjeUFjY2VsZXJhdGVkMmRDYW52YXNFbmFi
bGVkID0gZmFsc2U7CkBAIC0yMTMsNyArMjEyLDYgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6YXBw
bHlUbyhXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHNldHRpbmdzLT5zZXRDYXJldEJyb3dzaW5nRW5h
YmxlZChjYXJldEJyb3dzaW5nRW5hYmxlZCk7CiAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdFbmFibGVkKGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKTsKICAgICBz
ZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZChhY2NlbGVy
YXRlZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkKTsKLSAgICBzZXR0aW5ncy0+c2V0VXNlVGhy
ZWFkZWRDb21wb3NpdG9yKHRocmVhZGVkQ29tcG9zaXRpbmdFbmFibGVkKTsKICAgICBzZXR0aW5n
cy0+c2V0Q29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZChjb21wb3NpdGVUb1RleHR1cmUpOwogICAg
IHNldHRpbmdzLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShmb3JjZUNvbXBvc2l0aW5nTW9kZSk7
CiAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKGFjY2VsZXJhdGVk
MmRDYW52YXNFbmFibGVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlByZWZlcmVuY2VzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQ
cmVmZXJlbmNlcy5oCmluZGV4IDIzMzdhNDA1NTlkMGU4YWM0ZmE3NjVlODUzNjE2NDhiMjEzYjBh
OWIuLjIxNjQ5NDQ4ZDg5ZThiNGMxOWIzNzY5OTZkYWYxNjgxNGRhZDJiNGUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuaApAQCAtMTAyLDcgKzEw
Miw2IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlcyB7CiAgICAgYm9vbCBjYXJldEJyb3dzaW5nRW5h
YmxlZDsKICAgICBib29sIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQ7CiAg
ICAgYm9vbCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZDsKLSAgICBib29sIHRocmVhZGVk
Q29tcG9zaXRpbmdFbmFibGVkOwogICAgIGJvb2wgY29tcG9zaXRlVG9UZXh0dXJlOwogICAgIGJv
b2wgZm9yY2VDb21wb3NpdGluZ01vZGU7CiAgICAgYm9vbCBhY2NlbGVyYXRlZDJkQ2FudmFzRW5h
YmxlZDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApp
bmRleCBiMjBkMmQ3YzVjYWI1YWI5MmYwMzI2NWVjYTVkZDM3Y2RmMjM5MzEyLi4xMGQ4ZTVhNDVh
MmZkOGRlNTVlZDAyMWJkODcyNGFkYWQ3NzNlZmMzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAi
VGVzdFdlYlBsdWdpbi5oIgogI2luY2x1ZGUgIlRlc3RXZWJXb3JrZXIuaCIKICNpbmNsdWRlICJX
ZWJDU3RyaW5nLmgiCi0jaW5jbHVkZSAiV2ViQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIldlYkNv
bnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVEYXRhLmgiCiAjaW5jbHVk
ZSAiV2ViRGF0YVNvdXJjZS5oIgpAQCAtNDgsNyArNDcsNiBAQAogI2luY2x1ZGUgIldlYkdlb2xv
Y2F0aW9uQ2xpZW50TW9jay5oIgogI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0LmgiCi0jaW5jbHVkZSAiV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVk
ZSAiV2ViTm9kZS5oIgogI2luY2x1ZGUgIldlYlBsdWdpblBhcmFtcy5oIgogI2luY2x1ZGUgIldl
YlBvcHVwTWVudS5oIgpAQCAtNzEsNyArNjksNiBAQAogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpAQCAtMTIwOSwxMSArMTIwNiw2IEBAIFdlYlZpZXdIb3N0OjpXZWJWaWV3SG9zdChUZXN0U2hl
bGwqIHNoZWxsKQogICAgICwgbV93ZWJXaWRnZXQoMCkKICAgICAsIG1fbGFzdFJlcXVlc3RlZFRl
eHRDaGVja2luZ0NvbXBsZXRpb24oMCkKIHsKLSAgICBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmco
KTsKLQotICAgIG1fY29tcG9zaXRvclRocmVhZCA9IGFkb3B0UHRyKFdlYktpdDo6d2ViS2l0UGxh
dGZvcm1TdXBwb3J0KCktPmNyZWF0ZVRocmVhZCgiQ29tcG9zaXRvciIpKTsKLSAgICBXZWJDb21w
b3NpdG9yOjpzZXRUaHJlYWQobV9jb21wb3NpdG9yVGhyZWFkLmdldCgpKTsKLQogICAgIHJlc2V0
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmlu
ZGV4IDQxMTBhNjgwMmRlMjNmMWZjNzY0YWY5ZjZkZDJjMDI5YzYxOTg0OWEuLmIwZmI5YWU1MjM0
ZDc2ZjFjZDFlYTEzNWMyNTY5YjEwMTQzYjVmYmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtNTgsNyArNTgsNiBAQCBjbGFzcyBXZWJHZW9sb2Nh
dGlvblNlcnZpY2VNb2NrOwogY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOwogY2xhc3Mg
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jazsKIGNsYXNzIFdlYlNwZWVjaElucHV0TGlzdGVu
ZXI7Ci1jbGFzcyBXZWJUaHJlYWQ7CiBjbGFzcyBXZWJVUkw7CiBzdHJ1Y3QgV2ViUmVjdDsKIHN0
cnVjdCBXZWJVUkxFcnJvcjsKQEAgLTM2MCw4ICszNTksNiBAQCBwcml2YXRlOgogICAgIFdlYktp
dDo6V2ViU3RyaW5nIG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1N0cmluZzsKICAgICBXZWJLaXQ6
OldlYlRleHRDaGVja2luZ0NvbXBsZXRpb24qIG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja2luZ0Nv
bXBsZXRpb247CiAKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJUaHJlYWQ+IG1fY29tcG9zaXRvclRo
cmVhZDsKLQogICAgIFRhc2tMaXN0IG1fdGFza0xpc3Q7CiAgICAgVmVjdG9yPFdlYktpdDo6V2Vi
V2lkZ2V0Kj4gbV9wb3B1cG1lbnVzOwogfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>