<?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>81716</bug_id>
          
          <creation_ts>2012-03-20 16:21:43 -0700</creation_ts>
          <short_desc>[chromium] Skip frames when checkerboarding an animation</short_desc>
          <delta_ts>2012-03-23 08:56:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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>81437</dependson>
          <blocked>79536</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nat Duca">nduca</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>backer</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>reveman</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>vollick</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>583576</commentid>
    <comment_count>0</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-20 16:21:43 -0700</bug_when>
    <thetext>And figure out how to get return values out.
We need this to make checkerboarding of animated layers block rendering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584789</commentid>
    <comment_count>1</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-21 17:19:29 -0700</bug_when>
    <thetext>1. Makes draw vs forced draw in scheduler
2. Don&apos;t draw when prepareToUpdate fails and it&apos;s not a forced draw
3. If the draw failes, set needsRedraw again so we will redraw next vsync.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584790</commentid>
    <comment_count>2</comment_count>
      <attachid>133149</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-21 17:19:38 -0700</bug_when>
    <thetext>Created attachment 133149
Patch

Here&apos;s a patch but when it drops a frame it doesn&apos;t recover and basically locks up.

I&apos;m super not feeling well and going to go home. If any of you can look at it that&apos;d be cool if not I will when I am feeling better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584809</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 17:28:36 -0700</bug_when>
    <thetext>Attachment 133149 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585080</commentid>
    <comment_count>4</comment_count>
      <attachid>133149</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-22 02:25:07 -0700</bug_when>
    <thetext>Comment on attachment 133149
Patch

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

Looking really really good. Awesome turnaround time. Tweaks and ping me when you&apos;re ready for another round.

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        No new tests. (OOPS!)
&gt; 
&gt; You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]

Yaaay stylebot! :)

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:278
&gt; +    // If we are unable to draw an animation on some layer, then we don&apos;t want to draw the frame unless forced to.

I&apos;m thinking this sentence is sort of better clobbered and a new one written, than tweaked. Maybe with a few setences. :) E.g. &quot;ideally, we want to X. however, blahblah may mean we have no other option. therefore zzzz.&quot;

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:-311
&gt; -                break;

do you want the prepare function to take a bool saying force, so we can skip the calculation cost if we can&apos;t draw?

Though, maybe its better to always do the full calculate to avoid scary &quot;the tree is half updated&quot; type situations.

Just make the call whichever way you feel is best, no need to discuss I think.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.h:41
&gt;      virtual bool hasMoreResourceUpdates() const = 0;

I&apos;d like to delete the canDraw() code and instead have that state fold into this new thing. That could be a followon patch for risk mitigation if you look at it and decide its a bit scary for now. If we go for deferring this, lets file a bug now.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.h:44
&gt; +    virtual bool scheduledActionDrawAndSwap(bool forcedDraw) = 0;

Mind making this 2 actual methods, one per action? Notes below on why I think this is better...

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:52
&gt; +bool CCSchedulerStateMachine::shouldDrawForced() const

not seeing why we need this method...  if you&apos;re trying to acccess this in the tests, then there is a special StateMachine subclass in the test.cpp that provides setters/accessors to internal states.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:59
&gt; +    ASSERT(!m_needsForcedRedraw); // shouldDrawForced() should always be checked first.

What&apos;s the win here? Think of a unit test that might want to check shouldDraw() for some reason... I think its fine to have this still return true here.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:89
&gt; +        if (shouldDrawForced())

why this and not m_needsForcedRedraw?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:90
&gt; +            return ACTION_DRAW_FORCED;

i think you could just write this as if (shouldDraw()) return m_needsForcedRedraw ? FORCED : POSSIBLE;

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:215
&gt; +void CCSchedulerStateMachine::notifyDrawSuccess(bool success)

didDrawIfPossibleComplete(bool success)

shouldn&apos;t be called for forced case

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.h:100
&gt; +    // attempting the redraw.

Make comment more precise. E.g. indicates whether ACTION_DRAW_IF_POSSIBLE succeeded or not.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:545
&gt; +bool CCThreadProxy::scheduledActionDrawAndSwap(bool forcedDraw)

We should call this drawAndSwapInternal, and make the CCSchedulerClient have two methods that mirror the actions. You can then have the proxy have each implemenetation call into this internal function. Its convenient to say &quot;for every state machine action, there is a scheduledAction on the scheduler cilent.&quot;

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:559
&gt; +    bool drawFrame = m_layerTreeHostImpl-&gt;prepareToDraw(frame);

draw = prepareToDraw || forcedDraw
if(draw) drawLayers

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:564
&gt; +        if (m_readbackRequestOnImplThread) {

I think this should be unindented. The universe hangs if we dont satisfy this request --- if we forget to set forcedDraw or something, we might read back something stale, but at least we dont hang.

You might instead assert inside this branch that we did draw.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:571
&gt; +        m_layerTreeHostImpl-&gt;swapBuffers();

again, i think unindent and make a single line saing if(didDraw) swap

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:575
&gt;      if (m_finishAllRenderingCompletionEventOnImplThread) {

might want to assert that force is true inside this branch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585257</commentid>
    <comment_count>5</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-22 07:36:53 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 133149 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133149&amp;action=review
&gt; 
&gt; Looking really really good. Awesome turnaround time. Tweaks and ping me when you&apos;re ready for another round.
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:8
&gt; &gt;&gt; +        No new tests. (OOPS!)
&gt; &gt; 
&gt; &gt; You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
&gt; 
&gt; Yaaay stylebot! :)

That was on purpose I swear :)

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:278
&gt; &gt; +    // If we are unable to draw an animation on some layer, then we don&apos;t want to draw the frame unless forced to.
&gt; 
&gt; I&apos;m thinking this sentence is sort of better clobbered and a new one written, than tweaked. Maybe with a few setences. :) E.g. &quot;ideally, we want to X. however, blahblah may mean we have no other option. therefore zzzz.&quot;

k

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:-311
&gt; &gt; -                break;
&gt; 
&gt; do you want the prepare function to take a bool saying force, so we can skip the calculation cost if we can&apos;t draw?
&gt; 
&gt; Though, maybe its better to always do the full calculate to avoid scary &quot;the tree is half updated&quot; type situations.
&gt; 
&gt; Just make the call whichever way you feel is best, no need to discuss I think.

thought about both ways and chose complete frames for the reason you state above.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.h:41
&gt; &gt;      virtual bool hasMoreResourceUpdates() const = 0;
&gt; 
&gt; I&apos;d like to delete the canDraw() code and instead have that state fold into this new thing. That could be a followon patch for risk mitigation if you look at it and decide its a bit scary for now. If we go for deferring this, lets file a bug now.

FIXME

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.h:44
&gt; &gt; +    virtual bool scheduledActionDrawAndSwap(bool forcedDraw) = 0;
&gt; 
&gt; Mind making this 2 actual methods, one per action? Notes below on why I think this is better...

k

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:52
&gt; &gt; +bool CCSchedulerStateMachine::shouldDrawForced() const
&gt; 
&gt; not seeing why we need this method...  if you&apos;re trying to acccess this in the tests, then there is a special StateMachine subclass in the test.cpp that provides setters/accessors to internal states.

yeh, ill use member var directly.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:59
&gt; &gt; +    ASSERT(!m_needsForcedRedraw); // shouldDrawForced() should always be checked first.
&gt; 
&gt; What&apos;s the win here? Think of a unit test that might want to check shouldDraw() for some reason... I think its fine to have this still return true here.

k

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:89
&gt; &gt; +        if (shouldDrawForced())
&gt; 
&gt; why this and not m_needsForcedRedraw?

k

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:90
&gt; &gt; +            return ACTION_DRAW_FORCED;
&gt; 
&gt; i think you could just write this as if (shouldDraw()) return m_needsForcedRedraw ? FORCED : POSSIBLE;

k

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:215
&gt; &gt; +void CCSchedulerStateMachine::notifyDrawSuccess(bool success)
&gt; 
&gt; didDrawIfPossibleComplete(bool success)
&gt; 
&gt; shouldn&apos;t be called for forced case

k

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.h:100
&gt; &gt; +    // attempting the redraw.
&gt; 
&gt; Make comment more precise. E.g. indicates whether ACTION_DRAW_IF_POSSIBLE succeeded or not.

k

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:545
&gt; &gt; +bool CCThreadProxy::scheduledActionDrawAndSwap(bool forcedDraw)
&gt; 
&gt; We should call this drawAndSwapInternal, and make the CCSchedulerClient have two methods that mirror the actions. You can then have the proxy have each implemenetation call into this internal function. Its convenient to say &quot;for every state machine action, there is a scheduledAction on the scheduler cilent.&quot;

k

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:559
&gt; &gt; +    bool drawFrame = m_layerTreeHostImpl-&gt;prepareToDraw(frame);
&gt; 
&gt; draw = prepareToDraw || forcedDraw
&gt; if(draw) drawLayers

yay, i was going to do that but thought maybe it was less clear, but i like it :)

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:564
&gt; &gt; +        if (m_readbackRequestOnImplThread) {
&gt; 
&gt; I think this should be unindented. The universe hangs if we dont satisfy this request --- if we forget to set forcedDraw or something, we might read back something stale, but at least we dont hang.
&gt; 
&gt; You might instead assert inside this branch that we did draw.

k

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:571
&gt; &gt; +        m_layerTreeHostImpl-&gt;swapBuffers();
&gt; 
&gt; again, i think unindent and make a single line saing if(didDraw) swap

k

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:575
&gt; &gt;      if (m_finishAllRenderingCompletionEventOnImplThread) {
&gt; 
&gt; might want to assert that force is true inside this branch

assert that force is true or that draw is true?? assuming draw for now..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585261</commentid>
    <comment_count>6</comment_count>
      <attachid>133260</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-22 07:38:30 -0700</bug_when>
    <thetext>Created attachment 133260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585264</commentid>
    <comment_count>7</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-22 07:40:27 -0700</bug_when>
    <thetext>Addressed all the comments, but not ready for commit yet since we don&apos;t recover from dropping frames still. I&apos;m going to work on figuring that one out now.

Repro case: poster circle in a small browser window.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585596</commentid>
    <comment_count>8</comment_count>
      <attachid>133324</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-22 12:44:08 -0700</bug_when>
    <thetext>Created attachment 133324
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585597</commentid>
    <comment_count>9</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-22 12:44:44 -0700</bug_when>
    <thetext>Working patch! It requires us to swap buffers even though we did not draw though. Else everything just locks up and I am not sure why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585601</commentid>
    <comment_count>10</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-22 12:50:45 -0700</bug_when>
    <thetext>I think there might be a tiny bit of jitter when it drops a frame. That might be the bad swap? Or timing issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585603</commentid>
    <comment_count>11</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-03-22 12:54:27 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; I think there might be a tiny bit of jitter when it drops a frame. That might be the bad swap? Or timing issue.

Can you please try https://bugs.webkit.org/show_bug.cgi?id=80899 to see if that fixes your &quot;lock-up&quot; ?

As per our offline discussion, I don&apos;t expect it to fix that particular weirdness.  But... I do expect that patch to be necessary before this lands, since early exiting like this means the damage tracker updated its state without swap.  So yeah.  I&apos;ll work on a cleaner patch for that right now.


However, something else feels weird about this.  With this patch, are we actually skipping draw, but still swapping?  why would we want to do that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585605</commentid>
    <comment_count>12</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-03-22 12:57:20 -0700</bug_when>
    <thetext>
&gt; 
&gt; However, something else feels weird about this.  With this patch, are we actually skipping draw, but still swapping?  why would we want to do that?

sorry for the noise.  I see that is the pending question Dana is trying to figure out already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585650</commentid>
    <comment_count>13</comment_count>
      <attachid>133336</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-22 13:37:57 -0700</bug_when>
    <thetext>Created attachment 133336
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585651</commentid>
    <comment_count>14</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-22 13:39:41 -0700</bug_when>
    <thetext>Fixed the swapbuffers issue!

diff --git a/Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp b/Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp
index 1b148ca..8f7dd35 100644
--- a/Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp
+++ b/Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp
@@ -92,6 +92,12 @@ void CCScheduler::didSwapBuffersComplete()
     m_frameRateController-&gt;didFinishFrame();
 }
 
+void CCScheduler::didSkipFrame()
+{
+    TRACE_EVENT(&quot;CCScheduler::didSkipFrame&quot;, this, 0);
+    m_frameRateController-&gt;didFinishFrame();
+}
+
 void CCScheduler::didLoseContext()
 {
     TRACE_EVENT(&quot;CCScheduler::didLoseContext&quot;, this, 0);
diff --git a/Source/WebCore/platform/graphics/chromium/cc/CCScheduler.h b/Source/WebCore/platform/graphics/chromium/cc/CCScheduler.h
index c876e20..1c9c071 100644
--- a/Source/WebCore/platform/graphics/chromium/cc/CCScheduler.h
+++ b/Source/WebCore/platform/graphics/chromium/cc/CCScheduler.h
@@ -77,6 +77,7 @@ public:
 
     void setMaxFramesPending(int);
     void didSwapBuffersComplete();
+    void didSkipFrame();
 
     void didLoseContext();
     void didRecreateContext();
diff --git a/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp b/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp
index 7f237ad..43ab528 100644
--- a/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp
+++ b/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp
@@ -569,7 +569,10 @@ bool CCThreadProxy::scheduledActionDrawAndSwapInternal(bool forcedDraw)
         m_readbackRequestOnImplThread = 0;
     }
 
-    m_layerTreeHostImpl-&gt;swapBuffers();
+    if (drawFrame)
+        m_layerTreeHostImpl-&gt;swapBuffers();
+    else
+        m_schedulerOnImplThread-&gt;didSkipFrame();
 
     // Process any finish request
     if (m_finishAllRenderingCompletionEventOnImplThread) {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585678</commentid>
    <comment_count>15</comment_count>
      <attachid>133336</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-22 14:12:27 -0700</bug_when>
    <thetext>Comment on attachment 133336
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585696</commentid>
    <comment_count>16</comment_count>
      <attachid>133345</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-22 14:23:37 -0700</bug_when>
    <thetext>Created attachment 133345
Patch

Better fix to the swapbuffers problem. Just don&apos;t beginFrame() on the CCFrameRateController if we didn&apos;t draw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585767</commentid>
    <comment_count>17</comment_count>
      <attachid>133360</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-22 15:20:30 -0700</bug_when>
    <thetext>Created attachment 133360
Patch

Add a unit test to make sure we don&apos;t beginFrame on the CCFrameRateController when we don&apos;t draw the frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585790</commentid>
    <comment_count>18</comment_count>
      <attachid>133360</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-22 15:34:46 -0700</bug_when>
    <thetext>Comment on attachment 133360
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:173
&gt; +            m_client-&gt;scheduledActionDrawAndSwapForced();

What if we really can&apos;t draw a frame, like there&apos;s no root layer CCLTHI or something? Should this really begin a frame anyway?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.h:99
&gt; +    // Indicates whether ACTION_DRAW_IF_POSSIBLE draw to the screen or not.

s/draw/drew/

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:550
&gt;      if (!m_layerTreeHostImpl)
&gt; -        return;
&gt; +        return true;

Should this return false, since we&apos;re not swapping?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:577
&gt;      // Process any finish request
&gt;      if (m_finishAllRenderingCompletionEventOnImplThread) {
&gt; +        ASSERT(drawFrame);

Can we consider ourselves finished if we haven&apos;t drawn anything?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585827</commentid>
    <comment_count>19</comment_count>
      <attachid>133360</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-22 16:08:35 -0700</bug_when>
    <thetext>Comment on attachment 133360
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:173
&gt;&gt; +            m_client-&gt;scheduledActionDrawAndSwapForced();
&gt; 
&gt; What if we really can&apos;t draw a frame, like there&apos;s no root layer CCLTHI or something? Should this really begin a frame anyway?

It should never happen due to canDraw() like comment below.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.h:99
&gt;&gt; +    // Indicates whether ACTION_DRAW_IF_POSSIBLE draw to the screen or not.
&gt; 
&gt; s/draw/drew/

done.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:550
&gt;&gt; +        return true;
&gt; 
&gt; Should this return false, since we&apos;re not swapping?

Yes, done.

We should not ever get here like this, as canDraw() returns false if there is no LayerTreeHostImpl. I&apos;ll add an assert here as it&apos;ll be more clear than the assert for returning false on a forcedDraw

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:577
&gt;&gt; +        ASSERT(drawFrame);
&gt; 
&gt; Can we consider ourselves finished if we haven&apos;t drawn anything?

This is when falling back to software mode. I didn&apos;t know this either so explanation:

It goes like
WebViewImpl::setIsAcceleratedCompositingActive(false)
 CCLayerTreeHost::finishAllRendering()
  CCThreadProxy::finishAllRendering()
  wait...
...meanwhile in impl town...
CCThreadProxy::finishAllRenderingOnImplThread()
 CCScheduler::setNeedsForcedRedraw()

So there will be a forced redraw when this happens, since they have higher priority than non-forced redraws. Thus I think ASSERT is fair here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585830</commentid>
    <comment_count>20</comment_count>
      <attachid>133378</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-22 16:09:29 -0700</bug_when>
    <thetext>Created attachment 133378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585831</commentid>
    <comment_count>21</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-22 16:10:35 -0700</bug_when>
    <thetext>For the sake of super clarity:

CCThreadProxy::finishAllRenderingOnImplThread() &lt;- sets m_finishAllRenderingCompletionEventOnImplThread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585853</commentid>
    <comment_count>22</comment_count>
      <attachid>133378</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-22 16:28:33 -0700</bug_when>
    <thetext>Comment on attachment 133378
Patch

Thanks for all of the explanations.  That seems reasonable that when we&apos;re forced to draw, we&apos;ve already checked that we can draw.  This last patch looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585968</commentid>
    <comment_count>23</comment_count>
      <attachid>133378</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-22 18:51:50 -0700</bug_when>
    <thetext>Comment on attachment 133378
Patch

Clearing flags on attachment: 133378

Committed r111805: &lt;http://trac.webkit.org/changeset/111805&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585969</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-22 18:51:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133149</attachid>
            <date>2012-03-21 17:19:38 -0700</date>
            <delta_ts>2012-03-22 07:38:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81716-20120321201937.patch</filename>
            <type>text/plain</type>
            <size>38390</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ1YTBiZDFhN2IxYzAx
Y2I0MGRlYmU3OWI2NDVlODkyMTk4Mjk5YS4uNjY2MTA4YjhiYzQ4NDEwYTE5ZjkwMzQwZjE0ZWYy
YmMzNTcwZDI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM3IEBACiAyMDEyLTAzLTIxICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQ2hh
bmdlIGNhbkRyYXcgQ0NTTSBzdGF0ZSB0byBhIHByZXBhcmVUb0RyYXcgYWN0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTcxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9P
UFMhKQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpj
YWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
SW1wbDo6cHJlcGFyZVRvRHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1w
bCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rp
b25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
ci5oOgorICAgICAgICAoQ0NTY2hlZHVsZXJDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzaG91bGREcmF3Rm9yY2VkKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OnNob3VsZERyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6Om5leHRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpub3RpZnlEcmF3U3VjY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaDoKKyAgICAgICAgKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVk
dWxlZEFjdGlvbkRyYXdBbmRTd2FwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToKKworMjAx
Mi0wMy0yMSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKwogICAgICAgICBb
Y2hyb21pdW1dIEVhcmx5IG91dCBpbiBhIG5ldyBwcmVwYXJlVG9EcmF3KCkgc3RlcCBpZiBjaGVj
a2VyYm9hcmRpbmcgYW4gYWNjZWxlcmF0ZWQgYW5pbWF0aW9uIGluIG9yZGVyIHRvIHNraXAgdGhl
IGZyYW1lCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MTQzNwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDNiMWZlMGQ2YTNjYTI3ODNmOTQz
NGVjMDFhODljOWNmNjA0OGE2NWQuLjIxMDM2OTY4YmI4ZjQwNDhhYmIwYTNiNTFjN2ZlMjEyNmUy
ZmYyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzIgQEAKIDIwMTIt
MDMtMjEgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW2No
cm9taXVtXSBDaGFuZ2UgY2FuRHJhdyBDQ1NNIHN0YXRlIHRvIGEgcHJlcGFyZVRvRHJhdyBhY3Rp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNzE2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0
cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVT
VF9GKToKKyAgICAgICAgKiB0ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0
ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VDQ1Nj
aGVkdWxlckNsaWVudDo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXApOgorICAgICAgICAoV2Vi
S2l0VGVzdHM6OlNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0RyYXdJbnNpZGVEcmF3OjpTY2hl
ZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdyk6CisgICAgICAgIChXZWJLaXRU
ZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXc6OnNjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpTY2hlZHVsZXJDbGll
bnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdzo6cmVzZXROdW1EcmF3cyk6CisgICAgICAgIChX
ZWJLaXRUZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXc6OnNl
dERyYXdTdWNjZXNzKToKKyAgICAgICAgKFNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0RyYXdJ
bnNpZGVEcmF3KToKKyAgICAgICAgKFdlYktpdFRlc3RzKToKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjpURVNUKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVl
ZHNDb21taXRJbnNpZGVEcmF3OjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNDb21taXRJbnNp
ZGVEcmF3KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVl
ZHNDb21taXRJbnNpZGVEcmF3OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCk6CisgICAgICAg
IChXZWJLaXRUZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzQ29tbWl0SW5zaWRlRHJh
dzo6cmVzZXROdW1EcmF3cyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6U2NoZWR1bGVyQ2xpZW50
VGhhdFNldE5lZWRzQ29tbWl0SW5zaWRlRHJhdzo6c2V0RHJhd1N1Y2Nlc3MpOgorICAgICAgICAo
U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzQ29tbWl0SW5zaWRlRHJhdyk6CisKKzIwMTItMDMt
MjEgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW2Nocm9t
aXVtXSBFYXJseSBvdXQgaW4gYSBuZXcgcHJlcGFyZVRvRHJhdygpIHN0ZXAgaWYgY2hlY2tlcmJv
YXJkaW5nIGFuIGFjY2VsZXJhdGVkIGFuaW1hdGlvbiBpbiBvcmRlciB0byBza2lwIHRoZSBmcmFt
ZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0MzcK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCA0NDNhMWZmYWE3
N2JhMGVlNTIwMjlkZjBlM2FiMTQ5NjdmNGM1MmRiLi5lZWRkOTYwMzk2MGI1NDY3NmExZGNmM2Qy
NzBiOTlkZjBlMDE5OTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cApAQCAtMjc1LDcgKzI3NSw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRl
UmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcywgQ0NMYXllCiAgICAgLy8gQWRk
IHF1YWRzIHRvIHRoZSBSZW5kZXIgcGFzc2VzIGluIEZyb250VG9CYWNrIG9yZGVyIHRvIGFsbG93
IGZvciB0ZXN0aW5nIG9jY2x1c2lvbiBhbmQgcGVyZm9ybWluZyBjdWxsaW5nIGR1cmluZyB0aGUg
dHJlZSB3YWxrLgogICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPENDTGF5ZXJJbXBsLCBWZWN0
b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJmYWNlLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25z
OjpGcm9udFRvQmFjaz4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKIAotICAgIC8vIElmIHdlIGFyZSB1
bmFibGUgdG8gZHJhdyBhbiBhbmltYXRpb24gb24gc29tZSBsYXllciwgdGhlbiB3ZSBhYm9ydCB0
aGUgZW50aXJlIGZyYW1lLgorICAgIC8vIElmIHdlIGFyZSB1bmFibGUgdG8gZHJhdyBhbiBhbmlt
YXRpb24gb24gc29tZSBsYXllciwgdGhlbiB3ZSBkb24ndCB3YW50IHRvIGRyYXcgdGhlIGZyYW1l
IHVubGVzcyBmb3JjZWQgdG8uCiAgICAgYm9vbCBkcmF3RnJhbWUgPSB0cnVlOwogCiAgICAgQ0NM
YXllckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjplbmQoJnJlbmRlclN1
cmZhY2VMYXllckxpc3QpOwpAQCAtMzA2LDEwICszMDYsOCBAQCBib29sIENDTGF5ZXJUcmVlSG9z
dEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNzZXMsIEND
TGF5ZQogICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0ZvckxheWVyKCppdCwgJm9jY2x1c2lvblRy
YWNrZXIsIHVzZWRDaGVja2VyYm9hcmQpOwogICAgICAgICBpZiAodXNlZENoZWNrZXJib2FyZCkg
ewogICAgICAgICAgICAgYm9vbCBsYXllckhhc0FuaW1hdGluZ1RyYW5zZm9ybSA9IGl0LT5zY3Jl
ZW5TcGFjZVRyYW5zZm9ybUlzQW5pbWF0aW5nKCkgfHwgaXQtPmRyYXdUcmFuc2Zvcm1Jc0FuaW1h
dGluZygpOwotICAgICAgICAgICAgaWYgKGxheWVySGFzQW5pbWF0aW5nVHJhbnNmb3JtKSB7Cisg
ICAgICAgICAgICBpZiAobGF5ZXJIYXNBbmltYXRpbmdUcmFuc2Zvcm0pCiAgICAgICAgICAgICAg
ICAgZHJhd0ZyYW1lID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAogICAgICAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJl
aGluZExheWVyKCppdCk7CkBAIC0zNjcsMTEgKzM2NSw4IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0
SW1wbDo6cHJlcGFyZVRvRHJhdyhGcmFtZURhdGEmIGZyYW1lKQogICAgIGlmICghcm9vdExheWVy
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghY2FsY3VsYXRlUmVuZGVyUGFz
c2VzKGZyYW1lLnJlbmRlclBhc3NlcywgZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlzdCkpIHsK
LSAgICAgICAgZnJhbWUucmVuZGVyUGFzc2VzLmNsZWFyKCk7Ci0gICAgICAgIGZyYW1lLnJlbmRl
clN1cmZhY2VMYXllckxpc3QuY2xlYXIoKTsKKyAgICBpZiAoIWNhbGN1bGF0ZVJlbmRlclBhc3Nl
cyhmcmFtZS5yZW5kZXJQYXNzZXMsIGZyYW1lLnJlbmRlclN1cmZhY2VMYXllckxpc3QpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgLy8gSWYgd2UgcmV0dXJuIHRydWUsIHRo
ZW4gd2UgZXhwZWN0IGRyYXdMYXllcnMoKSB0byBiZSBjYWxsZWQgYmVmb3JlIHRoaXMgZnVuY3Rp
b24gaXMgY2FsbGVkIGFnYWluLgogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oCmluZGV4IGUwYzZlNzNhMzM0MjBkZDQ3ZDA5NTQyODYyY2I5YTQ4YTBh
ZDFjYjAuLmMzZTlkMjQ5YjNlOGU3ZDAxMDYzODNjZTJlYjY3ODAyZDQ2N2ZkYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTg4LDYgKzg4LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNvbW1pdCgpOwogICAgIHZpcnR1YWwgdm9pZCBjb21taXRD
b21wbGV0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1l
LCBkb3VibGUgd2FsbENsb2NrVGltZSk7CisgICAgLy8gUmV0dXJucyBmYWxzZSBpZiBwcm9ibGVt
cyBvY2N1cmVkIHByZXBhcmluZyB0aGUgZnJhbWUsIGFuZCB3ZSBzaG91bGQgYXZvaWQgZHJhd2lu
ZyB0aGUgZnJhbWUgaWYgcG9zc2libGUuCiAgICAgdmlydHVhbCBib29sIHByZXBhcmVUb0RyYXco
RnJhbWVEYXRhJik7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnMoY29uc3QgRnJhbWVEYXRh
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAppbmRleCA2MWJkOTMxM2Y1NGJjZTJiMGJkZGVh
ODU0NjQ3OWEzMGEyZTUyYTY0Li4wZmU5NjAwNzRkM2I3OGMxOTUwNTdiY2RlNGZhNGRiODZkNmU0
MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCkBAIC0xNjIsMTAgKzE2MiwxNSBAQCB2b2lk
IENDU2NoZWR1bGVyOjpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpCiAgICAgICAgIGNhc2UgQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQ6CiAgICAgICAgICAgICBtX2NsaWVu
dC0+c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVc6Ci0gICAgICAgICAgICBt
X2NsaWVudC0+c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoKTsKKyAgICAgICAgY2FzZSBDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEU6CisgICAgICAgIGNh
c2UgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0ZPUkNFRDogeworICAgICAg
ICAgICAgYm9vbCBmb3JjZWREcmF3ID0gYWN0aW9uID09IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fRFJBV19GT1JDRUQ7CisgICAgICAgICAgICBib29sIGRyYXdTdWNjZXNzID0gbV9j
bGllbnQtPnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKGZvcmNlZERyYXcpOworICAgICAgICAg
ICAgQVNTRVJUKGRyYXdTdWNjZXNzIHx8ICghZHJhd1N1Y2VzcyAmJiAhZm9yY2VkRHJhdykpOwor
ICAgICAgICAgICAgbV9zdGF0ZU1hY2hpbmUubm90aWZ5RHJhd1N1Y2Nlc3MoZHJhd1N1Y2Nlc3Mp
OwogICAgICAgICAgICAgbV9mcmFtZVJhdGVDb250cm9sbGVyLT5kaWRCZWdpbkZyYW1lKCk7CiAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fQ09OVEVYVF9SRUNSRUFUSU9OOgogICAgICAgICAgICAg
bV9jbGllbnQtPnNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24oKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKaW5kZXggOGVmNWRjZjcyYzI3MGEzYTZj
ODE0N2U0MDcyMDU5MmU4NzFkNjZlNC4uYjUwNzk2Nzc0NTI0M2UwNzhmMDIxZDJmN2NkNzJlNWE1
MGNkODM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0ID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoYm9vbCBmb3JjZWREcmF3KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbigpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAppbmRleCBmMzdmMGI0
MTdiM2VlZDU3ZjIwY2NjZTMxNWQ2OTAzZWQ5YTdhOGQ2Li42NDU0ZWQxNWQzODRlYjIzY2U5NmEx
N2Y2ODAwNmEyZmUwMTBhODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmUuY3BwCkBAIC00OSwxMCArNDksMTQgQEAgYm9vbCBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6aGFzRHJhd25UaGlzRnJhbWUoKSBjb25zdAogICAgIHJldHVybiBtX2N1cnJlbnRGcmFt
ZU51bWJlciA9PSBtX2xhc3RGcmFtZU51bWJlcldoZXJlRHJhd1dhc0NhbGxlZDsKIH0KIAorYm9v
bCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2hvdWxkRHJhd0ZvcmNlZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fbmVlZHNGb3JjZWRSZWRyYXc7Cit9CisKIGJvb2wgQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OnNob3VsZERyYXcoKSBjb25zdAogewotICAgIGlmIChtX25lZWRzRm9yY2VkUmVk
cmF3KQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBBU1NFUlQoIW1fbmVlZHNGb3JjZWRSZWRy
YXcpOyAvLyBzaG91bGREcmF3Rm9yY2VkKCkgc2hvdWxkIGFsd2F5cyBiZSBjaGVja2VkIGZpcnN0
LgogCiAgICAgaWYgKCFtX25lZWRzUmVkcmF3KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03
NSwyNyArNzksMzMgQEAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbigpIGNvbnN0CiAgICAgc3dpdGNoIChtX2NvbW1pdFN0
YXRlKSB7CiAgICAgY2FzZSBDT01NSVRfU1RBVEVfSURMRToKICAgICAgICAgaWYgKG1fY29udGV4
dFN0YXRlICE9IENPTlRFWFRfQUNUSVZFICYmIG1fbmVlZHNGb3JjZWRSZWRyYXcpCi0gICAgICAg
ICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CisgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVdf
Rk9SQ0VEOwogICAgICAgICBpZiAobV9jb250ZXh0U3RhdGUgIT0gQ09OVEVYVF9BQ1RJVkUgJiYg
bV9uZWVkc0ZvcmNlZENvbW1pdCkKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fQkVHSU5fRlJB
TUU7CiAgICAgICAgIGlmIChtX2NvbnRleHRTdGF0ZSA9PSBDT05URVhUX0xPU1QpCiAgICAgICAg
ICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTjsKICAgICAgICAgaWYg
KG1fY29udGV4dFN0YXRlID09IENPTlRFWFRfUkVDUkVBVElORykKICAgICAgICAgICAgIHJldHVy
biBBQ1RJT05fTk9ORTsKKyAgICAgICAgaWYgKHNob3VsZERyYXdGb3JjZWQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBBQ1RJT05fRFJBV19GT1JDRUQ7CiAgICAgICAgIGlmIChzaG91bGREcmF3KCkp
Ci0gICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CisgICAgICAgICAgICByZXR1cm4gQUNU
SU9OX0RSQVdfSUZfUE9TU0lCTEU7CiAgICAgICAgIGlmIChtX25lZWRzQ29tbWl0ICYmIChtX3Zp
c2libGUgfHwgbV9uZWVkc0ZvcmNlZENvbW1pdCkpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9O
X0JFR0lOX0ZSQU1FOwogICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAKICAgICBjYXNlIENP
TU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUzoKKyAgICAgICAgaWYgKHNob3VsZERyYXdGb3Jj
ZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBV19GT1JDRUQ7CiAgICAgICAgIGlm
IChzaG91bGREcmF3KCkpCi0gICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CisgICAgICAg
ICAgICByZXR1cm4gQUNUSU9OX0RSQVdfSUZfUE9TU0lCTEU7CiAgICAgICAgIHJldHVybiBBQ1RJ
T05fTk9ORTsKIAogICAgIGNhc2UgQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzoKKyAg
ICAgICAgaWYgKHNob3VsZERyYXdGb3JjZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBBQ1RJT05f
RFJBV19GT1JDRUQ7CiAgICAgICAgIGlmIChzaG91bGREcmF3KCkpCi0gICAgICAgICAgICByZXR1
cm4gQUNUSU9OX0RSQVc7CisgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVdfSUZfUE9TU0lC
TEU7CiAgICAgICAgIGlmICghbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZykKICAgICAgICAg
ICAgIHJldHVybiBBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTOwogICAgICAgICBy
ZXR1cm4gQUNUSU9OX05PTkU7CkBAIC0xMDQsOCArMTE0LDEwIEBAIENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25z
dAogICAgICAgICByZXR1cm4gQUNUSU9OX0NPTU1JVDsKIAogICAgIGNhc2UgQ09NTUlUX1NUQVRF
X1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVc6CisgICAgICAgIGlmIChzaG91bGREcmF3Rm9yY2VkKCkp
CisgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVdfRk9SQ0VEOwogICAgICAgICBpZiAoc2hv
dWxkRHJhdygpIHx8IG1fY29udGV4dFN0YXRlID09IENPTlRFWFRfTE9TVCkKLSAgICAgICAgICAg
IHJldHVybiBBQ1RJT05fRFJBVzsKKyAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBV19JRl9Q
T1NTSUJMRTsKICAgICAgICAgLy8gQ09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcg
d2FudHMgdG8gZW5mb3JjZSBhIGRyYXcuIElmIG1fY2FuRHJhdyBpcyBmYWxzZSwKICAgICAgICAg
Ly8gcHJvY2VlZCB0byB0aGUgbmV4dCBzdGVwIChzaW1pbGFyIGFzIGluIENPTU1JVF9TVEFURV9J
RExFKS4KICAgICAgICAgaWYgKCFtX2NhbkRyYXcgJiYgbV9uZWVkc0NvbW1pdCAmJiAobV92aXNp
YmxlIHx8IG1fbmVlZHNGb3JjZWRDb21taXQpKQpAQCAtMTQyLDcgKzE1NCw4IEBAIHZvaWQgQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKEFjdGlvbiBhY3Rpb24pCiAgICAgICAg
IG1fbmVlZHNSZWRyYXcgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAKLSAgICBjYXNlIEFDVElP
Tl9EUkFXOgorICAgIGNhc2UgQUNUSU9OX0RSQVdfSUZfUE9TU0lCTEU6CisgICAgY2FzZSBBQ1RJ
T05fRFJBV19GT1JDRUQ6CiAgICAgICAgIG1fbmVlZHNSZWRyYXcgPSBmYWxzZTsKICAgICAgICAg
bV9uZWVkc0ZvcmNlZFJlZHJhdyA9IGZhbHNlOwogICAgICAgICBpZiAobV9pbnNpZGVWU3luYykK
QEAgLTE5OSw2ICsyMTIsMTIgQEAgdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0TmVl
ZHNGb3JjZWRSZWRyYXcoKQogICAgIG1fbmVlZHNGb3JjZWRSZWRyYXcgPSB0cnVlOwogfQogCit2
b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpub3RpZnlEcmF3U3VjY2Vzcyhib29sIHN1Y2Nl
c3MpCit7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICBtX25lZWRzUmVkcmF3ID0gdHJ1ZTsK
K30KKwogdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0TmVlZHNDb21taXQoKQogewog
ICAgIG1fbmVlZHNDb21taXQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lLmgKaW5kZXggNjFiZWMzOTRlY2U4MDk1M2NhZDlkNWJhOGJmMzA2Njk1YzBlMWY4
MS4uZGY2OThhZjM2YzViZjdjMjA0ZTI2YzcyYTA0M2QxODhkZjNhY2ExNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCkBAIC02OSw3ICs2OSw4IEBAIHB1Ymxp
YzoKICAgICAgICAgQUNUSU9OX0JFR0lOX0ZSQU1FLAogICAgICAgICBBQ1RJT05fQkVHSU5fVVBE
QVRFX01PUkVfUkVTT1VSQ0VTLAogICAgICAgICBBQ1RJT05fQ09NTUlULAotICAgICAgICBBQ1RJ
T05fRFJBVywKKyAgICAgICAgQUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsCisgICAgICAgIEFDVElP
Tl9EUkFXX0ZPUkNFRCwKICAgICAgICAgQUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTgog
ICAgIH07CiAgICAgQWN0aW9uIG5leHRBY3Rpb24oKSBjb25zdDsKQEAgLTk1LDYgKzk2LDEwIEBA
IHB1YmxpYzoKICAgICAvLyB3ZSBhcmUgbm90IHZpc2libGUuCiAgICAgdm9pZCBzZXROZWVkc0Zv
cmNlZFJlZHJhdygpOwogCisgICAgLy8gSW5kYXRlcyB3aGV0aGVyIGEgcmVkcmF3IGZpbmlzaGVk
IHN1Y2Nlc3NmdWxseSwgYW5kIGlzIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlcgorICAgIC8vIGF0
dGVtcHRpbmcgdGhlIHJlZHJhdy4KKyAgICB2b2lkIG5vdGlmeURyYXdTdWNjZXNzKGJvb2wgc3Vj
Y2Vzcyk7CisKICAgICAvLyBJbmRpY2F0ZXMgdGhhdCBhIG5ldyBjb21taXQgZmxvdyBuZWVkcyB0
byBiZSBwZXJmb3JtZWQsIGVpdGhlciB0byBwdWxsCiAgICAgLy8gdXBkYXRlcyBmcm9tIHRoZSBt
YWluIHRocmVhZCB0byB0aGUgaW1wbCwgb3IgdG8gcHVzaCBkZWx0YXMgZnJvbSB0aGUgaW1wbAog
ICAgIC8vIHRocmVhZCB0byBtYWluLgpAQCAtMTIyLDYgKzEyNyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZFJlY3JlYXRlQ29udGV4dCgpOwogCiBwcm90ZWN0ZWQ6CisgICAgYm9vbCBzaG91bGRE
cmF3Rm9yY2VkKCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGREcmF3KCkgY29uc3Q7CiAgICAgYm9v
bCBoYXNEcmF3blRoaXNGcmFtZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
CmluZGV4IGU0MTczYThhZDYxMTNmN2VkYzRiOTAyYWIwYTdmODUwODYzYTE0NWYuLjZiYWJlOGVm
NzcwYWZjNTA5YmZjZjc3ZDA3MTk5ZmVmNGJjMzg0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwCkBAIC01NDIsMTIgKzU0MiwxMiBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxl
ZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24oKQogICAgIG1fbWFpblRocmVhZFByb3h5LT5w
b3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmJlZ2luQ29u
dGV4dFJlY3JlYXRpb24pKTsKIH0KIAotdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rp
b25EcmF3QW5kU3dhcCgpCitib29sIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdB
bmRTd2FwKGJvb2wgZm9yY2VkRHJhdykKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94
eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJ
bXBsVGhyZWFkKCkpOwogICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEZJWE1FOiBjb21wdXRlIHRoZSBm
cmFtZSBkaXNwbGF5IHRpbWUgbW9yZSBpbnRlbGxpZ2VudGx5CiAgICAgZG91YmxlIG1vbm90b25p
Y1RpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKQEAgLTU1NiwxOSArNTU2LDIx
IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoKQogICAg
IG1faW5wdXRIYW5kbGVyT25JbXBsVGhyZWFkLT5hbmltYXRlKG1vbm90b25pY1RpbWUpOwogICAg
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmFuaW1hdGUobW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGlt
ZSk7CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOwotICAgIG1fbGF5
ZXJUcmVlSG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpOwotICAgIG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwotCi0gICAgLy8gQ2hlY2sgZm9yIGEgcGVuZGluZyBj
b21wb3NpdGVBbmRSZWFkYmFjay4KLSAgICBpZiAobV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJl
YWQpIHsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+cmVhZGJhY2sobV9yZWFkYmFja1Jl
cXVlc3RPbkltcGxUaHJlYWQtPnBpeGVscywgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQt
PnJlY3QpOwotICAgICAgICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+c3VjY2VzcyA9
ICFtX2xheWVyVHJlZUhvc3RJbXBsLT5pc0NvbnRleHRMb3N0KCk7Ci0gICAgICAgIG1fcmVhZGJh
Y2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5jb21wbGV0aW9uLnNpZ25hbCgpOwotICAgICAgICBtX3Jl
YWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZCA9IDA7CisgICAgYm9vbCBkcmF3RnJhbWUgPSBtX2xh
eWVyVHJlZUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKTsKKyAgICBpZiAoZHJhd0ZyYW1l
IHx8IGZvcmNlZERyYXcpIHsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVy
cyhmcmFtZSk7CisKKyAgICAgICAgLy8gQ2hlY2sgZm9yIGEgcGVuZGluZyBjb21wb3NpdGVBbmRS
ZWFkYmFjay4KKyAgICAgICAgaWYgKG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkKSB7Cisg
ICAgICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5yZWFkYmFjayhtX3JlYWRiYWNrUmVxdWVz
dE9uSW1wbFRocmVhZC0+cGl4ZWxzLCBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+cmVj
dCk7CisgICAgICAgICAgICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+c3VjY2VzcyA9
ICFtX2xheWVyVHJlZUhvc3RJbXBsLT5pc0NvbnRleHRMb3N0KCk7CisgICAgICAgICAgICBtX3Jl
YWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+Y29tcGxldGlvbi5zaWduYWwoKTsKKyAgICAgICAg
ICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkID0gMDsKKyAgICAgICAgfQorCisgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnN3YXBCdWZmZXJzKCk7CiAgICAgfQogCi0gICAgbV9s
YXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKLQogICAgIC8vIFByb2Nlc3MgYW55IGZp
bmlzaCByZXF1ZXN0CiAgICAgaWYgKG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlvbkV2ZW50
T25JbXBsVGhyZWFkKSB7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmZpbmlzaEFsbFJl
bmRlcmluZygpOwpAQCAtNTgxLDYgKzU4Myw4IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXAoKQogICAgICAgICBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0
ZWRGcmFtZU9uSW1wbFRocmVhZCA9IGZhbHNlOwogICAgICAgICBtX21haW5UaHJlYWRQcm94eS0+
cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpkaWRDb21t
aXRBbmREcmF3RnJhbWUpKTsKICAgICB9CisKKyAgICByZXR1cm4gZHJhd0ZyYW1lIHx8IGZvcmNl
ZERyYXc7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCBlN2JhZGE2NDA2ZmFkYTM1OWEzYTgxOWM5ZGYz
ZjFmNWQ4ZjEwZWJkLi43ZTI2MTcwMWZiNWY3OWUxYzQ4MmRkODg2ZGQxNjZlNWQ0NWMxMDQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgY2FuRHJhdygpOwogICAgIHZpcnR1YWwgYm9vbCBoYXNNb3JlUmVzb3VyY2VV
cGRhdGVzKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2luRnJh
bWUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoYm9vbCBmb3JjZWREcmF3
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygp
OwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25Db21taXQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcAppbmRleCA0NGRjZDE0MjQyZjUzMTBmYWNmZmZmNzRhNzhhYzdjMmUzY2VhOGFiLi41Mzcx
Y2E4M2FiYzQ1NTMzY2YwMTg0NGNmOTdkZDJjODRjNGI3OTFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApA
QCAtNTQyLDEzICs1NDIsMTQgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwcmVw
YXJlVG9EcmF3RmFpbHNXaGVuQW5pbWF0aW9uVXNlc0NoZWNrZXJib2FyZCkKICAgICBFWFBFQ1Rf
VFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CiAgICAgbV9ob3N0SW1wbC0+
ZHJhd0xheWVycyhmcmFtZSk7CiAKLSAgICAvLyBXaGVuIGEgdGV4dHVyZSBpcyBtaXNzaW5nIGFu
ZCB3ZSdyZSBhbmltYXRpbmcsIHdlIGRvbid0IGRyYXcgYW55dGhpbmcuCisgICAgLy8gV2hlbiBh
IHRleHR1cmUgaXMgbWlzc2luZyBhbmQgd2UncmUgYW5pbWF0aW5nLCB3ZSBkb24ndCB3YW50IHRv
IGRyYXcgYW55dGhpbmcuCiAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKERpZERyYXdDaGVj
a0xheWVyOjpjcmVhdGUoMCkpOwogICAgIHJvb3QgPSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tM
YXllcio+KG1faG9zdEltcGwtPnJvb3RMYXllcigpKTsKICAgICByb290LT5hZGRDaGlsZChNaXNz
aW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyOjpjcmVhdGUoMSwgdHJ1ZSwgZmFsc2UsIHRydWUpKTsK
ICAgICBsYXllciA9IHN0YXRpY19jYXN0PE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXIqPihy
b290LT5jaGlsZHJlbigpWzBdLmdldCgpKTsKIAogICAgIEVYUEVDVF9GQUxTRShtX2hvc3RJbXBs
LT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFt
ZSk7CiAKICAgICAvLyBXaGVuIHRoZSBsYXllciBza2lwcyBkcmF3IGFuZCB3ZSdyZSBhbmltYXRp
bmcsIHdlIHN0aWxsIGRyYXcgdGhlIGZyYW1lLgogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXll
cihEaWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRlKDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcApp
bmRleCBlYTZiOTI3ZTUzOTQ1MGYxZDBiYWNiYTQxNzE5MjNlNzdjYWRiZmNjLi45ODNiNTViM2Nm
NWI0YjBhZGMxNmUzMzVkN2RjNzFlYTY4ZDkwZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3Bw
CkBAIC0xMTksNiArMTE5LDczIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBU
ZXN0U2V0Rm9yY2VkUmVkcmF3RG9lc05vdFNldHNOb3JtYWxSZWRyYXcpCiAgICAgRVhQRUNUX1RS
VUUoc3RhdGUudnN5bmNDYWxsYmFja05lZWRlZCgpKTsKIH0KIAorVEVTVChDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QsIFRlc3RGYWlsZWREcmF3RG9lc05vdFJlbW92ZU5lZWRzUmVkcmF3KQor
eworICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNldFZpc2li
bGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoKTsKKyAgICBFWFBFQ1RfVFJVRShz
dGF0ZS5yZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2FsbGJh
Y2tOZWVkZWQoKSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5l
eHRBY3Rpb24oKSk7CisKKyAgICAvLyBXZSdyZSBkcmF3aW5nIG5vdy4KKyAgICBzdGF0ZS51cGRh
dGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLnJlZHJhd1BlbmRpbmco
KSk7CisKKyAgICAvLyBGYWlsaW5nIHRoZSBkcmF3IG1ha2VzIHVzIHJlcXVpcmUgYSBkcmF3IGFn
YWluLCBidXQgbm90IHRoaXMgZnJhbWUKKyAgICBzdGF0ZS5ub3RpZnlEcmF3U3VjY2VzcyhmYWxz
ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwg
c3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS5yZWRyYXdQZW5kaW5n
KCkpOworCisgICAgLy8gTW92ZSB0byBhbm90aGVyIGZyYW1lLiBUaGlzIHNob3VsZCBub3cgZHJh
dy4KKyAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUudnN5
bmNDYWxsYmFja05lZWRlZCgpKTsKKyAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CisKKyAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxF
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSk7CisgICAgc3RhdGUubm90aWZ5
RHJhd1N1Y2Nlc3ModHJ1ZSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLnZzeW5jQ2FsbGJhY2tO
ZWVkZWQoKSk7Cit9CisKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0U2V0
TmVlZHNSZWRyYXdEdXJpbmdGYWlsZWREcmF3RG9lc05vdFJlbW92ZU5lZWRzUmVkcmF3KQorewor
ICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNldFZpc2libGUo
dHJ1ZSk7CisgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0
ZS5yZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2FsbGJhY2tO
ZWVkZWQoKSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRB
Y3Rpb24oKSk7CisKKyAgICAvLyBXZSdyZSBkcmF3aW5nIG5vdy4KKyAgICBzdGF0ZS51cGRhdGVT
dGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7
CisKKyAgICAvLyBXaGlsZSBzdGlsbCBpbiB0aGUgc2FtZSB2c3luYyBjYWxsYmFjaywgc2V0IG5l
ZWRzIHJlZHJhdyBhZ2Fpbi4KKyAgICAvLyBUaGlzIHNob3VsZCBub3QgcmVkcmF3LgorICAgIHN0
YXRlLnNldE5lZWRzUmVkcmF3KCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIEZhaWxpbmcg
dGhlIGRyYXcgbWFrZXMgdXMgcmVxdWlyZSBhIGRyYXcgYWdhaW4sIGJ1dCBub3QgdGhpcyBmcmFt
ZQorICAgIHN0YXRlLm5vdGlmeURyYXdTdWNjZXNzKGZhbHNlKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwor
ICAgIEVYUEVDVF9UUlVFKHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7CisKKyAgICAvLyBNb3ZlIHRv
IGFub3RoZXIgZnJhbWUuIFRoaXMgc2hvdWxkIG5vdyBkcmF3LgorICAgIHN0YXRlLmRpZExlYXZl
VlN5bmMoKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOwor
ICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKKworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7
CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9E
UkFXX0lGX1BPU1NJQkxFKTsKKyAgICBzdGF0ZS5ub3RpZnlEcmF3U3VjY2Vzcyh0cnVlKTsKKyAg
ICBFWFBFQ1RfRkFMU0Uoc3RhdGUudnN5bmNDYWxsYmFja05lZWRlZCgpKTsKK30KKwogVEVTVChD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3REb2VzdERyYXdUd2ljZUluU2FtZUZyYW1l
KQogewogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lIHN0YXRlOwpAQCAtMTI2LDggKzE5Myw4
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RG9lc3REcmF3VHdpY2VJ
blNhbWVGcmFtZSkKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdygpOwogICAgIEVYUEVDVF9UUlVF
KHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7CiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygp
OwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0
YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAg
IHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19J
Rl9QT1NTSUJMRSk7CiAKICAgICAvLyBXaGlsZSBzdGlsbCBpbiB0aGUgc2FtZSB2c3luYyBjYWxs
YmFjaywgc2V0IG5lZWRzIHJlZHJhdyBhZ2Fpbi4KICAgICAvLyBUaGlzIHNob3VsZCBub3QgcmVk
cmF3LgpAQCAtMTM1LDEyICsyMDIsMTQgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRl
c3QsIFRlc3REb2VzdERyYXdUd2ljZUluU2FtZUZyYW1lKQogICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAg
ICAvLyBNb3ZlIHRvIGFub3RoZXIgZnJhbWUuIFRoaXMgc2hvdWxkIG5vdyBkcmF3LgorICAgIHN0
YXRlLm5vdGlmeURyYXdTdWNjZXNzKHRydWUpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsK
ICAgICBFWFBFQ1RfVFJVRShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOwogICAgIHN0YXRl
LmRpZEVudGVyVlN5bmMoKTsKIAotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgc3RhdGUudXBkYXRlU3Rh
dGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsKKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSk7CisgICAgc3RhdGUubm90aWZ5RHJhd1N1Y2Nl
c3ModHJ1ZSk7CiAgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7
CiB9CiAKQEAgLTE2MSwxMSArMjMwLDExIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LCBUZXN0TmV4dEFjdGlvbkRyYXdzT25WU3luYykKIAogICAgICAgICAgICAgLy8gQ2FzZSAx
OiBuZWVkc0NvbW1pdD1mYWxzZQogICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoZmFs
c2UpOwotICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRB
Y3Rpb24oKSk7CiAKICAgICAgICAgICAgIC8vIENhc2UgMjogbmVlZHNDb21taXQ9dHJ1ZQogICAg
ICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7Ci0gICAgICAgICAgICBFWFBFQ1Rf
TkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOworICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtMTc0LDcgKzI0Myw4IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0TmV4dEFjdGlvbkRyYXdzT25WU3luYykKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0g
MDsgaiA8IDI7ICsraikgewogICAgICAgICAgICAgU3RhdGVNYWNoaW5lIHN0YXRlOwogICAgICAg
ICAgICAgc3RhdGUuc2V0Q29tbWl0U3RhdGUoYWxsQ29tbWl0U3RhdGVzW2ldKTsKLSAgICAgICAg
ICAgIGlmICghaikgeworICAgICAgICAgICAgYm9vbCBmb3JjZWREcmF3ID0gajsKKyAgICAgICAg
ICAgIGlmICghZm9yY2VkRHJhdykgewogICAgICAgICAgICAgICAgIHN0YXRlLmRpZEVudGVyVlN5
bmMoKTsKICAgICAgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKICAgICAg
ICAgICAgICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOwpAQCAtMTgzLDcgKzI1Myw3IEBAIFRF
U1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFjdGlvbkRyYXdzT25WU3lu
YykKIAogICAgICAgICAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBleHBlY3Rl
ZEFjdGlvbjsKICAgICAgICAgICAgIGlmIChhbGxDb21taXRTdGF0ZXNbaV0gIT0gQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQpCi0gICAgICAgICAg
ICAgICAgZXhwZWN0ZWRBY3Rpb24gPSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RS
QVc7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRBY3Rpb24gPSBmb3JjZWREcmF3ID8gQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0ZPUkNFRCA6IENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBleHBlY3RlZEFjdGlvbiA9IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fQ09NTUlUOwogCkBAIC0yMzEsMjIgKzMwMSwyMiBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdCwgVGVzdE5vQ29tbWl0U3RhdGVzUmVkcmF3V2hlbkludmlzaWJsZSkKICAgICAg
ICAgICAgIC8vIENhc2UgMTogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNlc1Bl
bmRpbmc9ZmFsc2UuCiAgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7CiAg
ICAgICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7Ci0g
ICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFX
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigp
KTsKIAogICAgICAgICAgICAgLy8gQ2FzZSAyOiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVNb3Jl
UmVzb3VyY2VzUGVuZGluZz10cnVlLgogICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQo
ZmFsc2UpOwogICAgICAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmco
dHJ1ZSk7Ci0gICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgICAgICAgICAgRVhQRUNUX05FKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4
dEFjdGlvbigpKTsKIAogICAgICAgICAgICAgLy8gQ2FzZSAzOiBuZWVkc0NvbW1pdD10cnVlIHVw
ZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZhbHNlLgogICAgICAgICAgICAgc3RhdGUuc2V0TmVl
ZHNDb21taXQodHJ1ZSk7CiAgICAgICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2Vz
UGVuZGluZyhmYWxzZSk7Ci0gICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgICAgICAgICAgRVhQ
RUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwg
c3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgICAgICAgICAgLy8gQ2FzZSA0OiBuZWVkc0NvbW1p
dD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUuCiAgICAgICAgICAgICBzdGF0
ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKICAgICAgICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVS
ZXNvdXJjZXNQZW5kaW5nKHRydWUpOwotICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9T
U0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yNjYs
NyArMzM2LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDYW5SZWRy
YXdfU3RvcHNEcmF3KQogICAgICAgICAgICAgICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKIAog
ICAgICAgICAgICAgc3RhdGUuc2V0Q2FuRHJhdyhmYWxzZSk7Ci0gICAgICAgICAgICBFWFBFQ1Rf
TkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOworICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICAgICAgfQogICAg
IH0KIH0KQEAgLTM4MSw4ICs0NTEsOSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVz
dCwgVGVzdFVwZGF0ZXNfV2l0aFJlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKIAogICAgIC8vIEVu
c3VyZSB3ZSBkcmF3IG9uIHRoZSBuZXh0IHZzeW5jIGV2ZW4gdGhvdWdoIGFuIHVwZGF0ZSBpcyBp
bi1wcm9ncmVzcy4KICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7Ci0gICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsK
LSAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RS
QVcpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdf
SUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFKTsKKyAgICBz
dGF0ZS5ub3RpZnlEcmF3U3VjY2Vzcyh0cnVlKTsKIAogICAgIC8vIEVuc3VyZSB0aGF0IHdlIG9u
Y2Ugd2UgaGF2ZSBkcmF3biwgd2UgZG9udCBkbyBhbnl0aGluZyBlbHNlLgogICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24o
KSk7CkBAIC00NDYsOSArNTE3LDEwIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0U2V0TmVlZHNDb21taXRJc05vdExvc3QpCiAKICAgICAvLyBDb21taXQgYW5kIG1ha2Ug
c3VyZSB3ZSBkcmF3IG9uIG5leHQgdnN5bmMKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxF
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6Q09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcsIHN0YXRlLmNvbW1pdFN0
YXRlKCkpOwotICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fRFJBVyk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFKTsKKyAgICBzdGF0ZS5ub3RpZnlEcmF3U3VjY2Vz
cyh0cnVlKTsKIAogICAgIC8vIFZlcmlmeSB0aGF0IGFub3RoZXIgY29tbWl0IHdpbGwgYmVnaW4u
CiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwpAQCAtNDkxLDggKzU2Myw5IEBAIFRFU1QoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlKQogCiAgICAgLy8gQXQgdnN5
bmMsIGRyYXcuCiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwotICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0g
ICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFX
KTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lG
X1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSk7CisgICAgc3Rh
dGUubm90aWZ5RHJhd1N1Y2Nlc3ModHJ1ZSk7CiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwog
CiAgICAgLy8gU2hvdWxkIGJlIHN5bmNocm9uaXplZCwgbm8gZHJhdyBuZWVkZWQsIG5vIGFjdGlv
biBuZWVkZWQuCkBAIC01NDEsOCArNjE0LDkgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QsIFRlc3RGdWxsQ3ljbGVXaXRoQ29tbWl0UmVxdWVzdEluYmV0d2VlbikKIAogICAgIC8v
IEF0IHZzeW5jLCBkcmF3LgogICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKLSAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOwotICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fRFJBVyk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
RFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVT
dGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUpOwor
ICAgIHN0YXRlLm5vdGlmeURyYXdTdWNjZXNzKHRydWUpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5
bmMoKTsKIAogICAgIC8vIFNob3VsZCBiZSBzeW5jaHJvbml6ZWQsIG5vIGRyYXcgbmVlZGVkLCBu
byBhY3Rpb24gbmVlZGVkLgpAQCAtNjUyLDcgKzcyNiw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LCBUZXN0Q29udGV4dExvc3RXaGVuSWRsZUFuZENvbW1pdFJlcXVlc3RlZFdo
aWxlCiAgICAgLy8gc2V0Q2FuRHJhdy4KICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsK
ICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnNldENhbkRyYXcoZmFsc2UpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CiAgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKQEAgLTY3Miw3ICs3NDYsNyBAQCBU
RVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0V2hpbGVDb21t
aXRJblByb2dyZXNzKQogICAgIC8vIFNldCBkYW1hZ2UgYW5kIGV4cGVjdCBhIGRyYXcuCiAgICAg
c3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7CiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwot
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51
cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMo
KTsKIApAQCAtNzEyLDcgKzc4Niw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0Q29udGV4dExvc3RXaGlsZUNvbW1pdEluUHJvZ3Jlc3NBbmRBbm90aGVyCiAgICAgLy8g
U2V0IGRhbWFnZSBhbmQgZXhwZWN0IGEgZHJhdy4KICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0
cnVlKTsKICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxF
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRB
Y3Rpb24oKSk7CiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwogCkBAIC03MzgsNyArODEyLDcg
QEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDb250ZXh0TG9zdFdoaWxl
Q29tbWl0SW5Qcm9ncmVzc0FuZEFub3RoZXIKIAogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcsIHN0YXRlLmNv
bW1pdFN0YXRlKCkpOwogCi0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAv
LyBFeHBlY3QgdG8gYmUgdG9sZCB0byBiZWdpbiBjb250ZXh0IHJlY3JlYXRpb24sIGluZGVwZW5k
ZW50IG9mIHZzeW5jIHN0YXRlCkBAIC03NjAsNyArODM0LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QsIFRlc3RGaW5pc2hBbGxSZW5kZXJpbmdXaGlsZUNvbnRleHRMb3N0KQog
ICAgIC8vIEFzayBhIGZvcmNlZCByZWRyYXcgYW5kIHZlcmlmeSBpdCBvY3VycnMuCiAgICAgc3Rh
dGUuc2V0TmVlZHNGb3JjZWRSZWRyYXcodHJ1ZSk7CiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygp
OwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fRFJBV19GT1JDRUQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUuZGlk
TGVhdmVWU3luYygpOwogCiAgICAgLy8gQ2xlYXIgdGhlIGZvcmNlZCByZWRyYXcgYml0LgpAQCAt
NzczLDcgKzg0Nyw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Rmlu
aXNoQWxsUmVuZGVyaW5nV2hpbGVDb250ZXh0TG9zdCkKICAgICAvLyBBc2sgYSBmb3JjZWQgcmVk
cmF3IGFuZCB2ZXJpZnkgaXQgb2N1cnJzLgogICAgIHN0YXRlLnNldE5lZWRzRm9yY2VkUmVkcmF3
KHRydWUpOwogICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfRk9SQ0VELCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCmluZGV4
IDQ1ZjYxYjkwYmY1NGUyZWNlNzhiZGE4ODNmZmEwYTI2YmQ1NDM2ZWIuLmQyZDEyN2I4YzI5MmQy
MDY0YjAzZmY2ODVjOTA4ZGFiZGMxZWZjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKQEAgLTU2LDcgKzU2LDE0IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhdygpIHsgcmV0dXJuIG1fY2FuRHJhdzsgfQogICAgIHZp
cnR1YWwgYm9vbCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNN
b3JlUmVzb3VyY2VVcGRhdGVzOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJl
Z2luRnJhbWUoKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkJlZ2luRnJh
bWUiKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpIHsg
bV9hY3Rpb25zLnB1c2hfYmFjaygic2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAiKTsgfQorICAg
IHZpcnR1YWwgYm9vbCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcChib29sIGZvcmNlZERyYXcp
CisgICAgeworICAgICAgICBpZiAoZm9yY2VkRHJhdykKKyAgICAgICAgICAgIG1fYWN0aW9ucy5w
dXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwRm9yY2VkIik7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkRyYXdB
bmRTd2FwIik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpIHsgbV9hY3Rpb25zLnB1c2hfYmFj
aygic2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIpOyB9CiAgICAgdmlydHVhbCB2
b2lkIHNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpIHsgbV9hY3Rpb25zLnB1c2hfYmFjaygic2NoZWR1
bGVkQWN0aW9uQ29tbWl0Iik7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVn
aW5Db250ZXh0UmVjcmVhdGlvbigpIHsgbV9hY3Rpb25zLnB1c2hfYmFjaygic2NoZWR1bGVkQWN0
aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbiIpOyB9CkBAIC0xNDAsNyArMTQ3LDggQEAgY2xhc3Mg
U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXcgOiBwdWJsaWMgQ0NTY2hl
ZHVsZXJDbGllbnQgewogcHVibGljOgogICAgIFNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0Ry
YXdJbnNpZGVEcmF3KCkKICAgICAgICAgOiBtX251bURyYXdzKDApCi0gICAgICAgICwgbV9zY2hl
ZHVsZXIoMCkgeyB9CisgICAgICAgICwgbV9zY2hlZHVsZXIoMCkKKyAgICAgICAgLCBtX2RyYXdT
dWNjZXNzKHRydWUpIHsgfQogCiAgICAgdm9pZCBzZXRTY2hlZHVsZXIoQ0NTY2hlZHVsZXIqIHNj
aGVkdWxlcikgeyBtX3NjaGVkdWxlciA9IHNjaGVkdWxlcjsgfQogCkBAIC0xNDksMjcgKzE1Nywz
NCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3KCkgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkKKyAgICB2
aXJ0dWFsIGJvb2wgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoYm9vbCBmb3JjZWREcmF3KQog
ICAgIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGZvcmNlZERyYXcpOwogICAgICAgICAvLyBPbmx5
IHNldE5lZWRzUmVkcmF3IHRoZSBmaXJzdCB0aW1lIHRoaXMgaXMgY2FsbGVkCiAgICAgICAgIGlm
ICghbV9udW1EcmF3cykKICAgICAgICAgICAgIG1fc2NoZWR1bGVyLT5zZXROZWVkc1JlZHJhdygp
OwogICAgICAgICBtX251bURyYXdzKys7CisgICAgICAgIHJldHVybiBtX2RyYXdTdWNjZXNzOwog
ICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3Vy
Y2VzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKCkg
eyB9CiAKKyAgICB2b2lkIHJlc2V0TnVtRHJhd3MoKSB7IG1fbnVtRHJhd3MgPSAwOyB9CisgICAg
dm9pZCBzZXREcmF3U3VjY2Vzcyhib29sIGRyYXdTdWNjZXNzKSB7IG1fZHJhd1N1Y2Nlc3MgPSBk
cmF3U3VjY2VzczsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgaW50IG1fbnVtRHJhd3M7CiAgICAgQ0NT
Y2hlZHVsZXIqIG1fc2NoZWR1bGVyOworICAgIGJvb2wgbV9kcmF3U3VjY2VzczsKIH07CiAKLS8v
IFRlc3RzIGZvciB0d28gZGlmZmVyZW50IHNpdHVhdGlvbnM6CisvLyBUZXN0cyBmb3IgdGhyZWUg
ZGlmZmVyZW50IHNpdHVhdGlvbnM6CiAvLyAxLiB0aGUgc2NoZWR1bGVyIGRyb3BwaW5nIHNldE5l
ZWRzUmVkcmF3IHJlcXVlc3RzIHRoYXQgaGFwcGVuIGluc2lkZQogLy8gICAgYSBzY2hlZHVsZWRB
Y3Rpb25EcmF3QW5kU3dhcAogLy8gMi4gdGhlIHNjaGVkdWxlciBkcmF3aW5nIHR3aWNlIGluc2lk
ZSBhIHNpbmdsZSB0aWNrCisvLyAzLiB0aGUgc2NoZWR1bGVyIHN0aWxsIG5lZWRzIGEgcmVkcmF3
IGFmdGVyIGEgZmFpbGVkIGRyYXcsIGJ1dCBkb2Vzbid0IGFmdGVyIHN1Y2Nlc3MuCiBURVNUKEND
U2NoZWR1bGVyVGVzdCwgUmVxdWVzdFJlZHJhd0luc2lkZURyYXcpCiB7CiAgICAgU2NoZWR1bGVy
Q2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXcgY2xpZW50OwpAQCAtMTkyLDEzICsyMDcs
MzMgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RSZWRyYXdJbnNpZGVEcmF3KQogICAg
IEVYUEVDVF9FUSgyLCBjbGllbnQubnVtRHJhd3MoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHNjaGVk
dWxlci0+cmVkcmF3UGVuZGluZygpKTsKICAgICBFWFBFQ1RfRkFMU0UodGltZVNvdXJjZS0+YWN0
aXZlKCkpOworCisgICAgY2xpZW50LnJlc2V0TnVtRHJhd3MoKTsKKyAgICBjbGllbnQuc2V0RHJh
d1N1Y2Nlc3MoZmFsc2UpOworCisgICAgc2NoZWR1bGVyLT5zZXROZWVkc1JlZHJhdygpOworICAg
IEVYUEVDVF9UUlVFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfVFJV
RSh0aW1lU291cmNlLT5hY3RpdmUoKSk7CisgICAgRVhQRUNUX0VRKDAsIGNsaWVudC5udW1EcmF3
cygpKTsKKworICAgIHRpbWVTb3VyY2UtPnRpY2soKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50
Lm51bURyYXdzKCkpOworICAgIEVYUEVDVF9UUlVFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygp
KTsKKyAgICBFWFBFQ1RfVFJVRSh0aW1lU291cmNlLT5hY3RpdmUoKSk7CisKKyAgICB0aW1lU291
cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDIsIGNsaWVudC5udW1EcmF3cygpKTsKKyAgICBF
WFBFQ1RfVFJVRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CisgICAgRVhQRUNUX1RSVUUo
dGltZVNvdXJjZS0+YWN0aXZlKCkpOworCiB9CiAKIGNsYXNzIFNjaGVkdWxlckNsaWVudFRoYXRT
ZXROZWVkc0NvbW1pdEluc2lkZURyYXcgOiBwdWJsaWMgQ0NTY2hlZHVsZXJDbGllbnQgewogcHVi
bGljOgogICAgIFNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0NvbW1pdEluc2lkZURyYXcoKQog
ICAgICAgICA6IG1fbnVtRHJhd3MoMCkKLSAgICAgICAgLCBtX3NjaGVkdWxlcigwKSB7IH0KKyAg
ICAgICAgLCBtX3NjaGVkdWxlcigwKQorICAgICAgICAsIG1fZHJhd1N1Y2Nlc3ModHJ1ZSkgeyB9
CiAKICAgICB2b2lkIHNldFNjaGVkdWxlcihDQ1NjaGVkdWxlciogc2NoZWR1bGVyKSB7IG1fc2No
ZWR1bGVyID0gc2NoZWR1bGVyOyB9CiAKQEAgLTIwNywyNSArMjQyLDMzIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGNhbkRyYXcoKSB7IHJldHVybiB0cnVlOyB9CiAgICAg
dmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoKQorICAgIHZpcnR1YWwgYm9vbCBzY2hl
ZHVsZWRBY3Rpb25EcmF3QW5kU3dhcChib29sIGZvcmNlZERyYXcpCiAgICAgeworICAgICAgICBF
WFBFQ1RfRkFMU0UoZm9yY2VkRHJhdyk7CiAgICAgICAgIC8vIE9ubHkgc2V0TmVlZHNDb21taXQg
dGhlIGZpcnN0IHRpbWUgdGhpcyBpcyBjYWxsZWQKICAgICAgICAgaWYgKCFtX251bURyYXdzKQog
ICAgICAgICAgICAgbV9zY2hlZHVsZXItPnNldE5lZWRzQ29tbWl0KCk7CiAgICAgICAgIG1fbnVt
RHJhd3MrKzsKKyAgICAgICAgcmV0dXJuIG1fZHJhd1N1Y2Nlc3M7CiAgICAgfQogCiAgICAgdmly
dHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24oKSB7IH0KIAorICAgIHZvaWQg
cmVzZXROdW1EcmF3cygpIHsgbV9udW1EcmF3cyA9IDA7IH0KKyAgICB2b2lkIHNldERyYXdTdWNj
ZXNzKGJvb2wgZHJhd1N1Y2Nlc3MpIHsgbV9kcmF3U3VjY2VzcyA9IGRyYXdTdWNjZXNzOyB9CisK
IHByb3RlY3RlZDoKICAgICBpbnQgbV9udW1EcmF3czsKICAgICBDQ1NjaGVkdWxlciogbV9zY2hl
ZHVsZXI7CisgICAgYm9vbCBtX2RyYXdTdWNjZXNzOwogfTsKIAotLy8gVGVzdHMgZm9yIHRoZSBz
Y2hlZHVsZXIgaW5maW5pdGUtbG9vcGluZyBvbiBzZXROZWVkc0NvbW1pdCByZXF1ZXN0cyB0aGF0
Ci0vLyBoYXBwZW4gaW5zaWRlIGEgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAKKy8vIFRlc3Rz
IGZvciB0d28gZGlmZmVyZW50IHNpdHVhdGlvbnM6CisvLyAxLiBUZXN0cyBmb3IgdGhlIHNjaGVk
dWxlciBpbmZpbml0ZS1sb29waW5nIG9uIHNldE5lZWRzQ29tbWl0IHJlcXVlc3RzIHRoYXQKKy8v
ICAgIGhhcHBlbiBpbnNpZGUgYSBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcC4KKy8vIDIuIElm
IHRoZSBkcmF3cyBmYWlsIHRoZW4gdGhlIHBlbmRpbmcgY29tbWl0IHNob3VsZCBub3QgYmUgZHJv
cHBlZC4KIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0SW5zaWRlRHJhdykKIHsK
ICAgICBTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNDb21taXRJbnNpZGVEcmF3IGNsaWVudDsK
QEAgLTI0OSw2ICsyOTIsMjYgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRJ
bnNpZGVEcmF3KQogICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtRHJhd3MoKSk7CiAgICAgRVhQ
RUNUX0ZBTFNFKHRpbWVTb3VyY2UtPmFjdGl2ZSgpKTsKICAgICBFWFBFQ1RfRkFMU0Uoc2NoZWR1
bGVyLT5yZWRyYXdQZW5kaW5nKCkpOworCisgICAgY2xpZW50LnJlc2V0TnVtRHJhd3MoKTsKKyAg
ICBjbGllbnQuc2V0RHJhd1N1Y2Nlc3MoZmFsc2UpOworCisgICAgc2NoZWR1bGVyLT5zZXROZWVk
c1JlZHJhdygpOworICAgIEVYUEVDVF9UUlVFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygpKTsK
KyAgICBFWFBFQ1RfRVEoMCwgY2xpZW50Lm51bURyYXdzKCkpOworICAgIEVYUEVDVF9UUlVFKHRp
bWVTb3VyY2UtPmFjdGl2ZSgpKTsKKworICAgIHRpbWVTb3VyY2UtPnRpY2soKTsKKyAgICBFWFBF
Q1RfVFJVRSh0aW1lU291cmNlLT5hY3RpdmUoKSk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5u
dW1EcmF3cygpKTsKKyAgICBFWFBFQ1RfVFJVRShzY2hlZHVsZXItPmNvbW1pdFBlbmRpbmcoKSk7
CisgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKworICAgIHRpbWVTb3VyY2Ut
PnRpY2soKTsKKyAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51bURyYXdzKCkpOworICAgIEVYUEVD
VF9UUlVFKHRpbWVTb3VyY2UtPmFjdGl2ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShzY2hlZHVsZXIt
PnJlZHJhd1BlbmRpbmcoKSk7CisKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133260</attachid>
            <date>2012-03-22 07:38:30 -0700</date>
            <delta_ts>2012-03-22 12:44:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81716-20120322103828.patch</filename>
            <type>text/plain</type>
            <size>39152</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ1YTBiZDFhN2IxYzAx
Y2I0MGRlYmU3OWI2NDVlODkyMTk4Mjk5YS4uMGI4YmNjN2U2NDNjYzA3ODgwYTY0ZDg5Y2NjOTEx
MThiM2IzYzE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAzLTIyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU2tp
cCBmcmFtZXMgd2hlbiBjaGVja2VyYm9hcmRpbmcgYW4gYW5pbWF0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTcxNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdCBmb3IgY29tbWl0IHlldC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRl
UmVuZGVyUGFzc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnBy
ZXBhcmVUb0RyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaDoKKyAg
ICAgICAgKENDU2NoZWR1bGVyQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6dXBkYXRlU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGUpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaDoKKyAgICAgICAgKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFj
dGlvbkRyYXdBbmRTd2FwSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2li
bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXBGb3JjZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTAzLTIx
ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gRWFybHkgb3V0IGluIGEgbmV3IHByZXBhcmVUb0RyYXcoKSBzdGVwIGlmIGNoZWNrZXJib2Fy
ZGluZyBhbiBhY2NlbGVyYXRlZCBhbmltYXRpb24gaW4gb3JkZXIgdG8gc2tpcCB0aGUgZnJhbWUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggM2IxZmUwZDZhM2NhMjc4M2Y5NDM0ZWMwMWE4
OWM5Y2Y2MDQ4YTY1ZC4uYTMwMDdhZjkzNWU3MjY1ZGE0ZjQzZWE0NzM4MWI1YTgzNGM1NWM4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMi0wMy0yMiAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IFNraXAgZnJhbWVzIHdoZW4gY2hlY2tlcmJvYXJkaW5nIGFuIGFuaW1hdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE3MTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUX0YpOgorICAgICAg
ICAqIHRlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpURVNUKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHRlc3RzL0NDU2NoZWR1
bGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUNDU2NoZWR1bGVyQ2xpZW50
OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUpOgorICAgICAgICAoV2ViS2l0
VGVzdHM6OkZha2VDQ1NjaGVkdWxlckNsaWVudDo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBG
b3JjZWQpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1QpOgorICAgICAgICAoV2ViS2l0VGVz
dHM6OlNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0RyYXdJbnNpZGVEcmF3OjpTY2hlZHVsZXJD
bGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6
U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXc6OnNjaGVkdWxlZEFjdGlv
bkRyYXdBbmRTd2FwSWZQb3NzaWJsZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6U2NoZWR1bGVy
Q2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXc6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRT
d2FwRm9yY2VkKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0
TmVlZHNEcmF3SW5zaWRlRHJhdzo6cmVzZXROdW1EcmF3cyk6CisgICAgICAgIChXZWJLaXRUZXN0
czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXc6OnNldERyYXdTdWNj
ZXNzKToKKyAgICAgICAgKFNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0RyYXdJbnNpZGVEcmF3
KToKKyAgICAgICAgKFdlYktpdFRlc3RzKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpTY2hlZHVs
ZXJDbGllbnRUaGF0U2V0TmVlZHNDb21taXRJbnNpZGVEcmF3OjpTY2hlZHVsZXJDbGllbnRUaGF0
U2V0TmVlZHNDb21taXRJbnNpZGVEcmF3KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpTY2hlZHVs
ZXJDbGllbnRUaGF0U2V0TmVlZHNDb21taXRJbnNpZGVEcmF3OjpzY2hlZHVsZWRBY3Rpb25EcmF3
QW5kU3dhcElmUG9zc2libGUpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlNjaGVkdWxlckNsaWVu
dFRoYXRTZXROZWVkc0NvbW1pdEluc2lkZURyYXc6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2Fw
Rm9yY2VkKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVl
ZHNDb21taXRJbnNpZGVEcmF3OjpyZXNldE51bURyYXdzKToKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNDb21taXRJbnNpZGVEcmF3OjpzZXREcmF3U3Vj
Y2Vzcyk6CisgICAgICAgIChTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNDb21taXRJbnNpZGVE
cmF3KToKKwogMjAxMi0wMy0yMSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIEVhcmx5IG91dCBpbiBhIG5ldyBwcmVwYXJlVG9EcmF3KCkg
c3RlcCBpZiBjaGVja2VyYm9hcmRpbmcgYW4gYWNjZWxlcmF0ZWQgYW5pbWF0aW9uIGluIG9yZGVy
IHRvIHNraXAgdGhlIGZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
CmluZGV4IDQ0M2ExZmZhYTc3YmEwZWU1MjAyOWRmMGUzYWIxNDk2N2Y0YzUyZGIuLjYxYzA4YjU4
NTFhNDhmY2YwNGEzZGViYzQwMTNmNjhhZDA4YzMzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0yNzUsNyArMjc1LDkgQEAgYm9vbCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYgcGFzc2VzLCBD
Q0xheWUKICAgICAvLyBBZGQgcXVhZHMgdG8gdGhlIFJlbmRlciBwYXNzZXMgaW4gRnJvbnRUb0Jh
Y2sgb3JkZXIgdG8gYWxsb3cgZm9yIHRlc3Rpbmcgb2NjbHVzaW9uIGFuZCBwZXJmb3JtaW5nIGN1
bGxpbmcgZHVyaW5nIHRoZSB0cmVlIHdhbGsuCiAgICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8
Q0NMYXllckltcGwsIFZlY3RvcjxDQ0xheWVySW1wbCo+LCBDQ1JlbmRlclN1cmZhY2UsIENDTGF5
ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrPiBDQ0xheWVySXRlcmF0b3JUeXBlOwogCi0g
ICAgLy8gSWYgd2UgYXJlIHVuYWJsZSB0byBkcmF3IGFuIGFuaW1hdGlvbiBvbiBzb21lIGxheWVy
LCB0aGVuIHdlIGFib3J0IHRoZSBlbnRpcmUgZnJhbWUuCisgICAgLy8gVHlwaWNhbGx5IHdoZW4g
d2UgYXJlIG1pc3NpbmcgYSB0ZXh0dXJlIGFuZCB1c2UgYSBjaGVja2VyYm9hcmQgcXVhZCwgd2Ug
c3RpbGwgZHJhdyB0aGUgZnJhbWUuIEhvd2V2ZXIgd2hlbiB0aGUgbGF5ZXIgYmVpbmcKKyAgICAv
LyBjaGVja2VyYm9hcmRlZCBpcyBtb3ZpbmcgZHVlIHRvIGFuIGltcGwtYW5pbWF0aW9uLCB3ZSBk
cm9wIHRoZSBmcmFtZSB0byBhdm9pZCBmbGFzaGluZyBkdWUgdG8gdGhlIHRleHR1cmUgc3VkZGVu
bHkgYXBwZWFyaW5nCisgICAgLy8gaW4gdGhlIGZ1dHVyZS4KICAgICBib29sIGRyYXdGcmFtZSA9
IHRydWU7CiAKICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5
cGU6OmVuZCgmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CkBAIC0zMDYsMTAgKzMwOCw4IEBAIGJv
b2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFz
c0xpc3QmIHBhc3NlcywgQ0NMYXllCiAgICAgICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9yTGF5ZXIo
Kml0LCAmb2NjbHVzaW9uVHJhY2tlciwgdXNlZENoZWNrZXJib2FyZCk7CiAgICAgICAgIGlmICh1
c2VkQ2hlY2tlcmJvYXJkKSB7CiAgICAgICAgICAgICBib29sIGxheWVySGFzQW5pbWF0aW5nVHJh
bnNmb3JtID0gaXQtPnNjcmVlblNwYWNlVHJhbnNmb3JtSXNBbmltYXRpbmcoKSB8fCBpdC0+ZHJh
d1RyYW5zZm9ybUlzQW5pbWF0aW5nKCk7Ci0gICAgICAgICAgICBpZiAobGF5ZXJIYXNBbmltYXRp
bmdUcmFuc2Zvcm0pIHsKKyAgICAgICAgICAgIGlmIChsYXllckhhc0FuaW1hdGluZ1RyYW5zZm9y
bSkKICAgICAgICAgICAgICAgICBkcmF3RnJhbWUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIG9jY2x1c2lvblRyYWNr
ZXIubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoKml0KTsKQEAgLTM2NywxMSArMzY3LDggQEAgYm9v
bCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcmVwYXJlVG9EcmF3KEZyYW1lRGF0YSYgZnJhbWUpCiAg
ICAgaWYgKCFyb290TGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFj
YWxjdWxhdGVSZW5kZXJQYXNzZXMoZnJhbWUucmVuZGVyUGFzc2VzLCBmcmFtZS5yZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0KSkgewotICAgICAgICBmcmFtZS5yZW5kZXJQYXNzZXMuY2xlYXIoKTsKLSAg
ICAgICAgZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlzdC5jbGVhcigpOworICAgIGlmICghY2Fs
Y3VsYXRlUmVuZGVyUGFzc2VzKGZyYW1lLnJlbmRlclBhc3NlcywgZnJhbWUucmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAgICAvLyBJZiB3
ZSByZXR1cm4gdHJ1ZSwgdGhlbiB3ZSBleHBlY3QgZHJhd0xheWVycygpIHRvIGJlIGNhbGxlZCBi
ZWZvcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYWdhaW4uCiAgICAgcmV0dXJuIHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggZTBjNmU3M2EzMzQyMGRkNDdk
MDk1NDI4NjJjYjlhNDhhMGFkMWNiMC4uYzNlOWQyNDliM2U4ZTdkMDEwNjM4M2NlMmViNjc4MDJk
NDY3ZmRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtODgsNiAr
ODgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ29tbWl0KCk7CiAgICAgdmly
dHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGUoZG91
YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKKyAgICAvLyBSZXR1cm5z
IGZhbHNlIGlmIHByb2JsZW1zIG9jY3VyZWQgcHJlcGFyaW5nIHRoZSBmcmFtZSwgYW5kIHdlIHNo
b3VsZCBhdm9pZCBkcmF3aW5nIHRoZSBmcmFtZSBpZiBwb3NzaWJsZS4KICAgICB2aXJ0dWFsIGJv
b2wgcHJlcGFyZVRvRHJhdyhGcmFtZURhdGEmKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVy
cyhjb25zdCBGcmFtZURhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCmluZGV4IDYxYmQ5
MzEzZjU0YmNlMmIwYmRkZWE4NTQ2NDc5YTMwYTJlNTJhNjQuLjE1MDE0NjZmMDI5N2EzOTcyMzky
MDk0MjY1ZTk2YzEzYTUxNjVmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKQEAgLTE2Miw4
ICsxNjIsMTQgQEAgdm9pZCBDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKQog
ICAgICAgICBjYXNlIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlUOgogICAg
ICAgICAgICAgbV9jbGllbnQtPnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFX
OgotICAgICAgICAgICAgbV9jbGllbnQtPnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCk7Cisg
ICAgICAgIGNhc2UgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJ
QkxFOiB7CisgICAgICAgICAgICBib29sIGRyYXdTdWNjZXNzID0gbV9jbGllbnQtPnNjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSgpOworICAgICAgICAgICAgbV9zdGF0ZU1hY2hp
bmUuZGlkRHJhd0lmUG9zc2libGVDb21wbGV0ZShkcmF3U3VjY2Vzcyk7CisgICAgICAgICAgICBt
X2ZyYW1lUmF0ZUNvbnRyb2xsZXItPmRpZEJlZ2luRnJhbWUoKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2UgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9EUkFXX0ZPUkNFRDoKKyAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25EcmF3
QW5kU3dhcEZvcmNlZCgpOwogICAgICAgICAgICAgbV9mcmFtZVJhdGVDb250cm9sbGVyLT5kaWRC
ZWdpbkZyYW1lKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTjoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
aGVkdWxlci5oCmluZGV4IDhlZjVkY2Y3MmMyNzBhM2E2YzgxNDdlNDA3MjA1OTJlODcxZDY2ZTQu
LmM4NzZlMjBiYzg3NzhkYzc5YWYzODljMGI5YTljYmMzYWNiYTY5NmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hl
ZHVsZXIuaApAQCAtNDEsNyArNDEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc01v
cmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVkQWN0aW9uQmVnaW5GcmFtZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0
aW9uRHJhd0FuZFN3YXAoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSWZQb3NzaWJsZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0
aW9uRHJhd0FuZFN3YXBGb3JjZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFj
dGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxl
ZEFjdGlvbkNvbW1pdCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVn
aW5Db250ZXh0UmVjcmVhdGlvbigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lLmNwcAppbmRleCBmMzdmMGI0MTdiM2VlZDU3ZjIwY2NjZTMxNWQ2OTAzZWQ5
YTdhOGQ2Li4wNWE3MDNmNjEwN2IxMTk1NTkwMzFjNGE2NWNkMjlhMTgwMDM0YzExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCkBAIC03NSw3ICs3NSw3
IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6Om5leHRBY3Rpb24oKSBjb25zdAogICAgIHN3aXRjaCAobV9jb21taXRTdGF0ZSkgewogICAg
IGNhc2UgQ09NTUlUX1NUQVRFX0lETEU6CiAgICAgICAgIGlmIChtX2NvbnRleHRTdGF0ZSAhPSBD
T05URVhUX0FDVElWRSAmJiBtX25lZWRzRm9yY2VkUmVkcmF3KQotICAgICAgICAgICAgcmV0dXJu
IEFDVElPTl9EUkFXOworICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9EUkFXX0ZPUkNFRDsKICAg
ICAgICAgaWYgKG1fY29udGV4dFN0YXRlICE9IENPTlRFWFRfQUNUSVZFICYmIG1fbmVlZHNGb3Jj
ZWRDb21taXQpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX0ZSQU1FOwogICAgICAg
ICBpZiAobV9jb250ZXh0U3RhdGUgPT0gQ09OVEVYVF9MT1NUKQpAQCAtODMsMTkgKzgzLDE5IEBA
IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
Om5leHRBY3Rpb24oKSBjb25zdAogICAgICAgICBpZiAobV9jb250ZXh0U3RhdGUgPT0gQ09OVEVY
VF9SRUNSRUFUSU5HKQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwogICAgICAgICBp
ZiAoc2hvdWxkRHJhdygpKQotICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOworICAgICAg
ICAgICAgcmV0dXJuIG1fbmVlZHNGb3JjZWRSZWRyYXcgPyBBQ1RJT05fRFJBV19GT1JDRUQgOiBB
Q1RJT05fRFJBV19JRl9QT1NTSUJMRTsKICAgICAgICAgaWYgKG1fbmVlZHNDb21taXQgJiYgKG1f
dmlzaWJsZSB8fCBtX25lZWRzRm9yY2VkQ29tbWl0KSkKICAgICAgICAgICAgIHJldHVybiBBQ1RJ
T05fQkVHSU5fRlJBTUU7CiAgICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsKIAogICAgIGNhc2Ug
Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTOgogICAgICAgICBpZiAoc2hvdWxkRHJhdygp
KQotICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOworICAgICAgICAgICAgcmV0dXJuIG1f
bmVlZHNGb3JjZWRSZWRyYXcgPyBBQ1RJT05fRFJBV19GT1JDRUQgOiBBQ1RJT05fRFJBV19JRl9Q
T1NTSUJMRTsKICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwogCiAgICAgY2FzZSBDT01NSVRf
U1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTOgogICAgICAgICBpZiAoc2hvdWxkRHJhdygpKQotICAg
ICAgICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOworICAgICAgICAgICAgcmV0dXJuIG1fbmVlZHNG
b3JjZWRSZWRyYXcgPyBBQ1RJT05fRFJBV19GT1JDRUQgOiBBQ1RJT05fRFJBV19JRl9QT1NTSUJM
RTsKICAgICAgICAgaWYgKCFtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKQogICAgICAgICAg
ICAgcmV0dXJuIEFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVM7CiAgICAgICAgIHJl
dHVybiBBQ1RJT05fTk9ORTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QWN0aW9uIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKCkgY29uc3QK
IAogICAgIGNhc2UgQ09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVc6CiAgICAgICAg
IGlmIChzaG91bGREcmF3KCkgfHwgbV9jb250ZXh0U3RhdGUgPT0gQ09OVEVYVF9MT1NUKQotICAg
ICAgICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOworICAgICAgICAgICAgcmV0dXJuIG1fbmVlZHNG
b3JjZWRSZWRyYXcgPyBBQ1RJT05fRFJBV19GT1JDRUQgOiBBQ1RJT05fRFJBV19JRl9QT1NTSUJM
RTsKICAgICAgICAgLy8gQ09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcgd2FudHMg
dG8gZW5mb3JjZSBhIGRyYXcuIElmIG1fY2FuRHJhdyBpcyBmYWxzZSwKICAgICAgICAgLy8gcHJv
Y2VlZCB0byB0aGUgbmV4dCBzdGVwIChzaW1pbGFyIGFzIGluIENPTU1JVF9TVEFURV9JRExFKS4K
ICAgICAgICAgaWYgKCFtX2NhbkRyYXcgJiYgbV9uZWVkc0NvbW1pdCAmJiAobV92aXNpYmxlIHx8
IG1fbmVlZHNGb3JjZWRDb21taXQpKQpAQCAtMTQyLDcgKzE0Miw4IEBAIHZvaWQgQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKEFjdGlvbiBhY3Rpb24pCiAgICAgICAgIG1fbmVl
ZHNSZWRyYXcgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAKLSAgICBjYXNlIEFDVElPTl9EUkFX
OgorICAgIGNhc2UgQUNUSU9OX0RSQVdfSUZfUE9TU0lCTEU6CisgICAgY2FzZSBBQ1RJT05fRFJB
V19GT1JDRUQ6CiAgICAgICAgIG1fbmVlZHNSZWRyYXcgPSBmYWxzZTsKICAgICAgICAgbV9uZWVk
c0ZvcmNlZFJlZHJhdyA9IGZhbHNlOwogICAgICAgICBpZiAobV9pbnNpZGVWU3luYykKQEAgLTE5
OSw2ICsyMDAsMTIgQEAgdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0TmVlZHNGb3Jj
ZWRSZWRyYXcoKQogICAgIG1fbmVlZHNGb3JjZWRSZWRyYXcgPSB0cnVlOwogfQogCit2b2lkIEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpkaWREcmF3SWZQb3NzaWJsZUNvbXBsZXRlKGJvb2wgc3Vj
Y2VzcykKK3sKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIG1fbmVlZHNSZWRyYXcgPSB0cnVl
OworfQorCiB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXROZWVkc0NvbW1pdCgpCiB7
CiAgICAgbV9uZWVkc0NvbW1pdCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmUuaAppbmRleCA2MWJlYzM5NGVjZTgwOTUzY2FkOWQ1YmE4YmYzMDY2OTVjMGUx
ZjgxLi4wYTdlZTdkNDQzMjIwNzg2NTYwZDAzYmRlYjUyMDdlMjM1YjE0NGY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
clN0YXRlTWFjaGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKQEAgLTY5LDcgKzY5LDggQEAgcHVi
bGljOgogICAgICAgICBBQ1RJT05fQkVHSU5fRlJBTUUsCiAgICAgICAgIEFDVElPTl9CRUdJTl9V
UERBVEVfTU9SRV9SRVNPVVJDRVMsCiAgICAgICAgIEFDVElPTl9DT01NSVQsCi0gICAgICAgIEFD
VElPTl9EUkFXLAorICAgICAgICBBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwKKyAgICAgICAgQUNU
SU9OX0RSQVdfRk9SQ0VELAogICAgICAgICBBQ1RJT05fQkVHSU5fQ09OVEVYVF9SRUNSRUFUSU9O
CiAgICAgfTsKICAgICBBY3Rpb24gbmV4dEFjdGlvbigpIGNvbnN0OwpAQCAtOTUsNiArOTYsOSBA
QCBwdWJsaWM6CiAgICAgLy8gd2UgYXJlIG5vdCB2aXNpYmxlLgogICAgIHZvaWQgc2V0TmVlZHNG
b3JjZWRSZWRyYXcoKTsKIAorICAgIC8vIEluZGljYXRlcyB3aGV0aGVyIEFDVElPTl9EUkFXX0lG
X1BPU1NJQkxFIGRyYXcgdG8gdGhlIHNjcmVlbiBvciBub3QuCisgICAgdm9pZCBkaWREcmF3SWZQ
b3NzaWJsZUNvbXBsZXRlKGJvb2wgc3VjY2Vzcyk7CisKICAgICAvLyBJbmRpY2F0ZXMgdGhhdCBh
IG5ldyBjb21taXQgZmxvdyBuZWVkcyB0byBiZSBwZXJmb3JtZWQsIGVpdGhlciB0byBwdWxsCiAg
ICAgLy8gdXBkYXRlcyBmcm9tIHRoZSBtYWluIHRocmVhZCB0byB0aGUgaW1wbCwgb3IgdG8gcHVz
aCBkZWx0YXMgZnJvbSB0aGUgaW1wbAogICAgIC8vIHRocmVhZCB0byBtYWluLgpAQCAtMTIyLDYg
KzEyNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dCgpOwogCiBwcm90
ZWN0ZWQ6CisgICAgYm9vbCBzaG91bGREcmF3Rm9yY2VkKCkgY29uc3Q7CiAgICAgYm9vbCBzaG91
bGREcmF3KCkgY29uc3Q7CiAgICAgYm9vbCBoYXNEcmF3blRoaXNGcmFtZSgpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IGU0MTczYThhZDYxMTNmN2VkYzRiOTAyYWIw
YTdmODUwODYzYTE0NWYuLmNiODc1NzNjZThiYzkwMzlkZGYzZDBlMGYyODBjMjg0Yjc1MzY1NGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC01NDIsMTIgKzU0MiwxMiBAQCB2b2lk
IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24oKQog
ICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywg
JkNDVGhyZWFkUHJveHk6OmJlZ2luQ29udGV4dFJlY3JlYXRpb24pKTsKIH0KIAotdm9pZCBDQ1Ro
cmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpCitib29sIENDVGhyZWFkUHJv
eHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSW50ZXJuYWwoYm9vbCBmb3JjZWREcmF3KQog
ewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5k
U3dhcCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgaWYgKCFt
X2xheWVyVHJlZUhvc3RJbXBsKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgLy8gRklYTUU6IGNvbXB1dGUgdGhlIGZyYW1lIGRpc3BsYXkgdGltZSBtb3JlIGlu
dGVsbGlnZW50bHkKICAgICBkb3VibGUgbW9ub3RvbmljVGltZSA9IG1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZSgpOwpAQCAtNTU2LDIxICs1NTYsMjUgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpz
Y2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpCiAgICAgbV9pbnB1dEhhbmRsZXJPbkltcGxUaHJl
YWQtPmFuaW1hdGUobW9ub3RvbmljVGltZSk7CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YW5p
bWF0ZShtb25vdG9uaWNUaW1lLCB3YWxsQ2xvY2tUaW1lKTsKICAgICBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpGcmFtZURhdGEgZnJhbWU7Ci0gICAgbV9sYXllclRyZWVIb3N0SW1wbC0+cHJlcGFyZVRv
RHJhdyhmcmFtZSk7Ci0gICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7
CisgICAgYm9vbCBkcmF3RnJhbWUgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3
KGZyYW1lKSB8fCBmb3JjZWREcmF3OworICAgIGlmIChkcmF3RnJhbWUpCisgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogCiAgICAgLy8gQ2hlY2sgZm9yIGEg
cGVuZGluZyBjb21wb3NpdGVBbmRSZWFkYmFjay4KICAgICBpZiAobV9yZWFkYmFja1JlcXVlc3RP
bkltcGxUaHJlYWQpIHsKKyAgICAgICAgQVNTRVJUKGRyYXdGcmFtZSk7CiAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdEltcGwtPnJlYWRiYWNrKG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5w
aXhlbHMsIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5yZWN0KTsKICAgICAgICAgbV9y
ZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPnN1Y2Nlc3MgPSAhbV9sYXllclRyZWVIb3N0SW1w
bC0+aXNDb250ZXh0TG9zdCgpOwogICAgICAgICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVh
ZC0+Y29tcGxldGlvbi5zaWduYWwoKTsKICAgICAgICAgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxU
aHJlYWQgPSAwOwogICAgIH0KIAotICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnN3YXBCdWZmZXJz
KCk7CisgICAgaWYgKGRyYXdGcmFtZSkKKyAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c3dh
cEJ1ZmZlcnMoKTsKIAogICAgIC8vIFByb2Nlc3MgYW55IGZpbmlzaCByZXF1ZXN0CiAgICAgaWYg
KG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKSB7CisgICAg
ICAgIEFTU0VSVChkcmF3RnJhbWUpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5maW5p
c2hBbGxSZW5kZXJpbmcoKTsKICAgICAgICAgbV9maW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9u
RXZlbnRPbkltcGxUaHJlYWQtPnNpZ25hbCgpOwogICAgICAgICBtX2ZpbmlzaEFsbFJlbmRlcmlu
Z0NvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IDA7CkBAIC01ODEsNiArNTg1LDIwIEBAIHZv
aWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoKQogICAgICAgICBt
X25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZU9uSW1wbFRocmVhZCA9IGZhbHNlOwogICAg
ICAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMs
ICZDQ1RocmVhZFByb3h5OjpkaWRDb21taXRBbmREcmF3RnJhbWUpKTsKICAgICB9CisKKyAgICBy
ZXR1cm4gZHJhd0ZyYW1lOworfQorCitib29sIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlv
bkRyYXdBbmRTd2FwSWZQb3NzaWJsZSgpCit7CisgICAgcmV0dXJuIHNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSW50ZXJuYWwoZmFsc2UpOworfQorCit2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVk
dWxlZEFjdGlvbkRyYXdBbmRTd2FwRm9yY2VkKCkKK3sKKyAgICBib29sIHJlc3VsdCA9IHNjaGVk
dWxlZEFjdGlvbkRyYXdBbmRTd2FwSW50ZXJuYWwodHJ1ZSk7CisgICAgc3RhdGljX2Nhc3Q8dm9p
ZD4ocmVzdWx0KTsgLy8gVXNlIHRoZSB2YXJpYWJsZSBpbiByZWxlYXNlIGJ1aWxkcyB0byBhdm9p
ZCBjb21waWxlciB3YXJuaW5nLgorICAgIEFTU0VSVChyZXN1bHQpOwogfQogCiB2b2lkIENDVGhy
ZWFkUHJveHk6OmRpZENvbW1pdEFuZERyYXdGcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgK
aW5kZXggZTdiYWRhNjQwNmZhZGEzNTlhM2E4MTljOWRmM2YxZjVkOGYxMGViZC4uNDg2MWY3OTA5
MjYwMWMwMDVhMDUwNTIwZDU0N2VkMjFjZGY5ZDdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aApAQCAtODEsNyArODEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNhbkRyYXcoKTsK
ICAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCk7Ci0gICAgdmlydHVhbCB2b2lk
IHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCk7CisgICAgdmlydHVhbCBib29sIHNjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSgpOworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVs
ZWRBY3Rpb25EcmF3QW5kU3dhcEZvcmNlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRB
Y3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCk7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFj
dGlvbkNvbW1pdCgpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRl
eHRSZWNyZWF0aW9uKCk7CkBAIC0xMjUsNiArMTI2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxh
eWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2
b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1hZ2VPbkltcGxUaHJlYWQoKTsKICAgICB2b2lkIHJlY3Jl
YXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIEdyYXBoaWNzQ29udGV4
dDNEKiwgYm9vbCogcmVjcmVhdGVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMq
KTsKKyAgICBib29sIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSW50ZXJuYWwoYm9vbCBmb3Jj
ZWREcmF3KTsKIAogICAgIC8vIEFjY2Vzc2VkIG9uIG1haW4gdGhyZWFkIG9ubHkuCiAgICAgYm9v
bCBtX2FuaW1hdGVSZXF1ZXN0ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDQ0ZGNkMTQyNDJmNTMx
MGZhY2ZmZmY3NGE3OGFjN2MyZTNjZWE4YWIuLjUzNzFjYTgzYWJjNDU1MzNjZjAxODQ0Y2Y5N2Rk
MmM4NGM0Yjc5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC01NDIsMTMgKzU0MiwxNCBAQCBURVNU
X0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHByZXBhcmVUb0RyYXdGYWlsc1doZW5BbmltYXRp
b25Vc2VzQ2hlY2tlcmJvYXJkKQogICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVU
b0RyYXcoZnJhbWUpKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKIAotICAg
IC8vIFdoZW4gYSB0ZXh0dXJlIGlzIG1pc3NpbmcgYW5kIHdlJ3JlIGFuaW1hdGluZywgd2UgZG9u
J3QgZHJhdyBhbnl0aGluZy4KKyAgICAvLyBXaGVuIGEgdGV4dHVyZSBpcyBtaXNzaW5nIGFuZCB3
ZSdyZSBhbmltYXRpbmcsIHdlIGRvbid0IHdhbnQgdG8gZHJhdyBhbnl0aGluZy4KICAgICBtX2hv
c3RJbXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CiAgICAg
cm9vdCA9IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExh
eWVyKCkpOwogICAgIHJvb3QtPmFkZENoaWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6
OmNyZWF0ZSgxLCB0cnVlLCBmYWxzZSwgdHJ1ZSkpOwogICAgIGxheWVyID0gc3RhdGljX2Nhc3Q8
TWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcio+KHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCkp
OwogCiAgICAgRVhQRUNUX0ZBTFNFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsK
KyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKIAogICAgIC8vIFdoZW4gdGhlIGxh
eWVyIHNraXBzIGRyYXcgYW5kIHdlJ3JlIGFuaW1hdGluZywgd2Ugc3RpbGwgZHJhdyB0aGUgZnJh
bWUuCiAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKERpZERyYXdDaGVja0xheWVyOjpjcmVh
dGUoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCmluZGV4IGVhNmI5MjdlNTM5NDUwZjFkMGJh
Y2JhNDE3MTkyM2U3N2NhZGJmY2MuLmI4N2U0N2I4YzQ2Y2I0MDY0MTVhM2JlOTI0M2Y4MTk0NTIw
ZTE3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKQEAgLTExOSw2ICsxMTksNzMgQEAgVEVT
VChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RTZXRGb3JjZWRSZWRyYXdEb2VzTm90
U2V0c05vcm1hbFJlZHJhdykKICAgICBFWFBFQ1RfVFJVRShzdGF0ZS52c3luY0NhbGxiYWNrTmVl
ZGVkKCkpOwogfQogCitURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZhaWxl
ZERyYXdEb2VzTm90UmVtb3ZlTmVlZHNSZWRyYXcpCit7CisgICAgQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRO
ZWVkc1JlZHJhdygpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoc3RhdGUudnN5bmNDYWxsYmFja05lZWRlZCgpKTsKKyAgICBzdGF0ZS5k
aWRFbnRlclZTeW5jKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIFdl
J3JlIGRyYXdpbmcgbm93LgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBF
WFBFQ1RfRkFMU0Uoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKworICAgIC8vIEZhaWxpbmcgdGhl
IGRyYXcgbWFrZXMgdXMgcmVxdWlyZSBhIGRyYXcgYWdhaW4sIGJ1dCBub3QgdGhpcyBmcmFtZQor
ICAgIHN0YXRlLmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGUoZmFsc2UpOworICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24o
KSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKworICAgIC8vIE1v
dmUgdG8gYW5vdGhlciBmcmFtZS4gVGhpcyBzaG91bGQgbm93IGRyYXcuCisgICAgc3RhdGUuZGlk
TGVhdmVWU3luYygpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQo
KSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOworCisgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlv
bigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0RSQVdfSUZfUE9TU0lCTEUpOworICAgIHN0YXRlLmRpZERyYXdJZlBvc3NpYmxlQ29tcGxl
dGUodHJ1ZSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7
Cit9CisKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0U2V0TmVlZHNSZWRy
YXdEdXJpbmdGYWlsZWREcmF3RG9lc05vdFJlbW92ZU5lZWRzUmVkcmF3KQoreworICAgIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7Cisg
ICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS5yZWRyYXdQ
ZW5kaW5nKCkpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7
CisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7
CisKKyAgICAvLyBXZSdyZSBkcmF3aW5nIG5vdy4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUpOworICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7CisKKyAgICAv
LyBXaGlsZSBzdGlsbCBpbiB0aGUgc2FtZSB2c3luYyBjYWxsYmFjaywgc2V0IG5lZWRzIHJlZHJh
dyBhZ2Fpbi4KKyAgICAvLyBUaGlzIHNob3VsZCBub3QgcmVkcmF3LgorICAgIHN0YXRlLnNldE5l
ZWRzUmVkcmF3KCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIEZhaWxpbmcgdGhlIGRyYXcg
bWFrZXMgdXMgcmVxdWlyZSBhIGRyYXcgYWdhaW4sIGJ1dCBub3QgdGhpcyBmcmFtZQorICAgIHN0
YXRlLmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGUoZmFsc2UpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cisg
ICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKworICAgIC8vIE1vdmUgdG8g
YW5vdGhlciBmcmFtZS4gVGhpcyBzaG91bGQgbm93IGRyYXcuCisgICAgc3RhdGUuZGlkTGVhdmVW
U3luYygpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7Cisg
ICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOworCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsK
KyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RS
QVdfSUZfUE9TU0lCTEUpOworICAgIHN0YXRlLmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGUodHJ1
ZSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7Cit9CisK
IFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RG9lc3REcmF3VHdpY2VJblNh
bWVGcmFtZSkKIHsKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSBzdGF0ZTsKQEAgLTEyNiw4
ICsxOTMsOCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdERvZXN0RHJh
d1R3aWNlSW5TYW1lRnJhbWUpCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoKTsKICAgICBFWFBF
Q1RfVFJVRShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOwogICAgIHN0YXRlLmRpZEVudGVy
VlN5bmMoKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9E
UkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVyk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigp
KTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0RSQVdfSUZfUE9TU0lCTEUpOwogCiAgICAgLy8gV2hpbGUgc3RpbGwgaW4gdGhlIHNhbWUgdnN5
bmMgY2FsbGJhY2ssIHNldCBuZWVkcyByZWRyYXcgYWdhaW4uCiAgICAgLy8gVGhpcyBzaG91bGQg
bm90IHJlZHJhdy4KQEAgLTEzNSwxMiArMjAyLDE0IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LCBUZXN0RG9lc3REcmF3VHdpY2VJblNhbWVGcmFtZSkKICAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OwogCiAgICAgLy8gTW92ZSB0byBhbm90aGVyIGZyYW1lLiBUaGlzIHNob3VsZCBub3cgZHJhdy4K
KyAgICBzdGF0ZS5kaWREcmF3SWZQb3NzaWJsZUNvbXBsZXRlKHRydWUpOwogICAgIHN0YXRlLmRp
ZExlYXZlVlN5bmMoKTsKICAgICBFWFBFQ1RfVFJVRShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVk
KCkpOwogICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKIAotICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAg
c3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsK
KyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BP
U1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSk7CisgICAgc3RhdGUu
ZGlkRHJhd0lmUG9zc2libGVDb21wbGV0ZSh0cnVlKTsKICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUu
dnN5bmNDYWxsYmFja05lZWRlZCgpKTsKIH0KIApAQCAtMTYxLDExICsyMzAsMTEgQEAgVEVTVChD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROZXh0QWN0aW9uRHJhd3NPblZTeW5jKQog
CiAgICAgICAgICAgICAvLyBDYXNlIDE6IG5lZWRzQ29tbWl0PWZhbHNlCiAgICAgICAgICAgICBz
dGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7Ci0gICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAg
ICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19J
Rl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgICAgICAgICAgLy8gQ2FzZSAy
OiBuZWVkc0NvbW1pdD10cnVlCiAgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVl
KTsKLSAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNzQsNyArMjQzLDggQEAgVEVTVChDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROZXh0QWN0aW9uRHJhd3NPblZTeW5jKQogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgMjsgKytqKSB7CiAgICAgICAgICAgICBTdGF0
ZU1hY2hpbmUgc3RhdGU7CiAgICAgICAgICAgICBzdGF0ZS5zZXRDb21taXRTdGF0ZShhbGxDb21t
aXRTdGF0ZXNbaV0pOwotICAgICAgICAgICAgaWYgKCFqKSB7CisgICAgICAgICAgICBib29sIGZv
cmNlZERyYXcgPSBqOworICAgICAgICAgICAgaWYgKCFmb3JjZWREcmF3KSB7CiAgICAgICAgICAg
ICAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwogICAgICAgICAgICAgICAgIHN0YXRlLnNldE5l
ZWRzUmVkcmF3KHRydWUpOwogICAgICAgICAgICAgICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7
CkBAIC0xODMsNyArMjUzLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRl
c3ROZXh0QWN0aW9uRHJhd3NPblZTeW5jKQogCiAgICAgICAgICAgICBDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QWN0aW9uIGV4cGVjdGVkQWN0aW9uOwogICAgICAgICAgICAgaWYgKGFsbENvbW1p
dFN0YXRlc1tpXSAhPSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1JFQURZ
X1RPX0NPTU1JVCkKLSAgICAgICAgICAgICAgICBleHBlY3RlZEFjdGlvbiA9IENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVzsKKyAgICAgICAgICAgICAgICBleHBlY3RlZEFjdGlv
biA9IGZvcmNlZERyYXcgPyBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfRk9S
Q0VEIDogQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFOwog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGV4cGVjdGVkQWN0aW9uID0gQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQ7CiAKQEAgLTIzMSwyMiArMzAxLDIyIEBA
IFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Tm9Db21taXRTdGF0ZXNSZWRy
YXdXaGVuSW52aXNpYmxlKQogICAgICAgICAgICAgLy8gQ2FzZSAxOiBuZWVkc0NvbW1pdD1mYWxz
ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz1mYWxzZS4KICAgICAgICAgICAgIHN0YXRlLnNl
dE5lZWRzQ29tbWl0KGZhbHNlKTsKICAgICAgICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNv
dXJjZXNQZW5kaW5nKGZhbHNlKTsKLSAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgICAgICAg
ICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJ
QkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgICAgICAgICAvLyBDYXNlIDI6IG5lZWRz
Q29tbWl0PWZhbHNlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUuCiAgICAgICAgICAg
ICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7CiAgICAgICAgICAgICBzdGF0ZS5zZXRVcGRh
dGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKLSAgICAgICAgICAgIEVYUEVDVF9ORShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cisg
ICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFX
X0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgICAgICAgICAvLyBDYXNl
IDM6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9ZmFsc2UuCiAg
ICAgICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKICAgICAgICAgICAgIHN0YXRl
LnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKLSAgICAgICAgICAgIEVYUEVD
VF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CisgICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgICAgICAg
ICAvLyBDYXNlIDQ6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9
dHJ1ZS4KICAgICAgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwogICAgICAgICAg
ICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcodHJ1ZSk7Ci0gICAgICAgICAg
ICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOworICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICAg
ICAgfQogICAgIH0KIH0KQEAgLTI2Niw3ICszMzYsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdCwgVGVzdENhblJlZHJhd19TdG9wc0RyYXcpCiAgICAgICAgICAgICAgICAgc3Rh
dGUuZGlkRW50ZXJWU3luYygpOwogCiAgICAgICAgICAgICBzdGF0ZS5zZXRDYW5EcmF3KGZhbHNl
KTsKLSAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMzgxLDggKzQ1MSw5IEBAIFRFU1QoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19XaXRoUmVkcmF3X09uZVJvdW5k
T2ZVcGRhdGVzKQogCiAgICAgLy8gRW5zdXJlIHdlIGRyYXcgb24gdGhlIG5leHQgdnN5bmMgZXZl
biB0aG91Z2ggYW4gdXBkYXRlIGlzIGluLXByb2dyZXNzLgogICAgIHN0YXRlLmRpZEVudGVyVlN5
bmMoKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFX
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVyk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsK
KyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RS
QVdfSUZfUE9TU0lCTEUpOworICAgIHN0YXRlLmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGUodHJ1
ZSk7CiAKICAgICAvLyBFbnN1cmUgdGhhdCB3ZSBvbmNlIHdlIGhhdmUgZHJhd24sIHdlIGRvbnQg
ZG8gYW55dGhpbmcgZWxzZS4KICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwpAQCAtNDQ2LDkgKzUxNywxMCBAQCBU
RVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldE5lZWRzQ29tbWl0SXNOb3RM
b3N0KQogCiAgICAgLy8gQ29tbWl0IGFuZCBtYWtlIHN1cmUgd2UgZHJhdyBvbiBuZXh0IHZzeW5j
CiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9D
T01NSVQpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RS
QVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9XQUlUSU5H
X0ZPUl9GSVJTVF9EUkFXLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKLSAgICBzdGF0ZS51cGRhdGVT
dGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcpOworICAgIHN0YXRlLnVw
ZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJM
RSk7CisgICAgc3RhdGUuZGlkRHJhd0lmUG9zc2libGVDb21wbGV0ZSh0cnVlKTsKIAogICAgIC8v
IFZlcmlmeSB0aGF0IGFub3RoZXIgY29tbWl0IHdpbGwgYmVnaW4uCiAgICAgc3RhdGUuZGlkTGVh
dmVWU3luYygpOwpAQCAtNDkxLDggKzU2Myw5IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LCBUZXN0RnVsbEN5Y2xlKQogCiAgICAgLy8gQXQgdnN5bmMsIGRyYXcuCiAgICAgc3Rh
dGUuZGlkRW50ZXJWU3luYygpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgc3RhdGUudXBkYXRlU3Rh
dGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsKKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSk7CisgICAgc3RhdGUuZGlkRHJhd0lmUG9zc2li
bGVDb21wbGV0ZSh0cnVlKTsKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiAKICAgICAvLyBT
aG91bGQgYmUgc3luY2hyb25pemVkLCBubyBkcmF3IG5lZWRlZCwgbm8gYWN0aW9uIG5lZWRlZC4K
QEAgLTU0MSw4ICs2MTQsOSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVz
dEZ1bGxDeWNsZVdpdGhDb21taXRSZXF1ZXN0SW5iZXR3ZWVuKQogCiAgICAgLy8gQXQgdnN5bmMs
IGRyYXcuCiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAg
c3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsK
KyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BP
U1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSk7CisgICAgc3RhdGUu
ZGlkRHJhd0lmUG9zc2libGVDb21wbGV0ZSh0cnVlKTsKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5j
KCk7CiAKICAgICAvLyBTaG91bGQgYmUgc3luY2hyb25pemVkLCBubyBkcmF3IG5lZWRlZCwgbm8g
YWN0aW9uIG5lZWRlZC4KQEAgLTY1Miw3ICs3MjYsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0V2hlbklkbGVBbmRDb21taXRSZXF1ZXN0ZWRXaGls
ZQogICAgIC8vIHNldENhbkRyYXcuCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7CiAg
ICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUu
bmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS5zZXRDYW5EcmF3KGZhbHNlKTsKICAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOwogICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CkBAIC02NzIsNyArNzQ2LDcgQEAgVEVT
VChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDb250ZXh0TG9zdFdoaWxlQ29tbWl0
SW5Qcm9ncmVzcykKICAgICAvLyBTZXQgZGFtYWdlIGFuZCBleHBlY3QgYSBkcmF3LgogICAgIHN0
YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOwogICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKLSAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUudXBk
YXRlU3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7
CiAKQEAgLTcxMiw3ICs3ODYsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwg
VGVzdENvbnRleHRMb3N0V2hpbGVDb21taXRJblByb2dyZXNzQW5kQW5vdGhlcgogICAgIC8vIFNl
dCBkYW1hZ2UgYW5kIGV4cGVjdCBhIGRyYXcuCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1
ZSk7CiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwg
c3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0
aW9uKCkpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKIApAQCAtNzM4LDcgKzgxMiw3IEBA
IFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29udGV4dExvc3RXaGlsZUNv
bW1pdEluUHJvZ3Jlc3NBbmRBbm90aGVyCiAKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXLCBzdGF0ZS5jb21t
aXRTdGF0ZSgpKTsKIAotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigp
KTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8g
RXhwZWN0IHRvIGJlIHRvbGQgdG8gYmVnaW4gY29udGV4dCByZWNyZWF0aW9uLCBpbmRlcGVuZGVu
dCBvZiB2c3luYyBzdGF0ZQpAQCAtNzYwLDcgKzgzNCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LCBUZXN0RmluaXNoQWxsUmVuZGVyaW5nV2hpbGVDb250ZXh0TG9zdCkKICAg
ICAvLyBBc2sgYSBmb3JjZWQgcmVkcmF3IGFuZCB2ZXJpZnkgaXQgb2N1cnJzLgogICAgIHN0YXRl
LnNldE5lZWRzRm9yY2VkUmVkcmF3KHRydWUpOwogICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsK
LSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0RSQVdfRk9SQ0VELCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLmRpZExl
YXZlVlN5bmMoKTsKIAogICAgIC8vIENsZWFyIHRoZSBmb3JjZWQgcmVkcmF3IGJpdC4KQEAgLTc3
Myw3ICs4NDcsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZpbmlz
aEFsbFJlbmRlcmluZ1doaWxlQ29udGV4dExvc3QpCiAgICAgLy8gQXNrIGEgZm9yY2VkIHJlZHJh
dyBhbmQgdmVyaWZ5IGl0IG9jdXJycy4KICAgICBzdGF0ZS5zZXROZWVkc0ZvcmNlZFJlZHJhdyh0
cnVlKTsKICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0ZPUkNFRCwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAppbmRleCA0
NWY2MWI5MGJmNTRlMmVjZTc4YmRhODgzZmZhMGEyNmJkNTQzNmViLi5jMmY4N2Y1YzlmNzE2YThi
ZWNiMDdiNzI2NmFlMDA4MmIzZmI5ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCkBAIC01Niw3ICs1Niw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgY2FuRHJhdygpIHsgcmV0dXJuIG1fY2FuRHJhdzsgfQogICAgIHZpcnR1
YWwgYm9vbCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNb3Jl
UmVzb3VyY2VVcGRhdGVzOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2lu
RnJhbWUoKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUi
KTsgfQotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpIHsgbV9h
Y3Rpb25zLnB1c2hfYmFjaygic2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAiKTsgfQorICAgIHZp
cnR1YWwgYm9vbCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUoKSB7IG1fYWN0
aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSIpOyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dh
cEZvcmNlZCgpIHsgbV9hY3Rpb25zLnB1c2hfYmFjaygic2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3
YXBGb3JjZWQiKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3Jl
UmVzb3VyY2VzKCkgeyBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVN
b3JlUmVzb3VyY2VzIik7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQ29tbWl0
KCkgeyBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKCkgeyBt
X2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9u
Iik7IH0KQEAgLTk0LDcgKzk1LDcgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21t
aXQpCiAgICAgLy8gVGljayBzaG91bGQgZHJhdy4KICAgICB0aW1lU291cmNlLT50aWNrKCk7CiAg
ICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOwotICAgIEVYUEVDVF9TVFJFUSgi
c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBFWFBF
Q1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSIsIGNsaWVudC5h
Y3Rpb24oMCkpOwogICAgIEVYUEVDVF9GQUxTRSh0aW1lU291cmNlLT5hY3RpdmUoKSk7CiAgICAg
Y2xpZW50LnJlc2V0KCk7CiAKQEAgLTE0MCw3ICsxNDEsOCBAQCBjbGFzcyBTY2hlZHVsZXJDbGll
bnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdyA6IHB1YmxpYyBDQ1NjaGVkdWxlckNsaWVudCB7
CiBwdWJsaWM6CiAgICAgU2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXco
KQogICAgICAgICA6IG1fbnVtRHJhd3MoMCkKLSAgICAgICAgLCBtX3NjaGVkdWxlcigwKSB7IH0K
KyAgICAgICAgLCBtX3NjaGVkdWxlcigwKQorICAgICAgICAsIG1fZHJhd1N1Y2Nlc3ModHJ1ZSkg
eyB9CiAKICAgICB2b2lkIHNldFNjaGVkdWxlcihDQ1NjaGVkdWxlciogc2NoZWR1bGVyKSB7IG1f
c2NoZWR1bGVyID0gc2NoZWR1bGVyOyB9CiAKQEAgLTE0OSwyNyArMTUxLDMzIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGNhbkRyYXcoKSB7IHJldHVybiB0cnVlOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoKQorICAgIHZpcnR1YWwgYm9vbCBz
Y2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUoKQogICAgIHsKICAgICAgICAgLy8g
T25seSBzZXROZWVkc1JlZHJhdyB0aGUgZmlyc3QgdGltZSB0aGlzIGlzIGNhbGxlZAogICAgICAg
ICBpZiAoIW1fbnVtRHJhd3MpCiAgICAgICAgICAgICBtX3NjaGVkdWxlci0+c2V0TmVlZHNSZWRy
YXcoKTsKICAgICAgICAgbV9udW1EcmF3cysrOworICAgICAgICByZXR1cm4gbV9kcmF3U3VjY2Vz
czsKICAgICB9Ci0KKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBG
b3JjZWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJl
c291cmNlcygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25Db21taXQoKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlv
bigpIHsgfQogCisgICAgdm9pZCByZXNldE51bURyYXdzKCkgeyBtX251bURyYXdzID0gMDsgfQor
ICAgIHZvaWQgc2V0RHJhd1N1Y2Nlc3MoYm9vbCBkcmF3U3VjY2VzcykgeyBtX2RyYXdTdWNjZXNz
ID0gZHJhd1N1Y2Nlc3M7IH0KKwogcHJvdGVjdGVkOgogICAgIGludCBtX251bURyYXdzOwogICAg
IENDU2NoZWR1bGVyKiBtX3NjaGVkdWxlcjsKKyAgICBib29sIG1fZHJhd1N1Y2Nlc3M7CiB9Owog
Ci0vLyBUZXN0cyBmb3IgdHdvIGRpZmZlcmVudCBzaXR1YXRpb25zOgorLy8gVGVzdHMgZm9yIHRo
cmVlIGRpZmZlcmVudCBzaXR1YXRpb25zOgogLy8gMS4gdGhlIHNjaGVkdWxlciBkcm9wcGluZyBz
ZXROZWVkc1JlZHJhdyByZXF1ZXN0cyB0aGF0IGhhcHBlbiBpbnNpZGUKIC8vICAgIGEgc2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXAKIC8vIDIuIHRoZSBzY2hlZHVsZXIgZHJhd2luZyB0d2ljZSBp
bnNpZGUgYSBzaW5nbGUgdGljaworLy8gMy4gdGhlIHNjaGVkdWxlciBzdGlsbCBuZWVkcyBhIHJl
ZHJhdyBhZnRlciBhIGZhaWxlZCBkcmF3LCBidXQgZG9lc24ndCBhZnRlciBzdWNjZXNzLgogVEVT
VChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RSZWRyYXdJbnNpZGVEcmF3KQogewogICAgIFNjaGVk
dWxlckNsaWVudFRoYXRTZXROZWVkc0RyYXdJbnNpZGVEcmF3IGNsaWVudDsKQEAgLTE5MiwxMyAr
MjAwLDMzIEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0UmVkcmF3SW5zaWRlRHJhdykK
ICAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51bURyYXdzKCkpOwogICAgIEVYUEVDVF9GQUxTRShz
Y2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHRpbWVTb3VyY2Ut
PmFjdGl2ZSgpKTsKKworICAgIGNsaWVudC5yZXNldE51bURyYXdzKCk7CisgICAgY2xpZW50LnNl
dERyYXdTdWNjZXNzKGZhbHNlKTsKKworICAgIHNjaGVkdWxlci0+c2V0TmVlZHNSZWRyYXcoKTsK
KyAgICBFWFBFQ1RfVFJVRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CisgICAgRVhQRUNU
X1RSVUUodGltZVNvdXJjZS0+YWN0aXZlKCkpOworICAgIEVYUEVDVF9FUSgwLCBjbGllbnQubnVt
RHJhd3MoKSk7CisKKyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDEsIGNs
aWVudC5udW1EcmF3cygpKTsKKyAgICBFWFBFQ1RfVFJVRShzY2hlZHVsZXItPnJlZHJhd1BlbmRp
bmcoKSk7CisgICAgRVhQRUNUX1RSVUUodGltZVNvdXJjZS0+YWN0aXZlKCkpOworCisgICAgdGlt
ZVNvdXJjZS0+dGljaygpOworICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtRHJhd3MoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoc2NoZWR1bGVyLT5yZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9U
UlVFKHRpbWVTb3VyY2UtPmFjdGl2ZSgpKTsKKwogfQogCiBjbGFzcyBTY2hlZHVsZXJDbGllbnRU
aGF0U2V0TmVlZHNDb21taXRJbnNpZGVEcmF3IDogcHVibGljIENDU2NoZWR1bGVyQ2xpZW50IHsK
IHB1YmxpYzoKICAgICBTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNDb21taXRJbnNpZGVEcmF3
KCkKICAgICAgICAgOiBtX251bURyYXdzKDApCi0gICAgICAgICwgbV9zY2hlZHVsZXIoMCkgeyB9
CisgICAgICAgICwgbV9zY2hlZHVsZXIoMCkKKyAgICAgICAgLCBtX2RyYXdTdWNjZXNzKHRydWUp
IHsgfQogCiAgICAgdm9pZCBzZXRTY2hlZHVsZXIoQ0NTY2hlZHVsZXIqIHNjaGVkdWxlcikgeyBt
X3NjaGVkdWxlciA9IHNjaGVkdWxlcjsgfQogCkBAIC0yMDcsMjUgKzIzNSwzMiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3KCkgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkKKyAgICB2aXJ0dWFsIGJvb2wg
c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxlKCkKICAgICB7CiAgICAgICAgIC8v
IE9ubHkgc2V0TmVlZHNDb21taXQgdGhlIGZpcnN0IHRpbWUgdGhpcyBpcyBjYWxsZWQKICAgICAg
ICAgaWYgKCFtX251bURyYXdzKQogICAgICAgICAgICAgbV9zY2hlZHVsZXItPnNldE5lZWRzQ29t
bWl0KCk7CiAgICAgICAgIG1fbnVtRHJhd3MrKzsKKyAgICAgICAgcmV0dXJuIG1fZHJhd1N1Y2Nl
c3M7CiAgICAgfQotCisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2Fw
Rm9yY2VkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVS
ZXNvdXJjZXMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRp
b24oKSB7IH0KIAorICAgIHZvaWQgcmVzZXROdW1EcmF3cygpIHsgbV9udW1EcmF3cyA9IDA7IH0K
KyAgICB2b2lkIHNldERyYXdTdWNjZXNzKGJvb2wgZHJhd1N1Y2Nlc3MpIHsgbV9kcmF3U3VjY2Vz
cyA9IGRyYXdTdWNjZXNzOyB9CisKIHByb3RlY3RlZDoKICAgICBpbnQgbV9udW1EcmF3czsKICAg
ICBDQ1NjaGVkdWxlciogbV9zY2hlZHVsZXI7CisgICAgYm9vbCBtX2RyYXdTdWNjZXNzOwogfTsK
IAotLy8gVGVzdHMgZm9yIHRoZSBzY2hlZHVsZXIgaW5maW5pdGUtbG9vcGluZyBvbiBzZXROZWVk
c0NvbW1pdCByZXF1ZXN0cyB0aGF0Ci0vLyBoYXBwZW4gaW5zaWRlIGEgc2NoZWR1bGVkQWN0aW9u
RHJhd0FuZFN3YXAKKy8vIFRlc3RzIGZvciB0d28gZGlmZmVyZW50IHNpdHVhdGlvbnM6CisvLyAx
LiBUZXN0cyBmb3IgdGhlIHNjaGVkdWxlciBpbmZpbml0ZS1sb29waW5nIG9uIHNldE5lZWRzQ29t
bWl0IHJlcXVlc3RzIHRoYXQKKy8vICAgIGhhcHBlbiBpbnNpZGUgYSBzY2hlZHVsZWRBY3Rpb25E
cmF3QW5kU3dhcC4KKy8vIDIuIElmIHRoZSBkcmF3cyBmYWlsIHRoZW4gdGhlIHBlbmRpbmcgY29t
bWl0IHNob3VsZCBub3QgYmUgZHJvcHBlZC4KIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0
Q29tbWl0SW5zaWRlRHJhdykKIHsKICAgICBTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNDb21t
aXRJbnNpZGVEcmF3IGNsaWVudDsKQEAgLTI0OSw2ICsyODQsMjYgQEAgVEVTVChDQ1NjaGVkdWxl
clRlc3QsIFJlcXVlc3RDb21taXRJbnNpZGVEcmF3KQogICAgIEVYUEVDVF9FUSgyLCBjbGllbnQu
bnVtRHJhd3MoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHRpbWVTb3VyY2UtPmFjdGl2ZSgpKTsKICAg
ICBFWFBFQ1RfRkFMU0Uoc2NoZWR1bGVyLT5yZWRyYXdQZW5kaW5nKCkpOworCisgICAgY2xpZW50
LnJlc2V0TnVtRHJhd3MoKTsKKyAgICBjbGllbnQuc2V0RHJhd1N1Y2Nlc3MoZmFsc2UpOworCisg
ICAgc2NoZWR1bGVyLT5zZXROZWVkc1JlZHJhdygpOworICAgIEVYUEVDVF9UUlVFKHNjaGVkdWxl
ci0+cmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfRVEoMCwgY2xpZW50Lm51bURyYXdzKCkp
OworICAgIEVYUEVDVF9UUlVFKHRpbWVTb3VyY2UtPmFjdGl2ZSgpKTsKKworICAgIHRpbWVTb3Vy
Y2UtPnRpY2soKTsKKyAgICBFWFBFQ1RfVFJVRSh0aW1lU291cmNlLT5hY3RpdmUoKSk7CisgICAg
RVhQRUNUX0VRKDEsIGNsaWVudC5udW1EcmF3cygpKTsKKyAgICBFWFBFQ1RfVFJVRShzY2hlZHVs
ZXItPmNvbW1pdFBlbmRpbmcoKSk7CisgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxldGUo
KTsKKworICAgIHRpbWVTb3VyY2UtPnRpY2soKTsKKyAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51
bURyYXdzKCkpOworICAgIEVYUEVDVF9UUlVFKHRpbWVTb3VyY2UtPmFjdGl2ZSgpKTsKKyAgICBF
WFBFQ1RfVFJVRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CisKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133324</attachid>
            <date>2012-03-22 12:44:08 -0700</date>
            <delta_ts>2012-03-22 13:37:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81716-20120322154407.patch</filename>
            <type>text/plain</type>
            <size>46504</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZkZTIyNWIxZDI5NzM1
NWY4MWZhNzI1NjA1MzQ4NjBlNzlmOTYzMS4uMjAzNmQyYjE0Y2UwZWVhYjI0ZDIyMDIyNGI2MmI2
MmZkZmY4MmFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTAzLTIyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU2tp
cCBmcmFtZXMgd2hlbiBjaGVja2VyYm9hcmRpbmcgYW4gYW5pbWF0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTcxNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBzdG9wIGRyYXdpbmcg
ZnJhbWVzIHdoZW4gcHJlcGFyZVRvRHJhdyBmYWlscywgaWYgdGhlIGRyYXcgaXMKKyAgICAgICAg
bm90IGZvcmNlZC4gVGhlIGV4cGVjdGVkIGJlaGF2aW91ciBpcyBvdXRsaW5lZCBiZWxvdyBieSB0
aGUgdW5pdCB0ZXN0cy4KKworICAgICAgICBXaGVuIGEgZHJhdyBmYWlscywgd2U6CisgICAgICAg
IDEuIFNldCBtX25lZWRzUmVkcmF3IHRvIHRyeSBhZ2FpbiBuZXh0IHZzeW5jCisgICAgICAgIDIu
IFNldCBtX25lZWRzQ29tbWl0IGJlY2F1c2Ugd2UgbmVlZCBtb3JlIGRhdGEgZnJvbSB3ZWJraXQg
dG8gc3VjY2VlZAorICAgICAgICAzLiBTZXQgbV9kcmF3SWZQb3NzaWJsZUZhaWxlZC4gVGhpcyBh
bGxvd3MgdXMgdG8gdHJ5IGRyYXcgYWdhaW4gd2l0aGluCisgICAgICAgIHRoZSBzYW1lIHZzeW5j
ICppZiogYSBjb21taXQgZmluaXNoZXMgZHVyaW5nIHRoaXMgdGltZS4KKworICAgICAgICBVbml0
IHRlc3Q6IENDU2NoZWR1bGVyVGVzdC5SZXF1ZXN0UmVkcmF3SW5zaWRlRmFpbGVkRHJhdworICAg
ICAgICAgICAgICAgICAgIENDU2NoZWR1bGVyVGVzdC5SZXF1ZXN0Q29tbWl0SW5zaWRlRmFpbGVk
RHJhdworICAgICAgICAgICAgICAgICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5UZXN0
RmFpbGVkRHJhd1NldHNOZWVkc0NvbW1pdEFuZERvZXNOb3REcmF3QWdhaW4KKyAgICAgICAgICAg
ICAgICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuVGVzdFNldE5lZWRzUmVkcmF3RHVy
aW5nRmFpbGVkRHJhd0RvZXNOb3RSZW1vdmVOZWVkc1JlZHJhdworICAgICAgICAgICAgICAgICAg
IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5UZXN0Q29tbWl0QWZ0ZXJGYWlsZWREcmF3QWxs
b3dzRHJhd0luU2FtZUZyYW1lCisgICAgICAgICAgICAgICAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LlRlc3RDb21taXRBZnRlckZhaWxlZEFuZFN1Y2Nlc3NmdWxEcmF3RG9lc05vdEFs
bG93RHJhd0luU2FtZUZyYW1lCisgICAgICAgICAgICAgICAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LlRlc3RGYWlsZWREcmF3SXNSZXRyaWVkTmV4dFZTeW5jCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3Nl
cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcmVwYXJlVG9EcmF3
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmg6CisgICAgICAgIChDQ1Nj
aGVkdWxlckNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6ZGlkRHJhd0lmUG9zc2libGVDb21wbGV0ZWQp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaDoKKyAgICAgICAgKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9z
c2libGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9u
RHJhd0FuZFN3YXBGb3JjZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTAz
LTIyICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKICAg
ICAgICAgVGlsZWRCYWNraW5nU3RvcmU6IEZpeCB0ZXN0IHJlZ3Jlc3Npb25zIHRoYXQgYXBwZWFy
ZWQgd2l0aCByMTExNTYwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhYTFmODg4MWNk
NjE3YTNhMGE4NTJlZmU2YTcxYmM1NGMxZmM4MTRjLi41OGI4MTgwYmNiZTM1ZjBiOTAzMmJjNDZh
ZGQ4ZTUyMWU5YmVmNGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDEyLTAzLTIyICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtjaHJvbWl1bV0gU2tpcCBmcmFtZXMgd2hlbiBjaGVja2VyYm9hcmRpbmcgYW4gYW5p
bWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MTcxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtl
Q0NTY2hlZHVsZXJDbGllbnQ6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSk6
CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUNDU2NoZWR1bGVyQ2xpZW50OjpzY2hlZHVsZWRB
Y3Rpb25EcmF3QW5kU3dhcEZvcmNlZCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVCk6Cisg
ICAgICAgIChXZWJLaXRUZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lk
ZURyYXc6OlNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0RyYXdJbnNpZGVEcmF3KToKKyAgICAg
ICAgKFdlYktpdFRlc3RzOjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJh
dzo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYktp
dFRlc3RzOjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdzo6c2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXBGb3JjZWQpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlNjaGVk
dWxlckNsaWVudFRoYXRTZXROZWVkc0RyYXdJbnNpZGVEcmF3OjpzZXREcmF3U3VjY2Vzcyk6Cisg
ICAgICAgIChTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdyk6CisgICAg
ICAgIChXZWJLaXRUZXN0cyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6U2NoZWR1bGVyQ2xpZW50
VGhhdFNldE5lZWRzQ29tbWl0SW5zaWRlRHJhdzo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRz
Q29tbWl0SW5zaWRlRHJhdyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6U2NoZWR1bGVyQ2xpZW50
VGhhdFNldE5lZWRzQ29tbWl0SW5zaWRlRHJhdzo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJ
ZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0
TmVlZHNDb21taXRJbnNpZGVEcmF3OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZvcmNlZCk6
CisgICAgICAgIChXZWJLaXRUZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzQ29tbWl0
SW5zaWRlRHJhdzo6cmVzZXROdW1EcmF3cyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6U2NoZWR1
bGVyQ2xpZW50VGhhdFNldE5lZWRzQ29tbWl0SW5zaWRlRHJhdzo6c2V0RHJhd1N1Y2Nlc3MpOgor
ICAgICAgICAoU2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzQ29tbWl0SW5zaWRlRHJhdyk6CisK
IDIwMTItMDMtMjIgIEJlcm5oYXJkIEJhdWVyICA8YmF1ZXJiQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgW2Nocm9taXVtXSBQbHVnLWluIGZhaWxpbmcgdG8gbG9hZCBzaG91bGRuJ3Qgc2F5ICJNaXNz
aW5nIFBsdWctaW4iCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4
IDQ0M2ExZmZhYTc3YmEwZWU1MjAyOWRmMGUzYWIxNDk2N2Y0YzUyZGIuLjYxYzA4YjU4NTFhNDhm
Y2YwNGEzZGViYzQwMTNmNjhhZDA4YzMzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuY3BwCkBAIC0yNzUsNyArMjc1LDkgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYgcGFzc2VzLCBDQ0xheWUK
ICAgICAvLyBBZGQgcXVhZHMgdG8gdGhlIFJlbmRlciBwYXNzZXMgaW4gRnJvbnRUb0JhY2sgb3Jk
ZXIgdG8gYWxsb3cgZm9yIHRlc3Rpbmcgb2NjbHVzaW9uIGFuZCBwZXJmb3JtaW5nIGN1bGxpbmcg
ZHVyaW5nIHRoZSB0cmVlIHdhbGsuCiAgICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8Q0NMYXll
ckltcGwsIFZlY3RvcjxDQ0xheWVySW1wbCo+LCBDQ1JlbmRlclN1cmZhY2UsIENDTGF5ZXJJdGVy
YXRvckFjdGlvbnM6OkZyb250VG9CYWNrPiBDQ0xheWVySXRlcmF0b3JUeXBlOwogCi0gICAgLy8g
SWYgd2UgYXJlIHVuYWJsZSB0byBkcmF3IGFuIGFuaW1hdGlvbiBvbiBzb21lIGxheWVyLCB0aGVu
IHdlIGFib3J0IHRoZSBlbnRpcmUgZnJhbWUuCisgICAgLy8gVHlwaWNhbGx5IHdoZW4gd2UgYXJl
IG1pc3NpbmcgYSB0ZXh0dXJlIGFuZCB1c2UgYSBjaGVja2VyYm9hcmQgcXVhZCwgd2Ugc3RpbGwg
ZHJhdyB0aGUgZnJhbWUuIEhvd2V2ZXIgd2hlbiB0aGUgbGF5ZXIgYmVpbmcKKyAgICAvLyBjaGVj
a2VyYm9hcmRlZCBpcyBtb3ZpbmcgZHVlIHRvIGFuIGltcGwtYW5pbWF0aW9uLCB3ZSBkcm9wIHRo
ZSBmcmFtZSB0byBhdm9pZCBmbGFzaGluZyBkdWUgdG8gdGhlIHRleHR1cmUgc3VkZGVubHkgYXBw
ZWFyaW5nCisgICAgLy8gaW4gdGhlIGZ1dHVyZS4KICAgICBib29sIGRyYXdGcmFtZSA9IHRydWU7
CiAKICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVu
ZCgmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CkBAIC0zMDYsMTAgKzMwOCw4IEBAIGJvb2wgQ0NM
YXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3Qm
IHBhc3NlcywgQ0NMYXllCiAgICAgICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9yTGF5ZXIoKml0LCAm
b2NjbHVzaW9uVHJhY2tlciwgdXNlZENoZWNrZXJib2FyZCk7CiAgICAgICAgIGlmICh1c2VkQ2hl
Y2tlcmJvYXJkKSB7CiAgICAgICAgICAgICBib29sIGxheWVySGFzQW5pbWF0aW5nVHJhbnNmb3Jt
ID0gaXQtPnNjcmVlblNwYWNlVHJhbnNmb3JtSXNBbmltYXRpbmcoKSB8fCBpdC0+ZHJhd1RyYW5z
Zm9ybUlzQW5pbWF0aW5nKCk7Ci0gICAgICAgICAgICBpZiAobGF5ZXJIYXNBbmltYXRpbmdUcmFu
c2Zvcm0pIHsKKyAgICAgICAgICAgIGlmIChsYXllckhhc0FuaW1hdGluZ1RyYW5zZm9ybSkKICAg
ICAgICAgICAgICAgICBkcmF3RnJhbWUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIoKml0KTsKQEAgLTM2NywxMSArMzY3LDggQEAgYm9vbCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpwcmVwYXJlVG9EcmF3KEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgaWYg
KCFyb290TGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFjYWxjdWxh
dGVSZW5kZXJQYXNzZXMoZnJhbWUucmVuZGVyUGFzc2VzLCBmcmFtZS5yZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0KSkgewotICAgICAgICBmcmFtZS5yZW5kZXJQYXNzZXMuY2xlYXIoKTsKLSAgICAgICAg
ZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlzdC5jbGVhcigpOworICAgIGlmICghY2FsY3VsYXRl
UmVuZGVyUGFzc2VzKGZyYW1lLnJlbmRlclBhc3NlcywgZnJhbWUucmVuZGVyU3VyZmFjZUxheWVy
TGlzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAgICAvLyBJZiB3ZSByZXR1
cm4gdHJ1ZSwgdGhlbiB3ZSBleHBlY3QgZHJhd0xheWVycygpIHRvIGJlIGNhbGxlZCBiZWZvcmUg
dGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYWdhaW4uCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggZTBjNmU3M2EzMzQyMGRkNDdkMDk1NDI4
NjJjYjlhNDhhMGFkMWNiMC4uMDJlOWIxMDM3NzRlZjVlYjQ0OGM0NmI1YTE5NmZjZDVkMzUxY2Nk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtODgsNiArODgsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ29tbWl0KCk7CiAgICAgdmlydHVhbCB2
b2lkIGNvbW1pdENvbXBsZXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGUoZG91YmxlIG1v
bm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKKyAgICAvLyBSZXR1cm5zIGZhbHNl
IGlmIHByb2JsZW1zIG9jY3VyZWQgcHJlcGFyaW5nIHRoZSBmcmFtZSwgYW5kIHdlIHNob3VsZCB0
cnkgdG8gYXZvaWQgZGlzcGxheWluZyB0aGUgZnJhbWUuCiAgICAgdmlydHVhbCBib29sIHByZXBh
cmVUb0RyYXcoRnJhbWVEYXRhJik7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnMoY29uc3Qg
RnJhbWVEYXRhJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAppbmRleCA2MWJkOTMxM2Y1NGJj
ZTJiMGJkZGVhODU0NjQ3OWEzMGEyZTUyYTY0Li4xYjE0OGNhMjJlMmYwYmM3MzViZTEyZThmZjRl
ODQ3NzJmNTAzNWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCkBAIC0xNjIsOCArMTYyLDE0
IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCkKICAgICAgICAg
Y2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVDoKICAgICAgICAgICAg
IG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25Db21taXQoKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVzoKLSAgICAg
ICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpOworICAgICAgICBj
YXNlIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRTogewor
ICAgICAgICAgICAgYm9vbCBkcmF3U3VjY2VzcyA9IG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25E
cmF3QW5kU3dhcElmUG9zc2libGUoKTsKKyAgICAgICAgICAgIG1fc3RhdGVNYWNoaW5lLmRpZERy
YXdJZlBvc3NpYmxlQ29tcGxldGVkKGRyYXdTdWNjZXNzKTsKKyAgICAgICAgICAgIG1fZnJhbWVS
YXRlQ29udHJvbGxlci0+ZGlkQmVnaW5GcmFtZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdf
Rk9SQ0VEOgorICAgICAgICAgICAgbV9jbGllbnQtPnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2Fw
Rm9yY2VkKCk7CiAgICAgICAgICAgICBtX2ZyYW1lUmF0ZUNvbnRyb2xsZXItPmRpZEJlZ2luRnJh
bWUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fQkVHSU5fQ09OVEVYVF9SRUNSRUFUSU9OOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
LmgKaW5kZXggOGVmNWRjZjcyYzI3MGEzYTZjODE0N2U0MDcyMDU5MmU4NzFkNjZlNC4uYzg3NmUy
MGJjODc3OGRjNzlhZjM4OWMwYjlhOWNiYzNhY2JhNjk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5o
CkBAIC00MSw3ICs0MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZVJlc291
cmNlVXBkYXRlcygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rp
b25CZWdpbkZyYW1lKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3
QW5kU3dhcCgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3
YXBJZlBvc3NpYmxlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3
QW5kU3dhcEZvcmNlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uVXBk
YXRlTW9yZVJlc291cmNlcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9u
Q29tbWl0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRl
eHRSZWNyZWF0aW9uKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmUuY3BwCmluZGV4IGYzN2YwYjQxN2IzZWVkNTdmMjBjY2NlMzE1ZDY5MDNlZDlhN2E4ZDYu
LjdkZjEyMjY2YWMxNTQ2MDZlYmJmMGY3NWI2Y2M2ZDRkZmM1MDAzYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgImNjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
LmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCw2
ICs0MSw3IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZSgpCiAgICAgLCBtX2luc2lkZVZTeW5jKGZhbHNlKQogICAgICwgbV92aXNpYmxlKGZhbHNlKQog
ICAgICwgbV9jYW5EcmF3KHRydWUpCisgICAgLCBtX2RyYXdJZlBvc3NpYmxlRmFpbGVkKGZhbHNl
KQogICAgICwgbV9jb250ZXh0U3RhdGUoQ09OVEVYVF9BQ1RJVkUpCiB7CiB9CkBAIC03MSwxMSAr
NzMsMTAgQEAgYm9vbCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2hvdWxkRHJhdygpIGNvbnN0
CiAKIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6Om5leHRBY3Rpb24oKSBjb25zdAogewotCiAgICAgc3dpdGNoIChtX2NvbW1pdFN0YXRlKSB7
CiAgICAgY2FzZSBDT01NSVRfU1RBVEVfSURMRToKICAgICAgICAgaWYgKG1fY29udGV4dFN0YXRl
ICE9IENPTlRFWFRfQUNUSVZFICYmIG1fbmVlZHNGb3JjZWRSZWRyYXcpCi0gICAgICAgICAgICBy
ZXR1cm4gQUNUSU9OX0RSQVc7CisgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVdfRk9SQ0VE
OwogICAgICAgICBpZiAobV9jb250ZXh0U3RhdGUgIT0gQ09OVEVYVF9BQ1RJVkUgJiYgbV9uZWVk
c0ZvcmNlZENvbW1pdCkKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fQkVHSU5fRlJBTUU7CiAg
ICAgICAgIGlmIChtX2NvbnRleHRTdGF0ZSA9PSBDT05URVhUX0xPU1QpCkBAIC04MywxOSArODQs
MTkgQEAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6bmV4dEFjdGlvbigpIGNvbnN0CiAgICAgICAgIGlmIChtX2NvbnRleHRTdGF0ZSA9PSBD
T05URVhUX1JFQ1JFQVRJTkcpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAgICAg
ICAgIGlmIChzaG91bGREcmF3KCkpCi0gICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7Cisg
ICAgICAgICAgICByZXR1cm4gbV9uZWVkc0ZvcmNlZFJlZHJhdyA/IEFDVElPTl9EUkFXX0ZPUkNF
RCA6IEFDVElPTl9EUkFXX0lGX1BPU1NJQkxFOwogICAgICAgICBpZiAobV9uZWVkc0NvbW1pdCAm
JiAobV92aXNpYmxlIHx8IG1fbmVlZHNGb3JjZWRDb21taXQpKQogICAgICAgICAgICAgcmV0dXJu
IEFDVElPTl9CRUdJTl9GUkFNRTsKICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwogCiAgICAg
Y2FzZSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1M6CiAgICAgICAgIGlmIChzaG91bGRE
cmF3KCkpCi0gICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CisgICAgICAgICAgICByZXR1
cm4gbV9uZWVkc0ZvcmNlZFJlZHJhdyA/IEFDVElPTl9EUkFXX0ZPUkNFRCA6IEFDVElPTl9EUkFX
X0lGX1BPU1NJQkxFOwogICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAKICAgICBjYXNlIENP
TU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVM6CiAgICAgICAgIGlmIChzaG91bGREcmF3KCkp
Ci0gICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CisgICAgICAgICAgICByZXR1cm4gbV9u
ZWVkc0ZvcmNlZFJlZHJhdyA/IEFDVElPTl9EUkFXX0ZPUkNFRCA6IEFDVElPTl9EUkFXX0lGX1BP
U1NJQkxFOwogICAgICAgICBpZiAoIW1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcpCiAgICAg
ICAgICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzsKICAgICAg
ICAgcmV0dXJuIEFDVElPTl9OT05FOwpAQCAtMTA1LDcgKzEwNiw3IEBAIENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBj
b25zdAogCiAgICAgY2FzZSBDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVzoKICAg
ICAgICAgaWYgKHNob3VsZERyYXcoKSB8fCBtX2NvbnRleHRTdGF0ZSA9PSBDT05URVhUX0xPU1Qp
Ci0gICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CisgICAgICAgICAgICByZXR1cm4gbV9u
ZWVkc0ZvcmNlZFJlZHJhdyA/IEFDVElPTl9EUkFXX0ZPUkNFRCA6IEFDVElPTl9EUkFXX0lGX1BP
U1NJQkxFOwogICAgICAgICAvLyBDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVyB3
YW50cyB0byBlbmZvcmNlIGEgZHJhdy4gSWYgbV9jYW5EcmF3IGlzIGZhbHNlLAogICAgICAgICAv
LyBwcm9jZWVkIHRvIHRoZSBuZXh0IHN0ZXAgKHNpbWlsYXIgYXMgaW4gQ09NTUlUX1NUQVRFX0lE
TEUpLgogICAgICAgICBpZiAoIW1fY2FuRHJhdyAmJiBtX25lZWRzQ29tbWl0ICYmIChtX3Zpc2li
bGUgfHwgbV9uZWVkc0ZvcmNlZENvbW1pdCkpCkBAIC0xNDAsMTEgKzE0MSwxNSBAQCB2b2lkIEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZShBY3Rpb24gYWN0aW9uKQogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX0lETEU7CiAg
ICAgICAgIG1fbmVlZHNSZWRyYXcgPSB0cnVlOworICAgICAgICBpZiAobV9kcmF3SWZQb3NzaWJs
ZUZhaWxlZCkKKyAgICAgICAgICAgIG1fbGFzdEZyYW1lTnVtYmVyV2hlcmVEcmF3V2FzQ2FsbGVk
ID0gLTE7CiAgICAgICAgIHJldHVybjsKIAotICAgIGNhc2UgQUNUSU9OX0RSQVc6CisgICAgY2Fz
ZSBBQ1RJT05fRFJBV19GT1JDRUQ6CisgICAgY2FzZSBBQ1RJT05fRFJBV19JRl9QT1NTSUJMRToK
ICAgICAgICAgbV9uZWVkc1JlZHJhdyA9IGZhbHNlOwogICAgICAgICBtX25lZWRzRm9yY2VkUmVk
cmF3ID0gZmFsc2U7CisgICAgICAgIG1fZHJhd0lmUG9zc2libGVGYWlsZWQgPSBmYWxzZTsKICAg
ICAgICAgaWYgKG1faW5zaWRlVlN5bmMpCiAgICAgICAgICAgICBtX2xhc3RGcmFtZU51bWJlcldo
ZXJlRHJhd1dhc0NhbGxlZCA9IG1fY3VycmVudEZyYW1lTnVtYmVyOwogICAgICAgICBpZiAobV9j
b21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVykgewpAQCAt
MTk5LDYgKzIwNCwxNSBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXROZWVkc0Zv
cmNlZFJlZHJhdygpCiAgICAgbV9uZWVkc0ZvcmNlZFJlZHJhdyA9IHRydWU7CiB9CiAKK3ZvaWQg
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGVkKGJvb2wg
c3VjY2VzcykKK3sKKyAgICBtX2RyYXdJZlBvc3NpYmxlRmFpbGVkID0gIXN1Y2Nlc3M7CisgICAg
aWYgKG1fZHJhd0lmUG9zc2libGVGYWlsZWQpIHsKKyAgICAgICAgbV9uZWVkc1JlZHJhdyA9IHRy
dWU7CisgICAgICAgIG1fbmVlZHNDb21taXQgPSB0cnVlOworICAgIH0KK30KKwogdm9pZCBDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6c2V0TmVlZHNDb21taXQoKQogewogICAgIG1fbmVlZHNDb21t
aXQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKaW5k
ZXggNjFiZWMzOTRlY2U4MDk1M2NhZDlkNWJhOGJmMzA2Njk1YzBlMWY4MS4uNmNkOGMzMjNjODhk
ZTk1NDc4MmExZWQwZmQxZmIxMmQ0OGI4YzlmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZS5oCkBAIC02OSw3ICs2OSw4IEBAIHB1YmxpYzoKICAgICAgICAgQUNU
SU9OX0JFR0lOX0ZSQU1FLAogICAgICAgICBBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VS
Q0VTLAogICAgICAgICBBQ1RJT05fQ09NTUlULAotICAgICAgICBBQ1RJT05fRFJBVywKKyAgICAg
ICAgQUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsCisgICAgICAgIEFDVElPTl9EUkFXX0ZPUkNFRCwK
ICAgICAgICAgQUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTgogICAgIH07CiAgICAgQWN0
aW9uIG5leHRBY3Rpb24oKSBjb25zdDsKQEAgLTk1LDYgKzk2LDkgQEAgcHVibGljOgogICAgIC8v
IHdlIGFyZSBub3QgdmlzaWJsZS4KICAgICB2b2lkIHNldE5lZWRzRm9yY2VkUmVkcmF3KCk7CiAK
KyAgICAvLyBJbmRpY2F0ZXMgd2hldGhlciBBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSBkcmF3IHRv
IHRoZSBzY3JlZW4gb3Igbm90LgorICAgIHZvaWQgZGlkRHJhd0lmUG9zc2libGVDb21wbGV0ZWQo
Ym9vbCBzdWNjZXNzKTsKKwogICAgIC8vIEluZGljYXRlcyB0aGF0IGEgbmV3IGNvbW1pdCBmbG93
IG5lZWRzIHRvIGJlIHBlcmZvcm1lZCwgZWl0aGVyIHRvIHB1bGwKICAgICAvLyB1cGRhdGVzIGZy
b20gdGhlIG1haW4gdGhyZWFkIHRvIHRoZSBpbXBsLCBvciB0byBwdXNoIGRlbHRhcyBmcm9tIHRo
ZSBpbXBsCiAgICAgLy8gdGhyZWFkIHRvIG1haW4uCkBAIC0xMjIsNiArMTI2LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KCk7CiAKIHByb3RlY3RlZDoKKyAgICBib29s
IHNob3VsZERyYXdGb3JjZWQoKSBjb25zdDsKICAgICBib29sIHNob3VsZERyYXcoKSBjb25zdDsK
ICAgICBib29sIGhhc0RyYXduVGhpc0ZyYW1lKCkgY29uc3Q7CiAKQEAgLTEzNyw2ICsxNDIsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2luc2lkZVZTeW5jOwogICAgIGJvb2wgbV92aXNpYmxl
OwogICAgIGJvb2wgbV9jYW5EcmF3OworICAgIGJvb2wgbV9kcmF3SWZQb3NzaWJsZUZhaWxlZDsK
ICAgICBDb250ZXh0U3RhdGUgbV9jb250ZXh0U3RhdGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwCmluZGV4IGU0MTczYThhZDYxMTNmN2VkYzRiOTAyYWIwYTdmODUwODYzYTE0NWYu
LjdmMjM3YWQyMjYyYmViYzNkZDE2NjYzYzg5MjZlMzQyMzZjZDUzYmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCkBAIC01NDIsMTIgKzU0MiwxMiBAQCB2b2lkIENDVGhyZWFkUHJveHk6
OnNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24oKQogICAgIG1fbWFpblRocmVh
ZFByb3h5LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6
OmJlZ2luQ29udGV4dFJlY3JlYXRpb24pKTsKIH0KIAotdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hl
ZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpCitib29sIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFj
dGlvbkRyYXdBbmRTd2FwSW50ZXJuYWwoYm9vbCBmb3JjZWREcmF3KQogewogICAgIFRSQUNFX0VW
RU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCIsIHRoaXMsIDAp
OwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJ
bXBsKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gRklY
TUU6IGNvbXB1dGUgdGhlIGZyYW1lIGRpc3BsYXkgdGltZSBtb3JlIGludGVsbGlnZW50bHkKICAg
ICBkb3VibGUgbW9ub3RvbmljVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwpA
QCAtNTU2LDExICs1NTYsMTMgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25E
cmF3QW5kU3dhcCgpCiAgICAgbV9pbnB1dEhhbmRsZXJPbkltcGxUaHJlYWQtPmFuaW1hdGUobW9u
b3RvbmljVGltZSk7CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YW5pbWF0ZShtb25vdG9uaWNU
aW1lLCB3YWxsQ2xvY2tUaW1lKTsKICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEg
ZnJhbWU7Ci0gICAgbV9sYXllclRyZWVIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSk7Ci0g
ICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgYm9vbCBkcmF3
RnJhbWUgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSB8fCBmb3Jj
ZWREcmF3OworICAgIGlmIChkcmF3RnJhbWUpCisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmRyYXdMYXllcnMoZnJhbWUpOwogCiAgICAgLy8gQ2hlY2sgZm9yIGEgcGVuZGluZyBjb21wb3Np
dGVBbmRSZWFkYmFjay4KICAgICBpZiAobV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQpIHsK
KyAgICAgICAgQVNTRVJUKGRyYXdGcmFtZSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PnJlYWRiYWNrKG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5waXhlbHMsIG1fcmVhZGJh
Y2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5yZWN0KTsKICAgICAgICAgbV9yZWFkYmFja1JlcXVlc3RP
bkltcGxUaHJlYWQtPnN1Y2Nlc3MgPSAhbV9sYXllclRyZWVIb3N0SW1wbC0+aXNDb250ZXh0TG9z
dCgpOwogICAgICAgICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+Y29tcGxldGlvbi5z
aWduYWwoKTsKQEAgLTU3MSw2ICs1NzMsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwKCkKIAogICAgIC8vIFByb2Nlc3MgYW55IGZpbmlzaCByZXF1ZXN0
CiAgICAgaWYgKG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFk
KSB7CisgICAgICAgIEFTU0VSVChkcmF3RnJhbWUpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5maW5pc2hBbGxSZW5kZXJpbmcoKTsKICAgICAgICAgbV9maW5pc2hBbGxSZW5kZXJpbmdD
b21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQtPnNpZ25hbCgpOwogICAgICAgICBtX2ZpbmlzaEFs
bFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IDA7CkBAIC01ODEsNiArNTg0
LDE5IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoKQog
ICAgICAgICBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZU9uSW1wbFRocmVhZCA9IGZh
bHNlOwogICAgICAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRU
YXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpkaWRDb21taXRBbmREcmF3RnJhbWUpKTsKICAgICB9
CisKKyAgICBBU1NFUlQoZHJhd0ZyYW1lIHx8ICghZHJhd0ZyYW1lICYmICFmb3JjZWREcmF3KSk7
CisgICAgcmV0dXJuIGRyYXdGcmFtZTsKK30KKworYm9vbCBDQ1RocmVhZFByb3h5OjpzY2hlZHVs
ZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUoKQoreworICAgIHJldHVybiBzY2hlZHVsZWRB
Y3Rpb25EcmF3QW5kU3dhcEludGVybmFsKGZhbHNlKTsKK30KKwordm9pZCBDQ1RocmVhZFByb3h5
OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZvcmNlZCgpCit7CisgICAgc2NoZWR1bGVkQWN0
aW9uRHJhd0FuZFN3YXBJbnRlcm5hbCh0cnVlKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5Ojpk
aWRDb21taXRBbmREcmF3RnJhbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IGU3YmFk
YTY0MDZmYWRhMzU5YTNhODE5YzlkZjNmMWY1ZDhmMTBlYmQuLjQ4NjFmNzkwOTI2MDFjMDA1YTA1
MDUyMGQ1NDdlZDIxY2RmOWQ3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTgxLDcg
KzgxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3KCk7CiAgICAgdmlydHVh
bCBib29sIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpOwotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRB
Y3Rpb25EcmF3QW5kU3dhcCgpOworICAgIHZpcnR1YWwgYm9vbCBzY2hlZHVsZWRBY3Rpb25EcmF3
QW5kU3dhcElmUG9zc2libGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXBGb3JjZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uVXBkYXRl
TW9yZVJlc291cmNlcygpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25Db21taXQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlv
bigpOwpAQCAtMTI1LDYgKzEyNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsYXllclRyZWVIb3N0
Q2xvc2VkT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBzZXRGdWxs
Um9vdExheWVyRGFtYWdlT25JbXBsVGhyZWFkKCk7CiAgICAgdm9pZCByZWNyZWF0ZUNvbnRleHRP
bkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBHcmFwaGljc0NvbnRleHQzRCosIGJvb2wq
IHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKik7CisgICAgYm9v
bCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGVybmFsKGJvb2wgZm9yY2VkRHJhdyk7CiAK
ICAgICAvLyBBY2Nlc3NlZCBvbiBtYWluIHRocmVhZCBvbmx5LgogICAgIGJvb2wgbV9hbmltYXRl
UmVxdWVzdGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBhNTdiNWIzNzk1ZTRjYzczNzE5MmQ5MmQw
MmQzYWY5YTU5YjQ5ODMyLi5lYTk4NzU4MjE1MTRlYWY4ZDQzZjcwMzRhMTJkMjVlZDYwZjM5M2U2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LmNwcApAQCAtNTQ0LDEzICs1NDQsMTQgQEAgVEVTVF9GKENDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LCBwcmVwYXJlVG9EcmF3RmFpbHNXaGVuQW5pbWF0aW9uVXNlc0NoZWNr
ZXJib2FyZCkKICAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1l
KSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAKLSAgICAvLyBXaGVuIGEg
dGV4dHVyZSBpcyBtaXNzaW5nIGFuZCB3ZSdyZSBhbmltYXRpbmcsIHdlIGRvbid0IGRyYXcgYW55
dGhpbmcuCisgICAgLy8gV2hlbiBhIHRleHR1cmUgaXMgbWlzc2luZyBhbmQgd2UncmUgYW5pbWF0
aW5nLCB3ZSBkb24ndCB3YW50IHRvIGRyYXcgYW55dGhpbmcuCiAgICAgbV9ob3N0SW1wbC0+c2V0
Um9vdExheWVyKERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUoMCkpOwogICAgIHJvb3QgPSBzdGF0
aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXllcio+KG1faG9zdEltcGwtPnJvb3RMYXllcigpKTsKICAg
ICByb290LT5hZGRDaGlsZChNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyOjpjcmVhdGUoMSwg
dHJ1ZSwgZmFsc2UsIHRydWUpKTsKICAgICBsYXllciA9IHN0YXRpY19jYXN0PE1pc3NpbmdUZXh0
dXJlQW5pbWF0aW5nTGF5ZXIqPihyb290LT5jaGlsZHJlbigpWzBdLmdldCgpKTsKIAogICAgIEVY
UEVDVF9GQUxTRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0
SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAKICAgICAvLyBXaGVuIHRoZSBsYXllciBza2lwcyBk
cmF3IGFuZCB3ZSdyZSBhbmltYXRpbmcsIHdlIHN0aWxsIGRyYXcgdGhlIGZyYW1lLgogICAgIG1f
aG9zdEltcGwtPnNldFJvb3RMYXllcihEaWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRlKDApKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmVUZXN0LmNwcAppbmRleCBlYTZiOTI3ZTUzOTQ1MGYxZDBiYWNiYTQxNzE5MjNl
NzdjYWRiZmNjLi5lNGE1ZDdjOTU5NDRiOTRkNjUzYzE0MTE5NTZiOWMyOWNjZWQ0NmJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxl
clN0YXRlTWFjaGluZVRlc3QuY3BwCkBAIC0xMTksNiArMTE5LDE3NSBAQCBURVNUKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldEZvcmNlZFJlZHJhd0RvZXNOb3RTZXRzTm9ybWFs
UmVkcmF3KQogICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7CiB9
CiAKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RmFpbGVkRHJhd1NldHNO
ZWVkc0NvbW1pdEFuZERvZXNOb3REcmF3QWdhaW4pCit7CisgICAgQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRO
ZWVkc1JlZHJhdygpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoc3RhdGUudnN5bmNDYWxsYmFja05lZWRlZCgpKTsKKyAgICBzdGF0ZS5k
aWRFbnRlclZTeW5jKCk7CisKKyAgICAvLyBXZSdyZSBkcmF3aW5nIG5vdy4KKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBF
WFBFQ1RfRkFMU0Uoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3Rh
dGUuY29tbWl0UGVuZGluZygpKTsKKworICAgIC8vIEZhaWxpbmcgdGhlIGRyYXcgbWFrZXMgdXMg
cmVxdWlyZSBhIGNvbW1pdC4KKyAgICBzdGF0ZS5kaWREcmF3SWZQb3NzaWJsZUNvbXBsZXRlZChm
YWxzZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVH
SU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSk7CisgICAgRVhQRUNUX1RS
VUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS5jb21taXRQ
ZW5kaW5nKCkpOworfQorCitURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNl
dE5lZWRzUmVkcmF3RHVyaW5nRmFpbGVkRHJhd0RvZXNOb3RSZW1vdmVOZWVkc1JlZHJhdykKK3sK
KyAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxl
KHRydWUpOworICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KCk7CisgICAgRVhQRUNUX1RSVUUoc3Rh
dGUucmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS52c3luY0NhbGxiYWNr
TmVlZGVkKCkpOworICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKKworICAgIC8vIFdlJ3JlIGRy
YXdpbmcgbm93LgorICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRl
U3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFKTsK
KyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5yZWRyYXdQZW5kaW5nKCkp
OworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5jb21taXRQZW5kaW5nKCkpOworCisgICAgLy8gV2hp
bGUgc3RpbGwgaW4gdGhlIHNhbWUgdnN5bmMgY2FsbGJhY2ssIHNldCBuZWVkcyByZWRyYXcgYWdh
aW4uCisgICAgLy8gVGhpcyBzaG91bGQgbm90IHJlZHJhdy4KKyAgICBzdGF0ZS5zZXROZWVkc1Jl
ZHJhdygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05P
TkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBGYWlsaW5nIHRoZSBkcmF3IG1ha2Vz
IHVzIHJlcXVpcmUgYSBjb21taXQuCisgICAgc3RhdGUuZGlkRHJhd0lmUG9zc2libGVDb21wbGV0
ZWQoZmFsc2UpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9UUlVFKHN0YXRl
LnJlZHJhd1BlbmRpbmcoKSk7Cit9CisKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0Q29tbWl0QWZ0ZXJGYWlsZWREcmF3QWxsb3dzRHJhd0luU2FtZUZyYW1lKQoreworICAg
IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNldFZpc2libGUodHJ1
ZSk7CisKKyAgICAvLyBTdGFydCBhIGNvbW1pdC4KKyAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCgp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZS
QU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOworICAgIEVYUEVDVF9UUlVFKHN0
YXRlLmNvbW1pdFBlbmRpbmcoKSk7CisKKyAgICAvLyBUaGVuIGluaXRpYXRlIGEgZHJhdy4KKyAg
ICBzdGF0ZS5zZXROZWVkc1JlZHJhdygpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2Fs
bGJhY2tOZWVkZWQoKSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOworICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsK
KworICAgIC8vIEZhaWwgdGhlIGRyYXcuCisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFKTsKKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OworICAgIHN0YXRlLmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGVkKGZhbHNlKTsKKyAgICBFWFBF
Q1RfVFJVRShzdGF0ZS5yZWRyYXdQZW5kaW5nKCkpOworICAgIC8vIEJ1dCB0aGUgY29tbWl0IGlz
IG9uZ29pbmcuCisgICAgRVhQRUNUX1RSVUUoc3RhdGUuY29tbWl0UGVuZGluZygpKTsKKworICAg
IC8vIEZpbmlzaCB0aGUgY29tbWl0LgorICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFU
RV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVT
dGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JF
U09VUkNFUyk7CisgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFs
c2UpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1J
VCwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUucmVk
cmF3UGVuZGluZygpKTsKKworICAgIC8vIEFuZCB3ZSBzaG91bGQgYmUgYWxsb3dlZCB0byBkcmF3
IGFnYWluLgorICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RS
QVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cit9CisKK1RFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29tbWl0QWZ0ZXJGYWlsZWRBbmRTdWNjZXNzZnVsRHJh
d0RvZXNOb3RBbGxvd0RyYXdJblNhbWVGcmFtZSkKK3sKKyAgICBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworCisgICAgLy8gU3RhcnQg
YSBjb21taXQuCisgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlv
bigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0JFR0lOX0ZSQU1FKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS5jb21taXRQZW5kaW5nKCkp
OworCisgICAgLy8gVGhlbiBpbml0aWF0ZSBhIGRyYXcuCisgICAgc3RhdGUuc2V0TmVlZHNSZWRy
YXcoKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOworICAg
IHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAg
IEVYUEVDVF9UUlVFKHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7CisKKyAgICAvLyBGYWlsIHRoZSBk
cmF3LgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fRFJBV19JRl9QT1NTSUJMRSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS5kaWREcmF3
SWZQb3NzaWJsZUNvbXBsZXRlZChmYWxzZSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3
UGVuZGluZygpKTsKKyAgICAvLyBCdXQgdGhlIGNvbW1pdCBpcyBvbmdvaW5nLgorICAgIEVYUEVD
VF9UUlVFKHN0YXRlLmNvbW1pdFBlbmRpbmcoKSk7CisKKyAgICAvLyBGb3JjZSBhIGRyYXcuCisg
ICAgc3RhdGUuc2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0ZPUkNFRCwgc3RhdGUubmV4dEFjdGlvbigpKTsK
KworICAgIC8vIERvIHRoZSBmb3JjZWQgZHJhdy4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfRk9SQ0VEKTsKKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5yZWRyYXdQZW5kaW5nKCkpOworICAgIC8vIEFuZCB0
aGUgY29tbWl0IGlzIHN0aWxsIG9uZ29pbmcuCisgICAgRVhQRUNUX1RSVUUoc3RhdGUuY29tbWl0
UGVuZGluZygpKTsKKworICAgIC8vIEZpbmlzaCB0aGUgY29tbWl0LgorICAgIHN0YXRlLmJlZ2lu
RnJhbWVDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsK
KyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JF
R0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CisgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVz
b3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRh
dGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCk7CisgICAgRVhQ
RUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKworICAgIC8vIEFuZCB3ZSBzaG91bGQg
bm90IGJlIGFsbG93ZWQgdG8gZHJhdyBhZ2FpbiBpbiB0aGUgc2FtZSBmcmFtZS4uCisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFj
dGlvbigpKTsKK30KKworVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGYWls
ZWREcmF3SXNSZXRyaWVkTmV4dFZTeW5jKQoreworICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
IHN0YXRlOworICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisKKyAgICAvLyBTdGFydCBhIGRy
YXcuCisgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS52
c3luY0NhbGxiYWNrTmVlZGVkKCkpOworICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKKyAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxF
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnJlZHJhd1BlbmRp
bmcoKSk7CisKKyAgICAvLyBGYWlsIHRoZSBkcmF3LgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSk7CisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFj
dGlvbigpKTsKKyAgICBzdGF0ZS5kaWREcmF3SWZQb3NzaWJsZUNvbXBsZXRlZChmYWxzZSk7Cisg
ICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKworICAgIC8vIFdlIHNob3Vs
ZCBub3QgYmUgdHJ5aW5nIHRvIGRyYXcgYWdhaW4gbm93LCBidXQgd2UgaGF2ZSBhIGNvbW1pdCBw
ZW5kaW5nLgorICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JF
R0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgc3RhdGUuZGlkTGVhdmVWU3lu
YygpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7CisgICAg
c3RhdGUuZGlkRW50ZXJWU3luYygpOworCisgICAgLy8gV2Ugc2hvdWxkIHRyeSBkcmF3IGFnYWlu
IGluIHRoZSBuZXh0IHZzeW5jLgorICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cit9CisKIFRF
U1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RG9lc3REcmF3VHdpY2VJblNhbWVG
cmFtZSkKIHsKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSBzdGF0ZTsKQEAgLTEyNiw4ICsy
OTUsOCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdERvZXN0RHJhd1R3
aWNlSW5TYW1lRnJhbWUpCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoKTsKICAgICBFWFBFQ1Rf
VFJVRShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOwogICAgIHN0YXRlLmRpZEVudGVyVlN5
bmMoKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFX
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVyk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsK
KyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RS
QVdfSUZfUE9TU0lCTEUpOwogCiAgICAgLy8gV2hpbGUgc3RpbGwgaW4gdGhlIHNhbWUgdnN5bmMg
Y2FsbGJhY2ssIHNldCBuZWVkcyByZWRyYXcgYWdhaW4uCiAgICAgLy8gVGhpcyBzaG91bGQgbm90
IHJlZHJhdy4KQEAgLTEzNSwxMiArMzA0LDE0IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LCBUZXN0RG9lc3REcmF3VHdpY2VJblNhbWVGcmFtZSkKICAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwog
CiAgICAgLy8gTW92ZSB0byBhbm90aGVyIGZyYW1lLiBUaGlzIHNob3VsZCBub3cgZHJhdy4KKyAg
ICBzdGF0ZS5kaWREcmF3SWZQb3NzaWJsZUNvbXBsZXRlZCh0cnVlKTsKICAgICBzdGF0ZS5kaWRM
ZWF2ZVZTeW5jKCk7CiAgICAgRVhQRUNUX1RSVUUoc3RhdGUudnN5bmNDYWxsYmFja05lZWRlZCgp
KTsKICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CiAKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIHN0
YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVyk7Cisg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NT
SUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUpOworICAgIHN0YXRlLmRp
ZERyYXdJZlBvc3NpYmxlQ29tcGxldGVkKHRydWUpOwogICAgIEVYUEVDVF9GQUxTRShzdGF0ZS52
c3luY0NhbGxiYWNrTmVlZGVkKCkpOwogfQogCkBAIC0xNjEsMTEgKzMzMiwxMSBAQCBURVNUKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25EcmF3c09uVlN5bmMpCiAK
ICAgICAgICAgICAgIC8vIENhc2UgMTogbmVlZHNDb21taXQ9ZmFsc2UKICAgICAgICAgICAgIHN0
YXRlLnNldE5lZWRzQ29tbWl0KGZhbHNlKTsKLSAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAg
ICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lG
X1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgICAgICAgICAvLyBDYXNlIDI6
IG5lZWRzQ29tbWl0PXRydWUKICAgICAgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUp
OwotICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
RFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE3NCw3ICszNDUsOCBAQCBURVNUKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25EcmF3c09uVlN5bmMpCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCAyOyArK2opIHsKICAgICAgICAgICAgIFN0YXRl
TWFjaGluZSBzdGF0ZTsKICAgICAgICAgICAgIHN0YXRlLnNldENvbW1pdFN0YXRlKGFsbENvbW1p
dFN0YXRlc1tpXSk7Ci0gICAgICAgICAgICBpZiAoIWopIHsKKyAgICAgICAgICAgIGJvb2wgZm9y
Y2VkRHJhdyA9IGo7CisgICAgICAgICAgICBpZiAoIWZvcmNlZERyYXcpIHsKICAgICAgICAgICAg
ICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CiAgICAgICAgICAgICAgICAgc3RhdGUuc2V0TmVl
ZHNSZWRyYXcodHJ1ZSk7CiAgICAgICAgICAgICAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsK
QEAgLTE4Myw3ICszNTUsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVz
dE5leHRBY3Rpb25EcmF3c09uVlN5bmMpCiAKICAgICAgICAgICAgIENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBY3Rpb24gZXhwZWN0ZWRBY3Rpb247CiAgICAgICAgICAgICBpZiAoYWxsQ29tbWl0
U3RhdGVzW2ldICE9IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlf
VE9fQ09NTUlUKQotICAgICAgICAgICAgICAgIGV4cGVjdGVkQWN0aW9uID0gQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXOworICAgICAgICAgICAgICAgIGV4cGVjdGVkQWN0aW9u
ID0gZm9yY2VkRHJhdyA/IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19GT1JD
RUQgOiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEU7CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZXhwZWN0ZWRBY3Rpb24gPSBDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVDsKIApAQCAtMjMxLDIyICs0MDMsMjIgQEAg
VEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROb0NvbW1pdFN0YXRlc1JlZHJh
d1doZW5JbnZpc2libGUpCiAgICAgICAgICAgICAvLyBDYXNlIDE6IG5lZWRzQ29tbWl0PWZhbHNl
IHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZhbHNlLgogICAgICAgICAgICAgc3RhdGUuc2V0
TmVlZHNDb21taXQoZmFsc2UpOwogICAgICAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291
cmNlc1BlbmRpbmcoZmFsc2UpOwotICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICAgICAgICAg
IEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lC
TEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAgICAgICAgIC8vIENhc2UgMjogbmVlZHND
b21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9dHJ1ZS4KICAgICAgICAgICAg
IHN0YXRlLnNldE5lZWRzQ29tbWl0KGZhbHNlKTsKICAgICAgICAgICAgIHN0YXRlLnNldFVwZGF0
ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOwotICAgICAgICAgICAgRVhQRUNUX05FKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdf
SUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAgICAgICAgIC8vIENhc2Ug
MzogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz1mYWxzZS4KICAg
ICAgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwogICAgICAgICAgICAgc3RhdGUu
c2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwotICAgICAgICAgICAgRVhQRUNU
X05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlv
bigpKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAgICAgICAg
IC8vIENhc2UgNDogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz10
cnVlLgogICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CiAgICAgICAgICAg
ICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKLSAgICAgICAgICAg
IEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5l
eHRBY3Rpb24oKSk7CisgICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgICAg
ICB9CiAgICAgfQogfQpAQCAtMjY2LDcgKzQzOCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LCBUZXN0Q2FuUmVkcmF3X1N0b3BzRHJhdykKICAgICAgICAgICAgICAgICBzdGF0
ZS5kaWRFbnRlclZTeW5jKCk7CiAKICAgICAgICAgICAgIHN0YXRlLnNldENhbkRyYXcoZmFsc2Up
OwotICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
RFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0zODEsOCArNTUzLDkgQEAgVEVTVChDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX1dpdGhSZWRyYXdfT25lUm91bmRP
ZlVwZGF0ZXMpCiAKICAgICAvLyBFbnN1cmUgd2UgZHJhdyBvbiB0aGUgbmV4dCB2c3luYyBldmVu
IHRob3VnaCBhbiB1cGRhdGUgaXMgaW4tcHJvZ3Jlc3MuCiAgICAgc3RhdGUuZGlkRW50ZXJWU3lu
YygpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcs
IHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwor
ICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJB
V19JRl9QT1NTSUJMRSk7CisgICAgc3RhdGUuZGlkRHJhd0lmUG9zc2libGVDb21wbGV0ZWQodHJ1
ZSk7CiAKICAgICAvLyBFbnN1cmUgdGhhdCB3ZSBvbmNlIHdlIGhhdmUgZHJhd24sIHdlIGRvbnQg
ZG8gYW55dGhpbmcgZWxzZS4KICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwpAQCAtNDQ2LDkgKzYxOSwxMCBAQCBU
RVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldE5lZWRzQ29tbWl0SXNOb3RM
b3N0KQogCiAgICAgLy8gQ29tbWl0IGFuZCBtYWtlIHN1cmUgd2UgZHJhdyBvbiBuZXh0IHZzeW5j
CiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9D
T01NSVQpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RS
QVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9XQUlUSU5H
X0ZPUl9GSVJTVF9EUkFXLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKLSAgICBzdGF0ZS51cGRhdGVT
dGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcpOworICAgIHN0YXRlLnVw
ZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJM
RSk7CisgICAgc3RhdGUuZGlkRHJhd0lmUG9zc2libGVDb21wbGV0ZWQodHJ1ZSk7CiAKICAgICAv
LyBWZXJpZnkgdGhhdCBhbm90aGVyIGNvbW1pdCB3aWxsIGJlZ2luLgogICAgIHN0YXRlLmRpZExl
YXZlVlN5bmMoKTsKQEAgLTQ5MSw4ICs2NjUsOSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lVGVzdCwgVGVzdEZ1bGxDeWNsZSkKIAogICAgIC8vIEF0IHZzeW5jLCBkcmF3LgogICAgIHN0
YXRlLmRpZEVudGVyVlN5bmMoKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIHN0YXRlLnVwZGF0ZVN0
YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVyk7CisgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUu
bmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUpOworICAgIHN0YXRlLmRpZERyYXdJZlBvc3Np
YmxlQ29tcGxldGVkKHRydWUpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKIAogICAgIC8v
IFNob3VsZCBiZSBzeW5jaHJvbml6ZWQsIG5vIGRyYXcgbmVlZGVkLCBubyBhY3Rpb24gbmVlZGVk
LgpAQCAtNTQxLDggKzcxNiw5IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBU
ZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJbmJldHdlZW4pCiAKICAgICAvLyBBdCB2c3lu
YywgZHJhdy4KICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7Ci0gICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKLSAg
ICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZf
UE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFKTsKKyAgICBzdGF0
ZS5kaWREcmF3SWZQb3NzaWJsZUNvbXBsZXRlZCh0cnVlKTsKICAgICBzdGF0ZS5kaWRMZWF2ZVZT
eW5jKCk7CiAKICAgICAvLyBTaG91bGQgYmUgc3luY2hyb25pemVkLCBubyBkcmF3IG5lZWRlZCwg
bm8gYWN0aW9uIG5lZWRlZC4KQEAgLTY1Miw3ICs4MjgsNyBAQCBURVNUKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0V2hlbklkbGVBbmRDb21taXRSZXF1ZXN0ZWRX
aGlsZQogICAgIC8vIHNldENhbkRyYXcuCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7
CiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS5zZXRDYW5EcmF3KGZhbHNlKTsKICAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOwogICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CkBAIC02NzIsNyArODQ4LDcgQEAg
VEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDb250ZXh0TG9zdFdoaWxlQ29t
bWl0SW5Qcm9ncmVzcykKICAgICAvLyBTZXQgZGFtYWdlIGFuZCBleHBlY3QgYSBkcmF3LgogICAg
IHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOwogICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsK
LSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUu
dXBkYXRlU3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5j
KCk7CiAKQEAgLTcxMiw3ICs4ODgsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVz
dCwgVGVzdENvbnRleHRMb3N0V2hpbGVDb21taXRJblByb2dyZXNzQW5kQW5vdGhlcgogICAgIC8v
IFNldCBkYW1hZ2UgYW5kIGV4cGVjdCBhIGRyYXcuCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXco
dHJ1ZSk7CiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJM
RSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0
QWN0aW9uKCkpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKIApAQCAtNzM4LDcgKzkxNCw3
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29udGV4dExvc3RXaGls
ZUNvbW1pdEluUHJvZ3Jlc3NBbmRBbm90aGVyCiAKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXLCBzdGF0ZS5j
b21taXRTdGF0ZSgpKTsKIAotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlv
bigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAg
Ly8gRXhwZWN0IHRvIGJlIHRvbGQgdG8gYmVnaW4gY29udGV4dCByZWNyZWF0aW9uLCBpbmRlcGVu
ZGVudCBvZiB2c3luYyBzdGF0ZQpAQCAtNzYwLDcgKzkzNiw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmVUZXN0LCBUZXN0RmluaXNoQWxsUmVuZGVyaW5nV2hpbGVDb250ZXh0TG9zdCkK
ICAgICAvLyBBc2sgYSBmb3JjZWQgcmVkcmF3IGFuZCB2ZXJpZnkgaXQgb2N1cnJzLgogICAgIHN0
YXRlLnNldE5lZWRzRm9yY2VkUmVkcmF3KHRydWUpOwogICAgIHN0YXRlLmRpZEVudGVyVlN5bmMo
KTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0RSQVdfRk9SQ0VELCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLmRp
ZExlYXZlVlN5bmMoKTsKIAogICAgIC8vIENsZWFyIHRoZSBmb3JjZWQgcmVkcmF3IGJpdC4KQEAg
LTc3Myw3ICs5NDksNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZp
bmlzaEFsbFJlbmRlcmluZ1doaWxlQ29udGV4dExvc3QpCiAgICAgLy8gQXNrIGEgZm9yY2VkIHJl
ZHJhdyBhbmQgdmVyaWZ5IGl0IG9jdXJycy4KICAgICBzdGF0ZS5zZXROZWVkc0ZvcmNlZFJlZHJh
dyh0cnVlKTsKICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7Ci0gICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0ZPUkNFRCwg
c3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAppbmRl
eCA0NWY2MWI5MGJmNTRlMmVjZTc4YmRhODgzZmZhMGEyNmJkNTQzNmViLi40YmY5NzRjZTk1N2Ez
ODQwZTEyOTk2ZTU4YzI5NWY0YWQxYTg1N2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCkBAIC01Niw3ICs1Niw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhdygpIHsgcmV0dXJuIG1fY2FuRHJhdzsgfQogICAgIHZp
cnR1YWwgYm9vbCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNN
b3JlUmVzb3VyY2VVcGRhdGVzOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJl
Z2luRnJhbWUoKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkJlZ2luRnJh
bWUiKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpIHsg
bV9hY3Rpb25zLnB1c2hfYmFjaygic2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAiKTsgfQorICAg
IHZpcnR1YWwgYm9vbCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUoKSB7IG1f
YWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSIp
OyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5k
U3dhcEZvcmNlZCgpIHsgbV9hY3Rpb25zLnB1c2hfYmFjaygic2NoZWR1bGVkQWN0aW9uRHJhd0Fu
ZFN3YXBGb3JjZWQiKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRhdGVN
b3JlUmVzb3VyY2VzKCkgeyBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25VcGRh
dGVNb3JlUmVzb3VyY2VzIik7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQ29t
bWl0KCkgeyBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiKTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKCkg
eyBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0
aW9uIik7IH0KQEAgLTk0LDcgKzk1LDcgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RD
b21taXQpCiAgICAgLy8gVGljayBzaG91bGQgZHJhdy4KICAgICB0aW1lU291cmNlLT50aWNrKCk7
CiAgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOwotICAgIEVYUEVDVF9TVFJF
USgic2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBF
WFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSIsIGNsaWVu
dC5hY3Rpb24oMCkpOwogICAgIEVYUEVDVF9GQUxTRSh0aW1lU291cmNlLT5hY3RpdmUoKSk7CiAg
ICAgY2xpZW50LnJlc2V0KCk7CiAKQEAgLTEzMSwzOSArMTMyLDQyIEBAIFRFU1QoQ0NTY2hlZHVs
ZXJUZXN0LCBSZXF1ZXN0Q29tbWl0QWZ0ZXJCZWdpbkZyYW1lKQogICAgIHRpbWVTb3VyY2UtPnRp
Y2soKTsKICAgICBFWFBFQ1RfRkFMU0UodGltZVNvdXJjZS0+YWN0aXZlKCkpOwogICAgIEVYUEVD
VF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwIiwgY2xpZW50LmFjdGlvbigwKSk7CisgICAgRVhQRUNUX1NUUkVR
KCJzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUiLCBjbGllbnQuYWN0aW9uKDAp
KTsKICAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUiLCBjbGllbnQu
YWN0aW9uKDEpKTsKICAgICBjbGllbnQucmVzZXQoKTsKIH0KIAotY2xhc3MgU2NoZWR1bGVyQ2xp
ZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXcgOiBwdWJsaWMgQ0NTY2hlZHVsZXJDbGllbnQg
eworY2xhc3MgU2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXcgOiBwdWJs
aWMgRmFrZUNDU2NoZWR1bGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBTY2hlZHVsZXJDbGllbnRU
aGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdygpCiAgICAgICAgIDogbV9udW1EcmF3cygwKQotICAg
ICAgICAsIG1fc2NoZWR1bGVyKDApIHsgfQorICAgICAgICAsIG1fc2NoZWR1bGVyKDApCisgICAg
ICAgICwgbV9kcmF3U3VjY2Vzcyh0cnVlKSB7IH0KIAogICAgIHZvaWQgc2V0U2NoZWR1bGVyKEND
U2NoZWR1bGVyKiBzY2hlZHVsZXIpIHsgbV9zY2hlZHVsZXIgPSBzY2hlZHVsZXI7IH0KIAogICAg
IGludCBudW1EcmF3cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtRHJhd3M7IH0KIAotICAgIHZpcnR1
YWwgYm9vbCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhdygpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpCisgICAgdmlydHVhbCBib29sIHNjaGVkdWxlZEFj
dGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSgpCiAgICAgewogICAgICAgICAvLyBPbmx5IHNldE5l
ZWRzUmVkcmF3IHRoZSBmaXJzdCB0aW1lIHRoaXMgaXMgY2FsbGVkCiAgICAgICAgIGlmICghbV9u
dW1EcmF3cykKICAgICAgICAgICAgIG1fc2NoZWR1bGVyLT5zZXROZWVkc1JlZHJhdygpOwogICAg
ICAgICBtX251bURyYXdzKys7CisgICAgICAgIHJldHVybiBtX2RyYXdTdWNjZXNzOwogICAgIH0K
LQorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZvcmNlZCgpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKCkgeyB9CiAK
KyAgICB2b2lkIHNldERyYXdTdWNjZXNzKGJvb2wgZHJhd1N1Y2Nlc3MpIHsgbV9kcmF3U3VjY2Vz
cyA9IGRyYXdTdWNjZXNzOyB9CisKIHByb3RlY3RlZDoKICAgICBpbnQgbV9udW1EcmF3czsKICAg
ICBDQ1NjaGVkdWxlciogbV9zY2hlZHVsZXI7CisgICAgYm9vbCBtX2RyYXdTdWNjZXNzOwogfTsK
IAogLy8gVGVzdHMgZm9yIHR3byBkaWZmZXJlbnQgc2l0dWF0aW9uczoKQEAgLTE5NCwzNCArMTk4
LDc4IEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0UmVkcmF3SW5zaWRlRHJhdykKICAg
ICBFWFBFQ1RfRkFMU0UodGltZVNvdXJjZS0+YWN0aXZlKCkpOwogfQogCi1jbGFzcyBTY2hlZHVs
ZXJDbGllbnRUaGF0U2V0TmVlZHNDb21taXRJbnNpZGVEcmF3IDogcHVibGljIENDU2NoZWR1bGVy
Q2xpZW50IHsKKy8vIFRlc3QgdGhhdCByZXF1ZXN0aW5nIHJlZHJhdyBpbnNpZGUgYSBmYWlsZWQg
ZHJhdyBkb2Vzbid0IGxvc2UgdGhlIHJlcXVlc3QuCitURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVx
dWVzdFJlZHJhd0luc2lkZUZhaWxlZERyYXcpCit7CisgICAgU2NoZWR1bGVyQ2xpZW50VGhhdFNl
dE5lZWRzRHJhd0luc2lkZURyYXcgY2xpZW50OworICAgIFJlZlB0cjxGYWtlQ0NUaW1lU291cmNl
PiB0aW1lU291cmNlID0gYWRvcHRSZWYobmV3IEZha2VDQ1RpbWVTb3VyY2UoKSk7CisgICAgT3du
UHRyPENDU2NoZWR1bGVyPiBzY2hlZHVsZXIgPSBDQ1NjaGVkdWxlcjo6Y3JlYXRlKCZjbGllbnQs
IGFkb3B0UHRyKG5ldyBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIodGltZVNvdXJjZSkpKTsKKyAgICBj
bGllbnQuc2V0U2NoZWR1bGVyKHNjaGVkdWxlci5nZXQoKSk7CisgICAgc2NoZWR1bGVyLT5zZXRW
aXNpYmxlKHRydWUpOworICAgIGNsaWVudC5zZXREcmF3U3VjY2VzcyhmYWxzZSk7CisKKyAgICBz
Y2hlZHVsZXItPnNldE5lZWRzUmVkcmF3KCk7CisgICAgRVhQRUNUX1RSVUUoc2NoZWR1bGVyLT5y
ZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9UUlVFKHRpbWVTb3VyY2UtPmFjdGl2ZSgpKTsK
KyAgICBFWFBFQ1RfRVEoMCwgY2xpZW50Lm51bURyYXdzKCkpOworCisgICAgLy8gRmFpbCB0aGUg
ZHJhdy4KKyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5u
dW1EcmF3cygpKTsKKworICAgIC8vIFdlIGhhdmUgYSBjb21taXQgcGVuZGluZyBhbmQgdGhlIGRy
YXcgZmFpbGVkLCBhbmQgd2UgZGlkbid0IGxvc2UgdGhlIHJlZHJhdyByZXF1ZXN0LgorICAgIEVY
UEVDVF9UUlVFKHNjaGVkdWxlci0+Y29tbWl0UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfVFJVRShz
Y2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CisgICAgRVhQRUNUX1RSVUUodGltZVNvdXJjZS0+
YWN0aXZlKCkpOworCisgICAgLy8gRmFpbCB0aGUgZHJhdyBhZ2Fpbi4KKyAgICB0aW1lU291cmNl
LT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDIsIGNsaWVudC5udW1EcmF3cygpKTsKKyAgICBFWFBF
Q1RfVFJVRShzY2hlZHVsZXItPmNvbW1pdFBlbmRpbmcoKSk7CisgICAgRVhQRUNUX1RSVUUoc2No
ZWR1bGVyLT5yZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9UUlVFKHRpbWVTb3VyY2UtPmFj
dGl2ZSgpKTsKKworICAgIC8vIERyYXcgc3VjY2Vzc2Z1bGx5LgorICAgIGNsaWVudC5zZXREcmF3
U3VjY2Vzcyh0cnVlKTsKKyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDMs
IGNsaWVudC5udW1EcmF3cygpKTsKKyAgICBFWFBFQ1RfVFJVRShzY2hlZHVsZXItPmNvbW1pdFBl
bmRpbmcoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygpKTsK
KyAgICBFWFBFQ1RfRkFMU0UodGltZVNvdXJjZS0+YWN0aXZlKCkpOworfQorCitjbGFzcyBTY2hl
ZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNDb21taXRJbnNpZGVEcmF3IDogcHVibGljIEZha2VDQ1Nj
aGVkdWxlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgU2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRz
Q29tbWl0SW5zaWRlRHJhdygpCiAgICAgICAgIDogbV9udW1EcmF3cygwKQotICAgICAgICAsIG1f
c2NoZWR1bGVyKDApIHsgfQorICAgICAgICAsIG1fc2NoZWR1bGVyKDApCisgICAgICAgICwgbV9k
cmF3U3VjY2Vzcyh0cnVlKSB7IH0KIAogICAgIHZvaWQgc2V0U2NoZWR1bGVyKENDU2NoZWR1bGVy
KiBzY2hlZHVsZXIpIHsgbV9zY2hlZHVsZXIgPSBzY2hlZHVsZXI7IH0KIAogICAgIGludCBudW1E
cmF3cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtRHJhd3M7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBo
YXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgY2FuRHJhdygpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2No
ZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRB
Y3Rpb25EcmF3QW5kU3dhcCgpCisgICAgdmlydHVhbCBib29sIHNjaGVkdWxlZEFjdGlvbkRyYXdB
bmRTd2FwSWZQb3NzaWJsZSgpCiAgICAgewogICAgICAgICAvLyBPbmx5IHNldE5lZWRzQ29tbWl0
IHRoZSBmaXJzdCB0aW1lIHRoaXMgaXMgY2FsbGVkCiAgICAgICAgIGlmICghbV9udW1EcmF3cykK
ICAgICAgICAgICAgIG1fc2NoZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgpOwogICAgICAgICBtX251
bURyYXdzKys7CisgICAgICAgIHJldHVybiBtX2RyYXdTdWNjZXNzOwogICAgIH0KLQorICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZvcmNlZCgpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKCkgeyB9CiAKKyAgICB2b2lk
IHJlc2V0TnVtRHJhd3MoKSB7IG1fbnVtRHJhd3MgPSAwOyB9CisgICAgdm9pZCBzZXREcmF3U3Vj
Y2Vzcyhib29sIGRyYXdTdWNjZXNzKSB7IG1fZHJhd1N1Y2Nlc3MgPSBkcmF3U3VjY2VzczsgfQor
CiBwcm90ZWN0ZWQ6CiAgICAgaW50IG1fbnVtRHJhd3M7CiAgICAgQ0NTY2hlZHVsZXIqIG1fc2No
ZWR1bGVyOworICAgIGJvb2wgbV9kcmF3U3VjY2VzczsKIH07CiAKIC8vIFRlc3RzIGZvciB0aGUg
c2NoZWR1bGVyIGluZmluaXRlLWxvb3Bpbmcgb24gc2V0TmVlZHNDb21taXQgcmVxdWVzdHMgdGhh
dApAQCAtMjUxLDQgKzI5OSw0NCBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1p
dEluc2lkZURyYXcpCiAgICAgRVhQRUNUX0ZBTFNFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygp
KTsKIH0KIAorLy8gVGVzdHMgdGhhdCB3aGVuIGEgZHJhdyBmYWlscyB0aGVuIHRoZSBwZW5kaW5n
IGNvbW1pdCBzaG91bGQgbm90IGJlIGRyb3BwZWQuCitURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVx
dWVzdENvbW1pdEluc2lkZUZhaWxlZERyYXcpCit7CisgICAgU2NoZWR1bGVyQ2xpZW50VGhhdFNl
dE5lZWRzRHJhd0luc2lkZURyYXcgY2xpZW50OworICAgIFJlZlB0cjxGYWtlQ0NUaW1lU291cmNl
PiB0aW1lU291cmNlID0gYWRvcHRSZWYobmV3IEZha2VDQ1RpbWVTb3VyY2UoKSk7CisgICAgT3du
UHRyPENDU2NoZWR1bGVyPiBzY2hlZHVsZXIgPSBDQ1NjaGVkdWxlcjo6Y3JlYXRlKCZjbGllbnQs
IGFkb3B0UHRyKG5ldyBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIodGltZVNvdXJjZSkpKTsKKyAgICBj
bGllbnQuc2V0U2NoZWR1bGVyKHNjaGVkdWxlci5nZXQoKSk7CisgICAgc2NoZWR1bGVyLT5zZXRW
aXNpYmxlKHRydWUpOworICAgIGNsaWVudC5zZXREcmF3U3VjY2VzcyhmYWxzZSk7CisKKyAgICBz
Y2hlZHVsZXItPnNldE5lZWRzUmVkcmF3KCk7CisgICAgRVhQRUNUX1RSVUUoc2NoZWR1bGVyLT5y
ZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9UUlVFKHRpbWVTb3VyY2UtPmFjdGl2ZSgpKTsK
KyAgICBFWFBFQ1RfRVEoMCwgY2xpZW50Lm51bURyYXdzKCkpOworCisgICAgLy8gRmFpbCB0aGUg
ZHJhdy4KKyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5u
dW1EcmF3cygpKTsKKworICAgIC8vIFdlIGhhdmUgYSBjb21taXQgcGVuZGluZyBhbmQgdGhlIGRy
YXcgZmFpbGVkLCBhbmQgd2UgZGlkbid0IGxvc2UgdGhlIGNvbW1pdCByZXF1ZXN0LgorICAgIEVY
UEVDVF9UUlVFKHNjaGVkdWxlci0+Y29tbWl0UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfVFJVRShz
Y2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CisgICAgRVhQRUNUX1RSVUUodGltZVNvdXJjZS0+
YWN0aXZlKCkpOworCisgICAgLy8gRmFpbCB0aGUgZHJhdyBhZ2Fpbi4KKyAgICB0aW1lU291cmNl
LT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDIsIGNsaWVudC5udW1EcmF3cygpKTsKKyAgICBFWFBF
Q1RfVFJVRShzY2hlZHVsZXItPmNvbW1pdFBlbmRpbmcoKSk7CisgICAgRVhQRUNUX1RSVUUoc2No
ZWR1bGVyLT5yZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9UUlVFKHRpbWVTb3VyY2UtPmFj
dGl2ZSgpKTsKKworICAgIC8vIERyYXcgc3VjY2Vzc2Z1bGx5LgorICAgIGNsaWVudC5zZXREcmF3
U3VjY2Vzcyh0cnVlKTsKKyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDMs
IGNsaWVudC5udW1EcmF3cygpKTsKKyAgICBFWFBFQ1RfVFJVRShzY2hlZHVsZXItPmNvbW1pdFBl
bmRpbmcoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygpKTsK
KyAgICBFWFBFQ1RfRkFMU0UodGltZVNvdXJjZS0+YWN0aXZlKCkpOworfQorCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133336</attachid>
            <date>2012-03-22 13:37:57 -0700</date>
            <delta_ts>2012-03-22 14:23:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81716-20120322163755.patch</filename>
            <type>text/plain</type>
            <size>46407</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZkZTIyNWIxZDI5NzM1
NWY4MWZhNzI1NjA1MzQ4NjBlNzlmOTYzMS4uNzZhZTIyYzVkMGEzNjgxMzFlMDdkYWYxMGFhNTMw
ZTIxMDNhMGY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTAzLTIyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU2tp
cCBmcmFtZXMgd2hlbiBjaGVja2VyYm9hcmRpbmcgYW4gYW5pbWF0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTcxNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBzdG9wIGRyYXdpbmcg
ZnJhbWVzIHdoZW4gcHJlcGFyZVRvRHJhdyBmYWlscywgaWYgdGhlIGRyYXcgaXMKKyAgICAgICAg
bm90IGZvcmNlZC4gVGhlIGV4cGVjdGVkIGJlaGF2aW91ciBpcyBvdXRsaW5lZCBiZWxvdyBieSB0
aGUgdW5pdCB0ZXN0cy4KKworICAgICAgICBXaGVuIGEgZHJhdyBmYWlscywgd2U6CisgICAgICAg
IDEuIFNldCBtX25lZWRzUmVkcmF3IHRvIHRyeSBhZ2FpbiBuZXh0IHZzeW5jCisgICAgICAgIDIu
IFNldCBtX25lZWRzQ29tbWl0IGJlY2F1c2Ugd2UgbmVlZCBtb3JlIGRhdGEgZnJvbSB3ZWJraXQg
dG8gc3VjY2VlZAorICAgICAgICAzLiBTZXQgbV9kcmF3SWZQb3NzaWJsZUZhaWxlZC4gVGhpcyBh
bGxvd3MgdXMgdG8gdHJ5IGRyYXcgYWdhaW4gd2l0aGluCisgICAgICAgIHRoZSBzYW1lIHZzeW5j
ICppZiogYSBjb21taXQgZmluaXNoZXMgZHVyaW5nIHRoaXMgdGltZS4KKworICAgICAgICBVbml0
IHRlc3Q6IENDU2NoZWR1bGVyVGVzdC5SZXF1ZXN0UmVkcmF3SW5zaWRlRmFpbGVkRHJhdworICAg
ICAgICAgICAgICAgICAgIENDU2NoZWR1bGVyVGVzdC5SZXF1ZXN0Q29tbWl0SW5zaWRlRmFpbGVk
RHJhdworICAgICAgICAgICAgICAgICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5UZXN0
RmFpbGVkRHJhd1NldHNOZWVkc0NvbW1pdEFuZERvZXNOb3REcmF3QWdhaW4KKyAgICAgICAgICAg
ICAgICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuVGVzdFNldE5lZWRzUmVkcmF3RHVy
aW5nRmFpbGVkRHJhd0RvZXNOb3RSZW1vdmVOZWVkc1JlZHJhdworICAgICAgICAgICAgICAgICAg
IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5UZXN0Q29tbWl0QWZ0ZXJGYWlsZWREcmF3QWxs
b3dzRHJhd0luU2FtZUZyYW1lCisgICAgICAgICAgICAgICAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LlRlc3RDb21taXRBZnRlckZhaWxlZEFuZFN1Y2Nlc3NmdWxEcmF3RG9lc05vdEFs
bG93RHJhd0luU2FtZUZyYW1lCisgICAgICAgICAgICAgICAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LlRlc3RGYWlsZWREcmF3SXNSZXRyaWVkTmV4dFZTeW5jCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3Nl
cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcmVwYXJlVG9EcmF3
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1NjaGVkdWxlcjo6ZGlkU2tpcEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oOgorICAg
ICAgICAoQ0NTY2hlZHVsZXJDbGllbnQpOgorICAgICAgICAoQ0NTY2hlZHVsZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6bmV4dEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6dXBkYXRlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lLmg6CisgICAgICAgIChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94
eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwRm9yY2VkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6Cisg
ICAgICAgIChDQ1RocmVhZFByb3h5KToKKwogMjAxMi0wMy0yMiAgSm9jZWx5biBUdXJjb3R0ZSAg
PGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgogCiAgICAgICAgIFRpbGVkQmFja2luZ1N0b3Jl
OiBGaXggdGVzdCByZWdyZXNzaW9ucyB0aGF0IGFwcGVhcmVkIHdpdGggcjExMTU2MC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYWExZjg4ODFjZDYxN2EzYTBhODUyZWZlNmE3MWJjNTRj
MWZjODE0Yy4uY2ViYjJjZjQ1ODg2MzIxNWUxN2E5YjE4MDc4Yjk1OGQ1NTA5NmNkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMi0wMy0yMiAgRGFuYSBK
YW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFNraXAg
ZnJhbWVzIHdoZW4gY2hlY2tlcmJvYXJkaW5nIGFuIGFuaW1hdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE3MTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUX0YpOgorICAgICAgICAqIHRl
c3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
RVNUKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHRlc3RzL0NDU2NoZWR1bGVyVGVz
dC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUNDU2NoZWR1bGVyQ2xpZW50OjpyZXNl
dCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUNDU2NoZWR1bGVyQ2xpZW50OjpzY2hlZHVs
ZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZh
a2VDQ1NjaGVkdWxlckNsaWVudDo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBGb3JjZWQpOgor
ICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VDQ1NjaGVkdWxlckNsaWVudDo6c2V0RHJhd1N1Y2Nl
c3MpOgorICAgICAgICAoRmFrZUNDU2NoZWR1bGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdFRl
c3RzOjpURVNUKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0
TmVlZHNEcmF3SW5zaWRlRHJhdzo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxl
KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3
SW5zaWRlRHJhdzo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBGb3JjZWQpOgorICAgICAgICAo
V2ViS2l0VGVzdHMpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlNjaGVkdWxlckNsaWVudFRoYXRT
ZXROZWVkc0NvbW1pdEluc2lkZURyYXc6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3Nz
aWJsZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRz
Q29tbWl0SW5zaWRlRHJhdzo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBGb3JjZWQpOgorCiAy
MDEyLTAzLTIyICBCZXJuaGFyZCBCYXVlciAgPGJhdWVyYkBnb29nbGUuY29tPgogCiAgICAgICAg
IFtjaHJvbWl1bV0gUGx1Zy1pbiBmYWlsaW5nIHRvIGxvYWQgc2hvdWxkbid0IHNheSAiTWlzc2lu
ZyBQbHVnLWluIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCA0
NDNhMWZmYWE3N2JhMGVlNTIwMjlkZjBlM2FiMTQ5NjdmNGM1MmRiLi42MWMwOGI1ODUxYTQ4ZmNm
MDRhM2RlYmM0MDEzZjY4YWQwOGMzM2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmNwcApAQCAtMjc1LDcgKzI3NSw5IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6
Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcywgQ0NMYXllCiAg
ICAgLy8gQWRkIHF1YWRzIHRvIHRoZSBSZW5kZXIgcGFzc2VzIGluIEZyb250VG9CYWNrIG9yZGVy
IHRvIGFsbG93IGZvciB0ZXN0aW5nIG9jY2x1c2lvbiBhbmQgcGVyZm9ybWluZyBjdWxsaW5nIGR1
cmluZyB0aGUgdHJlZSB3YWxrLgogICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPENDTGF5ZXJJ
bXBsLCBWZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJmYWNlLCBDQ0xheWVySXRlcmF0
b3JBY3Rpb25zOjpGcm9udFRvQmFjaz4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKIAotICAgIC8vIElm
IHdlIGFyZSB1bmFibGUgdG8gZHJhdyBhbiBhbmltYXRpb24gb24gc29tZSBsYXllciwgdGhlbiB3
ZSBhYm9ydCB0aGUgZW50aXJlIGZyYW1lLgorICAgIC8vIFR5cGljYWxseSB3aGVuIHdlIGFyZSBt
aXNzaW5nIGEgdGV4dHVyZSBhbmQgdXNlIGEgY2hlY2tlcmJvYXJkIHF1YWQsIHdlIHN0aWxsIGRy
YXcgdGhlIGZyYW1lLiBIb3dldmVyIHdoZW4gdGhlIGxheWVyIGJlaW5nCisgICAgLy8gY2hlY2tl
cmJvYXJkZWQgaXMgbW92aW5nIGR1ZSB0byBhbiBpbXBsLWFuaW1hdGlvbiwgd2UgZHJvcCB0aGUg
ZnJhbWUgdG8gYXZvaWQgZmxhc2hpbmcgZHVlIHRvIHRoZSB0ZXh0dXJlIHN1ZGRlbmx5IGFwcGVh
cmluZworICAgIC8vIGluIHRoZSBmdXR1cmUuCiAgICAgYm9vbCBkcmF3RnJhbWUgPSB0cnVlOwog
CiAgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjplbmQo
JnJlbmRlclN1cmZhY2VMYXllckxpc3QpOwpAQCAtMzA2LDEwICszMDgsOCBAQCBib29sIENDTGF5
ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBw
YXNzZXMsIENDTGF5ZQogICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0ZvckxheWVyKCppdCwgJm9j
Y2x1c2lvblRyYWNrZXIsIHVzZWRDaGVja2VyYm9hcmQpOwogICAgICAgICBpZiAodXNlZENoZWNr
ZXJib2FyZCkgewogICAgICAgICAgICAgYm9vbCBsYXllckhhc0FuaW1hdGluZ1RyYW5zZm9ybSA9
IGl0LT5zY3JlZW5TcGFjZVRyYW5zZm9ybUlzQW5pbWF0aW5nKCkgfHwgaXQtPmRyYXdUcmFuc2Zv
cm1Jc0FuaW1hdGluZygpOwotICAgICAgICAgICAgaWYgKGxheWVySGFzQW5pbWF0aW5nVHJhbnNm
b3JtKSB7CisgICAgICAgICAgICBpZiAobGF5ZXJIYXNBbmltYXRpbmdUcmFuc2Zvcm0pCiAgICAg
ICAgICAgICAgICAgZHJhd0ZyYW1lID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKCppdCk7CkBAIC0zNjcsMTEgKzM2Nyw4IEBAIGJvb2wgQ0NMYXll
clRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyhGcmFtZURhdGEmIGZyYW1lKQogICAgIGlmICgh
cm9vdExheWVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghY2FsY3VsYXRl
UmVuZGVyUGFzc2VzKGZyYW1lLnJlbmRlclBhc3NlcywgZnJhbWUucmVuZGVyU3VyZmFjZUxheWVy
TGlzdCkpIHsKLSAgICAgICAgZnJhbWUucmVuZGVyUGFzc2VzLmNsZWFyKCk7Ci0gICAgICAgIGZy
YW1lLnJlbmRlclN1cmZhY2VMYXllckxpc3QuY2xlYXIoKTsKKyAgICBpZiAoIWNhbGN1bGF0ZVJl
bmRlclBhc3NlcyhmcmFtZS5yZW5kZXJQYXNzZXMsIGZyYW1lLnJlbmRlclN1cmZhY2VMYXllckxp
c3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgLy8gSWYgd2UgcmV0dXJu
IHRydWUsIHRoZW4gd2UgZXhwZWN0IGRyYXdMYXllcnMoKSB0byBiZSBjYWxsZWQgYmVmb3JlIHRo
aXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFnYWluLgogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IGUwYzZlNzNhMzM0MjBkZDQ3ZDA5NTQyODYy
Y2I5YTQ4YTBhZDFjYjAuLjAyZTliMTAzNzc0ZWY1ZWI0NDhjNDZiNWExOTZmY2Q1ZDM1MWNjZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTg4LDYgKzg4LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNvbW1pdCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBjb21taXRDb21wbGV0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJsZSBtb25v
dG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSk7CisgICAgLy8gUmV0dXJucyBmYWxzZSBp
ZiBwcm9ibGVtcyBvY2N1cmVkIHByZXBhcmluZyB0aGUgZnJhbWUsIGFuZCB3ZSBzaG91bGQgdHJ5
IHRvIGF2b2lkIGRpc3BsYXlpbmcgdGhlIGZyYW1lLgogICAgIHZpcnR1YWwgYm9vbCBwcmVwYXJl
VG9EcmF3KEZyYW1lRGF0YSYpOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzKGNvbnN0IEZy
YW1lRGF0YSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKaW5kZXggNjFiZDkzMTNmNTRiY2Uy
YjBiZGRlYTg1NDY0NzlhMzBhMmU1MmE2NC4uOGY3ZGQzNTdmZWRhZTBlOTIxNWEwNzkzYmMxOWZh
ZTJmYWE0MWFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcApAQCAtOTIsNiArOTIsMTIgQEAg
dm9pZCBDQ1NjaGVkdWxlcjo6ZGlkU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpCiAgICAgbV9mcmFtZVJh
dGVDb250cm9sbGVyLT5kaWRGaW5pc2hGcmFtZSgpOwogfQogCit2b2lkIENDU2NoZWR1bGVyOjpk
aWRTa2lwRnJhbWUoKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6ZGlkU2tpcEZy
YW1lIiwgdGhpcywgMCk7CisgICAgbV9mcmFtZVJhdGVDb250cm9sbGVyLT5kaWRGaW5pc2hGcmFt
ZSgpOworfQorCiB2b2lkIENDU2NoZWR1bGVyOjpkaWRMb3NlQ29udGV4dCgpCiB7CiAgICAgVFJB
Q0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpkaWRMb3NlQ29udGV4dCIsIHRoaXMsIDApOwpAQCAtMTYy
LDggKzE2OCwxNCBAQCB2b2lkIENDU2NoZWR1bGVyOjpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygp
CiAgICAgICAgIGNhc2UgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQ6CiAg
ICAgICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCk7CiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RS
QVc6Ci0gICAgICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoKTsK
KyAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9T
U0lCTEU6IHsKKyAgICAgICAgICAgIGJvb2wgZHJhd1N1Y2Nlc3MgPSBtX2NsaWVudC0+c2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxlKCk7CisgICAgICAgICAgICBtX3N0YXRlTWFj
aGluZS5kaWREcmF3SWZQb3NzaWJsZUNvbXBsZXRlZChkcmF3U3VjY2Vzcyk7CisgICAgICAgICAg
ICBtX2ZyYW1lUmF0ZUNvbnRyb2xsZXItPmRpZEJlZ2luRnJhbWUoKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9EUkFXX0ZPUkNFRDoKKyAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25E
cmF3QW5kU3dhcEZvcmNlZCgpOwogICAgICAgICAgICAgbV9mcmFtZVJhdGVDb250cm9sbGVyLT5k
aWRCZWdpbkZyYW1lKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTjoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlci5oCmluZGV4IDhlZjVkY2Y3MmMyNzBhM2E2YzgxNDdlNDA3MjA1OTJlODcxZDY2
ZTQuLjFjOWMwNzE1NmNmMzk2MmUxODM3YTdlMDVlYzY0MmJiNzQ2ZjY3MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXIuaApAQCAtNDEsNyArNDEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhh
c01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2No
ZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVk
QWN0aW9uRHJhd0FuZFN3YXAoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNjaGVkdWxlZEFjdGlv
bkRyYXdBbmRTd2FwSWZQb3NzaWJsZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVk
QWN0aW9uRHJhd0FuZFN3YXBGb3JjZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxl
ZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVk
dWxlZEFjdGlvbkNvbW1pdCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9u
QmVnaW5Db250ZXh0UmVjcmVhdGlvbigpID0gMDsKQEAgLTc2LDYgKzc3LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRNYXhGcmFtZXNQZW5kaW5nKGludCk7CiAgICAgdm9pZCBkaWRTd2FwQnVm
ZmVyc0NvbXBsZXRlKCk7CisgICAgdm9pZCBkaWRTa2lwRnJhbWUoKTsKIAogICAgIHZvaWQgZGlk
TG9zZUNvbnRleHQoKTsKICAgICB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCmluZGV4IGYzN2YwYjQxN2IzZWVk
NTdmMjBjY2NlMzE1ZDY5MDNlZDlhN2E4ZDYuLjFjOTQyZTM0M2M3NzcxOWI2M2U2ZDNmMDliMTJi
MDVkZWUwMDFiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lKCkKICAgICAsIG1faW5zaWRlVlN5bmMoZmFsc2UpCiAgICAgLCBtX3Zp
c2libGUoZmFsc2UpCiAgICAgLCBtX2NhbkRyYXcodHJ1ZSkKKyAgICAsIG1fZHJhd0lmUG9zc2li
bGVGYWlsZWQoZmFsc2UpCiAgICAgLCBtX2NvbnRleHRTdGF0ZShDT05URVhUX0FDVElWRSkKIHsK
IH0KQEAgLTcxLDExICs3MiwxMCBAQCBib29sIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzaG91
bGREcmF3KCkgY29uc3QKIAogQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbigpIGNvbnN0CiB7Ci0KICAgICBzd2l0Y2ggKG1f
Y29tbWl0U3RhdGUpIHsKICAgICBjYXNlIENPTU1JVF9TVEFURV9JRExFOgogICAgICAgICBpZiAo
bV9jb250ZXh0U3RhdGUgIT0gQ09OVEVYVF9BQ1RJVkUgJiYgbV9uZWVkc0ZvcmNlZFJlZHJhdykK
LSAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKKyAgICAgICAgICAgIHJldHVybiBBQ1RJ
T05fRFJBV19GT1JDRUQ7CiAgICAgICAgIGlmIChtX2NvbnRleHRTdGF0ZSAhPSBDT05URVhUX0FD
VElWRSAmJiBtX25lZWRzRm9yY2VkQ29tbWl0KQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9C
RUdJTl9GUkFNRTsKICAgICAgICAgaWYgKG1fY29udGV4dFN0YXRlID09IENPTlRFWFRfTE9TVCkK
QEAgLTgzLDE5ICs4MywxOSBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKCkgY29uc3QKICAgICAgICAgaWYgKG1fY29u
dGV4dFN0YXRlID09IENPTlRFWFRfUkVDUkVBVElORykKICAgICAgICAgICAgIHJldHVybiBBQ1RJ
T05fTk9ORTsKICAgICAgICAgaWYgKHNob3VsZERyYXcoKSkKLSAgICAgICAgICAgIHJldHVybiBB
Q1RJT05fRFJBVzsKKyAgICAgICAgICAgIHJldHVybiBtX25lZWRzRm9yY2VkUmVkcmF3ID8gQUNU
SU9OX0RSQVdfRk9SQ0VEIDogQUNUSU9OX0RSQVdfSUZfUE9TU0lCTEU7CiAgICAgICAgIGlmICht
X25lZWRzQ29tbWl0ICYmIChtX3Zpc2libGUgfHwgbV9uZWVkc0ZvcmNlZENvbW1pdCkpCiAgICAg
ICAgICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX0ZSQU1FOwogICAgICAgICByZXR1cm4gQUNUSU9O
X05PTkU7CiAKICAgICBjYXNlIENPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUzoKICAgICAg
ICAgaWYgKHNob3VsZERyYXcoKSkKLSAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKKyAg
ICAgICAgICAgIHJldHVybiBtX25lZWRzRm9yY2VkUmVkcmF3ID8gQUNUSU9OX0RSQVdfRk9SQ0VE
IDogQUNUSU9OX0RSQVdfSUZfUE9TU0lCTEU7CiAgICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsK
IAogICAgIGNhc2UgQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzoKICAgICAgICAgaWYg
KHNob3VsZERyYXcoKSkKLSAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKKyAgICAgICAg
ICAgIHJldHVybiBtX25lZWRzRm9yY2VkUmVkcmF3ID8gQUNUSU9OX0RSQVdfRk9SQ0VEIDogQUNU
SU9OX0RSQVdfSUZfUE9TU0lCTEU7CiAgICAgICAgIGlmICghbV91cGRhdGVNb3JlUmVzb3VyY2Vz
UGVuZGluZykKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTOwogICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CkBAIC0xMDUsNyArMTA1LDcgQEAg
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
bmV4dEFjdGlvbigpIGNvbnN0CiAKICAgICBjYXNlIENPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9G
SVJTVF9EUkFXOgogICAgICAgICBpZiAoc2hvdWxkRHJhdygpIHx8IG1fY29udGV4dFN0YXRlID09
IENPTlRFWFRfTE9TVCkKLSAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKKyAgICAgICAg
ICAgIHJldHVybiBtX25lZWRzRm9yY2VkUmVkcmF3ID8gQUNUSU9OX0RSQVdfRk9SQ0VEIDogQUNU
SU9OX0RSQVdfSUZfUE9TU0lCTEU7CiAgICAgICAgIC8vIENPTU1JVF9TVEFURV9XQUlUSU5HX0ZP
Ul9GSVJTVF9EUkFXIHdhbnRzIHRvIGVuZm9yY2UgYSBkcmF3LiBJZiBtX2NhbkRyYXcgaXMgZmFs
c2UsCiAgICAgICAgIC8vIHByb2NlZWQgdG8gdGhlIG5leHQgc3RlcCAoc2ltaWxhciBhcyBpbiBD
T01NSVRfU1RBVEVfSURMRSkuCiAgICAgICAgIGlmICghbV9jYW5EcmF3ICYmIG1fbmVlZHNDb21t
aXQgJiYgKG1fdmlzaWJsZSB8fCBtX25lZWRzRm9yY2VkQ29tbWl0KSkKQEAgLTE0MCwxMSArMTQw
LDE1IEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKEFjdGlvbiBh
Y3Rpb24pCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRf
U1RBVEVfSURMRTsKICAgICAgICAgbV9uZWVkc1JlZHJhdyA9IHRydWU7CisgICAgICAgIGlmICht
X2RyYXdJZlBvc3NpYmxlRmFpbGVkKQorICAgICAgICAgICAgbV9sYXN0RnJhbWVOdW1iZXJXaGVy
ZURyYXdXYXNDYWxsZWQgPSAtMTsKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2FzZSBBQ1RJT05f
RFJBVzoKKyAgICBjYXNlIEFDVElPTl9EUkFXX0ZPUkNFRDoKKyAgICBjYXNlIEFDVElPTl9EUkFX
X0lGX1BPU1NJQkxFOgogICAgICAgICBtX25lZWRzUmVkcmF3ID0gZmFsc2U7CiAgICAgICAgIG1f
bmVlZHNGb3JjZWRSZWRyYXcgPSBmYWxzZTsKKyAgICAgICAgbV9kcmF3SWZQb3NzaWJsZUZhaWxl
ZCA9IGZhbHNlOwogICAgICAgICBpZiAobV9pbnNpZGVWU3luYykKICAgICAgICAgICAgIG1fbGFz
dEZyYW1lTnVtYmVyV2hlcmVEcmF3V2FzQ2FsbGVkID0gbV9jdXJyZW50RnJhbWVOdW1iZXI7CiAg
ICAgICAgIGlmIChtX2NvbW1pdFN0YXRlID09IENPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJT
VF9EUkFXKSB7CkBAIC0xOTksNiArMjAzLDE1IEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OnNldE5lZWRzRm9yY2VkUmVkcmF3KCkKICAgICBtX25lZWRzRm9yY2VkUmVkcmF3ID0gdHJ1
ZTsKIH0KIAordm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6ZGlkRHJhd0lmUG9zc2libGVD
b21wbGV0ZWQoYm9vbCBzdWNjZXNzKQoreworICAgIG1fZHJhd0lmUG9zc2libGVGYWlsZWQgPSAh
c3VjY2VzczsKKyAgICBpZiAobV9kcmF3SWZQb3NzaWJsZUZhaWxlZCkgeworICAgICAgICBtX25l
ZWRzUmVkcmF3ID0gdHJ1ZTsKKyAgICAgICAgbV9uZWVkc0NvbW1pdCA9IHRydWU7CisgICAgfQor
fQorCiB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXROZWVkc0NvbW1pdCgpCiB7CiAg
ICAgbV9uZWVkc0NvbW1pdCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmUuaAppbmRleCA2MWJlYzM5NGVjZTgwOTUzY2FkOWQ1YmE4YmYzMDY2OTVjMGUxZjgx
Li42Y2Q4YzMyM2M4OGRlOTU0NzgyYTFlZDBmZDFmYjEyZDQ4YjhjOWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0
YXRlTWFjaGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKQEAgLTY5LDcgKzY5LDggQEAgcHVibGlj
OgogICAgICAgICBBQ1RJT05fQkVHSU5fRlJBTUUsCiAgICAgICAgIEFDVElPTl9CRUdJTl9VUERB
VEVfTU9SRV9SRVNPVVJDRVMsCiAgICAgICAgIEFDVElPTl9DT01NSVQsCi0gICAgICAgIEFDVElP
Tl9EUkFXLAorICAgICAgICBBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwKKyAgICAgICAgQUNUSU9O
X0RSQVdfRk9SQ0VELAogICAgICAgICBBQ1RJT05fQkVHSU5fQ09OVEVYVF9SRUNSRUFUSU9OCiAg
ICAgfTsKICAgICBBY3Rpb24gbmV4dEFjdGlvbigpIGNvbnN0OwpAQCAtOTUsNiArOTYsOSBAQCBw
dWJsaWM6CiAgICAgLy8gd2UgYXJlIG5vdCB2aXNpYmxlLgogICAgIHZvaWQgc2V0TmVlZHNGb3Jj
ZWRSZWRyYXcoKTsKIAorICAgIC8vIEluZGljYXRlcyB3aGV0aGVyIEFDVElPTl9EUkFXX0lGX1BP
U1NJQkxFIGRyYXcgdG8gdGhlIHNjcmVlbiBvciBub3QuCisgICAgdm9pZCBkaWREcmF3SWZQb3Nz
aWJsZUNvbXBsZXRlZChib29sIHN1Y2Nlc3MpOworCiAgICAgLy8gSW5kaWNhdGVzIHRoYXQgYSBu
ZXcgY29tbWl0IGZsb3cgbmVlZHMgdG8gYmUgcGVyZm9ybWVkLCBlaXRoZXIgdG8gcHVsbAogICAg
IC8vIHVwZGF0ZXMgZnJvbSB0aGUgbWFpbiB0aHJlYWQgdG8gdGhlIGltcGwsIG9yIHRvIHB1c2gg
ZGVsdGFzIGZyb20gdGhlIGltcGwKICAgICAvLyB0aHJlYWQgdG8gbWFpbi4KQEAgLTEyMiw2ICsx
MjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoKTsKIAogcHJvdGVj
dGVkOgorICAgIGJvb2wgc2hvdWxkRHJhd0ZvcmNlZCgpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxk
RHJhdygpIGNvbnN0OwogICAgIGJvb2wgaGFzRHJhd25UaGlzRnJhbWUoKSBjb25zdDsKIApAQCAt
MTM3LDYgKzE0Miw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1faW5zaWRlVlN5bmM7CiAgICAg
Ym9vbCBtX3Zpc2libGU7CiAgICAgYm9vbCBtX2NhbkRyYXc7CisgICAgYm9vbCBtX2RyYXdJZlBv
c3NpYmxlRmFpbGVkOwogICAgIENvbnRleHRTdGF0ZSBtX2NvbnRleHRTdGF0ZTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggZTQxNzNhOGFkNjExM2Y3ZWRjNGI5MDJhYjBh
N2Y4NTA4NjNhMTQ1Zi4uNDNhYjUyOGY2ZWI2NzlmODQ0MmFiMjhhNWViNzU5YzQwNWM5MzI4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTU0MiwxMiArNTQyLDEyIEBAIHZvaWQg
Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbigpCiAg
ICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAm
Q0NUaHJlYWRQcm94eTo6YmVnaW5Db250ZXh0UmVjcmVhdGlvbikpOwogfQogCi12b2lkIENDVGhy
ZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkKK2Jvb2wgQ0NUaHJlYWRQcm94
eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlcm5hbChib29sIGZvcmNlZERyYXcpCiB7
CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRT
d2FwIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBpZiAoIW1f
bGF5ZXJUcmVlSG9zdEltcGwpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICAvLyBGSVhNRTogY29tcHV0ZSB0aGUgZnJhbWUgZGlzcGxheSB0aW1lIG1vcmUgaW50
ZWxsaWdlbnRseQogICAgIGRvdWJsZSBtb25vdG9uaWNUaW1lID0gbW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lKCk7CkBAIC01NTYsMjEgKzU1NiwyNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNj
aGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkKICAgICBtX2lucHV0SGFuZGxlck9uSW1wbFRocmVh
ZC0+YW5pbWF0ZShtb25vdG9uaWNUaW1lKTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5hbmlt
YXRlKG1vbm90b25pY1RpbWUsIHdhbGxDbG9ja1RpbWUpOwogICAgIENDTGF5ZXJUcmVlSG9zdElt
cGw6OkZyYW1lRGF0YSBmcmFtZTsKLSAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5wcmVwYXJlVG9E
cmF3KGZyYW1lKTsKLSAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsK
KyAgICBib29sIGRyYXdGcmFtZSA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnByZXBhcmVUb0RyYXco
ZnJhbWUpIHx8IGZvcmNlZERyYXc7CisgICAgaWYgKGRyYXdGcmFtZSkKKyAgICAgICAgbV9sYXll
clRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAKICAgICAvLyBDaGVjayBmb3IgYSBw
ZW5kaW5nIGNvbXBvc2l0ZUFuZFJlYWRiYWNrLgogICAgIGlmIChtX3JlYWRiYWNrUmVxdWVzdE9u
SW1wbFRocmVhZCkgeworICAgICAgICBBU1NFUlQoZHJhd0ZyYW1lKTsKICAgICAgICAgbV9sYXll
clRyZWVIb3N0SW1wbC0+cmVhZGJhY2sobV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPnBp
eGVscywgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPnJlY3QpOwogICAgICAgICBtX3Jl
YWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+c3VjY2VzcyA9ICFtX2xheWVyVHJlZUhvc3RJbXBs
LT5pc0NvbnRleHRMb3N0KCk7CiAgICAgICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFk
LT5jb21wbGV0aW9uLnNpZ25hbCgpOwogICAgICAgICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRo
cmVhZCA9IDA7CiAgICAgfQogCi0gICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMo
KTsKKyAgICBpZiAoZHJhd0ZyYW1lKQorICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zd2Fw
QnVmZmVycygpOworICAgIGVsc2UKKyAgICAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmRp
ZFNraXBGcmFtZSgpOwogCiAgICAgLy8gUHJvY2VzcyBhbnkgZmluaXNoIHJlcXVlc3QKICAgICBp
ZiAobV9maW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpIHsKKyAg
ICAgICAgQVNTRVJUKGRyYXdGcmFtZSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmZp
bmlzaEFsbFJlbmRlcmluZygpOwogICAgICAgICBtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRp
b25FdmVudE9uSW1wbFRocmVhZC0+c2lnbmFsKCk7CiAgICAgICAgIG1fZmluaXNoQWxsUmVuZGVy
aW5nQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkID0gMDsKQEAgLTU4MSw2ICs1ODcsMTkgQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpCiAgICAgICAg
IG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1lT25JbXBsVGhyZWFkID0gZmFsc2U7CiAg
ICAgICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhp
cywgJkNDVGhyZWFkUHJveHk6OmRpZENvbW1pdEFuZERyYXdGcmFtZSkpOwogICAgIH0KKworICAg
IEFTU0VSVChkcmF3RnJhbWUgfHwgKCFkcmF3RnJhbWUgJiYgIWZvcmNlZERyYXcpKTsKKyAgICBy
ZXR1cm4gZHJhd0ZyYW1lOworfQorCitib29sIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlv
bkRyYXdBbmRTd2FwSWZQb3NzaWJsZSgpCit7CisgICAgcmV0dXJuIHNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSW50ZXJuYWwoZmFsc2UpOworfQorCit2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVk
dWxlZEFjdGlvbkRyYXdBbmRTd2FwRm9yY2VkKCkKK3sKKyAgICBzY2hlZHVsZWRBY3Rpb25EcmF3
QW5kU3dhcEludGVybmFsKHRydWUpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OmRpZENvbW1p
dEFuZERyYXdGcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggZTdiYWRhNjQwNmZh
ZGEzNTlhM2E4MTljOWRmM2YxZjVkOGYxMGViZC4uNDg2MWY3OTA5MjYwMWMwMDVhMDUwNTIwZDU0
N2VkMjFjZGY5ZDdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtODEsNyArODEsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNhbkRyYXcoKTsKICAgICB2aXJ0dWFsIGJvb2wg
aGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVs
ZWRBY3Rpb25CZWdpbkZyYW1lKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwKCk7CisgICAgdmlydHVhbCBib29sIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2Fw
SWZQb3NzaWJsZSgpOworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dh
cEZvcmNlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVz
b3VyY2VzKCk7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpOwogICAg
IHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKCk7CkBA
IC0xMjUsNiArMTI2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxheWVyVHJlZUhvc3RDbG9zZWRP
bkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIHNldEZ1bGxSb290TGF5
ZXJEYW1hZ2VPbkltcGxUaHJlYWQoKTsKICAgICB2b2lkIHJlY3JlYXRlQ29udGV4dE9uSW1wbFRo
cmVhZChDQ0NvbXBsZXRpb25FdmVudCosIEdyYXBoaWNzQ29udGV4dDNEKiwgYm9vbCogcmVjcmVh
dGVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqKTsKKyAgICBib29sIHNjaGVk
dWxlZEFjdGlvbkRyYXdBbmRTd2FwSW50ZXJuYWwoYm9vbCBmb3JjZWREcmF3KTsKIAogICAgIC8v
IEFjY2Vzc2VkIG9uIG1haW4gdGhyZWFkIG9ubHkuCiAgICAgYm9vbCBtX2FuaW1hdGVSZXF1ZXN0
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IGE1N2I1YjM3OTVlNGNjNzM3MTkyZDkyZDAyZDNhZjlh
NTliNDk4MzIuLmVhOTg3NTgyMTUxNGVhZjhkNDNmNzAzNGExMmQyNWVkNjBmMzkzZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QuY3BwCkBAIC01NDQsMTMgKzU0NCwxNCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QsIHByZXBhcmVUb0RyYXdGYWlsc1doZW5BbmltYXRpb25Vc2VzQ2hlY2tlcmJvYXJk
KQogICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKICAg
ICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKIAotICAgIC8vIFdoZW4gYSB0ZXh0dXJl
IGlzIG1pc3NpbmcgYW5kIHdlJ3JlIGFuaW1hdGluZywgd2UgZG9uJ3QgZHJhdyBhbnl0aGluZy4K
KyAgICAvLyBXaGVuIGEgdGV4dHVyZSBpcyBtaXNzaW5nIGFuZCB3ZSdyZSBhbmltYXRpbmcsIHdl
IGRvbid0IHdhbnQgdG8gZHJhdyBhbnl0aGluZy4KICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5
ZXIoRGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CiAgICAgcm9vdCA9IHN0YXRpY19jYXN0
PERpZERyYXdDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOwogICAgIHJvb3Qt
PmFkZENoaWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSgxLCB0cnVlLCBm
YWxzZSwgdHJ1ZSkpOwogICAgIGxheWVyID0gc3RhdGljX2Nhc3Q8TWlzc2luZ1RleHR1cmVBbmlt
YXRpbmdMYXllcio+KHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCkpOwogCiAgICAgRVhQRUNUX0ZB
TFNFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5k
cmF3TGF5ZXJzKGZyYW1lKTsKIAogICAgIC8vIFdoZW4gdGhlIGxheWVyIHNraXBzIGRyYXcgYW5k
IHdlJ3JlIGFuaW1hdGluZywgd2Ugc3RpbGwgZHJhdyB0aGUgZnJhbWUuCiAgICAgbV9ob3N0SW1w
bC0+c2V0Um9vdExheWVyKERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUoMCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QuY3BwCmluZGV4IGVhNmI5MjdlNTM5NDUwZjFkMGJhY2JhNDE3MTkyM2U3N2NhZGJm
Y2MuLmU0YTVkN2M5NTk0NGI5NGQ2NTNjMTQxMTk1NmI5YzI5Y2NlZDQ2YmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdC5jcHAKQEAgLTExOSw2ICsxMTksMTc1IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LCBUZXN0U2V0Rm9yY2VkUmVkcmF3RG9lc05vdFNldHNOb3JtYWxSZWRyYXcp
CiAgICAgRVhQRUNUX1RSVUUoc3RhdGUudnN5bmNDYWxsYmFja05lZWRlZCgpKTsKIH0KIAorVEVT
VChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGYWlsZWREcmF3U2V0c05lZWRzQ29t
bWl0QW5kRG9lc05vdERyYXdBZ2FpbikKK3sKKyAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSBz
dGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldE5lZWRzUmVk
cmF3KCk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBF
Q1RfVFJVRShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOworICAgIHN0YXRlLmRpZEVudGVy
VlN5bmMoKTsKKworICAgIC8vIFdlJ3JlIGRyYXdpbmcgbm93LgorICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRB
Y3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9G
QUxTRShzdGF0ZS5yZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5jb21t
aXRQZW5kaW5nKCkpOworCisgICAgLy8gRmFpbGluZyB0aGUgZHJhdyBtYWtlcyB1cyByZXF1aXJl
IGEgY29tbWl0LgorICAgIHN0YXRlLmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGVkKGZhbHNlKTsK
KyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFN
RSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0
ZS5yZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLmNvbW1pdFBlbmRpbmco
KSk7Cit9CisKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0U2V0TmVlZHNS
ZWRyYXdEdXJpbmdGYWlsZWREcmF3RG9lc05vdFJlbW92ZU5lZWRzUmVkcmF3KQoreworICAgIEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7
CisgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS5yZWRy
YXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQo
KSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOworCisgICAgLy8gV2UncmUgZHJhd2luZyBu
b3cuCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19J
Rl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUpOworICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRB
Y3Rpb24oKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7CisgICAg
RVhQRUNUX0ZBTFNFKHN0YXRlLmNvbW1pdFBlbmRpbmcoKSk7CisKKyAgICAvLyBXaGlsZSBzdGls
bCBpbiB0aGUgc2FtZSB2c3luYyBjYWxsYmFjaywgc2V0IG5lZWRzIHJlZHJhdyBhZ2Fpbi4KKyAg
ICAvLyBUaGlzIHNob3VsZCBub3QgcmVkcmF3LgorICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KCk7
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIEZhaWxpbmcgdGhlIGRyYXcgbWFrZXMgdXMgcmVx
dWlyZSBhIGNvbW1pdC4KKyAgICBzdGF0ZS5kaWREcmF3SWZQb3NzaWJsZUNvbXBsZXRlZChmYWxz
ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
RlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3
UGVuZGluZygpKTsKK30KKworVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RD
b21taXRBZnRlckZhaWxlZERyYXdBbGxvd3NEcmF3SW5TYW1lRnJhbWUpCit7CisgICAgQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKwor
ICAgIC8vIFN0YXJ0IGEgY29tbWl0LgorICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KCk7CisgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUuY29t
bWl0UGVuZGluZygpKTsKKworICAgIC8vIFRoZW4gaW5pdGlhdGUgYSBkcmF3LgorICAgIHN0YXRl
LnNldE5lZWRzUmVkcmF3KCk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUudnN5bmNDYWxsYmFja05l
ZWRlZCgpKTsKKyAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CisgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFj
dGlvbigpKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS5yZWRyYXdQZW5kaW5nKCkpOworCisgICAg
Ly8gRmFpbCB0aGUgZHJhdy4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAg
c3RhdGUuZGlkRHJhd0lmUG9zc2libGVDb21wbGV0ZWQoZmFsc2UpOworICAgIEVYUEVDVF9UUlVF
KHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7CisgICAgLy8gQnV0IHRoZSBjb21taXQgaXMgb25nb2lu
Zy4KKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS5jb21taXRQZW5kaW5nKCkpOworCisgICAgLy8gRmlu
aXNoIHRoZSBjb21taXQuCisgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVf
UkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VT
KTsKKyAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7Cisg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fQ09NTUlUKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS5yZWRyYXdQZW5k
aW5nKCkpOworCisgICAgLy8gQW5kIHdlIHNob3VsZCBiZSBhbGxvd2VkIHRvIGRyYXcgYWdhaW4u
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9Q
T1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKK30KKworVEVTVChDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QsIFRlc3RDb21taXRBZnRlckZhaWxlZEFuZFN1Y2Nlc3NmdWxEcmF3RG9lc05v
dEFsbG93RHJhd0luU2FtZUZyYW1lKQoreworICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lIHN0
YXRlOworICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisKKyAgICAvLyBTdGFydCBhIGNvbW1p
dC4KKyAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCgpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwor
ICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVH
SU5fRlJBTUUpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLmNvbW1pdFBlbmRpbmcoKSk7CisKKyAg
ICAvLyBUaGVuIGluaXRpYXRlIGEgZHJhdy4KKyAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdygpOwor
ICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7CisgICAgc3RhdGUu
ZGlkRW50ZXJWU3luYygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNU
X1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKworICAgIC8vIEZhaWwgdGhlIGRyYXcuCisg
ICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFX
X0lGX1BPU1NJQkxFKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLmRpZERyYXdJZlBvc3Np
YmxlQ29tcGxldGVkKGZhbHNlKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS5yZWRyYXdQZW5kaW5n
KCkpOworICAgIC8vIEJ1dCB0aGUgY29tbWl0IGlzIG9uZ29pbmcuCisgICAgRVhQRUNUX1RSVUUo
c3RhdGUuY29tbWl0UGVuZGluZygpKTsKKworICAgIC8vIEZvcmNlIGEgZHJhdy4KKyAgICBzdGF0
ZS5zZXROZWVkc0ZvcmNlZFJlZHJhdygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0RSQVdfRk9SQ0VELCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAg
Ly8gRG8gdGhlIGZvcmNlZCBkcmF3LgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19GT1JDRUQpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAg
RVhQRUNUX0ZBTFNFKHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7CisgICAgLy8gQW5kIHRoZSBjb21t
aXQgaXMgc3RpbGwgb25nb2luZy4KKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS5jb21taXRQZW5kaW5n
KCkpOworCisgICAgLy8gRmluaXNoIHRoZSBjb21taXQuCisgICAgc3RhdGUuYmVnaW5GcmFtZUNv
bXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
QkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0
YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBE
QVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXND
b21wbGV0ZShmYWxzZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRl
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlUKTsKKyAgICBFWFBFQ1RfVFJV
RShzdGF0ZS5yZWRyYXdQZW5kaW5nKCkpOworCisgICAgLy8gQW5kIHdlIHNob3VsZCBub3QgYmUg
YWxsb3dlZCB0byBkcmF3IGFnYWluIGluIHRoZSBzYW1lIGZyYW1lLi4KKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OworfQorCitURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZhaWxlZERyYXdJ
c1JldHJpZWROZXh0VlN5bmMpCit7CisgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUgc3RhdGU7
CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIFN0YXJ0IGEgZHJhdy4KKyAg
ICBzdGF0ZS5zZXROZWVkc1JlZHJhdygpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2Fs
bGJhY2tOZWVkZWQoKSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOworICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsK
KworICAgIC8vIEZhaWwgdGhlIGRyYXcuCisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFKTsKKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OworICAgIHN0YXRlLmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGVkKGZhbHNlKTsKKyAgICBFWFBF
Q1RfVFJVRShzdGF0ZS5yZWRyYXdQZW5kaW5nKCkpOworCisgICAgLy8gV2Ugc2hvdWxkIG5vdCBi
ZSB0cnlpbmcgdG8gZHJhdyBhZ2FpbiBub3csIGJ1dCB3ZSBoYXZlIGEgY29tbWl0IHBlbmRpbmcu
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJB
TUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7Cisg
ICAgRVhQRUNUX1RSVUUoc3RhdGUudnN5bmNDYWxsYmFja05lZWRlZCgpKTsKKyAgICBzdGF0ZS5k
aWRFbnRlclZTeW5jKCk7CisKKyAgICAvLyBXZSBzaG91bGQgdHJ5IGRyYXcgYWdhaW4gaW4gdGhl
IG5leHQgdnN5bmMuCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKK30KKwogVEVTVChDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3REb2VzdERyYXdUd2ljZUluU2FtZUZyYW1lKQog
ewogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lIHN0YXRlOwpAQCAtMTI2LDggKzI5NSw4IEBA
IFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RG9lc3REcmF3VHdpY2VJblNh
bWVGcmFtZSkKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdygpOwogICAgIEVYUEVDVF9UUlVFKHN0
YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7CiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwot
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7Ci0gICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9EUkFXKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0
YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9Q
T1NTSUJMRSk7CiAKICAgICAvLyBXaGlsZSBzdGlsbCBpbiB0aGUgc2FtZSB2c3luYyBjYWxsYmFj
aywgc2V0IG5lZWRzIHJlZHJhdyBhZ2Fpbi4KICAgICAvLyBUaGlzIHNob3VsZCBub3QgcmVkcmF3
LgpAQCAtMTM1LDEyICszMDQsMTQgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3REb2VzdERyYXdUd2ljZUluU2FtZUZyYW1lKQogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAv
LyBNb3ZlIHRvIGFub3RoZXIgZnJhbWUuIFRoaXMgc2hvdWxkIG5vdyBkcmF3LgorICAgIHN0YXRl
LmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGVkKHRydWUpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5
bmMoKTsKICAgICBFWFBFQ1RfVFJVRShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOwogICAg
IHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKIAotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgc3RhdGUudXBk
YXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsKKyAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSk7CisgICAgc3RhdGUuZGlkRHJhd0lm
UG9zc2libGVDb21wbGV0ZWQodHJ1ZSk7CiAgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLnZzeW5jQ2Fs
bGJhY2tOZWVkZWQoKSk7CiB9CiAKQEAgLTE2MSwxMSArMzMyLDExIEBAIFRFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFjdGlvbkRyYXdzT25WU3luYykKIAogICAgICAg
ICAgICAgLy8gQ2FzZSAxOiBuZWVkc0NvbW1pdD1mYWxzZQogICAgICAgICAgICAgc3RhdGUuc2V0
TmVlZHNDb21taXQoZmFsc2UpOwotICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICAgICAgICAg
IEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lC
TEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAgICAgICAgIC8vIENhc2UgMjogbmVlZHND
b21taXQ9dHJ1ZQogICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7Ci0gICAg
ICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOworICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtMTc0LDcgKzM0NSw4IEBAIFRFU1QoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFjdGlvbkRyYXdzT25WU3luYykKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBqID0gMDsgaiA8IDI7ICsraikgewogICAgICAgICAgICAgU3RhdGVNYWNoaW5l
IHN0YXRlOwogICAgICAgICAgICAgc3RhdGUuc2V0Q29tbWl0U3RhdGUoYWxsQ29tbWl0U3RhdGVz
W2ldKTsKLSAgICAgICAgICAgIGlmICghaikgeworICAgICAgICAgICAgYm9vbCBmb3JjZWREcmF3
ID0gajsKKyAgICAgICAgICAgIGlmICghZm9yY2VkRHJhdykgewogICAgICAgICAgICAgICAgIHN0
YXRlLmRpZEVudGVyVlN5bmMoKTsKICAgICAgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc1JlZHJh
dyh0cnVlKTsKICAgICAgICAgICAgICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOwpAQCAtMTgz
LDcgKzM1NSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFj
dGlvbkRyYXdzT25WU3luYykKIAogICAgICAgICAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFjdGlvbiBleHBlY3RlZEFjdGlvbjsKICAgICAgICAgICAgIGlmIChhbGxDb21taXRTdGF0ZXNb
aV0gIT0gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01N
SVQpCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWRBY3Rpb24gPSBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0RSQVc7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRBY3Rpb24gPSBmb3Jj
ZWREcmF3ID8gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0ZPUkNFRCA6IEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRTsKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICBleHBlY3RlZEFjdGlvbiA9IENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlUOwogCkBAIC0yMzEsMjIgKzQwMywyMiBAQCBURVNUKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5vQ29tbWl0U3RhdGVzUmVkcmF3V2hlbklu
dmlzaWJsZSkKICAgICAgICAgICAgIC8vIENhc2UgMTogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmc9ZmFsc2UuCiAgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc0Nv
bW1pdChmYWxzZSk7CiAgICAgICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVu
ZGluZyhmYWxzZSk7Ci0gICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgICAgICAgICAgRVhQRUNU
X05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKIAogICAgICAgICAgICAgLy8gQ2FzZSAyOiBuZWVkc0NvbW1pdD1m
YWxzZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz10cnVlLgogICAgICAgICAgICAgc3RhdGUu
c2V0TmVlZHNDb21taXQoZmFsc2UpOwogICAgICAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJl
c291cmNlc1BlbmRpbmcodHJ1ZSk7Ci0gICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgICAgICAg
ICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NT
SUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgICAgICAgICAgLy8gQ2FzZSAzOiBuZWVk
c0NvbW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZhbHNlLgogICAgICAgICAg
ICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CiAgICAgICAgICAgICBzdGF0ZS5zZXRVcGRh
dGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7Ci0gICAgICAgICAgICBFWFBFQ1RfTkUoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwor
ICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJB
V19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgICAgICAgICAgLy8gQ2Fz
ZSA0OiBuZWVkc0NvbW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUuCiAg
ICAgICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKICAgICAgICAgICAgIHN0YXRl
LnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOwotICAgICAgICAgICAgRVhQRUNU
X05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlv
bigpKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgICAgIH0KICAg
ICB9CiB9CkBAIC0yNjYsNyArNDM4LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRl
c3QsIFRlc3RDYW5SZWRyYXdfU3RvcHNEcmF3KQogICAgICAgICAgICAgICAgIHN0YXRlLmRpZEVu
dGVyVlN5bmMoKTsKIAogICAgICAgICAgICAgc3RhdGUuc2V0Q2FuRHJhdyhmYWxzZSk7Ci0gICAg
ICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOworICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsK
ICAgICAgICAgfQogICAgIH0KIH0KQEAgLTM4MSw4ICs1NTMsOSBAQCBURVNUKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfV2l0aFJlZHJhd19PbmVSb3VuZE9mVXBkYXRl
cykKIAogICAgIC8vIEVuc3VyZSB3ZSBkcmF3IG9uIHRoZSBuZXh0IHZzeW5jIGV2ZW4gdGhvdWdo
IGFuIHVwZGF0ZSBpcyBpbi1wcm9ncmVzcy4KICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7Ci0g
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUu
bmV4dEFjdGlvbigpKTsKLSAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0RSQVcpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3Rh
dGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BP
U1NJQkxFKTsKKyAgICBzdGF0ZS5kaWREcmF3SWZQb3NzaWJsZUNvbXBsZXRlZCh0cnVlKTsKIAog
ICAgIC8vIEVuc3VyZSB0aGF0IHdlIG9uY2Ugd2UgaGF2ZSBkcmF3biwgd2UgZG9udCBkbyBhbnl0
aGluZyBlbHNlLgogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CkBAIC00NDYsOSArNjE5LDEwIEBAIFRFU1QoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0U2V0TmVlZHNDb21taXRJc05vdExvc3QpCiAK
ICAgICAvLyBDb21taXQgYW5kIG1ha2Ugc3VyZSB3ZSBkcmF3IG9uIG5leHQgdnN5bmMKICAgICBz
dGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCk7
Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3Rh
dGUubmV4dEFjdGlvbigpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJ
UlNUX0RSQVcsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwotICAgIHN0YXRlLnVwZGF0ZVN0YXRlKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVyk7CisgICAgc3RhdGUudXBkYXRlU3Rh
dGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFKTsKKyAg
ICBzdGF0ZS5kaWREcmF3SWZQb3NzaWJsZUNvbXBsZXRlZCh0cnVlKTsKIAogICAgIC8vIFZlcmlm
eSB0aGF0IGFub3RoZXIgY29tbWl0IHdpbGwgYmVnaW4uCiAgICAgc3RhdGUuZGlkTGVhdmVWU3lu
YygpOwpAQCAtNDkxLDggKzY2NSw5IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0RnVsbEN5Y2xlKQogCiAgICAgLy8gQXQgdnN5bmMsIGRyYXcuCiAgICAgc3RhdGUuZGlk
RW50ZXJWU3luYygpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fRFJBV19JRl9QT1NTSUJMRSk7CisgICAgc3RhdGUuZGlkRHJhd0lmUG9zc2libGVDb21w
bGV0ZWQodHJ1ZSk7CiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwogCiAgICAgLy8gU2hvdWxk
IGJlIHN5bmNocm9uaXplZCwgbm8gZHJhdyBuZWVkZWQsIG5vIGFjdGlvbiBuZWVkZWQuCkBAIC01
NDEsOCArNzE2LDkgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxs
Q3ljbGVXaXRoQ29tbWl0UmVxdWVzdEluYmV0d2VlbikKIAogICAgIC8vIEF0IHZzeW5jLCBkcmF3
LgogICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIHN0YXRl
LnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVyk7CisgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJM
RSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUpOworICAgIHN0YXRlLmRpZERy
YXdJZlBvc3NpYmxlQ29tcGxldGVkKHRydWUpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsK
IAogICAgIC8vIFNob3VsZCBiZSBzeW5jaHJvbml6ZWQsIG5vIGRyYXcgbmVlZGVkLCBubyBhY3Rp
b24gbmVlZGVkLgpAQCAtNjUyLDcgKzgyOCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LCBUZXN0Q29udGV4dExvc3RXaGVuSWRsZUFuZENvbW1pdFJlcXVlc3RlZFdoaWxlCiAg
ICAgLy8gc2V0Q2FuRHJhdy4KICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKICAgICBz
dGF0ZS5kaWRFbnRlclZTeW5jKCk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0
QWN0aW9uKCkpOwogICAgIHN0YXRlLnNldENhbkRyYXcoZmFsc2UpOwogICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7
CiAgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKQEAgLTY3Miw3ICs4NDgsNyBAQCBURVNUKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0V2hpbGVDb21taXRJblBy
b2dyZXNzKQogICAgIC8vIFNldCBkYW1hZ2UgYW5kIGV4cGVjdCBhIGRyYXcuCiAgICAgc3RhdGUu
c2V0TmVlZHNSZWRyYXcodHJ1ZSk7CiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwotICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRB
Y3Rpb24oKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
RFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVT
dGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKIApA
QCAtNzEyLDcgKzg4OCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0
Q29udGV4dExvc3RXaGlsZUNvbW1pdEluUHJvZ3Jlc3NBbmRBbm90aGVyCiAgICAgLy8gU2V0IGRh
bWFnZSBhbmQgZXhwZWN0IGEgZHJhdy4KICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsK
ICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24o
KSk7CiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwogCkBAIC03MzgsNyArOTE0LDcgQEAgVEVT
VChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDb250ZXh0TG9zdFdoaWxlQ29tbWl0
SW5Qcm9ncmVzc0FuZEFub3RoZXIKIAogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6Q09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcsIHN0YXRlLmNvbW1pdFN0
YXRlKCkpOwogCi0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
RFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwog
ICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBFeHBl
Y3QgdG8gYmUgdG9sZCB0byBiZWdpbiBjb250ZXh0IHJlY3JlYXRpb24sIGluZGVwZW5kZW50IG9m
IHZzeW5jIHN0YXRlCkBAIC03NjAsNyArOTM2LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QsIFRlc3RGaW5pc2hBbGxSZW5kZXJpbmdXaGlsZUNvbnRleHRMb3N0KQogICAgIC8v
IEFzayBhIGZvcmNlZCByZWRyYXcgYW5kIHZlcmlmeSBpdCBvY3VycnMuCiAgICAgc3RhdGUuc2V0
TmVlZHNGb3JjZWRSZWRyYXcodHJ1ZSk7CiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwotICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5l
eHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fRFJBV19GT1JDRUQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUuZGlkTGVhdmVW
U3luYygpOwogCiAgICAgLy8gQ2xlYXIgdGhlIGZvcmNlZCByZWRyYXcgYml0LgpAQCAtNzczLDcg
Kzk0OSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RmluaXNoQWxs
UmVuZGVyaW5nV2hpbGVDb250ZXh0TG9zdCkKICAgICAvLyBBc2sgYSBmb3JjZWQgcmVkcmF3IGFu
ZCB2ZXJpZnkgaXQgb2N1cnJzLgogICAgIHN0YXRlLnNldE5lZWRzRm9yY2VkUmVkcmF3KHRydWUp
OwogICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfRk9SQ0VELCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCmluZGV4IDQ1ZjYx
YjkwYmY1NGUyZWNlNzhiZGE4ODNmZmEwYTI2YmQ1NDM2ZWIuLjZmOWMyMjFiNTJlZDIwNjNlMjc0
ZTUxNTJlMmNmOTc3YWNmNWQ0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGljOgogICAgICAg
ICBtX2FjdGlvbnMuY2xlYXIoKTsKICAgICAgICAgbV9oYXNNb3JlUmVzb3VyY2VVcGRhdGVzID0g
ZmFsc2U7CiAgICAgICAgIG1fY2FuRHJhdyA9IHRydWU7CisgICAgICAgIG1fZHJhd1N1Y2Nlc3Mg
PSB0cnVlOwogICAgIH0KIAogICAgIHZvaWQgc2V0SGFzTW9yZVJlc291cmNlVXBkYXRlcyhib29s
IGIpIHsgbV9oYXNNb3JlUmVzb3VyY2VVcGRhdGVzID0gYjsgfQpAQCAtNTYsMTQgKzU3LDE4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhdygpIHsgcmV0dXJuIG1fY2FuRHJhdzsg
fQogICAgIHZpcnR1YWwgYm9vbCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNNb3JlUmVzb3VyY2VVcGRhdGVzOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxl
ZEFjdGlvbkJlZ2luRnJhbWUoKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlv
bkJlZ2luRnJhbWUiKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5k
U3dhcCgpIHsgbV9hY3Rpb25zLnB1c2hfYmFjaygic2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAi
KTsgfQorICAgIHZpcnR1YWwgYm9vbCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2li
bGUoKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQ
b3NzaWJsZSIpOyByZXR1cm4gbV9kcmF3U3VjY2VzczsgfQorICAgIHZpcnR1YWwgdm9pZCBzY2hl
ZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZvcmNlZCgpIHsgbV9hY3Rpb25zLnB1c2hfYmFjaygic2No
ZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBGb3JjZWQiKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hl
ZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkgeyBtX2FjdGlvbnMucHVzaF9iYWNrKCJz
Y2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIik7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkgeyBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRB
Y3Rpb25Db21taXQiKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNv
bnRleHRSZWNyZWF0aW9uKCkgeyBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25C
ZWdpbkNvbnRleHRSZWNyZWF0aW9uIik7IH0KIAorICAgIHZvaWQgc2V0RHJhd1N1Y2Nlc3MoYm9v
bCBkcmF3U3VjY2VzcykgeyBtX2RyYXdTdWNjZXNzID0gZHJhd1N1Y2Nlc3M7IH0KKwogcHJvdGVj
dGVkOgogICAgIGJvb2wgbV9oYXNNb3JlUmVzb3VyY2VVcGRhdGVzOwogICAgIGJvb2wgbV9jYW5E
cmF3OworICAgIGJvb2wgbV9kcmF3U3VjY2VzczsKICAgICBzdGQ6OnZlY3Rvcjxjb25zdCBjaGFy
Kj4gbV9hY3Rpb25zOwogfTsKIApAQCAtOTQsNyArOTksNyBAQCBURVNUKENDU2NoZWR1bGVyVGVz
dCwgUmVxdWVzdENvbW1pdCkKICAgICAvLyBUaWNrIHNob3VsZCBkcmF3LgogICAgIHRpbWVTb3Vy
Y2UtPnRpY2soKTsKICAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7Ci0gICAg
RVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCIsIGNsaWVudC5hY3Rpb24o
MCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3Np
YmxlIiwgY2xpZW50LmFjdGlvbigwKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHRpbWVTb3VyY2UtPmFj
dGl2ZSgpKTsKICAgICBjbGllbnQucmVzZXQoKTsKIApAQCAtMTMxLDEyICsxMzYsMTIgQEAgVEVT
VChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRBZnRlckJlZ2luRnJhbWUpCiAgICAgdGlt
ZVNvdXJjZS0+dGljaygpOwogICAgIEVYUEVDVF9GQUxTRSh0aW1lU291cmNlLT5hY3RpdmUoKSk7
CiAgICAgRVhQRUNUX0VRKDIsIGNsaWVudC5udW1BY3Rpb25zKCkpOwotICAgIEVYUEVDVF9TVFJF
USgic2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBF
WFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSIsIGNsaWVu
dC5hY3Rpb24oMCkpOwogICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFt
ZSIsIGNsaWVudC5hY3Rpb24oMSkpOwogICAgIGNsaWVudC5yZXNldCgpOwogfQogCi1jbGFzcyBT
Y2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdyA6IHB1YmxpYyBDQ1NjaGVk
dWxlckNsaWVudCB7CitjbGFzcyBTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRl
RHJhdyA6IHB1YmxpYyBGYWtlQ0NTY2hlZHVsZXJDbGllbnQgewogcHVibGljOgogICAgIFNjaGVk
dWxlckNsaWVudFRoYXRTZXROZWVkc0RyYXdJbnNpZGVEcmF3KCkKICAgICAgICAgOiBtX251bURy
YXdzKDApCkBAIC0xNDYsMTcgKzE1MSwxNyBAQCBwdWJsaWM6CiAKICAgICBpbnQgbnVtRHJhd3Mo
KSBjb25zdCB7IHJldHVybiBtX251bURyYXdzOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzTW9y
ZVJlc291cmNlVXBkYXRlcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGNhbkRyYXcoKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxl
ZEFjdGlvbkJlZ2luRnJhbWUoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9u
RHJhd0FuZFN3YXAoKQorICAgIHZpcnR1YWwgYm9vbCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dh
cElmUG9zc2libGUoKQogICAgIHsKICAgICAgICAgLy8gT25seSBzZXROZWVkc1JlZHJhdyB0aGUg
Zmlyc3QgdGltZSB0aGlzIGlzIGNhbGxlZAogICAgICAgICBpZiAoIW1fbnVtRHJhd3MpCiAgICAg
ICAgICAgICBtX3NjaGVkdWxlci0+c2V0TmVlZHNSZWRyYXcoKTsKICAgICAgICAgbV9udW1EcmF3
cysrOworICAgICAgICByZXR1cm4gbV9kcmF3U3VjY2VzczsKICAgICB9CiAKKyAgICB2aXJ0dWFs
IHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBGb3JjZWQoKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25Db21taXQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2No
ZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbigpIHsgfQpAQCAtMTk0LDcgKzE5OSw0
NyBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdFJlZHJhd0luc2lkZURyYXcpCiAgICAg
RVhQRUNUX0ZBTFNFKHRpbWVTb3VyY2UtPmFjdGl2ZSgpKTsKIH0KIAotY2xhc3MgU2NoZWR1bGVy
Q2xpZW50VGhhdFNldE5lZWRzQ29tbWl0SW5zaWRlRHJhdyA6IHB1YmxpYyBDQ1NjaGVkdWxlckNs
aWVudCB7CisvLyBUZXN0IHRoYXQgcmVxdWVzdGluZyByZWRyYXcgaW5zaWRlIGEgZmFpbGVkIGRy
YXcgZG9lc24ndCBsb3NlIHRoZSByZXF1ZXN0LgorVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVl
c3RSZWRyYXdJbnNpZGVGYWlsZWREcmF3KQoreworICAgIFNjaGVkdWxlckNsaWVudFRoYXRTZXRO
ZWVkc0RyYXdJbnNpZGVEcmF3IGNsaWVudDsKKyAgICBSZWZQdHI8RmFrZUNDVGltZVNvdXJjZT4g
dGltZVNvdXJjZSA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NUaW1lU291cmNlKCkpOworICAgIE93blB0
cjxDQ1NjaGVkdWxlcj4gc2NoZWR1bGVyID0gQ0NTY2hlZHVsZXI6OmNyZWF0ZSgmY2xpZW50LCBh
ZG9wdFB0cihuZXcgQ0NGcmFtZVJhdGVDb250cm9sbGVyKHRpbWVTb3VyY2UpKSk7CisgICAgY2xp
ZW50LnNldFNjaGVkdWxlcihzY2hlZHVsZXIuZ2V0KCkpOworICAgIHNjaGVkdWxlci0+c2V0Vmlz
aWJsZSh0cnVlKTsKKyAgICBjbGllbnQuc2V0RHJhd1N1Y2Nlc3MoZmFsc2UpOworCisgICAgc2No
ZWR1bGVyLT5zZXROZWVkc1JlZHJhdygpOworICAgIEVYUEVDVF9UUlVFKHNjaGVkdWxlci0+cmVk
cmF3UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfVFJVRSh0aW1lU291cmNlLT5hY3RpdmUoKSk7Cisg
ICAgRVhQRUNUX0VRKDAsIGNsaWVudC5udW1EcmF3cygpKTsKKworICAgIC8vIEZhaWwgdGhlIGRy
YXcuCisgICAgdGltZVNvdXJjZS0+dGljaygpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVt
RHJhd3MoKSk7CisKKyAgICAvLyBXZSBoYXZlIGEgY29tbWl0IHBlbmRpbmcgYW5kIHRoZSBkcmF3
IGZhaWxlZCwgYW5kIHdlIGRpZG4ndCBsb3NlIHRoZSByZWRyYXcgcmVxdWVzdC4KKyAgICBFWFBF
Q1RfVFJVRShzY2hlZHVsZXItPmNvbW1pdFBlbmRpbmcoKSk7CisgICAgRVhQRUNUX1RSVUUoc2No
ZWR1bGVyLT5yZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9UUlVFKHRpbWVTb3VyY2UtPmFj
dGl2ZSgpKTsKKworICAgIC8vIEZhaWwgdGhlIGRyYXcgYWdhaW4uCisgICAgdGltZVNvdXJjZS0+
dGljaygpOworICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtRHJhd3MoKSk7CisgICAgRVhQRUNU
X1RSVUUoc2NoZWR1bGVyLT5jb21taXRQZW5kaW5nKCkpOworICAgIEVYUEVDVF9UUlVFKHNjaGVk
dWxlci0+cmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfVFJVRSh0aW1lU291cmNlLT5hY3Rp
dmUoKSk7CisKKyAgICAvLyBEcmF3IHN1Y2Nlc3NmdWxseS4KKyAgICBjbGllbnQuc2V0RHJhd1N1
Y2Nlc3ModHJ1ZSk7CisgICAgdGltZVNvdXJjZS0+dGljaygpOworICAgIEVYUEVDVF9FUSgzLCBj
bGllbnQubnVtRHJhd3MoKSk7CisgICAgRVhQRUNUX1RSVUUoc2NoZWR1bGVyLT5jb21taXRQZW5k
aW5nKCkpOworICAgIEVYUEVDVF9GQUxTRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHRpbWVTb3VyY2UtPmFjdGl2ZSgpKTsKK30KKworY2xhc3MgU2NoZWR1
bGVyQ2xpZW50VGhhdFNldE5lZWRzQ29tbWl0SW5zaWRlRHJhdyA6IHB1YmxpYyBGYWtlQ0NTY2hl
ZHVsZXJDbGllbnQgewogcHVibGljOgogICAgIFNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0Nv
bW1pdEluc2lkZURyYXcoKQogICAgICAgICA6IG1fbnVtRHJhd3MoMCkKQEAgLTIwNCwxNyArMjQ5
LDE3IEBAIHB1YmxpYzoKIAogICAgIGludCBudW1EcmF3cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVt
RHJhd3M7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhdygpIHsgcmV0dXJu
IHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpCisgICAgdmly
dHVhbCBib29sIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSgpCiAgICAgewog
ICAgICAgICAvLyBPbmx5IHNldE5lZWRzQ29tbWl0IHRoZSBmaXJzdCB0aW1lIHRoaXMgaXMgY2Fs
bGVkCiAgICAgICAgIGlmICghbV9udW1EcmF3cykKICAgICAgICAgICAgIG1fc2NoZWR1bGVyLT5z
ZXROZWVkc0NvbW1pdCgpOwogICAgICAgICBtX251bURyYXdzKys7CisgICAgICAgIHJldHVybiBt
X2RyYXdTdWNjZXNzOwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25E
cmF3QW5kU3dhcEZvcmNlZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25V
cGRhdGVNb3JlUmVzb3VyY2VzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlv
bkNvbW1pdCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRl
eHRSZWNyZWF0aW9uKCkgeyB9CkBAIC0yNTEsNCArMjk2LDQ0IEBAIFRFU1QoQ0NTY2hlZHVsZXJU
ZXN0LCBSZXF1ZXN0Q29tbWl0SW5zaWRlRHJhdykKICAgICBFWFBFQ1RfRkFMU0Uoc2NoZWR1bGVy
LT5yZWRyYXdQZW5kaW5nKCkpOwogfQogCisvLyBUZXN0cyB0aGF0IHdoZW4gYSBkcmF3IGZhaWxz
IHRoZW4gdGhlIHBlbmRpbmcgY29tbWl0IHNob3VsZCBub3QgYmUgZHJvcHBlZC4KK1RFU1QoQ0NT
Y2hlZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0SW5zaWRlRmFpbGVkRHJhdykKK3sKKyAgICBTY2hl
ZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdyBjbGllbnQ7CisgICAgUmVmUHRy
PEZha2VDQ1RpbWVTb3VyY2U+IHRpbWVTb3VyY2UgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGltZVNv
dXJjZSgpKTsKKyAgICBPd25QdHI8Q0NTY2hlZHVsZXI+IHNjaGVkdWxlciA9IENDU2NoZWR1bGVy
OjpjcmVhdGUoJmNsaWVudCwgYWRvcHRQdHIobmV3IENDRnJhbWVSYXRlQ29udHJvbGxlcih0aW1l
U291cmNlKSkpOworICAgIGNsaWVudC5zZXRTY2hlZHVsZXIoc2NoZWR1bGVyLmdldCgpKTsKKyAg
ICBzY2hlZHVsZXItPnNldFZpc2libGUodHJ1ZSk7CisgICAgY2xpZW50LnNldERyYXdTdWNjZXNz
KGZhbHNlKTsKKworICAgIHNjaGVkdWxlci0+c2V0TmVlZHNSZWRyYXcoKTsKKyAgICBFWFBFQ1Rf
VFJVRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CisgICAgRVhQRUNUX1RSVUUodGltZVNv
dXJjZS0+YWN0aXZlKCkpOworICAgIEVYUEVDVF9FUSgwLCBjbGllbnQubnVtRHJhd3MoKSk7CisK
KyAgICAvLyBGYWlsIHRoZSBkcmF3LgorICAgIHRpbWVTb3VyY2UtPnRpY2soKTsKKyAgICBFWFBF
Q1RfRVEoMSwgY2xpZW50Lm51bURyYXdzKCkpOworCisgICAgLy8gV2UgaGF2ZSBhIGNvbW1pdCBw
ZW5kaW5nIGFuZCB0aGUgZHJhdyBmYWlsZWQsIGFuZCB3ZSBkaWRuJ3QgbG9zZSB0aGUgY29tbWl0
IHJlcXVlc3QuCisgICAgRVhQRUNUX1RSVUUoc2NoZWR1bGVyLT5jb21taXRQZW5kaW5nKCkpOwor
ICAgIEVYUEVDVF9UUlVFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBFQ1Rf
VFJVRSh0aW1lU291cmNlLT5hY3RpdmUoKSk7CisKKyAgICAvLyBGYWlsIHRoZSBkcmF3IGFnYWlu
LgorICAgIHRpbWVTb3VyY2UtPnRpY2soKTsKKyAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51bURy
YXdzKCkpOworICAgIEVYUEVDVF9UUlVFKHNjaGVkdWxlci0+Y29tbWl0UGVuZGluZygpKTsKKyAg
ICBFWFBFQ1RfVFJVRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CisgICAgRVhQRUNUX1RS
VUUodGltZVNvdXJjZS0+YWN0aXZlKCkpOworCisgICAgLy8gRHJhdyBzdWNjZXNzZnVsbHkuCisg
ICAgY2xpZW50LnNldERyYXdTdWNjZXNzKHRydWUpOworICAgIHRpbWVTb3VyY2UtPnRpY2soKTsK
KyAgICBFWFBFQ1RfRVEoMywgY2xpZW50Lm51bURyYXdzKCkpOworICAgIEVYUEVDVF9UUlVFKHNj
aGVkdWxlci0+Y29tbWl0UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2NoZWR1bGVyLT5y
ZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9GQUxTRSh0aW1lU291cmNlLT5hY3RpdmUoKSk7
Cit9CisKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133345</attachid>
            <date>2012-03-22 14:23:37 -0700</date>
            <delta_ts>2012-03-22 15:20:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81716-20120322172335.patch</filename>
            <type>text/plain</type>
            <size>45748</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZkZTIyNWIxZDI5NzM1
NWY4MWZhNzI1NjA1MzQ4NjBlNzlmOTYzMS4uMjAzNmQyYjE0Y2UwZWVhYjI0ZDIyMDIyNGI2MmI2
MmZkZmY4MmFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTAzLTIyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU2tp
cCBmcmFtZXMgd2hlbiBjaGVja2VyYm9hcmRpbmcgYW4gYW5pbWF0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTcxNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBzdG9wIGRyYXdpbmcg
ZnJhbWVzIHdoZW4gcHJlcGFyZVRvRHJhdyBmYWlscywgaWYgdGhlIGRyYXcgaXMKKyAgICAgICAg
bm90IGZvcmNlZC4gVGhlIGV4cGVjdGVkIGJlaGF2aW91ciBpcyBvdXRsaW5lZCBiZWxvdyBieSB0
aGUgdW5pdCB0ZXN0cy4KKworICAgICAgICBXaGVuIGEgZHJhdyBmYWlscywgd2U6CisgICAgICAg
IDEuIFNldCBtX25lZWRzUmVkcmF3IHRvIHRyeSBhZ2FpbiBuZXh0IHZzeW5jCisgICAgICAgIDIu
IFNldCBtX25lZWRzQ29tbWl0IGJlY2F1c2Ugd2UgbmVlZCBtb3JlIGRhdGEgZnJvbSB3ZWJraXQg
dG8gc3VjY2VlZAorICAgICAgICAzLiBTZXQgbV9kcmF3SWZQb3NzaWJsZUZhaWxlZC4gVGhpcyBh
bGxvd3MgdXMgdG8gdHJ5IGRyYXcgYWdhaW4gd2l0aGluCisgICAgICAgIHRoZSBzYW1lIHZzeW5j
ICppZiogYSBjb21taXQgZmluaXNoZXMgZHVyaW5nIHRoaXMgdGltZS4KKworICAgICAgICBVbml0
IHRlc3Q6IENDU2NoZWR1bGVyVGVzdC5SZXF1ZXN0UmVkcmF3SW5zaWRlRmFpbGVkRHJhdworICAg
ICAgICAgICAgICAgICAgIENDU2NoZWR1bGVyVGVzdC5SZXF1ZXN0Q29tbWl0SW5zaWRlRmFpbGVk
RHJhdworICAgICAgICAgICAgICAgICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5UZXN0
RmFpbGVkRHJhd1NldHNOZWVkc0NvbW1pdEFuZERvZXNOb3REcmF3QWdhaW4KKyAgICAgICAgICAg
ICAgICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuVGVzdFNldE5lZWRzUmVkcmF3RHVy
aW5nRmFpbGVkRHJhd0RvZXNOb3RSZW1vdmVOZWVkc1JlZHJhdworICAgICAgICAgICAgICAgICAg
IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5UZXN0Q29tbWl0QWZ0ZXJGYWlsZWREcmF3QWxs
b3dzRHJhd0luU2FtZUZyYW1lCisgICAgICAgICAgICAgICAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LlRlc3RDb21taXRBZnRlckZhaWxlZEFuZFN1Y2Nlc3NmdWxEcmF3RG9lc05vdEFs
bG93RHJhd0luU2FtZUZyYW1lCisgICAgICAgICAgICAgICAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LlRlc3RGYWlsZWREcmF3SXNSZXRyaWVkTmV4dFZTeW5jCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3Nl
cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcmVwYXJlVG9EcmF3
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmg6CisgICAgICAgIChDQ1Nj
aGVkdWxlckNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6ZGlkRHJhd0lmUG9zc2libGVDb21wbGV0ZWQp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaDoKKyAgICAgICAgKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9z
c2libGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9u
RHJhd0FuZFN3YXBGb3JjZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTAz
LTIyICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKICAg
ICAgICAgVGlsZWRCYWNraW5nU3RvcmU6IEZpeCB0ZXN0IHJlZ3Jlc3Npb25zIHRoYXQgYXBwZWFy
ZWQgd2l0aCByMTExNTYwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhYTFmODg4MWNk
NjE3YTNhMGE4NTJlZmU2YTcxYmM1NGMxZmM4MTRjLi5jZWJiMmNmNDU4ODYzMjE1ZTE3YTliMTgw
NzhiOTU4ZDU1MDk2Y2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4
IEBACisyMDEyLTAzLTIyICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtjaHJvbWl1bV0gU2tpcCBmcmFtZXMgd2hlbiBjaGVja2VyYm9hcmRpbmcgYW4gYW5p
bWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MTcxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtl
Q0NTY2hlZHVsZXJDbGllbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlQ0NT
Y2hlZHVsZXJDbGllbnQ6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSk6Cisg
ICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUNDU2NoZWR1bGVyQ2xpZW50OjpzY2hlZHVsZWRBY3Rp
b25EcmF3QW5kU3dhcEZvcmNlZCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUNDU2NoZWR1
bGVyQ2xpZW50OjpzZXREcmF3U3VjY2Vzcyk6CisgICAgICAgIChGYWtlQ0NTY2hlZHVsZXJDbGll
bnQpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OlNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0RyYXdJbnNpZGVEcmF3OjpzY2hlZHVsZWRBY3Rp
b25EcmF3QW5kU3dhcElmUG9zc2libGUpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlNjaGVkdWxl
ckNsaWVudFRoYXRTZXROZWVkc0RyYXdJbnNpZGVEcmF3OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5k
U3dhcEZvcmNlZCk6CisgICAgICAgIChXZWJLaXRUZXN0cyk6CisgICAgICAgIChXZWJLaXRUZXN0
czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzQ29tbWl0SW5zaWRlRHJhdzo6c2NoZWR1bGVk
QWN0aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpTY2hl
ZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNDb21taXRJbnNpZGVEcmF3OjpzY2hlZHVsZWRBY3Rpb25E
cmF3QW5kU3dhcEZvcmNlZCk6CisKIDIwMTItMDMtMjIgIEJlcm5oYXJkIEJhdWVyICA8YmF1ZXJi
QGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBQbHVnLWluIGZhaWxpbmcgdG8gbG9h
ZCBzaG91bGRuJ3Qgc2F5ICJNaXNzaW5nIFBsdWctaW4iCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCmluZGV4IDQ0M2ExZmZhYTc3YmEwZWU1MjAyOWRmMGUzYWIxNDk2N2Y0
YzUyZGIuLjYxYzA4YjU4NTFhNDhmY2YwNGEzZGViYzQwMTNmNjhhZDA4YzMzZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0yNzUsNyArMjc1LDkgQEAgYm9v
bCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNz
TGlzdCYgcGFzc2VzLCBDQ0xheWUKICAgICAvLyBBZGQgcXVhZHMgdG8gdGhlIFJlbmRlciBwYXNz
ZXMgaW4gRnJvbnRUb0JhY2sgb3JkZXIgdG8gYWxsb3cgZm9yIHRlc3Rpbmcgb2NjbHVzaW9uIGFu
ZCBwZXJmb3JtaW5nIGN1bGxpbmcgZHVyaW5nIHRoZSB0cmVlIHdhbGsuCiAgICAgdHlwZWRlZiBD
Q0xheWVySXRlcmF0b3I8Q0NMYXllckltcGwsIFZlY3RvcjxDQ0xheWVySW1wbCo+LCBDQ1JlbmRl
clN1cmZhY2UsIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrPiBDQ0xheWVySXRl
cmF0b3JUeXBlOwogCi0gICAgLy8gSWYgd2UgYXJlIHVuYWJsZSB0byBkcmF3IGFuIGFuaW1hdGlv
biBvbiBzb21lIGxheWVyLCB0aGVuIHdlIGFib3J0IHRoZSBlbnRpcmUgZnJhbWUuCisgICAgLy8g
VHlwaWNhbGx5IHdoZW4gd2UgYXJlIG1pc3NpbmcgYSB0ZXh0dXJlIGFuZCB1c2UgYSBjaGVja2Vy
Ym9hcmQgcXVhZCwgd2Ugc3RpbGwgZHJhdyB0aGUgZnJhbWUuIEhvd2V2ZXIgd2hlbiB0aGUgbGF5
ZXIgYmVpbmcKKyAgICAvLyBjaGVja2VyYm9hcmRlZCBpcyBtb3ZpbmcgZHVlIHRvIGFuIGltcGwt
YW5pbWF0aW9uLCB3ZSBkcm9wIHRoZSBmcmFtZSB0byBhdm9pZCBmbGFzaGluZyBkdWUgdG8gdGhl
IHRleHR1cmUgc3VkZGVubHkgYXBwZWFyaW5nCisgICAgLy8gaW4gdGhlIGZ1dHVyZS4KICAgICBi
b29sIGRyYXdGcmFtZSA9IHRydWU7CiAKICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IEND
TGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CkBAIC0zMDYs
MTAgKzMwOCw4IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFz
c2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcywgQ0NMYXllCiAgICAgICAgIHBhc3MtPmFwcGVu
ZFF1YWRzRm9yTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tlciwgdXNlZENoZWNrZXJib2FyZCk7
CiAgICAgICAgIGlmICh1c2VkQ2hlY2tlcmJvYXJkKSB7CiAgICAgICAgICAgICBib29sIGxheWVy
SGFzQW5pbWF0aW5nVHJhbnNmb3JtID0gaXQtPnNjcmVlblNwYWNlVHJhbnNmb3JtSXNBbmltYXRp
bmcoKSB8fCBpdC0+ZHJhd1RyYW5zZm9ybUlzQW5pbWF0aW5nKCk7Ci0gICAgICAgICAgICBpZiAo
bGF5ZXJIYXNBbmltYXRpbmdUcmFuc2Zvcm0pIHsKKyAgICAgICAgICAgIGlmIChsYXllckhhc0Fu
aW1hdGluZ1RyYW5zZm9ybSkKICAgICAgICAgICAgICAgICBkcmF3RnJhbWUgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAg
IG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoKml0KTsKQEAgLTM2Nywx
MSArMzY3LDggQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcmVwYXJlVG9EcmF3KEZyYW1l
RGF0YSYgZnJhbWUpCiAgICAgaWYgKCFyb290TGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgaWYgKCFjYWxjdWxhdGVSZW5kZXJQYXNzZXMoZnJhbWUucmVuZGVyUGFzc2VzLCBm
cmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KSkgewotICAgICAgICBmcmFtZS5yZW5kZXJQYXNz
ZXMuY2xlYXIoKTsKLSAgICAgICAgZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlzdC5jbGVhcigp
OworICAgIGlmICghY2FsY3VsYXRlUmVuZGVyUGFzc2VzKGZyYW1lLnJlbmRlclBhc3NlcywgZnJh
bWUucmVuZGVyU3VyZmFjZUxheWVyTGlzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
CiAKICAgICAvLyBJZiB3ZSByZXR1cm4gdHJ1ZSwgdGhlbiB3ZSBleHBlY3QgZHJhd0xheWVycygp
IHRvIGJlIGNhbGxlZCBiZWZvcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYWdhaW4uCiAgICAg
cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggZTBj
NmU3M2EzMzQyMGRkNDdkMDk1NDI4NjJjYjlhNDhhMGFkMWNiMC4uMDJlOWIxMDM3NzRlZjVlYjQ0
OGM0NmI1YTE5NmZjZDVkMzUxY2NkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaApAQCAtODgsNiArODgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ29t
bWl0KCk7CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlKCk7CiAgICAgdmlydHVhbCB2
b2lkIGFuaW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsK
KyAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHByb2JsZW1zIG9jY3VyZWQgcHJlcGFyaW5nIHRoZSBm
cmFtZSwgYW5kIHdlIHNob3VsZCB0cnkgdG8gYXZvaWQgZGlzcGxheWluZyB0aGUgZnJhbWUuCiAg
ICAgdmlydHVhbCBib29sIHByZXBhcmVUb0RyYXcoRnJhbWVEYXRhJik7CiAgICAgdmlydHVhbCB2
b2lkIGRyYXdMYXllcnMoY29uc3QgRnJhbWVEYXRhJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNw
cAppbmRleCA2MWJkOTMxM2Y1NGJjZTJiMGJkZGVhODU0NjQ3OWEzMGEyZTUyYTY0Li4xM2I3NDFl
YThjM2ZmNDhjODc2Y2M3MmNiNmE0ZTBhZGEzY2IyZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIu
Y3BwCkBAIC0xNjIsOCArMTYyLDE1IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVs
ZWRBY3Rpb25zKCkKICAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0NPTU1JVDoKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25Db21taXQoKTsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fRFJBVzoKLSAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25EcmF3
QW5kU3dhcCgpOworICAgICAgICBjYXNlIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
RFJBV19JRl9QT1NTSUJMRTogeworICAgICAgICAgICAgYm9vbCBkcmF3U3VjY2VzcyA9IG1fY2xp
ZW50LT5zY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUoKTsKKyAgICAgICAgICAg
IG1fc3RhdGVNYWNoaW5lLmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGVkKGRyYXdTdWNjZXNzKTsK
KyAgICAgICAgICAgIGlmIChkcmF3U3VjY2VzcykKKyAgICAgICAgICAgICAgICBtX2ZyYW1lUmF0
ZUNvbnRyb2xsZXItPmRpZEJlZ2luRnJhbWUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0ZP
UkNFRDoKKyAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZv
cmNlZCgpOwogICAgICAgICAgICAgbV9mcmFtZVJhdGVDb250cm9sbGVyLT5kaWRCZWdpbkZyYW1l
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTjoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5o
CmluZGV4IDhlZjVkY2Y3MmMyNzBhM2E2YzgxNDdlNDA3MjA1OTJlODcxZDY2ZTQuLmM4NzZlMjBi
Yzg3NzhkYzc5YWYzODljMGI5YTljYmMzYWNiYTY5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaApA
QCAtNDEsNyArNDEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc01vcmVSZXNvdXJj
ZVVwZGF0ZXMoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9u
QmVnaW5GcmFtZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJhd0Fu
ZFN3YXAoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2Fw
SWZQb3NzaWJsZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJhd0Fu
ZFN3YXBGb3JjZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0
ZU1vcmVSZXNvdXJjZXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNv
bW1pdCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0
UmVjcmVhdGlvbigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lLmNwcAppbmRleCBmMzdmMGI0MTdiM2VlZDU3ZjIwY2NjZTMxNWQ2OTAzZWQ5YTdhOGQ2Li4x
Yzk0MmUzNDNjNzc3MTliNjNlNmQzZjA5YjEyYjA1ZGVlMDAxYmRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCkBAIC00MCw2ICs0MCw3IEBAIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSgpCiAgICAgLCBtX2lu
c2lkZVZTeW5jKGZhbHNlKQogICAgICwgbV92aXNpYmxlKGZhbHNlKQogICAgICwgbV9jYW5EcmF3
KHRydWUpCisgICAgLCBtX2RyYXdJZlBvc3NpYmxlRmFpbGVkKGZhbHNlKQogICAgICwgbV9jb250
ZXh0U3RhdGUoQ09OVEVYVF9BQ1RJVkUpCiB7CiB9CkBAIC03MSwxMSArNzIsMTAgQEAgYm9vbCBD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2hvdWxkRHJhdygpIGNvbnN0CiAKIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24o
KSBjb25zdAogewotCiAgICAgc3dpdGNoIChtX2NvbW1pdFN0YXRlKSB7CiAgICAgY2FzZSBDT01N
SVRfU1RBVEVfSURMRToKICAgICAgICAgaWYgKG1fY29udGV4dFN0YXRlICE9IENPTlRFWFRfQUNU
SVZFICYmIG1fbmVlZHNGb3JjZWRSZWRyYXcpCi0gICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RS
QVc7CisgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVdfRk9SQ0VEOwogICAgICAgICBpZiAo
bV9jb250ZXh0U3RhdGUgIT0gQ09OVEVYVF9BQ1RJVkUgJiYgbV9uZWVkc0ZvcmNlZENvbW1pdCkK
ICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fQkVHSU5fRlJBTUU7CiAgICAgICAgIGlmIChtX2Nv
bnRleHRTdGF0ZSA9PSBDT05URVhUX0xPU1QpCkBAIC04MywxOSArODMsMTkgQEAgQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlv
bigpIGNvbnN0CiAgICAgICAgIGlmIChtX2NvbnRleHRTdGF0ZSA9PSBDT05URVhUX1JFQ1JFQVRJ
TkcpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAgICAgICAgIGlmIChzaG91bGRE
cmF3KCkpCi0gICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CisgICAgICAgICAgICByZXR1
cm4gbV9uZWVkc0ZvcmNlZFJlZHJhdyA/IEFDVElPTl9EUkFXX0ZPUkNFRCA6IEFDVElPTl9EUkFX
X0lGX1BPU1NJQkxFOwogICAgICAgICBpZiAobV9uZWVkc0NvbW1pdCAmJiAobV92aXNpYmxlIHx8
IG1fbmVlZHNGb3JjZWRDb21taXQpKQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9G
UkFNRTsKICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwogCiAgICAgY2FzZSBDT01NSVRfU1RB
VEVfRlJBTUVfSU5fUFJPR1JFU1M6CiAgICAgICAgIGlmIChzaG91bGREcmF3KCkpCi0gICAgICAg
ICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CisgICAgICAgICAgICByZXR1cm4gbV9uZWVkc0ZvcmNl
ZFJlZHJhdyA/IEFDVElPTl9EUkFXX0ZPUkNFRCA6IEFDVElPTl9EUkFXX0lGX1BPU1NJQkxFOwog
ICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAKICAgICBjYXNlIENPTU1JVF9TVEFURV9VUERB
VElOR19SRVNPVVJDRVM6CiAgICAgICAgIGlmIChzaG91bGREcmF3KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gQUNUSU9OX0RSQVc7CisgICAgICAgICAgICByZXR1cm4gbV9uZWVkc0ZvcmNlZFJlZHJh
dyA/IEFDVElPTl9EUkFXX0ZPUkNFRCA6IEFDVElPTl9EUkFXX0lGX1BPU1NJQkxFOwogICAgICAg
ICBpZiAoIW1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcpCiAgICAgICAgICAgICByZXR1cm4g
QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzsKICAgICAgICAgcmV0dXJuIEFDVElP
Tl9OT05FOwpAQCAtMTA1LDcgKzEwNSw3IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rp
b24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAogCiAgICAgY2Fz
ZSBDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVzoKICAgICAgICAgaWYgKHNob3Vs
ZERyYXcoKSB8fCBtX2NvbnRleHRTdGF0ZSA9PSBDT05URVhUX0xPU1QpCi0gICAgICAgICAgICBy
ZXR1cm4gQUNUSU9OX0RSQVc7CisgICAgICAgICAgICByZXR1cm4gbV9uZWVkc0ZvcmNlZFJlZHJh
dyA/IEFDVElPTl9EUkFXX0ZPUkNFRCA6IEFDVElPTl9EUkFXX0lGX1BPU1NJQkxFOwogICAgICAg
ICAvLyBDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVyB3YW50cyB0byBlbmZvcmNl
IGEgZHJhdy4gSWYgbV9jYW5EcmF3IGlzIGZhbHNlLAogICAgICAgICAvLyBwcm9jZWVkIHRvIHRo
ZSBuZXh0IHN0ZXAgKHNpbWlsYXIgYXMgaW4gQ09NTUlUX1NUQVRFX0lETEUpLgogICAgICAgICBp
ZiAoIW1fY2FuRHJhdyAmJiBtX25lZWRzQ29tbWl0ICYmIChtX3Zpc2libGUgfHwgbV9uZWVkc0Zv
cmNlZENvbW1pdCkpCkBAIC0xNDAsMTEgKzE0MCwxNSBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjp1cGRhdGVTdGF0ZShBY3Rpb24gYWN0aW9uKQogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX0lETEU7CiAgICAgICAgIG1fbmVlZHNS
ZWRyYXcgPSB0cnVlOworICAgICAgICBpZiAobV9kcmF3SWZQb3NzaWJsZUZhaWxlZCkKKyAgICAg
ICAgICAgIG1fbGFzdEZyYW1lTnVtYmVyV2hlcmVEcmF3V2FzQ2FsbGVkID0gLTE7CiAgICAgICAg
IHJldHVybjsKIAotICAgIGNhc2UgQUNUSU9OX0RSQVc6CisgICAgY2FzZSBBQ1RJT05fRFJBV19G
T1JDRUQ6CisgICAgY2FzZSBBQ1RJT05fRFJBV19JRl9QT1NTSUJMRToKICAgICAgICAgbV9uZWVk
c1JlZHJhdyA9IGZhbHNlOwogICAgICAgICBtX25lZWRzRm9yY2VkUmVkcmF3ID0gZmFsc2U7Cisg
ICAgICAgIG1fZHJhd0lmUG9zc2libGVGYWlsZWQgPSBmYWxzZTsKICAgICAgICAgaWYgKG1faW5z
aWRlVlN5bmMpCiAgICAgICAgICAgICBtX2xhc3RGcmFtZU51bWJlcldoZXJlRHJhd1dhc0NhbGxl
ZCA9IG1fY3VycmVudEZyYW1lTnVtYmVyOwogICAgICAgICBpZiAobV9jb21taXRTdGF0ZSA9PSBD
T01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVykgewpAQCAtMTk5LDYgKzIwMywxNSBA
QCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXROZWVkc0ZvcmNlZFJlZHJhdygpCiAg
ICAgbV9uZWVkc0ZvcmNlZFJlZHJhdyA9IHRydWU7CiB9CiAKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGVkKGJvb2wgc3VjY2VzcykKK3sKKyAg
ICBtX2RyYXdJZlBvc3NpYmxlRmFpbGVkID0gIXN1Y2Nlc3M7CisgICAgaWYgKG1fZHJhd0lmUG9z
c2libGVGYWlsZWQpIHsKKyAgICAgICAgbV9uZWVkc1JlZHJhdyA9IHRydWU7CisgICAgICAgIG1f
bmVlZHNDb21taXQgPSB0cnVlOworICAgIH0KK30KKwogdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6c2V0TmVlZHNDb21taXQoKQogewogICAgIG1fbmVlZHNDb21taXQgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKaW5kZXggNjFiZWMzOTRlY2U4
MDk1M2NhZDlkNWJhOGJmMzA2Njk1YzBlMWY4MS4uNmNkOGMzMjNjODhkZTk1NDc4MmExZWQwZmQx
ZmIxMmQ0OGI4YzlmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZS5oCkBAIC02OSw3ICs2OSw4IEBAIHB1YmxpYzoKICAgICAgICAgQUNUSU9OX0JFR0lOX0ZSQU1F
LAogICAgICAgICBBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLAogICAgICAgICBB
Q1RJT05fQ09NTUlULAotICAgICAgICBBQ1RJT05fRFJBVywKKyAgICAgICAgQUNUSU9OX0RSQVdf
SUZfUE9TU0lCTEUsCisgICAgICAgIEFDVElPTl9EUkFXX0ZPUkNFRCwKICAgICAgICAgQUNUSU9O
X0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTgogICAgIH07CiAgICAgQWN0aW9uIG5leHRBY3Rpb24o
KSBjb25zdDsKQEAgLTk1LDYgKzk2LDkgQEAgcHVibGljOgogICAgIC8vIHdlIGFyZSBub3Qgdmlz
aWJsZS4KICAgICB2b2lkIHNldE5lZWRzRm9yY2VkUmVkcmF3KCk7CiAKKyAgICAvLyBJbmRpY2F0
ZXMgd2hldGhlciBBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSBkcmF3IHRvIHRoZSBzY3JlZW4gb3Ig
bm90LgorICAgIHZvaWQgZGlkRHJhd0lmUG9zc2libGVDb21wbGV0ZWQoYm9vbCBzdWNjZXNzKTsK
KwogICAgIC8vIEluZGljYXRlcyB0aGF0IGEgbmV3IGNvbW1pdCBmbG93IG5lZWRzIHRvIGJlIHBl
cmZvcm1lZCwgZWl0aGVyIHRvIHB1bGwKICAgICAvLyB1cGRhdGVzIGZyb20gdGhlIG1haW4gdGhy
ZWFkIHRvIHRoZSBpbXBsLCBvciB0byBwdXNoIGRlbHRhcyBmcm9tIHRoZSBpbXBsCiAgICAgLy8g
dGhyZWFkIHRvIG1haW4uCkBAIC0xMjIsNiArMTI2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
UmVjcmVhdGVDb250ZXh0KCk7CiAKIHByb3RlY3RlZDoKKyAgICBib29sIHNob3VsZERyYXdGb3Jj
ZWQoKSBjb25zdDsKICAgICBib29sIHNob3VsZERyYXcoKSBjb25zdDsKICAgICBib29sIGhhc0Ry
YXduVGhpc0ZyYW1lKCkgY29uc3Q7CiAKQEAgLTEzNyw2ICsxNDIsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgYm9vbCBtX2luc2lkZVZTeW5jOwogICAgIGJvb2wgbV92aXNpYmxlOwogICAgIGJvb2wgbV9j
YW5EcmF3OworICAgIGJvb2wgbV9kcmF3SWZQb3NzaWJsZUZhaWxlZDsKICAgICBDb250ZXh0U3Rh
dGUgbV9jb250ZXh0U3RhdGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4
IGU0MTczYThhZDYxMTNmN2VkYzRiOTAyYWIwYTdmODUwODYzYTE0NWYuLjk3NTM2ZTFjNTlmNzll
ZjQ2ZjU1NTAyMGJjMWIwNDZlNmJhMmVmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
CkBAIC01NDIsMTIgKzU0MiwxMiBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlv
bkJlZ2luQ29udGV4dFJlY3JlYXRpb24oKQogICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFz
ayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmJlZ2luQ29udGV4dFJl
Y3JlYXRpb24pKTsKIH0KIAotdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3
QW5kU3dhcCgpCitib29sIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2Fw
SW50ZXJuYWwoYm9vbCBmb3JjZWREcmF3KQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFBy
b3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChp
c0ltcGxUaHJlYWQoKSk7CiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gRklYTUU6IGNvbXB1dGUgdGhl
IGZyYW1lIGRpc3BsYXkgdGltZSBtb3JlIGludGVsbGlnZW50bHkKICAgICBkb3VibGUgbW9ub3Rv
bmljVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwpAQCAtNTU2LDIxICs1NTYs
MjUgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpCiAg
ICAgbV9pbnB1dEhhbmRsZXJPbkltcGxUaHJlYWQtPmFuaW1hdGUobW9ub3RvbmljVGltZSk7CiAg
ICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YW5pbWF0ZShtb25vdG9uaWNUaW1lLCB3YWxsQ2xvY2tU
aW1lKTsKICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7Ci0gICAgbV9s
YXllclRyZWVIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSk7Ci0gICAgbV9sYXllclRyZWVI
b3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgYm9vbCBkcmF3RnJhbWUgPSBtX2xheWVy
VHJlZUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSB8fCBmb3JjZWREcmF3OworICAgIGlm
IChkcmF3RnJhbWUpCisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoZnJh
bWUpOwogCiAgICAgLy8gQ2hlY2sgZm9yIGEgcGVuZGluZyBjb21wb3NpdGVBbmRSZWFkYmFjay4K
ICAgICBpZiAobV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQpIHsKKyAgICAgICAgQVNTRVJU
KGRyYXdGcmFtZSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlYWRiYWNrKG1fcmVh
ZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5waXhlbHMsIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBs
VGhyZWFkLT5yZWN0KTsKICAgICAgICAgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPnN1
Y2Nlc3MgPSAhbV9sYXllclRyZWVIb3N0SW1wbC0+aXNDb250ZXh0TG9zdCgpOwogICAgICAgICBt
X3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+Y29tcGxldGlvbi5zaWduYWwoKTsKICAgICAg
ICAgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQgPSAwOwogICAgIH0KIAotICAgIG1fbGF5
ZXJUcmVlSG9zdEltcGwtPnN3YXBCdWZmZXJzKCk7CisgICAgaWYgKGRyYXdGcmFtZSkKKyAgICAg
ICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKIAogICAgIC8vIFByb2Nlc3Mg
YW55IGZpbmlzaCByZXF1ZXN0CiAgICAgaWYgKG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlv
bkV2ZW50T25JbXBsVGhyZWFkKSB7CisgICAgICAgIEFTU0VSVChkcmF3RnJhbWUpOwogICAgICAg
ICBtX2xheWVyVHJlZUhvc3RJbXBsLT5maW5pc2hBbGxSZW5kZXJpbmcoKTsKICAgICAgICAgbV9m
aW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQtPnNpZ25hbCgpOwog
ICAgICAgICBtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9
IDA7CkBAIC01ODEsNiArNTg1LDE5IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0
aW9uRHJhd0FuZFN3YXAoKQogICAgICAgICBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFt
ZU9uSW1wbFRocmVhZCA9IGZhbHNlOwogICAgICAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRh
c2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpkaWRDb21taXRBbmRE
cmF3RnJhbWUpKTsKICAgICB9CisKKyAgICBBU1NFUlQoZHJhd0ZyYW1lIHx8ICghZHJhd0ZyYW1l
ICYmICFmb3JjZWREcmF3KSk7CisgICAgcmV0dXJuIGRyYXdGcmFtZTsKK30KKworYm9vbCBDQ1Ro
cmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUoKQoreworICAg
IHJldHVybiBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGVybmFsKGZhbHNlKTsKK30KKwor
dm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZvcmNlZCgpCit7
CisgICAgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlcm5hbCh0cnVlKTsKIH0KIAogdm9p
ZCBDQ1RocmVhZFByb3h5OjpkaWRDb21taXRBbmREcmF3RnJhbWUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oCmluZGV4IGU3YmFkYTY0MDZmYWRhMzU5YTNhODE5YzlkZjNmMWY1ZDhmMTBlYmQuLjQ4
NjFmNzkwOTI2MDFjMDA1YTA1MDUyMGQ1NDdlZDIxY2RmOWQ3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmgKQEAgLTgxLDcgKzgxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYW5E
cmF3KCk7CiAgICAgdmlydHVhbCBib29sIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpOwotICAgIHZpcnR1
YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpOworICAgIHZpcnR1YWwgYm9vbCBz
Y2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBGb3JjZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2No
ZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hl
ZHVsZWRBY3Rpb25Db21taXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVn
aW5Db250ZXh0UmVjcmVhdGlvbigpOwpAQCAtMTI1LDYgKzEyNiw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7
CiAgICAgdm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdlT25JbXBsVGhyZWFkKCk7CiAgICAgdm9p
ZCByZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBHcmFwaGlj
c0NvbnRleHQzRCosIGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzKik7CisgICAgYm9vbCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGVybmFsKGJv
b2wgZm9yY2VkRHJhdyk7CiAKICAgICAvLyBBY2Nlc3NlZCBvbiBtYWluIHRocmVhZCBvbmx5Lgog
ICAgIGJvb2wgbV9hbmltYXRlUmVxdWVzdGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBhNTdiNWIz
Nzk1ZTRjYzczNzE5MmQ5MmQwMmQzYWY5YTU5YjQ5ODMyLi5lYTk4NzU4MjE1MTRlYWY4ZDQzZjcw
MzRhMTJkMjVlZDYwZjM5M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtNTQ0LDEzICs1NDQsMTQg
QEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwcmVwYXJlVG9EcmF3RmFpbHNXaGVu
QW5pbWF0aW9uVXNlc0NoZWNrZXJib2FyZCkKICAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5w
cmVwYXJlVG9EcmF3KGZyYW1lKSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7
CiAKLSAgICAvLyBXaGVuIGEgdGV4dHVyZSBpcyBtaXNzaW5nIGFuZCB3ZSdyZSBhbmltYXRpbmcs
IHdlIGRvbid0IGRyYXcgYW55dGhpbmcuCisgICAgLy8gV2hlbiBhIHRleHR1cmUgaXMgbWlzc2lu
ZyBhbmQgd2UncmUgYW5pbWF0aW5nLCB3ZSBkb24ndCB3YW50IHRvIGRyYXcgYW55dGhpbmcuCiAg
ICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUoMCkp
OwogICAgIHJvb3QgPSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXllcio+KG1faG9zdEltcGwt
PnJvb3RMYXllcigpKTsKICAgICByb290LT5hZGRDaGlsZChNaXNzaW5nVGV4dHVyZUFuaW1hdGlu
Z0xheWVyOjpjcmVhdGUoMSwgdHJ1ZSwgZmFsc2UsIHRydWUpKTsKICAgICBsYXllciA9IHN0YXRp
Y19jYXN0PE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXIqPihyb290LT5jaGlsZHJlbigpWzBd
LmdldCgpKTsKIAogICAgIEVYUEVDVF9GQUxTRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZy
YW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAKICAgICAvLyBXaGVu
IHRoZSBsYXllciBza2lwcyBkcmF3IGFuZCB3ZSdyZSBhbmltYXRpbmcsIHdlIHN0aWxsIGRyYXcg
dGhlIGZyYW1lLgogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihEaWREcmF3Q2hlY2tMYXll
cjo6Y3JlYXRlKDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAppbmRleCBlYTZiOTI3ZTUzOTQ1
MGYxZDBiYWNiYTQxNzE5MjNlNzdjYWRiZmNjLi5lNGE1ZDdjOTU5NDRiOTRkNjUzYzE0MTE5NTZi
OWMyOWNjZWQ0NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCkBAIC0xMTksNiArMTE5LDE3
NSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldEZvcmNlZFJlZHJh
d0RvZXNOb3RTZXRzTm9ybWFsUmVkcmF3KQogICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2Fs
bGJhY2tOZWVkZWQoKSk7CiB9CiAKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBU
ZXN0RmFpbGVkRHJhd1NldHNOZWVkc0NvbW1pdEFuZERvZXNOb3REcmF3QWdhaW4pCit7CisgICAg
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVl
KTsKKyAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdygpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnJl
ZHJhd1BlbmRpbmcoKSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUudnN5bmNDYWxsYmFja05lZWRl
ZCgpKTsKKyAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CisKKyAgICAvLyBXZSdyZSBkcmF3aW5n
IG5vdy4KKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFX
X0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRl
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSk7CisgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4
dEFjdGlvbigpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKyAg
ICBFWFBFQ1RfRkFMU0Uoc3RhdGUuY29tbWl0UGVuZGluZygpKTsKKworICAgIC8vIEZhaWxpbmcg
dGhlIGRyYXcgbWFrZXMgdXMgcmVxdWlyZSBhIGNvbW1pdC4KKyAgICBzdGF0ZS5kaWREcmF3SWZQ
b3NzaWJsZUNvbXBsZXRlZChmYWxzZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3Rh
dGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFN
RSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBFQ1Rf
VFJVRShzdGF0ZS5jb21taXRQZW5kaW5nKCkpOworfQorCitURVNUKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdCwgVGVzdFNldE5lZWRzUmVkcmF3RHVyaW5nRmFpbGVkRHJhd0RvZXNOb3RSZW1v
dmVOZWVkc1JlZHJhdykKK3sKKyAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSBzdGF0ZTsKKyAg
ICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KCk7Cisg
ICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfVFJVRShz
dGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOworICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsK
KworICAgIC8vIFdlJ3JlIGRyYXdpbmcgbm93LgorICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7
CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9E
UkFXX0lGX1BPU1NJQkxFKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9GQUxTRShzdGF0
ZS5yZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5jb21taXRQZW5kaW5n
KCkpOworCisgICAgLy8gV2hpbGUgc3RpbGwgaW4gdGhlIHNhbWUgdnN5bmMgY2FsbGJhY2ssIHNl
dCBuZWVkcyByZWRyYXcgYWdhaW4uCisgICAgLy8gVGhpcyBzaG91bGQgbm90IHJlZHJhdy4KKyAg
ICBzdGF0ZS5zZXROZWVkc1JlZHJhdygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBGYWls
aW5nIHRoZSBkcmF3IG1ha2VzIHVzIHJlcXVpcmUgYSBjb21taXQuCisgICAgc3RhdGUuZGlkRHJh
d0lmUG9zc2libGVDb21wbGV0ZWQoZmFsc2UpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAg
IEVYUEVDVF9UUlVFKHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7Cit9CisKK1RFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29tbWl0QWZ0ZXJGYWlsZWREcmF3QWxsb3dzRHJhd0lu
U2FtZUZyYW1lKQoreworICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0
YXRlLnNldFZpc2libGUodHJ1ZSk7CisKKyAgICAvLyBTdGFydCBhIGNvbW1pdC4KKyAgICBzdGF0
ZS5zZXROZWVkc0NvbW1pdCgpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVw
ZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOwor
ICAgIEVYUEVDVF9UUlVFKHN0YXRlLmNvbW1pdFBlbmRpbmcoKSk7CisKKyAgICAvLyBUaGVuIGlu
aXRpYXRlIGEgZHJhdy4KKyAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdygpOworICAgIEVYUEVDVF9U
UlVFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3lu
YygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdf
SUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUu
cmVkcmF3UGVuZGluZygpKTsKKworICAgIC8vIEZhaWwgdGhlIGRyYXcuCisgICAgc3RhdGUudXBk
YXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxF
KTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGVk
KGZhbHNlKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS5yZWRyYXdQZW5kaW5nKCkpOworICAgIC8v
IEJ1dCB0aGUgY29tbWl0IGlzIG9uZ29pbmcuCisgICAgRVhQRUNUX1RSVUUoc3RhdGUuY29tbWl0
UGVuZGluZygpKTsKKworICAgIC8vIEZpbmlzaCB0aGUgY29tbWl0LgorICAgIHN0YXRlLmJlZ2lu
RnJhbWVDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsK
KyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JF
R0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CisgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVz
b3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRh
dGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCk7CisgICAgRVhQ
RUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKworICAgIC8vIEFuZCB3ZSBzaG91bGQg
YmUgYWxsb3dlZCB0byBkcmF3IGFnYWluLgorICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cit9
CisKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29tbWl0QWZ0ZXJGYWls
ZWRBbmRTdWNjZXNzZnVsRHJhd0RvZXNOb3RBbGxvd0RyYXdJblNhbWVGcmFtZSkKK3sKKyAgICBD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUp
OworCisgICAgLy8gU3RhcnQgYSBjb21taXQuCisgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoKTsK
KyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFN
RSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0
ZS5jb21taXRQZW5kaW5nKCkpOworCisgICAgLy8gVGhlbiBpbml0aWF0ZSBhIGRyYXcuCisgICAg
c3RhdGUuc2V0TmVlZHNSZWRyYXcoKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS52c3luY0NhbGxi
YWNrTmVlZGVkKCkpOworICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7CisK
KyAgICAvLyBGYWlsIHRoZSBkcmF3LgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSk7CisgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsK
KyAgICBzdGF0ZS5kaWREcmF3SWZQb3NzaWJsZUNvbXBsZXRlZChmYWxzZSk7CisgICAgRVhQRUNU
X1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKyAgICAvLyBCdXQgdGhlIGNvbW1pdCBpcyBv
bmdvaW5nLgorICAgIEVYUEVDVF9UUlVFKHN0YXRlLmNvbW1pdFBlbmRpbmcoKSk7CisKKyAgICAv
LyBGb3JjZSBhIGRyYXcuCisgICAgc3RhdGUuc2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsKKyAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0ZPUkNFRCwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIERvIHRoZSBmb3JjZWQgZHJhdy4KKyAgICBzdGF0
ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfRk9SQ0VE
KTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5yZWRyYXdQZW5kaW5n
KCkpOworICAgIC8vIEFuZCB0aGUgY29tbWl0IGlzIHN0aWxsIG9uZ29pbmcuCisgICAgRVhQRUNU
X1RSVUUoc3RhdGUuY29tbWl0UGVuZGluZygpKTsKKworICAgIC8vIEZpbmlzaCB0aGUgY29tbWl0
LgorICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3Rh
dGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CisgICAgc3RhdGUu
YmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigp
KTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0NPTU1JVCk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKworICAg
IC8vIEFuZCB3ZSBzaG91bGQgbm90IGJlIGFsbG93ZWQgdG8gZHJhdyBhZ2FpbiBpbiB0aGUgc2Ft
ZSBmcmFtZS4uCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
Tk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKK30KKworVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QsIFRlc3RGYWlsZWREcmF3SXNSZXRyaWVkTmV4dFZTeW5jKQoreworICAgIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisK
KyAgICAvLyBTdGFydCBhIGRyYXcuCisgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoKTsKKyAgICBF
WFBFQ1RfVFJVRShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOworICAgIHN0YXRlLmRpZEVu
dGVyVlN5bmMoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9UUlVF
KHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7CisKKyAgICAvLyBGYWlsIHRoZSBkcmF3LgorICAgIHN0
YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9Q
T1NTSUJMRSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
Tk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS5kaWREcmF3SWZQb3NzaWJsZUNv
bXBsZXRlZChmYWxzZSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsK
KworICAgIC8vIFdlIHNob3VsZCBub3QgYmUgdHJ5aW5nIHRvIGRyYXcgYWdhaW4gbm93LCBidXQg
d2UgaGF2ZSBhIGNvbW1pdCBwZW5kaW5nLgorICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAg
c3RhdGUuZGlkTGVhdmVWU3luYygpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2FsbGJh
Y2tOZWVkZWQoKSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOworCisgICAgLy8gV2Ugc2hv
dWxkIHRyeSBkcmF3IGFnYWluIGluIHRoZSBuZXh0IHZzeW5jLgorICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRB
Y3Rpb24oKSk7Cit9CisKIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RG9l
c3REcmF3VHdpY2VJblNhbWVGcmFtZSkKIHsKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSBz
dGF0ZTsKQEAgLTEyNiw4ICsyOTUsOCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVz
dCwgVGVzdERvZXN0RHJhd1R3aWNlSW5TYW1lRnJhbWUpCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRy
YXcoKTsKICAgICBFWFBFQ1RfVFJVRShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOwogICAg
IHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIHN0YXRlLnVwZGF0
ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVyk7CisgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUpOwogCiAgICAgLy8gV2hpbGUgc3RpbGwg
aW4gdGhlIHNhbWUgdnN5bmMgY2FsbGJhY2ssIHNldCBuZWVkcyByZWRyYXcgYWdhaW4uCiAgICAg
Ly8gVGhpcyBzaG91bGQgbm90IHJlZHJhdy4KQEAgLTEzNSwxMiArMzA0LDE0IEBAIFRFU1QoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RG9lc3REcmF3VHdpY2VJblNhbWVGcmFtZSkK
ICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gTW92ZSB0byBhbm90aGVyIGZyYW1lLiBUaGlzIHNo
b3VsZCBub3cgZHJhdy4KKyAgICBzdGF0ZS5kaWREcmF3SWZQb3NzaWJsZUNvbXBsZXRlZCh0cnVl
KTsKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiAgICAgRVhQRUNUX1RSVUUoc3RhdGUudnN5
bmNDYWxsYmFja05lZWRlZCgpKTsKICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CiAKLSAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0
QWN0aW9uKCkpOwotICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fRFJBVyk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51
cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lC
TEUpOworICAgIHN0YXRlLmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGVkKHRydWUpOwogICAgIEVY
UEVDVF9GQUxTRShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOwogfQogCkBAIC0xNjEsMTEg
KzMzMiwxMSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rp
b25EcmF3c09uVlN5bmMpCiAKICAgICAgICAgICAgIC8vIENhc2UgMTogbmVlZHNDb21taXQ9ZmFs
c2UKICAgICAgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KGZhbHNlKTsKLSAgICAgICAgICAg
IEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5l
eHRBY3Rpb24oKSk7CisgICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAg
ICAgICAgICAvLyBDYXNlIDI6IG5lZWRzQ29tbWl0PXRydWUKICAgICAgICAgICAgIHN0YXRlLnNl
dE5lZWRzQ29tbWl0KHRydWUpOwotICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICAgICAgICAg
IEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lC
TEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE3NCw3ICsz
NDUsOCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25E
cmF3c09uVlN5bmMpCiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCAyOyArK2opIHsK
ICAgICAgICAgICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKICAgICAgICAgICAgIHN0YXRlLnNldENv
bW1pdFN0YXRlKGFsbENvbW1pdFN0YXRlc1tpXSk7Ci0gICAgICAgICAgICBpZiAoIWopIHsKKyAg
ICAgICAgICAgIGJvb2wgZm9yY2VkRHJhdyA9IGo7CisgICAgICAgICAgICBpZiAoIWZvcmNlZERy
YXcpIHsKICAgICAgICAgICAgICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CiAgICAgICAgICAg
ICAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7CiAgICAgICAgICAgICAgICAgc3RhdGUu
c2V0VmlzaWJsZSh0cnVlKTsKQEAgLTE4Myw3ICszNTUsNyBAQCBURVNUKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25EcmF3c09uVlN5bmMpCiAKICAgICAgICAgICAg
IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gZXhwZWN0ZWRBY3Rpb247CiAgICAgICAg
ICAgICBpZiAoYWxsQ29tbWl0U3RhdGVzW2ldICE9IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpD
T01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlUKQotICAgICAgICAgICAgICAgIGV4cGVjdGVkQWN0
aW9uID0gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXOworICAgICAgICAgICAg
ICAgIGV4cGVjdGVkQWN0aW9uID0gZm9yY2VkRHJhdyA/IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fRFJBV19GT1JDRUQgOiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RS
QVdfSUZfUE9TU0lCTEU7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRBY3Rpb24gPSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVDsKIApAQCAt
MjMxLDIyICs0MDMsMjIgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RO
b0NvbW1pdFN0YXRlc1JlZHJhd1doZW5JbnZpc2libGUpCiAgICAgICAgICAgICAvLyBDYXNlIDE6
IG5lZWRzQ29tbWl0PWZhbHNlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZhbHNlLgogICAg
ICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoZmFsc2UpOwogICAgICAgICAgICAgc3RhdGUu
c2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwotICAgICAgICAgICAgRVhQRUNU
X05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlv
bigpKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAgICAgICAg
IC8vIENhc2UgMjogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9
dHJ1ZS4KICAgICAgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KGZhbHNlKTsKICAgICAgICAg
ICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOwotICAgICAgICAg
ICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUu
bmV4dEFjdGlvbigpKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAg
ICAgICAgICAgIC8vIENhc2UgMzogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2Vz
UGVuZGluZz1mYWxzZS4KICAgICAgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwog
ICAgICAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwot
ICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJB
Vywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24o
KSk7CiAKICAgICAgICAgICAgIC8vIENhc2UgNDogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3Jl
UmVzb3VyY2VzUGVuZGluZz10cnVlLgogICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQo
dHJ1ZSk7CiAgICAgICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0
cnVlKTsKLSAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgICAgICAgICBFWFBFQ1RfTkUoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0
QWN0aW9uKCkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjY2LDcgKzQzOCw3IEBAIFRFU1Qo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q2FuUmVkcmF3X1N0b3BzRHJhdykKICAg
ICAgICAgICAgICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CiAKICAgICAgICAgICAgIHN0YXRl
LnNldENhbkRyYXcoZmFsc2UpOwotICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICAgICAgICAg
IEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lC
TEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0zODEsOCAr
NTUzLDkgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX1dp
dGhSZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAKICAgICAvLyBFbnN1cmUgd2UgZHJhdyBvbiB0
aGUgbmV4dCB2c3luYyBldmVuIHRob3VnaCBhbiB1cGRhdGUgaXMgaW4tcHJvZ3Jlc3MuCiAgICAg
c3RhdGUuZGlkRW50ZXJWU3luYygpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgc3RhdGUudXBkYXRl
U3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSk7CisgICAgc3RhdGUuZGlkRHJhd0lmUG9z
c2libGVDb21wbGV0ZWQodHJ1ZSk7CiAKICAgICAvLyBFbnN1cmUgdGhhdCB3ZSBvbmNlIHdlIGhh
dmUgZHJhd24sIHdlIGRvbnQgZG8gYW55dGhpbmcgZWxzZS4KICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwpAQCAt
NDQ2LDkgKzYxOSwxMCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNl
dE5lZWRzQ29tbWl0SXNOb3RMb3N0KQogCiAgICAgLy8gQ29tbWl0IGFuZCBtYWtlIHN1cmUgd2Ug
ZHJhdyBvbiBuZXh0IHZzeW5jCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUu
bmV4dEFjdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNP
TU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsK
LSAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RS
QVcpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fRFJBV19JRl9QT1NTSUJMRSk7CisgICAgc3RhdGUuZGlkRHJhd0lmUG9zc2libGVDb21wbGV0
ZWQodHJ1ZSk7CiAKICAgICAvLyBWZXJpZnkgdGhhdCBhbm90aGVyIGNvbW1pdCB3aWxsIGJlZ2lu
LgogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKQEAgLTQ5MSw4ICs2NjUsOSBAQCBURVNUKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZSkKIAogICAgIC8vIEF0IHZz
eW5jLCBkcmF3LgogICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKLSAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwot
ICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJB
Vyk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19J
Rl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUpOworICAgIHN0
YXRlLmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGVkKHRydWUpOwogICAgIHN0YXRlLmRpZExlYXZl
VlN5bmMoKTsKIAogICAgIC8vIFNob3VsZCBiZSBzeW5jaHJvbml6ZWQsIG5vIGRyYXcgbmVlZGVk
LCBubyBhY3Rpb24gbmVlZGVkLgpAQCAtNTQxLDggKzcxNiw5IEBAIFRFU1QoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJbmJldHdlZW4p
CiAKICAgICAvLyBBdCB2c3luYywgZHJhdy4KICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7Ci0g
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUu
bmV4dEFjdGlvbigpKTsKLSAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0RSQVcpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3Rh
dGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BP
U1NJQkxFKTsKKyAgICBzdGF0ZS5kaWREcmF3SWZQb3NzaWJsZUNvbXBsZXRlZCh0cnVlKTsKICAg
ICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiAKICAgICAvLyBTaG91bGQgYmUgc3luY2hyb25pemVk
LCBubyBkcmF3IG5lZWRlZCwgbm8gYWN0aW9uIG5lZWRlZC4KQEAgLTY1Miw3ICs4MjgsNyBAQCBU
RVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0V2hlbklkbGVB
bmRDb21taXRSZXF1ZXN0ZWRXaGlsZQogICAgIC8vIHNldENhbkRyYXcuCiAgICAgc3RhdGUuc2V0
TmVlZHNSZWRyYXcodHJ1ZSk7CiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwotICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJB
V19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS5zZXRDYW5EcmF3
KGZhbHNlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9O
T05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CkBA
IC02NzIsNyArODQ4LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RD
b250ZXh0TG9zdFdoaWxlQ29tbWl0SW5Qcm9ncmVzcykKICAgICAvLyBTZXQgZGFtYWdlIGFuZCBl
eHBlY3QgYSBkcmF3LgogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOwogICAgIHN0YXRl
LmRpZEVudGVyVlN5bmMoKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CiAgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBz
dGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiAKQEAgLTcxMiw3ICs4ODgsNyBAQCBURVNUKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0V2hpbGVDb21taXRJblByb2dyZXNz
QW5kQW5vdGhlcgogICAgIC8vIFNldCBkYW1hZ2UgYW5kIGV4cGVjdCBhIGRyYXcuCiAgICAgc3Rh
dGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7CiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwotICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5l
eHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRh
dGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsK
IApAQCAtNzM4LDcgKzkxNCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBU
ZXN0Q29udGV4dExvc3RXaGlsZUNvbW1pdEluUHJvZ3Jlc3NBbmRBbm90aGVyCiAKICAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9G
SVJTVF9EUkFXLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKIAotICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJM
RSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0
QWN0aW9uKCkpOwogCiAgICAgLy8gRXhwZWN0IHRvIGJlIHRvbGQgdG8gYmVnaW4gY29udGV4dCBy
ZWNyZWF0aW9uLCBpbmRlcGVuZGVudCBvZiB2c3luYyBzdGF0ZQpAQCAtNzYwLDcgKzkzNiw3IEBA
IFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RmluaXNoQWxsUmVuZGVyaW5n
V2hpbGVDb250ZXh0TG9zdCkKICAgICAvLyBBc2sgYSBmb3JjZWQgcmVkcmF3IGFuZCB2ZXJpZnkg
aXQgb2N1cnJzLgogICAgIHN0YXRlLnNldE5lZWRzRm9yY2VkUmVkcmF3KHRydWUpOwogICAgIHN0
YXRlLmRpZEVudGVyVlN5bmMoKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfRk9SQ0VELCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKIAogICAgIC8vIENsZWFyIHRoZSBmb3Jj
ZWQgcmVkcmF3IGJpdC4KQEAgLTc3Myw3ICs5NDksNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdCwgVGVzdEZpbmlzaEFsbFJlbmRlcmluZ1doaWxlQ29udGV4dExvc3QpCiAgICAg
Ly8gQXNrIGEgZm9yY2VkIHJlZHJhdyBhbmQgdmVyaWZ5IGl0IG9jdXJycy4KICAgICBzdGF0ZS5z
ZXROZWVkc0ZvcmNlZFJlZHJhdyh0cnVlKTsKICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7Ci0g
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUu
bmV4dEFjdGlvbigpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9EUkFXX0ZPUkNFRCwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS5kaWRMZWF2
ZVZTeW5jKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NTY2hlZHVsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hl
ZHVsZXJUZXN0LmNwcAppbmRleCA0NWY2MWI5MGJmNTRlMmVjZTc4YmRhODgzZmZhMGEyNmJkNTQz
NmViLi42ZjljMjIxYjUyZWQyMDYzZTI3NGU1MTUyZTJjZjk3N2FjZjVkNDY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCkBAIC00NSw2
ICs0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hY3Rpb25zLmNsZWFyKCk7CiAgICAgICAgIG1f
aGFzTW9yZVJlc291cmNlVXBkYXRlcyA9IGZhbHNlOwogICAgICAgICBtX2NhbkRyYXcgPSB0cnVl
OworICAgICAgICBtX2RyYXdTdWNjZXNzID0gdHJ1ZTsKICAgICB9CiAKICAgICB2b2lkIHNldEhh
c01vcmVSZXNvdXJjZVVwZGF0ZXMoYm9vbCBiKSB7IG1faGFzTW9yZVJlc291cmNlVXBkYXRlcyA9
IGI7IH0KQEAgLTU2LDE0ICs1NywxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNhbkRy
YXcoKSB7IHJldHVybiBtX2NhbkRyYXc7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZVJlc291
cmNlVXBkYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzTW9yZVJlc291cmNlVXBkYXRlczsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkgeyBtX2FjdGlvbnMu
cHVzaF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lIik7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNj
aGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwIik7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1bGVk
QWN0aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxlKCkgeyBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hl
ZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUiKTsgcmV0dXJuIG1fZHJhd1N1Y2Nlc3M7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBGb3JjZWQoKSB7
IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwRm9yY2VkIik7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygp
IHsgbV9hY3Rpb25zLnB1c2hfYmFjaygic2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNl
cyIpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpIHsgbV9hY3Rp
b25zLnB1c2hfYmFjaygic2NoZWR1bGVkQWN0aW9uQ29tbWl0Iik7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbigpIHsgbV9hY3Rpb25zLnB1
c2hfYmFjaygic2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbiIpOyB9CiAKKyAg
ICB2b2lkIHNldERyYXdTdWNjZXNzKGJvb2wgZHJhd1N1Y2Nlc3MpIHsgbV9kcmF3U3VjY2VzcyA9
IGRyYXdTdWNjZXNzOyB9CisKIHByb3RlY3RlZDoKICAgICBib29sIG1faGFzTW9yZVJlc291cmNl
VXBkYXRlczsKICAgICBib29sIG1fY2FuRHJhdzsKKyAgICBib29sIG1fZHJhd1N1Y2Nlc3M7CiAg
ICAgc3RkOjp2ZWN0b3I8Y29uc3QgY2hhcio+IG1fYWN0aW9uczsKIH07CiAKQEAgLTk0LDcgKzk5
LDcgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXQpCiAgICAgLy8gVGljayBz
aG91bGQgZHJhdy4KICAgICB0aW1lU291cmNlLT50aWNrKCk7CiAgICAgRVhQRUNUX0VRKDEsIGNs
aWVudC5udW1BY3Rpb25zKCkpOwotICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXAiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSIsIGNsaWVudC5hY3Rpb24oMCkpOwogICAgIEVY
UEVDVF9GQUxTRSh0aW1lU291cmNlLT5hY3RpdmUoKSk7CiAgICAgY2xpZW50LnJlc2V0KCk7CiAK
QEAgLTEzMSwxMiArMTM2LDEyIEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0
QWZ0ZXJCZWdpbkZyYW1lKQogICAgIHRpbWVTb3VyY2UtPnRpY2soKTsKICAgICBFWFBFQ1RfRkFM
U0UodGltZVNvdXJjZS0+YWN0aXZlKCkpOwogICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0
aW9ucygpKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwIiwg
Y2xpZW50LmFjdGlvbigwKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25EcmF3
QW5kU3dhcElmUG9zc2libGUiLCBjbGllbnQuYWN0aW9uKDApKTsKICAgICBFWFBFQ1RfU1RSRVEo
InNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUiLCBjbGllbnQuYWN0aW9uKDEpKTsKICAgICBjbGll
bnQucmVzZXQoKTsKIH0KIAotY2xhc3MgU2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0lu
c2lkZURyYXcgOiBwdWJsaWMgQ0NTY2hlZHVsZXJDbGllbnQgeworY2xhc3MgU2NoZWR1bGVyQ2xp
ZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXcgOiBwdWJsaWMgRmFrZUNDU2NoZWR1bGVyQ2xp
ZW50IHsKIHB1YmxpYzoKICAgICBTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRl
RHJhdygpCiAgICAgICAgIDogbV9udW1EcmF3cygwKQpAQCAtMTQ2LDE3ICsxNTEsMTcgQEAgcHVi
bGljOgogCiAgICAgaW50IG51bURyYXdzKCkgY29uc3QgeyByZXR1cm4gbV9udW1EcmF3czsgfQog
Ci0gICAgdmlydHVhbCBib29sIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3KCkgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkKKyAgICB2aXJ0dWFsIGJvb2wg
c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxlKCkKICAgICB7CiAgICAgICAgIC8v
IE9ubHkgc2V0TmVlZHNSZWRyYXcgdGhlIGZpcnN0IHRpbWUgdGhpcyBpcyBjYWxsZWQKICAgICAg
ICAgaWYgKCFtX251bURyYXdzKQogICAgICAgICAgICAgbV9zY2hlZHVsZXItPnNldE5lZWRzUmVk
cmF3KCk7CiAgICAgICAgIG1fbnVtRHJhd3MrKzsKKyAgICAgICAgcmV0dXJuIG1fZHJhd1N1Y2Nl
c3M7CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2Fw
Rm9yY2VkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVS
ZXNvdXJjZXMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRp
b24oKSB7IH0KQEAgLTE5NCw3ICsxOTksNDcgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVl
c3RSZWRyYXdJbnNpZGVEcmF3KQogICAgIEVYUEVDVF9GQUxTRSh0aW1lU291cmNlLT5hY3RpdmUo
KSk7CiB9CiAKLWNsYXNzIFNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0NvbW1pdEluc2lkZURy
YXcgOiBwdWJsaWMgQ0NTY2hlZHVsZXJDbGllbnQgeworLy8gVGVzdCB0aGF0IHJlcXVlc3Rpbmcg
cmVkcmF3IGluc2lkZSBhIGZhaWxlZCBkcmF3IGRvZXNuJ3QgbG9zZSB0aGUgcmVxdWVzdC4KK1RF
U1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0UmVkcmF3SW5zaWRlRmFpbGVkRHJhdykKK3sKKyAg
ICBTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdyBjbGllbnQ7CisgICAg
UmVmUHRyPEZha2VDQ1RpbWVTb3VyY2U+IHRpbWVTb3VyY2UgPSBhZG9wdFJlZihuZXcgRmFrZUND
VGltZVNvdXJjZSgpKTsKKyAgICBPd25QdHI8Q0NTY2hlZHVsZXI+IHNjaGVkdWxlciA9IENDU2No
ZWR1bGVyOjpjcmVhdGUoJmNsaWVudCwgYWRvcHRQdHIobmV3IENDRnJhbWVSYXRlQ29udHJvbGxl
cih0aW1lU291cmNlKSkpOworICAgIGNsaWVudC5zZXRTY2hlZHVsZXIoc2NoZWR1bGVyLmdldCgp
KTsKKyAgICBzY2hlZHVsZXItPnNldFZpc2libGUodHJ1ZSk7CisgICAgY2xpZW50LnNldERyYXdT
dWNjZXNzKGZhbHNlKTsKKworICAgIHNjaGVkdWxlci0+c2V0TmVlZHNSZWRyYXcoKTsKKyAgICBF
WFBFQ1RfVFJVRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CisgICAgRVhQRUNUX1RSVUUo
dGltZVNvdXJjZS0+YWN0aXZlKCkpOworICAgIEVYUEVDVF9FUSgwLCBjbGllbnQubnVtRHJhd3Mo
KSk7CisKKyAgICAvLyBGYWlsIHRoZSBkcmF3LgorICAgIHRpbWVTb3VyY2UtPnRpY2soKTsKKyAg
ICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bURyYXdzKCkpOworCisgICAgLy8gV2UgaGF2ZSBhIGNv
bW1pdCBwZW5kaW5nIGFuZCB0aGUgZHJhdyBmYWlsZWQsIGFuZCB3ZSBkaWRuJ3QgbG9zZSB0aGUg
cmVkcmF3IHJlcXVlc3QuCisgICAgRVhQRUNUX1RSVUUoc2NoZWR1bGVyLT5jb21taXRQZW5kaW5n
KCkpOworICAgIEVYUEVDVF9UUlVFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygpKTsKKyAgICBF
WFBFQ1RfVFJVRSh0aW1lU291cmNlLT5hY3RpdmUoKSk7CisKKyAgICAvLyBGYWlsIHRoZSBkcmF3
IGFnYWluLgorICAgIHRpbWVTb3VyY2UtPnRpY2soKTsKKyAgICBFWFBFQ1RfRVEoMiwgY2xpZW50
Lm51bURyYXdzKCkpOworICAgIEVYUEVDVF9UUlVFKHNjaGVkdWxlci0+Y29tbWl0UGVuZGluZygp
KTsKKyAgICBFWFBFQ1RfVFJVRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CisgICAgRVhQ
RUNUX1RSVUUodGltZVNvdXJjZS0+YWN0aXZlKCkpOworCisgICAgLy8gRHJhdyBzdWNjZXNzZnVs
bHkuCisgICAgY2xpZW50LnNldERyYXdTdWNjZXNzKHRydWUpOworICAgIHRpbWVTb3VyY2UtPnRp
Y2soKTsKKyAgICBFWFBFQ1RfRVEoMywgY2xpZW50Lm51bURyYXdzKCkpOworICAgIEVYUEVDVF9U
UlVFKHNjaGVkdWxlci0+Y29tbWl0UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2NoZWR1
bGVyLT5yZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9GQUxTRSh0aW1lU291cmNlLT5hY3Rp
dmUoKSk7Cit9CisKK2NsYXNzIFNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0NvbW1pdEluc2lk
ZURyYXcgOiBwdWJsaWMgRmFrZUNDU2NoZWR1bGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBTY2hl
ZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNDb21taXRJbnNpZGVEcmF3KCkKICAgICAgICAgOiBtX251
bURyYXdzKDApCkBAIC0yMDQsMTcgKzI0OSwxNyBAQCBwdWJsaWM6CiAKICAgICBpbnQgbnVtRHJh
d3MoKSBjb25zdCB7IHJldHVybiBtX251bURyYXdzOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFz
TW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGNhbkRyYXcoKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVk
dWxlZEFjdGlvbkJlZ2luRnJhbWUoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0
aW9uRHJhd0FuZFN3YXAoKQorICAgIHZpcnR1YWwgYm9vbCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5k
U3dhcElmUG9zc2libGUoKQogICAgIHsKICAgICAgICAgLy8gT25seSBzZXROZWVkc0NvbW1pdCB0
aGUgZmlyc3QgdGltZSB0aGlzIGlzIGNhbGxlZAogICAgICAgICBpZiAoIW1fbnVtRHJhd3MpCiAg
ICAgICAgICAgICBtX3NjaGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKICAgICAgICAgbV9udW1E
cmF3cysrOworICAgICAgICByZXR1cm4gbV9kcmF3U3VjY2VzczsKICAgICB9CiAKKyAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBGb3JjZWQoKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25Db21taXQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbigpIHsgfQpAQCAtMjUxLDQgKzI5
Niw0NCBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdEluc2lkZURyYXcpCiAg
ICAgRVhQRUNUX0ZBTFNFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygpKTsKIH0KIAorLy8gVGVz
dHMgdGhhdCB3aGVuIGEgZHJhdyBmYWlscyB0aGVuIHRoZSBwZW5kaW5nIGNvbW1pdCBzaG91bGQg
bm90IGJlIGRyb3BwZWQuCitURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdEluc2lk
ZUZhaWxlZERyYXcpCit7CisgICAgU2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lk
ZURyYXcgY2xpZW50OworICAgIFJlZlB0cjxGYWtlQ0NUaW1lU291cmNlPiB0aW1lU291cmNlID0g
YWRvcHRSZWYobmV3IEZha2VDQ1RpbWVTb3VyY2UoKSk7CisgICAgT3duUHRyPENDU2NoZWR1bGVy
PiBzY2hlZHVsZXIgPSBDQ1NjaGVkdWxlcjo6Y3JlYXRlKCZjbGllbnQsIGFkb3B0UHRyKG5ldyBD
Q0ZyYW1lUmF0ZUNvbnRyb2xsZXIodGltZVNvdXJjZSkpKTsKKyAgICBjbGllbnQuc2V0U2NoZWR1
bGVyKHNjaGVkdWxlci5nZXQoKSk7CisgICAgc2NoZWR1bGVyLT5zZXRWaXNpYmxlKHRydWUpOwor
ICAgIGNsaWVudC5zZXREcmF3U3VjY2VzcyhmYWxzZSk7CisKKyAgICBzY2hlZHVsZXItPnNldE5l
ZWRzUmVkcmF3KCk7CisgICAgRVhQRUNUX1RSVUUoc2NoZWR1bGVyLT5yZWRyYXdQZW5kaW5nKCkp
OworICAgIEVYUEVDVF9UUlVFKHRpbWVTb3VyY2UtPmFjdGl2ZSgpKTsKKyAgICBFWFBFQ1RfRVEo
MCwgY2xpZW50Lm51bURyYXdzKCkpOworCisgICAgLy8gRmFpbCB0aGUgZHJhdy4KKyAgICB0aW1l
U291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1EcmF3cygpKTsKKwor
ICAgIC8vIFdlIGhhdmUgYSBjb21taXQgcGVuZGluZyBhbmQgdGhlIGRyYXcgZmFpbGVkLCBhbmQg
d2UgZGlkbid0IGxvc2UgdGhlIGNvbW1pdCByZXF1ZXN0LgorICAgIEVYUEVDVF9UUlVFKHNjaGVk
dWxlci0+Y29tbWl0UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfVFJVRShzY2hlZHVsZXItPnJlZHJh
d1BlbmRpbmcoKSk7CisgICAgRVhQRUNUX1RSVUUodGltZVNvdXJjZS0+YWN0aXZlKCkpOworCisg
ICAgLy8gRmFpbCB0aGUgZHJhdyBhZ2Fpbi4KKyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAg
RVhQRUNUX0VRKDIsIGNsaWVudC5udW1EcmF3cygpKTsKKyAgICBFWFBFQ1RfVFJVRShzY2hlZHVs
ZXItPmNvbW1pdFBlbmRpbmcoKSk7CisgICAgRVhQRUNUX1RSVUUoc2NoZWR1bGVyLT5yZWRyYXdQ
ZW5kaW5nKCkpOworICAgIEVYUEVDVF9UUlVFKHRpbWVTb3VyY2UtPmFjdGl2ZSgpKTsKKworICAg
IC8vIERyYXcgc3VjY2Vzc2Z1bGx5LgorICAgIGNsaWVudC5zZXREcmF3U3VjY2Vzcyh0cnVlKTsK
KyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDMsIGNsaWVudC5udW1EcmF3
cygpKTsKKyAgICBFWFBFQ1RfVFJVRShzY2hlZHVsZXItPmNvbW1pdFBlbmRpbmcoKSk7CisgICAg
RVhQRUNUX0ZBTFNFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfRkFM
U0UodGltZVNvdXJjZS0+YWN0aXZlKCkpOworfQorCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133360</attachid>
            <date>2012-03-22 15:20:30 -0700</date>
            <delta_ts>2012-03-22 16:09:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81716-20120322182029.patch</filename>
            <type>text/plain</type>
            <size>49935</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZkZTIyNWIxZDI5NzM1
NWY4MWZhNzI1NjA1MzQ4NjBlNzlmOTYzMS4uYWIxYjA3MWIxNTkxYzc3ZDkzNmE0OTg5OTlhNjEw
ZDUxMjg2Y2Y3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAzLTIyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU2tp
cCBmcmFtZXMgd2hlbiBjaGVja2VyYm9hcmRpbmcgYW4gYW5pbWF0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTcxNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBzdG9wIGRyYXdpbmcg
ZnJhbWVzIHdoZW4gcHJlcGFyZVRvRHJhdyBmYWlscywgaWYgdGhlIGRyYXcgaXMKKyAgICAgICAg
bm90IGZvcmNlZC4gVGhlIGV4cGVjdGVkIGJlaGF2aW91ciBpcyBvdXRsaW5lZCBiZWxvdyBieSB0
aGUgdW5pdCB0ZXN0cy4KKworICAgICAgICBXaGVuIGEgZHJhdyBmYWlscywgd2U6CisgICAgICAg
IDEuIFNldCBtX25lZWRzUmVkcmF3IHRvIHRyeSBhZ2FpbiBuZXh0IHZzeW5jCisgICAgICAgIDIu
IFNldCBtX25lZWRzQ29tbWl0IGJlY2F1c2Ugd2UgbmVlZCBtb3JlIGRhdGEgZnJvbSB3ZWJraXQg
dG8gc3VjY2VlZAorICAgICAgICAzLiBTZXQgbV9kcmF3SWZQb3NzaWJsZUZhaWxlZC4gVGhpcyBh
bGxvd3MgdXMgdG8gdHJ5IGRyYXcgYWdhaW4gd2l0aGluCisgICAgICAgIHRoZSBzYW1lIHZzeW5j
ICppZiogYSBjb21taXQgZmluaXNoZXMgZHVyaW5nIHRoaXMgdGltZS4KKworICAgICAgICBVbml0
IHRlc3Q6IENDU2NoZWR1bGVyVGVzdC5SZXF1ZXN0UmVkcmF3SW5zaWRlRmFpbGVkRHJhdworICAg
ICAgICAgICAgICAgICAgIENDU2NoZWR1bGVyVGVzdC5SZXF1ZXN0Q29tbWl0SW5zaWRlRmFpbGVk
RHJhdworICAgICAgICAgICAgICAgICAgIENDU2NoZWR1bGVyVGVzdC5Ob0JlZ2luRnJhbWVXaGVu
RHJhd0ZhaWxzCisgICAgICAgICAgICAgICAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LlRlc3RGYWlsZWREcmF3U2V0c05lZWRzQ29tbWl0QW5kRG9lc05vdERyYXdBZ2FpbgorICAgICAg
ICAgICAgICAgICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5UZXN0U2V0TmVlZHNSZWRy
YXdEdXJpbmdGYWlsZWREcmF3RG9lc05vdFJlbW92ZU5lZWRzUmVkcmF3CisgICAgICAgICAgICAg
ICAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LlRlc3RDb21taXRBZnRlckZhaWxlZERy
YXdBbGxvd3NEcmF3SW5TYW1lRnJhbWUKKyAgICAgICAgICAgICAgICAgICBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QuVGVzdENvbW1pdEFmdGVyRmFpbGVkQW5kU3VjY2Vzc2Z1bERyYXdEb2Vz
Tm90QWxsb3dEcmF3SW5TYW1lRnJhbWUKKyAgICAgICAgICAgICAgICAgICBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QuVGVzdEZhaWxlZERyYXdJc1JldHJpZWROZXh0VlN5bmMKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVy
UGFzc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnByZXBhcmVU
b0RyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaDoKKyAgICAgICAg
KENDU2NoZWR1bGVyQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpkaWREcmF3SWZQb3NzaWJsZUNvbXBs
ZXRlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oOgorICAgICAgICAoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2No
ZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2Fw
SWZQb3NzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRB
Y3Rpb25EcmF3QW5kU3dhcEZvcmNlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoQ0NUaHJlYWRQcm94eSk6CisKIDIw
MTItMDMtMjIgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4K
IAogICAgICAgICBUaWxlZEJhY2tpbmdTdG9yZTogRml4IHRlc3QgcmVncmVzc2lvbnMgdGhhdCBh
cHBlYXJlZCB3aXRoIHIxMTE1NjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGFhMWY4
ODgxY2Q2MTdhM2EwYTg1MmVmZTZhNzFiYzU0YzFmYzgxNGMuLjEzODgxZGJiZGYwYjQ4ZmVkMTBm
NDU3MjBiYzhhZmIyMDE2OTMyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzggQEAKKzIwMTItMDMtMjIgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW2Nocm9taXVtXSBTa2lwIGZyYW1lcyB3aGVuIGNoZWNrZXJib2FyZGluZyBh
biBhbmltYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgxNzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRU
ZXN0czo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiB0ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OkZha2VDQ1NjaGVkdWxlckNsaWVudDo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZh
a2VDQ1NjaGVkdWxlckNsaWVudDo6bnVtRHJhd3MpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZh
a2VDQ1NjaGVkdWxlckNsaWVudDo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxl
KToKKyAgICAgICAgKEZha2VDQ1NjaGVkdWxlckNsaWVudCk6CisgICAgICAgIChXZWJLaXRUZXN0
czo6RmFrZUNDU2NoZWR1bGVyQ2xpZW50OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZvcmNl
ZCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUNDU2NoZWR1bGVyQ2xpZW50OjpzZXREcmF3
U3VjY2Vzcyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVCk6CisgICAgICAgIChXZWJLaXRU
ZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXc6OlNjaGVkdWxl
ckNsaWVudFRoYXRTZXROZWVkc0RyYXdJbnNpZGVEcmF3KToKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdzo6c2NoZWR1bGVkQWN0
aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpTY2hlZHVs
ZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdzo6c2NoZWR1bGVkQWN0aW9uRHJhd0Fu
ZFN3YXBGb3JjZWQpOgorICAgICAgICAoU2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0lu
c2lkZURyYXcpOgorICAgICAgICAoV2ViS2l0VGVzdHMpOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OlNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0NvbW1pdEluc2lkZURyYXc6OlNjaGVkdWxlckNs
aWVudFRoYXRTZXROZWVkc0NvbW1pdEluc2lkZURyYXcpOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OlNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0NvbW1pdEluc2lkZURyYXc6OnNjaGVkdWxlZEFj
dGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6U2NoZWR1
bGVyQ2xpZW50VGhhdFNldE5lZWRzQ29tbWl0SW5zaWRlRHJhdzo6c2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXBGb3JjZWQpOgorICAgICAgICAoU2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzQ29t
bWl0SW5zaWRlRHJhdyk6CisgICAgICAgICogdGVzdHMvQ0NTY2hlZHVsZXJUZXN0Q29tbW9uLmg6
CisgICAgICAgIChGYWtlQ0NGcmFtZVJhdGVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdFRl
c3RzOjpGYWtlQ0NGcmFtZVJhdGVDb250cm9sbGVyOjpGYWtlQ0NGcmFtZVJhdGVDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlQ0NGcmFtZVJhdGVDb250cm9sbGVyOjpudW1G
cmFtZXNQZW5kaW5nKToKKyAgICAgICAgKFdlYktpdFRlc3RzKToKKwogMjAxMi0wMy0yMiAgQmVy
bmhhcmQgQmF1ZXIgIDxiYXVlcmJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIFBs
dWctaW4gZmFpbGluZyB0byBsb2FkIHNob3VsZG4ndCBzYXkgIk1pc3NpbmcgUGx1Zy1pbiIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggNDQzYTFmZmFhNzdiYTBl
ZTUyMDI5ZGYwZTNhYjE0OTY3ZjRjNTJkYi4uNjFjMDhiNTg1MWE0OGZjZjA0YTNkZWJjNDAxM2Y2
OGFkMDhjMzNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAg
LTI3NSw3ICsyNzUsOSBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRl
clBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNzZXMsIENDTGF5ZQogICAgIC8vIEFkZCBxdWFk
cyB0byB0aGUgUmVuZGVyIHBhc3NlcyBpbiBGcm9udFRvQmFjayBvcmRlciB0byBhbGxvdyBmb3Ig
dGVzdGluZyBvY2NsdXNpb24gYW5kIHBlcmZvcm1pbmcgY3VsbGluZyBkdXJpbmcgdGhlIHRyZWUg
d2Fsay4KICAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwgVmVjdG9yPEND
TGF5ZXJJbXBsKj4sIENDUmVuZGVyU3VyZmFjZSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJv
bnRUb0JhY2s+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKLSAgICAvLyBJZiB3ZSBhcmUgdW5hYmxl
IHRvIGRyYXcgYW4gYW5pbWF0aW9uIG9uIHNvbWUgbGF5ZXIsIHRoZW4gd2UgYWJvcnQgdGhlIGVu
dGlyZSBmcmFtZS4KKyAgICAvLyBUeXBpY2FsbHkgd2hlbiB3ZSBhcmUgbWlzc2luZyBhIHRleHR1
cmUgYW5kIHVzZSBhIGNoZWNrZXJib2FyZCBxdWFkLCB3ZSBzdGlsbCBkcmF3IHRoZSBmcmFtZS4g
SG93ZXZlciB3aGVuIHRoZSBsYXllciBiZWluZworICAgIC8vIGNoZWNrZXJib2FyZGVkIGlzIG1v
dmluZyBkdWUgdG8gYW4gaW1wbC1hbmltYXRpb24sIHdlIGRyb3AgdGhlIGZyYW1lIHRvIGF2b2lk
IGZsYXNoaW5nIGR1ZSB0byB0aGUgdGV4dHVyZSBzdWRkZW5seSBhcHBlYXJpbmcKKyAgICAvLyBp
biB0aGUgZnV0dXJlLgogICAgIGJvb2wgZHJhd0ZyYW1lID0gdHJ1ZTsKIAogICAgIENDTGF5ZXJJ
dGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZyZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0KTsKQEAgLTMwNiwxMCArMzA4LDggQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYgcGFzc2VzLCBDQ0xheWUK
ICAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JMYXllcigqaXQsICZvY2NsdXNpb25UcmFja2Vy
LCB1c2VkQ2hlY2tlcmJvYXJkKTsKICAgICAgICAgaWYgKHVzZWRDaGVja2VyYm9hcmQpIHsKICAg
ICAgICAgICAgIGJvb2wgbGF5ZXJIYXNBbmltYXRpbmdUcmFuc2Zvcm0gPSBpdC0+c2NyZWVuU3Bh
Y2VUcmFuc2Zvcm1Jc0FuaW1hdGluZygpIHx8IGl0LT5kcmF3VHJhbnNmb3JtSXNBbmltYXRpbmco
KTsKLSAgICAgICAgICAgIGlmIChsYXllckhhc0FuaW1hdGluZ1RyYW5zZm9ybSkgeworICAgICAg
ICAgICAgaWYgKGxheWVySGFzQW5pbWF0aW5nVHJhbnNmb3JtKQogICAgICAgICAgICAgICAgIGRy
YXdGcmFtZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcigqaXQpOwpAQCAtMzY3LDExICszNjcsOCBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6
OnByZXBhcmVUb0RyYXcoRnJhbWVEYXRhJiBmcmFtZSkKICAgICBpZiAoIXJvb3RMYXllcigpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWNhbGN1bGF0ZVJlbmRlclBhc3Nlcyhm
cmFtZS5yZW5kZXJQYXNzZXMsIGZyYW1lLnJlbmRlclN1cmZhY2VMYXllckxpc3QpKSB7Ci0gICAg
ICAgIGZyYW1lLnJlbmRlclBhc3Nlcy5jbGVhcigpOwotICAgICAgICBmcmFtZS5yZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LmNsZWFyKCk7CisgICAgaWYgKCFjYWxjdWxhdGVSZW5kZXJQYXNzZXMoZnJh
bWUucmVuZGVyUGFzc2VzLCBmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIC8vIElmIHdlIHJldHVybiB0cnVlLCB0aGVuIHdl
IGV4cGVjdCBkcmF3TGF5ZXJzKCkgdG8gYmUgY2FsbGVkIGJlZm9yZSB0aGlzIGZ1bmN0aW9uIGlz
IGNhbGxlZCBhZ2Fpbi4KICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuaAppbmRleCBlMGM2ZTczYTMzNDIwZGQ0N2QwOTU0Mjg2MmNiOWE0OGEwYWQxY2Iw
Li4wMmU5YjEwMzc3NGVmNWViNDQ4YzQ2YjVhMTk2ZmNkNWQzNTFjY2QwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC04OCw2ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgYmVnaW5Db21taXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxl
dGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShkb3VibGUgbW9ub3RvbmljVGltZSwgZG91
YmxlIHdhbGxDbG9ja1RpbWUpOworICAgIC8vIFJldHVybnMgZmFsc2UgaWYgcHJvYmxlbXMgb2Nj
dXJlZCBwcmVwYXJpbmcgdGhlIGZyYW1lLCBhbmQgd2Ugc2hvdWxkIHRyeSB0byBhdm9pZCBkaXNw
bGF5aW5nIHRoZSBmcmFtZS4KICAgICB2aXJ0dWFsIGJvb2wgcHJlcGFyZVRvRHJhdyhGcmFtZURh
dGEmKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVycyhjb25zdCBGcmFtZURhdGEmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXIuY3BwCmluZGV4IDYxYmQ5MzEzZjU0YmNlMmIwYmRkZWE4NTQ2NDc5
YTMwYTJlNTJhNjQuLjEzYjc0MWVhOGMzZmY0OGM4NzZjYzcyY2I2YTRlMGFkYTNjYjJmYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKQEAgLTE2Miw4ICsxNjIsMTUgQEAgdm9pZCBDQ1NjaGVk
dWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKQogICAgICAgICBjYXNlIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlUOgogICAgICAgICAgICAgbV9jbGllbnQtPnNjaGVk
dWxlZEFjdGlvbkNvbW1pdCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXOgotICAgICAgICAgICAgbV9jbGllbnQt
PnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCk7CisgICAgICAgIGNhc2UgQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFOiB7CisgICAgICAgICAgICBib29s
IGRyYXdTdWNjZXNzID0gbV9jbGllbnQtPnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3Nz
aWJsZSgpOworICAgICAgICAgICAgbV9zdGF0ZU1hY2hpbmUuZGlkRHJhd0lmUG9zc2libGVDb21w
bGV0ZWQoZHJhd1N1Y2Nlc3MpOworICAgICAgICAgICAgaWYgKGRyYXdTdWNjZXNzKQorICAgICAg
ICAgICAgICAgIG1fZnJhbWVSYXRlQ29udHJvbGxlci0+ZGlkQmVnaW5GcmFtZSgpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0RSQVdfRk9SQ0VEOgorICAgICAgICAgICAgbV9jbGllbnQtPnNjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwRm9yY2VkKCk7CiAgICAgICAgICAgICBtX2ZyYW1lUmF0ZUNvbnRy
b2xsZXItPmRpZEJlZ2luRnJhbWUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fQ09OVEVYVF9SRUNSRUFUSU9O
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmgKaW5kZXggOGVmNWRjZjcyYzI3MGEzYTZjODE0N2U0MDcyMDU5
MmU4NzFkNjZlNC4uYzg3NmUyMGJjODc3OGRjNzlhZjM4OWMwYjlhOWNiYzNhY2JhNjk2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlci5oCkBAIC00MSw3ICs0MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZvcmNlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVs
ZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCmluZGV4IGYzN2YwYjQxN2IzZWVkNTdmMjBjY2Nl
MzE1ZDY5MDNlZDlhN2E4ZDYuLjFjOTQyZTM0M2M3NzcxOWI2M2U2ZDNmMDliMTJiMDVkZWUwMDFi
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKQEAg
LTQwLDYgKzQwLDcgQEAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lKCkKICAgICAsIG1faW5zaWRlVlN5bmMoZmFsc2UpCiAgICAgLCBtX3Zpc2libGUoZmFs
c2UpCiAgICAgLCBtX2NhbkRyYXcodHJ1ZSkKKyAgICAsIG1fZHJhd0lmUG9zc2libGVGYWlsZWQo
ZmFsc2UpCiAgICAgLCBtX2NvbnRleHRTdGF0ZShDT05URVhUX0FDVElWRSkKIHsKIH0KQEAgLTcx
LDExICs3MiwxMCBAQCBib29sIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzaG91bGREcmF3KCkg
Y29uc3QKIAogQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6bmV4dEFjdGlvbigpIGNvbnN0CiB7Ci0KICAgICBzd2l0Y2ggKG1fY29tbWl0U3Rh
dGUpIHsKICAgICBjYXNlIENPTU1JVF9TVEFURV9JRExFOgogICAgICAgICBpZiAobV9jb250ZXh0
U3RhdGUgIT0gQ09OVEVYVF9BQ1RJVkUgJiYgbV9uZWVkc0ZvcmNlZFJlZHJhdykKLSAgICAgICAg
ICAgIHJldHVybiBBQ1RJT05fRFJBVzsKKyAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBV19G
T1JDRUQ7CiAgICAgICAgIGlmIChtX2NvbnRleHRTdGF0ZSAhPSBDT05URVhUX0FDVElWRSAmJiBt
X25lZWRzRm9yY2VkQ29tbWl0KQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9GUkFN
RTsKICAgICAgICAgaWYgKG1fY29udGV4dFN0YXRlID09IENPTlRFWFRfTE9TVCkKQEAgLTgzLDE5
ICs4MywxOSBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpuZXh0QWN0aW9uKCkgY29uc3QKICAgICAgICAgaWYgKG1fY29udGV4dFN0YXRl
ID09IENPTlRFWFRfUkVDUkVBVElORykKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsK
ICAgICAgICAgaWYgKHNob3VsZERyYXcoKSkKLSAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJB
VzsKKyAgICAgICAgICAgIHJldHVybiBtX25lZWRzRm9yY2VkUmVkcmF3ID8gQUNUSU9OX0RSQVdf
Rk9SQ0VEIDogQUNUSU9OX0RSQVdfSUZfUE9TU0lCTEU7CiAgICAgICAgIGlmIChtX25lZWRzQ29t
bWl0ICYmIChtX3Zpc2libGUgfHwgbV9uZWVkc0ZvcmNlZENvbW1pdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gQUNUSU9OX0JFR0lOX0ZSQU1FOwogICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAK
ICAgICBjYXNlIENPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUzoKICAgICAgICAgaWYgKHNo
b3VsZERyYXcoKSkKLSAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKKyAgICAgICAgICAg
IHJldHVybiBtX25lZWRzRm9yY2VkUmVkcmF3ID8gQUNUSU9OX0RSQVdfRk9SQ0VEIDogQUNUSU9O
X0RSQVdfSUZfUE9TU0lCTEU7CiAgICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsKIAogICAgIGNh
c2UgQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzoKICAgICAgICAgaWYgKHNob3VsZERy
YXcoKSkKLSAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKKyAgICAgICAgICAgIHJldHVy
biBtX25lZWRzRm9yY2VkUmVkcmF3ID8gQUNUSU9OX0RSQVdfRk9SQ0VEIDogQUNUSU9OX0RSQVdf
SUZfUE9TU0lCTEU7CiAgICAgICAgIGlmICghbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZykK
ICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTOwog
ICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CkBAIC0xMDUsNyArMTA1LDcgQEAgQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlv
bigpIGNvbnN0CiAKICAgICBjYXNlIENPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFX
OgogICAgICAgICBpZiAoc2hvdWxkRHJhdygpIHx8IG1fY29udGV4dFN0YXRlID09IENPTlRFWFRf
TE9TVCkKLSAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKKyAgICAgICAgICAgIHJldHVy
biBtX25lZWRzRm9yY2VkUmVkcmF3ID8gQUNUSU9OX0RSQVdfRk9SQ0VEIDogQUNUSU9OX0RSQVdf
SUZfUE9TU0lCTEU7CiAgICAgICAgIC8vIENPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9E
UkFXIHdhbnRzIHRvIGVuZm9yY2UgYSBkcmF3LiBJZiBtX2NhbkRyYXcgaXMgZmFsc2UsCiAgICAg
ICAgIC8vIHByb2NlZWQgdG8gdGhlIG5leHQgc3RlcCAoc2ltaWxhciBhcyBpbiBDT01NSVRfU1RB
VEVfSURMRSkuCiAgICAgICAgIGlmICghbV9jYW5EcmF3ICYmIG1fbmVlZHNDb21taXQgJiYgKG1f
dmlzaWJsZSB8fCBtX25lZWRzRm9yY2VkQ29tbWl0KSkKQEAgLTE0MCwxMSArMTQwLDE1IEBAIHZv
aWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKEFjdGlvbiBhY3Rpb24pCiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfSURM
RTsKICAgICAgICAgbV9uZWVkc1JlZHJhdyA9IHRydWU7CisgICAgICAgIGlmIChtX2RyYXdJZlBv
c3NpYmxlRmFpbGVkKQorICAgICAgICAgICAgbV9sYXN0RnJhbWVOdW1iZXJXaGVyZURyYXdXYXND
YWxsZWQgPSAtMTsKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2FzZSBBQ1RJT05fRFJBVzoKKyAg
ICBjYXNlIEFDVElPTl9EUkFXX0ZPUkNFRDoKKyAgICBjYXNlIEFDVElPTl9EUkFXX0lGX1BPU1NJ
QkxFOgogICAgICAgICBtX25lZWRzUmVkcmF3ID0gZmFsc2U7CiAgICAgICAgIG1fbmVlZHNGb3Jj
ZWRSZWRyYXcgPSBmYWxzZTsKKyAgICAgICAgbV9kcmF3SWZQb3NzaWJsZUZhaWxlZCA9IGZhbHNl
OwogICAgICAgICBpZiAobV9pbnNpZGVWU3luYykKICAgICAgICAgICAgIG1fbGFzdEZyYW1lTnVt
YmVyV2hlcmVEcmF3V2FzQ2FsbGVkID0gbV9jdXJyZW50RnJhbWVOdW1iZXI7CiAgICAgICAgIGlm
IChtX2NvbW1pdFN0YXRlID09IENPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXKSB7
CkBAIC0xOTksNiArMjAzLDE1IEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldE5l
ZWRzRm9yY2VkUmVkcmF3KCkKICAgICBtX25lZWRzRm9yY2VkUmVkcmF3ID0gdHJ1ZTsKIH0KIAor
dm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6ZGlkRHJhd0lmUG9zc2libGVDb21wbGV0ZWQo
Ym9vbCBzdWNjZXNzKQoreworICAgIG1fZHJhd0lmUG9zc2libGVGYWlsZWQgPSAhc3VjY2VzczsK
KyAgICBpZiAobV9kcmF3SWZQb3NzaWJsZUZhaWxlZCkgeworICAgICAgICBtX25lZWRzUmVkcmF3
ID0gdHJ1ZTsKKyAgICAgICAgbV9uZWVkc0NvbW1pdCA9IHRydWU7CisgICAgfQorfQorCiB2b2lk
IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXROZWVkc0NvbW1pdCgpCiB7CiAgICAgbV9uZWVk
c0NvbW1pdCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUu
aAppbmRleCA2MWJlYzM5NGVjZTgwOTUzY2FkOWQ1YmE4YmYzMDY2OTVjMGUxZjgxLi42Y2Q4YzMy
M2M4OGRlOTU0NzgyYTFlZDBmZDFmYjEyZDQ4YjhjOWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKQEAgLTY5LDcgKzY5LDggQEAgcHVibGljOgogICAgICAg
ICBBQ1RJT05fQkVHSU5fRlJBTUUsCiAgICAgICAgIEFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9S
RVNPVVJDRVMsCiAgICAgICAgIEFDVElPTl9DT01NSVQsCi0gICAgICAgIEFDVElPTl9EUkFXLAor
ICAgICAgICBBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwKKyAgICAgICAgQUNUSU9OX0RSQVdfRk9S
Q0VELAogICAgICAgICBBQ1RJT05fQkVHSU5fQ09OVEVYVF9SRUNSRUFUSU9OCiAgICAgfTsKICAg
ICBBY3Rpb24gbmV4dEFjdGlvbigpIGNvbnN0OwpAQCAtOTUsNiArOTYsOSBAQCBwdWJsaWM6CiAg
ICAgLy8gd2UgYXJlIG5vdCB2aXNpYmxlLgogICAgIHZvaWQgc2V0TmVlZHNGb3JjZWRSZWRyYXco
KTsKIAorICAgIC8vIEluZGljYXRlcyB3aGV0aGVyIEFDVElPTl9EUkFXX0lGX1BPU1NJQkxFIGRy
YXcgdG8gdGhlIHNjcmVlbiBvciBub3QuCisgICAgdm9pZCBkaWREcmF3SWZQb3NzaWJsZUNvbXBs
ZXRlZChib29sIHN1Y2Nlc3MpOworCiAgICAgLy8gSW5kaWNhdGVzIHRoYXQgYSBuZXcgY29tbWl0
IGZsb3cgbmVlZHMgdG8gYmUgcGVyZm9ybWVkLCBlaXRoZXIgdG8gcHVsbAogICAgIC8vIHVwZGF0
ZXMgZnJvbSB0aGUgbWFpbiB0aHJlYWQgdG8gdGhlIGltcGwsIG9yIHRvIHB1c2ggZGVsdGFzIGZy
b20gdGhlIGltcGwKICAgICAvLyB0aHJlYWQgdG8gbWFpbi4KQEAgLTEyMiw2ICsxMjYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoKTsKIAogcHJvdGVjdGVkOgorICAg
IGJvb2wgc2hvdWxkRHJhd0ZvcmNlZCgpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkRHJhdygpIGNv
bnN0OwogICAgIGJvb2wgaGFzRHJhd25UaGlzRnJhbWUoKSBjb25zdDsKIApAQCAtMTM3LDYgKzE0
Miw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1faW5zaWRlVlN5bmM7CiAgICAgYm9vbCBtX3Zp
c2libGU7CiAgICAgYm9vbCBtX2NhbkRyYXc7CisgICAgYm9vbCBtX2RyYXdJZlBvc3NpYmxlRmFp
bGVkOwogICAgIENvbnRleHRTdGF0ZSBtX2NvbnRleHRTdGF0ZTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKaW5kZXggZTQxNzNhOGFkNjExM2Y3ZWRjNGI5MDJhYjBhN2Y4NTA4NjNh
MTQ1Zi4uOTc1MzZlMWM1OWY3OWVmNDZmNTU1MDIwYmMxYjA0NmU2YmEyZWYyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTU0MiwxMiArNTQyLDEyIEBAIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbigpCiAgICAgbV9tYWlu
VGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQ
cm94eTo6YmVnaW5Db250ZXh0UmVjcmVhdGlvbikpOwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6
OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkKK2Jvb2wgQ0NUaHJlYWRQcm94eTo6c2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlcm5hbChib29sIGZvcmNlZERyYXcpCiB7CiAgICAgVFJB
Q0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwIiwgdGhp
cywgMCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBpZiAoIW1fbGF5ZXJUcmVl
SG9zdEltcGwpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAv
LyBGSVhNRTogY29tcHV0ZSB0aGUgZnJhbWUgZGlzcGxheSB0aW1lIG1vcmUgaW50ZWxsaWdlbnRs
eQogICAgIGRvdWJsZSBtb25vdG9uaWNUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCk7CkBAIC01NTYsMjEgKzU1NiwyNSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFj
dGlvbkRyYXdBbmRTd2FwKCkKICAgICBtX2lucHV0SGFuZGxlck9uSW1wbFRocmVhZC0+YW5pbWF0
ZShtb25vdG9uaWNUaW1lKTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5hbmltYXRlKG1vbm90
b25pY1RpbWUsIHdhbGxDbG9ja1RpbWUpOwogICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1l
RGF0YSBmcmFtZTsKLSAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1l
KTsKLSAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAgICBib29s
IGRyYXdGcmFtZSA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpIHx8
IGZvcmNlZERyYXc7CisgICAgaWYgKGRyYXdGcmFtZSkKKyAgICAgICAgbV9sYXllclRyZWVIb3N0
SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAKICAgICAvLyBDaGVjayBmb3IgYSBwZW5kaW5nIGNv
bXBvc2l0ZUFuZFJlYWRiYWNrLgogICAgIGlmIChtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVh
ZCkgeworICAgICAgICBBU1NFUlQoZHJhd0ZyYW1lKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0
SW1wbC0+cmVhZGJhY2sobV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPnBpeGVscywgbV9y
ZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPnJlY3QpOwogICAgICAgICBtX3JlYWRiYWNrUmVx
dWVzdE9uSW1wbFRocmVhZC0+c3VjY2VzcyA9ICFtX2xheWVyVHJlZUhvc3RJbXBsLT5pc0NvbnRl
eHRMb3N0KCk7CiAgICAgICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5jb21wbGV0
aW9uLnNpZ25hbCgpOwogICAgICAgICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZCA9IDA7
CiAgICAgfQogCi0gICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKKyAgICBp
ZiAoZHJhd0ZyYW1lKQorICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zd2FwQnVmZmVycygp
OwogCiAgICAgLy8gUHJvY2VzcyBhbnkgZmluaXNoIHJlcXVlc3QKICAgICBpZiAobV9maW5pc2hB
bGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpIHsKKyAgICAgICAgQVNTRVJU
KGRyYXdGcmFtZSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmZpbmlzaEFsbFJlbmRl
cmluZygpOwogICAgICAgICBtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9uSW1w
bFRocmVhZC0+c2lnbmFsKCk7CiAgICAgICAgIG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlv
bkV2ZW50T25JbXBsVGhyZWFkID0gMDsKQEAgLTU4MSw2ICs1ODUsMTkgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpCiAgICAgICAgIG1fbmV4dEZyYW1l
SXNOZXdseUNvbW1pdHRlZEZyYW1lT25JbXBsVGhyZWFkID0gZmFsc2U7CiAgICAgICAgIG1fbWFp
blRocmVhZFByb3h5LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFk
UHJveHk6OmRpZENvbW1pdEFuZERyYXdGcmFtZSkpOwogICAgIH0KKworICAgIEFTU0VSVChkcmF3
RnJhbWUgfHwgKCFkcmF3RnJhbWUgJiYgIWZvcmNlZERyYXcpKTsKKyAgICByZXR1cm4gZHJhd0Zy
YW1lOworfQorCitib29sIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2Fw
SWZQb3NzaWJsZSgpCit7CisgICAgcmV0dXJuIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSW50
ZXJuYWwoZmFsc2UpOworfQorCit2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwRm9yY2VkKCkKK3sKKyAgICBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGVy
bmFsKHRydWUpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OmRpZENvbW1pdEFuZERyYXdGcmFt
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggZTdiYWRhNjQwNmZhZGEzNTlhM2E4MTlj
OWRmM2YxZjVkOGYxMGViZC4uNDg2MWY3OTA5MjYwMWMwMDVhMDUwNTIwZDU0N2VkMjFjZGY5ZDdh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtODEsNyArODEsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGNhbkRyYXcoKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZVJlc291
cmNlVXBkYXRlcygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdp
bkZyYW1lKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCk7
CisgICAgdmlydHVhbCBib29sIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSgp
OworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZvcmNlZCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCk7CiAg
ICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKCk7CkBAIC0xMjUsNiArMTI2
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQo
Q0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1hZ2VPbklt
cGxUaHJlYWQoKTsKICAgICB2b2lkIHJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCosIEdyYXBoaWNzQ29udGV4dDNEKiwgYm9vbCogcmVjcmVhdGVTdWNjZWVkZWQs
IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqKTsKKyAgICBib29sIHNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSW50ZXJuYWwoYm9vbCBmb3JjZWREcmF3KTsKIAogICAgIC8vIEFjY2Vzc2VkIG9u
IG1haW4gdGhyZWFkIG9ubHkuCiAgICAgYm9vbCBtX2FuaW1hdGVSZXF1ZXN0ZWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QuY3BwCmluZGV4IGE1N2I1YjM3OTVlNGNjNzM3MTkyZDkyZDAyZDNhZjlhNTliNDk4MzIuLmVh
OTg3NTgyMTUxNGVhZjhkNDNmNzAzNGExMmQyNWVkNjBmMzkzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3Bw
CkBAIC01NDQsMTMgKzU0NCwxNCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHBy
ZXBhcmVUb0RyYXdGYWlsc1doZW5BbmltYXRpb25Vc2VzQ2hlY2tlcmJvYXJkKQogICAgIEVYUEVD
VF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKICAgICBtX2hvc3RJbXBs
LT5kcmF3TGF5ZXJzKGZyYW1lKTsKIAotICAgIC8vIFdoZW4gYSB0ZXh0dXJlIGlzIG1pc3Npbmcg
YW5kIHdlJ3JlIGFuaW1hdGluZywgd2UgZG9uJ3QgZHJhdyBhbnl0aGluZy4KKyAgICAvLyBXaGVu
IGEgdGV4dHVyZSBpcyBtaXNzaW5nIGFuZCB3ZSdyZSBhbmltYXRpbmcsIHdlIGRvbid0IHdhbnQg
dG8gZHJhdyBhbnl0aGluZy4KICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0No
ZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CiAgICAgcm9vdCA9IHN0YXRpY19jYXN0PERpZERyYXdDaGVj
a0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOwogICAgIHJvb3QtPmFkZENoaWxkKE1p
c3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSgxLCB0cnVlLCBmYWxzZSwgdHJ1ZSkp
OwogICAgIGxheWVyID0gc3RhdGljX2Nhc3Q8TWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcio+
KHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCkpOwogCiAgICAgRVhQRUNUX0ZBTFNFKG1faG9zdElt
cGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZy
YW1lKTsKIAogICAgIC8vIFdoZW4gdGhlIGxheWVyIHNraXBzIGRyYXcgYW5kIHdlJ3JlIGFuaW1h
dGluZywgd2Ugc3RpbGwgZHJhdyB0aGUgZnJhbWUuCiAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExh
eWVyKERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3Bw
CmluZGV4IGVhNmI5MjdlNTM5NDUwZjFkMGJhY2JhNDE3MTkyM2U3N2NhZGJmY2MuLmU0YTVkN2M5
NTk0NGI5NGQ2NTNjMTQxMTk1NmI5YzI5Y2NlZDQ2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5j
cHAKQEAgLTExOSw2ICsxMTksMTc1IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0U2V0Rm9yY2VkUmVkcmF3RG9lc05vdFNldHNOb3JtYWxSZWRyYXcpCiAgICAgRVhQRUNU
X1RSVUUoc3RhdGUudnN5bmNDYWxsYmFja05lZWRlZCgpKTsKIH0KIAorVEVTVChDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZVRlc3QsIFRlc3RGYWlsZWREcmF3U2V0c05lZWRzQ29tbWl0QW5kRG9lc05v
dERyYXdBZ2FpbikKK3sKKyAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBz
dGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KCk7CisgICAg
RVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0
ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOworICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKKwor
ICAgIC8vIFdlJ3JlIGRyYXdpbmcgbm93LgorICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cisg
ICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFX
X0lGX1BPU1NJQkxFKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5y
ZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5jb21taXRQZW5kaW5nKCkp
OworCisgICAgLy8gRmFpbGluZyB0aGUgZHJhdyBtYWtlcyB1cyByZXF1aXJlIGEgY29tbWl0Lgor
ICAgIHN0YXRlLmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGVkKGZhbHNlKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4
dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX0ZSQU1FKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS5yZWRyYXdQZW5k
aW5nKCkpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLmNvbW1pdFBlbmRpbmcoKSk7Cit9CisKK1RF
U1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0U2V0TmVlZHNSZWRyYXdEdXJpbmdG
YWlsZWREcmF3RG9lc05vdFJlbW92ZU5lZWRzUmVkcmF3KQoreworICAgIENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUu
c2V0TmVlZHNSZWRyYXcoKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS5yZWRyYXdQZW5kaW5nKCkp
OworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7CisgICAgc3Rh
dGUuZGlkRW50ZXJWU3luYygpOworCisgICAgLy8gV2UncmUgZHJhd2luZyBub3cuCisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwg
c3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7CisgICAgRVhQRUNUX0ZBTFNF
KHN0YXRlLmNvbW1pdFBlbmRpbmcoKSk7CisKKyAgICAvLyBXaGlsZSBzdGlsbCBpbiB0aGUgc2Ft
ZSB2c3luYyBjYWxsYmFjaywgc2V0IG5lZWRzIHJlZHJhdyBhZ2Fpbi4KKyAgICAvLyBUaGlzIHNo
b3VsZCBub3QgcmVkcmF3LgorICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KCk7CisgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlv
bigpKTsKKworICAgIC8vIEZhaWxpbmcgdGhlIGRyYXcgbWFrZXMgdXMgcmVxdWlyZSBhIGNvbW1p
dC4KKyAgICBzdGF0ZS5kaWREcmF3SWZQb3NzaWJsZUNvbXBsZXRlZChmYWxzZSk7CisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsK
K30KKworVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDb21taXRBZnRlckZh
aWxlZERyYXdBbGxvd3NEcmF3SW5TYW1lRnJhbWUpCit7CisgICAgQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIFN0YXJ0
IGEgY29tbWl0LgorICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KCk7CisgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9CRUdJTl9GUkFNRSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUuY29tbWl0UGVuZGluZygp
KTsKKworICAgIC8vIFRoZW4gaW5pdGlhdGUgYSBkcmF3LgorICAgIHN0YXRlLnNldE5lZWRzUmVk
cmF3KCk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUudnN5bmNDYWxsYmFja05lZWRlZCgpKTsKKyAg
ICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAg
ICBFWFBFQ1RfVFJVRShzdGF0ZS5yZWRyYXdQZW5kaW5nKCkpOworCisgICAgLy8gRmFpbCB0aGUg
ZHJhdy4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0RSQVdfSUZfUE9TU0lCTEUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUuZGlkRHJh
d0lmUG9zc2libGVDb21wbGV0ZWQoZmFsc2UpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnJlZHJh
d1BlbmRpbmcoKSk7CisgICAgLy8gQnV0IHRoZSBjb21taXQgaXMgb25nb2luZy4KKyAgICBFWFBF
Q1RfVFJVRShzdGF0ZS5jb21taXRQZW5kaW5nKCkpOworCisgICAgLy8gRmluaXNoIHRoZSBjb21t
aXQuCisgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAgICBzdGF0
ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fQ09NTUlUKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS5yZWRyYXdQZW5kaW5nKCkpOworCisg
ICAgLy8gQW5kIHdlIHNob3VsZCBiZSBhbGxvd2VkIHRvIGRyYXcgYWdhaW4uCisgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKK30KKworVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3RDb21taXRBZnRlckZhaWxlZEFuZFN1Y2Nlc3NmdWxEcmF3RG9lc05vdEFsbG93RHJhd0lu
U2FtZUZyYW1lKQoreworICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0
YXRlLnNldFZpc2libGUodHJ1ZSk7CisKKyAgICAvLyBTdGFydCBhIGNvbW1pdC4KKyAgICBzdGF0
ZS5zZXROZWVkc0NvbW1pdCgpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVw
ZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOwor
ICAgIEVYUEVDVF9UUlVFKHN0YXRlLmNvbW1pdFBlbmRpbmcoKSk7CisKKyAgICAvLyBUaGVuIGlu
aXRpYXRlIGEgZHJhdy4KKyAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdygpOworICAgIEVYUEVDVF9U
UlVFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3lu
YygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdf
SUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUu
cmVkcmF3UGVuZGluZygpKTsKKworICAgIC8vIEZhaWwgdGhlIGRyYXcuCisgICAgc3RhdGUudXBk
YXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxF
KTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGVk
KGZhbHNlKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS5yZWRyYXdQZW5kaW5nKCkpOworICAgIC8v
IEJ1dCB0aGUgY29tbWl0IGlzIG9uZ29pbmcuCisgICAgRVhQRUNUX1RSVUUoc3RhdGUuY29tbWl0
UGVuZGluZygpKTsKKworICAgIC8vIEZvcmNlIGEgZHJhdy4KKyAgICBzdGF0ZS5zZXROZWVkc0Zv
cmNlZFJlZHJhdygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0RSQVdfRk9SQ0VELCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gRG8gdGhlIGZv
cmNlZCBkcmF3LgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fRFJBV19GT1JDRUQpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0ZBTFNF
KHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7CisgICAgLy8gQW5kIHRoZSBjb21taXQgaXMgc3RpbGwg
b25nb2luZy4KKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS5jb21taXRQZW5kaW5nKCkpOworCisgICAg
Ly8gRmluaXNoIHRoZSBjb21taXQuCisgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7Cisg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRF
X01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0
YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTKTsKKyAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxz
ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlU
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlUKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS5yZWRy
YXdQZW5kaW5nKCkpOworCisgICAgLy8gQW5kIHdlIHNob3VsZCBub3QgYmUgYWxsb3dlZCB0byBk
cmF3IGFnYWluIGluIHRoZSBzYW1lIGZyYW1lLi4KKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworfQorCitURVNU
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZhaWxlZERyYXdJc1JldHJpZWROZXh0
VlN5bmMpCit7CisgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUu
c2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIFN0YXJ0IGEgZHJhdy4KKyAgICBzdGF0ZS5zZXRO
ZWVkc1JlZHJhdygpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQo
KSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24o
KSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKworICAgIC8vIEZh
aWwgdGhlIGRyYXcuCisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRl
LmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGVkKGZhbHNlKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0
ZS5yZWRyYXdQZW5kaW5nKCkpOworCisgICAgLy8gV2Ugc2hvdWxkIG5vdCBiZSB0cnlpbmcgdG8g
ZHJhdyBhZ2FpbiBub3csIGJ1dCB3ZSBoYXZlIGEgY29tbWl0IHBlbmRpbmcuCisgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5l
eHRBY3Rpb24oKSk7CisKKyAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CisgICAgRVhQRUNUX1RS
VUUoc3RhdGUudnN5bmNDYWxsYmFja05lZWRlZCgpKTsKKyAgICBzdGF0ZS5kaWRFbnRlclZTeW5j
KCk7CisKKyAgICAvLyBXZSBzaG91bGQgdHJ5IGRyYXcgYWdhaW4gaW4gdGhlIG5leHQgdnN5bmMu
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9Q
T1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKK30KKwogVEVTVChDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QsIFRlc3REb2VzdERyYXdUd2ljZUluU2FtZUZyYW1lKQogewogICAgIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lIHN0YXRlOwpAQCAtMTI2LDggKzI5NSw4IEBAIFRFU1QoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RG9lc3REcmF3VHdpY2VJblNhbWVGcmFtZSkKICAg
ICBzdGF0ZS5zZXROZWVkc1JlZHJhdygpOwogICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2Fs
bGJhY2tOZWVkZWQoKSk7CiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwotICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24o
KSk7Ci0gICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9EUkFXKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9E
UkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0
YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSk7CiAK
ICAgICAvLyBXaGlsZSBzdGlsbCBpbiB0aGUgc2FtZSB2c3luYyBjYWxsYmFjaywgc2V0IG5lZWRz
IHJlZHJhdyBhZ2Fpbi4KICAgICAvLyBUaGlzIHNob3VsZCBub3QgcmVkcmF3LgpAQCAtMTM1LDEy
ICszMDQsMTQgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3REb2VzdERy
YXdUd2ljZUluU2FtZUZyYW1lKQogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBNb3ZlIHRvIGFu
b3RoZXIgZnJhbWUuIFRoaXMgc2hvdWxkIG5vdyBkcmF3LgorICAgIHN0YXRlLmRpZERyYXdJZlBv
c3NpYmxlQ29tcGxldGVkKHRydWUpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKICAgICBF
WFBFQ1RfVFJVRShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOwogICAgIHN0YXRlLmRpZEVu
dGVyVlN5bmMoKTsKIAotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fRFJBV19JRl9QT1NTSUJMRSk7CisgICAgc3RhdGUuZGlkRHJhd0lmUG9zc2libGVDb21w
bGV0ZWQodHJ1ZSk7CiAgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQo
KSk7CiB9CiAKQEAgLTE2MSwxMSArMzMyLDExIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LCBUZXN0TmV4dEFjdGlvbkRyYXdzT25WU3luYykKIAogICAgICAgICAgICAgLy8gQ2Fz
ZSAxOiBuZWVkc0NvbW1pdD1mYWxzZQogICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQo
ZmFsc2UpOwotICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5l
eHRBY3Rpb24oKSk7CiAKICAgICAgICAgICAgIC8vIENhc2UgMjogbmVlZHNDb21taXQ9dHJ1ZQog
ICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7Ci0gICAgICAgICAgICBFWFBF
Q1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOworICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtMTc0LDcgKzM0NSw4IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LCBUZXN0TmV4dEFjdGlvbkRyYXdzT25WU3luYykKICAgICAgICAgZm9yICh1bnNpZ25lZCBq
ID0gMDsgaiA8IDI7ICsraikgewogICAgICAgICAgICAgU3RhdGVNYWNoaW5lIHN0YXRlOwogICAg
ICAgICAgICAgc3RhdGUuc2V0Q29tbWl0U3RhdGUoYWxsQ29tbWl0U3RhdGVzW2ldKTsKLSAgICAg
ICAgICAgIGlmICghaikgeworICAgICAgICAgICAgYm9vbCBmb3JjZWREcmF3ID0gajsKKyAgICAg
ICAgICAgIGlmICghZm9yY2VkRHJhdykgewogICAgICAgICAgICAgICAgIHN0YXRlLmRpZEVudGVy
VlN5bmMoKTsKICAgICAgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKICAg
ICAgICAgICAgICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOwpAQCAtMTgzLDcgKzM1NSw3IEBA
IFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFjdGlvbkRyYXdzT25W
U3luYykKIAogICAgICAgICAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBleHBl
Y3RlZEFjdGlvbjsKICAgICAgICAgICAgIGlmIChhbGxDb21taXRTdGF0ZXNbaV0gIT0gQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQpCi0gICAgICAg
ICAgICAgICAgZXhwZWN0ZWRBY3Rpb24gPSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0RSQVc7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRBY3Rpb24gPSBmb3JjZWREcmF3ID8gQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0ZPUkNFRCA6IENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRTsKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICBleHBlY3RlZEFjdGlvbiA9IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fQ09NTUlUOwogCkBAIC0yMzEsMjIgKzQwMywyMiBAQCBURVNUKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdCwgVGVzdE5vQ29tbWl0U3RhdGVzUmVkcmF3V2hlbkludmlzaWJsZSkKICAg
ICAgICAgICAgIC8vIENhc2UgMTogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNl
c1BlbmRpbmc9ZmFsc2UuCiAgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7
CiAgICAgICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7
Ci0gICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9E
UkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlv
bigpKTsKIAogICAgICAgICAgICAgLy8gQ2FzZSAyOiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVN
b3JlUmVzb3VyY2VzUGVuZGluZz10cnVlLgogICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21t
aXQoZmFsc2UpOwogICAgICAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRp
bmcodHJ1ZSk7Ci0gICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgICAgICAgICAgRVhQRUNUX05F
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUu
bmV4dEFjdGlvbigpKTsKIAogICAgICAgICAgICAgLy8gQ2FzZSAzOiBuZWVkc0NvbW1pdD10cnVl
IHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZhbHNlLgogICAgICAgICAgICAgc3RhdGUuc2V0
TmVlZHNDb21taXQodHJ1ZSk7CiAgICAgICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3Vy
Y2VzUGVuZGluZyhmYWxzZSk7Ci0gICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgICAgICAgICAg
RVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJM
RSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgICAgICAgICAgLy8gQ2FzZSA0OiBuZWVkc0Nv
bW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUuCiAgICAgICAgICAgICBz
dGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKICAgICAgICAgICAgIHN0YXRlLnNldFVwZGF0ZU1v
cmVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOwotICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZf
UE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0y
NjYsNyArNDM4LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDYW5S
ZWRyYXdfU3RvcHNEcmF3KQogICAgICAgICAgICAgICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsK
IAogICAgICAgICAgICAgc3RhdGUuc2V0Q2FuRHJhdyhmYWxzZSk7Ci0gICAgICAgICAgICBFWFBF
Q1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOworICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICAgICAgfQog
ICAgIH0KIH0KQEAgLTM4MSw4ICs1NTMsOSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
VGVzdCwgVGVzdFVwZGF0ZXNfV2l0aFJlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKIAogICAgIC8v
IEVuc3VyZSB3ZSBkcmF3IG9uIHRoZSBuZXh0IHZzeW5jIGV2ZW4gdGhvdWdoIGFuIHVwZGF0ZSBp
cyBpbi1wcm9ncmVzcy4KICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7Ci0gICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigp
KTsKLSAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0RSQVcpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RS
QVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3Rh
dGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFKTsKKyAg
ICBzdGF0ZS5kaWREcmF3SWZQb3NzaWJsZUNvbXBsZXRlZCh0cnVlKTsKIAogICAgIC8vIEVuc3Vy
ZSB0aGF0IHdlIG9uY2Ugd2UgaGF2ZSBkcmF3biwgd2UgZG9udCBkbyBhbnl0aGluZyBlbHNlLgog
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CkBAIC00NDYsOSArNjE5LDEwIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LCBUZXN0U2V0TmVlZHNDb21taXRJc05vdExvc3QpCiAKICAgICAvLyBDb21t
aXQgYW5kIG1ha2Ugc3VyZSB3ZSBkcmF3IG9uIG5leHQgdnN5bmMKICAgICBzdGF0ZS51cGRhdGVT
dGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCk7Ci0gICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlv
bigpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFX
X0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcsIHN0
YXRlLmNvbW1pdFN0YXRlKCkpOwotICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fRFJBVyk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFKTsKKyAgICBzdGF0ZS5kaWRE
cmF3SWZQb3NzaWJsZUNvbXBsZXRlZCh0cnVlKTsKIAogICAgIC8vIFZlcmlmeSB0aGF0IGFub3Ro
ZXIgY29tbWl0IHdpbGwgYmVnaW4uCiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwpAQCAtNDkx
LDggKzY2NSw5IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5
Y2xlKQogCiAgICAgLy8gQXQgdnN5bmMsIGRyYXcuCiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygp
OwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0
YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAg
IHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19J
Rl9QT1NTSUJMRSk7CisgICAgc3RhdGUuZGlkRHJhd0lmUG9zc2libGVDb21wbGV0ZWQodHJ1ZSk7
CiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwogCiAgICAgLy8gU2hvdWxkIGJlIHN5bmNocm9u
aXplZCwgbm8gZHJhdyBuZWVkZWQsIG5vIGFjdGlvbiBuZWVkZWQuCkBAIC01NDEsOCArNzE2LDkg
QEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGVXaXRoQ29t
bWl0UmVxdWVzdEluYmV0d2VlbikKIAogICAgIC8vIEF0IHZzeW5jLCBkcmF3LgogICAgIHN0YXRl
LmRpZEVudGVyVlN5bmMoKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIHN0YXRlLnVwZGF0ZVN0YXRl
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVyk7CisgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4
dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUpOworICAgIHN0YXRlLmRpZERyYXdJZlBvc3NpYmxl
Q29tcGxldGVkKHRydWUpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKIAogICAgIC8vIFNo
b3VsZCBiZSBzeW5jaHJvbml6ZWQsIG5vIGRyYXcgbmVlZGVkLCBubyBhY3Rpb24gbmVlZGVkLgpA
QCAtNjUyLDcgKzgyOCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0
Q29udGV4dExvc3RXaGVuSWRsZUFuZENvbW1pdFJlcXVlc3RlZFdoaWxlCiAgICAgLy8gc2V0Q2Fu
RHJhdy4KICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKICAgICBzdGF0ZS5kaWRFbnRl
clZTeW5jKCk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
RFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwog
ICAgIHN0YXRlLnNldENhbkRyYXcoZmFsc2UpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUu
c2V0Q2FuRHJhdyh0cnVlKTsKQEAgLTY3Miw3ICs4NDgsNyBAQCBURVNUKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0V2hpbGVDb21taXRJblByb2dyZXNzKQogICAg
IC8vIFNldCBkYW1hZ2UgYW5kIGV4cGVjdCBhIGRyYXcuCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRy
YXcodHJ1ZSk7CiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwotICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cisg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NT
SUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5u
ZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKIApAQCAtNzEyLDcgKzg4
OCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29udGV4dExvc3RX
aGlsZUNvbW1pdEluUHJvZ3Jlc3NBbmRBbm90aGVyCiAgICAgLy8gU2V0IGRhbWFnZSBhbmQgZXhw
ZWN0IGEgZHJhdy4KICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKICAgICBzdGF0ZS5k
aWRFbnRlclZTeW5jKCk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3Rh
dGUuZGlkTGVhdmVWU3luYygpOwogCkBAIC03MzgsNyArOTE0LDcgQEAgVEVTVChDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZVRlc3QsIFRlc3RDb250ZXh0TG9zdFdoaWxlQ29tbWl0SW5Qcm9ncmVzc0Fu
ZEFub3RoZXIKIAogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlU
X1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogCi0g
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUu
bmV4dEFjdGlvbigpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnVw
ZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBFeHBlY3QgdG8gYmUgdG9s
ZCB0byBiZWdpbiBjb250ZXh0IHJlY3JlYXRpb24sIGluZGVwZW5kZW50IG9mIHZzeW5jIHN0YXRl
CkBAIC03NjAsNyArOTM2LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRl
c3RGaW5pc2hBbGxSZW5kZXJpbmdXaGlsZUNvbnRleHRMb3N0KQogICAgIC8vIEFzayBhIGZvcmNl
ZCByZWRyYXcgYW5kIHZlcmlmeSBpdCBvY3VycnMuCiAgICAgc3RhdGUuc2V0TmVlZHNGb3JjZWRS
ZWRyYXcodHJ1ZSk7CiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwotICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19GT1JD
RUQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwogCiAg
ICAgLy8gQ2xlYXIgdGhlIGZvcmNlZCByZWRyYXcgYml0LgpAQCAtNzczLDcgKzk0OSw3IEBAIFRF
U1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RmluaXNoQWxsUmVuZGVyaW5nV2hp
bGVDb250ZXh0TG9zdCkKICAgICAvLyBBc2sgYSBmb3JjZWQgcmVkcmF3IGFuZCB2ZXJpZnkgaXQg
b2N1cnJzLgogICAgIHN0YXRlLnNldE5lZWRzRm9yY2VkUmVkcmF3KHRydWUpOwogICAgIHN0YXRl
LmRpZEVudGVyVlN5bmMoKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfRk9SQ0VELCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCmluZGV4IDQ1ZjYxYjkwYmY1NGUyZWNl
NzhiZGE4ODNmZmEwYTI2YmQ1NDM2ZWIuLjhkZjVhMTFjYWY3YTIxM2UwNzQ2MDE1Y2Y0OTFkN2Qy
MmZiZjY1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hl
ZHVsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1
bGVyVGVzdC5jcHAKQEAgLTQ1LDI1ICs0NSw0NCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYWN0aW9u
cy5jbGVhcigpOwogICAgICAgICBtX2hhc01vcmVSZXNvdXJjZVVwZGF0ZXMgPSBmYWxzZTsKICAg
ICAgICAgbV9jYW5EcmF3ID0gdHJ1ZTsKKyAgICAgICAgbV9kcmF3U3VjY2VzcyA9IHRydWU7Cisg
ICAgICAgIG1fbnVtRHJhd3MgPSAwOwogICAgIH0KIAogICAgIHZvaWQgc2V0SGFzTW9yZVJlc291
cmNlVXBkYXRlcyhib29sIGIpIHsgbV9oYXNNb3JlUmVzb3VyY2VVcGRhdGVzID0gYjsgfQogICAg
IHZvaWQgc2V0Q2FuRHJhdyhib29sIGIpIHsgbV9jYW5EcmF3ID0gYjsgfQogCisgICAgaW50IG51
bURyYXdzKCkgY29uc3QgeyByZXR1cm4gbV9udW1EcmF3czsgfQogICAgIGludCBudW1BY3Rpb25z
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtX2FjdGlvbnMuc2l6ZSgpKTsgfQog
ICAgIGNvbnN0IGNoYXIqIGFjdGlvbihpbnQgaSkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb25zW2ld
OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhdygpIHsgcmV0dXJuIG1fY2FuRHJhdzsgfQog
ICAgIHZpcnR1YWwgYm9vbCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNNb3JlUmVzb3VyY2VVcGRhdGVzOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFj
dGlvbkJlZ2luRnJhbWUoKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkJl
Z2luRnJhbWUiKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dh
cCgpIHsgbV9hY3Rpb25zLnB1c2hfYmFjaygic2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAiKTsg
fQorICAgIHZpcnR1YWwgYm9vbCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUo
KQorICAgIHsKKyAgICAgICAgbV9hY3Rpb25zLnB1c2hfYmFjaygic2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXBJZlBvc3NpYmxlIik7CisgICAgICAgIG1fbnVtRHJhd3MrKzsKKyAgICAgICAgcmV0
dXJuIG1fZHJhd1N1Y2Nlc3M7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFj
dGlvbkRyYXdBbmRTd2FwRm9yY2VkKCkKKyAgICB7CisgICAgICAgIG1fYWN0aW9ucy5wdXNoX2Jh
Y2soInNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwRm9yY2VkIik7CisgICAgICAgIG1fbnVtRHJh
d3MrKzsKKyAgICB9CisKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9y
ZVJlc291cmNlcygpIHsgbV9hY3Rpb25zLnB1c2hfYmFjaygic2NoZWR1bGVkQWN0aW9uVXBkYXRl
TW9yZVJlc291cmNlcyIpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNvbW1p
dCgpIHsgbV9hY3Rpb25zLnB1c2hfYmFjaygic2NoZWR1bGVkQWN0aW9uQ29tbWl0Iik7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbigpIHsg
bV9hY3Rpb25zLnB1c2hfYmFjaygic2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlv
biIpOyB9CiAKKyAgICB2b2lkIHNldERyYXdTdWNjZXNzKGJvb2wgZHJhd1N1Y2Nlc3MpIHsgbV9k
cmF3U3VjY2VzcyA9IGRyYXdTdWNjZXNzOyB9CisKIHByb3RlY3RlZDoKICAgICBib29sIG1faGFz
TW9yZVJlc291cmNlVXBkYXRlczsKICAgICBib29sIG1fY2FuRHJhdzsKKyAgICBib29sIG1fZHJh
d1N1Y2Nlc3M7CisgICAgaW50IG1fbnVtRHJhd3M7CiAgICAgc3RkOjp2ZWN0b3I8Y29uc3QgY2hh
cio+IG1fYWN0aW9uczsKIH07CiAKQEAgLTk0LDcgKzExMyw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJU
ZXN0LCBSZXF1ZXN0Q29tbWl0KQogICAgIC8vIFRpY2sgc2hvdWxkIGRyYXcuCiAgICAgdGltZVNv
dXJjZS0+dGljaygpOwogICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKLSAg
ICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwIiwgY2xpZW50LmFjdGlv
bigwKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9z
c2libGUiLCBjbGllbnQuYWN0aW9uKDApKTsKICAgICBFWFBFQ1RfRkFMU0UodGltZVNvdXJjZS0+
YWN0aXZlKCkpOwogICAgIGNsaWVudC5yZXNldCgpOwogCkBAIC0xMzEsMzggKzE1MCwzMyBAQCBU
RVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdEFmdGVyQmVnaW5GcmFtZSkKICAgICB0
aW1lU291cmNlLT50aWNrKCk7CiAgICAgRVhQRUNUX0ZBTFNFKHRpbWVTb3VyY2UtPmFjdGl2ZSgp
KTsKICAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51bUFjdGlvbnMoKSk7Ci0gICAgRVhQRUNUX1NU
UkVRKCJzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCIsIGNsaWVudC5hY3Rpb24oMCkpOworICAg
IEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxlIiwgY2xp
ZW50LmFjdGlvbigwKSk7CiAgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25CZWdpbkZy
YW1lIiwgY2xpZW50LmFjdGlvbigxKSk7CiAgICAgY2xpZW50LnJlc2V0KCk7CiB9CiAKLWNsYXNz
IFNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0RyYXdJbnNpZGVEcmF3IDogcHVibGljIENDU2No
ZWR1bGVyQ2xpZW50IHsKK2NsYXNzIFNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0RyYXdJbnNp
ZGVEcmF3IDogcHVibGljIEZha2VDQ1NjaGVkdWxlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgU2No
ZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXcoKQotICAgICAgICA6IG1fbnVt
RHJhd3MoMCkKLSAgICAgICAgLCBtX3NjaGVkdWxlcigwKSB7IH0KKyAgICAgICAgOiBtX3NjaGVk
dWxlcigwKSB7IH0KIAogICAgIHZvaWQgc2V0U2NoZWR1bGVyKENDU2NoZWR1bGVyKiBzY2hlZHVs
ZXIpIHsgbV9zY2hlZHVsZXIgPSBzY2hlZHVsZXI7IH0KIAotICAgIGludCBudW1EcmF3cygpIGNv
bnN0IHsgcmV0dXJuIG1fbnVtRHJhd3M7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBoYXNNb3JlUmVz
b3VyY2VVcGRhdGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
Y2FuRHJhdygpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0
aW9uQmVnaW5GcmFtZSgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3
QW5kU3dhcCgpCisgICAgdmlydHVhbCBib29sIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQ
b3NzaWJsZSgpCiAgICAgewogICAgICAgICAvLyBPbmx5IHNldE5lZWRzUmVkcmF3IHRoZSBmaXJz
dCB0aW1lIHRoaXMgaXMgY2FsbGVkCiAgICAgICAgIGlmICghbV9udW1EcmF3cykKICAgICAgICAg
ICAgIG1fc2NoZWR1bGVyLT5zZXROZWVkc1JlZHJhdygpOwotICAgICAgICBtX251bURyYXdzKys7
CisgICAgICAgIHJldHVybiBGYWtlQ0NTY2hlZHVsZXJDbGllbnQ6OnNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSWZQb3NzaWJsZSgpOwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVs
ZWRBY3Rpb25EcmF3QW5kU3dhcEZvcmNlZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVs
ZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVk
dWxlZEFjdGlvbkNvbW1pdCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25C
ZWdpbkNvbnRleHRSZWNyZWF0aW9uKCkgeyB9CiAKIHByb3RlY3RlZDoKLSAgICBpbnQgbV9udW1E
cmF3czsKICAgICBDQ1NjaGVkdWxlciogbV9zY2hlZHVsZXI7CiB9OwogCkBAIC0xOTQsMzMgKzIw
OCw2OCBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdFJlZHJhd0luc2lkZURyYXcpCiAg
ICAgRVhQRUNUX0ZBTFNFKHRpbWVTb3VyY2UtPmFjdGl2ZSgpKTsKIH0KIAotY2xhc3MgU2NoZWR1
bGVyQ2xpZW50VGhhdFNldE5lZWRzQ29tbWl0SW5zaWRlRHJhdyA6IHB1YmxpYyBDQ1NjaGVkdWxl
ckNsaWVudCB7CisvLyBUZXN0IHRoYXQgcmVxdWVzdGluZyByZWRyYXcgaW5zaWRlIGEgZmFpbGVk
IGRyYXcgZG9lc24ndCBsb3NlIHRoZSByZXF1ZXN0LgorVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJl
cXVlc3RSZWRyYXdJbnNpZGVGYWlsZWREcmF3KQoreworICAgIFNjaGVkdWxlckNsaWVudFRoYXRT
ZXROZWVkc0RyYXdJbnNpZGVEcmF3IGNsaWVudDsKKyAgICBSZWZQdHI8RmFrZUNDVGltZVNvdXJj
ZT4gdGltZVNvdXJjZSA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NUaW1lU291cmNlKCkpOworICAgIE93
blB0cjxDQ1NjaGVkdWxlcj4gc2NoZWR1bGVyID0gQ0NTY2hlZHVsZXI6OmNyZWF0ZSgmY2xpZW50
LCBhZG9wdFB0cihuZXcgQ0NGcmFtZVJhdGVDb250cm9sbGVyKHRpbWVTb3VyY2UpKSk7CisgICAg
Y2xpZW50LnNldFNjaGVkdWxlcihzY2hlZHVsZXIuZ2V0KCkpOworICAgIHNjaGVkdWxlci0+c2V0
VmlzaWJsZSh0cnVlKTsKKyAgICBjbGllbnQuc2V0RHJhd1N1Y2Nlc3MoZmFsc2UpOworCisgICAg
c2NoZWR1bGVyLT5zZXROZWVkc1JlZHJhdygpOworICAgIEVYUEVDVF9UUlVFKHNjaGVkdWxlci0+
cmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfVFJVRSh0aW1lU291cmNlLT5hY3RpdmUoKSk7
CisgICAgRVhQRUNUX0VRKDAsIGNsaWVudC5udW1EcmF3cygpKTsKKworICAgIC8vIEZhaWwgdGhl
IGRyYXcuCisgICAgdGltZVNvdXJjZS0+dGljaygpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQu
bnVtRHJhd3MoKSk7CisKKyAgICAvLyBXZSBoYXZlIGEgY29tbWl0IHBlbmRpbmcgYW5kIHRoZSBk
cmF3IGZhaWxlZCwgYW5kIHdlIGRpZG4ndCBsb3NlIHRoZSByZWRyYXcgcmVxdWVzdC4KKyAgICBF
WFBFQ1RfVFJVRShzY2hlZHVsZXItPmNvbW1pdFBlbmRpbmcoKSk7CisgICAgRVhQRUNUX1RSVUUo
c2NoZWR1bGVyLT5yZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9UUlVFKHRpbWVTb3VyY2Ut
PmFjdGl2ZSgpKTsKKworICAgIC8vIEZhaWwgdGhlIGRyYXcgYWdhaW4uCisgICAgdGltZVNvdXJj
ZS0+dGljaygpOworICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtRHJhd3MoKSk7CisgICAgRVhQ
RUNUX1RSVUUoc2NoZWR1bGVyLT5jb21taXRQZW5kaW5nKCkpOworICAgIEVYUEVDVF9UUlVFKHNj
aGVkdWxlci0+cmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfVFJVRSh0aW1lU291cmNlLT5h
Y3RpdmUoKSk7CisKKyAgICAvLyBEcmF3IHN1Y2Nlc3NmdWxseS4KKyAgICBjbGllbnQuc2V0RHJh
d1N1Y2Nlc3ModHJ1ZSk7CisgICAgdGltZVNvdXJjZS0+dGljaygpOworICAgIEVYUEVDVF9FUSgz
LCBjbGllbnQubnVtRHJhd3MoKSk7CisgICAgRVhQRUNUX1RSVUUoc2NoZWR1bGVyLT5jb21taXRQ
ZW5kaW5nKCkpOworICAgIEVYUEVDVF9GQUxTRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7
CisgICAgRVhQRUNUX0ZBTFNFKHRpbWVTb3VyY2UtPmFjdGl2ZSgpKTsKK30KKworY2xhc3MgU2No
ZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzQ29tbWl0SW5zaWRlRHJhdyA6IHB1YmxpYyBGYWtlQ0NT
Y2hlZHVsZXJDbGllbnQgewogcHVibGljOgogICAgIFNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVk
c0NvbW1pdEluc2lkZURyYXcoKQotICAgICAgICA6IG1fbnVtRHJhd3MoMCkKLSAgICAgICAgLCBt
X3NjaGVkdWxlcigwKSB7IH0KKyAgICAgICAgOiBtX3NjaGVkdWxlcigwKSB7IH0KIAogICAgIHZv
aWQgc2V0U2NoZWR1bGVyKENDU2NoZWR1bGVyKiBzY2hlZHVsZXIpIHsgbV9zY2hlZHVsZXIgPSBz
Y2hlZHVsZXI7IH0KIAotICAgIGludCBudW1EcmF3cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtRHJh
d3M7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhdygpIHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpCisgICAgdmlydHVh
bCBib29sIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSgpCiAgICAgewogICAg
ICAgICAvLyBPbmx5IHNldE5lZWRzQ29tbWl0IHRoZSBmaXJzdCB0aW1lIHRoaXMgaXMgY2FsbGVk
CiAgICAgICAgIGlmICghbV9udW1EcmF3cykKICAgICAgICAgICAgIG1fc2NoZWR1bGVyLT5zZXRO
ZWVkc0NvbW1pdCgpOwotICAgICAgICBtX251bURyYXdzKys7CisgICAgICAgIHJldHVybiBGYWtl
Q0NTY2hlZHVsZXJDbGllbnQ6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSgp
OwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZv
cmNlZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVz
b3VyY2VzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9u
KCkgeyB9CiAKIHByb3RlY3RlZDoKLSAgICBpbnQgbV9udW1EcmF3czsKICAgICBDQ1NjaGVkdWxl
ciogbV9zY2hlZHVsZXI7CiB9OwogCkBAIC0yNTEsNCArMzAwLDkwIEBAIFRFU1QoQ0NTY2hlZHVs
ZXJUZXN0LCBSZXF1ZXN0Q29tbWl0SW5zaWRlRHJhdykKICAgICBFWFBFQ1RfRkFMU0Uoc2NoZWR1
bGVyLT5yZWRyYXdQZW5kaW5nKCkpOwogfQogCisvLyBUZXN0cyB0aGF0IHdoZW4gYSBkcmF3IGZh
aWxzIHRoZW4gdGhlIHBlbmRpbmcgY29tbWl0IHNob3VsZCBub3QgYmUgZHJvcHBlZC4KK1RFU1Qo
Q0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0SW5zaWRlRmFpbGVkRHJhdykKK3sKKyAgICBT
Y2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdyBjbGllbnQ7CisgICAgUmVm
UHRyPEZha2VDQ1RpbWVTb3VyY2U+IHRpbWVTb3VyY2UgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlt
ZVNvdXJjZSgpKTsKKyAgICBPd25QdHI8Q0NTY2hlZHVsZXI+IHNjaGVkdWxlciA9IENDU2NoZWR1
bGVyOjpjcmVhdGUoJmNsaWVudCwgYWRvcHRQdHIobmV3IENDRnJhbWVSYXRlQ29udHJvbGxlcih0
aW1lU291cmNlKSkpOworICAgIGNsaWVudC5zZXRTY2hlZHVsZXIoc2NoZWR1bGVyLmdldCgpKTsK
KyAgICBzY2hlZHVsZXItPnNldFZpc2libGUodHJ1ZSk7CisgICAgY2xpZW50LnNldERyYXdTdWNj
ZXNzKGZhbHNlKTsKKworICAgIHNjaGVkdWxlci0+c2V0TmVlZHNSZWRyYXcoKTsKKyAgICBFWFBF
Q1RfVFJVRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CisgICAgRVhQRUNUX1RSVUUodGlt
ZVNvdXJjZS0+YWN0aXZlKCkpOworICAgIEVYUEVDVF9FUSgwLCBjbGllbnQubnVtRHJhd3MoKSk7
CisKKyAgICAvLyBGYWlsIHRoZSBkcmF3LgorICAgIHRpbWVTb3VyY2UtPnRpY2soKTsKKyAgICBF
WFBFQ1RfRVEoMSwgY2xpZW50Lm51bURyYXdzKCkpOworCisgICAgLy8gV2UgaGF2ZSBhIGNvbW1p
dCBwZW5kaW5nIGFuZCB0aGUgZHJhdyBmYWlsZWQsIGFuZCB3ZSBkaWRuJ3QgbG9zZSB0aGUgY29t
bWl0IHJlcXVlc3QuCisgICAgRVhQRUNUX1RSVUUoc2NoZWR1bGVyLT5jb21taXRQZW5kaW5nKCkp
OworICAgIEVYUEVDVF9UUlVFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBF
Q1RfVFJVRSh0aW1lU291cmNlLT5hY3RpdmUoKSk7CisKKyAgICAvLyBGYWlsIHRoZSBkcmF3IGFn
YWluLgorICAgIHRpbWVTb3VyY2UtPnRpY2soKTsKKyAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51
bURyYXdzKCkpOworICAgIEVYUEVDVF9UUlVFKHNjaGVkdWxlci0+Y29tbWl0UGVuZGluZygpKTsK
KyAgICBFWFBFQ1RfVFJVRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CisgICAgRVhQRUNU
X1RSVUUodGltZVNvdXJjZS0+YWN0aXZlKCkpOworCisgICAgLy8gRHJhdyBzdWNjZXNzZnVsbHku
CisgICAgY2xpZW50LnNldERyYXdTdWNjZXNzKHRydWUpOworICAgIHRpbWVTb3VyY2UtPnRpY2so
KTsKKyAgICBFWFBFQ1RfRVEoMywgY2xpZW50Lm51bURyYXdzKCkpOworICAgIEVYUEVDVF9UUlVF
KHNjaGVkdWxlci0+Y29tbWl0UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2NoZWR1bGVy
LT5yZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9GQUxTRSh0aW1lU291cmNlLT5hY3RpdmUo
KSk7Cit9CisKK1RFU1QoQ0NTY2hlZHVsZXJUZXN0LCBOb0JlZ2luRnJhbWVXaGVuRHJhd0ZhaWxz
KQoreworICAgIFJlZlB0cjxGYWtlQ0NUaW1lU291cmNlPiB0aW1lU291cmNlID0gYWRvcHRSZWYo
bmV3IEZha2VDQ1RpbWVTb3VyY2UoKSk7CisgICAgU2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRz
Q29tbWl0SW5zaWRlRHJhdyBjbGllbnQ7CisgICAgT3duUHRyPEZha2VDQ0ZyYW1lUmF0ZUNvbnRy
b2xsZXI+IGNvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgRmFrZUNDRnJhbWVSYXRlQ29udHJvbGxl
cih0aW1lU291cmNlKSk7CisgICAgRmFrZUNDRnJhbWVSYXRlQ29udHJvbGxlciogY29udHJvbGxl
clB0ciA9IGNvbnRyb2xsZXIuZ2V0KCk7CisgICAgT3duUHRyPENDU2NoZWR1bGVyPiBzY2hlZHVs
ZXIgPSBDQ1NjaGVkdWxlcjo6Y3JlYXRlKCZjbGllbnQsIGNvbnRyb2xsZXIucmVsZWFzZSgpKTsK
KyAgICBjbGllbnQuc2V0U2NoZWR1bGVyKHNjaGVkdWxlci5nZXQoKSk7CisgICAgc2NoZWR1bGVy
LT5zZXRWaXNpYmxlKHRydWUpOworCisgICAgRVhQRUNUX0VRKDAsIGNvbnRyb2xsZXJQdHItPm51
bUZyYW1lc1BlbmRpbmcoKSk7CisKKyAgICBzY2hlZHVsZXItPnNldE5lZWRzUmVkcmF3KCk7Cisg
ICAgRVhQRUNUX1RSVUUoc2NoZWR1bGVyLT5yZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9U
UlVFKHRpbWVTb3VyY2UtPmFjdGl2ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgY2xpZW50Lm51bURy
YXdzKCkpOworCisgICAgLy8gRHJhdyBzdWNjZXNzZnVsbHksIHRoaXMgc3RhcnRzIGEgbmV3IGZy
YW1lLgorICAgIHRpbWVTb3VyY2UtPnRpY2soKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51
bURyYXdzKCkpOworICAgIEVYUEVDVF9FUSgxLCBjb250cm9sbGVyUHRyLT5udW1GcmFtZXNQZW5k
aW5nKCkpOworICAgIHNjaGVkdWxlci0+ZGlkU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpOworICAgIEVY
UEVDVF9FUSgwLCBjb250cm9sbGVyUHRyLT5udW1GcmFtZXNQZW5kaW5nKCkpOworCisgICAgc2No
ZWR1bGVyLT5zZXROZWVkc1JlZHJhdygpOworICAgIEVYUEVDVF9UUlVFKHNjaGVkdWxlci0+cmVk
cmF3UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfVFJVRSh0aW1lU291cmNlLT5hY3RpdmUoKSk7CisK
KyAgICAvLyBEcmF3IHN1Y2Nlc3NmdWxseSwgdGhpcyBzdGFydHMgYW5vdGhlciBmcmFtZS4KKyAg
ICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDIsIGNsaWVudC5udW1EcmF3cygp
KTsKKyAgICBFWFBFQ1RfRVEoMSwgY29udHJvbGxlclB0ci0+bnVtRnJhbWVzUGVuZGluZygpKTsK
KyAgICBzY2hlZHVsZXItPmRpZFN3YXBCdWZmZXJzQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEo
MCwgY29udHJvbGxlclB0ci0+bnVtRnJhbWVzUGVuZGluZygpKTsKKworICAgIHNjaGVkdWxlci0+
c2V0TmVlZHNSZWRyYXcoKTsKKyAgICBFWFBFQ1RfVFJVRShzY2hlZHVsZXItPnJlZHJhd1BlbmRp
bmcoKSk7CisgICAgRVhQRUNUX1RSVUUodGltZVNvdXJjZS0+YWN0aXZlKCkpOworCisgICAgLy8g
RmFpbCB0byBkcmF3LCB0aGlzIHNob3VsZCBub3Qgc3RhcnQgYSBmcmFtZS4KKyAgICBjbGllbnQu
c2V0RHJhd1N1Y2Nlc3MoZmFsc2UpOworICAgIHRpbWVTb3VyY2UtPnRpY2soKTsKKyAgICBFWFBF
Q1RfRVEoMywgY2xpZW50Lm51bURyYXdzKCkpOworICAgIEVYUEVDVF9FUSgwLCBjb250cm9sbGVy
UHRyLT5udW1GcmFtZXNQZW5kaW5nKCkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdENvbW1vbi5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3RDb21tb24uaAppbmRleCAzOWNmOWU0OTYz
MzgwODhkYmQ2NTQ1YzI1MmUxZDQxZWEwMGI5NDA1Li4wYzEwNTU4OGIxNDJmNzYxOTM3MjJlNjI4
OGUxOTg5NjUzYTk0OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDU2NoZWR1bGVyVGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NTY2hlZHVsZXJUZXN0Q29tbW9uLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNkZWZpbmUgQ0NT
Y2hlZHVsZXJUZXN0Q29tbW9uX2gKIAogI2luY2x1ZGUgImNjL0NDRGVsYXlCYXNlZFRpbWVTb3Vy
Y2UuaCIKKyNpbmNsdWRlICJjYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJj
Yy9DQ1RocmVhZC5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgpAQCAtMTIzLDYgKzEyNCwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgZG91YmxlIG1fbW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lOwogfTsKIAorY2xhc3MgRmFrZUNDRnJhbWVSYXRlQ29u
dHJvbGxlciA6IHB1YmxpYyBXZWJDb3JlOjpDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIgeworcHVibGlj
OgorICAgIEZha2VDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpDQ1Rp
bWVTb3VyY2U+IHRpbWVyKSA6IFdlYkNvcmU6OkNDRnJhbWVSYXRlQ29udHJvbGxlcih0aW1lcikg
eyB9CisKKyAgICBpbnQgbnVtRnJhbWVzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtRnJh
bWVzUGVuZGluZzsgfQorfTsKKwogfQogCiAjZW5kaWYgLy8gQ0NTY2hlZHVsZXJUZXN0Q29tbW9u
X2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133378</attachid>
            <date>2012-03-22 16:09:29 -0700</date>
            <delta_ts>2012-03-22 18:51:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81716-20120322190927.patch</filename>
            <type>text/plain</type>
            <size>50032</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZkZTIyNWIxZDI5NzM1
NWY4MWZhNzI1NjA1MzQ4NjBlNzlmOTYzMS4uYWIxYjA3MWIxNTkxYzc3ZDkzNmE0OTg5OTlhNjEw
ZDUxMjg2Y2Y3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAzLTIyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU2tp
cCBmcmFtZXMgd2hlbiBjaGVja2VyYm9hcmRpbmcgYW4gYW5pbWF0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTcxNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBzdG9wIGRyYXdpbmcg
ZnJhbWVzIHdoZW4gcHJlcGFyZVRvRHJhdyBmYWlscywgaWYgdGhlIGRyYXcgaXMKKyAgICAgICAg
bm90IGZvcmNlZC4gVGhlIGV4cGVjdGVkIGJlaGF2aW91ciBpcyBvdXRsaW5lZCBiZWxvdyBieSB0
aGUgdW5pdCB0ZXN0cy4KKworICAgICAgICBXaGVuIGEgZHJhdyBmYWlscywgd2U6CisgICAgICAg
IDEuIFNldCBtX25lZWRzUmVkcmF3IHRvIHRyeSBhZ2FpbiBuZXh0IHZzeW5jCisgICAgICAgIDIu
IFNldCBtX25lZWRzQ29tbWl0IGJlY2F1c2Ugd2UgbmVlZCBtb3JlIGRhdGEgZnJvbSB3ZWJraXQg
dG8gc3VjY2VlZAorICAgICAgICAzLiBTZXQgbV9kcmF3SWZQb3NzaWJsZUZhaWxlZC4gVGhpcyBh
bGxvd3MgdXMgdG8gdHJ5IGRyYXcgYWdhaW4gd2l0aGluCisgICAgICAgIHRoZSBzYW1lIHZzeW5j
ICppZiogYSBjb21taXQgZmluaXNoZXMgZHVyaW5nIHRoaXMgdGltZS4KKworICAgICAgICBVbml0
IHRlc3Q6IENDU2NoZWR1bGVyVGVzdC5SZXF1ZXN0UmVkcmF3SW5zaWRlRmFpbGVkRHJhdworICAg
ICAgICAgICAgICAgICAgIENDU2NoZWR1bGVyVGVzdC5SZXF1ZXN0Q29tbWl0SW5zaWRlRmFpbGVk
RHJhdworICAgICAgICAgICAgICAgICAgIENDU2NoZWR1bGVyVGVzdC5Ob0JlZ2luRnJhbWVXaGVu
RHJhd0ZhaWxzCisgICAgICAgICAgICAgICAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LlRlc3RGYWlsZWREcmF3U2V0c05lZWRzQ29tbWl0QW5kRG9lc05vdERyYXdBZ2FpbgorICAgICAg
ICAgICAgICAgICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5UZXN0U2V0TmVlZHNSZWRy
YXdEdXJpbmdGYWlsZWREcmF3RG9lc05vdFJlbW92ZU5lZWRzUmVkcmF3CisgICAgICAgICAgICAg
ICAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LlRlc3RDb21taXRBZnRlckZhaWxlZERy
YXdBbGxvd3NEcmF3SW5TYW1lRnJhbWUKKyAgICAgICAgICAgICAgICAgICBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QuVGVzdENvbW1pdEFmdGVyRmFpbGVkQW5kU3VjY2Vzc2Z1bERyYXdEb2Vz
Tm90QWxsb3dEcmF3SW5TYW1lRnJhbWUKKyAgICAgICAgICAgICAgICAgICBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QuVGVzdEZhaWxlZERyYXdJc1JldHJpZWROZXh0VlN5bmMKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVy
UGFzc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnByZXBhcmVU
b0RyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaDoKKyAgICAgICAg
KENDU2NoZWR1bGVyQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpkaWREcmF3SWZQb3NzaWJsZUNvbXBs
ZXRlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oOgorICAgICAgICAoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2No
ZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2Fw
SWZQb3NzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRB
Y3Rpb25EcmF3QW5kU3dhcEZvcmNlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoQ0NUaHJlYWRQcm94eSk6CisKIDIw
MTItMDMtMjIgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4K
IAogICAgICAgICBUaWxlZEJhY2tpbmdTdG9yZTogRml4IHRlc3QgcmVncmVzc2lvbnMgdGhhdCBh
cHBlYXJlZCB3aXRoIHIxMTE1NjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGFhMWY4
ODgxY2Q2MTdhM2EwYTg1MmVmZTZhNzFiYzU0YzFmYzgxNGMuLjEzODgxZGJiZGYwYjQ4ZmVkMTBm
NDU3MjBiYzhhZmIyMDE2OTMyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzggQEAKKzIwMTItMDMtMjIgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW2Nocm9taXVtXSBTa2lwIGZyYW1lcyB3aGVuIGNoZWNrZXJib2FyZGluZyBh
biBhbmltYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgxNzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRU
ZXN0czo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiB0ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OkZha2VDQ1NjaGVkdWxlckNsaWVudDo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZh
a2VDQ1NjaGVkdWxlckNsaWVudDo6bnVtRHJhd3MpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZh
a2VDQ1NjaGVkdWxlckNsaWVudDo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxl
KToKKyAgICAgICAgKEZha2VDQ1NjaGVkdWxlckNsaWVudCk6CisgICAgICAgIChXZWJLaXRUZXN0
czo6RmFrZUNDU2NoZWR1bGVyQ2xpZW50OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZvcmNl
ZCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUNDU2NoZWR1bGVyQ2xpZW50OjpzZXREcmF3
U3VjY2Vzcyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVCk6CisgICAgICAgIChXZWJLaXRU
ZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXc6OlNjaGVkdWxl
ckNsaWVudFRoYXRTZXROZWVkc0RyYXdJbnNpZGVEcmF3KToKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdzo6c2NoZWR1bGVkQWN0
aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpTY2hlZHVs
ZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdzo6c2NoZWR1bGVkQWN0aW9uRHJhd0Fu
ZFN3YXBGb3JjZWQpOgorICAgICAgICAoU2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0lu
c2lkZURyYXcpOgorICAgICAgICAoV2ViS2l0VGVzdHMpOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OlNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0NvbW1pdEluc2lkZURyYXc6OlNjaGVkdWxlckNs
aWVudFRoYXRTZXROZWVkc0NvbW1pdEluc2lkZURyYXcpOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OlNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0NvbW1pdEluc2lkZURyYXc6OnNjaGVkdWxlZEFj
dGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6U2NoZWR1
bGVyQ2xpZW50VGhhdFNldE5lZWRzQ29tbWl0SW5zaWRlRHJhdzo6c2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXBGb3JjZWQpOgorICAgICAgICAoU2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzQ29t
bWl0SW5zaWRlRHJhdyk6CisgICAgICAgICogdGVzdHMvQ0NTY2hlZHVsZXJUZXN0Q29tbW9uLmg6
CisgICAgICAgIChGYWtlQ0NGcmFtZVJhdGVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdFRl
c3RzOjpGYWtlQ0NGcmFtZVJhdGVDb250cm9sbGVyOjpGYWtlQ0NGcmFtZVJhdGVDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlQ0NGcmFtZVJhdGVDb250cm9sbGVyOjpudW1G
cmFtZXNQZW5kaW5nKToKKyAgICAgICAgKFdlYktpdFRlc3RzKToKKwogMjAxMi0wMy0yMiAgQmVy
bmhhcmQgQmF1ZXIgIDxiYXVlcmJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIFBs
dWctaW4gZmFpbGluZyB0byBsb2FkIHNob3VsZG4ndCBzYXkgIk1pc3NpbmcgUGx1Zy1pbiIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggNDQzYTFmZmFhNzdiYTBl
ZTUyMDI5ZGYwZTNhYjE0OTY3ZjRjNTJkYi4uNjFjMDhiNTg1MWE0OGZjZjA0YTNkZWJjNDAxM2Y2
OGFkMDhjMzNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAg
LTI3NSw3ICsyNzUsOSBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRl
clBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNzZXMsIENDTGF5ZQogICAgIC8vIEFkZCBxdWFk
cyB0byB0aGUgUmVuZGVyIHBhc3NlcyBpbiBGcm9udFRvQmFjayBvcmRlciB0byBhbGxvdyBmb3Ig
dGVzdGluZyBvY2NsdXNpb24gYW5kIHBlcmZvcm1pbmcgY3VsbGluZyBkdXJpbmcgdGhlIHRyZWUg
d2Fsay4KICAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwgVmVjdG9yPEND
TGF5ZXJJbXBsKj4sIENDUmVuZGVyU3VyZmFjZSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJv
bnRUb0JhY2s+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKLSAgICAvLyBJZiB3ZSBhcmUgdW5hYmxl
IHRvIGRyYXcgYW4gYW5pbWF0aW9uIG9uIHNvbWUgbGF5ZXIsIHRoZW4gd2UgYWJvcnQgdGhlIGVu
dGlyZSBmcmFtZS4KKyAgICAvLyBUeXBpY2FsbHkgd2hlbiB3ZSBhcmUgbWlzc2luZyBhIHRleHR1
cmUgYW5kIHVzZSBhIGNoZWNrZXJib2FyZCBxdWFkLCB3ZSBzdGlsbCBkcmF3IHRoZSBmcmFtZS4g
SG93ZXZlciB3aGVuIHRoZSBsYXllciBiZWluZworICAgIC8vIGNoZWNrZXJib2FyZGVkIGlzIG1v
dmluZyBkdWUgdG8gYW4gaW1wbC1hbmltYXRpb24sIHdlIGRyb3AgdGhlIGZyYW1lIHRvIGF2b2lk
IGZsYXNoaW5nIGR1ZSB0byB0aGUgdGV4dHVyZSBzdWRkZW5seSBhcHBlYXJpbmcKKyAgICAvLyBp
biB0aGUgZnV0dXJlLgogICAgIGJvb2wgZHJhd0ZyYW1lID0gdHJ1ZTsKIAogICAgIENDTGF5ZXJJ
dGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZyZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0KTsKQEAgLTMwNiwxMCArMzA4LDggQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYgcGFzc2VzLCBDQ0xheWUK
ICAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JMYXllcigqaXQsICZvY2NsdXNpb25UcmFja2Vy
LCB1c2VkQ2hlY2tlcmJvYXJkKTsKICAgICAgICAgaWYgKHVzZWRDaGVja2VyYm9hcmQpIHsKICAg
ICAgICAgICAgIGJvb2wgbGF5ZXJIYXNBbmltYXRpbmdUcmFuc2Zvcm0gPSBpdC0+c2NyZWVuU3Bh
Y2VUcmFuc2Zvcm1Jc0FuaW1hdGluZygpIHx8IGl0LT5kcmF3VHJhbnNmb3JtSXNBbmltYXRpbmco
KTsKLSAgICAgICAgICAgIGlmIChsYXllckhhc0FuaW1hdGluZ1RyYW5zZm9ybSkgeworICAgICAg
ICAgICAgaWYgKGxheWVySGFzQW5pbWF0aW5nVHJhbnNmb3JtKQogICAgICAgICAgICAgICAgIGRy
YXdGcmFtZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcigqaXQpOwpAQCAtMzY3LDExICszNjcsOCBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6
OnByZXBhcmVUb0RyYXcoRnJhbWVEYXRhJiBmcmFtZSkKICAgICBpZiAoIXJvb3RMYXllcigpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWNhbGN1bGF0ZVJlbmRlclBhc3Nlcyhm
cmFtZS5yZW5kZXJQYXNzZXMsIGZyYW1lLnJlbmRlclN1cmZhY2VMYXllckxpc3QpKSB7Ci0gICAg
ICAgIGZyYW1lLnJlbmRlclBhc3Nlcy5jbGVhcigpOwotICAgICAgICBmcmFtZS5yZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LmNsZWFyKCk7CisgICAgaWYgKCFjYWxjdWxhdGVSZW5kZXJQYXNzZXMoZnJh
bWUucmVuZGVyUGFzc2VzLCBmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIC8vIElmIHdlIHJldHVybiB0cnVlLCB0aGVuIHdl
IGV4cGVjdCBkcmF3TGF5ZXJzKCkgdG8gYmUgY2FsbGVkIGJlZm9yZSB0aGlzIGZ1bmN0aW9uIGlz
IGNhbGxlZCBhZ2Fpbi4KICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuaAppbmRleCBlMGM2ZTczYTMzNDIwZGQ0N2QwOTU0Mjg2MmNiOWE0OGEwYWQxY2Iw
Li4wMmU5YjEwMzc3NGVmNWViNDQ4YzQ2YjVhMTk2ZmNkNWQzNTFjY2QwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC04OCw2ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgYmVnaW5Db21taXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxl
dGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShkb3VibGUgbW9ub3RvbmljVGltZSwgZG91
YmxlIHdhbGxDbG9ja1RpbWUpOworICAgIC8vIFJldHVybnMgZmFsc2UgaWYgcHJvYmxlbXMgb2Nj
dXJlZCBwcmVwYXJpbmcgdGhlIGZyYW1lLCBhbmQgd2Ugc2hvdWxkIHRyeSB0byBhdm9pZCBkaXNw
bGF5aW5nIHRoZSBmcmFtZS4KICAgICB2aXJ0dWFsIGJvb2wgcHJlcGFyZVRvRHJhdyhGcmFtZURh
dGEmKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVycyhjb25zdCBGcmFtZURhdGEmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXIuY3BwCmluZGV4IDYxYmQ5MzEzZjU0YmNlMmIwYmRkZWE4NTQ2NDc5
YTMwYTJlNTJhNjQuLjEzYjc0MWVhOGMzZmY0OGM4NzZjYzcyY2I2YTRlMGFkYTNjYjJmYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKQEAgLTE2Miw4ICsxNjIsMTUgQEAgdm9pZCBDQ1NjaGVk
dWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKQogICAgICAgICBjYXNlIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlUOgogICAgICAgICAgICAgbV9jbGllbnQtPnNjaGVk
dWxlZEFjdGlvbkNvbW1pdCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXOgotICAgICAgICAgICAgbV9jbGllbnQt
PnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCk7CisgICAgICAgIGNhc2UgQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFOiB7CisgICAgICAgICAgICBib29s
IGRyYXdTdWNjZXNzID0gbV9jbGllbnQtPnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3Nz
aWJsZSgpOworICAgICAgICAgICAgbV9zdGF0ZU1hY2hpbmUuZGlkRHJhd0lmUG9zc2libGVDb21w
bGV0ZWQoZHJhd1N1Y2Nlc3MpOworICAgICAgICAgICAgaWYgKGRyYXdTdWNjZXNzKQorICAgICAg
ICAgICAgICAgIG1fZnJhbWVSYXRlQ29udHJvbGxlci0+ZGlkQmVnaW5GcmFtZSgpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0RSQVdfRk9SQ0VEOgorICAgICAgICAgICAgbV9jbGllbnQtPnNjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwRm9yY2VkKCk7CiAgICAgICAgICAgICBtX2ZyYW1lUmF0ZUNvbnRy
b2xsZXItPmRpZEJlZ2luRnJhbWUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fQ09OVEVYVF9SRUNSRUFUSU9O
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmgKaW5kZXggOGVmNWRjZjcyYzI3MGEzYTZjODE0N2U0MDcyMDU5
MmU4NzFkNjZlNC4uYzg3NmUyMGJjODc3OGRjNzlhZjM4OWMwYjlhOWNiYzNhY2JhNjk2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlci5oCkBAIC00MSw3ICs0MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZvcmNlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVs
ZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCmluZGV4IGYzN2YwYjQxN2IzZWVkNTdmMjBjY2Nl
MzE1ZDY5MDNlZDlhN2E4ZDYuLjFjOTQyZTM0M2M3NzcxOWI2M2U2ZDNmMDliMTJiMDVkZWUwMDFi
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKQEAg
LTQwLDYgKzQwLDcgQEAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lKCkKICAgICAsIG1faW5zaWRlVlN5bmMoZmFsc2UpCiAgICAgLCBtX3Zpc2libGUoZmFs
c2UpCiAgICAgLCBtX2NhbkRyYXcodHJ1ZSkKKyAgICAsIG1fZHJhd0lmUG9zc2libGVGYWlsZWQo
ZmFsc2UpCiAgICAgLCBtX2NvbnRleHRTdGF0ZShDT05URVhUX0FDVElWRSkKIHsKIH0KQEAgLTcx
LDExICs3MiwxMCBAQCBib29sIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzaG91bGREcmF3KCkg
Y29uc3QKIAogQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6bmV4dEFjdGlvbigpIGNvbnN0CiB7Ci0KICAgICBzd2l0Y2ggKG1fY29tbWl0U3Rh
dGUpIHsKICAgICBjYXNlIENPTU1JVF9TVEFURV9JRExFOgogICAgICAgICBpZiAobV9jb250ZXh0
U3RhdGUgIT0gQ09OVEVYVF9BQ1RJVkUgJiYgbV9uZWVkc0ZvcmNlZFJlZHJhdykKLSAgICAgICAg
ICAgIHJldHVybiBBQ1RJT05fRFJBVzsKKyAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBV19G
T1JDRUQ7CiAgICAgICAgIGlmIChtX2NvbnRleHRTdGF0ZSAhPSBDT05URVhUX0FDVElWRSAmJiBt
X25lZWRzRm9yY2VkQ29tbWl0KQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9GUkFN
RTsKICAgICAgICAgaWYgKG1fY29udGV4dFN0YXRlID09IENPTlRFWFRfTE9TVCkKQEAgLTgzLDE5
ICs4MywxOSBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpuZXh0QWN0aW9uKCkgY29uc3QKICAgICAgICAgaWYgKG1fY29udGV4dFN0YXRl
ID09IENPTlRFWFRfUkVDUkVBVElORykKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsK
ICAgICAgICAgaWYgKHNob3VsZERyYXcoKSkKLSAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJB
VzsKKyAgICAgICAgICAgIHJldHVybiBtX25lZWRzRm9yY2VkUmVkcmF3ID8gQUNUSU9OX0RSQVdf
Rk9SQ0VEIDogQUNUSU9OX0RSQVdfSUZfUE9TU0lCTEU7CiAgICAgICAgIGlmIChtX25lZWRzQ29t
bWl0ICYmIChtX3Zpc2libGUgfHwgbV9uZWVkc0ZvcmNlZENvbW1pdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gQUNUSU9OX0JFR0lOX0ZSQU1FOwogICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAK
ICAgICBjYXNlIENPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUzoKICAgICAgICAgaWYgKHNo
b3VsZERyYXcoKSkKLSAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKKyAgICAgICAgICAg
IHJldHVybiBtX25lZWRzRm9yY2VkUmVkcmF3ID8gQUNUSU9OX0RSQVdfRk9SQ0VEIDogQUNUSU9O
X0RSQVdfSUZfUE9TU0lCTEU7CiAgICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsKIAogICAgIGNh
c2UgQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzoKICAgICAgICAgaWYgKHNob3VsZERy
YXcoKSkKLSAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKKyAgICAgICAgICAgIHJldHVy
biBtX25lZWRzRm9yY2VkUmVkcmF3ID8gQUNUSU9OX0RSQVdfRk9SQ0VEIDogQUNUSU9OX0RSQVdf
SUZfUE9TU0lCTEU7CiAgICAgICAgIGlmICghbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZykK
ICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTOwog
ICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CkBAIC0xMDUsNyArMTA1LDcgQEAgQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlv
bigpIGNvbnN0CiAKICAgICBjYXNlIENPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFX
OgogICAgICAgICBpZiAoc2hvdWxkRHJhdygpIHx8IG1fY29udGV4dFN0YXRlID09IENPTlRFWFRf
TE9TVCkKLSAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKKyAgICAgICAgICAgIHJldHVy
biBtX25lZWRzRm9yY2VkUmVkcmF3ID8gQUNUSU9OX0RSQVdfRk9SQ0VEIDogQUNUSU9OX0RSQVdf
SUZfUE9TU0lCTEU7CiAgICAgICAgIC8vIENPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9E
UkFXIHdhbnRzIHRvIGVuZm9yY2UgYSBkcmF3LiBJZiBtX2NhbkRyYXcgaXMgZmFsc2UsCiAgICAg
ICAgIC8vIHByb2NlZWQgdG8gdGhlIG5leHQgc3RlcCAoc2ltaWxhciBhcyBpbiBDT01NSVRfU1RB
VEVfSURMRSkuCiAgICAgICAgIGlmICghbV9jYW5EcmF3ICYmIG1fbmVlZHNDb21taXQgJiYgKG1f
dmlzaWJsZSB8fCBtX25lZWRzRm9yY2VkQ29tbWl0KSkKQEAgLTE0MCwxMSArMTQwLDE1IEBAIHZv
aWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKEFjdGlvbiBhY3Rpb24pCiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfSURM
RTsKICAgICAgICAgbV9uZWVkc1JlZHJhdyA9IHRydWU7CisgICAgICAgIGlmIChtX2RyYXdJZlBv
c3NpYmxlRmFpbGVkKQorICAgICAgICAgICAgbV9sYXN0RnJhbWVOdW1iZXJXaGVyZURyYXdXYXND
YWxsZWQgPSAtMTsKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2FzZSBBQ1RJT05fRFJBVzoKKyAg
ICBjYXNlIEFDVElPTl9EUkFXX0ZPUkNFRDoKKyAgICBjYXNlIEFDVElPTl9EUkFXX0lGX1BPU1NJ
QkxFOgogICAgICAgICBtX25lZWRzUmVkcmF3ID0gZmFsc2U7CiAgICAgICAgIG1fbmVlZHNGb3Jj
ZWRSZWRyYXcgPSBmYWxzZTsKKyAgICAgICAgbV9kcmF3SWZQb3NzaWJsZUZhaWxlZCA9IGZhbHNl
OwogICAgICAgICBpZiAobV9pbnNpZGVWU3luYykKICAgICAgICAgICAgIG1fbGFzdEZyYW1lTnVt
YmVyV2hlcmVEcmF3V2FzQ2FsbGVkID0gbV9jdXJyZW50RnJhbWVOdW1iZXI7CiAgICAgICAgIGlm
IChtX2NvbW1pdFN0YXRlID09IENPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXKSB7
CkBAIC0xOTksNiArMjAzLDE1IEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldE5l
ZWRzRm9yY2VkUmVkcmF3KCkKICAgICBtX25lZWRzRm9yY2VkUmVkcmF3ID0gdHJ1ZTsKIH0KIAor
dm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6ZGlkRHJhd0lmUG9zc2libGVDb21wbGV0ZWQo
Ym9vbCBzdWNjZXNzKQoreworICAgIG1fZHJhd0lmUG9zc2libGVGYWlsZWQgPSAhc3VjY2VzczsK
KyAgICBpZiAobV9kcmF3SWZQb3NzaWJsZUZhaWxlZCkgeworICAgICAgICBtX25lZWRzUmVkcmF3
ID0gdHJ1ZTsKKyAgICAgICAgbV9uZWVkc0NvbW1pdCA9IHRydWU7CisgICAgfQorfQorCiB2b2lk
IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXROZWVkc0NvbW1pdCgpCiB7CiAgICAgbV9uZWVk
c0NvbW1pdCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUu
aAppbmRleCA2MWJlYzM5NGVjZTgwOTUzY2FkOWQ1YmE4YmYzMDY2OTVjMGUxZjgxLi4yZWNmZDFj
ZDA2ZDUwOGFlMWZlNjFmNjgzOTIxNjgxYWZkY2ViODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKQEAgLTY5LDcgKzY5LDggQEAgcHVibGljOgogICAgICAg
ICBBQ1RJT05fQkVHSU5fRlJBTUUsCiAgICAgICAgIEFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9S
RVNPVVJDRVMsCiAgICAgICAgIEFDVElPTl9DT01NSVQsCi0gICAgICAgIEFDVElPTl9EUkFXLAor
ICAgICAgICBBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwKKyAgICAgICAgQUNUSU9OX0RSQVdfRk9S
Q0VELAogICAgICAgICBBQ1RJT05fQkVHSU5fQ09OVEVYVF9SRUNSRUFUSU9OCiAgICAgfTsKICAg
ICBBY3Rpb24gbmV4dEFjdGlvbigpIGNvbnN0OwpAQCAtOTUsNiArOTYsOSBAQCBwdWJsaWM6CiAg
ICAgLy8gd2UgYXJlIG5vdCB2aXNpYmxlLgogICAgIHZvaWQgc2V0TmVlZHNGb3JjZWRSZWRyYXco
KTsKIAorICAgIC8vIEluZGljYXRlcyB3aGV0aGVyIEFDVElPTl9EUkFXX0lGX1BPU1NJQkxFIGRy
ZXcgdG8gdGhlIHNjcmVlbiBvciBub3QuCisgICAgdm9pZCBkaWREcmF3SWZQb3NzaWJsZUNvbXBs
ZXRlZChib29sIHN1Y2Nlc3MpOworCiAgICAgLy8gSW5kaWNhdGVzIHRoYXQgYSBuZXcgY29tbWl0
IGZsb3cgbmVlZHMgdG8gYmUgcGVyZm9ybWVkLCBlaXRoZXIgdG8gcHVsbAogICAgIC8vIHVwZGF0
ZXMgZnJvbSB0aGUgbWFpbiB0aHJlYWQgdG8gdGhlIGltcGwsIG9yIHRvIHB1c2ggZGVsdGFzIGZy
b20gdGhlIGltcGwKICAgICAvLyB0aHJlYWQgdG8gbWFpbi4KQEAgLTEyMiw2ICsxMjYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoKTsKIAogcHJvdGVjdGVkOgorICAg
IGJvb2wgc2hvdWxkRHJhd0ZvcmNlZCgpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkRHJhdygpIGNv
bnN0OwogICAgIGJvb2wgaGFzRHJhd25UaGlzRnJhbWUoKSBjb25zdDsKIApAQCAtMTM3LDYgKzE0
Miw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1faW5zaWRlVlN5bmM7CiAgICAgYm9vbCBtX3Zp
c2libGU7CiAgICAgYm9vbCBtX2NhbkRyYXc7CisgICAgYm9vbCBtX2RyYXdJZlBvc3NpYmxlRmFp
bGVkOwogICAgIENvbnRleHRTdGF0ZSBtX2NvbnRleHRTdGF0ZTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKaW5kZXggZTQxNzNhOGFkNjExM2Y3ZWRjNGI5MDJhYjBhN2Y4NTA4NjNh
MTQ1Zi4uMGM1N2UyYTRlOWM3Y2U3ZWM0ZWQ3MjU2NDNiNGIyYTgyY2E1ZTcyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTU0MiwxMiArNTQyLDEzIEBAIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbigpCiAgICAgbV9tYWlu
VGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQ
cm94eTo6YmVnaW5Db250ZXh0UmVjcmVhdGlvbikpOwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6
OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkKK2Jvb2wgQ0NUaHJlYWRQcm94eTo6c2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlcm5hbChib29sIGZvcmNlZERyYXcpCiB7CiAgICAgVFJB
Q0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwIiwgdGhp
cywgMCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9sYXllclRy
ZWVIb3N0SW1wbCk7CiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKQotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEZJWE1FOiBjb21wdXRlIHRoZSBm
cmFtZSBkaXNwbGF5IHRpbWUgbW9yZSBpbnRlbGxpZ2VudGx5CiAgICAgZG91YmxlIG1vbm90b25p
Y1RpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKQEAgLTU1NiwyMSArNTU3LDI1
IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoKQogICAg
IG1faW5wdXRIYW5kbGVyT25JbXBsVGhyZWFkLT5hbmltYXRlKG1vbm90b25pY1RpbWUpOwogICAg
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmFuaW1hdGUobW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGlt
ZSk7CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOwotICAgIG1fbGF5
ZXJUcmVlSG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpOwotICAgIG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOworICAgIGJvb2wgZHJhd0ZyYW1lID0gbV9sYXllclRy
ZWVIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkgfHwgZm9yY2VkRHJhdzsKKyAgICBpZiAo
ZHJhd0ZyYW1lKQorICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1l
KTsKIAogICAgIC8vIENoZWNrIGZvciBhIHBlbmRpbmcgY29tcG9zaXRlQW5kUmVhZGJhY2suCiAg
ICAgaWYgKG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkKSB7CisgICAgICAgIEFTU0VSVChk
cmF3RnJhbWUpOyAvLyBUaGlzIHNob3VsZCBiZSBhIGZvcmNlZERyYXcKICAgICAgICAgbV9sYXll
clRyZWVIb3N0SW1wbC0+cmVhZGJhY2sobV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPnBp
eGVscywgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPnJlY3QpOwogICAgICAgICBtX3Jl
YWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+c3VjY2VzcyA9ICFtX2xheWVyVHJlZUhvc3RJbXBs
LT5pc0NvbnRleHRMb3N0KCk7CiAgICAgICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFk
LT5jb21wbGV0aW9uLnNpZ25hbCgpOwogICAgICAgICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRo
cmVhZCA9IDA7CiAgICAgfQogCi0gICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMo
KTsKKyAgICBpZiAoZHJhd0ZyYW1lKQorICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zd2Fw
QnVmZmVycygpOwogCiAgICAgLy8gUHJvY2VzcyBhbnkgZmluaXNoIHJlcXVlc3QKICAgICBpZiAo
bV9maW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpIHsKKyAgICAg
ICAgQVNTRVJUKGRyYXdGcmFtZSk7IC8vIFRoaXMgc2hvdWxkIGJlIGEgZm9yY2VkRHJhdwogICAg
ICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5maW5pc2hBbGxSZW5kZXJpbmcoKTsKICAgICAgICAg
bV9maW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQtPnNpZ25hbCgp
OwogICAgICAgICBtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9uSW1wbFRocmVh
ZCA9IDA7CkBAIC01ODEsNiArNTg2LDE5IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVk
QWN0aW9uRHJhd0FuZFN3YXAoKQogICAgICAgICBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRG
cmFtZU9uSW1wbFRocmVhZCA9IGZhbHNlOwogICAgICAgICBtX21haW5UaHJlYWRQcm94eS0+cG9z
dFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpkaWRDb21taXRB
bmREcmF3RnJhbWUpKTsKICAgICB9CisKKyAgICBBU1NFUlQoZHJhd0ZyYW1lIHx8ICghZHJhd0Zy
YW1lICYmICFmb3JjZWREcmF3KSk7CisgICAgcmV0dXJuIGRyYXdGcmFtZTsKK30KKworYm9vbCBD
Q1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUoKQorewor
ICAgIHJldHVybiBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGVybmFsKGZhbHNlKTsKK30K
Kwordm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZvcmNlZCgp
Cit7CisgICAgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlcm5hbCh0cnVlKTsKIH0KIAog
dm9pZCBDQ1RocmVhZFByb3h5OjpkaWRDb21taXRBbmREcmF3RnJhbWUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5oCmluZGV4IGU3YmFkYTY0MDZmYWRhMzU5YTNhODE5YzlkZjNmMWY1ZDhmMTBlYmQu
LjQ4NjFmNzkwOTI2MDFjMDA1YTA1MDUyMGQ1NDdlZDIxY2RmOWQ3YTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmgKQEAgLTgxLDcgKzgxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBj
YW5EcmF3KCk7CiAgICAgdmlydHVhbCBib29sIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25z
dDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpOwotICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpOworICAgIHZpcnR1YWwgYm9v
bCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBGb3JjZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpOwogICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZWRBY3Rpb25Db21taXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9u
QmVnaW5Db250ZXh0UmVjcmVhdGlvbigpOwpAQCAtMTI1LDYgKzEyNiw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50
Kik7CiAgICAgdm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdlT25JbXBsVGhyZWFkKCk7CiAgICAg
dm9pZCByZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBHcmFw
aGljc0NvbnRleHQzRCosIGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzKik7CisgICAgYm9vbCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGVybmFs
KGJvb2wgZm9yY2VkRHJhdyk7CiAKICAgICAvLyBBY2Nlc3NlZCBvbiBtYWluIHRocmVhZCBvbmx5
LgogICAgIGJvb2wgbV9hbmltYXRlUmVxdWVzdGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBhNTdi
NWIzNzk1ZTRjYzczNzE5MmQ5MmQwMmQzYWY5YTU5YjQ5ODMyLi5lYTk4NzU4MjE1MTRlYWY4ZDQz
ZjcwMzRhMTJkMjVlZDYwZjM5M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtNTQ0LDEzICs1NDQs
MTQgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwcmVwYXJlVG9EcmF3RmFpbHNX
aGVuQW5pbWF0aW9uVXNlc0NoZWNrZXJib2FyZCkKICAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBs
LT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFt
ZSk7CiAKLSAgICAvLyBXaGVuIGEgdGV4dHVyZSBpcyBtaXNzaW5nIGFuZCB3ZSdyZSBhbmltYXRp
bmcsIHdlIGRvbid0IGRyYXcgYW55dGhpbmcuCisgICAgLy8gV2hlbiBhIHRleHR1cmUgaXMgbWlz
c2luZyBhbmQgd2UncmUgYW5pbWF0aW5nLCB3ZSBkb24ndCB3YW50IHRvIGRyYXcgYW55dGhpbmcu
CiAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUo
MCkpOwogICAgIHJvb3QgPSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXllcio+KG1faG9zdElt
cGwtPnJvb3RMYXllcigpKTsKICAgICByb290LT5hZGRDaGlsZChNaXNzaW5nVGV4dHVyZUFuaW1h
dGluZ0xheWVyOjpjcmVhdGUoMSwgdHJ1ZSwgZmFsc2UsIHRydWUpKTsKICAgICBsYXllciA9IHN0
YXRpY19jYXN0PE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXIqPihyb290LT5jaGlsZHJlbigp
WzBdLmdldCgpKTsKIAogICAgIEVYUEVDVF9GQUxTRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3
KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAKICAgICAvLyBX
aGVuIHRoZSBsYXllciBza2lwcyBkcmF3IGFuZCB3ZSdyZSBhbmltYXRpbmcsIHdlIHN0aWxsIGRy
YXcgdGhlIGZyYW1lLgogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihEaWREcmF3Q2hlY2tM
YXllcjo6Y3JlYXRlKDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAppbmRleCBlYTZiOTI3ZTUz
OTQ1MGYxZDBiYWNiYTQxNzE5MjNlNzdjYWRiZmNjLi5lNGE1ZDdjOTU5NDRiOTRkNjUzYzE0MTE5
NTZiOWMyOWNjZWQ0NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCkBAIC0xMTksNiArMTE5
LDE3NSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldEZvcmNlZFJl
ZHJhd0RvZXNOb3RTZXRzTm9ybWFsUmVkcmF3KQogICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5j
Q2FsbGJhY2tOZWVkZWQoKSk7CiB9CiAKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0RmFpbGVkRHJhd1NldHNOZWVkc0NvbW1pdEFuZERvZXNOb3REcmF3QWdhaW4pCit7Cisg
ICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0
cnVlKTsKKyAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdygpOworICAgIEVYUEVDVF9UUlVFKHN0YXRl
LnJlZHJhd1BlbmRpbmcoKSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUudnN5bmNDYWxsYmFja05l
ZWRlZCgpKTsKKyAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CisKKyAgICAvLyBXZSdyZSBkcmF3
aW5nIG5vdy4KKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9E
UkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0
YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSk7Cisg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUu
bmV4dEFjdGlvbigpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUucmVkcmF3UGVuZGluZygpKTsK
KyAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUuY29tbWl0UGVuZGluZygpKTsKKworICAgIC8vIEZhaWxp
bmcgdGhlIGRyYXcgbWFrZXMgdXMgcmVxdWlyZSBhIGNvbW1pdC4KKyAgICBzdGF0ZS5kaWREcmF3
SWZQb3NzaWJsZUNvbXBsZXRlZChmYWxzZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAg
c3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9G
UkFNRSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBF
Q1RfVFJVRShzdGF0ZS5jb21taXRQZW5kaW5nKCkpOworfQorCitURVNUKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdCwgVGVzdFNldE5lZWRzUmVkcmF3RHVyaW5nRmFpbGVkRHJhd0RvZXNOb3RS
ZW1vdmVOZWVkc1JlZHJhdykKK3sKKyAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSBzdGF0ZTsK
KyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KCk7
CisgICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfVFJV
RShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOworICAgIHN0YXRlLmRpZEVudGVyVlN5bmMo
KTsKKworICAgIC8vIFdlJ3JlIGRyYXdpbmcgbm93LgorICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24o
KSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9EUkFXX0lGX1BPU1NJQkxFKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9GQUxTRShz
dGF0ZS5yZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5jb21taXRQZW5k
aW5nKCkpOworCisgICAgLy8gV2hpbGUgc3RpbGwgaW4gdGhlIHNhbWUgdnN5bmMgY2FsbGJhY2ss
IHNldCBuZWVkcyByZWRyYXcgYWdhaW4uCisgICAgLy8gVGhpcyBzaG91bGQgbm90IHJlZHJhdy4K
KyAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBG
YWlsaW5nIHRoZSBkcmF3IG1ha2VzIHVzIHJlcXVpcmUgYSBjb21taXQuCisgICAgc3RhdGUuZGlk
RHJhd0lmUG9zc2libGVDb21wbGV0ZWQoZmFsc2UpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwor
ICAgIEVYUEVDVF9UUlVFKHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7Cit9CisKK1RFU1QoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29tbWl0QWZ0ZXJGYWlsZWREcmF3QWxsb3dzRHJh
d0luU2FtZUZyYW1lKQoreworICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lIHN0YXRlOworICAg
IHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisKKyAgICAvLyBTdGFydCBhIGNvbW1pdC4KKyAgICBz
dGF0ZS5zZXROZWVkc0NvbW1pdCgpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRl
LnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUp
OworICAgIEVYUEVDVF9UUlVFKHN0YXRlLmNvbW1pdFBlbmRpbmcoKSk7CisKKyAgICAvLyBUaGVu
IGluaXRpYXRlIGEgZHJhdy4KKyAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdygpOworICAgIEVYUEVD
VF9UUlVFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7CisgICAgc3RhdGUuZGlkRW50ZXJW
U3luYygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RS
QVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX1RSVUUoc3Rh
dGUucmVkcmF3UGVuZGluZygpKTsKKworICAgIC8vIEZhaWwgdGhlIGRyYXcuCisgICAgc3RhdGUu
dXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJ
QkxFKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05F
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLmRpZERyYXdJZlBvc3NpYmxlQ29tcGxl
dGVkKGZhbHNlKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS5yZWRyYXdQZW5kaW5nKCkpOworICAg
IC8vIEJ1dCB0aGUgY29tbWl0IGlzIG9uZ29pbmcuCisgICAgRVhQRUNUX1RSVUUoc3RhdGUuY29t
bWl0UGVuZGluZygpKTsKKworICAgIC8vIEZpbmlzaCB0aGUgY29tbWl0LgorICAgIHN0YXRlLmJl
Z2luRnJhbWVDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigp
KTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CisgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3Jl
UmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51
cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCk7CisgICAg
RVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKworICAgIC8vIEFuZCB3ZSBzaG91
bGQgYmUgYWxsb3dlZCB0byBkcmF3IGFnYWluLgorICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7
Cit9CisKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29tbWl0QWZ0ZXJG
YWlsZWRBbmRTdWNjZXNzZnVsRHJhd0RvZXNOb3RBbGxvd0RyYXdJblNhbWVGcmFtZSkKK3sKKyAg
ICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRy
dWUpOworCisgICAgLy8gU3RhcnQgYSBjb21taXQuCisgICAgc3RhdGUuc2V0TmVlZHNDb21taXQo
KTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9G
UkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FKTsKKyAgICBFWFBFQ1RfVFJVRShz
dGF0ZS5jb21taXRQZW5kaW5nKCkpOworCisgICAgLy8gVGhlbiBpbml0aWF0ZSBhIGRyYXcuCisg
ICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS52c3luY0Nh
bGxiYWNrTmVlZGVkKCkpOworICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7
CisKKyAgICAvLyBGYWlsIHRoZSBkcmF3LgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSk7CisgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigp
KTsKKyAgICBzdGF0ZS5kaWREcmF3SWZQb3NzaWJsZUNvbXBsZXRlZChmYWxzZSk7CisgICAgRVhQ
RUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKyAgICAvLyBCdXQgdGhlIGNvbW1pdCBp
cyBvbmdvaW5nLgorICAgIEVYUEVDVF9UUlVFKHN0YXRlLmNvbW1pdFBlbmRpbmcoKSk7CisKKyAg
ICAvLyBGb3JjZSBhIGRyYXcuCisgICAgc3RhdGUuc2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsKKyAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0ZPUkNFRCwg
c3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIERvIHRoZSBmb3JjZWQgZHJhdy4KKyAgICBz
dGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfRk9S
Q0VEKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05F
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5yZWRyYXdQZW5k
aW5nKCkpOworICAgIC8vIEFuZCB0aGUgY29tbWl0IGlzIHN0aWxsIG9uZ29pbmcuCisgICAgRVhQ
RUNUX1RSVUUoc3RhdGUuY29tbWl0UGVuZGluZygpKTsKKworICAgIC8vIEZpbmlzaCB0aGUgY29t
bWl0LgorICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywg
c3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CisgICAgc3Rh
dGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlv
bigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0NPTU1JVCk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKKwor
ICAgIC8vIEFuZCB3ZSBzaG91bGQgbm90IGJlIGFsbG93ZWQgdG8gZHJhdyBhZ2FpbiBpbiB0aGUg
c2FtZSBmcmFtZS4uCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKK30KKworVEVTVChDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QsIFRlc3RGYWlsZWREcmF3SXNSZXRyaWVkTmV4dFZTeW5jKQoreworICAgIEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7
CisKKyAgICAvLyBTdGFydCBhIGRyYXcuCisgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoKTsKKyAg
ICBFWFBFQ1RfVFJVRShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOworICAgIHN0YXRlLmRp
ZEVudGVyVlN5bmMoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9U
UlVFKHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7CisKKyAgICAvLyBGYWlsIHRoZSBkcmF3LgorICAg
IHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19J
Rl9QT1NTSUJMRSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS5kaWREcmF3SWZQb3NzaWJs
ZUNvbXBsZXRlZChmYWxzZSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygp
KTsKKworICAgIC8vIFdlIHNob3VsZCBub3QgYmUgdHJ5aW5nIHRvIGRyYXcgYWdhaW4gbm93LCBi
dXQgd2UgaGF2ZSBhIGNvbW1pdCBwZW5kaW5nLgorICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisg
ICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2Fs
bGJhY2tOZWVkZWQoKSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOworCisgICAgLy8gV2Ug
c2hvdWxkIHRyeSBkcmF3IGFnYWluIGluIHRoZSBuZXh0IHZzeW5jLgorICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5l
eHRBY3Rpb24oKSk7Cit9CisKIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0
RG9lc3REcmF3VHdpY2VJblNhbWVGcmFtZSkKIHsKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZSBzdGF0ZTsKQEAgLTEyNiw4ICsyOTUsOCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
VGVzdCwgVGVzdERvZXN0RHJhd1R3aWNlSW5TYW1lRnJhbWUpCiAgICAgc3RhdGUuc2V0TmVlZHNS
ZWRyYXcoKTsKICAgICBFWFBFQ1RfVFJVRShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOwog
ICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIHN0YXRlLnVw
ZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVyk7CisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwg
c3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUpOwogCiAgICAgLy8gV2hpbGUgc3Rp
bGwgaW4gdGhlIHNhbWUgdnN5bmMgY2FsbGJhY2ssIHNldCBuZWVkcyByZWRyYXcgYWdhaW4uCiAg
ICAgLy8gVGhpcyBzaG91bGQgbm90IHJlZHJhdy4KQEAgLTEzNSwxMiArMzA0LDE0IEBAIFRFU1Qo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RG9lc3REcmF3VHdpY2VJblNhbWVGcmFt
ZSkKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gTW92ZSB0byBhbm90aGVyIGZyYW1lLiBUaGlz
IHNob3VsZCBub3cgZHJhdy4KKyAgICBzdGF0ZS5kaWREcmF3SWZQb3NzaWJsZUNvbXBsZXRlZCh0
cnVlKTsKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiAgICAgRVhQRUNUX1RSVUUoc3RhdGUu
dnN5bmNDYWxsYmFja05lZWRlZCgpKTsKICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CiAKLSAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOwotICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fRFJBVyk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0
ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9T
U0lCTEUpOworICAgIHN0YXRlLmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGVkKHRydWUpOwogICAg
IEVYUEVDVF9GQUxTRShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOwogfQogCkBAIC0xNjEs
MTEgKzMzMiwxMSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRB
Y3Rpb25EcmF3c09uVlN5bmMpCiAKICAgICAgICAgICAgIC8vIENhc2UgMTogbmVlZHNDb21taXQ9
ZmFsc2UKICAgICAgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KGZhbHNlKTsKLSAgICAgICAg
ICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CisgICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAg
ICAgICAgICAgICAvLyBDYXNlIDI6IG5lZWRzQ29tbWl0PXRydWUKICAgICAgICAgICAgIHN0YXRl
LnNldE5lZWRzQ29tbWl0KHRydWUpOwotICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9T
U0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE3NCw3
ICszNDUsOCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rp
b25EcmF3c09uVlN5bmMpCiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCAyOyArK2op
IHsKICAgICAgICAgICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKICAgICAgICAgICAgIHN0YXRlLnNl
dENvbW1pdFN0YXRlKGFsbENvbW1pdFN0YXRlc1tpXSk7Ci0gICAgICAgICAgICBpZiAoIWopIHsK
KyAgICAgICAgICAgIGJvb2wgZm9yY2VkRHJhdyA9IGo7CisgICAgICAgICAgICBpZiAoIWZvcmNl
ZERyYXcpIHsKICAgICAgICAgICAgICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CiAgICAgICAg
ICAgICAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7CiAgICAgICAgICAgICAgICAgc3Rh
dGUuc2V0VmlzaWJsZSh0cnVlKTsKQEAgLTE4Myw3ICszNTUsNyBAQCBURVNUKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25EcmF3c09uVlN5bmMpCiAKICAgICAgICAg
ICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gZXhwZWN0ZWRBY3Rpb247CiAgICAg
ICAgICAgICBpZiAoYWxsQ29tbWl0U3RhdGVzW2ldICE9IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlUKQotICAgICAgICAgICAgICAgIGV4cGVjdGVk
QWN0aW9uID0gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXOworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkQWN0aW9uID0gZm9yY2VkRHJhdyA/IENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fRFJBV19GT1JDRUQgOiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0RSQVdfSUZfUE9TU0lCTEU7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRBY3Rpb24gPSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVDsKIApA
QCAtMjMxLDIyICs0MDMsMjIgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRl
c3ROb0NvbW1pdFN0YXRlc1JlZHJhd1doZW5JbnZpc2libGUpCiAgICAgICAgICAgICAvLyBDYXNl
IDE6IG5lZWRzQ29tbWl0PWZhbHNlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZhbHNlLgog
ICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoZmFsc2UpOwogICAgICAgICAgICAgc3Rh
dGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwotICAgICAgICAgICAgRVhQ
RUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFj
dGlvbigpKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAgICAg
ICAgIC8vIENhc2UgMjogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRp
bmc9dHJ1ZS4KICAgICAgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KGZhbHNlKTsKICAgICAg
ICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOwotICAgICAg
ICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3Rh
dGUubmV4dEFjdGlvbigpKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAK
ICAgICAgICAgICAgIC8vIENhc2UgMzogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3Vy
Y2VzUGVuZGluZz1mYWxzZS4KICAgICAgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUp
OwogICAgICAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2Up
OwotICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
RFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CiAKICAgICAgICAgICAgIC8vIENhc2UgNDogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVN
b3JlUmVzb3VyY2VzUGVuZGluZz10cnVlLgogICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21t
aXQodHJ1ZSk7CiAgICAgICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGlu
Zyh0cnVlKTsKLSAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgICAgICAgICBFWFBFQ1RfTkUo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjY2LDcgKzQzOCw3IEBAIFRF
U1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q2FuUmVkcmF3X1N0b3BzRHJhdykK
ICAgICAgICAgICAgICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CiAKICAgICAgICAgICAgIHN0
YXRlLnNldENhbkRyYXcoZmFsc2UpOwotICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9T
U0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0zODEs
OCArNTUzLDkgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVz
X1dpdGhSZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAKICAgICAvLyBFbnN1cmUgd2UgZHJhdyBv
biB0aGUgbmV4dCB2c3luYyBldmVuIHRob3VnaCBhbiB1cGRhdGUgaXMgaW4tcHJvZ3Jlc3MuCiAg
ICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgc3RhdGUudXBk
YXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsKKyAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSk7CisgICAgc3RhdGUuZGlkRHJhd0lm
UG9zc2libGVDb21wbGV0ZWQodHJ1ZSk7CiAKICAgICAvLyBFbnN1cmUgdGhhdCB3ZSBvbmNlIHdl
IGhhdmUgZHJhd24sIHdlIGRvbnQgZG8gYW55dGhpbmcgZWxzZS4KICAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwpA
QCAtNDQ2LDkgKzYxOSwxMCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVz
dFNldE5lZWRzQ29tbWl0SXNOb3RMb3N0KQogCiAgICAgLy8gQ29tbWl0IGFuZCBtYWtlIHN1cmUg
d2UgZHJhdyBvbiBuZXh0IHZzeW5jCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkNPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXLCBzdGF0ZS5jb21taXRTdGF0ZSgp
KTsKLSAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0RSQVcpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fRFJBV19JRl9QT1NTSUJMRSk7CisgICAgc3RhdGUuZGlkRHJhd0lmUG9zc2libGVDb21w
bGV0ZWQodHJ1ZSk7CiAKICAgICAvLyBWZXJpZnkgdGhhdCBhbm90aGVyIGNvbW1pdCB3aWxsIGJl
Z2luLgogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKQEAgLTQ5MSw4ICs2NjUsOSBAQCBURVNU
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZSkKIAogICAgIC8vIEF0
IHZzeW5jLCBkcmF3LgogICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKLSAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OwotICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
RFJBVyk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJB
V19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0
ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUpOworICAg
IHN0YXRlLmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGVkKHRydWUpOwogICAgIHN0YXRlLmRpZExl
YXZlVlN5bmMoKTsKIAogICAgIC8vIFNob3VsZCBiZSBzeW5jaHJvbml6ZWQsIG5vIGRyYXcgbmVl
ZGVkLCBubyBhY3Rpb24gbmVlZGVkLgpAQCAtNTQxLDggKzcxNiw5IEBAIFRFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJbmJldHdl
ZW4pCiAKICAgICAvLyBBdCB2c3luYywgZHJhdy4KICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7
Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3Rh
dGUubmV4dEFjdGlvbigpKTsKLSAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0RSQVcpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAg
c3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lG
X1BPU1NJQkxFKTsKKyAgICBzdGF0ZS5kaWREcmF3SWZQb3NzaWJsZUNvbXBsZXRlZCh0cnVlKTsK
ICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiAKICAgICAvLyBTaG91bGQgYmUgc3luY2hyb25p
emVkLCBubyBkcmF3IG5lZWRlZCwgbm8gYWN0aW9uIG5lZWRlZC4KQEAgLTY1Miw3ICs4MjgsNyBA
QCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0V2hlbklk
bGVBbmRDb21taXRSZXF1ZXN0ZWRXaGlsZQogICAgIC8vIHNldENhbkRyYXcuCiAgICAgc3RhdGUu
c2V0TmVlZHNSZWRyYXcodHJ1ZSk7CiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwotICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRB
Y3Rpb24oKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
RFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS5zZXRDYW5E
cmF3KGZhbHNlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7
CkBAIC02NzIsNyArODQ4LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRl
c3RDb250ZXh0TG9zdFdoaWxlQ29tbWl0SW5Qcm9ncmVzcykKICAgICAvLyBTZXQgZGFtYWdlIGFu
ZCBleHBlY3QgYSBkcmF3LgogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOwogICAgIHN0
YXRlLmRpZEVudGVyVlN5bmMoKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRB
Y3Rpb24oKSk7CiAgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsKICAg
ICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiAKQEAgLTcxMiw3ICs4ODgsNyBAQCBURVNUKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0V2hpbGVDb21taXRJblByb2dy
ZXNzQW5kQW5vdGhlcgogICAgIC8vIFNldCBkYW1hZ2UgYW5kIGV4cGVjdCBhIGRyYXcuCiAgICAg
c3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7CiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwot
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51
cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMo
KTsKIApAQCAtNzM4LDcgKzkxNCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0Q29udGV4dExvc3RXaGlsZUNvbW1pdEluUHJvZ3Jlc3NBbmRBbm90aGVyCiAKICAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9XQUlUSU5HX0ZP
Ul9GSVJTVF9EUkFXLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKIAotICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cisg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NT
SUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5u
ZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gRXhwZWN0IHRvIGJlIHRvbGQgdG8gYmVnaW4gY29udGV4
dCByZWNyZWF0aW9uLCBpbmRlcGVuZGVudCBvZiB2c3luYyBzdGF0ZQpAQCAtNzYwLDcgKzkzNiw3
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RmluaXNoQWxsUmVuZGVy
aW5nV2hpbGVDb250ZXh0TG9zdCkKICAgICAvLyBBc2sgYSBmb3JjZWQgcmVkcmF3IGFuZCB2ZXJp
ZnkgaXQgb2N1cnJzLgogICAgIHN0YXRlLnNldE5lZWRzRm9yY2VkUmVkcmF3KHRydWUpOwogICAg
IHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfRk9SQ0VELCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKIAogICAgIC8vIENsZWFyIHRoZSBm
b3JjZWQgcmVkcmF3IGJpdC4KQEAgLTc3Myw3ICs5NDksNyBAQCBURVNUKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdCwgVGVzdEZpbmlzaEFsbFJlbmRlcmluZ1doaWxlQ29udGV4dExvc3QpCiAg
ICAgLy8gQXNrIGEgZm9yY2VkIHJlZHJhdyBhbmQgdmVyaWZ5IGl0IG9jdXJycy4KICAgICBzdGF0
ZS5zZXROZWVkc0ZvcmNlZFJlZHJhdyh0cnVlKTsKICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7
Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3Rh
dGUubmV4dEFjdGlvbigpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9EUkFXX0ZPUkNFRCwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS5kaWRM
ZWF2ZVZTeW5jKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NT
Y2hlZHVsZXJUZXN0LmNwcAppbmRleCA0NWY2MWI5MGJmNTRlMmVjZTc4YmRhODgzZmZhMGEyNmJk
NTQzNmViLi44ZGY1YTExY2FmN2EyMTNlMDc0NjAxNWNmNDkxZDdkMjJmYmY2NWYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCkBAIC00
NSwyNSArNDUsNDQgQEAgcHVibGljOgogICAgICAgICBtX2FjdGlvbnMuY2xlYXIoKTsKICAgICAg
ICAgbV9oYXNNb3JlUmVzb3VyY2VVcGRhdGVzID0gZmFsc2U7CiAgICAgICAgIG1fY2FuRHJhdyA9
IHRydWU7CisgICAgICAgIG1fZHJhd1N1Y2Nlc3MgPSB0cnVlOworICAgICAgICBtX251bURyYXdz
ID0gMDsKICAgICB9CiAKICAgICB2b2lkIHNldEhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoYm9vbCBi
KSB7IG1faGFzTW9yZVJlc291cmNlVXBkYXRlcyA9IGI7IH0KICAgICB2b2lkIHNldENhbkRyYXco
Ym9vbCBiKSB7IG1fY2FuRHJhdyA9IGI7IH0KIAorICAgIGludCBudW1EcmF3cygpIGNvbnN0IHsg
cmV0dXJuIG1fbnVtRHJhd3M7IH0KICAgICBpbnQgbnVtQWN0aW9ucygpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4obV9hY3Rpb25zLnNpemUoKSk7IH0KICAgICBjb25zdCBjaGFyKiBh
Y3Rpb24oaW50IGkpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aW9uc1tpXTsgfQogCiAgICAgdmlydHVh
bCBib29sIGNhbkRyYXcoKSB7IHJldHVybiBtX2NhbkRyYXc7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzTW9yZVJlc291cmNl
VXBkYXRlczsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkg
eyBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lIik7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoKSB7IG1fYWN0aW9ucy5w
dXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwIik7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxlKCkKKyAgICB7CisgICAgICAg
IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJs
ZSIpOworICAgICAgICBtX251bURyYXdzKys7CisgICAgICAgIHJldHVybiBtX2RyYXdTdWNjZXNz
OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZv
cmNlZCgpCisgICAgeworICAgICAgICBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRBY3Rp
b25EcmF3QW5kU3dhcEZvcmNlZCIpOworICAgICAgICBtX251bURyYXdzKys7CisgICAgfQorCiAg
ICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKSB7IG1f
YWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiKTsg
fQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25Db21taXQoKSB7IG1fYWN0aW9ucy5w
dXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNj
aGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24oKSB7IG1fYWN0aW9ucy5wdXNoX2Jh
Y2soInNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24iKTsgfQogCisgICAgdm9p
ZCBzZXREcmF3U3VjY2Vzcyhib29sIGRyYXdTdWNjZXNzKSB7IG1fZHJhd1N1Y2Nlc3MgPSBkcmF3
U3VjY2VzczsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2hhc01vcmVSZXNvdXJjZVVwZGF0
ZXM7CiAgICAgYm9vbCBtX2NhbkRyYXc7CisgICAgYm9vbCBtX2RyYXdTdWNjZXNzOworICAgIGlu
dCBtX251bURyYXdzOwogICAgIHN0ZDo6dmVjdG9yPGNvbnN0IGNoYXIqPiBtX2FjdGlvbnM7CiB9
OwogCkBAIC05NCw3ICsxMTMsNyBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1p
dCkKICAgICAvLyBUaWNrIHNob3VsZCBkcmF3LgogICAgIHRpbWVTb3VyY2UtPnRpY2soKTsKICAg
ICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJz
Y2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIEVYUEVD
VF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxlIiwgY2xpZW50LmFj
dGlvbigwKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHRpbWVTb3VyY2UtPmFjdGl2ZSgpKTsKICAgICBj
bGllbnQucmVzZXQoKTsKIApAQCAtMTMxLDM4ICsxNTAsMzMgQEAgVEVTVChDQ1NjaGVkdWxlclRl
c3QsIFJlcXVlc3RDb21taXRBZnRlckJlZ2luRnJhbWUpCiAgICAgdGltZVNvdXJjZS0+dGljaygp
OwogICAgIEVYUEVDVF9GQUxTRSh0aW1lU291cmNlLT5hY3RpdmUoKSk7CiAgICAgRVhQRUNUX0VR
KDIsIGNsaWVudC5udW1BY3Rpb25zKCkpOwotICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0
aW9uRHJhd0FuZFN3YXAiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNj
aGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSIsIGNsaWVudC5hY3Rpb24oMCkpOwog
ICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSIsIGNsaWVudC5hY3Rp
b24oMSkpOwogICAgIGNsaWVudC5yZXNldCgpOwogfQogCi1jbGFzcyBTY2hlZHVsZXJDbGllbnRU
aGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdyA6IHB1YmxpYyBDQ1NjaGVkdWxlckNsaWVudCB7Citj
bGFzcyBTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdyA6IHB1YmxpYyBG
YWtlQ0NTY2hlZHVsZXJDbGllbnQgewogcHVibGljOgogICAgIFNjaGVkdWxlckNsaWVudFRoYXRT
ZXROZWVkc0RyYXdJbnNpZGVEcmF3KCkKLSAgICAgICAgOiBtX251bURyYXdzKDApCi0gICAgICAg
ICwgbV9zY2hlZHVsZXIoMCkgeyB9CisgICAgICAgIDogbV9zY2hlZHVsZXIoMCkgeyB9CiAKICAg
ICB2b2lkIHNldFNjaGVkdWxlcihDQ1NjaGVkdWxlciogc2NoZWR1bGVyKSB7IG1fc2NoZWR1bGVy
ID0gc2NoZWR1bGVyOyB9CiAKLSAgICBpbnQgbnVtRHJhd3MoKSBjb25zdCB7IHJldHVybiBtX251
bURyYXdzOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGNhbkRyYXcoKSB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoKQorICAgIHZp
cnR1YWwgYm9vbCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUoKQogICAgIHsK
ICAgICAgICAgLy8gT25seSBzZXROZWVkc1JlZHJhdyB0aGUgZmlyc3QgdGltZSB0aGlzIGlzIGNh
bGxlZAogICAgICAgICBpZiAoIW1fbnVtRHJhd3MpCiAgICAgICAgICAgICBtX3NjaGVkdWxlci0+
c2V0TmVlZHNSZWRyYXcoKTsKLSAgICAgICAgbV9udW1EcmF3cysrOworICAgICAgICByZXR1cm4g
RmFrZUNDU2NoZWR1bGVyQ2xpZW50OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2li
bGUoKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3
YXBGb3JjZWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9y
ZVJlc291cmNlcygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25Db21taXQo
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVh
dGlvbigpIHsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgaW50IG1fbnVtRHJhd3M7CiAgICAgQ0NTY2hl
ZHVsZXIqIG1fc2NoZWR1bGVyOwogfTsKIApAQCAtMTk0LDMzICsyMDgsNjggQEAgVEVTVChDQ1Nj
aGVkdWxlclRlc3QsIFJlcXVlc3RSZWRyYXdJbnNpZGVEcmF3KQogICAgIEVYUEVDVF9GQUxTRSh0
aW1lU291cmNlLT5hY3RpdmUoKSk7CiB9CiAKLWNsYXNzIFNjaGVkdWxlckNsaWVudFRoYXRTZXRO
ZWVkc0NvbW1pdEluc2lkZURyYXcgOiBwdWJsaWMgQ0NTY2hlZHVsZXJDbGllbnQgeworLy8gVGVz
dCB0aGF0IHJlcXVlc3RpbmcgcmVkcmF3IGluc2lkZSBhIGZhaWxlZCBkcmF3IGRvZXNuJ3QgbG9z
ZSB0aGUgcmVxdWVzdC4KK1RFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0UmVkcmF3SW5zaWRl
RmFpbGVkRHJhdykKK3sKKyAgICBTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRl
RHJhdyBjbGllbnQ7CisgICAgUmVmUHRyPEZha2VDQ1RpbWVTb3VyY2U+IHRpbWVTb3VyY2UgPSBh
ZG9wdFJlZihuZXcgRmFrZUNDVGltZVNvdXJjZSgpKTsKKyAgICBPd25QdHI8Q0NTY2hlZHVsZXI+
IHNjaGVkdWxlciA9IENDU2NoZWR1bGVyOjpjcmVhdGUoJmNsaWVudCwgYWRvcHRQdHIobmV3IEND
RnJhbWVSYXRlQ29udHJvbGxlcih0aW1lU291cmNlKSkpOworICAgIGNsaWVudC5zZXRTY2hlZHVs
ZXIoc2NoZWR1bGVyLmdldCgpKTsKKyAgICBzY2hlZHVsZXItPnNldFZpc2libGUodHJ1ZSk7Cisg
ICAgY2xpZW50LnNldERyYXdTdWNjZXNzKGZhbHNlKTsKKworICAgIHNjaGVkdWxlci0+c2V0TmVl
ZHNSZWRyYXcoKTsKKyAgICBFWFBFQ1RfVFJVRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7
CisgICAgRVhQRUNUX1RSVUUodGltZVNvdXJjZS0+YWN0aXZlKCkpOworICAgIEVYUEVDVF9FUSgw
LCBjbGllbnQubnVtRHJhd3MoKSk7CisKKyAgICAvLyBGYWlsIHRoZSBkcmF3LgorICAgIHRpbWVT
b3VyY2UtPnRpY2soKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bURyYXdzKCkpOworCisg
ICAgLy8gV2UgaGF2ZSBhIGNvbW1pdCBwZW5kaW5nIGFuZCB0aGUgZHJhdyBmYWlsZWQsIGFuZCB3
ZSBkaWRuJ3QgbG9zZSB0aGUgcmVkcmF3IHJlcXVlc3QuCisgICAgRVhQRUNUX1RSVUUoc2NoZWR1
bGVyLT5jb21taXRQZW5kaW5nKCkpOworICAgIEVYUEVDVF9UUlVFKHNjaGVkdWxlci0+cmVkcmF3
UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfVFJVRSh0aW1lU291cmNlLT5hY3RpdmUoKSk7CisKKyAg
ICAvLyBGYWlsIHRoZSBkcmF3IGFnYWluLgorICAgIHRpbWVTb3VyY2UtPnRpY2soKTsKKyAgICBF
WFBFQ1RfRVEoMiwgY2xpZW50Lm51bURyYXdzKCkpOworICAgIEVYUEVDVF9UUlVFKHNjaGVkdWxl
ci0+Y29tbWl0UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfVFJVRShzY2hlZHVsZXItPnJlZHJhd1Bl
bmRpbmcoKSk7CisgICAgRVhQRUNUX1RSVUUodGltZVNvdXJjZS0+YWN0aXZlKCkpOworCisgICAg
Ly8gRHJhdyBzdWNjZXNzZnVsbHkuCisgICAgY2xpZW50LnNldERyYXdTdWNjZXNzKHRydWUpOwor
ICAgIHRpbWVTb3VyY2UtPnRpY2soKTsKKyAgICBFWFBFQ1RfRVEoMywgY2xpZW50Lm51bURyYXdz
KCkpOworICAgIEVYUEVDVF9UUlVFKHNjaGVkdWxlci0+Y29tbWl0UGVuZGluZygpKTsKKyAgICBF
WFBFQ1RfRkFMU0Uoc2NoZWR1bGVyLT5yZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9GQUxT
RSh0aW1lU291cmNlLT5hY3RpdmUoKSk7Cit9CisKK2NsYXNzIFNjaGVkdWxlckNsaWVudFRoYXRT
ZXROZWVkc0NvbW1pdEluc2lkZURyYXcgOiBwdWJsaWMgRmFrZUNDU2NoZWR1bGVyQ2xpZW50IHsK
IHB1YmxpYzoKICAgICBTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNDb21taXRJbnNpZGVEcmF3
KCkKLSAgICAgICAgOiBtX251bURyYXdzKDApCi0gICAgICAgICwgbV9zY2hlZHVsZXIoMCkgeyB9
CisgICAgICAgIDogbV9zY2hlZHVsZXIoMCkgeyB9CiAKICAgICB2b2lkIHNldFNjaGVkdWxlcihD
Q1NjaGVkdWxlciogc2NoZWR1bGVyKSB7IG1fc2NoZWR1bGVyID0gc2NoZWR1bGVyOyB9CiAKLSAg
ICBpbnQgbnVtRHJhd3MoKSBjb25zdCB7IHJldHVybiBtX251bURyYXdzOyB9Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgaGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGNhbkRyYXcoKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVh
bCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoKQorICAgIHZpcnR1YWwgYm9vbCBzY2hlZHVsZWRB
Y3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUoKQogICAgIHsKICAgICAgICAgLy8gT25seSBzZXRO
ZWVkc0NvbW1pdCB0aGUgZmlyc3QgdGltZSB0aGlzIGlzIGNhbGxlZAogICAgICAgICBpZiAoIW1f
bnVtRHJhd3MpCiAgICAgICAgICAgICBtX3NjaGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKLSAg
ICAgICAgbV9udW1EcmF3cysrOworICAgICAgICByZXR1cm4gRmFrZUNDU2NoZWR1bGVyQ2xpZW50
OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUoKTsKICAgICB9CiAKKyAgICB2
aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBGb3JjZWQoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25Db21taXQoKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbigpIHsgfQogCiBwcm90ZWN0
ZWQ6Ci0gICAgaW50IG1fbnVtRHJhd3M7CiAgICAgQ0NTY2hlZHVsZXIqIG1fc2NoZWR1bGVyOwog
fTsKIApAQCAtMjUxLDQgKzMwMCw5MCBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENv
bW1pdEluc2lkZURyYXcpCiAgICAgRVhQRUNUX0ZBTFNFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGlu
ZygpKTsKIH0KIAorLy8gVGVzdHMgdGhhdCB3aGVuIGEgZHJhdyBmYWlscyB0aGVuIHRoZSBwZW5k
aW5nIGNvbW1pdCBzaG91bGQgbm90IGJlIGRyb3BwZWQuCitURVNUKENDU2NoZWR1bGVyVGVzdCwg
UmVxdWVzdENvbW1pdEluc2lkZUZhaWxlZERyYXcpCit7CisgICAgU2NoZWR1bGVyQ2xpZW50VGhh
dFNldE5lZWRzRHJhd0luc2lkZURyYXcgY2xpZW50OworICAgIFJlZlB0cjxGYWtlQ0NUaW1lU291
cmNlPiB0aW1lU291cmNlID0gYWRvcHRSZWYobmV3IEZha2VDQ1RpbWVTb3VyY2UoKSk7CisgICAg
T3duUHRyPENDU2NoZWR1bGVyPiBzY2hlZHVsZXIgPSBDQ1NjaGVkdWxlcjo6Y3JlYXRlKCZjbGll
bnQsIGFkb3B0UHRyKG5ldyBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIodGltZVNvdXJjZSkpKTsKKyAg
ICBjbGllbnQuc2V0U2NoZWR1bGVyKHNjaGVkdWxlci5nZXQoKSk7CisgICAgc2NoZWR1bGVyLT5z
ZXRWaXNpYmxlKHRydWUpOworICAgIGNsaWVudC5zZXREcmF3U3VjY2VzcyhmYWxzZSk7CisKKyAg
ICBzY2hlZHVsZXItPnNldE5lZWRzUmVkcmF3KCk7CisgICAgRVhQRUNUX1RSVUUoc2NoZWR1bGVy
LT5yZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9UUlVFKHRpbWVTb3VyY2UtPmFjdGl2ZSgp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgY2xpZW50Lm51bURyYXdzKCkpOworCisgICAgLy8gRmFpbCB0
aGUgZHJhdy4KKyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVu
dC5udW1EcmF3cygpKTsKKworICAgIC8vIFdlIGhhdmUgYSBjb21taXQgcGVuZGluZyBhbmQgdGhl
IGRyYXcgZmFpbGVkLCBhbmQgd2UgZGlkbid0IGxvc2UgdGhlIGNvbW1pdCByZXF1ZXN0LgorICAg
IEVYUEVDVF9UUlVFKHNjaGVkdWxlci0+Y29tbWl0UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfVFJV
RShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CisgICAgRVhQRUNUX1RSVUUodGltZVNvdXJj
ZS0+YWN0aXZlKCkpOworCisgICAgLy8gRmFpbCB0aGUgZHJhdyBhZ2Fpbi4KKyAgICB0aW1lU291
cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDIsIGNsaWVudC5udW1EcmF3cygpKTsKKyAgICBF
WFBFQ1RfVFJVRShzY2hlZHVsZXItPmNvbW1pdFBlbmRpbmcoKSk7CisgICAgRVhQRUNUX1RSVUUo
c2NoZWR1bGVyLT5yZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVDVF9UUlVFKHRpbWVTb3VyY2Ut
PmFjdGl2ZSgpKTsKKworICAgIC8vIERyYXcgc3VjY2Vzc2Z1bGx5LgorICAgIGNsaWVudC5zZXRE
cmF3U3VjY2Vzcyh0cnVlKTsKKyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VR
KDMsIGNsaWVudC5udW1EcmF3cygpKTsKKyAgICBFWFBFQ1RfVFJVRShzY2hlZHVsZXItPmNvbW1p
dFBlbmRpbmcoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygp
KTsKKyAgICBFWFBFQ1RfRkFMU0UodGltZVNvdXJjZS0+YWN0aXZlKCkpOworfQorCitURVNUKEND
U2NoZWR1bGVyVGVzdCwgTm9CZWdpbkZyYW1lV2hlbkRyYXdGYWlscykKK3sKKyAgICBSZWZQdHI8
RmFrZUNDVGltZVNvdXJjZT4gdGltZVNvdXJjZSA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NUaW1lU291
cmNlKCkpOworICAgIFNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0NvbW1pdEluc2lkZURyYXcg
Y2xpZW50OworICAgIE93blB0cjxGYWtlQ0NGcmFtZVJhdGVDb250cm9sbGVyPiBjb250cm9sbGVy
ID0gYWRvcHRQdHIobmV3IEZha2VDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIodGltZVNvdXJjZSkpOwor
ICAgIEZha2VDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXJQdHIgPSBjb250cm9sbGVy
LmdldCgpOworICAgIE93blB0cjxDQ1NjaGVkdWxlcj4gc2NoZWR1bGVyID0gQ0NTY2hlZHVsZXI6
OmNyZWF0ZSgmY2xpZW50LCBjb250cm9sbGVyLnJlbGVhc2UoKSk7CisgICAgY2xpZW50LnNldFNj
aGVkdWxlcihzY2hlZHVsZXIuZ2V0KCkpOworICAgIHNjaGVkdWxlci0+c2V0VmlzaWJsZSh0cnVl
KTsKKworICAgIEVYUEVDVF9FUSgwLCBjb250cm9sbGVyUHRyLT5udW1GcmFtZXNQZW5kaW5nKCkp
OworCisgICAgc2NoZWR1bGVyLT5zZXROZWVkc1JlZHJhdygpOworICAgIEVYUEVDVF9UUlVFKHNj
aGVkdWxlci0+cmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfVFJVRSh0aW1lU291cmNlLT5h
Y3RpdmUoKSk7CisgICAgRVhQRUNUX0VRKDAsIGNsaWVudC5udW1EcmF3cygpKTsKKworICAgIC8v
IERyYXcgc3VjY2Vzc2Z1bGx5LCB0aGlzIHN0YXJ0cyBhIG5ldyBmcmFtZS4KKyAgICB0aW1lU291
cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1EcmF3cygpKTsKKyAgICBF
WFBFQ1RfRVEoMSwgY29udHJvbGxlclB0ci0+bnVtRnJhbWVzUGVuZGluZygpKTsKKyAgICBzY2hl
ZHVsZXItPmRpZFN3YXBCdWZmZXJzQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoMCwgY29udHJv
bGxlclB0ci0+bnVtRnJhbWVzUGVuZGluZygpKTsKKworICAgIHNjaGVkdWxlci0+c2V0TmVlZHNS
ZWRyYXcoKTsKKyAgICBFWFBFQ1RfVFJVRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7Cisg
ICAgRVhQRUNUX1RSVUUodGltZVNvdXJjZS0+YWN0aXZlKCkpOworCisgICAgLy8gRHJhdyBzdWNj
ZXNzZnVsbHksIHRoaXMgc3RhcnRzIGFub3RoZXIgZnJhbWUuCisgICAgdGltZVNvdXJjZS0+dGlj
aygpOworICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtRHJhd3MoKSk7CisgICAgRVhQRUNUX0VR
KDEsIGNvbnRyb2xsZXJQdHItPm51bUZyYW1lc1BlbmRpbmcoKSk7CisgICAgc2NoZWR1bGVyLT5k
aWRTd2FwQnVmZmVyc0NvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKDAsIGNvbnRyb2xsZXJQdHIt
Pm51bUZyYW1lc1BlbmRpbmcoKSk7CisKKyAgICBzY2hlZHVsZXItPnNldE5lZWRzUmVkcmF3KCk7
CisgICAgRVhQRUNUX1RSVUUoc2NoZWR1bGVyLT5yZWRyYXdQZW5kaW5nKCkpOworICAgIEVYUEVD
VF9UUlVFKHRpbWVTb3VyY2UtPmFjdGl2ZSgpKTsKKworICAgIC8vIEZhaWwgdG8gZHJhdywgdGhp
cyBzaG91bGQgbm90IHN0YXJ0IGEgZnJhbWUuCisgICAgY2xpZW50LnNldERyYXdTdWNjZXNzKGZh
bHNlKTsKKyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDMsIGNsaWVudC5u
dW1EcmF3cygpKTsKKyAgICBFWFBFQ1RfRVEoMCwgY29udHJvbGxlclB0ci0+bnVtRnJhbWVzUGVu
ZGluZygpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1NjaGVkdWxlclRlc3RDb21tb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NTY2hlZHVsZXJUZXN0Q29tbW9uLmgKaW5kZXggMzljZjllNDk2MzM4MDg4ZGJkNjU0NWMyNTJl
MWQ0MWVhMDBiOTQwNS4uMGMxMDU1ODhiMTQyZjc2MTkzNzIyZTYyODhlMTk4OTY1M2E5NDk4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3RD
b21tb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVz
dENvbW1vbi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjZGVmaW5lIENDU2NoZWR1bGVyVGVzdENvbW1v
bl9oCiAKICNpbmNsdWRlICJjYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmgiCisjaW5jbHVkZSAi
Y2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIKICNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTEyMyw2
ICsxMjQsMTMgQEAgcHJvdGVjdGVkOgogICAgIGRvdWJsZSBtX21vbm90b25pY2FsbHlJbmNyZWFz
aW5nVGltZTsKIH07CiAKK2NsYXNzIEZha2VDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIgOiBwdWJsaWMg
V2ViQ29yZTo6Q0NGcmFtZVJhdGVDb250cm9sbGVyIHsKK3B1YmxpYzoKKyAgICBGYWtlQ0NGcmFt
ZVJhdGVDb250cm9sbGVyKFBhc3NSZWZQdHI8V2ViQ29yZTo6Q0NUaW1lU291cmNlPiB0aW1lcikg
OiBXZWJDb3JlOjpDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIodGltZXIpIHsgfQorCisgICAgaW50IG51
bUZyYW1lc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX251bUZyYW1lc1BlbmRpbmc7IH0KK307
CisKIH0KIAogI2VuZGlmIC8vIENDU2NoZWR1bGVyVGVzdENvbW1vbl9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>