<?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>109769</bug_id>
          
          <creation_ts>2013-02-13 16:30:32 -0800</creation_ts>
          <short_desc>EventHandler::handleGestureScrollUpdate() should invoke the user-generated scroll routines so its behavior matches other user-initiated scrolls</short_desc>
          <delta_ts>2013-03-05 12:01:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</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>
          
          <blocked>109316</blocked>
    
    <blocked>111007</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Terry Anderson">tdanderson</reporter>
          <assigned_to name="Terry Anderson">tdanderson</assigned_to>
          <cc>aelias</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>jamesr</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rafaelw</cc>
    
    <cc>rjkroege</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yusufo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>832496</commentid>
    <comment_count>0</comment_count>
    <who name="Terry Anderson">tdanderson</who>
    <bug_when>2013-02-13 16:30:32 -0800</bug_when>
    <thetext>Based on the discussion in https://bugs.webkit.org/show_bug.cgi?id=109316#c13, handling a gesture scroll should not use the code path in RenderLayer::scrollBy() / RenderLayer::scrollByRecursively() to do scrolling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832498</commentid>
    <comment_count>1</comment_count>
      <attachid>188219</attachid>
    <who name="Terry Anderson">tdanderson</who>
    <bug_when>2013-02-13 16:32:53 -0800</bug_when>
    <thetext>Created attachment 188219
Early WIP, not for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832504</commentid>
    <comment_count>2</comment_count>
      <attachid>188219</attachid>
    <who name="Terry Anderson">tdanderson</who>
    <bug_when>2013-02-13 16:35:34 -0800</bug_when>
    <thetext>Comment on attachment 188219
Early WIP, not for review

As is, this patch appears to work correctly (even with iframes) except that flings still bubble. The functions that have been added have a lot of code copied from their wheel counterparts, so this will need a refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832649</commentid>
    <comment_count>3</comment_count>
      <attachid>188219</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 18:42:37 -0800</bug_when>
    <thetext>Comment on attachment 188219
Early WIP, not for review

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

New failing tests:
fast/events/touch/gesture/touch-gesture-scroll-iframe-propagated.html
fast/events/touch/gesture/touch-gesture-scroll-page-propagated.html
fast/events/touch/gesture/touch-gesture-scroll-div-twice-propagated.html
fast/events/touch/gesture/touch-gesture-scroll-div-propagated.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832665</commentid>
    <comment_count>4</comment_count>
      <attachid>188219</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 19:27:06 -0800</bug_when>
    <thetext>Comment on attachment 188219
Early WIP, not for review

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

New failing tests:
fast/events/touch/gesture/touch-gesture-scroll-iframe-propagated.html
fast/events/touch/gesture/touch-gesture-scroll-page-propagated.html
fast/events/touch/gesture/touch-gesture-scroll-div-twice-propagated.html
fast/events/touch/gesture/touch-gesture-scroll-div-propagated.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834475</commentid>
    <comment_count>5</comment_count>
      <attachid>188663</attachid>
    <who name="Terry Anderson">tdanderson</who>
    <bug_when>2013-02-15 16:28:02 -0800</bug_when>
    <thetext>Created attachment 188663
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834481</commentid>
    <comment_count>6</comment_count>
      <attachid>188663</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-15 16:31:25 -0800</bug_when>
    <thetext>Comment on attachment 188663
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        EventHandler::handleGestureScrollUpdate() should not use RenderLayer::scrollBy() to perform scrolling

Patches need comments that answer the question “Why?”.

The above just describes the code change without explaining what the benefit is. And since there are no test cases along with this, it’s just a “trust me, this needs to be changed like this” patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834482</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-15 16:32:30 -0800</bug_when>
    <thetext>A better description of this bug would be something along the lines of &quot;EventHandler::handleGestureScrollUpdate should invoke the user-generated scroll routines, not the programmatic routines, so behavior matches other user-initiated scrolls&quot;.  That&apos;s maybe a bit too wordy for the bug title, however.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834490</commentid>
    <comment_count>8</comment_count>
      <attachid>188663</attachid>
    <who name="Terry Anderson">tdanderson</who>
    <bug_when>2013-02-15 16:40:19 -0800</bug_when>
    <thetext>Comment on attachment 188663
Patch

WIP, not for review.

This patch appears to work fine for propagated gesture scrolls (including iframes). Fling gestures do not propagate; I was able to very nicely hook into the existing logic in RenderBox::scroll() by passing in |stopNode|, which eliminates the need for using the ScrollPropagation enum.

I have also reverted the changes I made to RenderLayer::scrollByRecursively() in http://trac.webkit.org/changeset/140177 and http://trac.webkit.org/changeset/142195 since this function will no longer be used to gesture-scroll.

Left to do:
- Fix the layout tests. The propagation-specific ones are erroneously failing. Manually running these tests verifies that they work.

Left to do (possibly in a follow-up patch):
- Refactoring to eliminate the more-or-less copied and pasted code in FrameView::gestureScrollUpdateEvent(), ScrollAnimator::handleGestureScrollUpdateEvent(), and ScrollableArea::handleGestureScrollUpdateEvent().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834499</commentid>
    <comment_count>9</comment_count>
    <who name="Terry Anderson">tdanderson</who>
    <bug_when>2013-02-15 16:46:41 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 188663 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=188663&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        EventHandler::handleGestureScrollUpdate() should not use RenderLayer::scrollBy() to perform scrolling
&gt; 
&gt; Patches need comments that answer the question “Why?”.
&gt; 
&gt; The above just describes the code change without explaining what the benefit is. And since there are no test cases along with this, it’s just a “trust me, this needs to be changed like this” patch.

My mistake, I forgot the --no-review when uploading. This is still a WIP patch. Once this goes up for review, I will be adding test coverage and a thorough description of my change in the ChangeLog.

I will change the bug name to something better now though, as suggested by James.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834553</commentid>
    <comment_count>10</comment_count>
      <attachid>188663</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-15 17:44:25 -0800</bug_when>
    <thetext>Comment on attachment 188663
Patch

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

New failing tests:
fast/events/touch/gesture/touch-gesture-scroll-iframe-propagated.html
fast/events/touch/gesture/touch-gesture-scroll-page-propagated.html
fast/events/touch/gesture/touch-gesture-scroll-div-twice-propagated.html
fast/events/touch/gesture/touch-gesture-scroll-div-propagated.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841392</commentid>
    <comment_count>11</comment_count>
      <attachid>190150</attachid>
    <who name="Terry Anderson">tdanderson</who>
    <bug_when>2013-02-25 16:16:50 -0800</bug_when>
    <thetext>Created attachment 190150
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841407</commentid>
    <comment_count>12</comment_count>
    <who name="Terry Anderson">tdanderson</who>
    <bug_when>2013-02-25 16:30:04 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Created an attachment (id=190150) [details]
&gt; Patch

Not for official review, but I would appreciate some informal feedback. As is, the patch works and I believe that I have sufficient layout test coverage. But I recognize that at the moment this patch adds more-or-less copied/pasted code in FrameView::gestureScrollUpdateEvent(), ScrollAnimator::handleGestureScrollUpdateEvent(), and ScrollableArea::handleGestureScrollUpdateEvent(). These are copied from their mousewheel counterparts FrameView::wheelEvent(), ScrollAnimator::handleWheelEvent(), and ScrollableArea::handleWheelEvent(). 

The functions differ mainly in the type of their parameters (PlatformWheelEvent vs. PlatformGestureEvent). Perhaps the best way to avoid this code duplication would be to create a more general PlatformScrollEvent, which can store the source of the scroll (touch or mousewheel) as an extra attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842426</commentid>
    <comment_count>13</comment_count>
      <attachid>190372</attachid>
    <who name="Terry Anderson">tdanderson</who>
    <bug_when>2013-02-26 15:18:03 -0800</bug_when>
    <thetext>Created attachment 190372
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842428</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-26 15:21:47 -0800</bug_when>
    <thetext>James is probably your best reviewer, but I can also review if he&apos;s busy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843101</commentid>
    <comment_count>15</comment_count>
      <attachid>190372</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2013-02-27 08:41:34 -0800</bug_when>
    <thetext>Comment on attachment 190372
Patch for review

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        EventHandler::handleGestureScrollUpdate() should invoke the user-generated scroll routines so its behavior matches other user-initiated scrolls

I&apos;d line break this.

&gt; Source/WebCore/ChangeLog:9
&gt; +        the scrolling behavior of mousewheel events, use the existing user-generated scroll logic

might be worth emphasizing that this CL uses none of the wheel event event handling code.

&gt; Source/WebCore/page/EventHandler.cpp:2700
&gt; +    PlatformWheelEvent syntheticWheelEvent(point, globalPoint,

I think that this should have preciseScrollingDeltas set to true on it.

&gt; Source/WebCore/rendering/RenderLayer.cpp:2024
&gt;  void RenderLayer::scrollByRecursively(const IntSize&amp; delta, ScrollOffsetClamping clamp)

you don&apos;t actually call this function in the new patch right? If so, you could leave this out of this CL and revert in a subsequent patch for a smaller CL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843222</commentid>
    <comment_count>16</comment_count>
      <attachid>190372</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-27 10:26:30 -0800</bug_when>
    <thetext>Comment on attachment 190372
Patch for review

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

Could you explain in a bit more detail how the lifetime of the previous gesture scrolled node is handled?  Is there any reason we need to keep this alive past the end of a gesture scroll sequence (i.e. past the GestureScrollEnd event)?

What platforms have you tested this patch on?

&gt; Source/WebCore/page/EventHandler.cpp:2680
&gt; +    if (scrollShouldNotPropagate)
&gt; +        m_previousGestureScrolledNode = stopNode;

When is this reference cleared?

&gt; Source/WebCore/page/EventHandler.cpp:2697
&gt; +    const float tickDivisor = (float)WheelEvent::TickMultiplier;

We don&apos;t use c-style casts in WebKit.  This should probably be a static_cast&lt;&gt; if it needs to be explicit or just implicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843443</commentid>
    <comment_count>17</comment_count>
      <attachid>190592</attachid>
    <who name="Terry Anderson">tdanderson</who>
    <bug_when>2013-02-27 13:28:04 -0800</bug_when>
    <thetext>Created attachment 190592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843445</commentid>
    <comment_count>18</comment_count>
      <attachid>190372</attachid>
    <who name="Terry Anderson">tdanderson</who>
    <bug_when>2013-02-27 13:31:43 -0800</bug_when>
    <thetext>Comment on attachment 190372
Patch for review

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        EventHandler::handleGestureScrollUpdate() should invoke the user-generated scroll routines so its behavior matches other user-initiated scrolls
&gt; 
&gt; I&apos;d line break this.

Done.

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        the scrolling behavior of mousewheel events, use the existing user-generated scroll logic
&gt; 
&gt; might be worth emphasizing that this CL uses none of the wheel event event handling code.

Done.

&gt;&gt; Source/WebCore/page/EventHandler.cpp:2680
&gt;&gt; +        m_previousGestureScrolledNode = stopNode;
&gt; 
&gt; When is this reference cleared?

I clear |m_previousGestureScrolledNode| in EventHandler::handleGestureScrollBegin().

&gt;&gt; Source/WebCore/page/EventHandler.cpp:2697
&gt;&gt; +    const float tickDivisor = (float)WheelEvent::TickMultiplier;
&gt; 
&gt; We don&apos;t use c-style casts in WebKit.  This should probably be a static_cast&lt;&gt; if it needs to be explicit or just implicit.

Changed to a static_cast&lt;float&gt;.

&gt;&gt; Source/WebCore/page/EventHandler.cpp:2700
&gt;&gt; +    PlatformWheelEvent syntheticWheelEvent(point, globalPoint,
&gt; 
&gt; I think that this should have preciseScrollingDeltas set to true on it.

Done. I had to add the mutator setHasPreciseScrollingDeltas() in PlatformWheelEvent.

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:2024
&gt;&gt;  void RenderLayer::scrollByRecursively(const IntSize&amp; delta, ScrollOffsetClamping clamp)
&gt; 
&gt; you don&apos;t actually call this function in the new patch right? If so, you could leave this out of this CL and revert in a subsequent patch for a smaller CL.

Agreed. I have filed https://bugs.webkit.org/show_bug.cgi?id=111007 to track the removal of the unused code in RenderLayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843451</commentid>
    <comment_count>19</comment_count>
    <who name="Terry Anderson">tdanderson</who>
    <bug_when>2013-02-27 13:39:30 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 190372 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=190372&amp;action=review
&gt; 
&gt; Could you explain in a bit more detail how the lifetime of the previous gesture scrolled node is handled?  Is there any reason we need to keep this alive past the end of a gesture scroll sequence (i.e. past the GestureScrollEnd event)?

The member |m_previousGestureScrolledNode| is cleared on every GestureScrollBegin event. A fling gesture will not send a GestureScrollEnd event, which is why I opted to clear the value on a GestureScrollBegin instead. 

If a GestureScrollEnd event is sent (i.e., when the user pan-scrolls) then there is no reason to keep it alive after this point. It should not be possible for a GestureScrollUpdate to be dispatched without a prerequisite GestureScrollBegin, but to be on the safe side I could also clear the previous scrolled node on a GestureScrollEnd as well. What do you think?
 
&gt; What platforms have you tested this patch on?

This touch-scrolling path is only used by Chromium, and I have done manual testing on Linux and ChromeOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843454</commentid>
    <comment_count>20</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-27 13:39:55 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt;&gt; Source/WebCore/page/EventHandler.cpp:2680
&gt; &gt;&gt; +        m_previousGestureScrolledNode = stopNode;
&gt; &gt; 
&gt; &gt; When is this reference cleared?
&gt; 
&gt; I clear |m_previousGestureScrolledNode| in EventHandler::handleGestureScrollBegin().

But that means the Node will be held alive until the next gesture scroll, which may be far in the distant future or never happen.  That&apos;s a major memory problem.  Why not clear it at the end of the gesture sequence?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843455</commentid>
    <comment_count>21</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-27 13:40:07 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #16)
&gt; &gt; (From update of attachment 190372 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=190372&amp;action=review
&gt; &gt; 
&gt; &gt; Could you explain in a bit more detail how the lifetime of the previous gesture scrolled node is handled?  Is there any reason we need to keep this alive past the end of a gesture scroll sequence (i.e. past the GestureScrollEnd event)?
&gt; 
&gt; The member |m_previousGestureScrolledNode| is cleared on every GestureScrollBegin event. A fling gesture will not send a GestureScrollEnd event, which is why I opted to clear the value on a GestureScrollBegin instead. 
&gt; 

It should</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843462</commentid>
    <comment_count>22</comment_count>
    <who name="Terry Anderson">tdanderson</who>
    <bug_when>2013-02-27 13:46:26 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #18)
&gt; &gt; &gt;&gt; Source/WebCore/page/EventHandler.cpp:2680
&gt; &gt; &gt;&gt; +        m_previousGestureScrolledNode = stopNode;
&gt; &gt; &gt; 
&gt; &gt; &gt; When is this reference cleared?
&gt; &gt; 
&gt; &gt; I clear |m_previousGestureScrolledNode| in EventHandler::handleGestureScrollBegin().
&gt; 
&gt; But that means the Node will be held alive until the next gesture scroll, which may be far in the distant future or never happen.  That&apos;s a major memory problem.  Why not clear it at the end of the gesture sequence?

That&apos;s a good point, I did not consider the impact on memory. I will clear both |m_previousGestureScrolledNode| and |m_scrollGestureHandlingNode| on a GestureScrollEnd and re-upload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843476</commentid>
    <comment_count>23</comment_count>
      <attachid>190599</attachid>
    <who name="Terry Anderson">tdanderson</who>
    <bug_when>2013-02-27 13:59:25 -0800</bug_when>
    <thetext>Created attachment 190599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843480</commentid>
    <comment_count>24</comment_count>
      <attachid>190599</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-27 14:05:13 -0800</bug_when>
    <thetext>Comment on attachment 190599
Patch

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

&gt; Source/WebCore/page/EventHandler.cpp:2637
&gt; +    m_previousGestureScrolledNode = 0;

this should just be an ASSERT() - we should never get a GestureScrollBegin after a GestureScrollUpdate without an intervening GestureScrollEnd</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843489</commentid>
    <comment_count>25</comment_count>
      <attachid>190599</attachid>
    <who name="Terry Anderson">tdanderson</who>
    <bug_when>2013-02-27 14:08:39 -0800</bug_when>
    <thetext>Comment on attachment 190599
Patch

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

&gt;&gt; Source/WebCore/page/EventHandler.cpp:2637
&gt;&gt; +    m_previousGestureScrolledNode = 0;
&gt; 
&gt; this should just be an ASSERT() - we should never get a GestureScrollBegin after a GestureScrollUpdate without an intervening GestureScrollEnd

It is necessary to do this here because flings never send GestureScrollEnd events, so this is the only place where |m_previousGestureScrolledNode| will be cleared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843493</commentid>
    <comment_count>26</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-27 14:12:46 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 190599 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=190599&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/page/EventHandler.cpp:2637
&gt; &gt;&gt; +    m_previousGestureScrolledNode = 0;
&gt; &gt; 
&gt; &gt; this should just be an ASSERT() - we should never get a GestureScrollBegin after a GestureScrollUpdate without an intervening GestureScrollEnd
&gt; 
&gt; It is necessary to do this here because flings never send GestureScrollEnd events, so this is the only place where |m_previousGestureScrolledNode| will be cleared.

OK, then you need to fix flings first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844221</commentid>
    <comment_count>27</comment_count>
      <attachid>190758</attachid>
    <who name="Terry Anderson">tdanderson</who>
    <bug_when>2013-02-28 10:48:52 -0800</bug_when>
    <thetext>Created attachment 190758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844222</commentid>
    <comment_count>28</comment_count>
      <attachid>190758</attachid>
    <who name="Terry Anderson">tdanderson</who>
    <bug_when>2013-02-28 10:49:55 -0800</bug_when>
    <thetext>Comment on attachment 190758
Patch

The two stored nodes corresponding to a scroll event are now also cleared after a fling ends.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845562</commentid>
    <comment_count>29</comment_count>
      <attachid>190758</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-01 15:32:03 -0800</bug_when>
    <thetext>Comment on attachment 190758
Patch

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

Looks great! R=me

&gt; LayoutTests/fast/events/touch/gesture/touch-gesture-noscroll-body-propagated.html:1
&gt; +&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;

just &lt;!DOCTYPE html&gt; is better</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845574</commentid>
    <comment_count>30</comment_count>
      <attachid>191056</attachid>
    <who name="Terry Anderson">tdanderson</who>
    <bug_when>2013-03-01 15:54:59 -0800</bug_when>
    <thetext>Created attachment 191056
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845656</commentid>
    <comment_count>31</comment_count>
      <attachid>191056</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-01 17:10:24 -0800</bug_when>
    <thetext>Comment on attachment 191056
Patch for landing

Clearing flags on attachment: 191056

Committed r144519: &lt;http://trac.webkit.org/changeset/144519&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845657</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-01 17:10:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847070</commentid>
    <comment_count>33</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2013-03-04 17:19:37 -0800</bug_when>
    <thetext>The new tests are failing on mac:

http://trac.webkit.org/changeset/144700</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847893</commentid>
    <comment_count>34</comment_count>
    <who name="Terry Anderson">tdanderson</who>
    <bug_when>2013-03-05 12:01:16 -0800</bug_when>
    <thetext>Chromium mac does not use the same gesture scrolling paths, so these failures are expected and it is fine to leave http://trac.webkit.org/changeset/144519 in the tree. The chromium mac baselines will need to be changed, which I am tracking here https://bugs.webkit.org/show_bug.cgi?id=111462 .</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188219</attachid>
            <date>2013-02-13 16:32:53 -0800</date>
            <delta_ts>2013-02-15 16:28:00 -0800</delta_ts>
            <desc>Early WIP, not for review</desc>
            <filename>bug-109769-20130213192921.patch</filename>
            <type>text/plain</type>
            <size>11683</size>
            <attacher name="Terry Anderson">tdanderson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjBmMmM2NjhjMzdiN2Mx
ZmEwZTk2ZmQ2ZGI1YTBkMWI4YjdlMGIwMS4uY2ZhMTIxMDEzZmRiZjc1YjgyZTBmNjVkMjU5YTRk
MWI3MjVmY2U0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEzLTAyLTEzICBUZXJy
eSBBbmRlcnNvbiAgPHRkYW5kZXJzb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZSgpIHNob3VsZCBub3QgdXNlIFJlbmRlckxh
eWVyOjpzY3JvbGxCeSgpIHRvIHBlcmZvcm0gc2Nyb2xsaW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3NjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6aGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZSk6CisgICAgICAgICogcGFnZS9GcmFtZVZp
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
Omdlc3R1cmVTY3JvbGxVcGRhdGVFdmVudCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoK
KyAgICAgICAgKEZyYW1lVmlldyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6aGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZUV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvci5oOgorICAgICAgICAoU2Nyb2xsQW5pbWF0b3IpOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OmhhbmRsZUdlc3R1cmVTY3JvbGxVcGRhdGVFdmVudCk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFNjcm9sbGFi
bGVBcmVhKToKKwogMjAxMy0wMi0xMyAgWGlhbnpodSBXYW5nICA8d2FuZ3hpYW56aHVAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEhlYXAtdXNlLWFmdGVyLWZyZWUgaW4gV2ViQ29yZTo6U2Nyb2xs
aW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWluZWRP
YmplY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZmI2MzFmN2IxMWI4
ODc3ZTUwZjgyNWU2ZTFhODczNzkxNWM4MTZkZi4uMTg2ZjgxOWEyZGQyZTI2ZGU4NGZhMjM1MGM3
MDI2MzhjMTZiYmU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjYz
NiwxOCArMjYzNiw2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzR2VzdHVyZUV2ZW50VG9XaWRn
ZXRJZlBvc3NpYmxlKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1zdGF0aWMgY29uc3QgTm9kZSogY2xvc2VzdFNjcm9sbGFibGVOb2RlQ2FuZGlkYXRl
KGNvbnN0IE5vZGUqIG5vZGUpCi17Ci0gICAgZm9yIChjb25zdCBOb2RlKiBzY3JvbGxhYmxlTm9k
ZSA9IG5vZGU7IHNjcm9sbGFibGVOb2RlOyBzY3JvbGxhYmxlTm9kZSA9IHNjcm9sbGFibGVOb2Rl
LT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKHNjcm9sbGFibGVOb2RlLT5pc0RvY3VtZW50
Tm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuIHNjcm9sbGFibGVOb2RlOwotICAgICAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gc2Nyb2xsYWJsZU5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgICAg
IGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNCb3goKSAmJiB0b1JlbmRlckJveChyZW5kZXJl
ciktPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKQotICAgICAgICAgICAgcmV0
dXJuIHNjcm9sbGFibGVOb2RlOwotICAgIH0KLSAgICByZXR1cm4gbm9kZTsKLX0KLQogYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxCZWdpbihjb25zdCBQbGF0Zm9ybUdlc3R1
cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJh
bWUtPmRvY3VtZW50KCk7CkBAIC0yNjc3LDcgKzI2NjUsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlR2VzdHVyZVNjcm9sbEJlZ2luKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0
dXJlRQogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxVcGRhdGUoY29uc3Qg
UGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKICAgICAvLyBJZ25vcmUgdGhp
cyBldmVudCBpZiB3ZSBkb24ndCBhbHJlYWR5IGhhdmUgYSB0YXJnZXRlZCBub2RlIHdpdGggYSB2
YWxpZCByZW5kZXJlci4KLSAgICBjb25zdCBOb2RlKiBub2RlID0gbV9zY3JvbGxHZXN0dXJlSGFu
ZGxpbmdOb2RlLmdldCgpOworICAgIE5vZGUqIG5vZGUgPSBtX3Njcm9sbEdlc3R1cmVIYW5kbGlu
Z05vZGUuZ2V0KCk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTI2ODUsNyArMjY3Myw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xs
VXBkYXRlKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlCiAgICAgaWYgKCFsYXRj
aGVkUmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEludFNpemUgZGVsdGEo
LWdlc3R1cmVFdmVudC5kZWx0YVgoKSwgLWdlc3R1cmVFdmVudC5kZWx0YVkoKSk7CisgICAgSW50
U2l6ZSBkZWx0YShnZXN0dXJlRXZlbnQuZGVsdGFYKCksIGdlc3R1cmVFdmVudC5kZWx0YVkoKSk7
CiAgICAgaWYgKGRlbHRhLmlzWmVybygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI2
OTQsMzAgKzI2ODIsMjYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxV
cGRhdGUoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmUKICAgICAvLyBUcnkgdG8g
c2VuZCB0aGUgZXZlbnQgdG8gdGhlIGNvcnJlY3Qgdmlldy4KICAgICBpZiAocGFzc0dlc3R1cmVF
dmVudFRvV2lkZ2V0SWZQb3NzaWJsZShnZXN0dXJlRXZlbnQsIGxhdGNoZWRSZW5kZXJlcikpCiAg
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gT3RoZXJ3aXNlIGlmIHRoaXMgaXMgdGhlIGNv
cnJlY3QgdmlldyBmb3IgdGhlIGV2ZW50LCBmaW5kIHRoZSBjbG9zZXN0IHNjcm9sbGFibGUKLSAg
ICAvLyBhbmNlc3RvciBvZiB0aGUgdGFyZ2V0ZWQgbm9kZSBhbmQgc2Nyb2xsIHRoZSBsYXllciB0
aGF0IGNvbnRhaW5zIHRoaXMgbm9kZSdzIHJlbmRlcmVyLgotICAgIG5vZGUgPSBjbG9zZXN0U2Ny
b2xsYWJsZU5vZGVDYW5kaWRhdGUobm9kZSk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBsYXRjaGVkUmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAg
IGlmICghbGF0Y2hlZFJlbmRlcmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBSZW5k
ZXJMYXllcjo6U2Nyb2xsUHJvcGFnYXRpb24gc2hvdWxkUHJvcGFnYXRlID0gUmVuZGVyTGF5ZXI6
OlNob3VsZFByb3BhZ2F0ZVNjcm9sbDsKLSAgICBpZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQ
bGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9uKQotICAg
ICAgICBzaG91bGRQcm9wYWdhdGUgPSBSZW5kZXJMYXllcjo6RG9udFByb3BhZ2F0ZVNjcm9sbDsK
LQorICAgIAorICAgIE5vZGUqIHN0b3BOb2RlID0gbV9wcmV2aW91c1doZWVsU2Nyb2xsZWROb2Rl
LmdldCgpOworICAgIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gU2Nyb2xsQnlQaXhl
bDsgLy8gb3IgU2Nyb2xsQnlQcmVjaXNlUGl4ZWw/CiAgICAgY29uc3QgZmxvYXQgc2NhbGVGYWN0
b3IgPSBtX2ZyYW1lLT5wYWdlWm9vbUZhY3RvcigpICogbV9mcmFtZS0+ZnJhbWVTY2FsZUZhY3Rv
cigpOwogICAgIGRlbHRhLnNjYWxlKDEgLyBzY2FsZUZhY3RvciwgMSAvIHNjYWxlRmFjdG9yKTsK
IAotICAgIGJvb2wgcmVzdWx0ID0gbGF0Y2hlZFJlbmRlcmVyLT5lbmNsb3NpbmdMYXllcigpLT5z
Y3JvbGxCeShkZWx0YSwgUmVuZGVyTGF5ZXI6OlNjcm9sbE9mZnNldENsYW1wZWQsIHNob3VsZFBy
b3BhZ2F0ZSk7Ci0KLSAgICBpZiAocmVzdWx0KQorICAgIC8vIEZpcnN0IHRyeSB0byBzY3JvbGwg
dGhlIGNsb3Nlc3Qgc2Nyb2xsYWJsZSBSZW5kZXJCb3ggYW5jZXN0b3Igb2YgfG5vZGV8LgorICAg
IGJvb2wgaG9yaXpvbnRhbFNjcm9sbCA9IHNjcm9sbE5vZGUoZGVsdGEud2lkdGgoKSwgZ3JhbnVs
YXJpdHksIFNjcm9sbExlZnQsIFNjcm9sbFJpZ2h0LCBub2RlLCAmc3RvcE5vZGUpOworICAgIGJv
b2wgdmVydGljYWxTY3JvbGwgPSBzY3JvbGxOb2RlKGRlbHRhLmhlaWdodCgpLCBncmFudWxhcml0
eSwgU2Nyb2xsVXAsIFNjcm9sbERvd24sIG5vZGUsICZzdG9wTm9kZSk7CisgICAgaWYgKGhvcml6
b250YWxTY3JvbGwgfHwgdmVydGljYWxTY3JvbGwpIHsKICAgICAgICAgc2V0RnJhbWVXYXNTY3Jv
bGxlZEJ5VXNlcigpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKLSAgICByZXR1cm4g
cmVzdWx0OworICAgIC8vIE90aGVyd2lzZSB0cnkgdG8gc2Nyb2xsIHRoZSByb290LgorICAgIEZy
YW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB2aWV3LT5nZXN0dXJlU2Nyb2xsVXBkYXRlRXZl
bnQoZ2VzdHVyZUV2ZW50KTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OmlzU2Nyb2xsYmFySGFu
ZGxpbmdHZXN0dXJlcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZGFj
YTA4ODEwYzk1MThkZjM4Y2JmY2JiNDhlMjIyMzQxZWI2Mjk0OS4uMmJlMGNiZDQyZjRjNzA5MDYw
YWZhZTdhMDJmMDAwZWVjYzdiM2FjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAt
Mzg3Miw2ICszODcyLDM5IEBAIGJvb2wgRnJhbWVWaWV3Ojp3aGVlbEV2ZW50KGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKICAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6Omhh
bmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCk7CiB9CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVO
VFMpCitib29sIEZyYW1lVmlldzo6Z2VzdHVyZVNjcm9sbFVwZGF0ZUV2ZW50KGNvbnN0IFBsYXRm
b3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCit7CisgICAgLy8gTm90ZSB0aGF0IHRvIGFs
bG93IGZvciBydWJiZXItYmFuZCBvdmVyLXNjcm9sbCBiZWhhdmlvciwgZXZlbiBub24tc2Nyb2xs
YWJsZSB2aWV3cworICAgIC8vIHNob3VsZCBoYW5kbGUgd2hlZWwgZXZlbnRzLgorI2lmICFFTkFC
TEUoUlVCQkVSX0JBTkRJTkcpCisgICAgaWYgKCFpc1Njcm9sbGFibGUoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCisKKyAgICBpZiAoZGVsZWdhdGVzU2Nyb2xsaW5nKCkpIHsKKyAg
ICAgICAgSW50U2l6ZSBvZmZzZXQgPSBzY3JvbGxPZmZzZXQoKTsKKyAgICAgICAgSW50U2l6ZSBu
ZXdPZmZzZXQgPSBJbnRTaXplKG9mZnNldC53aWR0aCgpIC0gZ2VzdHVyZUV2ZW50LmRlbHRhWCgp
LCBvZmZzZXQuaGVpZ2h0KCkgLSBnZXN0dXJlRXZlbnQuZGVsdGFZKCkpOworICAgICAgICBpZiAo
b2Zmc2V0ICE9IG5ld09mZnNldCkgeworICAgICAgICAgICAgU2Nyb2xsVmlldzo6c2Nyb2xsVG8o
bmV3T2Zmc2V0KTsKKyAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uQ2hhbmdlZCgpOworICAgICAg
ICAgICAgZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaWRDaGFuZ2VTY3JvbGxPZmZzZXQo
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBXZSBk
b24ndCBhbGxvdyBtb3VzZSB3aGVlbGluZyB0byBoYXBwZW4gaW4gYSBTY3JvbGxWaWV3IHRoYXQg
aGFzIGhhZCBpdHMgc2Nyb2xsYmFycyBleHBsaWNpdGx5IGRpc2FibGVkLgorICAgIGlmICghY2Fu
SGF2ZVNjcm9sbGJhcnMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisjaWYgIVBMQVRGT1JN
KFdYKQorICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKKworICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6aGFuZGxlR2VzdHVyZVNjcm9sbFVw
ZGF0ZUV2ZW50KGdlc3R1cmVFdmVudCk7Cit9CisjZW5kaWYKIAogYm9vbCBGcmFtZVZpZXc6Omlz
VmVydGljYWxEb2N1bWVudCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCAy
YmFmZTYyMDRlN2Y3YjhjZTE5NGE5NTM0ODZlNzQ4ZTcxNjkxZDE3Li4wM2UxYmEwMmVjMGY4Yzgw
ZjcwZDVmN2E5ZmYwMTNhMTVmZjQwN2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTM3
MCw2ICszNzAsMTAgQEAgcHVibGljOgogICAgIC8vIHdlIG5lZWQgdGhpcyBmdW5jdGlvbiBpbiBv
cmRlciB0byBkbyB0aGUgc2Nyb2xsIG91cnNlbHZlcy4KICAgICBib29sIHdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisg
ICAgYm9vbCBnZXN0dXJlU2Nyb2xsVXBkYXRlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZl
bnQmKTsKKyNlbmRpZgorCiAgICAgdm9pZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdF
bmFibGVkKGJvb2wpOwogCiAgICAgLy8gUGFnZSBhbmQgRnJhbWVWaWV3IGJvdGggc3RvcmUgYSBQ
YWdpbmF0aW9uIHZhbHVlLiBQYWdlOjpwYWdpbmF0aW9uKCkgaXMgc2V0IG9ubHkgYnkgQVBJLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IDU3NzQyZTZm
YjBiNDMzOWZjMjQzNDExYTIwMjU0YWQzMjEzNDRiMWQuLmFkZmE4MjVlMDM3Y2Y3ZGMyY2EzNDUy
N2I4YjE3ZTAzZjY5ZTVkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvci5jcHAKQEAgLTEzMCw2ICsxMzAsMzkgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxl
V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGUpCiAgICAgcmV0dXJuIGhhbmRs
ZWQ7CiB9CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitib29sIFNjcm9sbEFuaW1hdG9y
OjpoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZl
bnQmIGUpCit7CisgICAgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyID0gbV9zY3JvbGxh
YmxlQXJlYS0+aG9yaXpvbnRhbFNjcm9sbGJhcigpOworICAgIFNjcm9sbGJhciogdmVydGljYWxT
Y3JvbGxiYXIgPSBtX3Njcm9sbGFibGVBcmVhLT52ZXJ0aWNhbFNjcm9sbGJhcigpOworCisgICAg
Ly8gQWNjZXB0IHRoZSBldmVudCBpZiB3ZSBoYXZlIGEgc2Nyb2xsYmFyIGluIHRoYXQgZGlyZWN0
aW9uIGFuZCBjYW4gc3RpbGwKKyAgICAvLyBzY3JvbGwgYW55IGZ1cnRoZXIuCisgICAgZmxvYXQg
ZGVsdGFYID0gaG9yaXpvbnRhbFNjcm9sbGJhciA/IGUuZGVsdGFYKCkgOiAwOworICAgIGZsb2F0
IGRlbHRhWSA9IHZlcnRpY2FsU2Nyb2xsYmFyID8gZS5kZWx0YVkoKSA6IDA7CisKKyAgICBib29s
IGhhbmRsZWQgPSBmYWxzZTsKKworICAgIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0g
U2Nyb2xsQnlQaXhlbDsKKworICAgIEludFNpemUgbWF4Rm9yd2FyZFNjcm9sbERlbHRhID0gbV9z
Y3JvbGxhYmxlQXJlYS0+bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgLSBtX3Njcm9sbGFibGVBcmVh
LT5zY3JvbGxQb3NpdGlvbigpOworICAgIEludFNpemUgbWF4QmFja3dhcmRTY3JvbGxEZWx0YSA9
IG1fc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFBvc2l0aW9uKCkgLSBtX3Njcm9sbGFibGVBcmVhLT5t
aW5pbXVtU2Nyb2xsUG9zaXRpb24oKTsKKyAgICBpZiAoKGRlbHRhWCA8IDAgJiYgbWF4Rm9yd2Fy
ZFNjcm9sbERlbHRhLndpZHRoKCkgPiAwKQorICAgICAgICB8fCAoZGVsdGFYID4gMCAmJiBtYXhC
YWNrd2FyZFNjcm9sbERlbHRhLndpZHRoKCkgPiAwKQorICAgICAgICB8fCAoZGVsdGFZIDwgMCAm
JiBtYXhGb3J3YXJkU2Nyb2xsRGVsdGEuaGVpZ2h0KCkgPiAwKQorICAgICAgICB8fCAoZGVsdGFZ
ID4gMCAmJiBtYXhCYWNrd2FyZFNjcm9sbERlbHRhLmhlaWdodCgpID4gMCkpIHsKKyAgICAgICAg
aGFuZGxlZCA9IHRydWU7CisKKyAgICAgICAgaWYgKGRlbHRhWSkKKyAgICAgICAgICAgIHNjcm9s
bChWZXJ0aWNhbFNjcm9sbGJhciwgZ3JhbnVsYXJpdHksIHZlcnRpY2FsU2Nyb2xsYmFyLT5waXhl
bFN0ZXAoKSwgLWRlbHRhWSk7CisKKyAgICAgICAgaWYgKGRlbHRhWCkKKyAgICAgICAgICAgIHNj
cm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBncmFudWxhcml0eSwgaG9yaXpvbnRhbFNjcm9sbGJh
ci0+cGl4ZWxTdGVwKCksIC1kZWx0YVgpOworICAgIH0KKyAgICByZXR1cm4gaGFuZGxlZDsKK30K
KyNlbmRpZgorCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpzZXRDdXJyZW50UG9zaXRpb24oY29uc3Qg
RmxvYXRQb2ludCYgcG9zaXRpb24pCiB7CiAgICAgbV9jdXJyZW50UG9zWCA9IHBvc2l0aW9uLngo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCmluZGV4IDI4ODlmNDIw
NDY0OGQxYzkwZWQzZTAzOTQwOThjMmQxYmIxNjYzMDguLjc0MmM3ZjA2NWFkODQ0MDQ0OWMzZTQ5
ZWY1ZmQyODhmMzQ2MjZlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuaApAQCAtMzgsNiArMzgsMTAgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorI2lu
Y2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2ZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBGbG9hdFBvaW50OwpAQCAtNjUsNiArNjksMTAgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
Jik7CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgdmlydHVhbCBib29sIGhhbmRs
ZUdlc3R1cmVTY3JvbGxVcGRhdGVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwor
I2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1Mo
REFSV0lOKSkKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlKSB7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuY3BwCmluZGV4IDM1ZGFhYzRhZDkzNWFkNTBhODM4ZDBjYzIyYTVhZDdjMWQw
MTMxZGEuLmYwYmU0MWRhY2EzYzZlODY4YWRjOTE2ZmIzZGQ1YWU4NGRmM2FlMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTE4NSw2ICsxODUsMTMg
QEAgYm9vbCBTY3JvbGxhYmxlQXJlYTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiAgICAgcmV0dXJuIHNjcm9sbEFuaW1hdG9yKCktPmhhbmRs
ZVdoZWVsRXZlbnQod2hlZWxFdmVudCk7CiB9CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMp
Citib29sIFNjcm9sbGFibGVBcmVhOjpoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlRXZlbnQoY29u
c3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKK3sKKyAgICByZXR1cm4gc2Ny
b2xsQW5pbWF0b3IoKS0+aGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZUV2ZW50KGdlc3R1cmVFdmVu
dCk7Cit9CisjZW5kaWYKKwogLy8gTk9URTogT25seSBjYWxsZWQgZnJvbSBJbnRlcm5hbHMgZm9y
IHRlc3RpbmcuCiB2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxPZmZzZXRGcm9tSW50ZXJu
YWxzKGNvbnN0IEludFBvaW50JiBvZmZzZXQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuaAppbmRleCA1ZmE2ZTI3ZDk3ZTFiYzNhM2IyMTY2NTI4ZjRhMjU5YzY5ZDlh
NjZhLi40ZWM3Nzc4NjQ4ZWE2ZTk2YzQ3NmJhZjRmNmIxNjMyYjIzZDg2NmVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTU4LDYgKzU4LDEwIEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
KTsKIAorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyAgICBib29sIGhhbmRsZUdlc3R1cmVT
Y3JvbGxVcGRhdGVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOworI2VuZGlmCisK
ICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIGlmIHlvdSBjYW4gc2Nyb2xsIHBhc3Qg
dGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQuCiAgICAgYm9vbCBjb25zdHJhaW5zU2Nyb2xsaW5nVG9D
b250ZW50RWRnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVu
dEVkZ2U7IH0KICAgICB2b2lkIHNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKGJv
b2wgY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UpIHsgbV9jb25zdHJhaW5zU2Nyb2xs
aW5nVG9Db250ZW50RWRnZSA9IGNvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188663</attachid>
            <date>2013-02-15 16:28:02 -0800</date>
            <delta_ts>2013-02-25 16:16:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109769-20130215192428.patch</filename>
            <type>text/plain</type>
            <size>16991</size>
            <attacher name="Terry Anderson">tdanderson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJlMTMzNzg4NGI2ZTYy
NGYwY2FmZDNkOTI4YWQ5NzQ3ZWE1Mzc0MC4uYmEyMDQ3NWQ5NmQwMzI3OTAxNGJkYWJmZTJiYWM4
YzI3ZDEzN2QyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTAyLTE1ICBUZXJy
eSBBbmRlcnNvbiAgPHRkYW5kZXJzb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZSgpIHNob3VsZCBub3QgdXNlIFJlbmRlckxh
eWVyOjpzY3JvbGxCeSgpIHRvIHBlcmZvcm0gc2Nyb2xsaW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3NjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0
dXJlU2Nyb2xsQmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVH
ZXN0dXJlU2Nyb2xsVXBkYXRlKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpnZXN0dXJlU2Nyb2xsVXBkYXRlRXZlbnQpOgorICAgICAgICAq
IHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgIChGcmFtZVZpZXcpOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3I6OmhhbmRsZUdlc3R1cmVTY3JvbGxVcGRhdGVFdmVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaDoKKyAgICAgICAgKFNjcm9sbEFuaW1h
dG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpoYW5kbGVHZXN0dXJl
U2Nyb2xsVXBkYXRlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6
CisgICAgICAgIChTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxCeVJlY3Vyc2l2
ZWx5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKwogMjAxMy0wMi0xNSAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBj
b25zdCBmcm9tIGEgYnVuY2ggb2YgU3RvcmFnZUFyZWEgbWVtYmVyIGZ1bmN0aW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGI2ZjFhMjA0N2RiZmQ1ZTY2MWUwYTQwMTY3
ZmYzOGJmMmFhNGRkM2EuLmY0ZTljMDRmNDdkYjU0MGNmNDBhN2MwNzNmMGE4MTMxODI2ODg2ZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTQwMyw2ICs0MDMsNyBAQCB2
b2lkIEV2ZW50SGFuZGxlcjo6Y2xlYXIoKQogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKICAg
ICBtX3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGUgPSAwOwogICAgIG1fbGFzdEhpdFRlc3RSZXN1
bHRPdmVyV2lkZ2V0ID0gZmFsc2U7CisgICAgbV9wcmV2aW91c0dlc3R1cmVTY3JvbGxlZE5vZGUg
PSAwOwogICAgIG1fc2Nyb2xsYmFySGFuZGxpbmdTY3JvbGxHZXN0dXJlID0gMDsKICNlbmRpZgog
ICAgIG1fbWF4TW91c2VNb3ZlZER1cmF0aW9uID0gMDsKQEAgLTI2MzMsMTggKzI2MzQsNiBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6cGFzc0dlc3R1cmVFdmVudFRvV2lkZ2V0SWZQb3NzaWJsZShjb25z
dCBQbGF0Zm9ybUdlc3R1cmVFdmVudAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGNv
bnN0IE5vZGUqIGNsb3Nlc3RTY3JvbGxhYmxlTm9kZUNhbmRpZGF0ZShjb25zdCBOb2RlKiBub2Rl
KQotewotICAgIGZvciAoY29uc3QgTm9kZSogc2Nyb2xsYWJsZU5vZGUgPSBub2RlOyBzY3JvbGxh
YmxlTm9kZTsgc2Nyb2xsYWJsZU5vZGUgPSBzY3JvbGxhYmxlTm9kZS0+cGFyZW50Tm9kZSgpKSB7
Ci0gICAgICAgIGlmIChzY3JvbGxhYmxlTm9kZS0+aXNEb2N1bWVudE5vZGUoKSkKLSAgICAgICAg
ICAgIHJldHVybiBzY3JvbGxhYmxlTm9kZTsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IHNjcm9sbGFibGVOb2RlLT5yZW5kZXJlcigpOwotICAgICAgICBpZiAocmVuZGVyZXIgJiYg
cmVuZGVyZXItPmlzQm94KCkgJiYgdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jYW5CZVNjcm9sbGVk
QW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKLSAgICAgICAgICAgIHJldHVybiBzY3JvbGxhYmxlTm9k
ZTsKLSAgICB9Ci0gICAgcmV0dXJuIG5vZGU7Ci19Ci0KIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVHZXN0dXJlU2Nyb2xsQmVnaW4oY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVF
dmVudCkKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwpA
QCAtMjY2Myw2ICsyNjUyLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3Jv
bGxCZWdpbihjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUUKIAogICAgIG1fbGFz
dEhpdFRlc3RSZXN1bHRPdmVyV2lkZ2V0ID0gcmVzdWx0LmlzT3ZlcldpZGdldCgpOyAKICAgICBt
X3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CisgICAgbV9w
cmV2aW91c0dlc3R1cmVTY3JvbGxlZE5vZGUgPSAwOwogCiAgICAgTm9kZSogbm9kZSA9IG1fc2Ny
b2xsR2VzdHVyZUhhbmRsaW5nTm9kZS5nZXQoKTsKICAgICBpZiAobm9kZSkKQEAgLTI2NzQsNyAr
MjY2NCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xsQmVnaW4oY29u
c3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFCiBib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZShjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVy
ZUV2ZW50KQogewogICAgIC8vIElnbm9yZSB0aGlzIGV2ZW50IGlmIHdlIGRvbid0IGFscmVhZHkg
aGF2ZSBhIHRhcmdldGVkIG5vZGUgd2l0aCBhIHZhbGlkIHJlbmRlcmVyLgotICAgIGNvbnN0IE5v
ZGUqIG5vZGUgPSBtX3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGUuZ2V0KCk7CisgICAgTm9kZSog
bm9kZSA9IG1fc2Nyb2xsR2VzdHVyZUhhbmRsaW5nTm9kZS5nZXQoKTsKICAgICBpZiAoIW5vZGUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjY4Miw3ICsyNjcyLDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxVcGRhdGUoY29uc3QgUGxhdGZvcm1HZXN0dXJl
RXZlbnQmIGdlc3R1cmUKICAgICBpZiAoIWxhdGNoZWRSZW5kZXJlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgSW50U2l6ZSBkZWx0YSgtZ2VzdHVyZUV2ZW50LmRlbHRhWCgpLCAtZ2Vz
dHVyZUV2ZW50LmRlbHRhWSgpKTsKKyAgICBGbG9hdFNpemUgZGVsdGEoZ2VzdHVyZUV2ZW50LmRl
bHRhWCgpLCBnZXN0dXJlRXZlbnQuZGVsdGFZKCkpOwogICAgIGlmIChkZWx0YS5pc1plcm8oKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yNjkyLDI5ICsyNjgyLDM4IEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlKGNvbnN0IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50JiBnZXN0dXJlCiAgICAgaWYgKHBhc3NHZXN0dXJlRXZlbnRUb1dpZGdldElmUG9zc2li
bGUoZ2VzdHVyZUV2ZW50LCBsYXRjaGVkUmVuZGVyZXIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIC8vIE90aGVyd2lzZSBpZiB0aGlzIGlzIHRoZSBjb3JyZWN0IHZpZXcgZm9yIHRoZSBl
dmVudCwgZmluZCB0aGUgY2xvc2VzdCBzY3JvbGxhYmxlCi0gICAgLy8gYW5jZXN0b3Igb2YgdGhl
IHRhcmdldGVkIG5vZGUgYW5kIHNjcm9sbCB0aGUgbGF5ZXIgdGhhdCBjb250YWlucyB0aGlzIG5v
ZGUncyByZW5kZXJlci4KLSAgICBub2RlID0gY2xvc2VzdFNjcm9sbGFibGVOb2RlQ2FuZGlkYXRl
KG5vZGUpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbGF0
Y2hlZFJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIWxhdGNoZWRSZW5kZXJl
cikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmVuZGVyTGF5ZXI6OlNjcm9sbFByb3Bh
Z2F0aW9uIHNob3VsZFByb3BhZ2F0ZSA9IFJlbmRlckxheWVyOjpTaG91bGRQcm9wYWdhdGVTY3Jv
bGw7Ci0gICAgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVy
ZVNjcm9sbFVwZGF0ZVdpdGhvdXRQcm9wYWdhdGlvbikKLSAgICAgICAgc2hvdWxkUHJvcGFnYXRl
ID0gUmVuZGVyTGF5ZXI6OkRvbnRQcm9wYWdhdGVTY3JvbGw7CisgICAgU2Nyb2xsR3JhbnVsYXJp
dHkgZ3JhbnVsYXJpdHkgPSBTY3JvbGxCeVBpeGVsOyAKIAogICAgIGNvbnN0IGZsb2F0IHNjYWxl
RmFjdG9yID0gbV9mcmFtZS0+cGFnZVpvb21GYWN0b3IoKSAqIG1fZnJhbWUtPmZyYW1lU2NhbGVG
YWN0b3IoKTsKICAgICBkZWx0YS5zY2FsZSgxIC8gc2NhbGVGYWN0b3IsIDEgLyBzY2FsZUZhY3Rv
cik7CiAKLSAgICBib29sIHJlc3VsdCA9IGxhdGNoZWRSZW5kZXJlci0+ZW5jbG9zaW5nTGF5ZXIo
KS0+c2Nyb2xsQnkoZGVsdGEsIFJlbmRlckxheWVyOjpTY3JvbGxPZmZzZXRDbGFtcGVkLCBzaG91
bGRQcm9wYWdhdGUpOworICAgIE5vZGUqIHN0b3BOb2RlID0gMDsKKyAgICBib29sIHNjcm9sbFNo
b3VsZE5vdFByb3BhZ2F0ZSA9IGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6
R2VzdHVyZVNjcm9sbFVwZGF0ZVdpdGhvdXRQcm9wYWdhdGlvbjsKKyAgICBpZiAoc2Nyb2xsU2hv
dWxkTm90UHJvcGFnYXRlKQorICAgICAgICBzdG9wTm9kZSA9IG1fcHJldmlvdXNHZXN0dXJlU2Ny
b2xsZWROb2RlLmdldCgpOwogCi0gICAgaWYgKHJlc3VsdCkKKyAgICAvLyBGaXJzdCB0cnkgdG8g
c2Nyb2xsIHRoZSBjbG9zZXN0IHNjcm9sbGFibGUgUmVuZGVyQm94IGFuY2VzdG9yIG9mIHxub2Rl
fC4KKyAgICBib29sIGhvcml6b250YWxTY3JvbGwgPSBzY3JvbGxOb2RlKGRlbHRhLndpZHRoKCks
IGdyYW51bGFyaXR5LCBTY3JvbGxMZWZ0LCBTY3JvbGxSaWdodCwgbm9kZSwgJnN0b3BOb2RlKTsK
KyAgICBib29sIHZlcnRpY2FsU2Nyb2xsID0gc2Nyb2xsTm9kZShkZWx0YS5oZWlnaHQoKSwgZ3Jh
bnVsYXJpdHksIFNjcm9sbFVwLCBTY3JvbGxEb3duLCBub2RlLCAmc3RvcE5vZGUpOworCisgICAg
aWYgKHNjcm9sbFNob3VsZE5vdFByb3BhZ2F0ZSkKKyAgICAgICAgbV9wcmV2aW91c0dlc3R1cmVT
Y3JvbGxlZE5vZGUgPSBzdG9wTm9kZTsKKworICAgIGlmIChob3Jpem9udGFsU2Nyb2xsIHx8IHZl
cnRpY2FsU2Nyb2xsKSB7CiAgICAgICAgIHNldEZyYW1lV2FzU2Nyb2xsZWRCeVVzZXIoKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICAvLyBP
dGhlcndpc2UgdHJ5IHRvIHNjcm9sbCB0aGUgdmlldy4KKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBt
X2ZyYW1lLT52aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBib29sIHNjcm9sbGVkRnJhbWUgPSB2aWV3LT5nZXN0dXJlU2Nyb2xsVXBkYXRlRXZlbnQo
Z2VzdHVyZUV2ZW50KTsKKyAgICBpZiAoc2Nyb2xsZWRGcmFtZSkKKyAgICAgICAgc2V0RnJhbWVX
YXNTY3JvbGxlZEJ5VXNlcigpOworCisgICAgcmV0dXJuIHNjcm9sbGVkRnJhbWU7CiB9CiAKIGJv
b2wgRXZlbnRIYW5kbGVyOjppc1Njcm9sbGJhckhhbmRsaW5nR2VzdHVyZXMoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggM2ZjMDdmMmZhMjUyZjljNDVmMjRmMWY2YjU1
ZTQ3ZTdhMDBkNzUzZS4uNDY4N2RiZWEzYjg3NDAxNDYwZTgxYTE5ZGUyMzFhNDg0YTllMzc4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC00NjksNiArNDY5LDcgQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgUmVmUHRyPE5vZGU+IG1fc2Nyb2xs
R2VzdHVyZUhhbmRsaW5nTm9kZTsKICAgICBib29sIG1fbGFzdEhpdFRlc3RSZXN1bHRPdmVyV2lk
Z2V0OworICAgIFJlZlB0cjxOb2RlPiBtX3ByZXZpb3VzR2VzdHVyZVNjcm9sbGVkTm9kZTsKICAg
ICBSZWZQdHI8U2Nyb2xsYmFyPiBtX3Njcm9sbGJhckhhbmRsaW5nU2Nyb2xsR2VzdHVyZTsKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZGFjYTA4ODEwYzk1MThkZjM4
Y2JmY2JiNDhlMjIyMzQxZWI2Mjk0OS4uMmJlMGNiZDQyZjRjNzA5MDYwYWZhZTdhMDJmMDAwZWVj
YzdiM2FjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMzg3Miw2ICszODcyLDM5
IEBAIGJvb2wgRnJhbWVWaWV3Ojp3aGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCkKICAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnQo
d2hlZWxFdmVudCk7CiB9CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitib29sIEZyYW1l
Vmlldzo6Z2VzdHVyZVNjcm9sbFVwZGF0ZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50
JiBnZXN0dXJlRXZlbnQpCit7CisgICAgLy8gTm90ZSB0aGF0IHRvIGFsbG93IGZvciBydWJiZXIt
YmFuZCBvdmVyLXNjcm9sbCBiZWhhdmlvciwgZXZlbiBub24tc2Nyb2xsYWJsZSB2aWV3cworICAg
IC8vIHNob3VsZCBoYW5kbGUgd2hlZWwgZXZlbnRzLgorI2lmICFFTkFCTEUoUlVCQkVSX0JBTkRJ
TkcpCisgICAgaWYgKCFpc1Njcm9sbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCisKKyAgICBpZiAoZGVsZWdhdGVzU2Nyb2xsaW5nKCkpIHsKKyAgICAgICAgSW50U2l6ZSBv
ZmZzZXQgPSBzY3JvbGxPZmZzZXQoKTsKKyAgICAgICAgSW50U2l6ZSBuZXdPZmZzZXQgPSBJbnRT
aXplKG9mZnNldC53aWR0aCgpIC0gZ2VzdHVyZUV2ZW50LmRlbHRhWCgpLCBvZmZzZXQuaGVpZ2h0
KCkgLSBnZXN0dXJlRXZlbnQuZGVsdGFZKCkpOworICAgICAgICBpZiAob2Zmc2V0ICE9IG5ld09m
ZnNldCkgeworICAgICAgICAgICAgU2Nyb2xsVmlldzo6c2Nyb2xsVG8obmV3T2Zmc2V0KTsKKyAg
ICAgICAgICAgIHNjcm9sbFBvc2l0aW9uQ2hhbmdlZCgpOworICAgICAgICAgICAgZnJhbWUoKS0+
bG9hZGVyKCktPmNsaWVudCgpLT5kaWRDaGFuZ2VTY3JvbGxPZmZzZXQoKTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBXZSBkb24ndCBhbGxvdyBtb3Vz
ZSB3aGVlbGluZyB0byBoYXBwZW4gaW4gYSBTY3JvbGxWaWV3IHRoYXQgaGFzIGhhZCBpdHMgc2Ny
b2xsYmFycyBleHBsaWNpdGx5IGRpc2FibGVkLgorICAgIGlmICghY2FuSGF2ZVNjcm9sbGJhcnMo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisjaWYgIVBMQVRGT1JNKFdYKQorICAgIGlmIChw
bGF0Zm9ybVdpZGdldCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKworICAgIHJl
dHVybiBTY3JvbGxhYmxlQXJlYTo6aGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZUV2ZW50KGdlc3R1
cmVFdmVudCk7Cit9CisjZW5kaWYKIAogYm9vbCBGcmFtZVZpZXc6OmlzVmVydGljYWxEb2N1bWVu
dCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCAyYmFmZTYyMDRlN2Y3Yjhj
ZTE5NGE5NTM0ODZlNzQ4ZTcxNjkxZDE3Li4wM2UxYmEwMmVjMGY4YzgwZjcwZDVmN2E5ZmYwMTNh
MTVmZjQwN2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTM3MCw2ICszNzAsMTAgQEAg
cHVibGljOgogICAgIC8vIHdlIG5lZWQgdGhpcyBmdW5jdGlvbiBpbiBvcmRlciB0byBkbyB0aGUg
c2Nyb2xsIG91cnNlbHZlcy4KICAgICBib29sIHdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50Jik7CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgYm9vbCBnZXN0dXJl
U2Nyb2xsVXBkYXRlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKKyNlbmRpZgor
CiAgICAgdm9pZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGJvb2wpOwog
CiAgICAgLy8gUGFnZSBhbmQgRnJhbWVWaWV3IGJvdGggc3RvcmUgYSBQYWdpbmF0aW9uIHZhbHVl
LiBQYWdlOjpwYWdpbmF0aW9uKCkgaXMgc2V0IG9ubHkgYnkgQVBJLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IDU3NzQyZTZmYjBiNDMzOWZjMjQzNDEx
YTIwMjU0YWQzMjEzNDRiMWQuLmFkZmE4MjVlMDM3Y2Y3ZGMyY2EzNDUyN2I4YjE3ZTAzZjY5ZTVk
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTEz
MCw2ICsxMzAsMzkgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudChjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGUpCiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9CiAKKyNpZiBF
TkFCTEUoR0VTVFVSRV9FVkVOVFMpCitib29sIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVHZXN0dXJl
U2Nyb2xsVXBkYXRlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGUpCit7CisgICAg
U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyID0gbV9zY3JvbGxhYmxlQXJlYS0+aG9yaXpv
bnRhbFNjcm9sbGJhcigpOworICAgIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIgPSBtX3Nj
cm9sbGFibGVBcmVhLT52ZXJ0aWNhbFNjcm9sbGJhcigpOworCisgICAgLy8gQWNjZXB0IHRoZSBl
dmVudCBpZiB3ZSBoYXZlIGEgc2Nyb2xsYmFyIGluIHRoYXQgZGlyZWN0aW9uIGFuZCBjYW4gc3Rp
bGwKKyAgICAvLyBzY3JvbGwgYW55IGZ1cnRoZXIuCisgICAgZmxvYXQgZGVsdGFYID0gaG9yaXpv
bnRhbFNjcm9sbGJhciA/IGUuZGVsdGFYKCkgOiAwOworICAgIGZsb2F0IGRlbHRhWSA9IHZlcnRp
Y2FsU2Nyb2xsYmFyID8gZS5kZWx0YVkoKSA6IDA7CisKKyAgICBib29sIGhhbmRsZWQgPSBmYWxz
ZTsKKworICAgIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gU2Nyb2xsQnlQaXhlbDsK
KworICAgIEludFNpemUgbWF4Rm9yd2FyZFNjcm9sbERlbHRhID0gbV9zY3JvbGxhYmxlQXJlYS0+
bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgLSBtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlv
bigpOworICAgIEludFNpemUgbWF4QmFja3dhcmRTY3JvbGxEZWx0YSA9IG1fc2Nyb2xsYWJsZUFy
ZWEtPnNjcm9sbFBvc2l0aW9uKCkgLSBtX3Njcm9sbGFibGVBcmVhLT5taW5pbXVtU2Nyb2xsUG9z
aXRpb24oKTsKKyAgICBpZiAoKGRlbHRhWCA8IDAgJiYgbWF4Rm9yd2FyZFNjcm9sbERlbHRhLndp
ZHRoKCkgPiAwKQorICAgICAgICB8fCAoZGVsdGFYID4gMCAmJiBtYXhCYWNrd2FyZFNjcm9sbERl
bHRhLndpZHRoKCkgPiAwKQorICAgICAgICB8fCAoZGVsdGFZIDwgMCAmJiBtYXhGb3J3YXJkU2Ny
b2xsRGVsdGEuaGVpZ2h0KCkgPiAwKQorICAgICAgICB8fCAoZGVsdGFZID4gMCAmJiBtYXhCYWNr
d2FyZFNjcm9sbERlbHRhLmhlaWdodCgpID4gMCkpIHsKKyAgICAgICAgaGFuZGxlZCA9IHRydWU7
CisKKyAgICAgICAgaWYgKGRlbHRhWSkKKyAgICAgICAgICAgIHNjcm9sbChWZXJ0aWNhbFNjcm9s
bGJhciwgZ3JhbnVsYXJpdHksIHZlcnRpY2FsU2Nyb2xsYmFyLT5waXhlbFN0ZXAoKSwgLWRlbHRh
WSk7CisKKyAgICAgICAgaWYgKGRlbHRhWCkKKyAgICAgICAgICAgIHNjcm9sbChIb3Jpem9udGFs
U2Nyb2xsYmFyLCBncmFudWxhcml0eSwgaG9yaXpvbnRhbFNjcm9sbGJhci0+cGl4ZWxTdGVwKCks
IC1kZWx0YVgpOworICAgIH0KKyAgICByZXR1cm4gaGFuZGxlZDsKK30KKyNlbmRpZgorCiB2b2lk
IFNjcm9sbEFuaW1hdG9yOjpzZXRDdXJyZW50UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9z
aXRpb24pCiB7CiAgICAgbV9jdXJyZW50UG9zWCA9IHBvc2l0aW9uLngoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCmluZGV4IDI4ODlmNDIwNDY0OGQxYzkwZWQzZTAz
OTQwOThjMmQxYmIxNjYzMDguLjc0MmM3ZjA2NWFkODQ0MDQ0OWMzZTQ5ZWY1ZmQyODhmMzQ2MjZl
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaApAQCAtMzgsNiAr
MzgsMTAgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQ
YXJhbS5oPgogCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorI2luY2x1ZGUgIlBsYXRmb3Jt
R2VzdHVyZUV2ZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBG
bG9hdFBvaW50OwpAQCAtNjUsNiArNjksMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29s
IGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAKKyNpZiBFTkFC
TEUoR0VTVFVSRV9FVkVOVFMpCisgICAgdmlydHVhbCBib29sIGhhbmRsZUdlc3R1cmVTY3JvbGxV
cGRhdGVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOworI2VuZGlmCisKICNpZiBQ
TEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNl
KSB7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3Bw
CmluZGV4IDM1ZGFhYzRhZDkzNWFkNTBhODM4ZDBjYzIyYTVhZDdjMWQwMTMxZGEuLmYwYmU0MWRh
Y2EzYzZlODY4YWRjOTE2ZmIzZGQ1YWU4NGRmM2FlMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTE4NSw2ICsxODUsMTMgQEAgYm9vbCBTY3JvbGxh
YmxlQXJlYTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVs
RXZlbnQpCiAgICAgcmV0dXJuIHNjcm9sbEFuaW1hdG9yKCktPmhhbmRsZVdoZWVsRXZlbnQod2hl
ZWxFdmVudCk7CiB9CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitib29sIFNjcm9sbGFi
bGVBcmVhOjpoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0
dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKK3sKKyAgICByZXR1cm4gc2Nyb2xsQW5pbWF0b3IoKS0+
aGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZUV2ZW50KGdlc3R1cmVFdmVudCk7Cit9CisjZW5kaWYK
KwogLy8gTk9URTogT25seSBjYWxsZWQgZnJvbSBJbnRlcm5hbHMgZm9yIHRlc3RpbmcuCiB2b2lk
IFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxPZmZzZXRGcm9tSW50ZXJuYWxzKGNvbnN0IEludFBv
aW50JiBvZmZzZXQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApp
bmRleCA1ZmE2ZTI3ZDk3ZTFiYzNhM2IyMTY2NTI4ZjRhMjU5YzY5ZDlhNjZhLi40ZWM3Nzc4NjQ4
ZWE2ZTk2YzQ3NmJhZjRmNmIxNjMyYjIzZDg2NmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmgKQEAgLTU4LDYgKzU4LDEwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKIAorI2lmIEVOQUJM
RShHRVNUVVJFX0VWRU5UUykKKyAgICBib29sIGhhbmRsZUdlc3R1cmVTY3JvbGxVcGRhdGVFdmVu
dChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOworI2VuZGlmCisKICAgICAvLyBGdW5jdGlv
bnMgZm9yIGNvbnRyb2xsaW5nIGlmIHlvdSBjYW4gc2Nyb2xsIHBhc3QgdGhlIGVuZCBvZiB0aGUg
ZG9jdW1lbnQuCiAgICAgYm9vbCBjb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2U7IH0KICAgICB2
b2lkIHNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKGJvb2wgY29uc3RyYWluc1Nj
cm9sbGluZ1RvQ29udGVudEVkZ2UpIHsgbV9jb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRn
ZSA9IGNvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA0MDhiZGI5YjVlNTkzZmY0ODg2Mzk1NjA0ODQ3
MzE5ZDNhZGQwMzc3Li5hODc1ODZhMzk3ZWRjMWVjODI2MzMyMGMzMzcwNzgyYTE2ODExYWFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTE5NzUsMTMgKzE5
NzUsOCBAQCB2b2lkIFJlbmRlckxheWVyOjpwYW5TY3JvbGxGcm9tUG9pbnQoY29uc3QgSW50UG9p
bnQmIHNvdXJjZVBvaW50KQogCiB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5
KGNvbnN0IEludFNpemUmIGRlbHRhLCBTY3JvbGxPZmZzZXRDbGFtcGluZyBjbGFtcCkKIHsKLSAg
ICBzY3JvbGxCeShkZWx0YSwgY2xhbXAsIFNob3VsZFByb3BhZ2F0ZVNjcm9sbCk7Ci19Ci0KLWJv
b2wgUmVuZGVyTGF5ZXI6OnNjcm9sbEJ5KGNvbnN0IEludFNpemUmIGRlbHRhLCBTY3JvbGxPZmZz
ZXRDbGFtcGluZyBjbGFtcCwgU2Nyb2xsUHJvcGFnYXRpb24gc2hvdWxkUHJvcGFnYXRlKQotewog
ICAgIGlmIChkZWx0YS5pc1plcm8oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm47CiAKICAgICBib29sIHJlc3RyaWN0ZWRCeUxpbmVDbGFtcCA9IGZhbHNlOwogICAgIGlm
IChyZW5kZXJlcigpLT5wYXJlbnQoKSkKQEAgLTE5OTEsMzYgKzE5ODYsMjQgQEAgYm9vbCBSZW5k
ZXJMYXllcjo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgZGVsdGEsIFNjcm9sbE9mZnNldENsYW1w
aW5nIGNsYW1wLCBTY3IKICAgICAgICAgSW50U2l6ZSBuZXdTY3JvbGxPZmZzZXQgPSBzY3JvbGxP
ZmZzZXQoKSArIGRlbHRhOwogICAgICAgICBzY3JvbGxUb09mZnNldChuZXdTY3JvbGxPZmZzZXQs
IGNsYW1wKTsKIAotICAgICAgICBpZiAoc2hvdWxkUHJvcGFnYXRlID09IERvbnRQcm9wYWdhdGVT
Y3JvbGwpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAgICAgICAvLyBJZiB0aGlzIGxh
eWVyIGNhbid0IGRvIHRoZSBzY3JvbGwgd2UgYXNrIHRoZSBuZXh0IGxheWVyIHVwIHRoYXQgY2Fu
IHNjcm9sbCB0byB0cnkKICAgICAgICAgSW50U2l6ZSByZW1haW5pbmdTY3JvbGxPZmZzZXQgPSBu
ZXdTY3JvbGxPZmZzZXQgLSBzY3JvbGxPZmZzZXQoKTsKLSAgICAgICAgYm9vbCBkaWRTY3JvbGwg
PSB0cnVlOwogICAgICAgICBpZiAoIXJlbWFpbmluZ1Njcm9sbE9mZnNldC5pc1plcm8oKSAmJiBy
ZW5kZXJlcigpLT5wYXJlbnQoKSkgewogICAgICAgICAgICAgaWYgKFJlbmRlckxheWVyKiBzY3Jv
bGxhYmxlTGF5ZXIgPSBlbmNsb3NpbmdTY3JvbGxhYmxlTGF5ZXIoKSkKLSAgICAgICAgICAgICAg
ICBkaWRTY3JvbGwgPSBzY3JvbGxhYmxlTGF5ZXItPnNjcm9sbEJ5KHJlbWFpbmluZ1Njcm9sbE9m
ZnNldCwgY2xhbXAsIHNob3VsZFByb3BhZ2F0ZSk7CisgICAgICAgICAgICAgICAgc2Nyb2xsYWJs
ZUxheWVyLT5zY3JvbGxCeVJlY3Vyc2l2ZWx5KHJlbWFpbmluZ1Njcm9sbE9mZnNldCwgY2xhbXAp
OwogCiAgICAgICAgICAgICBGcmFtZSogZnJhbWUgPSByZW5kZXJlcigpLT5mcmFtZSgpOwogICAg
ICAgICAgICAgaWYgKGZyYW1lKQogICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+dXBkYXRlQXV0b3Njcm9sbFJlbmRlcmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IGRpZFNjcm9sbDsKICAgICB9IGVsc2UgaWYgKHJlbmRlcmVyKCktPnZpZXcoKS0+ZnJhbWVWaWV3
KCkpIHsKICAgICAgICAgLy8gSWYgd2UgYXJlIGhlcmUsIHdlIHdlcmUgY2FsbGVkIG9uIGEgcmVu
ZGVyZXIgdGhhdCBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBzY3JvbGxlZCwgYnV0IGRvZXNuJ3QK
ICAgICAgICAgLy8gaGF2ZSBhbiBvdmVyZmxvdyBjbGlwLiBXaGljaCBtZWFucyB0aGF0IGl0IGlz
IGEgZG9jdW1lbnQgbm9kZSB0aGF0IGNhbiBiZSBzY3JvbGxlZC4KLSAgICAgICAgRnJhbWVWaWV3
KiB2aWV3ID0gcmVuZGVyZXIoKS0+dmlldygpLT5mcmFtZVZpZXcoKTsKLSAgICAgICAgSW50UG9p
bnQgc2Nyb2xsUG9zaXRpb25CZWZvcmUgPSB2aWV3LT5zY3JvbGxQb3NpdGlvbigpOwotICAgICAg
ICBpZiAodmlldy0+aXNTY3JvbGxhYmxlKCkpCi0gICAgICAgICAgICB2aWV3LT5zY3JvbGxCeShk
ZWx0YSk7Ci0gICAgICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uQWZ0ZXIgPSB2aWV3LT5zY3Jv
bGxQb3NpdGlvbigpOwotICAgICAgICByZXR1cm4gc2Nyb2xsUG9zaXRpb25CZWZvcmUgIT0gc2Ny
b2xsUG9zaXRpb25BZnRlcjsKKyAgICAgICAgcmVuZGVyZXIoKS0+dmlldygpLT5mcmFtZVZpZXco
KS0+c2Nyb2xsQnkoZGVsdGEpOwogCiAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBkaWRuJ3Qgc2Ny
b2xsIHRoZSB3aG9sZSB3YXksIGRvIHdlIHdhbnQgdG8gdHJ5IGxvb2tpbmcgYXQgdGhlIGZyYW1l
cyBvd25lckVsZW1lbnQ/IAogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjgyMzcKICAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7CiB9CiAKIEludFNp
emUgUmVuZGVyTGF5ZXI6OmNsYW1wU2Nyb2xsT2Zmc2V0KGNvbnN0IEludFNpemUmIHNjcm9sbE9m
ZnNldCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggM2Y2
MDM1ZDRhYTlmNmY4Y2Y3OGVjMjQ2YjdmMDJkYTJiMDUxMTA5Yi4uZjY0MDdlYWFmNGIxNWJiYjlh
NjUyMTNlMDRmNzFjMjNlNGIzNTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgKQEAgLTMyOCwxMyArMzI4LDcgQEAgcHVibGljOgogICAgICAgICBTY3JvbGxPZmZzZXRD
bGFtcGVkCiAgICAgfTsKIAotICAgIGVudW0gU2Nyb2xsUHJvcGFnYXRpb24gewotICAgICAgICBT
aG91bGRQcm9wYWdhdGVTY3JvbGwsCi0gICAgICAgIERvbnRQcm9wYWdhdGVTY3JvbGwKLSAgICB9
OwotCiAgICAgLy8gU2Nyb2xsaW5nIG1ldGhvZHMgZm9yIGxheWVycyB0aGF0IGNhbiBzY3JvbGwg
dGhlaXIgb3ZlcmZsb3cuCi0gICAgYm9vbCBzY3JvbGxCeShjb25zdCBJbnRTaXplJiwgU2Nyb2xs
T2Zmc2V0Q2xhbXBpbmcgPSBTY3JvbGxPZmZzZXRVbmNsYW1wZWQsIFNjcm9sbFByb3BhZ2F0aW9u
ID0gRG9udFByb3BhZ2F0ZVNjcm9sbCk7CiAgICAgdm9pZCBzY3JvbGxCeVJlY3Vyc2l2ZWx5KGNv
bnN0IEludFNpemUmLCBTY3JvbGxPZmZzZXRDbGFtcGluZyA9IFNjcm9sbE9mZnNldFVuY2xhbXBl
ZCk7CiAgICAgdm9pZCBzY3JvbGxUb09mZnNldChjb25zdCBJbnRTaXplJiwgU2Nyb2xsT2Zmc2V0
Q2xhbXBpbmcgPSBTY3JvbGxPZmZzZXRVbmNsYW1wZWQpOwogICAgIHZvaWQgc2Nyb2xsVG9YT2Zm
c2V0KGludCB4LCBTY3JvbGxPZmZzZXRDbGFtcGluZyBjbGFtcCA9IFNjcm9sbE9mZnNldFVuY2xh
bXBlZCkgeyBzY3JvbGxUb09mZnNldChJbnRTaXplKHgsIHNjcm9sbFlPZmZzZXQoKSksIGNsYW1w
KTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190150</attachid>
            <date>2013-02-25 16:16:50 -0800</date>
            <delta_ts>2013-02-26 15:17:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109769-20130225191305.patch</filename>
            <type>text/plain</type>
            <size>58949</size>
            <attacher name="Terry Anderson">tdanderson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzOTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmFkNjQ2ZWI4ODU1MTgy
ZTY3ZDliMGU2ZDY5NTg0OGJlYzJkY2Y4NC4uOTY2ZWM2MTA4YjllNmY0NTkwNDJmODQzZWY5OTM5
N2QyM2Q1YmE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTAyLTI1ICBUZXJy
eSBBbmRlcnNvbiAgPHRkYW5kZXJzb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZSgpIHNob3VsZCBpbnZva2UgdGhlIHVzZXIt
Z2VuZXJhdGVkIHNjcm9sbCByb3V0aW5lcyBzbyBpdHMgYmVoYXZpb3IgbWF0Y2hlcyBvdGhlciB1
c2VyLWluaXRpYXRlZCBzY3JvbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDk3NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUbyBlbnN1cmUgdGhhdCB0aGUgc2Nyb2xsaW5nIGJlaGF2aW9yIG9mIEdl
c3R1cmVTY3JvbGxVcGRhdGUgZXZlbnRzIGFyZSBjb25zaXN0ZW50IHdpdGgKKyAgICAgICAgdGhl
IHNjcm9sbGluZyBiZWhhdmlvciBvZiBtb3VzZXdoZWVsIGV2ZW50cywgdXNlIHRoZSBleGlzdGlu
ZyB1c2VyLWdlbmVyYXRlZCBzY3JvbGwgbG9naWMKKyAgICAgICAgaW5zdGVhZCBvZiBjYWxsaW5n
IGludG8gUmVuZGVyTGF5ZXI6OnNjcm9sbEJ5UmVjdXJzaXZlbHkoKS4gVGhpcyBwYXRjaCBmaXhl
cyB0aGUgYnVnCisgICAgICAgIHJlcG9ydGVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDkzMTYsIHdoZXJlIHRoZSBleGFtcGxlIHBhZ2UgY2FuCisgICAgICAg
IGJlIHNjcm9sbGVkIHVzaW5nIHRvdWNoIGJ1dCBjYW5ub3QgYmUgc2Nyb2xsZWQgdXNpbmcgbW91
c2V3aGVlbHMuCisKKyAgICAgICAgSSBoYXZlIGFsc28gcmV2ZXJ0ZWQgdGhlIGNoYW5nZXMgSSBt
YWRlIHRvIFJlbmRlckxheWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KCkgaW4gCisgICAgICAgIGh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE0MDE3NyBhbmQgaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMTQyMTk1IHNpbmNlIAorICAgICAgICB0aGlzIGZ1bmN0aW9uIHdp
bGwgbm8gbG9uZ2VyIGJlIHVzZWQgdG8gZ2VzdHVyZS1zY3JvbGwuCisKKyAgICAgICAgVGVzdHM6
IGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXBy
b3BhZ2F0ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90
b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteGhpZGRlbi5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS15aGlk
ZGVuLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gt
Z2VzdHVyZS1ub3Njcm9sbC1ib2R5Lmh0bWwKKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Y2xlYXIpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xsQmVnaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlKToKKyAg
ICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpnZXN0
dXJlU2Nyb2xsVXBkYXRlRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAg
ICAgIChGcmFtZVZpZXcpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6Omhh
bmRsZUdlc3R1cmVTY3JvbGxVcGRhdGVFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3IuaDoKKyAgICAgICAgKFNjcm9sbEFuaW1hdG9yKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhOjpoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlRXZlbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgIChTY3JvbGxhYmxlQXJl
YSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuaDoKKwogMjAxMy0wMi0yNSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBHZW5lcmF0ZSBhIHdyYXBwZXIgZnVuY3Rpb24g
Zm9yIG1ldGhvZCBjYWxsYmFja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRl
eCA2YzE1YWM0Zjk5YmI1NjIyNDg2YzMzNmJmMGY0MWQ2M2RjZGIwZjJhLi5kNDFiZjRjMmY0MmU4
NWMwMzNlZDZlODYyNDg0OTc5ZTc2NmJlYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCkBAIC00MDMsNiArNDAzLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmNsZWFyKCkKICNp
ZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgbV9zY3JvbGxHZXN0dXJlSGFuZGxpbmdOb2Rl
ID0gMDsKICAgICBtX2xhc3RIaXRUZXN0UmVzdWx0T3ZlcldpZGdldCA9IGZhbHNlOworICAgIG1f
cHJldmlvdXNHZXN0dXJlU2Nyb2xsZWROb2RlID0gMDsKICAgICBtX3Njcm9sbGJhckhhbmRsaW5n
U2Nyb2xsR2VzdHVyZSA9IDA7CiAjZW5kaWYKICAgICBtX21heE1vdXNlTW92ZWREdXJhdGlvbiA9
IDA7CkBAIC0yNjE0LDE5ICsyNjE1LDYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NHZXN0dXJl
RXZlbnRUb1dpZGdldElmUG9zc2libGUoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBjb25zdCBOb2RlKiBjbG9zZXN0U2Nyb2xsYWJsZU5v
ZGVDYW5kaWRhdGUoY29uc3QgTm9kZSogbm9kZSkKLXsKLSAgICBmb3IgKEV2ZW50UGF0aFdhbGtl
ciB3YWxrZXIobm9kZSk7IHdhbGtlci5ub2RlKCk7IHdhbGtlci5tb3ZlVG9QYXJlbnQoKSkgewot
ICAgICAgICBOb2RlKiBzY3JvbGxhYmxlTm9kZSA9IHdhbGtlci5ub2RlKCk7Ci0gICAgICAgIGlm
IChzY3JvbGxhYmxlTm9kZS0+aXNEb2N1bWVudE5vZGUoKSkKLSAgICAgICAgICAgIHJldHVybiBz
Y3JvbGxhYmxlTm9kZTsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNjcm9sbGFi
bGVOb2RlLT5yZW5kZXJlcigpOwotICAgICAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlz
Qm94KCkgJiYgdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xs
YWJsZUFyZWEoKSkKLSAgICAgICAgICAgIHJldHVybiBzY3JvbGxhYmxlTm9kZTsKLSAgICB9Ci0g
ICAgcmV0dXJuIG5vZGU7Ci19Ci0KIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Ny
b2xsQmVnaW4oY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwpAQCAtMjY0NSw2ICsy
NjMzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxCZWdpbihjb25z
dCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUUKIAogICAgIG1fbGFzdEhpdFRlc3RSZXN1
bHRPdmVyV2lkZ2V0ID0gcmVzdWx0LmlzT3ZlcldpZGdldCgpOyAKICAgICBtX3Njcm9sbEdlc3R1
cmVIYW5kbGluZ05vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CisgICAgbV9wcmV2aW91c0dlc3R1
cmVTY3JvbGxlZE5vZGUgPSAwOwogCiAgICAgTm9kZSogbm9kZSA9IG1fc2Nyb2xsR2VzdHVyZUhh
bmRsaW5nTm9kZS5nZXQoKTsKICAgICBpZiAobm9kZSkKQEAgLTI2NTYsNyArMjY0NSw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xsQmVnaW4oY29uc3QgUGxhdGZvcm1H
ZXN0dXJlRXZlbnQmIGdlc3R1cmVFCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZVNj
cm9sbFVwZGF0ZShjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogewog
ICAgIC8vIElnbm9yZSB0aGlzIGV2ZW50IGlmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBhIHRhcmdl
dGVkIG5vZGUgd2l0aCBhIHZhbGlkIHJlbmRlcmVyLgotICAgIGNvbnN0IE5vZGUqIG5vZGUgPSBt
X3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGUuZ2V0KCk7CisgICAgTm9kZSogbm9kZSA9IG1fc2Ny
b2xsR2VzdHVyZUhhbmRsaW5nTm9kZS5nZXQoKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtMjY2NCw3ICsyNjUzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZUdlc3R1cmVTY3JvbGxVcGRhdGUoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1
cmUKICAgICBpZiAoIWxhdGNoZWRSZW5kZXJlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgSW50U2l6ZSBkZWx0YSgtZ2VzdHVyZUV2ZW50LmRlbHRhWCgpLCAtZ2VzdHVyZUV2ZW50LmRl
bHRhWSgpKTsKKyAgICBGbG9hdFNpemUgZGVsdGEoZ2VzdHVyZUV2ZW50LmRlbHRhWCgpLCBnZXN0
dXJlRXZlbnQuZGVsdGFZKCkpOwogICAgIGlmIChkZWx0YS5pc1plcm8oKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC0yNjc0LDI5ICsyNjYzLDM4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0
dXJlCiAgICAgaWYgKHBhc3NHZXN0dXJlRXZlbnRUb1dpZGdldElmUG9zc2libGUoZ2VzdHVyZUV2
ZW50LCBsYXRjaGVkUmVuZGVyZXIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIC8vIE90
aGVyd2lzZSBpZiB0aGlzIGlzIHRoZSBjb3JyZWN0IHZpZXcgZm9yIHRoZSBldmVudCwgZmluZCB0
aGUgY2xvc2VzdCBzY3JvbGxhYmxlCi0gICAgLy8gYW5jZXN0b3Igb2YgdGhlIHRhcmdldGVkIG5v
ZGUgYW5kIHNjcm9sbCB0aGUgbGF5ZXIgdGhhdCBjb250YWlucyB0aGlzIG5vZGUncyByZW5kZXJl
ci4KLSAgICBub2RlID0gY2xvc2VzdFNjcm9sbGFibGVOb2RlQ2FuZGlkYXRlKG5vZGUpOwotICAg
IGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbGF0Y2hlZFJlbmRlcmVy
ID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIWxhdGNoZWRSZW5kZXJlcikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgUmVuZGVyTGF5ZXI6OlNjcm9sbFByb3BhZ2F0aW9uIHNob3Vs
ZFByb3BhZ2F0ZSA9IFJlbmRlckxheWVyOjpTaG91bGRQcm9wYWdhdGVTY3JvbGw7Ci0gICAgaWYg
KGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0
ZVdpdGhvdXRQcm9wYWdhdGlvbikKLSAgICAgICAgc2hvdWxkUHJvcGFnYXRlID0gUmVuZGVyTGF5
ZXI6OkRvbnRQcm9wYWdhdGVTY3JvbGw7CisgICAgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHkgPSBTY3JvbGxCeVBpeGVsOyAKIAogICAgIGNvbnN0IGZsb2F0IHNjYWxlRmFjdG9yID0gbV9m
cmFtZS0+cGFnZVpvb21GYWN0b3IoKSAqIG1fZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKTsKICAg
ICBkZWx0YS5zY2FsZSgxIC8gc2NhbGVGYWN0b3IsIDEgLyBzY2FsZUZhY3Rvcik7CiAKLSAgICBi
b29sIHJlc3VsdCA9IGxhdGNoZWRSZW5kZXJlci0+ZW5jbG9zaW5nTGF5ZXIoKS0+c2Nyb2xsQnko
ZGVsdGEsIFJlbmRlckxheWVyOjpTY3JvbGxPZmZzZXRDbGFtcGVkLCBzaG91bGRQcm9wYWdhdGUp
OworICAgIE5vZGUqIHN0b3BOb2RlID0gMDsKKyAgICBib29sIHNjcm9sbFNob3VsZE5vdFByb3Bh
Z2F0ZSA9IGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9s
bFVwZGF0ZVdpdGhvdXRQcm9wYWdhdGlvbjsKKyAgICBpZiAoc2Nyb2xsU2hvdWxkTm90UHJvcGFn
YXRlKQorICAgICAgICBzdG9wTm9kZSA9IG1fcHJldmlvdXNHZXN0dXJlU2Nyb2xsZWROb2RlLmdl
dCgpOwogCi0gICAgaWYgKHJlc3VsdCkKKyAgICAvLyBGaXJzdCB0cnkgdG8gc2Nyb2xsIHRoZSBj
bG9zZXN0IHNjcm9sbGFibGUgUmVuZGVyQm94IGFuY2VzdG9yIG9mIHxub2RlfC4KKyAgICBib29s
IGhvcml6b250YWxTY3JvbGwgPSBzY3JvbGxOb2RlKGRlbHRhLndpZHRoKCksIGdyYW51bGFyaXR5
LCBTY3JvbGxMZWZ0LCBTY3JvbGxSaWdodCwgbm9kZSwgJnN0b3BOb2RlKTsKKyAgICBib29sIHZl
cnRpY2FsU2Nyb2xsID0gc2Nyb2xsTm9kZShkZWx0YS5oZWlnaHQoKSwgZ3JhbnVsYXJpdHksIFNj
cm9sbFVwLCBTY3JvbGxEb3duLCBub2RlLCAmc3RvcE5vZGUpOworCisgICAgaWYgKHNjcm9sbFNo
b3VsZE5vdFByb3BhZ2F0ZSkKKyAgICAgICAgbV9wcmV2aW91c0dlc3R1cmVTY3JvbGxlZE5vZGUg
PSBzdG9wTm9kZTsKKworICAgIGlmIChob3Jpem9udGFsU2Nyb2xsIHx8IHZlcnRpY2FsU2Nyb2xs
KSB7CiAgICAgICAgIHNldEZyYW1lV2FzU2Nyb2xsZWRCeVVzZXIoKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICAvLyBPdGhlcndpc2UgdHJ5
IHRvIHNjcm9sbCB0aGUgdmlldy4KKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3
KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHNj
cm9sbGVkRnJhbWUgPSB2aWV3LT5nZXN0dXJlU2Nyb2xsVXBkYXRlRXZlbnQoZ2VzdHVyZUV2ZW50
KTsKKyAgICBpZiAoc2Nyb2xsZWRGcmFtZSkKKyAgICAgICAgc2V0RnJhbWVXYXNTY3JvbGxlZEJ5
VXNlcigpOworCisgICAgcmV0dXJuIHNjcm9sbGVkRnJhbWU7CiB9CiAKIGJvb2wgRXZlbnRIYW5k
bGVyOjppc1Njcm9sbGJhckhhbmRsaW5nR2VzdHVyZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmgKaW5kZXggM2ZjMDdmMmZhMjUyZjljNDVmMjRmMWY2YjU1ZTQ3ZTdhMDBkNzUz
ZS4uNDY4N2RiZWEzYjg3NDAxNDYwZTgxYTE5ZGUyMzFhNDg0YTllMzc4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5oCkBAIC00NjksNiArNDY5LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFC
TEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgUmVmUHRyPE5vZGU+IG1fc2Nyb2xsR2VzdHVyZUhhbmRs
aW5nTm9kZTsKICAgICBib29sIG1fbGFzdEhpdFRlc3RSZXN1bHRPdmVyV2lkZ2V0OworICAgIFJl
ZlB0cjxOb2RlPiBtX3ByZXZpb3VzR2VzdHVyZVNjcm9sbGVkTm9kZTsKICAgICBSZWZQdHI8U2Ny
b2xsYmFyPiBtX3Njcm9sbGJhckhhbmRsaW5nU2Nyb2xsR2VzdHVyZTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMTBjMDBjNWQ2Njc1YjU3ODdlZjhmZjM1ZWQ5MTBi
YWYzNGZkYThiMC4uYmRjNDAxODY0ZTc3NGQ0NGRmMTBiNWU1M2U1OGUzOGYwZThlMzZlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMzkwNSw2ICszOTA1LDM5IEBAIGJvb2wgRnJh
bWVWaWV3Ojp3aGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkK
ICAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCk7
CiB9CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitib29sIEZyYW1lVmlldzo6Z2VzdHVy
ZVNjcm9sbFVwZGF0ZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZl
bnQpCit7CisgICAgLy8gTm90ZSB0aGF0IHRvIGFsbG93IGZvciBydWJiZXItYmFuZCBvdmVyLXNj
cm9sbCBiZWhhdmlvciwgZXZlbiBub24tc2Nyb2xsYWJsZSB2aWV3cworICAgIC8vIHNob3VsZCBo
YW5kbGUgd2hlZWwgZXZlbnRzLgorI2lmICFFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCisgICAgaWYg
KCFpc1Njcm9sbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKKyAgICBp
ZiAoZGVsZWdhdGVzU2Nyb2xsaW5nKCkpIHsKKyAgICAgICAgSW50U2l6ZSBvZmZzZXQgPSBzY3Jv
bGxPZmZzZXQoKTsKKyAgICAgICAgSW50U2l6ZSBuZXdPZmZzZXQgPSBJbnRTaXplKG9mZnNldC53
aWR0aCgpIC0gZ2VzdHVyZUV2ZW50LmRlbHRhWCgpLCBvZmZzZXQuaGVpZ2h0KCkgLSBnZXN0dXJl
RXZlbnQuZGVsdGFZKCkpOworICAgICAgICBpZiAob2Zmc2V0ICE9IG5ld09mZnNldCkgeworICAg
ICAgICAgICAgU2Nyb2xsVmlldzo6c2Nyb2xsVG8obmV3T2Zmc2V0KTsKKyAgICAgICAgICAgIHNj
cm9sbFBvc2l0aW9uQ2hhbmdlZCgpOworICAgICAgICAgICAgZnJhbWUoKS0+bG9hZGVyKCktPmNs
aWVudCgpLT5kaWRDaGFuZ2VTY3JvbGxPZmZzZXQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBXZSBkb24ndCBhbGxvdyBzY3JvbGxpbmcgdG8gaGFw
cGVuIGluIGEgU2Nyb2xsVmlldyB0aGF0IGhhcyBoYWQgaXRzIHNjcm9sbGJhcnMgZXhwbGljaXRs
eSBkaXNhYmxlZC4KKyAgICBpZiAoIWNhbkhhdmVTY3JvbGxiYXJzKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworI2lmICFQTEFURk9STShXWCkKKyAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFy
ZWE6OmhhbmRsZUdlc3R1cmVTY3JvbGxVcGRhdGVFdmVudChnZXN0dXJlRXZlbnQpOworfQorI2Vu
ZGlmCiAKIGJvb2wgRnJhbWVWaWV3Ojppc1ZlcnRpY2FsRG9jdW1lbnQoKSBjb25zdAogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggNDk0YWU0N2I3MWQ1M2E5M2M1OGY4ODU1MWU1MDYyMWYy
N2FlMjQxNy4uZjg0Yjc5NTY5OWU2NTIxMTdhODk3MDU4NDdkYzA1ZDk0Y2RjNzkxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0zNzMsNiArMzczLDEwIEBAIHB1YmxpYzoKICAgICAvLyB3
ZSBuZWVkIHRoaXMgZnVuY3Rpb24gaW4gb3JkZXIgdG8gZG8gdGhlIHNjcm9sbCBvdXJzZWx2ZXMu
CiAgICAgYm9vbCB3aGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwogCisjaWYg
RU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgIGJvb2wgZ2VzdHVyZVNjcm9sbFVwZGF0ZUV2ZW50
KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CisjZW5kaWYKKwogICAgIHZvaWQgc2V0U2Ny
b2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sKTsKIAogICAgIC8vIFBhZ2UgYW5k
IEZyYW1lVmlldyBib3RoIHN0b3JlIGEgUGFnaW5hdGlvbiB2YWx1ZS4gUGFnZTo6cGFnaW5hdGlv
bigpIGlzIHNldCBvbmx5IGJ5IEFQSSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmNwcAppbmRleCA1Nzc0MmU2ZmIwYjQzMzlmYzI0MzQxMWEyMDI1NGFkMzIxMzQ0YjFk
Li5hZGZhODI1ZTAzN2NmN2RjMmNhMzQ1MjdiOGIxN2UwM2Y2OWU1ZDc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC0xMzAsNiArMTMwLDM5IEBAIGJv
b2wgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiBlKQogICAgIHJldHVybiBoYW5kbGVkOwogfQogCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZF
TlRTKQorYm9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZUV2ZW50
KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBlKQoreworICAgIFNjcm9sbGJhciogaG9yaXpv
bnRhbFNjcm9sbGJhciA9IG1fc2Nyb2xsYWJsZUFyZWEtPmhvcml6b250YWxTY3JvbGxiYXIoKTsK
KyAgICBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyID0gbV9zY3JvbGxhYmxlQXJlYS0+dmVy
dGljYWxTY3JvbGxiYXIoKTsKKworICAgIC8vIEFjY2VwdCB0aGUgZXZlbnQgaWYgd2UgaGF2ZSBh
IHNjcm9sbGJhciBpbiB0aGF0IGRpcmVjdGlvbiBhbmQgY2FuIHN0aWxsCisgICAgLy8gc2Nyb2xs
IGFueSBmdXJ0aGVyLgorICAgIGZsb2F0IGRlbHRhWCA9IGhvcml6b250YWxTY3JvbGxiYXIgPyBl
LmRlbHRhWCgpIDogMDsKKyAgICBmbG9hdCBkZWx0YVkgPSB2ZXJ0aWNhbFNjcm9sbGJhciA/IGUu
ZGVsdGFZKCkgOiAwOworCisgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisKKyAgICBTY3JvbGxH
cmFudWxhcml0eSBncmFudWxhcml0eSA9IFNjcm9sbEJ5UGl4ZWw7CisKKyAgICBJbnRTaXplIG1h
eEZvcndhcmRTY3JvbGxEZWx0YSA9IG1fc2Nyb2xsYWJsZUFyZWEtPm1heGltdW1TY3JvbGxQb3Np
dGlvbigpIC0gbV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAgICBJbnRTaXpl
IG1heEJhY2t3YXJkU2Nyb2xsRGVsdGEgPSBtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlv
bigpIC0gbV9zY3JvbGxhYmxlQXJlYS0+bWluaW11bVNjcm9sbFBvc2l0aW9uKCk7CisgICAgaWYg
KChkZWx0YVggPCAwICYmIG1heEZvcndhcmRTY3JvbGxEZWx0YS53aWR0aCgpID4gMCkKKyAgICAg
ICAgfHwgKGRlbHRhWCA+IDAgJiYgbWF4QmFja3dhcmRTY3JvbGxEZWx0YS53aWR0aCgpID4gMCkK
KyAgICAgICAgfHwgKGRlbHRhWSA8IDAgJiYgbWF4Rm9yd2FyZFNjcm9sbERlbHRhLmhlaWdodCgp
ID4gMCkKKyAgICAgICAgfHwgKGRlbHRhWSA+IDAgJiYgbWF4QmFja3dhcmRTY3JvbGxEZWx0YS5o
ZWlnaHQoKSA+IDApKSB7CisgICAgICAgIGhhbmRsZWQgPSB0cnVlOworCisgICAgICAgIGlmIChk
ZWx0YVkpCisgICAgICAgICAgICBzY3JvbGwoVmVydGljYWxTY3JvbGxiYXIsIGdyYW51bGFyaXR5
LCB2ZXJ0aWNhbFNjcm9sbGJhci0+cGl4ZWxTdGVwKCksIC1kZWx0YVkpOworCisgICAgICAgIGlm
IChkZWx0YVgpCisgICAgICAgICAgICBzY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgZ3JhbnVs
YXJpdHksIGhvcml6b250YWxTY3JvbGxiYXItPnBpeGVsU3RlcCgpLCAtZGVsdGFYKTsKKyAgICB9
CisgICAgcmV0dXJuIGhhbmRsZWQ7Cit9CisjZW5kaWYKKwogdm9pZCBTY3JvbGxBbmltYXRvcjo6
c2V0Q3VycmVudFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQogewogICAgIG1f
Y3VycmVudFBvc1ggPSBwb3NpdGlvbi54KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3IuaAppbmRleCAyODg5ZjQyMDQ2NDhkMWM5MGVkM2UwMzk0MDk4YzJkMWJiMTY2MzA4
Li43NDJjN2YwNjVhZDg0NDA0NDljM2U0OWVmNWZkMjg4ZjM0NjI2ZWFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKQEAgLTM4LDYgKzM4LDEwIEBACiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIAorI2lmIEVO
QUJMRShHRVNUVVJFX0VWRU5UUykKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRQb2ludDsKQEAgLTY1
LDYgKzY5LDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwogCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRT
KQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlRXZlbnQoY29uc3Qg
UGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKSB8fCAo
UExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJTikpCiAgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZVdoZWVsRXZlbnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSkgeyB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCAzNTQ2ODQxODVh
OTFmYTUzMGJjZWU0ZTZjMjg4ZjNmZmIxMjQ1MTFhLi45ODlhNmRjYmFkMzVjOTI4MDNmYWY4ZGE1
YTdiYWNkZmQyNjgxMGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuY3BwCkBAIC0xODUsNiArMTg1LDEzIEBAIGJvb2wgU2Nyb2xsYWJsZUFyZWE6OmhhbmRsZVdo
ZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogICAgIHJldHVy
biBzY3JvbGxBbmltYXRvcigpLT5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOwogfQogCisj
aWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorYm9vbCBTY3JvbGxhYmxlQXJlYTo6aGFuZGxlR2Vz
dHVyZVNjcm9sbFVwZGF0ZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJl
RXZlbnQpCit7CisgICAgcmV0dXJuIHNjcm9sbEFuaW1hdG9yKCktPmhhbmRsZUdlc3R1cmVTY3Jv
bGxVcGRhdGVFdmVudChnZXN0dXJlRXZlbnQpOworfQorI2VuZGlmCisKIC8vIE5PVEU6IE9ubHkg
Y2FsbGVkIGZyb20gSW50ZXJuYWxzIGZvciB0ZXN0aW5nLgogdm9pZCBTY3JvbGxhYmxlQXJlYTo6
c2V0U2Nyb2xsT2Zmc2V0RnJvbUludGVybmFscyhjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKaW5kZXggMDA0OWMyMzhjN2Ix
ODFhYjdmNGViZmYwYmY4OTA3MzU2NzI2YTg4MC4uMmI2ZGEwZGZmNjBjMzY1NGZmNGRmYzg5Njgw
MzA0MjZmOTYwYTJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5o
CkBAIC01OCw2ICs1OCwxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnQo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMp
CisgICAgYm9vbCBoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlRXZlbnQoY29uc3QgUGxhdGZvcm1H
ZXN0dXJlRXZlbnQmKTsKKyNlbmRpZgorCiAgICAgLy8gRnVuY3Rpb25zIGZvciBjb250cm9sbGlu
ZyBpZiB5b3UgY2FuIHNjcm9sbCBwYXN0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50LgogICAgIGJv
b2wgY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlOyB9CiAgICAgdm9pZCBzZXRDb25zdHJhaW5z
U2Nyb2xsaW5nVG9Db250ZW50RWRnZShib29sIGNvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRF
ZGdlKSB7IG1fY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UgPSBjb25zdHJhaW5zU2Ny
b2xsaW5nVG9Db250ZW50RWRnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKaW5kZXggZTRjYTYwOTYyNWQ2MzhmMzQ3MDgwN2E4OWIyMTVlMTI5NTliZmY2ZS4uMmYx
N2EyNmViOTc1NjIyZDhkNTBiZGYwMzExNWRiMjRhZDlmYjY1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0yMDE4LDEzICsyMDE4LDggQEAgdm9pZCBSZW5k
ZXJMYXllcjo6cGFuU2Nyb2xsRnJvbVBvaW50KGNvbnN0IEludFBvaW50JiBzb3VyY2VQb2ludCkK
IAogdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsQnlSZWN1cnNpdmVseShjb25zdCBJbnRTaXplJiBk
ZWx0YSwgU2Nyb2xsT2Zmc2V0Q2xhbXBpbmcgY2xhbXApCiB7Ci0gICAgc2Nyb2xsQnkoZGVsdGEs
IGNsYW1wLCBTaG91bGRQcm9wYWdhdGVTY3JvbGwpOwotfQotCi1ib29sIFJlbmRlckxheWVyOjpz
Y3JvbGxCeShjb25zdCBJbnRTaXplJiBkZWx0YSwgU2Nyb2xsT2Zmc2V0Q2xhbXBpbmcgY2xhbXAs
IFNjcm9sbFByb3BhZ2F0aW9uIHNob3VsZFByb3BhZ2F0ZSkKLXsKICAgICBpZiAoZGVsdGEuaXNa
ZXJvKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgYm9v
bCByZXN0cmljdGVkQnlMaW5lQ2xhbXAgPSBmYWxzZTsKICAgICBpZiAocmVuZGVyZXIoKS0+cGFy
ZW50KCkpCkBAIC0yMDM0LDM2ICsyMDI5LDI0IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNjcm9sbEJ5
KGNvbnN0IEludFNpemUmIGRlbHRhLCBTY3JvbGxPZmZzZXRDbGFtcGluZyBjbGFtcCwgU2NyCiAg
ICAgICAgIEludFNpemUgbmV3U2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0KCkgKyBkZWx0YTsK
ICAgICAgICAgc2Nyb2xsVG9PZmZzZXQobmV3U2Nyb2xsT2Zmc2V0LCBjbGFtcCk7CiAKLSAgICAg
ICAgaWYgKHNob3VsZFByb3BhZ2F0ZSA9PSBEb250UHJvcGFnYXRlU2Nyb2xsKQotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KICAgICAgICAgLy8gSWYgdGhpcyBsYXllciBjYW4ndCBkbyB0aGUg
c2Nyb2xsIHdlIGFzayB0aGUgbmV4dCBsYXllciB1cCB0aGF0IGNhbiBzY3JvbGwgdG8gdHJ5CiAg
ICAgICAgIEludFNpemUgcmVtYWluaW5nU2Nyb2xsT2Zmc2V0ID0gbmV3U2Nyb2xsT2Zmc2V0IC0g
c2Nyb2xsT2Zmc2V0KCk7Ci0gICAgICAgIGJvb2wgZGlkU2Nyb2xsID0gdHJ1ZTsKICAgICAgICAg
aWYgKCFyZW1haW5pbmdTY3JvbGxPZmZzZXQuaXNaZXJvKCkgJiYgcmVuZGVyZXIoKS0+cGFyZW50
KCkpIHsKICAgICAgICAgICAgIGlmIChSZW5kZXJMYXllciogc2Nyb2xsYWJsZUxheWVyID0gZW5j
bG9zaW5nU2Nyb2xsYWJsZUxheWVyKCkpCi0gICAgICAgICAgICAgICAgZGlkU2Nyb2xsID0gc2Ny
b2xsYWJsZUxheWVyLT5zY3JvbGxCeShyZW1haW5pbmdTY3JvbGxPZmZzZXQsIGNsYW1wLCBzaG91
bGRQcm9wYWdhdGUpOworICAgICAgICAgICAgICAgIHNjcm9sbGFibGVMYXllci0+c2Nyb2xsQnlS
ZWN1cnNpdmVseShyZW1haW5pbmdTY3JvbGxPZmZzZXQsIGNsYW1wKTsKIAogICAgICAgICAgICAg
RnJhbWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+ZnJhbWUoKTsKICAgICAgICAgICAgIGlmIChmcmFt
ZSkKICAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnVwZGF0ZUF1dG9zY3Jv
bGxSZW5kZXJlcigpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBkaWRTY3JvbGw7CiAgICAg
fSBlbHNlIGlmIChyZW5kZXJlcigpLT52aWV3KCktPmZyYW1lVmlldygpKSB7CiAgICAgICAgIC8v
IElmIHdlIGFyZSBoZXJlLCB3ZSB3ZXJlIGNhbGxlZCBvbiBhIHJlbmRlcmVyIHRoYXQgY2FuIGJl
IHByb2dyYW1tYXRpY2FsbHkgc2Nyb2xsZWQsIGJ1dCBkb2Vzbid0CiAgICAgICAgIC8vIGhhdmUg
YW4gb3ZlcmZsb3cgY2xpcC4gV2hpY2ggbWVhbnMgdGhhdCBpdCBpcyBhIGRvY3VtZW50IG5vZGUg
dGhhdCBjYW4gYmUgc2Nyb2xsZWQuCi0gICAgICAgIEZyYW1lVmlldyogdmlldyA9IHJlbmRlcmVy
KCktPnZpZXcoKS0+ZnJhbWVWaWV3KCk7Ci0gICAgICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9u
QmVmb3JlID0gdmlldy0+c2Nyb2xsUG9zaXRpb24oKTsKLSAgICAgICAgaWYgKHZpZXctPmlzU2Ny
b2xsYWJsZSgpKQotICAgICAgICAgICAgdmlldy0+c2Nyb2xsQnkoZGVsdGEpOwotICAgICAgICBJ
bnRQb2ludCBzY3JvbGxQb3NpdGlvbkFmdGVyID0gdmlldy0+c2Nyb2xsUG9zaXRpb24oKTsKLSAg
ICAgICAgcmV0dXJuIHNjcm9sbFBvc2l0aW9uQmVmb3JlICE9IHNjcm9sbFBvc2l0aW9uQWZ0ZXI7
CisgICAgICAgIHJlbmRlcmVyKCktPnZpZXcoKS0+ZnJhbWVWaWV3KCktPnNjcm9sbEJ5KGRlbHRh
KTsKIAogICAgICAgICAvLyBGSVhNRTogSWYgd2UgZGlkbid0IHNjcm9sbCB0aGUgd2hvbGUgd2F5
LCBkbyB3ZSB3YW50IHRvIHRyeSBsb29raW5nIGF0IHRoZSBmcmFtZXMgb3duZXJFbGVtZW50PyAK
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MjM3
CiAgICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwogfQogCiBJbnRTaXplIFJlbmRlckxheWVyOjpj
bGFtcFNjcm9sbE9mZnNldChjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDIwYjAxY2E1N2FjYTc3M2I3YTg4
NjJjZGI0MzgzMmFjZDA4OTBiZWUuLjUwZTMwNTE3NGQ1ZmEzMDhlZDczYmYzYTU0MDA0ZDA0NzJj
NTZlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC0zMjgsMTMg
KzMyOCw3IEBAIHB1YmxpYzoKICAgICAgICAgU2Nyb2xsT2Zmc2V0Q2xhbXBlZAogICAgIH07CiAK
LSAgICBlbnVtIFNjcm9sbFByb3BhZ2F0aW9uIHsKLSAgICAgICAgU2hvdWxkUHJvcGFnYXRlU2Ny
b2xsLAotICAgICAgICBEb250UHJvcGFnYXRlU2Nyb2xsCi0gICAgfTsKLQogICAgIC8vIFNjcm9s
bGluZyBtZXRob2RzIGZvciBsYXllcnMgdGhhdCBjYW4gc2Nyb2xsIHRoZWlyIG92ZXJmbG93Lgot
ICAgIGJvb2wgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYsIFNjcm9sbE9mZnNldENsYW1waW5nID0g
U2Nyb2xsT2Zmc2V0VW5jbGFtcGVkLCBTY3JvbGxQcm9wYWdhdGlvbiA9IERvbnRQcm9wYWdhdGVT
Y3JvbGwpOwogICAgIHZvaWQgc2Nyb2xsQnlSZWN1cnNpdmVseShjb25zdCBJbnRTaXplJiwgU2Ny
b2xsT2Zmc2V0Q2xhbXBpbmcgPSBTY3JvbGxPZmZzZXRVbmNsYW1wZWQpOwogICAgIHZvaWQgc2Ny
b2xsVG9PZmZzZXQoY29uc3QgSW50U2l6ZSYsIFNjcm9sbE9mZnNldENsYW1waW5nID0gU2Nyb2xs
T2Zmc2V0VW5jbGFtcGVkKTsKICAgICB2b2lkIHNjcm9sbFRvWE9mZnNldChpbnQgeCwgU2Nyb2xs
T2Zmc2V0Q2xhbXBpbmcgY2xhbXAgPSBTY3JvbGxPZmZzZXRVbmNsYW1wZWQpIHsgc2Nyb2xsVG9P
ZmZzZXQoSW50U2l6ZSh4LCBzY3JvbGxZT2Zmc2V0KCkpLCBjbGFtcCk7IH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzZWRl
YzkwZmMxOGU3NTc2NjlkYzU2MmUzYTUyYjMwZWEzNWZiYTZkLi40NzBkZDQyNzM3NGE2NjFmYTgx
MGE5ZjE0ODU3ZjA4OTMyNDg0NTMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTMtMDItMjUg
IFRlcnJ5IEFuZGVyc29uICA8dGRhbmRlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRXZl
bnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlKCkgc2hvdWxkIGludm9rZSB0aGUg
dXNlci1nZW5lcmF0ZWQgc2Nyb2xsIHJvdXRpbmVzIHNvIGl0cyBiZWhhdmlvciBtYXRjaGVzIG90
aGVyIHVzZXItaW5pdGlhdGVkIHNjcm9sbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwOTc2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZSBuZXcgbGF5b3V0IHRlc3RzIHZlcmlmeSB0aGF0IGEgbm9u
LXNjcm9sbGFibGUgYm9keSB3aWxsIG5vdCBzY3JvbGwsIGFzIHJlcG9ydGVkCisgICAgICAgIGlu
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkzMTYgLgorCisgICAg
ICAgIEJlY2F1c2UgSSBhbSBub3cgdXNpbmcgdGhlIGV4aXN0aW5nIHVzZXItZ2VuZXJhdGVkIHNj
cm9sbCBsb2dpYywgdGhlIGRlbHRhIGZvciBhIHNpbmdsZQorICAgICAgICBHZXN0dXJlU2Nyb2xs
VXBkYXRlIGV2ZW50IHdpbGwgbm90IGJlIHByb3BhZ2F0ZWQgdG8gdGhlIHBhcmVudCBvZiB0aGUg
dGFyZ2V0ZWQgbm9kZQorICAgICAgICB1bmxlc3MgdGhlIHRhcmdldGVkIG5vZGUgaGFzIG5vIHJl
bWFpbmluZyBzY3JvbGxhYmxlIGFyZWEuIFNvIHRoZSBjaGFuZ2VzIHRvIHRoZQorICAgICAgICBl
eGlzdGluZyBsYXlvdXQgdGVzdHMgaGF2ZSBiZWVuIG1hZGUgdG8gZW5zdXJlIHRoYXQgdGhlIHRh
cmdldGVkIG5vZGUgaGFzIGJlZW4gZnVsbHkKKyAgICAgICAgc2Nyb2xsZWQgYmVmb3JlIHN1YnNl
cXVlbnQgR2VzdHVyZVNjcm9sbFVwZGF0ZSBldmVudHMgd2lsbCBzY3JvbGwgdGhlIHBhcmVudChz
KSBvZgorICAgICAgICB0aGUgdGFyZ2V0ZWQgbm9kZS4KKworICAgICAgICBJIGhhdmUgYWxzbyBy
ZW1vdmVkIHRoZSBmdW5jdGlvbiByZWNvcmRTY3JvbGwoKSBmcm9tIHRoZSBleGlzdGluZyBsYXlv
dXQgdGVzdHMKKyAgICAgICAgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGFscmVhZHkgZXhpc3RzIGlu
IHRoZSBpbmNsdWRlZCBmaWxlIHJlc291cmNlcy9nZXN0dXJlLWhlbHBlcnMuanMuCisKKyAgICAg
ICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9k
eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1
cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXByb3BhZ2F0ZWQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUt
bm9zY3JvbGwtYm9keS1wcm9wYWdhdGVkLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcGFnZS1wcm9wYWdh
dGVkLmh0bWwuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0
dXJlLW5vc2Nyb2xsLWJvZHkteGhpZGRlbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXho
aWRkZW4uaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLXByb3BhZ2F0ZWQuaHRtbC4KKyAgICAgICAg
KiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS15
aGlkZGVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gv
Z2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteWhpZGRlbi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3Jv
bGwtYm9keS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJl
L3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi1ub3QtcHJvcGFnYXRlZC5odG1sOgorICAgICAgICAq
IGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZGl2LXByb3Bh
Z2F0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdl
c3R1cmUtc2Nyb2xsLWRpdi10d2ljZS1wcm9wYWdhdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9l
dmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1pZnJhbWUtbm90LXByb3Bh
Z2F0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdl
c3R1cmUtc2Nyb2xsLWlmcmFtZS1wcm9wYWdhdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9ldmVu
dHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLW5vdC1wcm9wYWdhdGVk
Lmh0bWw6CisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJl
LXNjcm9sbC1wYWdlLXByb3BhZ2F0ZWQuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZl
bnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXByb3BhZ2F0ZWQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2
ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVu
dHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteWhpZGRlbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorCiAyMDEzLTAyLTI1ICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHR3byBzdGFsZSBlbnRyaWVzIGZyb20gVGVzdEV4cGVj
dGF0aW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVy
ZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmYmUzZDJjYzFkMDgxODA3ZjJhZTc5NTRmMWUyMGUwZmY4
OTQ1NDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMCBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgcGFnZSBjYW5ub3QgYmUgc2Nyb2xsZWQgd2l0aCB0
b3VjaCBpZiBpdHMgYm9keSBoYXMgc3R5bGUgb3ZlcmZsb3c6aGlkZGVuLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworZ2VzdHVyZSBldmVudHMgbm90IGltcGxlbWVudGVkIG9uIHRo
aXMgcGxhdGZvcm0gb3IgZ2VzdHVyZSBldmVudCBzY3JvbGxpbmcgb2YgYSBkb2N1bWVudCBpcyBi
cm9rZW4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNo
LWdlc3R1cmUtbm9zY3JvbGwtYm9keS1wcm9wYWdhdGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5
LXByb3BhZ2F0ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlODdlNDg2ODRhMDVjOTEwMWM5
MmQyYjc4MWMxZTg3YmNjN2VlN2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1wcm9wYWdh
dGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3RzIHRoYXQgYSBwYWdl
IGNhbm5vdCBiZSBzY3JvbGxlZCB2ZXJ0aWNhbGx5IHdpdGggdG91Y2ggaWYgaXRzIGJvZHkgaGFz
IHN0eWxlIG92ZXJmbG93LXk6aGlkZGVuIGFuZCB0aGUgc2Nyb2xsIGV2ZW50IGlzIHByb3BvZ2F0
ZWQgZnJvbSBhIHNjcm9sbGFibGUgY2hpbGQgZGl2LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworZ2VzdHVyZSBldmVudHMgbm90IGltcGxlbWVudGVkIG9uIHRoaXMgcGxhdGZvcm0g
b3IgZ2VzdHVyZSBldmVudCBzY3JvbGxpbmcgb2YgYSBkb2N1bWVudCBpcyBicm9rZW4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9z
Y3JvbGwtYm9keS1wcm9wYWdhdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1wcm9wYWdhdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOThjODU2N2FiOTA2M2MxMzc1MGI3MjFiZDk3YmNkZTNiM2U5MWY1NwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gt
Z2VzdHVyZS1ub3Njcm9sbC1ib2R5LXByb3BhZ2F0ZWQuaHRtbApAQCAtMCwwICsxLDE1OSBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9nZXN0dXJl
LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyN0b3VjaHRh
cmdldCB7CisgIHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAgYmFja2dyb3VuZDog
d2hpdGU7CisgIG92ZXJmbG93OnNjcm9sbDsKK30KKworOjotd2Via2l0LXNjcm9sbGJhciB7Cisg
ICAgd2lkdGg6IDBweDsKKyAgICBoZWlnaHQ6IDBweDsKK30KKworI2dyZWVuYm94IHsKKyAgd2lk
dGg6IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4OworICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgcGFk
ZGluZzogMHB4OworICBtYXJnaW46IDBweDsKK30KKworI3JlZGJveCB7CisgIHdpZHRoOiAxMDBw
eDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAgYmFja2dyb3VuZDogcmVkOworICBwYWRkaW5nOiAwcHg7
CisgIG1hcmdpbjogMHB4OworfQorCit0ZCB7CisgIHBhZGRpbmc6IDBweDsKK30KKzwvc3R5bGU+
Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0ibWFyZ2luOjA7IG92ZXJmbG93LXk6aGlkZGVuOyIgb25s
b2FkPSJydW5UZXN0KCk7Ij4KKworPGRpdiBpZD0idG91Y2h0YXJnZXQiPgorICA8dGFibGUgYm9y
ZGVyPSIwIiBjZWxsc3BhY2luZz0iMHB4IiBpZD0idGFibGVmb28iPgorICAgIDx0cj4KKyAgICAg
IDx0ZD48ZGl2IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+CisgICAgICA8dGQ+PGRpdiBpZD0iZ3Jl
ZW5ib3giPjwvZGl2PjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQ+PGRpdiBp
ZD0iZ3JlZW5ib3giPjwvZGl2PjwvdGQ+CisgICAgICA8dGQ+PGRpdiBpZD0iZ3JlZW5ib3giPjwv
ZGl2PjwvdGQ+CisgICAgPC90cj4KKyAgPC90YWJsZT4KKzwvZGl2PgorCis8dGFibGUgaWQ9InRh
YmxlX3RvX2ZpbGwiPgorICAgIDx0cj48dGQ+PGRpdiBpZD0iZ3JlZW5ib3giPjwvZGl2PjwvdGQ+
PC90cj4KKyAgICA8dHI+PHRkPjxkaXYgaWQ9InJlZGJveCI+PC9kaXY+PC90ZD48L3RyPgorPC90
YWJsZT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwordmFyIGV4cGVjdGVkR2VzdHVy
ZXNUb3RhbCA9IDI7Cit2YXIgZ2VzdHVyZXNPY2N1cnJlZCA9IDA7Cit2YXIgc2Nyb2xsQW1vdW50
WCA9IFsnMCcsICcwJ107Cit2YXIgc2Nyb2xsQW1vdW50WSA9IFsnMCcsICcwJ107Cit2YXIgd2hl
ZWxFdmVudHNPY2N1cnJlZCA9IDA7Cit2YXIgZXhwZWN0ZWRXaGVlbEV2ZW50c09jY3VycmVkID0g
WycwJywgJzAnXTsKK3ZhciBzY3JvbGxFdmVudHNPY2N1cnJlZCA9IDA7Cit2YXIgZXhwZWN0ZWRT
Y3JvbGxFdmVudHNPY2N1cnJlZCA9ICcwJzsKK3ZhciBzY3JvbGxlZEVsZW1lbnQgPSAnZG9jdW1l
bnQuYm9keScKKworLy8gQWx3YXlzIGNvbnN0cnVjdCBhIHBhZ2UgbGFyZ2VyIHRoYW4gdGhlIHZl
cnRpY2FsIGhlaWdodCBvZiB0aGUgd2luZG93LgorZnVuY3Rpb24gYnVpbGRQYWdlKCkKK3sKKyAg
ICB2YXIgdGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFibGVfdG9fZmlsbCcpOwor
ICAgIHZhciB0YXJnZXRIZWlnaHQgPSBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKKyAgICB2
YXIgY2VsbFBhaXJIZWlnaHQgPSB0YWJsZS5vZmZzZXRIZWlnaHQ7CisgICAgdmFyIG51bWJlck9m
UmVwcyA9IHRhcmdldEhlaWdodCAvIGNlbGxQYWlySGVpZ2h0ICogMjsKKyAgICB2YXIgaTsKKyAg
ICBmb3IgKGkgPSAwOyBpIDwgbnVtYmVyT2ZSZXBzOyBpKyspIHsKKyAgICAgICAgdmFyIHAgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOworICAgICAgICBwLmlubmVySFRNTCA9ICc8dGQ+
PGRpdiBpZD0iZ3JlZW5ib3giPjwvZGl2PjwvdGQ+JzsKKyAgICAgICAgdGFibGUuYXBwZW5kQ2hp
bGQocCk7CisgICAgICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKKyAg
ICAgICAgcC5pbm5lckhUTUwgPSAnPHRkPjxkaXYgaWQ9InJlZGJveCI+PC9kaXY+PC90ZD4nOwor
ICAgICAgICB0YWJsZS5hcHBlbmRDaGlsZChwKTsKKyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcigic2Nyb2xsIiwgcmVjb3JkU2Nyb2xsKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2V3aGVlbCIsIHJlY29yZFdoZWVsKTsKK30KKworZnVuY3Rpb24gZmlyc3RH
ZXN0dXJlU2Nyb2xsKCkKK3sKKyAgICBkZWJ1ZygiZmlyc3QgZ2VzdHVyZSIpOworICAgIGV2ZW50
U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdpbig5NSwgMTIpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1
cmVTY3JvbGxVcGRhdGUoMCwgLTEwMCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVw
ZGF0ZSgwLCAtMTApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CisK
KyAgICAvLyBXYWl0IGZvciBsYXlvdXQuCisgICAgY2hlY2tTY3JvbGxPZmZzZXQoKTsKK30KKwor
ZnVuY3Rpb24gc2Vjb25kR2VzdHVyZVNjcm9sbCgpCit7CisgICAgZGVidWcoInNlY29uZCBnZXN0
dXJlIik7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDEyLCA5Nyk7CisgICAg
ZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtOTUpOworICAgIGV2ZW50U2VuZGVy
Lmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTIwMCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNj
cm9sbEVuZCgwLCAwKTsKKworICAgIC8vIFdhaXQgZm9yIGxheW91dC4KKyAgICBjaGVja1Njcm9s
bE9mZnNldCgpOworCisgICAgLy8gSW4gdGhpcyB0ZXN0IHdlIGRvIG5vdCBleHBlY3QgYW55IHNj
cm9sbCBldmVudHMgdG8KKyAgICAvLyBiZSByZWNlaXZlZCBieSB0aGUgZXZlbnQgbGlzdGVuZXIs
IHNvIHdlIHNpZ25hbAorICAgIC8vIHRoZSBlbmQgb2YgdGhlIHRlc3QgYnkgY2FsbGluZyB0aGlz
IGZ1bmN0aW9uIGluc3RlYWQKKyAgICAvLyBvZiByZWx5aW5nIG9uIHJlY29yZFNjcm9sbCgpIHRv
IGRvIGl0LgorICAgIGZpbmlzaFRlc3QoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiBydW5UZXN0KCkKK3sK
KyAgICBidWlsZFBhZ2UoKTsKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAg
IGRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHRoYXQgYSBwYWdlIGNhbm5vdCBiZSBzY3JvbGxlZCB2
ZXJ0aWNhbGx5IHdpdGggdG91Y2ggaWYgaXRzIGJvZHkgaGFzIHN0eWxlIG92ZXJmbG93LXk6aGlk
ZGVuICcgKworICAgICAgICAgICAgICAgICAgICAnYW5kIHRoZSBzY3JvbGwgZXZlbnQgaXMgcHJv
cG9nYXRlZCBmcm9tIGEgc2Nyb2xsYWJsZSBjaGlsZCBkaXYuJyk7CisKKyAgICAgICAgaWYgKGNo
ZWNrVGVzdERlcGVuZGVuY2llcygpKQorICAgICAgICAgICAgZmlyc3RHZXN0dXJlU2Nyb2xsKCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV4aXRJZk5lY2Vzc2FyeSgpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRHVtcFJlbmRlclRyZWUuICBU
b3VjaCBzY3JvbGwgdGhlIHJlZCByZWN0IHRvIGxvZy4iKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IGZpbmlzaFRlc3QoKQoreworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
aWYgKGdlc3R1cmVzT2NjdXJyZWQgPT0gZXhwZWN0ZWRHZXN0dXJlc1RvdGFsKSB7CisgICAgICAg
ICAgICBzaG91bGRCZSgnc2Nyb2xsRXZlbnRzT2NjdXJyZWQnLCBleHBlY3RlZFNjcm9sbEV2ZW50
c09jY3VycmVkKTsKKyAgICAgICAgICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAg
ICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICB9CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9z
Y3JvbGwtYm9keS14aGlkZGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXhoaWRkZW4tZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVjOWFhM2JhOTBiOGI1NTcyYWIwYWFjNmE0YjE0ZmM1M2E5NzM2
MzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0
dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEwIEBACitUaGlzIHRlc3RzIHRoYXQgYSBwYWdlIGNhbm5vdCBiZSBzY3JvbGxlZCBo
b3Jpem9udGFsbHkgd2l0aCB0b3VjaCAoYnV0IGNhbiBzdGlsbCBiZSBzY3JvbGxlZCB2ZXJ0aWNh
bGx5KSBpZiBpdHMgYm9keSBoYXMgc3R5bGUgb3ZlcmZsb3cteDpoaWRkZW4uIFRoZSBzY3JvbGwg
ZXZlbnRzIGluIHRoaXMgdGVzdCBoYXZlIGJvdGggYW4geCBhbmQgeSBjb21wb25lbnQuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitnZXN0dXJlIGV2ZW50cyBub3QgaW1wbGVtZW50
ZWQgb24gdGhpcyBwbGF0Zm9ybSBvciBnZXN0dXJlIGV2ZW50IHNjcm9sbGluZyBvZiBhIGRvY3Vt
ZW50IGlzIGJyb2tlbgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1
cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXhoaWRkZW4uaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXho
aWRkZW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2M3YWI0ZGJhN2RjNmY5MWQzYzM2NTVmOGU5NmY1OWY3
YWFkZTUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gv
Z2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteGhpZGRlbi5odG1sCkBAIC0wLDAg
KzEsMTQ5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2dlc3R1cmUtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
PgorI3RvdWNodGFyZ2V0IHsKKyAgd2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4OworICBi
YWNrZ3JvdW5kOiB3aGl0ZTsKKyAgb3ZlcmZsb3c6aGlkZGVuOworfQorCis6Oi13ZWJraXQtc2Ny
b2xsYmFyIHsKKyAgICB3aWR0aDogMHB4OworICAgIGhlaWdodDogMHB4OworfQorCisjZ3JlZW5i
b3ggeworICB3aWR0aDogMTAwcHg7CisgIGhlaWdodDogMTAwcHg7CisgIGJhY2tncm91bmQ6IGdy
ZWVuOworICBwYWRkaW5nOiAwcHg7CisgIG1hcmdpbjogMHB4OworfQorCisjcmVkYm94IHsKKyAg
d2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4OworICBiYWNrZ3JvdW5kOiByZWQ7CisgIHBh
ZGRpbmc6IDBweDsKKyAgbWFyZ2luOiAwcHg7Cit9CisKK3RkIHsKKyAgcGFkZGluZzogMHB4Owor
fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IHN0eWxlPSJtYXJnaW46MDsgb3ZlcmZsb3cteDpo
aWRkZW47IiBvbmxvYWQ9InJ1blRlc3QoKTsiPgorCis8dGFibGUgaWQ9Imhvcml6b250YWxfdGFi
bGVfdG9fZmlsbCI+CisgIDx0ciBpZD0iZmlyc3Ryb3ciPgorICAgIDx0ZD48ZGl2IGlkPSJyZWRi
b3giPjwvZGl2PjwvdGQ+CisgICAgPHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3RkPgor
ICA8L3RyPgorPC90YWJsZT4KKworPHRhYmxlIGlkPSJ2ZXJ0aWNhbF90YWJsZV90b19maWxsIj4K
KyAgICA8dHI+PHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3RkPjwvdHI+CisgICAgPHRy
Pjx0ZD48ZGl2IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+PC90cj4KKzwvdGFibGU+CisKKzxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+CisKK3ZhciBleHBlY3RlZEdlc3R1cmVzVG90YWwgPSAyOwor
dmFyIGdlc3R1cmVzT2NjdXJyZWQgPSAwOwordmFyIHNjcm9sbEFtb3VudFggPSBbJzAnLCAnMCdd
OwordmFyIHNjcm9sbEFtb3VudFkgPSBbJzExMCcsICcyMDUnXTsKK3ZhciB3aGVlbEV2ZW50c09j
Y3VycmVkID0gMDsKK3ZhciBleHBlY3RlZFdoZWVsRXZlbnRzT2NjdXJyZWQgPSBbJzAnLCAnMCdd
OwordmFyIHNjcm9sbEV2ZW50c09jY3VycmVkID0gMDsKK3ZhciBleHBlY3RlZFNjcm9sbEV2ZW50
c09jY3VycmVkID0gJzEnOwordmFyIHNjcm9sbGVkRWxlbWVudCA9ICdkb2N1bWVudC5ib2R5Jwor
CisvLyBBbHdheXMgY29uc3RydWN0IGEgcGFnZSBsYXJnZXIgdGhhbiB0aGUgdmVydGljYWwgaGVp
Z2h0IG9mIHRoZSB3aW5kb3cuCitmdW5jdGlvbiBidWlsZFBhZ2UoKQoreworICAgIC8vIGJ1aWxk
IHZlcnRpY2FsIHRhYmxlCisgICAgdmFyIHRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3ZlcnRpY2FsX3RhYmxlX3RvX2ZpbGwnKTsKKyAgICB2YXIgdGFyZ2V0SGVpZ2h0ID0gZG9jdW1l
bnQuYm9keS5vZmZzZXRIZWlnaHQ7CisgICAgdmFyIGNlbGxQYWlySGVpZ2h0ID0gdGFibGUub2Zm
c2V0SGVpZ2h0OworICAgIHZhciBudW1iZXJPZlJlcHMgPSB0YXJnZXRIZWlnaHQgLyBjZWxsUGFp
ckhlaWdodCAqIDI7CisgICAgdmFyIGk7CisgICAgZm9yIChpID0gMDsgaSA8IG51bWJlck9mUmVw
czsgaSsrKSB7CisgICAgICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsK
KyAgICAgICAgcC5pbm5lckhUTUwgPSAnPHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3Rk
Pic7CisgICAgICAgIHRhYmxlLmFwcGVuZENoaWxkKHApOworICAgICAgICB2YXIgcCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CisgICAgICAgIHAuaW5uZXJIVE1MID0gJzx0ZD48ZGl2
IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+JzsKKyAgICAgICAgdGFibGUuYXBwZW5kQ2hpbGQocCk7
CisgICAgfQorCisgICAgLy8gYnVpbGQgaG9yaXpvbnRhbCB0YWJsZQorICAgIHZhciBob3Jpem9u
dGFsVGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaG9yaXpvbnRhbF90YWJsZV90b19m
aWxsJyk7CisgICAgdmFyIHRhYmxlUm93ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpcnN0
cm93Jyk7CisgICAgdmFyIHRhcmdldFdpZHRoID0gZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDsK
KyAgICB2YXIgY2VsbFBhaXJXaWR0aCA9IGhvcml6b250YWxUYWJsZS5vZmZzZXRXaWR0aDsKKyAg
ICBudW1iZXJPZlJlcHMgPSB0YXJnZXRXaWR0aCAvIGNlbGxQYWlyV2lkdGggKiAyOworICAgIGZv
ciAoaSA9IDA7IGkgPCBudW1iZXJPZlJlcHM7IGkrKykgeworICAgICAgICB2YXIgcCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CisgICAgICAgIHAuaW5uZXJIVE1MID0gJzxkaXYgaWQ9
InJlZGJveCI+PC9kaXY+JzsKKyAgICAgICAgdGFibGVSb3cuYXBwZW5kQ2hpbGQocCk7CisgICAg
ICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKKyAgICAgICAgcC5pbm5l
ckhUTUwgPSAnPGRpdiBpZD0iZ3JlZW5ib3giPjwvZGl2Pic7CisgICAgICAgIHRhYmxlUm93LmFw
cGVuZENoaWxkKHApOworICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzY3Jv
bGwiLCByZWNvcmRTY3JvbGwpOworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdo
ZWVsIiwgcmVjb3JkV2hlZWwpOworfQorCitmdW5jdGlvbiBmaXJzdEdlc3R1cmVTY3JvbGwoKQor
eworICAgIGRlYnVnKCJmaXJzdCBnZXN0dXJlIik7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNj
cm9sbEJlZ2luKDk1LCAxMik7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgt
NTUsIC0xMTApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CisKKyAg
ICAvLyBXYWl0IGZvciBsYXlvdXQuCisgICAgY2hlY2tTY3JvbGxPZmZzZXQoKTsKK30KKworZnVu
Y3Rpb24gc2Vjb25kR2VzdHVyZVNjcm9sbCgpCit7CisgICAgZGVidWcoInNlY29uZCBnZXN0dXJl
Iik7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDEyLCA5Nyk7CisgICAgZXZl
bnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgtNDIsIC05NSk7CisgICAgZXZlbnRTZW5kZXIu
Z2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKKworICAgIC8vIFdhaXQgZm9yIGxheW91dC4KKyAgICBj
aGVja1Njcm9sbE9mZnNldCgpOworfQorCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGJ1
aWxkUGFnZSgpOworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgZGVzY3Jp
cHRpb24oJ1RoaXMgdGVzdHMgdGhhdCBhIHBhZ2UgY2Fubm90IGJlIHNjcm9sbGVkIGhvcml6b250
YWxseSB3aXRoIHRvdWNoICcgKworICAgICAgICAgICAgICAgICAgICAnKGJ1dCBjYW4gc3RpbGwg
YmUgc2Nyb2xsZWQgdmVydGljYWxseSkgaWYgaXRzIGJvZHkgaGFzIHN0eWxlIG92ZXJmbG93LXg6
aGlkZGVuLiAnICsKKyAgICAgICAgICAgICAgICAgICAgJ1RoZSBzY3JvbGwgZXZlbnRzIGluIHRo
aXMgdGVzdCBoYXZlIGJvdGggYW4geCBhbmQgeSBjb21wb25lbnQuJyk7CisKKyAgICAgICAgaWYg
KGNoZWNrVGVzdERlcGVuZGVuY2llcygpKQorICAgICAgICAgICAgZmlyc3RHZXN0dXJlU2Nyb2xs
KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV4aXRJZk5lY2Vzc2FyeSgpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRHVtcFJlbmRlclRyZWUu
ICBUb3VjaCBzY3JvbGwgdGhlIHJlZCByZWN0IHRvIGxvZy4iKTsKKyAgICB9Cit9Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXloaWRkZW4tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0
dXJlLW5vc2Nyb2xsLWJvZHkteWhpZGRlbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk4OTJi
YTI4ZmI0NmIyZjAxN2JkYWRlOGM5ODY3N2ZiNzUzZTE3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9s
bC1ib2R5LXloaWRkZW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdHMg
dGhhdCBhIHBhZ2UgY2Fubm90IGJlIHNjcm9sbGVkIHZlcnRpY2FsbHkgd2l0aCB0b3VjaCAoYnV0
IGNhbiBzdGlsbCBiZSBzY3JvbGxlZCBob3Jpem9udGFsbHkpIGlmIGl0cyBib2R5IGhhcyBzdHls
ZSBvdmVyZmxvdy15OmhpZGRlbi4gVGhlIHNjcm9sbCBldmVudHMgaW4gdGhpcyB0ZXN0IGhhdmUg
Ym90aCBhbiB4IGFuZCB5IGNvbXBvbmVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK2dlc3R1cmUgZXZlbnRzIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtIG9yIGdl
c3R1cmUgZXZlbnQgc2Nyb2xsaW5nIG9mIGEgZG9jdW1lbnQgaXMgYnJva2VuCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xs
LWJvZHkteWhpZGRlbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVy
ZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteWhpZGRlbi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMx
NmU4ODcwMGE2ZDgzZTQzODkxY2MwNDMxNzQwMTQ4MzhhNTRlNDcKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9z
Y3JvbGwtYm9keS15aGlkZGVuLmh0bWwKQEAgLTAsMCArMSwxNDkgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZ2VzdHVyZS1oZWxwZXJzLmpzIj48
L3NjcmlwdD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisjdG91Y2h0YXJnZXQgeworICB3aWR0
aDogMTAwcHg7CisgIGhlaWdodDogMTAwcHg7CisgIGJhY2tncm91bmQ6IHdoaXRlOworICBvdmVy
ZmxvdzpoaWRkZW47Cit9CisKKzo6LXdlYmtpdC1zY3JvbGxiYXIgeworICAgIHdpZHRoOiAwcHg7
CisgICAgaGVpZ2h0OiAwcHg7Cit9CisKKyNncmVlbmJveCB7CisgIHdpZHRoOiAxMDBweDsKKyAg
aGVpZ2h0OiAxMDBweDsKKyAgYmFja2dyb3VuZDogZ3JlZW47CisgIHBhZGRpbmc6IDBweDsKKyAg
bWFyZ2luOiAwcHg7Cit9CisKKyNyZWRib3ggeworICB3aWR0aDogMTAwcHg7CisgIGhlaWdodDog
MTAwcHg7CisgIGJhY2tncm91bmQ6IHJlZDsKKyAgcGFkZGluZzogMHB4OworICBtYXJnaW46IDBw
eDsKK30KKwordGQgeworICBwYWRkaW5nOiAwcHg7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHkgc3R5bGU9Im1hcmdpbjowOyBvdmVyZmxvdy15OmhpZGRlbjsiIG9ubG9hZD0icnVuVGVzdCgp
OyI+CisKKzx0YWJsZSBpZD0iaG9yaXpvbnRhbF90YWJsZV90b19maWxsIj4KKyAgPHRyIGlkPSJm
aXJzdHJvdyI+CisgICAgPHRkPjxkaXYgaWQ9InJlZGJveCI+PC9kaXY+PC90ZD4KKyAgICA8dGQ+
PGRpdiBpZD0iZ3JlZW5ib3giPjwvZGl2PjwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorCis8dGFi
bGUgaWQ9InZlcnRpY2FsX3RhYmxlX3RvX2ZpbGwiPgorICAgIDx0cj48dGQ+PGRpdiBpZD0iZ3Jl
ZW5ib3giPjwvZGl2PjwvdGQ+PC90cj4KKyAgICA8dHI+PHRkPjxkaXYgaWQ9InJlZGJveCI+PC9k
aXY+PC90ZD48L3RyPgorPC90YWJsZT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwor
dmFyIGV4cGVjdGVkR2VzdHVyZXNUb3RhbCA9IDI7Cit2YXIgZ2VzdHVyZXNPY2N1cnJlZCA9IDA7
Cit2YXIgc2Nyb2xsQW1vdW50WCA9IFsnNTUnLCAnOTcnXTsKK3ZhciBzY3JvbGxBbW91bnRZID0g
WycwJywgJzAnXTsKK3ZhciB3aGVlbEV2ZW50c09jY3VycmVkID0gMDsKK3ZhciBleHBlY3RlZFdo
ZWVsRXZlbnRzT2NjdXJyZWQgPSBbJzAnLCAnMCddOwordmFyIHNjcm9sbEV2ZW50c09jY3VycmVk
ID0gMDsKK3ZhciBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkID0gJzEnOwordmFyIHNjcm9s
bGVkRWxlbWVudCA9ICdkb2N1bWVudC5ib2R5JworCisvLyBBbHdheXMgY29uc3RydWN0IGEgcGFn
ZSBsYXJnZXIgdGhhbiB0aGUgdmVydGljYWwgaGVpZ2h0IG9mIHRoZSB3aW5kb3cuCitmdW5jdGlv
biBidWlsZFBhZ2UoKQoreworICAgIC8vIGJ1aWxkIHZlcnRpY2FsIHRhYmxlCisgICAgdmFyIHRh
YmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZlcnRpY2FsX3RhYmxlX3RvX2ZpbGwnKTsK
KyAgICB2YXIgdGFyZ2V0SGVpZ2h0ID0gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7CisgICAg
dmFyIGNlbGxQYWlySGVpZ2h0ID0gdGFibGUub2Zmc2V0SGVpZ2h0OworICAgIHZhciBudW1iZXJP
ZlJlcHMgPSB0YXJnZXRIZWlnaHQgLyBjZWxsUGFpckhlaWdodCAqIDI7CisgICAgdmFyIGk7Cisg
ICAgZm9yIChpID0gMDsgaSA8IG51bWJlck9mUmVwczsgaSsrKSB7CisgICAgICAgIHZhciBwID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKKyAgICAgICAgcC5pbm5lckhUTUwgPSAnPHRk
PjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3RkPic7CisgICAgICAgIHRhYmxlLmFwcGVuZENo
aWxkKHApOworICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7Cisg
ICAgICAgIHAuaW5uZXJIVE1MID0gJzx0ZD48ZGl2IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+JzsK
KyAgICAgICAgdGFibGUuYXBwZW5kQ2hpbGQocCk7CisgICAgfQorCisgICAgLy8gYnVpbGQgaG9y
aXpvbnRhbCB0YWJsZQorICAgIHZhciBob3Jpem9udGFsVGFibGUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnaG9yaXpvbnRhbF90YWJsZV90b19maWxsJyk7CisgICAgdmFyIHRhYmxlUm93ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpcnN0cm93Jyk7CisgICAgdmFyIHRhcmdldFdpZHRo
ID0gZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDsKKyAgICB2YXIgY2VsbFBhaXJXaWR0aCA9IGhv
cml6b250YWxUYWJsZS5vZmZzZXRXaWR0aDsKKyAgICBudW1iZXJPZlJlcHMgPSB0YXJnZXRXaWR0
aCAvIGNlbGxQYWlyV2lkdGggKiAyOworICAgIGZvciAoaSA9IDA7IGkgPCBudW1iZXJPZlJlcHM7
IGkrKykgeworICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7Cisg
ICAgICAgIHAuaW5uZXJIVE1MID0gJzxkaXYgaWQ9InJlZGJveCI+PC9kaXY+JzsKKyAgICAgICAg
dGFibGVSb3cuYXBwZW5kQ2hpbGQocCk7CisgICAgICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgndGQnKTsKKyAgICAgICAgcC5pbm5lckhUTUwgPSAnPGRpdiBpZD0iZ3JlZW5ib3gi
PjwvZGl2Pic7CisgICAgICAgIHRhYmxlUm93LmFwcGVuZENoaWxkKHApOworICAgIH0KKworICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCByZWNvcmRTY3JvbGwpOworICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwgcmVjb3JkV2hlZWwpOworfQorCitm
dW5jdGlvbiBmaXJzdEdlc3R1cmVTY3JvbGwoKQoreworICAgIGRlYnVnKCJmaXJzdCBnZXN0dXJl
Iik7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDE5NSwgMTIpOworICAgIGV2
ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoLTU1LCAtMTEwKTsKKyAgICBldmVudFNlbmRl
ci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOworCisgICAgLy8gV2FpdCBmb3IgbGF5b3V0LgorICAg
IGNoZWNrU2Nyb2xsT2Zmc2V0KCk7Cit9CisKK2Z1bmN0aW9uIHNlY29uZEdlc3R1cmVTY3JvbGwo
KQoreworICAgIGRlYnVnKCJzZWNvbmQgZ2VzdHVyZSIpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1
cmVTY3JvbGxCZWdpbigxMjAsIDI1NSk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVw
ZGF0ZSgtNDIsIC05NSk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsK
KworICAgIC8vIFdhaXQgZm9yIGxheW91dC4KKyAgICBjaGVja1Njcm9sbE9mZnNldCgpOworfQor
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGJ1aWxkUGFnZSgpOworICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgZGVzY3JpcHRpb24oJ1RoaXMgdGVzdHMgdGhhdCBh
IHBhZ2UgY2Fubm90IGJlIHNjcm9sbGVkIHZlcnRpY2FsbHkgd2l0aCB0b3VjaCAnICsKKyAgICAg
ICAgICAgICAgICAgICAgJyhidXQgY2FuIHN0aWxsIGJlIHNjcm9sbGVkIGhvcml6b250YWxseSkg
aWYgaXRzIGJvZHkgaGFzIHN0eWxlIG92ZXJmbG93LXk6aGlkZGVuLiAnICsKKyAgICAgICAgICAg
ICAgICAgICAgJ1RoZSBzY3JvbGwgZXZlbnRzIGluIHRoaXMgdGVzdCBoYXZlIGJvdGggYW4geCBh
bmQgeSBjb21wb25lbnQuJyk7CisKKyAgICAgICAgaWYgKGNoZWNrVGVzdERlcGVuZGVuY2llcygp
KQorICAgICAgICAgICAgZmlyc3RHZXN0dXJlU2Nyb2xsKCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGV4aXRJZk5lY2Vzc2FyeSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKCJU
aGlzIHRlc3QgcmVxdWlyZXMgRHVtcFJlbmRlclRyZWUuICBUb3VjaCBzY3JvbGwgdGhlIHJlZCBy
ZWN0IHRvIGxvZy4iKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2Vz
dHVyZS1ub3Njcm9sbC1ib2R5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhMzY5
YjkwZWZhMDA2YmRiZjdhMTdlOTI4Mjg1Mzg3NDcyZmQzYWMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3Jv
bGwtYm9keS5odG1sCkBAIC0wLDAgKzEsMTY2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2dlc3R1cmUtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorI3RvdWNodGFyZ2V0IHsKKyAgd2lkdGg6IDEwMHB4Owor
ICBoZWlnaHQ6IDEwMHB4OworICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgb3ZlcmZsb3c6aGlkZGVu
OworfQorCis6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKKyAgICB3aWR0aDogMHB4OworICAgIGhlaWdo
dDogMHB4OworfQorCisjZ3JlZW5ib3ggeworICB3aWR0aDogMTAwcHg7CisgIGhlaWdodDogMTAw
cHg7CisgIGJhY2tncm91bmQ6IGdyZWVuOworICBwYWRkaW5nOiAwcHg7CisgIG1hcmdpbjogMHB4
OworfQorCisjcmVkYm94IHsKKyAgd2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4OworICBi
YWNrZ3JvdW5kOiByZWQ7CisgIHBhZGRpbmc6IDBweDsKKyAgbWFyZ2luOiAwcHg7Cit9CisKK3Rk
IHsKKyAgcGFkZGluZzogMHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IHN0eWxlPSJt
YXJnaW46MDsgb3ZlcmZsb3c6aGlkZGVuOyIgb25sb2FkPSJydW5UZXN0KCk7Ij4KKworPHRhYmxl
IGlkPSJob3Jpem9udGFsX3RhYmxlX3RvX2ZpbGwiPgorICA8dHIgaWQ9ImZpcnN0cm93Ij4KKyAg
ICA8dGQ+PGRpdiBpZD0icmVkYm94Ij48L2Rpdj48L3RkPgorICAgIDx0ZD48ZGl2IGlkPSJncmVl
bmJveCI+PC9kaXY+PC90ZD4KKyAgPC90cj4KKzwvdGFibGU+CisKKzx0YWJsZSBpZD0idmVydGlj
YWxfdGFibGVfdG9fZmlsbCI+CisgICAgPHRyPjx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+
PC90ZD48L3RyPgorICAgIDx0cj48dGQ+PGRpdiBpZD0icmVkYm94Ij48L2Rpdj48L3RkPjwvdHI+
Cis8L3RhYmxlPgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCit2YXIgZXhwZWN0ZWRH
ZXN0dXJlc1RvdGFsID0gMjsKK3ZhciBnZXN0dXJlc09jY3VycmVkID0gMDsKK3ZhciBzY3JvbGxB
bW91bnRYID0gWycwJywgJzAnXTsKK3ZhciBzY3JvbGxBbW91bnRZID0gWycwJywgJzAnXTsKK3Zh
ciB3aGVlbEV2ZW50c09jY3VycmVkID0gMDsKK3ZhciBleHBlY3RlZFdoZWVsRXZlbnRzT2NjdXJy
ZWQgPSBbJzAnLCAnMCddOwordmFyIHNjcm9sbEV2ZW50c09jY3VycmVkID0gMDsKK3ZhciBleHBl
Y3RlZFNjcm9sbEV2ZW50c09jY3VycmVkID0gJzAnOwordmFyIHNjcm9sbGVkRWxlbWVudCA9ICdk
b2N1bWVudC5ib2R5JworCisvLyBBbHdheXMgY29uc3RydWN0IGEgcGFnZSBsYXJnZXIgdGhhbiB0
aGUgdmVydGljYWwgaGVpZ2h0IG9mIHRoZSB3aW5kb3cuCitmdW5jdGlvbiBidWlsZFBhZ2UoKQor
eworICAgIC8vIGJ1aWxkIHZlcnRpY2FsIHRhYmxlCisgICAgdmFyIHRhYmxlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3ZlcnRpY2FsX3RhYmxlX3RvX2ZpbGwnKTsKKyAgICB2YXIgdGFyZ2V0
SGVpZ2h0ID0gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7CisgICAgdmFyIGNlbGxQYWlySGVp
Z2h0ID0gdGFibGUub2Zmc2V0SGVpZ2h0OworICAgIHZhciBudW1iZXJPZlJlcHMgPSB0YXJnZXRI
ZWlnaHQgLyBjZWxsUGFpckhlaWdodCAqIDI7CisgICAgdmFyIGk7CisgICAgZm9yIChpID0gMDsg
aSA8IG51bWJlck9mUmVwczsgaSsrKSB7CisgICAgICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgndHInKTsKKyAgICAgICAgcC5pbm5lckhUTUwgPSAnPHRkPjxkaXYgaWQ9ImdyZWVu
Ym94Ij48L2Rpdj48L3RkPic7CisgICAgICAgIHRhYmxlLmFwcGVuZENoaWxkKHApOworICAgICAg
ICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CisgICAgICAgIHAuaW5uZXJI
VE1MID0gJzx0ZD48ZGl2IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+JzsKKyAgICAgICAgdGFibGUu
YXBwZW5kQ2hpbGQocCk7CisgICAgfQorCisgICAgLy8gYnVpbGQgaG9yaXpvbnRhbCB0YWJsZQor
ICAgIHZhciBob3Jpem9udGFsVGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaG9yaXpv
bnRhbF90YWJsZV90b19maWxsJyk7CisgICAgdmFyIHRhYmxlUm93ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2ZpcnN0cm93Jyk7CisgICAgdmFyIHRhcmdldFdpZHRoID0gZG9jdW1lbnQuYm9k
eS5vZmZzZXRXaWR0aDsKKyAgICB2YXIgY2VsbFBhaXJXaWR0aCA9IGhvcml6b250YWxUYWJsZS5v
ZmZzZXRXaWR0aDsKKyAgICBudW1iZXJPZlJlcHMgPSB0YXJnZXRXaWR0aCAvIGNlbGxQYWlyV2lk
dGggKiAyOworICAgIGZvciAoaSA9IDA7IGkgPCBudW1iZXJPZlJlcHM7IGkrKykgeworICAgICAg
ICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CisgICAgICAgIHAuaW5uZXJI
VE1MID0gJzxkaXYgaWQ9InJlZGJveCI+PC9kaXY+JzsKKyAgICAgICAgdGFibGVSb3cuYXBwZW5k
Q2hpbGQocCk7CisgICAgICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsK
KyAgICAgICAgcC5pbm5lckhUTUwgPSAnPGRpdiBpZD0iZ3JlZW5ib3giPjwvZGl2Pic7CisgICAg
ICAgIHRhYmxlUm93LmFwcGVuZENoaWxkKHApOworICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJzY3JvbGwiLCByZWNvcmRTY3JvbGwpOworICAgIHdpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCJtb3VzZXdoZWVsIiwgcmVjb3JkV2hlZWwpOworfQorCitmdW5jdGlvbiBmaXJzdEdl
c3R1cmVTY3JvbGwoKQoreworICAgIGRlYnVnKCJmaXJzdCBnZXN0dXJlIik7CisgICAgZXZlbnRT
ZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDk1LCAxMik7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVy
ZVNjcm9sbFVwZGF0ZSgtNTUsIC0xMTApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxF
bmQoMCwgMCk7CisKKyAgICAvLyBXYWl0IGZvciBsYXlvdXQuCisgICAgY2hlY2tTY3JvbGxPZmZz
ZXQoKTsKK30KKworZnVuY3Rpb24gc2Vjb25kR2VzdHVyZVNjcm9sbCgpCit7CisgICAgZGVidWco
InNlY29uZCBnZXN0dXJlIik7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDEy
LCA5Nyk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgtNDIsIC05NSk7Cisg
ICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKKworICAgIC8vIFdhaXQgZm9y
IGxheW91dC4KKyAgICBjaGVja1Njcm9sbE9mZnNldCgpOworCisgICAgLy8gSW4gdGhpcyB0ZXN0
IHdlIGRvIG5vdCBleHBlY3QgYW55IHNjcm9sbCBldmVudHMgdG8KKyAgICAvLyBiZSByZWNlaXZl
ZCBieSB0aGUgZXZlbnQgbGlzdGVuZXIsIHNvIHdlIHNpZ25hbAorICAgIC8vIHRoZSBlbmQgb2Yg
dGhlIHRlc3QgYnkgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGluc3RlYWQKKyAgICAvLyBvZiByZWx5
aW5nIG9uIHJlY29yZFNjcm9sbCgpIHRvIGRvIGl0LgorICAgIGZpbmlzaFRlc3QoKTsKK30KKwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
CitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBidWlsZFBhZ2UoKTsKKyAgICBpZiAod2luZG93
LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHRoYXQgYSBw
YWdlIGNhbm5vdCBiZSBzY3JvbGxlZCB3aXRoIHRvdWNoIGlmIGl0cyBib2R5IGhhcyBzdHlsZSBv
dmVyZmxvdzpoaWRkZW4uJyk7CisKKyAgICAgICAgaWYgKGNoZWNrVGVzdERlcGVuZGVuY2llcygp
KQorICAgICAgICAgICAgZmlyc3RHZXN0dXJlU2Nyb2xsKCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGV4aXRJZk5lY2Vzc2FyeSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKCJU
aGlzIHRlc3QgcmVxdWlyZXMgRHVtcFJlbmRlclRyZWUuICBUb3VjaCBzY3JvbGwgdGhlIHJlZCBy
ZWN0IHRvIGxvZy4iKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGZpbmlzaFRlc3QoKQoreworICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgaWYgKGdlc3R1cmVzT2NjdXJyZWQg
PT0gZXhwZWN0ZWRHZXN0dXJlc1RvdGFsKSB7CisgICAgICAgICAgICBzaG91bGRCZSgnc2Nyb2xs
RXZlbnRzT2NjdXJyZWQnLCBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkKTsKKyAgICAgICAg
ICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgICAgICAgICBpc1N1Y2Nlc3NmdWxs
eVBhcnNlZCgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisgICAgfQorfQorPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi1ub3QtcHJvcGFnYXRl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0
dXJlLXNjcm9sbC1kaXYtbm90LXByb3BhZ2F0ZWQuaHRtbAppbmRleCAyODAxNDA5ZDdiMDQzYzI0
NTA5YjY1NzFkYjljNDViOTZiMDFkZTFkLi5kMGM1ZDUwY2I2Yzk4YmNjMGU4ZGZmYjZiZjljZDUy
ODdiYzQ5YjU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0
dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi1ub3QtcHJvcGFnYXRlZC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwt
ZGl2LW5vdC1wcm9wYWdhdGVkLmh0bWwKQEAgLTkyLDI1ICs5Miw2IEBAIHZhciBzY3JvbGxlZEVs
ZW1lbnQgPSAnbW92ZWRib3gnCiB2YXIgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAwOwogdmFyIGV4
cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAnMSc7CiAKLQotZnVuY3Rpb24gcmVjb3JkU2Ny
b2xsKGV2ZW50KSB7Ci0JZGVidWcoJ3Njcm9sbCBldmVudCAnICsgc2Nyb2xsRXZlbnRzT2NjdXJy
ZWQgKyAnKz4gJyArIGV2ZW50LnRhcmdldCk7Ci0Jc2Nyb2xsRXZlbnRzT2NjdXJyZWQrKzsKLQot
CWlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLQkJLy8gQmVjYXVzZSBzY3JvbGwgZXZlbnRzIGFy
cml2ZSBhc3luY2hyb25vdXNseSwgb25seSBvbmUgd2lsbCBhcnJpdmUuCi0JICAgIGlmIChnZXN0
dXJlc09jY3VycmVkID09IGV4cGVjdGVkR2VzdHVyZXNUb3RhbCkgewotCQkJc2hvdWxkQmUoJ3Nj
cm9sbEV2ZW50c09jY3VycmVkJywgZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCk7Ci0JICAg
ICAgICAvLyBJZiB3ZSd2ZSBnb3QgaGVyZSwgd2UndmUgcGFzc2VkLgotCSAgICAgICAgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKLQkgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0J
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0JICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci0JCX0KLSAgICB9Ci19Ci0KLQogZnVuY3Rpb24gZmlyc3RHZXN0dXJlU2Ny
b2xsKCkKIHsKICAgICBkZWJ1ZygiZmlyc3QgZ2VzdHVyZSIpOwpAQCAtMTI2LDcgKzEwNyw4IEBA
IGZ1bmN0aW9uIHNlY29uZEdlc3R1cmVTY3JvbGwoKQogewogICAgIGRlYnVnKCJzZWNvbmQgZ2Vz
dHVyZSIpOwogICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdpbigxMiwgNDApOwotICAg
IGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGVXaXRob3V0UHJvcGFnYXRpb24oMCwgLTYw
KTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9u
KDAsIC01MCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZVdpdGhvdXRQcm9w
YWdhdGlvbigwLCAtMTApOwogICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7
CiAKICAgICAvLyBXYWl0IGZvciBsYXlvdXQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi1wcm9wYWdhdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1
cmUtc2Nyb2xsLWRpdi1wcm9wYWdhdGVkLmh0bWwKaW5kZXggMzQzZTE1ZjVjZTI5YjJlY2I2OWQy
OTIxZDJlZmM2MzE2YTVhMWRkNC4uOTk3Njk4NTRhYWM1OGE2Y2U1ZjM3NTc5Y2RhODRmNTc0ODVm
ZDYzNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90
b3VjaC1nZXN0dXJlLXNjcm9sbC1kaXYtcHJvcGFnYXRlZC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZGl2LXByb3Bh
Z2F0ZWQuaHRtbApAQCAtOTIsMjUgKzkyLDYgQEAgdmFyIHNjcm9sbGVkRWxlbWVudCA9ICdtb3Zl
ZGJveCcKIHZhciBzY3JvbGxFdmVudHNPY2N1cnJlZCA9IDA7CiB2YXIgZXhwZWN0ZWRTY3JvbGxF
dmVudHNPY2N1cnJlZCA9ICcxJzsKIAotCi1mdW5jdGlvbiByZWNvcmRTY3JvbGwoZXZlbnQpIHsK
LQlkZWJ1Zygnc2Nyb2xsIGV2ZW50ICcgKyBzY3JvbGxFdmVudHNPY2N1cnJlZCArICcrPiAnICsg
ZXZlbnQudGFyZ2V0KTsKLQlzY3JvbGxFdmVudHNPY2N1cnJlZCsrOwotCi0JaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgewotCQkvLyBCZWNhdXNlIHNjcm9sbCBldmVudHMgYXJyaXZlIGFzeW5jaHJv
bm91c2x5LCBvbmx5IG9uZSB3aWxsIGFycml2ZS4KLQkgICAgaWYgKGdlc3R1cmVzT2NjdXJyZWQg
PT0gZXhwZWN0ZWRHZXN0dXJlc1RvdGFsKSB7Ci0JCQlzaG91bGRCZSgnc2Nyb2xsRXZlbnRzT2Nj
dXJyZWQnLCBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkKTsKLQkgICAgICAgIC8vIElmIHdl
J3ZlIGdvdCBoZXJlLCB3ZSd2ZSBwYXNzZWQuCi0JICAgICAgICBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOwotCSAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLQkgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLQkgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LQkJfQotICAgIH0KLX0KLQotCiBmdW5jdGlvbiBmaXJzdEdlc3R1cmVTY3JvbGwoKQogewogICAg
IGRlYnVnKCJmaXJzdCBnZXN0dXJlIik7CkBAIC0xMjYsNyArMTA3LDggQEAgZnVuY3Rpb24gc2Vj
b25kR2VzdHVyZVNjcm9sbCgpCiB7CiAgICAgZGVidWcoInNlY29uZCBnZXN0dXJlIik7CiAgICAg
ZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDEyLCA0MCk7Ci0gICAgZXZlbnRTZW5kZXIu
Z2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtNjApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3Jv
bGxVcGRhdGUoMCwgLTUwKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAs
IC0xMCk7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKIAogICAgIC8v
IFdhaXQgZm9yIGxheW91dC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Rv
dWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZGl2LXR3aWNlLXByb3BhZ2F0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1z
Y3JvbGwtZGl2LXR3aWNlLXByb3BhZ2F0ZWQuaHRtbAppbmRleCA4ZjY1MWQ0NWJjYzlhMDcyMDhl
MjMwZTQ5MWFlZDQ5MDMyNDY5MWYwLi4xYjZlNjFlYjMzNzk3Y2I1NTYxNjQyNjM0ZTg4YzVhNThl
YjFkYzg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJl
L3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi10d2ljZS1wcm9wYWdhdGVkLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1k
aXYtdHdpY2UtcHJvcGFnYXRlZC5odG1sCkBAIC0xMTYsMzAgKzExNiwxMiBAQCB2YXIgc2Nyb2xs
ZWRFbGVtZW50ID0gJ21vdmVkYm94JwogdmFyIHNjcm9sbEV2ZW50c09jY3VycmVkID0gMDsKIHZh
ciBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkID0gJzEnOwogCi0KLWZ1bmN0aW9uIHJlY29y
ZFNjcm9sbChldmVudCkgewotCWRlYnVnKCdzY3JvbGwgZXZlbnQgJyArIHNjcm9sbEV2ZW50c09j
Y3VycmVkICsgJys+ICcgKyBldmVudC50YXJnZXQpOwotCXNjcm9sbEV2ZW50c09jY3VycmVkKys7
Ci0KLQlpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Ci0JCS8vIEJlY2F1c2Ugc2Nyb2xsIGV2ZW50
cyBhcnJpdmUgYXN5bmNocm9ub3VzbHksIG9ubHkgb25lIHdpbGwgYXJyaXZlLgotCSAgICBpZiAo
Z2VzdHVyZXNPY2N1cnJlZCA9PSBleHBlY3RlZEdlc3R1cmVzVG90YWwpIHsKLQkJCXNob3VsZEJl
KCdzY3JvbGxFdmVudHNPY2N1cnJlZCcsIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQpOwot
CSAgICAgICAgLy8gSWYgd2UndmUgZ290IGhlcmUsIHdlJ3ZlIHBhc3NlZC4KLQkgICAgICAgIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Ci0JICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgp
OwotCSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotCSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotCQl9Ci0gICAgfQotfQotCi0KIGZ1bmN0aW9uIGZpcnN0R2VzdHVy
ZVNjcm9sbCgpCiB7CiAgICAgZGVidWcoImZpcnN0IGdlc3R1cmUiKTsKICAgICBldmVudFNlbmRl
ci5nZXN0dXJlU2Nyb2xsQmVnaW4oMTAsIDcyKTsKLSAgICBldmVudFNlbmRlci5nZXN0dXJlU2Ny
b2xsVXBkYXRlKDAsIC0yMzApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUo
MCwgLTIwMCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMzApOwog
ICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CiAKICAgICAvLyBXYWl0IGZv
ciBsYXlvdXQuCkBAIC0xNTAsNyArMTMyLDggQEAgZnVuY3Rpb24gc2Vjb25kR2VzdHVyZVNjcm9s
bCgpCiB7CiAgICAgZGVidWcoInNlY29uZCBnZXN0dXJlIik7CiAgICAgZXZlbnRTZW5kZXIuZ2Vz
dHVyZVNjcm9sbEJlZ2luKDEyLCA0MCk7Ci0gICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVw
ZGF0ZSgwLCAtNDUpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTIw
KTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC0yNSk7CiAgICAgZXZl
bnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKIAogICAgIC8vIFdhaXQgZm9yIGxheW91
dC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91
Y2gtZ2VzdHVyZS1zY3JvbGwtaWZyYW1lLW5vdC1wcm9wYWdhdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWlmcmFtZS1u
b3QtcHJvcGFnYXRlZC5odG1sCmluZGV4IGE2ZDlmMjJjMzAwNWE0NTMyMDU4YjM2Mzk2ODNmMzcy
ZjdiYjA5ZjcuLmE5OWMyNjU1Nzc4ZWNmNGRiZjQxMjI5MTIxOTlhNzI1NTllNTczZDAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVy
ZS1zY3JvbGwtaWZyYW1lLW5vdC1wcm9wYWdhdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1pZnJhbWUtbm90LXBy
b3BhZ2F0ZWQuaHRtbApAQCAtNzEsMjUgKzcxLDYgQEAgdmFyIHNjcm9sbGVkRWxlbWVudCA9ICdt
b3ZlZGJveCcKIHZhciBzY3JvbGxFdmVudHNPY2N1cnJlZCA9IDA7CiB2YXIgZXhwZWN0ZWRTY3Jv
bGxFdmVudHNPY2N1cnJlZCA9ICcxJzsKIAotCi1mdW5jdGlvbiByZWNvcmRTY3JvbGwoZXZlbnQp
IHsKLQlkZWJ1Zygnc2Nyb2xsIGV2ZW50ICcgKyBzY3JvbGxFdmVudHNPY2N1cnJlZCArICcrPiAn
ICsgZXZlbnQudGFyZ2V0KTsKLQlzY3JvbGxFdmVudHNPY2N1cnJlZCsrOwotCi0JaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgewotCQkvLyBCZWNhdXNlIHNjcm9sbCBldmVudHMgYXJyaXZlIGFzeW5j
aHJvbm91c2x5LCBvbmx5IG9uZSB3aWxsIGFycml2ZS4KLQkgICAgaWYgKGdlc3R1cmVzT2NjdXJy
ZWQgPT0gZXhwZWN0ZWRHZXN0dXJlc1RvdGFsKSB7Ci0JCQlzaG91bGRCZSgnc2Nyb2xsRXZlbnRz
T2NjdXJyZWQnLCBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkKTsKLQkgICAgICAgIC8vIElm
IHdlJ3ZlIGdvdCBoZXJlLCB3ZSd2ZSBwYXNzZWQuCi0JICAgICAgICBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwotCSAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLQkgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLQkgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLQkJfQotICAgIH0KLX0KLQotCiBmdW5jdGlvbiBmaXJzdEdlc3R1cmVTY3JvbGwoKQogewog
ICAgIGRlYnVnKCJmaXJzdCBnZXN0dXJlIik7CkBAIC0xMDUsNyArODYsOCBAQCBmdW5jdGlvbiBz
ZWNvbmRHZXN0dXJlU2Nyb2xsKCkKIHsKICAgICBkZWJ1Zygic2Vjb25kIGdlc3R1cmUiKTsKICAg
ICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsQmVnaW4oMTIsIDQwKTsKLSAgICBldmVudFNlbmRl
ci5nZXN0dXJlU2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9uKDAsIC0xMDApOworICAgIGV2
ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGVXaXRob3V0UHJvcGFnYXRpb24oMCwgLTEwKTsK
KyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9uKDAs
IC01MCk7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKIAogICAgIC8v
IFdhaXQgZm9yIGxheW91dC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Rv
dWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtaWZyYW1lLXByb3BhZ2F0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3Jv
bGwtaWZyYW1lLXByb3BhZ2F0ZWQuaHRtbAppbmRleCAxYTNiNWFkOTg3ZDcyOTc1MDZiMGEzZTM3
MDMzOTUxZjkzYzI5YTU4Li5kM2MwYWY0YzliYTkzNWNiNmM4NmUwMzRkNTU0OThkNzQ2MDM0MjJk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNo
LWdlc3R1cmUtc2Nyb2xsLWlmcmFtZS1wcm9wYWdhdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1pZnJhbWUtcHJv
cGFnYXRlZC5odG1sCkBAIC03MSwyNSArNzEsNiBAQCB2YXIgc2Nyb2xsZWRFbGVtZW50ID0gJ21v
dmVkYm94JwogdmFyIHNjcm9sbEV2ZW50c09jY3VycmVkID0gMDsKIHZhciBleHBlY3RlZFNjcm9s
bEV2ZW50c09jY3VycmVkID0gJzEnOwogCi0KLWZ1bmN0aW9uIHJlY29yZFNjcm9sbChldmVudCkg
ewotCWRlYnVnKCdzY3JvbGwgZXZlbnQgJyArIHNjcm9sbEV2ZW50c09jY3VycmVkICsgJys+ICcg
KyBldmVudC50YXJnZXQpOwotCXNjcm9sbEV2ZW50c09jY3VycmVkKys7Ci0KLQlpZiAod2luZG93
LmV2ZW50U2VuZGVyKSB7Ci0JCS8vIEJlY2F1c2Ugc2Nyb2xsIGV2ZW50cyBhcnJpdmUgYXN5bmNo
cm9ub3VzbHksIG9ubHkgb25lIHdpbGwgYXJyaXZlLgotCSAgICBpZiAoZ2VzdHVyZXNPY2N1cnJl
ZCA9PSBleHBlY3RlZEdlc3R1cmVzVG90YWwpIHsKLQkJCXNob3VsZEJlKCdzY3JvbGxFdmVudHNP
Y2N1cnJlZCcsIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQpOwotCSAgICAgICAgLy8gSWYg
d2UndmUgZ290IGhlcmUsIHdlJ3ZlIHBhc3NlZC4KLQkgICAgICAgIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Ci0JICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotCSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotCSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotCQl9Ci0gICAgfQotfQotCi0KIGZ1bmN0aW9uIGZpcnN0R2VzdHVyZVNjcm9sbCgpCiB7CiAg
ICAgZGVidWcoImZpcnN0IGdlc3R1cmUiKTsKQEAgLTEwNSw3ICs4Niw4IEBAIGZ1bmN0aW9uIHNl
Y29uZEdlc3R1cmVTY3JvbGwoKQogewogICAgIGRlYnVnKCJzZWNvbmQgZ2VzdHVyZSIpOwogICAg
IGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdpbigxMiwgNDApOwotICAgIGV2ZW50U2VuZGVy
Lmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTEwMCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNj
cm9sbFVwZGF0ZSgwLCAtMTApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUo
MCwgLTUwKTsKICAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOwogCiAgICAg
Ly8gV2FpdCBmb3IgbGF5b3V0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLW5vdC1wcm9wYWdhdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUt
c2Nyb2xsLXBhZ2Utbm90LXByb3BhZ2F0ZWQuaHRtbAppbmRleCBiMzg1MjQ1ZmMxOWMzYjNkM2I5
ODk1OTA0NjEwZDYwNGJiMjlmMTZhLi40NmQ4MzZjMjBjMWQ5M2I1MDE4YzJmNWUzMDZmYWU3NjI0
OGYyNjM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJl
L3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2Utbm90LXByb3BhZ2F0ZWQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBh
Z2Utbm90LXByb3BhZ2F0ZWQuaHRtbApAQCAtODYsMjMgKzg2LDYgQEAgdmFyIHNjcm9sbGVkRWxl
bWVudCA9ICdkb2N1bWVudC5ib2R5JwogdmFyIHNjcm9sbEV2ZW50c09jY3VycmVkID0gMDsKIHZh
ciBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkID0gJzEnOwogCi1mdW5jdGlvbiByZWNvcmRT
Y3JvbGwoZXZlbnQpIHsKLQlkZWJ1Zygnc2Nyb2xsIGV2ZW50ICcgKyBzY3JvbGxFdmVudHNPY2N1
cnJlZCArICcrPiAnICsgZXZlbnQudGFyZ2V0KTsKLQlzY3JvbGxFdmVudHNPY2N1cnJlZCsrOwot
Ci0JaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewotCQkvLyBCZWNhdXNlIHNjcm9sbCBldmVudHMg
YXJyaXZlIGFzeW5jaHJvbm91c2x5LCBvbmx5IG9uZSB3aWxsIGFycml2ZS4KLQkgICAgaWYgKGdl
c3R1cmVzT2NjdXJyZWQgPT0gZXhwZWN0ZWRHZXN0dXJlc1RvdGFsKSB7Ci0JCQlzaG91bGRCZSgn
c2Nyb2xsRXZlbnRzT2NjdXJyZWQnLCBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkKTsKLQkg
ICAgICAgIC8vIElmIHdlJ3ZlIGdvdCBoZXJlLCB3ZSd2ZSBwYXNzZWQuCi0JICAgICAgICBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwotCSAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsK
LQkgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLQkgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLQkJfQotICAgIH0KLX0KLQogLy8gQWx3YXlzIGNvbnN0cnVjdCBhIHBh
Z2UgbGFyZ2VyIHRoYW4gdGhlIHZlcnRpY2FsIGhlaWdodCBvZiB0aGUgd2luZG93LgogZnVuY3Rp
b24gYnVpbGRQYWdlKCkKIHsKQEAgLTEzNiw3ICsxMTksOCBAQCBmdW5jdGlvbiBzZWNvbmRHZXN0
dXJlU2Nyb2xsKCkKIHsKICAgICBkZWJ1Zygic2Vjb25kIGdlc3R1cmUiKTsKICAgICBldmVudFNl
bmRlci5nZXN0dXJlU2Nyb2xsQmVnaW4oMTIsIDQwKTsKLSAgICBldmVudFNlbmRlci5nZXN0dXJl
U2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9uKDAsIC0yNTApOworICAgIGV2ZW50U2VuZGVy
Lmdlc3R1cmVTY3JvbGxVcGRhdGVXaXRob3V0UHJvcGFnYXRpb24oMCwgLTIwMCk7CisgICAgZXZl
bnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZVdpdGhvdXRQcm9wYWdhdGlvbigwLCAtMTYwKTsK
ICAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOwogCiAgICAgLy8gV2FpdCBm
b3IgbGF5b3V0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLXByb3BhZ2F0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcGFnZS1w
cm9wYWdhdGVkLmh0bWwKaW5kZXggMDkzMDk1YzVlZmI5NmNiZDIyZjJmMGUxYjdkNWFjYTFmYTUw
OGJkNS4uZGFhNDU2N2U4M2ZkMTdhZjc5ODExOTI3MDRmZWYzYjkyNmQ5OTViMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNj
cm9sbC1wYWdlLXByb3BhZ2F0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2UtcHJvcGFnYXRlZC5odG1sCkBA
IC04NiwyMyArODYsNiBAQCB2YXIgc2Nyb2xsZWRFbGVtZW50ID0gJ2RvY3VtZW50LmJvZHknCiB2
YXIgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAwOwogdmFyIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2Nj
dXJyZWQgPSAnMSc7CiAKLWZ1bmN0aW9uIHJlY29yZFNjcm9sbChldmVudCkgewotCWRlYnVnKCdz
Y3JvbGwgZXZlbnQgJyArIHNjcm9sbEV2ZW50c09jY3VycmVkICsgJys+ICcgKyBldmVudC50YXJn
ZXQpOwotCXNjcm9sbEV2ZW50c09jY3VycmVkKys7Ci0KLQlpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7Ci0JCS8vIEJlY2F1c2Ugc2Nyb2xsIGV2ZW50cyBhcnJpdmUgYXN5bmNocm9ub3VzbHksIG9u
bHkgb25lIHdpbGwgYXJyaXZlLgotCSAgICBpZiAoZ2VzdHVyZXNPY2N1cnJlZCA9PSBleHBlY3Rl
ZEdlc3R1cmVzVG90YWwpIHsKLQkJCXNob3VsZEJlKCdzY3JvbGxFdmVudHNPY2N1cnJlZCcsIGV4
cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQpOwotCSAgICAgICAgLy8gSWYgd2UndmUgZ290IGhl
cmUsIHdlJ3ZlIHBhc3NlZC4KLQkgICAgICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Ci0J
ICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotCSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotCSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotCQl9Ci0gICAg
fQotfQotCiAvLyBBbHdheXMgY29uc3RydWN0IGEgcGFnZSBsYXJnZXIgdGhhbiB0aGUgdmVydGlj
YWwgaGVpZ2h0IG9mIHRoZSB3aW5kb3cuCiBmdW5jdGlvbiBidWlsZFBhZ2UoKQogewpAQCAtMTM2
LDcgKzExOSw4IEBAIGZ1bmN0aW9uIHNlY29uZEdlc3R1cmVTY3JvbGwoKQogewogICAgIGRlYnVn
KCJzZWNvbmQgZ2VzdHVyZSIpOwogICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdpbigx
MiwgNDApOwotICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTI1MCk7Cisg
ICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMjAwKTsKKyAgICBldmVudFNl
bmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC0xNjApOwogICAgIGV2ZW50U2VuZGVyLmdlc3R1
cmVTY3JvbGxFbmQoMCwgMCk7CiAKICAgICAvLyBXYWl0IGZvciBsYXlvdXQuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJl
L3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUt
bm9zY3JvbGwtYm9keS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRjYWY5YWE3NWQ0NGQyYTAw
YzUzMWJiMmIwZmQxYTliMTU4MWQxMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1u
b3Njcm9sbC1ib2R5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUaGlzIHRlc3RzIHRo
YXQgYSBwYWdlIGNhbm5vdCBiZSBzY3JvbGxlZCB3aXRoIHRvdWNoIGlmIGl0cyBib2R5IGhhcyBz
dHlsZSBvdmVyZmxvdzpoaWRkZW4uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitm
aXJzdCBnZXN0dXJlCitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIGlzIDAKK1BBU1MgZG9j
dW1lbnQuYm9keS5zY3JvbGxMZWZ0IGlzIDAKK1BBU1Mgd2hlZWxFdmVudHNPY2N1cnJlZCBpcyAw
CitzZWNvbmQgZ2VzdHVyZQorUEFTUyBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCBpcyAwCitQQVNT
IGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCBpcyAwCitQQVNTIHdoZWVsRXZlbnRzT2NjdXJyZWQg
aXMgMAorUEFTUyBzY3JvbGxFdmVudHNPY2N1cnJlZCBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJl
LW5vc2Nyb2xsLWJvZHktcHJvcGFnYXRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9z
Y3JvbGwtYm9keS1wcm9wYWdhdGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZjIzN2E1OGZm
ZWNhMzJlOGRlMTM0NzUxYzk0MTc1Mjc1ODI2NGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1n
ZXN0dXJlLW5vc2Nyb2xsLWJvZHktcHJvcGFnYXRlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
OCBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgcGFnZSBjYW5ub3QgYmUgc2Nyb2xsZWQgdmVydGljYWxs
eSB3aXRoIHRvdWNoIGlmIGl0cyBib2R5IGhhcyBzdHlsZSBvdmVyZmxvdy15OmhpZGRlbiBhbmQg
dGhlIHNjcm9sbCBldmVudCBpcyBwcm9wb2dhdGVkIGZyb20gYSBzY3JvbGxhYmxlIGNoaWxkIGRp
di4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2ZpcnN0IGdlc3R1cmUKK1BBU1Mg
ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgaXMgMAorUEFTUyBkb2N1bWVudC5ib2R5LnNjcm9sbExl
ZnQgaXMgMAorUEFTUyB3aGVlbEV2ZW50c09jY3VycmVkIGlzIDAKK3NlY29uZCBnZXN0dXJlCitQ
QVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIGlzIDAKK1BBU1MgZG9jdW1lbnQuYm9keS5zY3Jv
bGxMZWZ0IGlzIDAKK1BBU1Mgd2hlZWxFdmVudHNPY2N1cnJlZCBpcyAwCitQQVNTIHNjcm9sbEV2
ZW50c09jY3VycmVkIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlk
ZGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZl
bnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXhoaWRkZW4tZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjMjc3NjI5ZjQzYWM3ZDI4ZTcxMmFmYTljNWI0NzM0MGM5
YmQxMDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlk
ZGVuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitUaGlzIHRlc3RzIHRoYXQgYSBwYWdl
IGNhbm5vdCBiZSBzY3JvbGxlZCBob3Jpem9udGFsbHkgd2l0aCB0b3VjaCAoYnV0IGNhbiBzdGls
bCBiZSBzY3JvbGxlZCB2ZXJ0aWNhbGx5KSBpZiBpdHMgYm9keSBoYXMgc3R5bGUgb3ZlcmZsb3ct
eDpoaWRkZW4uIFRoZSBzY3JvbGwgZXZlbnRzIGluIHRoaXMgdGVzdCBoYXZlIGJvdGggYW4geCBh
bmQgeSBjb21wb25lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitmaXJzdCBn
ZXN0dXJlCitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIGlzIDExMAorUEFTUyBkb2N1bWVu
dC5ib2R5LnNjcm9sbExlZnQgaXMgMAorUEFTUyB3aGVlbEV2ZW50c09jY3VycmVkIGlzIDAKK3Nl
Y29uZCBnZXN0dXJlCitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIGlzIDIwNQorUEFTUyBk
b2N1bWVudC5ib2R5LnNjcm9sbExlZnQgaXMgMAorUEFTUyB3aGVlbEV2ZW50c09jY3VycmVkIGlz
IDAKK3Njcm9sbCBldmVudCAwKz4gW29iamVjdCBIVE1MRG9jdW1lbnRdCitQQVNTIHNjcm9sbEV2
ZW50c09jY3VycmVkIGlzIDEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS15aGlk
ZGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZl
bnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXloaWRkZW4tZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4OWExZDcyNWQ5YzMxY2NhNTAzMWE2MjAwOWRhOGU0Zjky
N2YzMTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS15aGlk
ZGVuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitUaGlzIHRlc3RzIHRoYXQgYSBwYWdl
IGNhbm5vdCBiZSBzY3JvbGxlZCB2ZXJ0aWNhbGx5IHdpdGggdG91Y2ggKGJ1dCBjYW4gc3RpbGwg
YmUgc2Nyb2xsZWQgaG9yaXpvbnRhbGx5KSBpZiBpdHMgYm9keSBoYXMgc3R5bGUgb3ZlcmZsb3ct
eTpoaWRkZW4uIFRoZSBzY3JvbGwgZXZlbnRzIGluIHRoaXMgdGVzdCBoYXZlIGJvdGggYW4geCBh
bmQgeSBjb21wb25lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitmaXJzdCBn
ZXN0dXJlCitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIGlzIDAKK1BBU1MgZG9jdW1lbnQu
Ym9keS5zY3JvbGxMZWZ0IGlzIDU1CitQQVNTIHdoZWVsRXZlbnRzT2NjdXJyZWQgaXMgMAorc2Vj
b25kIGdlc3R1cmUKK1BBU1MgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgaXMgMAorUEFTUyBkb2N1
bWVudC5ib2R5LnNjcm9sbExlZnQgaXMgOTcKK1BBU1Mgd2hlZWxFdmVudHNPY2N1cnJlZCBpcyAw
CitzY3JvbGwgZXZlbnQgMCs+IFtvYmplY3QgSFRNTERvY3VtZW50XQorUEFTUyBzY3JvbGxFdmVu
dHNPY2N1cnJlZCBpcyAxCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190372</attachid>
            <date>2013-02-26 15:18:03 -0800</date>
            <delta_ts>2013-02-27 13:31:43 -0800</delta_ts>
            <desc>Patch for review</desc>
            <filename>bug-109769-20130226181417.patch</filename>
            <type>text/plain</type>
            <size>55381</size>
            <attacher name="Terry Anderson">tdanderson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWZmNDY3YjNiNzJmZWU1
ZGFjNjc1ZTFmZjllY2JlNDk4MWIxNDRjNC4uOTdlZDU5N2Y4MWY4OWU0ZjcyNTY3M2Y5Nzk3OWE2
OTA1MGY5NWZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTAyLTI2ICBUZXJy
eSBBbmRlcnNvbiAgPHRkYW5kZXJzb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZSgpIHNob3VsZCBpbnZva2UgdGhlIHVzZXIt
Z2VuZXJhdGVkIHNjcm9sbCByb3V0aW5lcyBzbyBpdHMgYmVoYXZpb3IgbWF0Y2hlcyBvdGhlciB1
c2VyLWluaXRpYXRlZCBzY3JvbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDk3NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUbyBlbnN1cmUgdGhhdCB0aGUgc2Nyb2xsaW5nIGJlaGF2aW9yIG9mIEdl
c3R1cmVTY3JvbGxVcGRhdGUgZXZlbnRzIGFyZSBjb25zaXN0ZW50IHdpdGgKKyAgICAgICAgdGhl
IHNjcm9sbGluZyBiZWhhdmlvciBvZiBtb3VzZXdoZWVsIGV2ZW50cywgdXNlIHRoZSBleGlzdGlu
ZyB1c2VyLWdlbmVyYXRlZCBzY3JvbGwgbG9naWMKKyAgICAgICAgaW5zdGVhZCBvZiBjYWxsaW5n
IGludG8gUmVuZGVyTGF5ZXI6OnNjcm9sbEJ5UmVjdXJzaXZlbHkoKS4gVGhpcyBwYXRjaCBmaXhl
cyB0aGUgYnVnCisgICAgICAgIHJlcG9ydGVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDkzMTYsIHdoZXJlIHRoZSBleGFtcGxlIHBhZ2UgY2FuCisgICAgICAg
IGJlIHNjcm9sbGVkIHVzaW5nIHRvdWNoIGJ1dCBjYW5ub3QgYmUgc2Nyb2xsZWQgdXNpbmcgbW91
c2V3aGVlbHMuCisKKyAgICAgICAgSSBoYXZlIGFsc28gcmV2ZXJ0ZWQgdGhlIGNoYW5nZXMgSSBt
YWRlIHRvIFJlbmRlckxheWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KCkgaW4gCisgICAgICAgIGh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE0MDE3NyBhbmQgaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMTQyMTk1IHNpbmNlIAorICAgICAgICB0aGlzIGZ1bmN0aW9uIHdp
bGwgbm8gbG9uZ2VyIGJlIHVzZWQgdG8gZ2VzdHVyZS1zY3JvbGwuCisKKyAgICAgICAgVGVzdHM6
IGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXBy
b3BhZ2F0ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90
b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteGhpZGRlbi5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS15aGlk
ZGVuLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gt
Z2VzdHVyZS1ub3Njcm9sbC1ib2R5Lmh0bWwKKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Y2xlYXIpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xsQmVnaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VuZFNjcm9sbEV2ZW50VG9WaWV3KToKKyAg
ICAgICAgICAgIEJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBhdCB0aGUgc3RhcnQgb2YgaGFuZGxl
R2VzdHVyZVNjcm9sbFVwZGF0ZSgpIGluIHRoZSBjYXNlCisgICAgICAgICAgICB3aGVyZSB8bV9z
Y3JvbGxHZXN0dXJlSGFuZGxpbmdOb2RlfCBpcyBudWxsLCB3ZSBlbnN1cmUgdGhhdCB0aGUgc2Ny
b2xsIHVwZGF0ZXMKKyAgICAgICAgICAgIGNhbiBzdGlsbCBzY3JvbGwgdGhlIHBhZ2UgaXRzZWxm
LCBpZiBwb3NzaWJsZS4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAo
RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbEJ5UmVjdXJzaXZlbHkpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorCiAyMDEzLTAyLTI2ICBEYW5hIEphbnNlbnMg
IDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENyZWF0ZSB0aGUgU2hhcmVkR3JhcGhp
Y3NDb250ZXh0M0QgdGhyb3VnaCBpdHMgb3duIG1ldGhvZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAppbmRleCA2YzE1YWM0Zjk5YmI1NjIyNDg2YzMzNmJmMGY0MWQ2M2RjZGIwZjJh
Li5lYTAwNTBkNzgwYjkzZjFmN2Y4N2U0NGMxZDUxMDVjMGFmZmQwNzQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC00MDMsNiArNDAzLDcgQEAgdm9pZCBFdmVudEhhbmRs
ZXI6OmNsZWFyKCkKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgbV9zY3JvbGxHZXN0
dXJlSGFuZGxpbmdOb2RlID0gMDsKICAgICBtX2xhc3RIaXRUZXN0UmVzdWx0T3ZlcldpZGdldCA9
IGZhbHNlOworICAgIG1fcHJldmlvdXNHZXN0dXJlU2Nyb2xsZWROb2RlID0gMDsKICAgICBtX3Nj
cm9sbGJhckhhbmRsaW5nU2Nyb2xsR2VzdHVyZSA9IDA7CiAjZW5kaWYKICAgICBtX21heE1vdXNl
TW92ZWREdXJhdGlvbiA9IDA7CkBAIC0yNjE0LDE5ICsyNjE1LDYgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OnBhc3NHZXN0dXJlRXZlbnRUb1dpZGdldElmUG9zc2libGUoY29uc3QgUGxhdGZvcm1HZXN0
dXJlRXZlbnQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBjb25zdCBOb2RlKiBjbG9z
ZXN0U2Nyb2xsYWJsZU5vZGVDYW5kaWRhdGUoY29uc3QgTm9kZSogbm9kZSkKLXsKLSAgICBmb3Ig
KEV2ZW50UGF0aFdhbGtlciB3YWxrZXIobm9kZSk7IHdhbGtlci5ub2RlKCk7IHdhbGtlci5tb3Zl
VG9QYXJlbnQoKSkgewotICAgICAgICBOb2RlKiBzY3JvbGxhYmxlTm9kZSA9IHdhbGtlci5ub2Rl
KCk7Ci0gICAgICAgIGlmIChzY3JvbGxhYmxlTm9kZS0+aXNEb2N1bWVudE5vZGUoKSkKLSAgICAg
ICAgICAgIHJldHVybiBzY3JvbGxhYmxlTm9kZTsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IHNjcm9sbGFibGVOb2RlLT5yZW5kZXJlcigpOwotICAgICAgICBpZiAocmVuZGVyZXIg
JiYgcmVuZGVyZXItPmlzQm94KCkgJiYgdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jYW5CZVNjcm9s
bGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKLSAgICAgICAgICAgIHJldHVybiBzY3JvbGxhYmxl
Tm9kZTsKLSAgICB9Ci0gICAgcmV0dXJuIG5vZGU7Ci19Ci0KIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVHZXN0dXJlU2Nyb2xsQmVnaW4oY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1
cmVFdmVudCkKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
OwpAQCAtMjY0NSw2ICsyNjMzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVT
Y3JvbGxCZWdpbihjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUUKIAogICAgIG1f
bGFzdEhpdFRlc3RSZXN1bHRPdmVyV2lkZ2V0ID0gcmVzdWx0LmlzT3ZlcldpZGdldCgpOyAKICAg
ICBtX3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CisgICAg
bV9wcmV2aW91c0dlc3R1cmVTY3JvbGxlZE5vZGUgPSAwOwogCiAgICAgTm9kZSogbm9kZSA9IG1f
c2Nyb2xsR2VzdHVyZUhhbmRsaW5nTm9kZS5nZXQoKTsKICAgICBpZiAobm9kZSkKQEAgLTI2NTUs
NDggKzI2NDQsNzAgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxCZWdp
bihjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUUKIAogYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxVcGRhdGUoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQm
IGdlc3R1cmVFdmVudCkKIHsKLSAgICAvLyBJZ25vcmUgdGhpcyBldmVudCBpZiB3ZSBkb24ndCBh
bHJlYWR5IGhhdmUgYSB0YXJnZXRlZCBub2RlIHdpdGggYSB2YWxpZCByZW5kZXJlci4KLSAgICBj
b25zdCBOb2RlKiBub2RlID0gbV9zY3JvbGxHZXN0dXJlSGFuZGxpbmdOb2RlLmdldCgpOwotICAg
IGlmICghbm9kZSkKKyAgICBGbG9hdFNpemUgZGVsdGEoZ2VzdHVyZUV2ZW50LmRlbHRhWCgpLCBn
ZXN0dXJlRXZlbnQuZGVsdGFZKCkpOworICAgIGlmIChkZWx0YS5pc1plcm8oKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgUmVuZGVyT2JqZWN0KiBsYXRjaGVkUmVuZGVyZXIgPSBub2Rl
LT5yZW5kZXJlcigpOwotICAgIGlmICghbGF0Y2hlZFJlbmRlcmVyKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgY29uc3QgZmxvYXQgc2NhbGVGYWN0b3IgPSBtX2ZyYW1lLT5wYWdlWm9vbUZh
Y3RvcigpICogbV9mcmFtZS0+ZnJhbWVTY2FsZUZhY3RvcigpOworICAgIGRlbHRhLnNjYWxlKDEg
LyBzY2FsZUZhY3RvciwgMSAvIHNjYWxlRmFjdG9yKTsKIAotICAgIEludFNpemUgZGVsdGEoLWdl
c3R1cmVFdmVudC5kZWx0YVgoKSwgLWdlc3R1cmVFdmVudC5kZWx0YVkoKSk7Ci0gICAgaWYgKGRl
bHRhLmlzWmVybygpKQorICAgIE5vZGUqIG5vZGUgPSBtX3Njcm9sbEdlc3R1cmVIYW5kbGluZ05v
ZGUuZ2V0KCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gc2VuZFNjcm9sbEV2ZW50
VG9WaWV3KGdlc3R1cmVFdmVudCwgZGVsdGEpOworCisgICAgLy8gSWdub3JlIHRoaXMgZXZlbnQg
aWYgdGhlIHRhcmdldGVkIG5vZGUgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIHJlbmRlcmVyLgorICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgIGlmICghcmVu
ZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFJlZlB0cjxGcmFtZVZpZXc+IHBy
b3RlY3RvcihtX2ZyYW1lLT52aWV3KCkpOwogCiAgICAgLy8gVHJ5IHRvIHNlbmQgdGhlIGV2ZW50
IHRvIHRoZSBjb3JyZWN0IHZpZXcuCi0gICAgaWYgKHBhc3NHZXN0dXJlRXZlbnRUb1dpZGdldElm
UG9zc2libGUoZ2VzdHVyZUV2ZW50LCBsYXRjaGVkUmVuZGVyZXIpKQorICAgIGlmIChwYXNzR2Vz
dHVyZUV2ZW50VG9XaWRnZXRJZlBvc3NpYmxlKGdlc3R1cmVFdmVudCwgcmVuZGVyZXIpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIC8vIE90aGVyd2lzZSBpZiB0aGlzIGlzIHRoZSBjb3Jy
ZWN0IHZpZXcgZm9yIHRoZSBldmVudCwgZmluZCB0aGUgY2xvc2VzdCBzY3JvbGxhYmxlCi0gICAg
Ly8gYW5jZXN0b3Igb2YgdGhlIHRhcmdldGVkIG5vZGUgYW5kIHNjcm9sbCB0aGUgbGF5ZXIgdGhh
dCBjb250YWlucyB0aGlzIG5vZGUncyByZW5kZXJlci4KLSAgICBub2RlID0gY2xvc2VzdFNjcm9s
bGFibGVOb2RlQ2FuZGlkYXRlKG5vZGUpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIE5vZGUqIHN0b3BOb2RlID0gMDsKKyAgICBib29sIHNjcm9sbFNob3VsZE5v
dFByb3BhZ2F0ZSA9IGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVy
ZVNjcm9sbFVwZGF0ZVdpdGhvdXRQcm9wYWdhdGlvbjsKKyAgICBpZiAoc2Nyb2xsU2hvdWxkTm90
UHJvcGFnYXRlKQorICAgICAgICBzdG9wTm9kZSA9IG1fcHJldmlvdXNHZXN0dXJlU2Nyb2xsZWRO
b2RlLmdldCgpOwogCi0gICAgbGF0Y2hlZFJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAg
ICBpZiAoIWxhdGNoZWRSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIEZp
cnN0IHRyeSB0byBzY3JvbGwgdGhlIGNsb3Nlc3Qgc2Nyb2xsYWJsZSBSZW5kZXJCb3ggYW5jZXN0
b3Igb2YgfG5vZGV8LgorICAgIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gU2Nyb2xs
QnlQaXhlbDsgCisgICAgYm9vbCBob3Jpem9udGFsU2Nyb2xsID0gc2Nyb2xsTm9kZShkZWx0YS53
aWR0aCgpLCBncmFudWxhcml0eSwgU2Nyb2xsTGVmdCwgU2Nyb2xsUmlnaHQsIG5vZGUsICZzdG9w
Tm9kZSk7CisgICAgYm9vbCB2ZXJ0aWNhbFNjcm9sbCA9IHNjcm9sbE5vZGUoZGVsdGEuaGVpZ2h0
KCksIGdyYW51bGFyaXR5LCBTY3JvbGxVcCwgU2Nyb2xsRG93biwgbm9kZSwgJnN0b3BOb2RlKTsK
IAotICAgIFJlbmRlckxheWVyOjpTY3JvbGxQcm9wYWdhdGlvbiBzaG91bGRQcm9wYWdhdGUgPSBS
ZW5kZXJMYXllcjo6U2hvdWxkUHJvcGFnYXRlU2Nyb2xsOwotICAgIGlmIChnZXN0dXJlRXZlbnQu
dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGVXaXRob3V0UHJvcGFn
YXRpb24pCi0gICAgICAgIHNob3VsZFByb3BhZ2F0ZSA9IFJlbmRlckxheWVyOjpEb250UHJvcGFn
YXRlU2Nyb2xsOworICAgIGlmIChzY3JvbGxTaG91bGROb3RQcm9wYWdhdGUpCisgICAgICAgIG1f
cHJldmlvdXNHZXN0dXJlU2Nyb2xsZWROb2RlID0gc3RvcE5vZGU7CiAKLSAgICBjb25zdCBmbG9h
dCBzY2FsZUZhY3RvciA9IG1fZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCkgKiBtX2ZyYW1lLT5mcmFt
ZVNjYWxlRmFjdG9yKCk7Ci0gICAgZGVsdGEuc2NhbGUoMSAvIHNjYWxlRmFjdG9yLCAxIC8gc2Nh
bGVGYWN0b3IpOworICAgIGlmIChob3Jpem9udGFsU2Nyb2xsIHx8IHZlcnRpY2FsU2Nyb2xsKSB7
CisgICAgICAgIHNldEZyYW1lV2FzU2Nyb2xsZWRCeVVzZXIoKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQogCi0gICAgYm9vbCByZXN1bHQgPSBsYXRjaGVkUmVuZGVyZXItPmVuY2xvc2lu
Z0xheWVyKCktPnNjcm9sbEJ5KGRlbHRhLCBSZW5kZXJMYXllcjo6U2Nyb2xsT2Zmc2V0Q2xhbXBl
ZCwgc2hvdWxkUHJvcGFnYXRlKTsKKyAgICAvLyBPdGhlcndpc2UgdHJ5IHRvIHNjcm9sbCB0aGUg
dmlldy4KKyAgICByZXR1cm4gc2VuZFNjcm9sbEV2ZW50VG9WaWV3KGdlc3R1cmVFdmVudCwgZGVs
dGEpOworfQogCi0gICAgaWYgKHJlc3VsdCkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpzZW5kU2Nyb2xs
RXZlbnRUb1ZpZXcoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCwgY29u
c3QgRmxvYXRTaXplJiBzY2FsZWREZWx0YSkKK3sKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2Zy
YW1lLT52aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBjb25zdCBmbG9hdCB0aWNrRGl2aXNvciA9IChmbG9hdClXaGVlbEV2ZW50OjpUaWNrTXVsdGlw
bGllcjsKKyAgICBJbnRQb2ludCBwb2ludChnZXN0dXJlRXZlbnQucG9zaXRpb24oKS54KCksIGdl
c3R1cmVFdmVudC5wb3NpdGlvbigpLnkoKSk7CisgICAgSW50UG9pbnQgZ2xvYmFsUG9pbnQoZ2Vz
dHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCkueCgpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRp
b24oKS55KCkpOworICAgIFBsYXRmb3JtV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbEV2ZW50KHBv
aW50LCBnbG9iYWxQb2ludCwKKyAgICAgICAgc2NhbGVkRGVsdGEud2lkdGgoKSwgc2NhbGVkRGVs
dGEuaGVpZ2h0KCksIAorICAgICAgICBzY2FsZWREZWx0YS53aWR0aCgpIC8gdGlja0Rpdmlzb3Is
IHNjYWxlZERlbHRhLmhlaWdodCgpIC8gdGlja0Rpdmlzb3IsCisgICAgICAgIFNjcm9sbEJ5UGl4
ZWxXaGVlbEV2ZW50LAorICAgICAgICBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2
ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtl
eSgpKTsKKworICAgIGJvb2wgc2Nyb2xsZWRGcmFtZSA9IHZpZXctPndoZWVsRXZlbnQoc3ludGhl
dGljV2hlZWxFdmVudCk7CisgICAgaWYgKHNjcm9sbGVkRnJhbWUpCiAgICAgICAgIHNldEZyYW1l
V2FzU2Nyb2xsZWRCeVVzZXIoKTsKIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHNj
cm9sbGVkRnJhbWU7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjppc1Njcm9sbGJhckhhbmRsaW5n
R2VzdHVyZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggM2ZjMDdm
MmZhMjUyZjljNDVmMjRmMWY2YjU1ZTQ3ZTdhMDBkNzUzZS4uMzkwODM0YTFmZDc2NWQ3MjIxMjlm
YTYwZjM5ZjJkOTM4M2E3ZmJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0z
NzgsNiArMzc4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGhhbmRsZUdlc3R1cmVGb3JUZXh0U2Vs
ZWN0aW9uT3JDb250ZXh0TWVudShjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogICAgIGJv
b2wgcGFzc0dlc3R1cmVFdmVudFRvV2lkZ2V0KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jiwg
V2lkZ2V0Kik7CiAgICAgYm9vbCBwYXNzR2VzdHVyZUV2ZW50VG9XaWRnZXRJZlBvc3NpYmxlKGNv
bnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiwgUmVuZGVyT2JqZWN0Kik7CisgICAgYm9vbCBzZW5k
U2Nyb2xsRXZlbnRUb1ZpZXcoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmLCBjb25zdCBGbG9h
dFNpemUmKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRMYXN0S25vd25Nb3VzZVBvc2l0aW9uKGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwpAQCAtNDY5LDYgKzQ3MCw3IEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogICAgIFJlZlB0cjxOb2RlPiBtX3Njcm9sbEdlc3R1
cmVIYW5kbGluZ05vZGU7CiAgICAgYm9vbCBtX2xhc3RIaXRUZXN0UmVzdWx0T3ZlcldpZGdldDsK
KyAgICBSZWZQdHI8Tm9kZT4gbV9wcmV2aW91c0dlc3R1cmVTY3JvbGxlZE5vZGU7CiAgICAgUmVm
UHRyPFNjcm9sbGJhcj4gbV9zY3JvbGxiYXJIYW5kbGluZ1Njcm9sbEdlc3R1cmU7CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggZDNlZjVlZDBh
ZDAwY2VmNzU4ZjViZDk1YWU2OGVhZjE2OGJkMTAxOC4uODIzY2YwODQ3MTU2MGMyNmVlNGE1NTVl
NTc3MDQ3NDUwMzA2NTE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCkBAIC0yMDIzLDEzICsyMDIzLDggQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFuU2Nyb2xsRnJv
bVBvaW50KGNvbnN0IEludFBvaW50JiBzb3VyY2VQb2ludCkKIAogdm9pZCBSZW5kZXJMYXllcjo6
c2Nyb2xsQnlSZWN1cnNpdmVseShjb25zdCBJbnRTaXplJiBkZWx0YSwgU2Nyb2xsT2Zmc2V0Q2xh
bXBpbmcgY2xhbXApCiB7Ci0gICAgc2Nyb2xsQnkoZGVsdGEsIGNsYW1wLCBTaG91bGRQcm9wYWdh
dGVTY3JvbGwpOwotfQotCi1ib29sIFJlbmRlckxheWVyOjpzY3JvbGxCeShjb25zdCBJbnRTaXpl
JiBkZWx0YSwgU2Nyb2xsT2Zmc2V0Q2xhbXBpbmcgY2xhbXAsIFNjcm9sbFByb3BhZ2F0aW9uIHNo
b3VsZFByb3BhZ2F0ZSkKLXsKICAgICBpZiAoZGVsdGEuaXNaZXJvKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCByZXN0cmljdGVkQnlMaW5lQ2xh
bXAgPSBmYWxzZTsKICAgICBpZiAocmVuZGVyZXIoKS0+cGFyZW50KCkpCkBAIC0yMDM5LDM2ICsy
MDM0LDI0IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNjcm9sbEJ5KGNvbnN0IEludFNpemUmIGRlbHRh
LCBTY3JvbGxPZmZzZXRDbGFtcGluZyBjbGFtcCwgU2NyCiAgICAgICAgIEludFNpemUgbmV3U2Ny
b2xsT2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0KCkgKyBkZWx0YTsKICAgICAgICAgc2Nyb2xsVG9PZmZz
ZXQobmV3U2Nyb2xsT2Zmc2V0LCBjbGFtcCk7CiAKLSAgICAgICAgaWYgKHNob3VsZFByb3BhZ2F0
ZSA9PSBEb250UHJvcGFnYXRlU2Nyb2xsKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAg
ICAgICAgLy8gSWYgdGhpcyBsYXllciBjYW4ndCBkbyB0aGUgc2Nyb2xsIHdlIGFzayB0aGUgbmV4
dCBsYXllciB1cCB0aGF0IGNhbiBzY3JvbGwgdG8gdHJ5CiAgICAgICAgIEludFNpemUgcmVtYWlu
aW5nU2Nyb2xsT2Zmc2V0ID0gbmV3U2Nyb2xsT2Zmc2V0IC0gc2Nyb2xsT2Zmc2V0KCk7Ci0gICAg
ICAgIGJvb2wgZGlkU2Nyb2xsID0gdHJ1ZTsKICAgICAgICAgaWYgKCFyZW1haW5pbmdTY3JvbGxP
ZmZzZXQuaXNaZXJvKCkgJiYgcmVuZGVyZXIoKS0+cGFyZW50KCkpIHsKICAgICAgICAgICAgIGlm
IChSZW5kZXJMYXllciogc2Nyb2xsYWJsZUxheWVyID0gZW5jbG9zaW5nU2Nyb2xsYWJsZUxheWVy
KCkpCi0gICAgICAgICAgICAgICAgZGlkU2Nyb2xsID0gc2Nyb2xsYWJsZUxheWVyLT5zY3JvbGxC
eShyZW1haW5pbmdTY3JvbGxPZmZzZXQsIGNsYW1wLCBzaG91bGRQcm9wYWdhdGUpOworICAgICAg
ICAgICAgICAgIHNjcm9sbGFibGVMYXllci0+c2Nyb2xsQnlSZWN1cnNpdmVseShyZW1haW5pbmdT
Y3JvbGxPZmZzZXQsIGNsYW1wKTsKIAogICAgICAgICAgICAgRnJhbWUqIGZyYW1lID0gcmVuZGVy
ZXIoKS0+ZnJhbWUoKTsKICAgICAgICAgICAgIGlmIChmcmFtZSkKICAgICAgICAgICAgICAgICBm
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPnVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpOwogICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBkaWRTY3JvbGw7CiAgICAgfSBlbHNlIGlmIChyZW5kZXJlcigp
LT52aWV3KCktPmZyYW1lVmlldygpKSB7CiAgICAgICAgIC8vIElmIHdlIGFyZSBoZXJlLCB3ZSB3
ZXJlIGNhbGxlZCBvbiBhIHJlbmRlcmVyIHRoYXQgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgc2Ny
b2xsZWQsIGJ1dCBkb2Vzbid0CiAgICAgICAgIC8vIGhhdmUgYW4gb3ZlcmZsb3cgY2xpcC4gV2hp
Y2ggbWVhbnMgdGhhdCBpdCBpcyBhIGRvY3VtZW50IG5vZGUgdGhhdCBjYW4gYmUgc2Nyb2xsZWQu
Ci0gICAgICAgIEZyYW1lVmlldyogdmlldyA9IHJlbmRlcmVyKCktPnZpZXcoKS0+ZnJhbWVWaWV3
KCk7Ci0gICAgICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uQmVmb3JlID0gdmlldy0+c2Nyb2xs
UG9zaXRpb24oKTsKLSAgICAgICAgaWYgKHZpZXctPmlzU2Nyb2xsYWJsZSgpKQotICAgICAgICAg
ICAgdmlldy0+c2Nyb2xsQnkoZGVsdGEpOwotICAgICAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlv
bkFmdGVyID0gdmlldy0+c2Nyb2xsUG9zaXRpb24oKTsKLSAgICAgICAgcmV0dXJuIHNjcm9sbFBv
c2l0aW9uQmVmb3JlICE9IHNjcm9sbFBvc2l0aW9uQWZ0ZXI7CisgICAgICAgIHJlbmRlcmVyKCkt
PnZpZXcoKS0+ZnJhbWVWaWV3KCktPnNjcm9sbEJ5KGRlbHRhKTsKIAogICAgICAgICAvLyBGSVhN
RTogSWYgd2UgZGlkbid0IHNjcm9sbCB0aGUgd2hvbGUgd2F5LCBkbyB3ZSB3YW50IHRvIHRyeSBs
b29raW5nIGF0IHRoZSBmcmFtZXMgb3duZXJFbGVtZW50PyAKICAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MjM3CiAgICAgfQotCi0gICAgcmV0dXJu
IGZhbHNlOwogfQogCiBJbnRTaXplIFJlbmRlckxheWVyOjpjbGFtcFNjcm9sbE9mZnNldChjb25z
dCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oCmluZGV4IGQ3NDcyNWU5MDFjOTBlNGE4MzY1YzY2NWYwZmFkYjc5ZjU0NDY1ZGMu
LjY4NzVkMzY1MjFhZTU1OWM3MGNiMWNhNTIzZTZlNjNlNDljZGJkZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC0zMjgsMTMgKzMyOCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgU2Nyb2xsT2Zmc2V0Q2xhbXBlZAogICAgIH07CiAKLSAgICBlbnVtIFNjcm9sbFByb3Bh
Z2F0aW9uIHsKLSAgICAgICAgU2hvdWxkUHJvcGFnYXRlU2Nyb2xsLAotICAgICAgICBEb250UHJv
cGFnYXRlU2Nyb2xsCi0gICAgfTsKLQogICAgIC8vIFNjcm9sbGluZyBtZXRob2RzIGZvciBsYXll
cnMgdGhhdCBjYW4gc2Nyb2xsIHRoZWlyIG92ZXJmbG93LgotICAgIGJvb2wgc2Nyb2xsQnkoY29u
c3QgSW50U2l6ZSYsIFNjcm9sbE9mZnNldENsYW1waW5nID0gU2Nyb2xsT2Zmc2V0VW5jbGFtcGVk
LCBTY3JvbGxQcm9wYWdhdGlvbiA9IERvbnRQcm9wYWdhdGVTY3JvbGwpOwogICAgIHZvaWQgc2Ny
b2xsQnlSZWN1cnNpdmVseShjb25zdCBJbnRTaXplJiwgU2Nyb2xsT2Zmc2V0Q2xhbXBpbmcgPSBT
Y3JvbGxPZmZzZXRVbmNsYW1wZWQpOwogICAgIHZvaWQgc2Nyb2xsVG9PZmZzZXQoY29uc3QgSW50
U2l6ZSYsIFNjcm9sbE9mZnNldENsYW1waW5nID0gU2Nyb2xsT2Zmc2V0VW5jbGFtcGVkKTsKICAg
ICB2b2lkIHNjcm9sbFRvWE9mZnNldChpbnQgeCwgU2Nyb2xsT2Zmc2V0Q2xhbXBpbmcgY2xhbXAg
PSBTY3JvbGxPZmZzZXRVbmNsYW1wZWQpIHsgc2Nyb2xsVG9PZmZzZXQoSW50U2l6ZSh4LCBzY3Jv
bGxZT2Zmc2V0KCkpLCBjbGFtcCk7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2NmFhNGE0NjhiNGUyYjdmNWMwYmNhMjVi
MGNjMGU0ZjJjNGE4M2JlLi42MTU2YjQ5ZTdhMjZhNWViYmYyZWZmYjQ5NmRkOGFiYmYyN2NmN2U0
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTMtMDItMjYgIFRlcnJ5IEFuZGVyc29uICA8dGRh
bmRlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0
dXJlU2Nyb2xsVXBkYXRlKCkgc2hvdWxkIGludm9rZSB0aGUgdXNlci1nZW5lcmF0ZWQgc2Nyb2xs
IHJvdXRpbmVzIHNvIGl0cyBiZWhhdmlvciBtYXRjaGVzIG90aGVyIHVzZXItaW5pdGlhdGVkIHNj
cm9sbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
OTc2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZv
dXIgbmV3IGxheW91dCB0ZXN0cyBoYXZlIGJlZW4gYWRkZWQgYW5kIHRvdWNoLWdlc3R1cmUtc2Ny
b2xsLXBhZ2UuaHRtbCBoYXMgYmVlbgorICAgICAgICBtb2RpZmllZCB0byBkZW1vbnN0cmF0ZSB0
aGF0IHRoaXMgcGF0Y2ggZml4ZXMgdHdvIGV4aXN0aW5nIGJ1Z3MuIFNlZSB0aGUgaW5saW5lCisg
ICAgICAgIGNvbW1lbnRzIGJlbG93IGZvciBkZXRhaWxzLgorCisgICAgICAgIEJlY2F1c2UgSSBh
bSBub3cgdXNpbmcgdGhlIGV4aXN0aW5nIHVzZXItZ2VuZXJhdGVkIHNjcm9sbCBsb2dpYywgdGhl
IGRlbHRhIGZvciBhIHNpbmdsZQorICAgICAgICBHZXN0dXJlU2Nyb2xsVXBkYXRlIGV2ZW50IHdp
bGwgbm90IGJlIHByb3BhZ2F0ZWQgdG8gdGhlIHBhcmVudCBvZiB0aGUgdGFyZ2V0ZWQgbm9kZQor
ICAgICAgICB1bmxlc3MgdGhlIHRhcmdldGVkIG5vZGUgaGFzIG5vIHJlbWFpbmluZyBzY3JvbGxh
YmxlIGFyZWEuIFNvIHRoZSBjaGFuZ2VzIHRvIHRoZQorICAgICAgICBleGlzdGluZyBsYXlvdXQg
dGVzdHMgaGF2ZSBiZWVuIG1hZGUgdG8gZW5zdXJlIHRoYXQgdGhlIHRhcmdldGVkIG5vZGUgaGFz
IGJlZW4gZnVsbHkKKyAgICAgICAgc2Nyb2xsZWQgYmVmb3JlIHN1YnNlcXVlbnQgR2VzdHVyZVNj
cm9sbFVwZGF0ZSBldmVudHMgd2lsbCBzY3JvbGwgdGhlIHBhcmVudChzKSBvZgorICAgICAgICB0
aGUgdGFyZ2V0ZWQgbm9kZS4KKworICAgICAgICBJIGhhdmUgYWxzbyByZW1vdmVkIHRoZSBmdW5j
dGlvbiByZWNvcmRTY3JvbGwoKSBmcm9tIHRoZSBleGlzdGluZyBsYXlvdXQgdGVzdHMKKyAgICAg
ICAgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGFscmVhZHkgZXhpc3RzIGluIHRoZSBpbmNsdWRlZCBm
aWxlIHJlc291cmNlcy9nZXN0dXJlLWhlbHBlcnMuanMuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVy
ZS1ub3Njcm9sbC1ib2R5LXByb3BhZ2F0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1w
cm9wYWdhdGVkLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcGFnZS5odG1sLgorICAgICAgICAqIGZhc3Qv
ZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXhoaWRkZW4t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJl
L3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLmh0bWw6IENvcGllZCBmcm9tIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwt
cGFnZS5odG1sLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2Vz
dHVyZS1ub3Njcm9sbC1ib2R5LXloaWRkZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS15
aGlkZGVuLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcGFnZS5odG1sLgorICAgICAgICAqIGZhc3QvZXZl
bnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5Lmh0bWw6IENvcGll
ZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVy
ZS1zY3JvbGwtcGFnZS5odG1sLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUv
dG91Y2gtZ2VzdHVyZS1zY3JvbGwtZGl2LW5vdC1wcm9wYWdhdGVkLmh0bWw6CisgICAgICAgICog
ZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1kaXYtcHJvcGFn
YXRlZC5odG1sOgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2Vz
dHVyZS1zY3JvbGwtZGl2LXR3aWNlLXByb3BhZ2F0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V2
ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWlmcmFtZS1ub3QtcHJvcGFn
YXRlZC5odG1sOgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2Vz
dHVyZS1zY3JvbGwtaWZyYW1lLXByb3BhZ2F0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2Utbm90LXByb3BhZ2F0ZWQu
aHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUt
c2Nyb2xsLXBhZ2UtcHJvcGFnYXRlZC5odG1sOgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNo
L2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcGFnZS5odG1sOgorICAgICAgICAgICAgICBJ
IG1vZGlmaWVkIHRoaXMgbGF5b3V0IHRlc3QgaW4gb3JkZXIgdG8gYWRkIHRlc3QgY292ZXJhZ2Ug
Zm9yIGFub3RoZXIgYnVnCisgICAgICAgICAgICAgIHdoaWNoIGlzIGZpeGVkIGJ5IHRoaXMgcGF0
Y2g6IGlmIHRoZSBoaXQgdGVzdCBwZXJmb3JtZWQgb24gYSBHZXN0dXJlU2Nyb2xsQmVnaW4KKyAg
ICAgICAgICAgICAgZG9lcyBub3QgdGFyZ2V0IGEgc3BlY2lmaWMgbm9kZSwgdGhlIHN1YnNlcXVl
bnQgR2VzdHVyZVNjcm9sbFVwZGF0ZSBldmVudHMgc2hvdWxkCisgICAgICAgICAgICAgIHN0aWxs
IGF0dGVtcHQgdG8gc2Nyb2xsIHRoZSBwYWdlIGl0c2VsZi4gVGhpcyBpcyBjb25zaXN0ZW50IHdp
dGggaG93IG1vdXNld2hlZWwKKyAgICAgICAgICAgICAgZXZlbnRzIGJlaGF2ZS4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1
cmUtbm9zY3JvbGwtYm9keS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9s
bC1ib2R5LXByb3BhZ2F0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3Jv
bGwtYm9keS14aGlkZGVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xs
LWJvZHkteWhpZGRlbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAgICAgICBUaGVzZSBm
b3VyIG5ldyBsYXlvdXQgdGVzdHMgdmVyaWZ5IHRoYXQgYSBub24tc2Nyb2xsYWJsZSBib2R5IHdp
bGwgbm90IHNjcm9sbCwKKyAgICAgICAgICAgICAgYXMgcmVwb3J0ZWQgaW4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTMxNi4KKwogMjAxMy0wMi0yNiAgU3RlcGhl
biBDaGVubmV5ICA8c2NoZW5uZXlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0g
TmV3IGJhc2VsaW5lcyBmb3IgY3NzMy1tb2RzZWwtMTVjCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNo
LWdlc3R1cmUtbm9zY3JvbGwtYm9keS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGZiZTNkMmNj
MWQwODE4MDdmMmFlNzk1NGYxZTIwZTBmZjg5NDU0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1i
b2R5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3RzIHRoYXQgYSBwYWdl
IGNhbm5vdCBiZSBzY3JvbGxlZCB3aXRoIHRvdWNoIGlmIGl0cyBib2R5IGhhcyBzdHlsZSBvdmVy
ZmxvdzpoaWRkZW4uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitnZXN0dXJlIGV2
ZW50cyBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybSBvciBnZXN0dXJlIGV2ZW50IHNj
cm9sbGluZyBvZiBhIGRvY3VtZW50IGlzIGJyb2tlbgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXByb3BhZ2F0
ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90
b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktcHJvcGFnYXRlZC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2U4N2U0ODY4NGEwNWM5MTAxYzkyZDJiNzgxYzFlODdiY2M3ZWU3ZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2Vz
dHVyZS1ub3Njcm9sbC1ib2R5LXByb3BhZ2F0ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAg
QEAKK1RoaXMgdGVzdHMgdGhhdCBhIHBhZ2UgY2Fubm90IGJlIHNjcm9sbGVkIHZlcnRpY2FsbHkg
d2l0aCB0b3VjaCBpZiBpdHMgYm9keSBoYXMgc3R5bGUgb3ZlcmZsb3cteTpoaWRkZW4gYW5kIHRo
ZSBzY3JvbGwgZXZlbnQgaXMgcHJvcG9nYXRlZCBmcm9tIGEgc2Nyb2xsYWJsZSBjaGlsZCBkaXYu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitnZXN0dXJlIGV2ZW50cyBub3QgaW1w
bGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybSBvciBnZXN0dXJlIGV2ZW50IHNjcm9sbGluZyBvZiBh
IGRvY3VtZW50IGlzIGJyb2tlbgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXByb3BhZ2F0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9s
bC1ib2R5LXByb3BhZ2F0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OGM4NTY3YWI5MDYzYzEzNzUwYjcy
MWJkOTdiY2RlM2IzZTkxZjU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktcHJvcGFnYXRl
ZC5odG1sCkBAIC0wLDAgKzEsMTU5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2dlc3R1cmUtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8c3R5bGUg
dHlwZT0idGV4dC9jc3MiPgorI3RvdWNodGFyZ2V0IHsKKyAgd2lkdGg6IDEwMHB4OworICBoZWln
aHQ6IDEwMHB4OworICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgb3ZlcmZsb3c6c2Nyb2xsOworfQor
Cis6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKKyAgICB3aWR0aDogMHB4OworICAgIGhlaWdodDogMHB4
OworfQorCisjZ3JlZW5ib3ggeworICB3aWR0aDogMTAwcHg7CisgIGhlaWdodDogMTAwcHg7Cisg
IGJhY2tncm91bmQ6IGdyZWVuOworICBwYWRkaW5nOiAwcHg7CisgIG1hcmdpbjogMHB4OworfQor
CisjcmVkYm94IHsKKyAgd2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4OworICBiYWNrZ3Jv
dW5kOiByZWQ7CisgIHBhZGRpbmc6IDBweDsKKyAgbWFyZ2luOiAwcHg7Cit9CisKK3RkIHsKKyAg
cGFkZGluZzogMHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IHN0eWxlPSJtYXJnaW46
MDsgb3ZlcmZsb3cteTpoaWRkZW47IiBvbmxvYWQ9InJ1blRlc3QoKTsiPgorCis8ZGl2IGlkPSJ0
b3VjaHRhcmdldCI+CisgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwcHgiIGlkPSJ0
YWJsZWZvbyI+CisgICAgPHRyPgorICAgICAgPHRkPjxkaXYgaWQ9InJlZGJveCI+PC9kaXY+PC90
ZD4KKyAgICAgIDx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD4KKyAgICA8L3RyPgor
ICAgIDx0cj4KKyAgICAgIDx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD4KKyAgICAg
IDx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD4KKyAgICA8L3RyPgorICA8L3RhYmxl
PgorPC9kaXY+CisKKzx0YWJsZSBpZD0idGFibGVfdG9fZmlsbCI+CisgICAgPHRyPjx0ZD48ZGl2
IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD48L3RyPgorICAgIDx0cj48dGQ+PGRpdiBpZD0icmVk
Ym94Ij48L2Rpdj48L3RkPjwvdHI+Cis8L3RhYmxlPgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgorCit2YXIgZXhwZWN0ZWRHZXN0dXJlc1RvdGFsID0gMjsKK3ZhciBnZXN0dXJlc09jY3Vy
cmVkID0gMDsKK3ZhciBzY3JvbGxBbW91bnRYID0gWycwJywgJzAnXTsKK3ZhciBzY3JvbGxBbW91
bnRZID0gWycwJywgJzAnXTsKK3ZhciB3aGVlbEV2ZW50c09jY3VycmVkID0gMDsKK3ZhciBleHBl
Y3RlZFdoZWVsRXZlbnRzT2NjdXJyZWQgPSBbJzAnLCAnMCddOwordmFyIHNjcm9sbEV2ZW50c09j
Y3VycmVkID0gMDsKK3ZhciBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkID0gJzAnOwordmFy
IHNjcm9sbGVkRWxlbWVudCA9ICdkb2N1bWVudC5ib2R5JworCisvLyBBbHdheXMgY29uc3RydWN0
IGEgcGFnZSBsYXJnZXIgdGhhbiB0aGUgdmVydGljYWwgaGVpZ2h0IG9mIHRoZSB3aW5kb3cuCitm
dW5jdGlvbiBidWlsZFBhZ2UoKQoreworICAgIHZhciB0YWJsZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd0YWJsZV90b19maWxsJyk7CisgICAgdmFyIHRhcmdldEhlaWdodCA9IGRvY3VtZW50
LmJvZHkub2Zmc2V0SGVpZ2h0OworICAgIHZhciBjZWxsUGFpckhlaWdodCA9IHRhYmxlLm9mZnNl
dEhlaWdodDsKKyAgICB2YXIgbnVtYmVyT2ZSZXBzID0gdGFyZ2V0SGVpZ2h0IC8gY2VsbFBhaXJI
ZWlnaHQgKiAyOworICAgIHZhciBpOworICAgIGZvciAoaSA9IDA7IGkgPCBudW1iZXJPZlJlcHM7
IGkrKykgeworICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7Cisg
ICAgICAgIHAuaW5uZXJIVE1MID0gJzx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD4n
OworICAgICAgICB0YWJsZS5hcHBlbmRDaGlsZChwKTsKKyAgICAgICAgdmFyIHAgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCd0cicpOworICAgICAgICBwLmlubmVySFRNTCA9ICc8dGQ+PGRpdiBp
ZD0icmVkYm94Ij48L2Rpdj48L3RkPic7CisgICAgICAgIHRhYmxlLmFwcGVuZENoaWxkKHApOwor
ICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCByZWNvcmRTY3Jv
bGwpOworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwgcmVjb3JkV2hl
ZWwpOworfQorCitmdW5jdGlvbiBmaXJzdEdlc3R1cmVTY3JvbGwoKQoreworICAgIGRlYnVnKCJm
aXJzdCBnZXN0dXJlIik7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDk1LCAx
Mik7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMTAwKTsKKyAgICBl
dmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC0xMCk7CisgICAgZXZlbnRTZW5kZXIu
Z2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKKworICAgIC8vIFdhaXQgZm9yIGxheW91dC4KKyAgICBj
aGVja1Njcm9sbE9mZnNldCgpOworfQorCitmdW5jdGlvbiBzZWNvbmRHZXN0dXJlU2Nyb2xsKCkK
K3sKKyAgICBkZWJ1Zygic2Vjb25kIGdlc3R1cmUiKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJl
U2Nyb2xsQmVnaW4oMTIsIDk3KTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRl
KDAsIC05NSk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMjAwKTsK
KyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOworCisgICAgLy8gV2FpdCBm
b3IgbGF5b3V0LgorICAgIGNoZWNrU2Nyb2xsT2Zmc2V0KCk7CisKKyAgICAvLyBJbiB0aGlzIHRl
c3Qgd2UgZG8gbm90IGV4cGVjdCBhbnkgc2Nyb2xsIGV2ZW50cyB0bworICAgIC8vIGJlIHJlY2Vp
dmVkIGJ5IHRoZSBldmVudCBsaXN0ZW5lciwgc28gd2Ugc2lnbmFsCisgICAgLy8gdGhlIGVuZCBv
ZiB0aGUgdGVzdCBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gaW5zdGVhZAorICAgIC8vIG9mIHJl
bHlpbmcgb24gcmVjb3JkU2Nyb2xsKCkgdG8gZG8gaXQuCisgICAgZmluaXNoVGVzdCgpOworfQor
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGJ1aWxkUGFnZSgpOworICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgZGVzY3JpcHRpb24oJ1RoaXMgdGVzdHMgdGhhdCBh
IHBhZ2UgY2Fubm90IGJlIHNjcm9sbGVkIHZlcnRpY2FsbHkgd2l0aCB0b3VjaCBpZiBpdHMgYm9k
eSBoYXMgc3R5bGUgb3ZlcmZsb3cteTpoaWRkZW4gJyArCisgICAgICAgICAgICAgICAgICAgICdh
bmQgdGhlIHNjcm9sbCBldmVudCBpcyBwcm9wb2dhdGVkIGZyb20gYSBzY3JvbGxhYmxlIGNoaWxk
IGRpdi4nKTsKKworICAgICAgICBpZiAoY2hlY2tUZXN0RGVwZW5kZW5jaWVzKCkpCisgICAgICAg
ICAgICBmaXJzdEdlc3R1cmVTY3JvbGwoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXhp
dElmTmVjZXNzYXJ5KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoIlRoaXMgdGVzdCBy
ZXF1aXJlcyBEdW1wUmVuZGVyVHJlZS4gIFRvdWNoIHNjcm9sbCB0aGUgcmVkIHJlY3QgdG8gbG9n
LiIpOworICAgIH0KK30KKworZnVuY3Rpb24gZmluaXNoVGVzdCgpCit7CisgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICBpZiAoZ2VzdHVyZXNPY2N1cnJlZCA9PSBleHBlY3Rl
ZEdlc3R1cmVzVG90YWwpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCdzY3JvbGxFdmVudHNPY2N1
cnJlZCcsIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQpOworICAgICAgICAgICAgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7
CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXhoaWRkZW4tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5v
c2Nyb2xsLWJvZHkteGhpZGRlbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM5YWEzYmE5MGI4
YjU1NzJhYjBhYWM2YTRiMTRmYzUzYTk3MzYzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5
LXhoaWRkZW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdHMgdGhhdCBh
IHBhZ2UgY2Fubm90IGJlIHNjcm9sbGVkIGhvcml6b250YWxseSB3aXRoIHRvdWNoIChidXQgY2Fu
IHN0aWxsIGJlIHNjcm9sbGVkIHZlcnRpY2FsbHkpIGlmIGl0cyBib2R5IGhhcyBzdHlsZSBvdmVy
Zmxvdy14OmhpZGRlbi4gVGhlIHNjcm9sbCBldmVudHMgaW4gdGhpcyB0ZXN0IGhhdmUgYm90aCBh
biB4IGFuZCB5IGNvbXBvbmVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2dl
c3R1cmUgZXZlbnRzIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtIG9yIGdlc3R1cmUg
ZXZlbnQgc2Nyb2xsaW5nIG9mIGEgZG9jdW1lbnQgaXMgYnJva2VuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkt
eGhpZGRlbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3Vj
aC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteGhpZGRlbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3YzdhYjRk
YmE3ZGM2ZjkxZDNjMzY1NWY4ZTk2ZjU5ZjdhYWRlNTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwt
Ym9keS14aGlkZGVuLmh0bWwKQEAgLTAsMCArMSwxNDkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZ2VzdHVyZS1oZWxwZXJzLmpzIj48L3Njcmlw
dD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisjdG91Y2h0YXJnZXQgeworICB3aWR0aDogMTAw
cHg7CisgIGhlaWdodDogMTAwcHg7CisgIGJhY2tncm91bmQ6IHdoaXRlOworICBvdmVyZmxvdzpo
aWRkZW47Cit9CisKKzo6LXdlYmtpdC1zY3JvbGxiYXIgeworICAgIHdpZHRoOiAwcHg7CisgICAg
aGVpZ2h0OiAwcHg7Cit9CisKKyNncmVlbmJveCB7CisgIHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0
OiAxMDBweDsKKyAgYmFja2dyb3VuZDogZ3JlZW47CisgIHBhZGRpbmc6IDBweDsKKyAgbWFyZ2lu
OiAwcHg7Cit9CisKKyNyZWRib3ggeworICB3aWR0aDogMTAwcHg7CisgIGhlaWdodDogMTAwcHg7
CisgIGJhY2tncm91bmQ6IHJlZDsKKyAgcGFkZGluZzogMHB4OworICBtYXJnaW46IDBweDsKK30K
KwordGQgeworICBwYWRkaW5nOiAwcHg7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgc3R5
bGU9Im1hcmdpbjowOyBvdmVyZmxvdy14OmhpZGRlbjsiIG9ubG9hZD0icnVuVGVzdCgpOyI+CisK
Kzx0YWJsZSBpZD0iaG9yaXpvbnRhbF90YWJsZV90b19maWxsIj4KKyAgPHRyIGlkPSJmaXJzdHJv
dyI+CisgICAgPHRkPjxkaXYgaWQ9InJlZGJveCI+PC9kaXY+PC90ZD4KKyAgICA8dGQ+PGRpdiBp
ZD0iZ3JlZW5ib3giPjwvZGl2PjwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorCis8dGFibGUgaWQ9
InZlcnRpY2FsX3RhYmxlX3RvX2ZpbGwiPgorICAgIDx0cj48dGQ+PGRpdiBpZD0iZ3JlZW5ib3gi
PjwvZGl2PjwvdGQ+PC90cj4KKyAgICA8dHI+PHRkPjxkaXYgaWQ9InJlZGJveCI+PC9kaXY+PC90
ZD48L3RyPgorPC90YWJsZT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwordmFyIGV4
cGVjdGVkR2VzdHVyZXNUb3RhbCA9IDI7Cit2YXIgZ2VzdHVyZXNPY2N1cnJlZCA9IDA7Cit2YXIg
c2Nyb2xsQW1vdW50WCA9IFsnMCcsICcwJ107Cit2YXIgc2Nyb2xsQW1vdW50WSA9IFsnMTEwJywg
JzIwNSddOwordmFyIHdoZWVsRXZlbnRzT2NjdXJyZWQgPSAwOwordmFyIGV4cGVjdGVkV2hlZWxF
dmVudHNPY2N1cnJlZCA9IFsnMCcsICcwJ107Cit2YXIgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAw
OwordmFyIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAnMSc7Cit2YXIgc2Nyb2xsZWRF
bGVtZW50ID0gJ2RvY3VtZW50LmJvZHknCisKKy8vIEFsd2F5cyBjb25zdHJ1Y3QgYSBwYWdlIGxh
cmdlciB0aGFuIHRoZSB2ZXJ0aWNhbCBoZWlnaHQgb2YgdGhlIHdpbmRvdy4KK2Z1bmN0aW9uIGJ1
aWxkUGFnZSgpCit7CisgICAgLy8gYnVpbGQgdmVydGljYWwgdGFibGUKKyAgICB2YXIgdGFibGUg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmVydGljYWxfdGFibGVfdG9fZmlsbCcpOworICAg
IHZhciB0YXJnZXRIZWlnaHQgPSBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKKyAgICB2YXIg
Y2VsbFBhaXJIZWlnaHQgPSB0YWJsZS5vZmZzZXRIZWlnaHQ7CisgICAgdmFyIG51bWJlck9mUmVw
cyA9IHRhcmdldEhlaWdodCAvIGNlbGxQYWlySGVpZ2h0ICogMjsKKyAgICB2YXIgaTsKKyAgICBm
b3IgKGkgPSAwOyBpIDwgbnVtYmVyT2ZSZXBzOyBpKyspIHsKKyAgICAgICAgdmFyIHAgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOworICAgICAgICBwLmlubmVySFRNTCA9ICc8dGQ+PGRp
diBpZD0iZ3JlZW5ib3giPjwvZGl2PjwvdGQ+JzsKKyAgICAgICAgdGFibGUuYXBwZW5kQ2hpbGQo
cCk7CisgICAgICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKKyAgICAg
ICAgcC5pbm5lckhUTUwgPSAnPHRkPjxkaXYgaWQ9InJlZGJveCI+PC9kaXY+PC90ZD4nOworICAg
ICAgICB0YWJsZS5hcHBlbmRDaGlsZChwKTsKKyAgICB9CisKKyAgICAvLyBidWlsZCBob3Jpem9u
dGFsIHRhYmxlCisgICAgdmFyIGhvcml6b250YWxUYWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdob3Jpem9udGFsX3RhYmxlX3RvX2ZpbGwnKTsKKyAgICB2YXIgdGFibGVSb3cgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZmlyc3Ryb3cnKTsKKyAgICB2YXIgdGFyZ2V0V2lkdGggPSBk
b2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoOworICAgIHZhciBjZWxsUGFpcldpZHRoID0gaG9yaXpv
bnRhbFRhYmxlLm9mZnNldFdpZHRoOworICAgIG51bWJlck9mUmVwcyA9IHRhcmdldFdpZHRoIC8g
Y2VsbFBhaXJXaWR0aCAqIDI7CisgICAgZm9yIChpID0gMDsgaSA8IG51bWJlck9mUmVwczsgaSsr
KSB7CisgICAgICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKKyAgICAg
ICAgcC5pbm5lckhUTUwgPSAnPGRpdiBpZD0icmVkYm94Ij48L2Rpdj4nOworICAgICAgICB0YWJs
ZVJvdy5hcHBlbmRDaGlsZChwKTsKKyAgICAgICAgdmFyIHAgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCd0ZCcpOworICAgICAgICBwLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJncmVlbmJveCI+PC9k
aXY+JzsKKyAgICAgICAgdGFibGVSb3cuYXBwZW5kQ2hpbGQocCk7CisgICAgfQorCisgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHJlY29yZFNjcm9sbCk7CisgICAgd2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNld2hlZWwiLCByZWNvcmRXaGVlbCk7Cit9CisKK2Z1bmN0
aW9uIGZpcnN0R2VzdHVyZVNjcm9sbCgpCit7CisgICAgZGVidWcoImZpcnN0IGdlc3R1cmUiKTsK
KyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsQmVnaW4oOTUsIDEyKTsKKyAgICBldmVudFNl
bmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKC01NSwgLTExMCk7CisgICAgZXZlbnRTZW5kZXIuZ2Vz
dHVyZVNjcm9sbEVuZCgwLCAwKTsKKworICAgIC8vIFdhaXQgZm9yIGxheW91dC4KKyAgICBjaGVj
a1Njcm9sbE9mZnNldCgpOworfQorCitmdW5jdGlvbiBzZWNvbmRHZXN0dXJlU2Nyb2xsKCkKK3sK
KyAgICBkZWJ1Zygic2Vjb25kIGdlc3R1cmUiKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Ny
b2xsQmVnaW4oMTIsIDk3KTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKC00
MiwgLTk1KTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOworCisgICAg
Ly8gV2FpdCBmb3IgbGF5b3V0LgorICAgIGNoZWNrU2Nyb2xsT2Zmc2V0KCk7Cit9CisKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworZnVu
Y3Rpb24gcnVuVGVzdCgpCit7CisgICAgYnVpbGRQYWdlKCk7CisgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICBkZXNjcmlwdGlvbignVGhpcyB0ZXN0cyB0aGF0IGEgcGFnZSBj
YW5ub3QgYmUgc2Nyb2xsZWQgaG9yaXpvbnRhbGx5IHdpdGggdG91Y2ggJyArCisgICAgICAgICAg
ICAgICAgICAgICcoYnV0IGNhbiBzdGlsbCBiZSBzY3JvbGxlZCB2ZXJ0aWNhbGx5KSBpZiBpdHMg
Ym9keSBoYXMgc3R5bGUgb3ZlcmZsb3cteDpoaWRkZW4uICcgKworICAgICAgICAgICAgICAgICAg
ICAnVGhlIHNjcm9sbCBldmVudHMgaW4gdGhpcyB0ZXN0IGhhdmUgYm90aCBhbiB4IGFuZCB5IGNv
bXBvbmVudC4nKTsKKworICAgICAgICBpZiAoY2hlY2tUZXN0RGVwZW5kZW5jaWVzKCkpCisgICAg
ICAgICAgICBmaXJzdEdlc3R1cmVTY3JvbGwoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
ZXhpdElmTmVjZXNzYXJ5KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoIlRoaXMgdGVz
dCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZS4gIFRvdWNoIHNjcm9sbCB0aGUgcmVkIHJlY3QgdG8g
bG9nLiIpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5v
c2Nyb2xsLWJvZHkteWhpZGRlbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS15aGlkZGVuLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43OTg5MmJhMjhmYjQ2YjJmMDE3YmRhZGU4Yzk4Njc3ZmI3NTNl
MTdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteWhpZGRlbi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgcGFnZSBjYW5ub3QgYmUgc2Nyb2xsZWQg
dmVydGljYWxseSB3aXRoIHRvdWNoIChidXQgY2FuIHN0aWxsIGJlIHNjcm9sbGVkIGhvcml6b250
YWxseSkgaWYgaXRzIGJvZHkgaGFzIHN0eWxlIG92ZXJmbG93LXk6aGlkZGVuLiBUaGUgc2Nyb2xs
IGV2ZW50cyBpbiB0aGlzIHRlc3QgaGF2ZSBib3RoIGFuIHggYW5kIHkgY29tcG9uZW50LgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworZ2VzdHVyZSBldmVudHMgbm90IGltcGxlbWVu
dGVkIG9uIHRoaXMgcGxhdGZvcm0gb3IgZ2VzdHVyZSBldmVudCBzY3JvbGxpbmcgb2YgYSBkb2N1
bWVudCBpcyBicm9rZW4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0
dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS15aGlkZGVuLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS15
aGlkZGVuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE2ZTg4NzAwYTZkODNlNDM4OTFjYzA0MzE3NDAxNDgz
OGE1NGU0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXloaWRkZW4uaHRtbApAQCAtMCww
ICsxLDE0OSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9nZXN0dXJlLWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQvY3Nz
Ij4KKyN0b3VjaHRhcmdldCB7CisgIHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAg
YmFja2dyb3VuZDogd2hpdGU7CisgIG92ZXJmbG93OmhpZGRlbjsKK30KKworOjotd2Via2l0LXNj
cm9sbGJhciB7CisgICAgd2lkdGg6IDBweDsKKyAgICBoZWlnaHQ6IDBweDsKK30KKworI2dyZWVu
Ym94IHsKKyAgd2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4OworICBiYWNrZ3JvdW5kOiBn
cmVlbjsKKyAgcGFkZGluZzogMHB4OworICBtYXJnaW46IDBweDsKK30KKworI3JlZGJveCB7Cisg
IHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAgYmFja2dyb3VuZDogcmVkOworICBw
YWRkaW5nOiAwcHg7CisgIG1hcmdpbjogMHB4OworfQorCit0ZCB7CisgIHBhZGRpbmc6IDBweDsK
K30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0ibWFyZ2luOjA7IG92ZXJmbG93LXk6
aGlkZGVuOyIgb25sb2FkPSJydW5UZXN0KCk7Ij4KKworPHRhYmxlIGlkPSJob3Jpem9udGFsX3Rh
YmxlX3RvX2ZpbGwiPgorICA8dHIgaWQ9ImZpcnN0cm93Ij4KKyAgICA8dGQ+PGRpdiBpZD0icmVk
Ym94Ij48L2Rpdj48L3RkPgorICAgIDx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD4K
KyAgPC90cj4KKzwvdGFibGU+CisKKzx0YWJsZSBpZD0idmVydGljYWxfdGFibGVfdG9fZmlsbCI+
CisgICAgPHRyPjx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD48L3RyPgorICAgIDx0
cj48dGQ+PGRpdiBpZD0icmVkYm94Ij48L2Rpdj48L3RkPjwvdHI+Cis8L3RhYmxlPgorCis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCit2YXIgZXhwZWN0ZWRHZXN0dXJlc1RvdGFsID0gMjsK
K3ZhciBnZXN0dXJlc09jY3VycmVkID0gMDsKK3ZhciBzY3JvbGxBbW91bnRYID0gWyc1NScsICc5
NyddOwordmFyIHNjcm9sbEFtb3VudFkgPSBbJzAnLCAnMCddOwordmFyIHdoZWVsRXZlbnRzT2Nj
dXJyZWQgPSAwOwordmFyIGV4cGVjdGVkV2hlZWxFdmVudHNPY2N1cnJlZCA9IFsnMCcsICcwJ107
Cit2YXIgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAwOwordmFyIGV4cGVjdGVkU2Nyb2xsRXZlbnRz
T2NjdXJyZWQgPSAnMSc7Cit2YXIgc2Nyb2xsZWRFbGVtZW50ID0gJ2RvY3VtZW50LmJvZHknCisK
Ky8vIEFsd2F5cyBjb25zdHJ1Y3QgYSBwYWdlIGxhcmdlciB0aGFuIHRoZSB2ZXJ0aWNhbCBoZWln
aHQgb2YgdGhlIHdpbmRvdy4KK2Z1bmN0aW9uIGJ1aWxkUGFnZSgpCit7CisgICAgLy8gYnVpbGQg
dmVydGljYWwgdGFibGUKKyAgICB2YXIgdGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dmVydGljYWxfdGFibGVfdG9fZmlsbCcpOworICAgIHZhciB0YXJnZXRIZWlnaHQgPSBkb2N1bWVu
dC5ib2R5Lm9mZnNldEhlaWdodDsKKyAgICB2YXIgY2VsbFBhaXJIZWlnaHQgPSB0YWJsZS5vZmZz
ZXRIZWlnaHQ7CisgICAgdmFyIG51bWJlck9mUmVwcyA9IHRhcmdldEhlaWdodCAvIGNlbGxQYWly
SGVpZ2h0ICogMjsKKyAgICB2YXIgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtYmVyT2ZSZXBz
OyBpKyspIHsKKyAgICAgICAgdmFyIHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwor
ICAgICAgICBwLmlubmVySFRNTCA9ICc8dGQ+PGRpdiBpZD0iZ3JlZW5ib3giPjwvZGl2PjwvdGQ+
JzsKKyAgICAgICAgdGFibGUuYXBwZW5kQ2hpbGQocCk7CisgICAgICAgIHZhciBwID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgndHInKTsKKyAgICAgICAgcC5pbm5lckhUTUwgPSAnPHRkPjxkaXYg
aWQ9InJlZGJveCI+PC9kaXY+PC90ZD4nOworICAgICAgICB0YWJsZS5hcHBlbmRDaGlsZChwKTsK
KyAgICB9CisKKyAgICAvLyBidWlsZCBob3Jpem9udGFsIHRhYmxlCisgICAgdmFyIGhvcml6b250
YWxUYWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdob3Jpem9udGFsX3RhYmxlX3RvX2Zp
bGwnKTsKKyAgICB2YXIgdGFibGVSb3cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlyc3Ry
b3cnKTsKKyAgICB2YXIgdGFyZ2V0V2lkdGggPSBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoOwor
ICAgIHZhciBjZWxsUGFpcldpZHRoID0gaG9yaXpvbnRhbFRhYmxlLm9mZnNldFdpZHRoOworICAg
IG51bWJlck9mUmVwcyA9IHRhcmdldFdpZHRoIC8gY2VsbFBhaXJXaWR0aCAqIDI7CisgICAgZm9y
IChpID0gMDsgaSA8IG51bWJlck9mUmVwczsgaSsrKSB7CisgICAgICAgIHZhciBwID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgndGQnKTsKKyAgICAgICAgcC5pbm5lckhUTUwgPSAnPGRpdiBpZD0i
cmVkYm94Ij48L2Rpdj4nOworICAgICAgICB0YWJsZVJvdy5hcHBlbmRDaGlsZChwKTsKKyAgICAg
ICAgdmFyIHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOworICAgICAgICBwLmlubmVy
SFRNTCA9ICc8ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+JzsKKyAgICAgICAgdGFibGVSb3cuYXBw
ZW5kQ2hpbGQocCk7CisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9s
bCIsIHJlY29yZFNjcm9sbCk7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNld2hl
ZWwiLCByZWNvcmRXaGVlbCk7Cit9CisKK2Z1bmN0aW9uIGZpcnN0R2VzdHVyZVNjcm9sbCgpCit7
CisgICAgZGVidWcoImZpcnN0IGdlc3R1cmUiKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Ny
b2xsQmVnaW4oMTk1LCAxMik7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgt
NTUsIC0xMTApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CisKKyAg
ICAvLyBXYWl0IGZvciBsYXlvdXQuCisgICAgY2hlY2tTY3JvbGxPZmZzZXQoKTsKK30KKworZnVu
Y3Rpb24gc2Vjb25kR2VzdHVyZVNjcm9sbCgpCit7CisgICAgZGVidWcoInNlY29uZCBnZXN0dXJl
Iik7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDEyMCwgMjU1KTsKKyAgICBl
dmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKC00MiwgLTk1KTsKKyAgICBldmVudFNlbmRl
ci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOworCisgICAgLy8gV2FpdCBmb3IgbGF5b3V0LgorICAg
IGNoZWNrU2Nyb2xsT2Zmc2V0KCk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAg
YnVpbGRQYWdlKCk7CisgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBkZXNj
cmlwdGlvbignVGhpcyB0ZXN0cyB0aGF0IGEgcGFnZSBjYW5ub3QgYmUgc2Nyb2xsZWQgdmVydGlj
YWxseSB3aXRoIHRvdWNoICcgKworICAgICAgICAgICAgICAgICAgICAnKGJ1dCBjYW4gc3RpbGwg
YmUgc2Nyb2xsZWQgaG9yaXpvbnRhbGx5KSBpZiBpdHMgYm9keSBoYXMgc3R5bGUgb3ZlcmZsb3ct
eTpoaWRkZW4uICcgKworICAgICAgICAgICAgICAgICAgICAnVGhlIHNjcm9sbCBldmVudHMgaW4g
dGhpcyB0ZXN0IGhhdmUgYm90aCBhbiB4IGFuZCB5IGNvbXBvbmVudC4nKTsKKworICAgICAgICBp
ZiAoY2hlY2tUZXN0RGVwZW5kZW5jaWVzKCkpCisgICAgICAgICAgICBmaXJzdEdlc3R1cmVTY3Jv
bGwoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXhpdElmTmVjZXNzYXJ5KCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVyVHJl
ZS4gIFRvdWNoIHNjcm9sbCB0aGUgcmVkIHJlY3QgdG8gbG9nLiIpOworICAgIH0KK30KKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1i
b2R5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWEzNjliOTBlZmEwMDZiZGJmN2ExN2U5MjgyODUzODc0NzJm
ZDNhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5Lmh0bWwKQEAgLTAsMCArMSwxNjYgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZ2VzdHVy
ZS1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisjdG91Y2h0
YXJnZXQgeworICB3aWR0aDogMTAwcHg7CisgIGhlaWdodDogMTAwcHg7CisgIGJhY2tncm91bmQ6
IHdoaXRlOworICBvdmVyZmxvdzpoaWRkZW47Cit9CisKKzo6LXdlYmtpdC1zY3JvbGxiYXIgewor
ICAgIHdpZHRoOiAwcHg7CisgICAgaGVpZ2h0OiAwcHg7Cit9CisKKyNncmVlbmJveCB7CisgIHdp
ZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAgYmFja2dyb3VuZDogZ3JlZW47CisgIHBh
ZGRpbmc6IDBweDsKKyAgbWFyZ2luOiAwcHg7Cit9CisKKyNyZWRib3ggeworICB3aWR0aDogMTAw
cHg7CisgIGhlaWdodDogMTAwcHg7CisgIGJhY2tncm91bmQ6IHJlZDsKKyAgcGFkZGluZzogMHB4
OworICBtYXJnaW46IDBweDsKK30KKwordGQgeworICBwYWRkaW5nOiAwcHg7Cit9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHkgc3R5bGU9Im1hcmdpbjowOyBvdmVyZmxvdzpoaWRkZW47IiBvbmxv
YWQ9InJ1blRlc3QoKTsiPgorCis8dGFibGUgaWQ9Imhvcml6b250YWxfdGFibGVfdG9fZmlsbCI+
CisgIDx0ciBpZD0iZmlyc3Ryb3ciPgorICAgIDx0ZD48ZGl2IGlkPSJyZWRib3giPjwvZGl2Pjwv
dGQ+CisgICAgPHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3RkPgorICA8L3RyPgorPC90
YWJsZT4KKworPHRhYmxlIGlkPSJ2ZXJ0aWNhbF90YWJsZV90b19maWxsIj4KKyAgICA8dHI+PHRk
PjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3RkPjwvdHI+CisgICAgPHRyPjx0ZD48ZGl2IGlk
PSJyZWRib3giPjwvZGl2PjwvdGQ+PC90cj4KKzwvdGFibGU+CisKKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+CisKK3ZhciBleHBlY3RlZEdlc3R1cmVzVG90YWwgPSAyOwordmFyIGdlc3R1cmVz
T2NjdXJyZWQgPSAwOwordmFyIHNjcm9sbEFtb3VudFggPSBbJzAnLCAnMCddOwordmFyIHNjcm9s
bEFtb3VudFkgPSBbJzAnLCAnMCddOwordmFyIHdoZWVsRXZlbnRzT2NjdXJyZWQgPSAwOwordmFy
IGV4cGVjdGVkV2hlZWxFdmVudHNPY2N1cnJlZCA9IFsnMCcsICcwJ107Cit2YXIgc2Nyb2xsRXZl
bnRzT2NjdXJyZWQgPSAwOwordmFyIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAnMCc7
Cit2YXIgc2Nyb2xsZWRFbGVtZW50ID0gJ2RvY3VtZW50LmJvZHknCisKKy8vIEFsd2F5cyBjb25z
dHJ1Y3QgYSBwYWdlIGxhcmdlciB0aGFuIHRoZSB2ZXJ0aWNhbCBoZWlnaHQgb2YgdGhlIHdpbmRv
dy4KK2Z1bmN0aW9uIGJ1aWxkUGFnZSgpCit7CisgICAgLy8gYnVpbGQgdmVydGljYWwgdGFibGUK
KyAgICB2YXIgdGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmVydGljYWxfdGFibGVf
dG9fZmlsbCcpOworICAgIHZhciB0YXJnZXRIZWlnaHQgPSBkb2N1bWVudC5ib2R5Lm9mZnNldEhl
aWdodDsKKyAgICB2YXIgY2VsbFBhaXJIZWlnaHQgPSB0YWJsZS5vZmZzZXRIZWlnaHQ7CisgICAg
dmFyIG51bWJlck9mUmVwcyA9IHRhcmdldEhlaWdodCAvIGNlbGxQYWlySGVpZ2h0ICogMjsKKyAg
ICB2YXIgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtYmVyT2ZSZXBzOyBpKyspIHsKKyAgICAg
ICAgdmFyIHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOworICAgICAgICBwLmlubmVy
SFRNTCA9ICc8dGQ+PGRpdiBpZD0iZ3JlZW5ib3giPjwvZGl2PjwvdGQ+JzsKKyAgICAgICAgdGFi
bGUuYXBwZW5kQ2hpbGQocCk7CisgICAgICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgndHInKTsKKyAgICAgICAgcC5pbm5lckhUTUwgPSAnPHRkPjxkaXYgaWQ9InJlZGJveCI+PC9k
aXY+PC90ZD4nOworICAgICAgICB0YWJsZS5hcHBlbmRDaGlsZChwKTsKKyAgICB9CisKKyAgICAv
LyBidWlsZCBob3Jpem9udGFsIHRhYmxlCisgICAgdmFyIGhvcml6b250YWxUYWJsZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdob3Jpem9udGFsX3RhYmxlX3RvX2ZpbGwnKTsKKyAgICB2YXIg
dGFibGVSb3cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlyc3Ryb3cnKTsKKyAgICB2YXIg
dGFyZ2V0V2lkdGggPSBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoOworICAgIHZhciBjZWxsUGFp
cldpZHRoID0gaG9yaXpvbnRhbFRhYmxlLm9mZnNldFdpZHRoOworICAgIG51bWJlck9mUmVwcyA9
IHRhcmdldFdpZHRoIC8gY2VsbFBhaXJXaWR0aCAqIDI7CisgICAgZm9yIChpID0gMDsgaSA8IG51
bWJlck9mUmVwczsgaSsrKSB7CisgICAgICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgndGQnKTsKKyAgICAgICAgcC5pbm5lckhUTUwgPSAnPGRpdiBpZD0icmVkYm94Ij48L2Rpdj4n
OworICAgICAgICB0YWJsZVJvdy5hcHBlbmRDaGlsZChwKTsKKyAgICAgICAgdmFyIHAgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOworICAgICAgICBwLmlubmVySFRNTCA9ICc8ZGl2IGlk
PSJncmVlbmJveCI+PC9kaXY+JzsKKyAgICAgICAgdGFibGVSb3cuYXBwZW5kQ2hpbGQocCk7Cisg
ICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHJlY29yZFNjcm9s
bCk7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNld2hlZWwiLCByZWNvcmRXaGVl
bCk7Cit9CisKK2Z1bmN0aW9uIGZpcnN0R2VzdHVyZVNjcm9sbCgpCit7CisgICAgZGVidWcoImZp
cnN0IGdlc3R1cmUiKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsQmVnaW4oOTUsIDEy
KTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKC01NSwgLTExMCk7CisgICAg
ZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKKworICAgIC8vIFdhaXQgZm9yIGxh
eW91dC4KKyAgICBjaGVja1Njcm9sbE9mZnNldCgpOworfQorCitmdW5jdGlvbiBzZWNvbmRHZXN0
dXJlU2Nyb2xsKCkKK3sKKyAgICBkZWJ1Zygic2Vjb25kIGdlc3R1cmUiKTsKKyAgICBldmVudFNl
bmRlci5nZXN0dXJlU2Nyb2xsQmVnaW4oMTIsIDk3KTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJl
U2Nyb2xsVXBkYXRlKC00MiwgLTk1KTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5k
KDAsIDApOworCisgICAgLy8gV2FpdCBmb3IgbGF5b3V0LgorICAgIGNoZWNrU2Nyb2xsT2Zmc2V0
KCk7CisKKyAgICAvLyBJbiB0aGlzIHRlc3Qgd2UgZG8gbm90IGV4cGVjdCBhbnkgc2Nyb2xsIGV2
ZW50cyB0bworICAgIC8vIGJlIHJlY2VpdmVkIGJ5IHRoZSBldmVudCBsaXN0ZW5lciwgc28gd2Ug
c2lnbmFsCisgICAgLy8gdGhlIGVuZCBvZiB0aGUgdGVzdCBieSBjYWxsaW5nIHRoaXMgZnVuY3Rp
b24gaW5zdGVhZAorICAgIC8vIG9mIHJlbHlpbmcgb24gcmVjb3JkU2Nyb2xsKCkgdG8gZG8gaXQu
CisgICAgZmluaXNoVGVzdCgpOworfQorCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGJ1
aWxkUGFnZSgpOworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgZGVzY3Jp
cHRpb24oJ1RoaXMgdGVzdHMgdGhhdCBhIHBhZ2UgY2Fubm90IGJlIHNjcm9sbGVkIHdpdGggdG91
Y2ggaWYgaXRzIGJvZHkgaGFzIHN0eWxlIG92ZXJmbG93OmhpZGRlbi4nKTsKKworICAgICAgICBp
ZiAoY2hlY2tUZXN0RGVwZW5kZW5jaWVzKCkpCisgICAgICAgICAgICBmaXJzdEdlc3R1cmVTY3Jv
bGwoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXhpdElmTmVjZXNzYXJ5KCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVyVHJl
ZS4gIFRvdWNoIHNjcm9sbCB0aGUgcmVkIHJlY3QgdG8gbG9nLiIpOworICAgIH0KK30KKworZnVu
Y3Rpb24gZmluaXNoVGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICBpZiAoZ2VzdHVyZXNPY2N1cnJlZCA9PSBleHBlY3RlZEdlc3R1cmVzVG90YWwpIHsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCdzY3JvbGxFdmVudHNPY2N1cnJlZCcsIGV4cGVjdGVkU2Nyb2xs
RXZlbnRzT2NjdXJyZWQpOworICAgICAgICAgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
KyAgICAgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgICAgIH0KKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVy
ZS1zY3JvbGwtZGl2LW5vdC1wcm9wYWdhdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi1ub3QtcHJvcGFnYXRlZC5o
dG1sCmluZGV4IDI4MDE0MDlkN2IwNDNjMjQ1MDliNjU3MWRiOWM0NWI5NmIwMWRlMWQuLmQwYzVk
NTBjYjZjOThiY2MwZThkZmZiNmJmOWNkNTI4N2JjNDliNTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZGl2LW5v
dC1wcm9wYWdhdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1kaXYtbm90LXByb3BhZ2F0ZWQuaHRtbApAQCAtOTIs
MjUgKzkyLDYgQEAgdmFyIHNjcm9sbGVkRWxlbWVudCA9ICdtb3ZlZGJveCcKIHZhciBzY3JvbGxF
dmVudHNPY2N1cnJlZCA9IDA7CiB2YXIgZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCA9ICcx
JzsKIAotCi1mdW5jdGlvbiByZWNvcmRTY3JvbGwoZXZlbnQpIHsKLQlkZWJ1Zygnc2Nyb2xsIGV2
ZW50ICcgKyBzY3JvbGxFdmVudHNPY2N1cnJlZCArICcrPiAnICsgZXZlbnQudGFyZ2V0KTsKLQlz
Y3JvbGxFdmVudHNPY2N1cnJlZCsrOwotCi0JaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewotCQkv
LyBCZWNhdXNlIHNjcm9sbCBldmVudHMgYXJyaXZlIGFzeW5jaHJvbm91c2x5LCBvbmx5IG9uZSB3
aWxsIGFycml2ZS4KLQkgICAgaWYgKGdlc3R1cmVzT2NjdXJyZWQgPT0gZXhwZWN0ZWRHZXN0dXJl
c1RvdGFsKSB7Ci0JCQlzaG91bGRCZSgnc2Nyb2xsRXZlbnRzT2NjdXJyZWQnLCBleHBlY3RlZFNj
cm9sbEV2ZW50c09jY3VycmVkKTsKLQkgICAgICAgIC8vIElmIHdlJ3ZlIGdvdCBoZXJlLCB3ZSd2
ZSBwYXNzZWQuCi0JICAgICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwotCSAgICAgICAg
aXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLQkgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LQkgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLQkJfQotICAgIH0KLX0KLQot
CiBmdW5jdGlvbiBmaXJzdEdlc3R1cmVTY3JvbGwoKQogewogICAgIGRlYnVnKCJmaXJzdCBnZXN0
dXJlIik7CkBAIC0xMjYsNyArMTA3LDggQEAgZnVuY3Rpb24gc2Vjb25kR2VzdHVyZVNjcm9sbCgp
CiB7CiAgICAgZGVidWcoInNlY29uZCBnZXN0dXJlIik7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVy
ZVNjcm9sbEJlZ2luKDEyLCA0MCk7Ci0gICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0
ZVdpdGhvdXRQcm9wYWdhdGlvbigwLCAtNjApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3Jv
bGxVcGRhdGVXaXRob3V0UHJvcGFnYXRpb24oMCwgLTUwKTsKKyAgICBldmVudFNlbmRlci5nZXN0
dXJlU2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9uKDAsIC0xMCk7CiAgICAgZXZlbnRTZW5k
ZXIuZ2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKIAogICAgIC8vIFdhaXQgZm9yIGxheW91dC4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2Vz
dHVyZS1zY3JvbGwtZGl2LXByb3BhZ2F0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZGl2LXByb3BhZ2F0ZWQuaHRtbApp
bmRleCAzNDNlMTVmNWNlMjliMmVjYjY5ZDI5MjFkMmVmYzYzMTZhNWExZGQ0Li45OTc2OTg1NGFh
YzU4YTZjZTVmMzc1NzljZGE4NGY1NzQ4NWZkNjM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi1wcm9wYWdh
dGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3Vj
aC1nZXN0dXJlLXNjcm9sbC1kaXYtcHJvcGFnYXRlZC5odG1sCkBAIC05MiwyNSArOTIsNiBAQCB2
YXIgc2Nyb2xsZWRFbGVtZW50ID0gJ21vdmVkYm94JwogdmFyIHNjcm9sbEV2ZW50c09jY3VycmVk
ID0gMDsKIHZhciBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkID0gJzEnOwogCi0KLWZ1bmN0
aW9uIHJlY29yZFNjcm9sbChldmVudCkgewotCWRlYnVnKCdzY3JvbGwgZXZlbnQgJyArIHNjcm9s
bEV2ZW50c09jY3VycmVkICsgJys+ICcgKyBldmVudC50YXJnZXQpOwotCXNjcm9sbEV2ZW50c09j
Y3VycmVkKys7Ci0KLQlpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Ci0JCS8vIEJlY2F1c2Ugc2Ny
b2xsIGV2ZW50cyBhcnJpdmUgYXN5bmNocm9ub3VzbHksIG9ubHkgb25lIHdpbGwgYXJyaXZlLgot
CSAgICBpZiAoZ2VzdHVyZXNPY2N1cnJlZCA9PSBleHBlY3RlZEdlc3R1cmVzVG90YWwpIHsKLQkJ
CXNob3VsZEJlKCdzY3JvbGxFdmVudHNPY2N1cnJlZCcsIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2Nj
dXJyZWQpOwotCSAgICAgICAgLy8gSWYgd2UndmUgZ290IGhlcmUsIHdlJ3ZlIHBhc3NlZC4KLQkg
ICAgICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Ci0JICAgICAgICBpc1N1Y2Nlc3NmdWxs
eVBhcnNlZCgpOwotCSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotCSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotCQl9Ci0gICAgfQotfQotCi0KIGZ1bmN0aW9uIGZp
cnN0R2VzdHVyZVNjcm9sbCgpCiB7CiAgICAgZGVidWcoImZpcnN0IGdlc3R1cmUiKTsKQEAgLTEy
Niw3ICsxMDcsOCBAQCBmdW5jdGlvbiBzZWNvbmRHZXN0dXJlU2Nyb2xsKCkKIHsKICAgICBkZWJ1
Zygic2Vjb25kIGdlc3R1cmUiKTsKICAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsQmVnaW4o
MTIsIDQwKTsKLSAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC02MCk7Cisg
ICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtNTApOworICAgIGV2ZW50U2Vu
ZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTEwKTsKICAgICBldmVudFNlbmRlci5nZXN0dXJl
U2Nyb2xsRW5kKDAsIDApOwogCiAgICAgLy8gV2FpdCBmb3IgbGF5b3V0LgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9s
bC1kaXYtdHdpY2UtcHJvcGFnYXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91
Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1kaXYtdHdpY2UtcHJvcGFnYXRlZC5odG1s
CmluZGV4IDhmNjUxZDQ1YmNjOWEwNzIwOGUyMzBlNDkxYWVkNDkwMzI0NjkxZjAuLjFiNmU2MWVi
MzM3OTdjYjU1NjE2NDI2MzRlODhjNWE1OGViMWRjODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZGl2LXR3aWNl
LXByb3BhZ2F0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0
dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi10d2ljZS1wcm9wYWdhdGVkLmh0bWwKQEAgLTEx
NiwzMCArMTE2LDEyIEBAIHZhciBzY3JvbGxlZEVsZW1lbnQgPSAnbW92ZWRib3gnCiB2YXIgc2Ny
b2xsRXZlbnRzT2NjdXJyZWQgPSAwOwogdmFyIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQg
PSAnMSc7CiAKLQotZnVuY3Rpb24gcmVjb3JkU2Nyb2xsKGV2ZW50KSB7Ci0JZGVidWcoJ3Njcm9s
bCBldmVudCAnICsgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgKyAnKz4gJyArIGV2ZW50LnRhcmdldCk7
Ci0Jc2Nyb2xsRXZlbnRzT2NjdXJyZWQrKzsKLQotCWlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
LQkJLy8gQmVjYXVzZSBzY3JvbGwgZXZlbnRzIGFycml2ZSBhc3luY2hyb25vdXNseSwgb25seSBv
bmUgd2lsbCBhcnJpdmUuCi0JICAgIGlmIChnZXN0dXJlc09jY3VycmVkID09IGV4cGVjdGVkR2Vz
dHVyZXNUb3RhbCkgewotCQkJc2hvdWxkQmUoJ3Njcm9sbEV2ZW50c09jY3VycmVkJywgZXhwZWN0
ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCk7Ci0JICAgICAgICAvLyBJZiB3ZSd2ZSBnb3QgaGVyZSwg
d2UndmUgcGFzc2VkLgotCSAgICAgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKLQkgICAg
ICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0JICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0JICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0JCX0KLSAgICB9Ci19
Ci0KLQogZnVuY3Rpb24gZmlyc3RHZXN0dXJlU2Nyb2xsKCkKIHsKICAgICBkZWJ1ZygiZmlyc3Qg
Z2VzdHVyZSIpOwogICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdpbigxMCwgNzIpOwot
ICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTIzMCk7CisgICAgZXZlbnRT
ZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMjAwKTsKKyAgICBldmVudFNlbmRlci5nZXN0
dXJlU2Nyb2xsVXBkYXRlKDAsIC0zMCk7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEVu
ZCgwLCAwKTsKIAogICAgIC8vIFdhaXQgZm9yIGxheW91dC4KQEAgLTE1MCw3ICsxMzIsOCBAQCBm
dW5jdGlvbiBzZWNvbmRHZXN0dXJlU2Nyb2xsKCkKIHsKICAgICBkZWJ1Zygic2Vjb25kIGdlc3R1
cmUiKTsKICAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsQmVnaW4oMTIsIDQwKTsKLSAgICBl
dmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC00NSk7CisgICAgZXZlbnRTZW5kZXIu
Z2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMjApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3Jv
bGxVcGRhdGUoMCwgLTI1KTsKICAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDAp
OwogCiAgICAgLy8gV2FpdCBmb3IgbGF5b3V0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1pZnJhbWUtbm90LXBy
b3BhZ2F0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91
Y2gtZ2VzdHVyZS1zY3JvbGwtaWZyYW1lLW5vdC1wcm9wYWdhdGVkLmh0bWwKaW5kZXggYTZkOWYy
MmMzMDA1YTQ1MzIwNThiMzYzOTY4M2YzNzJmN2JiMDlmNy4uYTk5YzI2NTU3NzhlY2Y0ZGJmNDEy
MjkxMjE5OWE3MjU1OWU1NzNkMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1pZnJhbWUtbm90LXByb3BhZ2F0ZWQu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdl
c3R1cmUtc2Nyb2xsLWlmcmFtZS1ub3QtcHJvcGFnYXRlZC5odG1sCkBAIC03MSwyNSArNzEsNiBA
QCB2YXIgc2Nyb2xsZWRFbGVtZW50ID0gJ21vdmVkYm94JwogdmFyIHNjcm9sbEV2ZW50c09jY3Vy
cmVkID0gMDsKIHZhciBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkID0gJzEnOwogCi0KLWZ1
bmN0aW9uIHJlY29yZFNjcm9sbChldmVudCkgewotCWRlYnVnKCdzY3JvbGwgZXZlbnQgJyArIHNj
cm9sbEV2ZW50c09jY3VycmVkICsgJys+ICcgKyBldmVudC50YXJnZXQpOwotCXNjcm9sbEV2ZW50
c09jY3VycmVkKys7Ci0KLQlpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Ci0JCS8vIEJlY2F1c2Ug
c2Nyb2xsIGV2ZW50cyBhcnJpdmUgYXN5bmNocm9ub3VzbHksIG9ubHkgb25lIHdpbGwgYXJyaXZl
LgotCSAgICBpZiAoZ2VzdHVyZXNPY2N1cnJlZCA9PSBleHBlY3RlZEdlc3R1cmVzVG90YWwpIHsK
LQkJCXNob3VsZEJlKCdzY3JvbGxFdmVudHNPY2N1cnJlZCcsIGV4cGVjdGVkU2Nyb2xsRXZlbnRz
T2NjdXJyZWQpOwotCSAgICAgICAgLy8gSWYgd2UndmUgZ290IGhlcmUsIHdlJ3ZlIHBhc3NlZC4K
LQkgICAgICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Ci0JICAgICAgICBpc1N1Y2Nlc3Nm
dWxseVBhcnNlZCgpOwotCSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotCSAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotCQl9Ci0gICAgfQotfQotCi0KIGZ1bmN0aW9u
IGZpcnN0R2VzdHVyZVNjcm9sbCgpCiB7CiAgICAgZGVidWcoImZpcnN0IGdlc3R1cmUiKTsKQEAg
LTEwNSw3ICs4Niw4IEBAIGZ1bmN0aW9uIHNlY29uZEdlc3R1cmVTY3JvbGwoKQogewogICAgIGRl
YnVnKCJzZWNvbmQgZ2VzdHVyZSIpOwogICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdp
bigxMiwgNDApOwotICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGVXaXRob3V0UHJv
cGFnYXRpb24oMCwgLTEwMCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZVdp
dGhvdXRQcm9wYWdhdGlvbigwLCAtMTApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxV
cGRhdGVXaXRob3V0UHJvcGFnYXRpb24oMCwgLTUwKTsKICAgICBldmVudFNlbmRlci5nZXN0dXJl
U2Nyb2xsRW5kKDAsIDApOwogCiAgICAgLy8gV2FpdCBmb3IgbGF5b3V0LgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9s
bC1pZnJhbWUtcHJvcGFnYXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gv
Z2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1pZnJhbWUtcHJvcGFnYXRlZC5odG1sCmluZGV4
IDFhM2I1YWQ5ODdkNzI5NzUwNmIwYTNlMzcwMzM5NTFmOTNjMjlhNTguLmQzYzBhZjRjOWJhOTM1
Y2I2Yzg2ZTAzNGQ1NTQ5OGQ3NDYwMzQyMmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtaWZyYW1lLXByb3BhZ2F0
ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNo
LWdlc3R1cmUtc2Nyb2xsLWlmcmFtZS1wcm9wYWdhdGVkLmh0bWwKQEAgLTcxLDI1ICs3MSw2IEBA
IHZhciBzY3JvbGxlZEVsZW1lbnQgPSAnbW92ZWRib3gnCiB2YXIgc2Nyb2xsRXZlbnRzT2NjdXJy
ZWQgPSAwOwogdmFyIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAnMSc7CiAKLQotZnVu
Y3Rpb24gcmVjb3JkU2Nyb2xsKGV2ZW50KSB7Ci0JZGVidWcoJ3Njcm9sbCBldmVudCAnICsgc2Ny
b2xsRXZlbnRzT2NjdXJyZWQgKyAnKz4gJyArIGV2ZW50LnRhcmdldCk7Ci0Jc2Nyb2xsRXZlbnRz
T2NjdXJyZWQrKzsKLQotCWlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLQkJLy8gQmVjYXVzZSBz
Y3JvbGwgZXZlbnRzIGFycml2ZSBhc3luY2hyb25vdXNseSwgb25seSBvbmUgd2lsbCBhcnJpdmUu
Ci0JICAgIGlmIChnZXN0dXJlc09jY3VycmVkID09IGV4cGVjdGVkR2VzdHVyZXNUb3RhbCkgewot
CQkJc2hvdWxkQmUoJ3Njcm9sbEV2ZW50c09jY3VycmVkJywgZXhwZWN0ZWRTY3JvbGxFdmVudHNP
Y2N1cnJlZCk7Ci0JICAgICAgICAvLyBJZiB3ZSd2ZSBnb3QgaGVyZSwgd2UndmUgcGFzc2VkLgot
CSAgICAgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKLQkgICAgICAgIGlzU3VjY2Vzc2Z1
bGx5UGFyc2VkKCk7Ci0JICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0JICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0JCX0KLSAgICB9Ci19Ci0KLQogZnVuY3Rpb24g
Zmlyc3RHZXN0dXJlU2Nyb2xsKCkKIHsKICAgICBkZWJ1ZygiZmlyc3QgZ2VzdHVyZSIpOwpAQCAt
MTA1LDcgKzg2LDggQEAgZnVuY3Rpb24gc2Vjb25kR2VzdHVyZVNjcm9sbCgpCiB7CiAgICAgZGVi
dWcoInNlY29uZCBnZXN0dXJlIik7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2lu
KDEyLCA0MCk7Ci0gICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMTAwKTsK
KyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC0xMCk7CisgICAgZXZlbnRT
ZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtNTApOwogICAgIGV2ZW50U2VuZGVyLmdlc3R1
cmVTY3JvbGxFbmQoMCwgMCk7CiAKICAgICAvLyBXYWl0IGZvciBsYXlvdXQuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Ny
b2xsLXBhZ2Utbm90LXByb3BhZ2F0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Rv
dWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcGFnZS1ub3QtcHJvcGFnYXRlZC5odG1s
CmluZGV4IGIzODUyNDVmYzE5YzNiM2QzYjk4OTU5MDQ2MTBkNjA0YmIyOWYxNmEuLjQ2ZDgzNmMy
MGMxZDkzYjUwMThjMmY1ZTMwNmZhZTc2MjQ4ZjI2MzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcGFnZS1ub3Qt
cHJvcGFnYXRlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1
cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcGFnZS1ub3QtcHJvcGFnYXRlZC5odG1sCkBAIC04Niwy
MyArODYsNiBAQCB2YXIgc2Nyb2xsZWRFbGVtZW50ID0gJ2RvY3VtZW50LmJvZHknCiB2YXIgc2Ny
b2xsRXZlbnRzT2NjdXJyZWQgPSAwOwogdmFyIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQg
PSAnMSc7CiAKLWZ1bmN0aW9uIHJlY29yZFNjcm9sbChldmVudCkgewotCWRlYnVnKCdzY3JvbGwg
ZXZlbnQgJyArIHNjcm9sbEV2ZW50c09jY3VycmVkICsgJys+ICcgKyBldmVudC50YXJnZXQpOwot
CXNjcm9sbEV2ZW50c09jY3VycmVkKys7Ci0KLQlpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Ci0J
CS8vIEJlY2F1c2Ugc2Nyb2xsIGV2ZW50cyBhcnJpdmUgYXN5bmNocm9ub3VzbHksIG9ubHkgb25l
IHdpbGwgYXJyaXZlLgotCSAgICBpZiAoZ2VzdHVyZXNPY2N1cnJlZCA9PSBleHBlY3RlZEdlc3R1
cmVzVG90YWwpIHsKLQkJCXNob3VsZEJlKCdzY3JvbGxFdmVudHNPY2N1cnJlZCcsIGV4cGVjdGVk
U2Nyb2xsRXZlbnRzT2NjdXJyZWQpOwotCSAgICAgICAgLy8gSWYgd2UndmUgZ290IGhlcmUsIHdl
J3ZlIHBhc3NlZC4KLQkgICAgICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Ci0JICAgICAg
ICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotCSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotCSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotCQl9Ci0gICAgfQotfQot
CiAvLyBBbHdheXMgY29uc3RydWN0IGEgcGFnZSBsYXJnZXIgdGhhbiB0aGUgdmVydGljYWwgaGVp
Z2h0IG9mIHRoZSB3aW5kb3cuCiBmdW5jdGlvbiBidWlsZFBhZ2UoKQogewpAQCAtMTM2LDcgKzEx
OSw4IEBAIGZ1bmN0aW9uIHNlY29uZEdlc3R1cmVTY3JvbGwoKQogewogICAgIGRlYnVnKCJzZWNv
bmQgZ2VzdHVyZSIpOwogICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdpbigxMiwgNDAp
OwotICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGVXaXRob3V0UHJvcGFnYXRpb24o
MCwgLTI1MCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZVdpdGhvdXRQcm9w
YWdhdGlvbigwLCAtMjAwKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlV2l0
aG91dFByb3BhZ2F0aW9uKDAsIC0xNjApOwogICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxF
bmQoMCwgMCk7CiAKICAgICAvLyBXYWl0IGZvciBsYXlvdXQuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2Ut
cHJvcGFnYXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90
b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLXByb3BhZ2F0ZWQuaHRtbAppbmRleCAwOTMwOTVjNWVm
Yjk2Y2JkMjJmMmYwZTFiN2Q1YWNhMWZhNTA4YmQ1Li5kYWE0NTY3ZTgzZmQxN2FmNzk4MTE5Mjcw
NGZlZjNiOTI2ZDk5NWIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2UtcHJvcGFnYXRlZC5odG1sCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3Jv
bGwtcGFnZS1wcm9wYWdhdGVkLmh0bWwKQEAgLTg2LDIzICs4Niw2IEBAIHZhciBzY3JvbGxlZEVs
ZW1lbnQgPSAnZG9jdW1lbnQuYm9keScKIHZhciBzY3JvbGxFdmVudHNPY2N1cnJlZCA9IDA7CiB2
YXIgZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCA9ICcxJzsKIAotZnVuY3Rpb24gcmVjb3Jk
U2Nyb2xsKGV2ZW50KSB7Ci0JZGVidWcoJ3Njcm9sbCBldmVudCAnICsgc2Nyb2xsRXZlbnRzT2Nj
dXJyZWQgKyAnKz4gJyArIGV2ZW50LnRhcmdldCk7Ci0Jc2Nyb2xsRXZlbnRzT2NjdXJyZWQrKzsK
LQotCWlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLQkJLy8gQmVjYXVzZSBzY3JvbGwgZXZlbnRz
IGFycml2ZSBhc3luY2hyb25vdXNseSwgb25seSBvbmUgd2lsbCBhcnJpdmUuCi0JICAgIGlmIChn
ZXN0dXJlc09jY3VycmVkID09IGV4cGVjdGVkR2VzdHVyZXNUb3RhbCkgewotCQkJc2hvdWxkQmUo
J3Njcm9sbEV2ZW50c09jY3VycmVkJywgZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCk7Ci0J
ICAgICAgICAvLyBJZiB3ZSd2ZSBnb3QgaGVyZSwgd2UndmUgcGFzc2VkLgotCSAgICAgICAgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKLQkgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7
Ci0JICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0JICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci0JCX0KLSAgICB9Ci19Ci0KIC8vIEFsd2F5cyBjb25zdHJ1Y3QgYSBw
YWdlIGxhcmdlciB0aGFuIHRoZSB2ZXJ0aWNhbCBoZWlnaHQgb2YgdGhlIHdpbmRvdy4KIGZ1bmN0
aW9uIGJ1aWxkUGFnZSgpCiB7CkBAIC0xMzYsNyArMTE5LDggQEAgZnVuY3Rpb24gc2Vjb25kR2Vz
dHVyZVNjcm9sbCgpCiB7CiAgICAgZGVidWcoInNlY29uZCBnZXN0dXJlIik7CiAgICAgZXZlbnRT
ZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDEyLCA0MCk7Ci0gICAgZXZlbnRTZW5kZXIuZ2VzdHVy
ZVNjcm9sbFVwZGF0ZSgwLCAtMjUwKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBk
YXRlKDAsIC0yMDApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTE2
MCk7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKIAogICAgIC8vIFdh
aXQgZm9yIGxheW91dC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcGFnZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLmh0bWwKaW5k
ZXggNGU2MGU1Y2FlMGU5YjUxZWFkYjc1NDhkN2I3YzYwZDI4MzFiZDlhOC4uNmUxMDMzNjJhNGZm
OWIwZWEzYjQ0M2UwZjYwOGQ2OTZiNjEyZTA1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNj
cm9sbC1wYWdlLmh0bWwKQEAgLTEwNSw3ICsxMDUsNyBAQCBmdW5jdGlvbiBmaXJzdEdlc3R1cmVT
Y3JvbGwoKQogZnVuY3Rpb24gc2Vjb25kR2VzdHVyZVNjcm9sbCgpCiB7CiAgICAgZGVidWcoInNl
Y29uZCBnZXN0dXJlIik7Ci0gICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDEyLCA0
MCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDgwMCwgNDApOwogICAgIGV2
ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTMwKTsKICAgICBldmVudFNlbmRlci5n
ZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC0zMCk7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9s
bEVuZCgwLCAwKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNo
L2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41NGNhZjlhYTc1ZDQ0ZDJhMDBjNTMxYmIyYjBmZDFhOWIxNTgxZDExCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gv
Z2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTggQEAKK1RoaXMgdGVzdHMgdGhhdCBhIHBhZ2UgY2Fubm90IGJlIHNjcm9sbGVkIHdpdGgg
dG91Y2ggaWYgaXRzIGJvZHkgaGFzIHN0eWxlIG92ZXJmbG93OmhpZGRlbi4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK2ZpcnN0IGdlc3R1cmUKK1BBU1MgZG9jdW1lbnQuYm9keS5z
Y3JvbGxUb3AgaXMgMAorUEFTUyBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQgaXMgMAorUEFTUyB3
aGVlbEV2ZW50c09jY3VycmVkIGlzIDAKK3NlY29uZCBnZXN0dXJlCitQQVNTIGRvY3VtZW50LmJv
ZHkuc2Nyb2xsVG9wIGlzIDAKK1BBU1MgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0IGlzIDAKK1BB
U1Mgd2hlZWxFdmVudHNPY2N1cnJlZCBpcyAwCitQQVNTIHNjcm9sbEV2ZW50c09jY3VycmVkIGlz
IDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1wcm9wYWdhdGVkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXByb3BhZ2F0ZWQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmRmMjM3YTU4ZmZlY2EzMmU4ZGUxMzQ3NTFjOTQxNzUyNzU4MjY0ZDgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1wcm9wYWdhdGVkLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUaGlzIHRlc3RzIHRoYXQgYSBwYWdlIGNhbm5v
dCBiZSBzY3JvbGxlZCB2ZXJ0aWNhbGx5IHdpdGggdG91Y2ggaWYgaXRzIGJvZHkgaGFzIHN0eWxl
IG92ZXJmbG93LXk6aGlkZGVuIGFuZCB0aGUgc2Nyb2xsIGV2ZW50IGlzIHByb3BvZ2F0ZWQgZnJv
bSBhIHNjcm9sbGFibGUgY2hpbGQgZGl2LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworZmlyc3QgZ2VzdHVyZQorUEFTUyBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCBpcyAwCitQQVNT
IGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCBpcyAwCitQQVNTIHdoZWVsRXZlbnRzT2NjdXJyZWQg
aXMgMAorc2Vjb25kIGdlc3R1cmUKK1BBU1MgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgaXMgMAor
UEFTUyBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQgaXMgMAorUEFTUyB3aGVlbEV2ZW50c09jY3Vy
cmVkIGlzIDAKK1BBU1Mgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgaXMgMAorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2Vz
dHVyZS1ub3Njcm9sbC1ib2R5LXhoaWRkZW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5v
c2Nyb2xsLWJvZHkteGhpZGRlbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMyNzc2MjlmNDNh
YzdkMjhlNzEyYWZhOWM1YjQ3MzQwYzliZDEwOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2Vz
dHVyZS1ub3Njcm9sbC1ib2R5LXhoaWRkZW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAK
K1RoaXMgdGVzdHMgdGhhdCBhIHBhZ2UgY2Fubm90IGJlIHNjcm9sbGVkIGhvcml6b250YWxseSB3
aXRoIHRvdWNoIChidXQgY2FuIHN0aWxsIGJlIHNjcm9sbGVkIHZlcnRpY2FsbHkpIGlmIGl0cyBi
b2R5IGhhcyBzdHlsZSBvdmVyZmxvdy14OmhpZGRlbi4gVGhlIHNjcm9sbCBldmVudHMgaW4gdGhp
cyB0ZXN0IGhhdmUgYm90aCBhbiB4IGFuZCB5IGNvbXBvbmVudC4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK2ZpcnN0IGdlc3R1cmUKK1BBU1MgZG9jdW1lbnQuYm9keS5zY3JvbGxU
b3AgaXMgMTEwCitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCBpcyAwCitQQVNTIHdoZWVs
RXZlbnRzT2NjdXJyZWQgaXMgMAorc2Vjb25kIGdlc3R1cmUKK1BBU1MgZG9jdW1lbnQuYm9keS5z
Y3JvbGxUb3AgaXMgMjA1CitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCBpcyAwCitQQVNT
IHdoZWVsRXZlbnRzT2NjdXJyZWQgaXMgMAorc2Nyb2xsIGV2ZW50IDArPiBbb2JqZWN0IEhUTUxE
b2N1bWVudF0KK1BBU1Mgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgaXMgMQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2Vz
dHVyZS1ub3Njcm9sbC1ib2R5LXloaWRkZW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5v
c2Nyb2xsLWJvZHkteWhpZGRlbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg5YTFkNzI1ZDlj
MzFjY2E1MDMxYTYyMDA5ZGE4ZTRmOTI3ZjMxOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2Vz
dHVyZS1ub3Njcm9sbC1ib2R5LXloaWRkZW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAK
K1RoaXMgdGVzdHMgdGhhdCBhIHBhZ2UgY2Fubm90IGJlIHNjcm9sbGVkIHZlcnRpY2FsbHkgd2l0
aCB0b3VjaCAoYnV0IGNhbiBzdGlsbCBiZSBzY3JvbGxlZCBob3Jpem9udGFsbHkpIGlmIGl0cyBi
b2R5IGhhcyBzdHlsZSBvdmVyZmxvdy15OmhpZGRlbi4gVGhlIHNjcm9sbCBldmVudHMgaW4gdGhp
cyB0ZXN0IGhhdmUgYm90aCBhbiB4IGFuZCB5IGNvbXBvbmVudC4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK2ZpcnN0IGdlc3R1cmUKK1BBU1MgZG9jdW1lbnQuYm9keS5zY3JvbGxU
b3AgaXMgMAorUEFTUyBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQgaXMgNTUKK1BBU1Mgd2hlZWxF
dmVudHNPY2N1cnJlZCBpcyAwCitzZWNvbmQgZ2VzdHVyZQorUEFTUyBkb2N1bWVudC5ib2R5LnNj
cm9sbFRvcCBpcyAwCitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCBpcyA5NworUEFTUyB3
aGVlbEV2ZW50c09jY3VycmVkIGlzIDAKK3Njcm9sbCBldmVudCAwKz4gW29iamVjdCBIVE1MRG9j
dW1lbnRdCitQQVNTIHNjcm9sbEV2ZW50c09jY3VycmVkIGlzIDEKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190592</attachid>
            <date>2013-02-27 13:28:04 -0800</date>
            <delta_ts>2013-02-27 13:59:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109769-20130227162417.patch</filename>
            <type>text/plain</type>
            <size>52368</size>
            <attacher name="Terry Anderson">tdanderson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRmN2RjOGFlNTI0YWQ2
MzFlZmMxMjE1NGFkMmRlZjNkYTA4ODgzYy4uNmFjNGE3ZGIzMmQ5MDU4MDM1MWQ4ZDZjMTQ3ZTNj
MjRhNmFmNzY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTAyLTI3ICBUZXJy
eSBBbmRlcnNvbiAgPHRkYW5kZXJzb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZSgpIHNob3VsZCBpbnZva2UgdGhlIHVzZXIt
Z2VuZXJhdGVkIHNjcm9sbCByb3V0aW5lcyAKKyAgICAgICAgc28gaXRzIGJlaGF2aW9yIG1hdGNo
ZXMgb3RoZXIgdXNlci1pbml0aWF0ZWQgc2Nyb2xscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gZW5zdXJlIHRoYXQgdGhlIHNjcm9sbGluZyBiZWhh
dmlvciBvZiBHZXN0dXJlU2Nyb2xsVXBkYXRlIGV2ZW50cyBhcmUgY29uc2lzdGVudCB3aXRoCisg
ICAgICAgIHRoZSBzY3JvbGxpbmcgYmVoYXZpb3Igb2YgbW91c2V3aGVlbCBldmVudHMsIHVzZSB0
aGUgZXhpc3RpbmcgdXNlci1nZW5lcmF0ZWQgc2Nyb2xsIGxvZ2ljCisgICAgICAgIGluc3RlYWQg
b2YgY2FsbGluZyBpbnRvIFJlbmRlckxheWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KCkuIFRoaXMg
cGF0Y2ggZml4ZXMgdGhlIGJ1ZworICAgICAgICByZXBvcnRlZCBpbiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MzE2LCB3aGVyZSB0aGUgZXhhbXBsZSBwYWdlIGNh
bgorICAgICAgICBiZSBzY3JvbGxlZCB1c2luZyB0b3VjaCBidXQgY2Fubm90IGJlIHNjcm9sbGVk
IHVzaW5nIG1vdXNld2hlZWxzLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIHBhdGNoIGRvZXMg
bm90IHVzZSBhbnkgb2YgdGhlIG1vdXNld2hlZWwgZXZlbnQtaGFuZGxpbmcgY29kZS4KKworICAg
ICAgICBUZXN0czogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Ny
b2xsLWJvZHktcHJvcGFnYXRlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9s
bC1ib2R5LXloaWRkZW4uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkuaHRtbAorCisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxCZWdp
bik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxV
cGRhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OnNlbmRTY3JvbGxFdmVudFRvVmlldyk6CisgICAgICAgICAgICBCeSBjYWxsaW5nIHRoaXMg
ZnVuY3Rpb24gYXQgdGhlIHN0YXJ0IG9mIGhhbmRsZUdlc3R1cmVTY3JvbGxVcGRhdGUoKSBpbiB0
aGUgY2FzZQorICAgICAgICAgICAgd2hlcmUgfG1fc2Nyb2xsR2VzdHVyZUhhbmRsaW5nTm9kZXwg
aXMgbnVsbCwgd2UgZW5zdXJlIHRoYXQgdGhlIHNjcm9sbCB1cGRhdGVzCisgICAgICAgICAgICBj
YW4gc3RpbGwgc2Nyb2xsIHRoZSBwYWdlIGl0c2VsZiwgaWYgcG9zc2libGUuCisgICAgICAgICog
cGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKEV2ZW50SGFuZGxlcik6CisgICAgICAgICog
cGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVdoZWVsRXZlbnQ6OnNldEhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMpOgorCiAyMDEzLTAyLTI2
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IGFk
ZCBhIGJvZHkgdG8gcGxhdGZvcm0gcmVxdWVzdCB1bnRpbCBuZWNlc3NhcnkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA2YzE1YWM0Zjk5YmI1NjIyNDg2YzMzNmJmMGY0MWQ2
M2RjZGIwZjJhLi44ODljMThhMDg2OGZmMDMxNDNjOTY0MTdlMTNiZWVkYzliZmU2NGY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC00MDMsNiArNDAzLDcgQEAgdm9pZCBF
dmVudEhhbmRsZXI6OmNsZWFyKCkKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgbV9z
Y3JvbGxHZXN0dXJlSGFuZGxpbmdOb2RlID0gMDsKICAgICBtX2xhc3RIaXRUZXN0UmVzdWx0T3Zl
cldpZGdldCA9IGZhbHNlOworICAgIG1fcHJldmlvdXNHZXN0dXJlU2Nyb2xsZWROb2RlID0gMDsK
ICAgICBtX3Njcm9sbGJhckhhbmRsaW5nU2Nyb2xsR2VzdHVyZSA9IDA7CiAjZW5kaWYKICAgICBt
X21heE1vdXNlTW92ZWREdXJhdGlvbiA9IDA7CkBAIC0yNjE0LDE5ICsyNjE1LDYgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OnBhc3NHZXN0dXJlRXZlbnRUb1dpZGdldElmUG9zc2libGUoY29uc3QgUGxh
dGZvcm1HZXN0dXJlRXZlbnQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBjb25zdCBO
b2RlKiBjbG9zZXN0U2Nyb2xsYWJsZU5vZGVDYW5kaWRhdGUoY29uc3QgTm9kZSogbm9kZSkKLXsK
LSAgICBmb3IgKEV2ZW50UGF0aFdhbGtlciB3YWxrZXIobm9kZSk7IHdhbGtlci5ub2RlKCk7IHdh
bGtlci5tb3ZlVG9QYXJlbnQoKSkgewotICAgICAgICBOb2RlKiBzY3JvbGxhYmxlTm9kZSA9IHdh
bGtlci5ub2RlKCk7Ci0gICAgICAgIGlmIChzY3JvbGxhYmxlTm9kZS0+aXNEb2N1bWVudE5vZGUo
KSkKLSAgICAgICAgICAgIHJldHVybiBzY3JvbGxhYmxlTm9kZTsKLSAgICAgICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IHNjcm9sbGFibGVOb2RlLT5yZW5kZXJlcigpOwotICAgICAgICBpZiAo
cmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzQm94KCkgJiYgdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5j
YW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKLSAgICAgICAgICAgIHJldHVybiBz
Y3JvbGxhYmxlTm9kZTsKLSAgICB9Ci0gICAgcmV0dXJuIG5vZGU7Ci19Ci0KIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xsQmVnaW4oY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZl
bnQmIGdlc3R1cmVFdmVudCkKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5k
b2N1bWVudCgpOwpAQCAtMjY0NSw2ICsyNjMzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZUdlc3R1cmVTY3JvbGxCZWdpbihjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUUK
IAogICAgIG1fbGFzdEhpdFRlc3RSZXN1bHRPdmVyV2lkZ2V0ID0gcmVzdWx0LmlzT3ZlcldpZGdl
dCgpOyAKICAgICBtX3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGUgPSByZXN1bHQuaW5uZXJOb2Rl
KCk7CisgICAgbV9wcmV2aW91c0dlc3R1cmVTY3JvbGxlZE5vZGUgPSAwOwogCiAgICAgTm9kZSog
bm9kZSA9IG1fc2Nyb2xsR2VzdHVyZUhhbmRsaW5nTm9kZS5nZXQoKTsKICAgICBpZiAobm9kZSkK
QEAgLTI2NTUsNDggKzI2NDQsNzMgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVT
Y3JvbGxCZWdpbihjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUUKIAogYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxVcGRhdGUoY29uc3QgUGxhdGZvcm1HZXN0
dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKLSAgICAvLyBJZ25vcmUgdGhpcyBldmVudCBpZiB3
ZSBkb24ndCBhbHJlYWR5IGhhdmUgYSB0YXJnZXRlZCBub2RlIHdpdGggYSB2YWxpZCByZW5kZXJl
ci4KLSAgICBjb25zdCBOb2RlKiBub2RlID0gbV9zY3JvbGxHZXN0dXJlSGFuZGxpbmdOb2RlLmdl
dCgpOwotICAgIGlmICghbm9kZSkKKyAgICBGbG9hdFNpemUgZGVsdGEoZ2VzdHVyZUV2ZW50LmRl
bHRhWCgpLCBnZXN0dXJlRXZlbnQuZGVsdGFZKCkpOworICAgIGlmIChkZWx0YS5pc1plcm8oKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVuZGVyT2JqZWN0KiBsYXRjaGVkUmVuZGVy
ZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghbGF0Y2hlZFJlbmRlcmVyKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgY29uc3QgZmxvYXQgc2NhbGVGYWN0b3IgPSBtX2ZyYW1lLT5w
YWdlWm9vbUZhY3RvcigpICogbV9mcmFtZS0+ZnJhbWVTY2FsZUZhY3RvcigpOworICAgIGRlbHRh
LnNjYWxlKDEgLyBzY2FsZUZhY3RvciwgMSAvIHNjYWxlRmFjdG9yKTsKIAotICAgIEludFNpemUg
ZGVsdGEoLWdlc3R1cmVFdmVudC5kZWx0YVgoKSwgLWdlc3R1cmVFdmVudC5kZWx0YVkoKSk7Ci0g
ICAgaWYgKGRlbHRhLmlzWmVybygpKQorICAgIE5vZGUqIG5vZGUgPSBtX3Njcm9sbEdlc3R1cmVI
YW5kbGluZ05vZGUuZ2V0KCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gc2VuZFNj
cm9sbEV2ZW50VG9WaWV3KGdlc3R1cmVFdmVudCwgZGVsdGEpOworCisgICAgLy8gSWdub3JlIHRo
aXMgZXZlbnQgaWYgdGhlIHRhcmdldGVkIG5vZGUgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIHJlbmRl
cmVyLgorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAg
IGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFJlZlB0cjxGcmFt
ZVZpZXc+IHByb3RlY3RvcihtX2ZyYW1lLT52aWV3KCkpOwogCiAgICAgLy8gVHJ5IHRvIHNlbmQg
dGhlIGV2ZW50IHRvIHRoZSBjb3JyZWN0IHZpZXcuCi0gICAgaWYgKHBhc3NHZXN0dXJlRXZlbnRU
b1dpZGdldElmUG9zc2libGUoZ2VzdHVyZUV2ZW50LCBsYXRjaGVkUmVuZGVyZXIpKQorICAgIGlm
IChwYXNzR2VzdHVyZUV2ZW50VG9XaWRnZXRJZlBvc3NpYmxlKGdlc3R1cmVFdmVudCwgcmVuZGVy
ZXIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIC8vIE90aGVyd2lzZSBpZiB0aGlzIGlz
IHRoZSBjb3JyZWN0IHZpZXcgZm9yIHRoZSBldmVudCwgZmluZCB0aGUgY2xvc2VzdCBzY3JvbGxh
YmxlCi0gICAgLy8gYW5jZXN0b3Igb2YgdGhlIHRhcmdldGVkIG5vZGUgYW5kIHNjcm9sbCB0aGUg
bGF5ZXIgdGhhdCBjb250YWlucyB0aGlzIG5vZGUncyByZW5kZXJlci4KLSAgICBub2RlID0gY2xv
c2VzdFNjcm9sbGFibGVOb2RlQ2FuZGlkYXRlKG5vZGUpOwotICAgIGlmICghbm9kZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIE5vZGUqIHN0b3BOb2RlID0gMDsKKyAgICBib29sIHNjcm9s
bFNob3VsZE5vdFByb3BhZ2F0ZSA9IGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVu
dDo6R2VzdHVyZVNjcm9sbFVwZGF0ZVdpdGhvdXRQcm9wYWdhdGlvbjsKKyAgICBpZiAoc2Nyb2xs
U2hvdWxkTm90UHJvcGFnYXRlKQorICAgICAgICBzdG9wTm9kZSA9IG1fcHJldmlvdXNHZXN0dXJl
U2Nyb2xsZWROb2RlLmdldCgpOwogCi0gICAgbGF0Y2hlZFJlbmRlcmVyID0gbm9kZS0+cmVuZGVy
ZXIoKTsKLSAgICBpZiAoIWxhdGNoZWRSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIC8vIEZpcnN0IHRyeSB0byBzY3JvbGwgdGhlIGNsb3Nlc3Qgc2Nyb2xsYWJsZSBSZW5kZXJC
b3ggYW5jZXN0b3Igb2YgfG5vZGV8LgorICAgIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
ID0gU2Nyb2xsQnlQaXhlbDsgCisgICAgYm9vbCBob3Jpem9udGFsU2Nyb2xsID0gc2Nyb2xsTm9k
ZShkZWx0YS53aWR0aCgpLCBncmFudWxhcml0eSwgU2Nyb2xsTGVmdCwgU2Nyb2xsUmlnaHQsIG5v
ZGUsICZzdG9wTm9kZSk7CisgICAgYm9vbCB2ZXJ0aWNhbFNjcm9sbCA9IHNjcm9sbE5vZGUoZGVs
dGEuaGVpZ2h0KCksIGdyYW51bGFyaXR5LCBTY3JvbGxVcCwgU2Nyb2xsRG93biwgbm9kZSwgJnN0
b3BOb2RlKTsKIAotICAgIFJlbmRlckxheWVyOjpTY3JvbGxQcm9wYWdhdGlvbiBzaG91bGRQcm9w
YWdhdGUgPSBSZW5kZXJMYXllcjo6U2hvdWxkUHJvcGFnYXRlU2Nyb2xsOwotICAgIGlmIChnZXN0
dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGVXaXRo
b3V0UHJvcGFnYXRpb24pCi0gICAgICAgIHNob3VsZFByb3BhZ2F0ZSA9IFJlbmRlckxheWVyOjpE
b250UHJvcGFnYXRlU2Nyb2xsOworICAgIGlmIChzY3JvbGxTaG91bGROb3RQcm9wYWdhdGUpCisg
ICAgICAgIG1fcHJldmlvdXNHZXN0dXJlU2Nyb2xsZWROb2RlID0gc3RvcE5vZGU7CiAKLSAgICBj
b25zdCBmbG9hdCBzY2FsZUZhY3RvciA9IG1fZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCkgKiBtX2Zy
YW1lLT5mcmFtZVNjYWxlRmFjdG9yKCk7Ci0gICAgZGVsdGEuc2NhbGUoMSAvIHNjYWxlRmFjdG9y
LCAxIC8gc2NhbGVGYWN0b3IpOworICAgIGlmIChob3Jpem9udGFsU2Nyb2xsIHx8IHZlcnRpY2Fs
U2Nyb2xsKSB7CisgICAgICAgIHNldEZyYW1lV2FzU2Nyb2xsZWRCeVVzZXIoKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gT3RoZXJ3aXNlIHRyeSB0byBzY3JvbGwgdGhl
IHZpZXcuCisgICAgcmV0dXJuIHNlbmRTY3JvbGxFdmVudFRvVmlldyhnZXN0dXJlRXZlbnQsIGRl
bHRhKTsKK30KKworYm9vbCBFdmVudEhhbmRsZXI6OnNlbmRTY3JvbGxFdmVudFRvVmlldyhjb25z
dCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50LCBjb25zdCBGbG9hdFNpemUmIHNj
YWxlZERlbHRhKQoreworICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKKyAg
ICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgcmVzdWx0ID0g
bGF0Y2hlZFJlbmRlcmVyLT5lbmNsb3NpbmdMYXllcigpLT5zY3JvbGxCeShkZWx0YSwgUmVuZGVy
TGF5ZXI6OlNjcm9sbE9mZnNldENsYW1wZWQsIHNob3VsZFByb3BhZ2F0ZSk7CisgICAgY29uc3Qg
ZmxvYXQgdGlja0Rpdmlzb3IgPSBzdGF0aWNfY2FzdDxmbG9hdD4oV2hlZWxFdmVudDo6VGlja011
bHRpcGxpZXIpOworICAgIEludFBvaW50IHBvaW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLngo
KSwgZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCkueSgpKTsKKyAgICBJbnRQb2ludCBnbG9iYWxQb2lu
dChnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKS54KCksIGdlc3R1cmVFdmVudC5nbG9iYWxQ
b3NpdGlvbigpLnkoKSk7CisgICAgUGxhdGZvcm1XaGVlbEV2ZW50IHN5bnRoZXRpY1doZWVsRXZl
bnQocG9pbnQsIGdsb2JhbFBvaW50LAorICAgICAgICBzY2FsZWREZWx0YS53aWR0aCgpLCBzY2Fs
ZWREZWx0YS5oZWlnaHQoKSwgCisgICAgICAgIHNjYWxlZERlbHRhLndpZHRoKCkgLyB0aWNrRGl2
aXNvciwgc2NhbGVkRGVsdGEuaGVpZ2h0KCkgLyB0aWNrRGl2aXNvciwKKyAgICAgICAgU2Nyb2xs
QnlQaXhlbFdoZWVsRXZlbnQsCisgICAgICAgIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0
dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5t
ZXRhS2V5KCkpOworI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oQ0hST01JVU0pCisgICAg
c3ludGhldGljV2hlZWxFdmVudC5zZXRIYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKHRydWUpOwor
I2VuZGlmCiAKLSAgICBpZiAocmVzdWx0KQorICAgIGJvb2wgc2Nyb2xsZWRGcmFtZSA9IHZpZXct
PndoZWVsRXZlbnQoc3ludGhldGljV2hlZWxFdmVudCk7CisgICAgaWYgKHNjcm9sbGVkRnJhbWUp
CiAgICAgICAgIHNldEZyYW1lV2FzU2Nyb2xsZWRCeVVzZXIoKTsKIAotICAgIHJldHVybiByZXN1
bHQ7CisgICAgcmV0dXJuIHNjcm9sbGVkRnJhbWU7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpp
c1Njcm9sbGJhckhhbmRsaW5nR2VzdHVyZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmgKaW5kZXggM2ZjMDdmMmZhMjUyZjljNDVmMjRmMWY2YjU1ZTQ3ZTdhMDBkNzUzZS4uMzkw
ODM0YTFmZDc2NWQ3MjIxMjlmYTYwZjM5ZjJkOTM4M2E3ZmJmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCkBAIC0zNzgsNiArMzc4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGhhbmRs
ZUdlc3R1cmVGb3JUZXh0U2VsZWN0aW9uT3JDb250ZXh0TWVudShjb25zdCBQbGF0Zm9ybUdlc3R1
cmVFdmVudCYpOwogICAgIGJvb2wgcGFzc0dlc3R1cmVFdmVudFRvV2lkZ2V0KGNvbnN0IFBsYXRm
b3JtR2VzdHVyZUV2ZW50JiwgV2lkZ2V0Kik7CiAgICAgYm9vbCBwYXNzR2VzdHVyZUV2ZW50VG9X
aWRnZXRJZlBvc3NpYmxlKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiwgUmVuZGVyT2JqZWN0
Kik7CisgICAgYm9vbCBzZW5kU2Nyb2xsRXZlbnRUb1ZpZXcoY29uc3QgUGxhdGZvcm1HZXN0dXJl
RXZlbnQmLCBjb25zdCBGbG9hdFNpemUmKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRMYXN0S25v
d25Nb3VzZVBvc2l0aW9uKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwpAQCAtNDY5LDYgKzQ3
MCw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogICAgIFJlZlB0cjxO
b2RlPiBtX3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGU7CiAgICAgYm9vbCBtX2xhc3RIaXRUZXN0
UmVzdWx0T3ZlcldpZGdldDsKKyAgICBSZWZQdHI8Tm9kZT4gbV9wcmV2aW91c0dlc3R1cmVTY3Jv
bGxlZE5vZGU7CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9zY3JvbGxiYXJIYW5kbGluZ1Njcm9s
bEdlc3R1cmU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1XaGVlbEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdo
ZWVsRXZlbnQuaAppbmRleCA4YzAzMDJjNWVhNWQ1YmZlOGEzMGIyYzQ1OTE1ZjMxODI0NjliZjE5
Li41YWYyOTc0YjIyYmZkNTRlZjdhODM2MGEzMGIwYTcxYzVmMmJmYzZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaApAQCAtMTU3LDYgKzE1Nyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oQ0hS
T01JVU0pCiAgICAgICAgIGJvb2wgaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhczsgfQorICAgICAgICB2b2lkIHNldEhh
c1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoYm9vbCBiKSB7IG1faGFzUHJlY2lzZVNjcm9sbGluZ0Rl
bHRhcyA9IGI7IH0KICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9N
SVVNKSAmJiBPUyhEQVJXSU4pKQogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBwaGFz
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGhhc2U7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmODQxMGU1NDEyMWFlYTBiMGIy
ZmE5N2UyYjExOWY1MDJlNDhhYTNkLi5iOWZlYjZhMjIzMjExNjgxMDhkMWZkZDk3ZWMzNDQ5MWZm
OWY3MGYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTMtMDItMjcgIFRlcnJ5IEFuZGVyc29u
ICA8dGRhbmRlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRXZlbnRIYW5kbGVyOjpoYW5k
bGVHZXN0dXJlU2Nyb2xsVXBkYXRlKCkgc2hvdWxkIGludm9rZSB0aGUgdXNlci1nZW5lcmF0ZWQg
c2Nyb2xsIHJvdXRpbmVzIAorICAgICAgICBzbyBpdHMgYmVoYXZpb3IgbWF0Y2hlcyBvdGhlciB1
c2VyLWluaXRpYXRlZCBzY3JvbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDk3NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGb3VyIG5ldyBsYXlvdXQgdGVzdHMgaGF2ZSBiZWVuIGFkZGVkIGFuZCB0
b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLmh0bWwgaGFzIGJlZW4KKyAgICAgICAgbW9kaWZpZWQg
dG8gZGVtb25zdHJhdGUgdGhhdCB0aGlzIHBhdGNoIGZpeGVzIHR3byBleGlzdGluZyBidWdzLiBT
ZWUgdGhlIGlubGluZQorICAgICAgICBjb21tZW50cyBiZWxvdyBmb3IgZGV0YWlscy4KKworICAg
ICAgICBCZWNhdXNlIEkgYW0gbm93IHVzaW5nIHRoZSBleGlzdGluZyB1c2VyLWdlbmVyYXRlZCBz
Y3JvbGwgbG9naWMsIHRoZSBkZWx0YSBmb3IgYSBzaW5nbGUKKyAgICAgICAgR2VzdHVyZVNjcm9s
bFVwZGF0ZSBldmVudCB3aWxsIG5vdCBiZSBwcm9wYWdhdGVkIHRvIHRoZSBwYXJlbnQgb2YgdGhl
IHRhcmdldGVkIG5vZGUKKyAgICAgICAgdW5sZXNzIHRoZSB0YXJnZXRlZCBub2RlIGhhcyBubyBy
ZW1haW5pbmcgc2Nyb2xsYWJsZSBhcmVhLiBTbyB0aGUgY2hhbmdlcyB0byB0aGUKKyAgICAgICAg
ZXhpc3RpbmcgbGF5b3V0IHRlc3RzIGhhdmUgYmVlbiBtYWRlIHRvIGVuc3VyZSB0aGF0IHRoZSB0
YXJnZXRlZCBub2RlIGhhcyBiZWVuIGZ1bGx5CisgICAgICAgIHNjcm9sbGVkIGJlZm9yZSBzdWJz
ZXF1ZW50IEdlc3R1cmVTY3JvbGxVcGRhdGUgZXZlbnRzIHdpbGwgc2Nyb2xsIHRoZSBwYXJlbnQo
cykgb2YKKyAgICAgICAgdGhlIHRhcmdldGVkIG5vZGUuCisKKyAgICAgICAgSSBoYXZlIGFsc28g
cmVtb3ZlZCB0aGUgZnVuY3Rpb24gcmVjb3JkU2Nyb2xsKCkgZnJvbSB0aGUgZXhpc3RpbmcgbGF5
b3V0IHRlc3RzCisgICAgICAgIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBhbHJlYWR5IGV4aXN0cyBp
biB0aGUgaW5jbHVkZWQgZmlsZSByZXNvdXJjZXMvZ2VzdHVyZS1oZWxwZXJzLmpzLgorCisgICAg
ICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJv
ZHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0
dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1wcm9wYWdhdGVkLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJl
LW5vc2Nyb2xsLWJvZHktcHJvcGFnYXRlZC5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2UuaHRtbC4K
KyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3Jv
bGwtYm9keS14aGlkZGVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVu
dHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteGhpZGRlbi5odG1s
OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNo
LWdlc3R1cmUtc2Nyb2xsLXBhZ2UuaHRtbC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS15aGlkZGVuLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJl
LW5vc2Nyb2xsLWJvZHkteWhpZGRlbi5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2UuaHRtbC4KKyAg
ICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwt
Ym9keS5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0
dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2UuaHRtbC4KKyAgICAgICAgKiBmYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi1ub3QtcHJvcGFnYXRlZC5o
dG1sOgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1z
Y3JvbGwtZGl2LXByb3BhZ2F0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi10d2ljZS1wcm9wYWdhdGVkLmh0bWw6Cisg
ICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1p
ZnJhbWUtbm90LXByb3BhZ2F0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWlmcmFtZS1wcm9wYWdhdGVkLmh0bWw6CisgICAg
ICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdl
LW5vdC1wcm9wYWdhdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVy
ZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLXByb3BhZ2F0ZWQuaHRtbDoKKyAgICAgICAgKiBm
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2UuaHRtbDoK
KyAgICAgICAgICAgICAgSSBtb2RpZmllZCB0aGlzIGxheW91dCB0ZXN0IGluIG9yZGVyIHRvIGFk
ZCB0ZXN0IGNvdmVyYWdlIGZvciBhbm90aGVyIGJ1ZworICAgICAgICAgICAgICB3aGljaCBpcyBm
aXhlZCBieSB0aGlzIHBhdGNoOiBpZiB0aGUgaGl0IHRlc3QgcGVyZm9ybWVkIG9uIGEgR2VzdHVy
ZVNjcm9sbEJlZ2luCisgICAgICAgICAgICAgIGRvZXMgbm90IHRhcmdldCBhIHNwZWNpZmljIG5v
ZGUsIHRoZSBzdWJzZXF1ZW50IEdlc3R1cmVTY3JvbGxVcGRhdGUgZXZlbnRzIHNob3VsZAorICAg
ICAgICAgICAgICBzdGlsbCBhdHRlbXB0IHRvIHNjcm9sbCB0aGUgcGFnZSBpdHNlbGYuIFRoaXMg
aXMgY29uc2lzdGVudCB3aXRoIGhvdyBtb3VzZXdoZWVsCisgICAgICAgICAgICAgIGV2ZW50cyBi
ZWhhdmUuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNo
LWdlc3R1cmUtbm9zY3JvbGwtYm9keS1wcm9wYWdhdGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3Vj
aC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteGhpZGRlbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gt
Z2VzdHVyZS1ub3Njcm9sbC1ib2R5LXloaWRkZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgICAgICAgVGhlc2UgZm91ciBuZXcgbGF5b3V0IHRlc3RzIHZlcmlmeSB0aGF0IGEgbm9uLXNj
cm9sbGFibGUgYm9keSB3aWxsIG5vdCBzY3JvbGwsCisgICAgICAgICAgICAgIGFzIHJlcG9ydGVk
IGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkzMTYuCisKIDIw
MTMtMDItMjcgIFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIFRlc3QgZXhwZWN0YXRpb25zIHVwZGF0ZXMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9s
bC1ib2R5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1
cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
ZmJlM2QyY2MxZDA4MTgwN2YyYWU3OTU0ZjFlMjBlMGZmODk0NTQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5v
c2Nyb2xsLWJvZHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdHMgdGhh
dCBhIHBhZ2UgY2Fubm90IGJlIHNjcm9sbGVkIHdpdGggdG91Y2ggaWYgaXRzIGJvZHkgaGFzIHN0
eWxlIG92ZXJmbG93OmhpZGRlbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2dl
c3R1cmUgZXZlbnRzIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtIG9yIGdlc3R1cmUg
ZXZlbnQgc2Nyb2xsaW5nIG9mIGEgZG9jdW1lbnQgaXMgYnJva2VuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkt
cHJvcGFnYXRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1wcm9wYWdhdGVkLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jZTg3ZTQ4Njg0YTA1YzkxMDFjOTJkMmI3ODFjMWU4N2JjYzdlZTdlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90
b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktcHJvcGFnYXRlZC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMCBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgcGFnZSBjYW5ub3QgYmUgc2Nyb2xsZWQgdmVy
dGljYWxseSB3aXRoIHRvdWNoIGlmIGl0cyBib2R5IGhhcyBzdHlsZSBvdmVyZmxvdy15OmhpZGRl
biBhbmQgdGhlIHNjcm9sbCBldmVudCBpcyBwcm9wb2dhdGVkIGZyb20gYSBzY3JvbGxhYmxlIGNo
aWxkIGRpdi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2dlc3R1cmUgZXZlbnRz
IG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtIG9yIGdlc3R1cmUgZXZlbnQgc2Nyb2xs
aW5nIG9mIGEgZG9jdW1lbnQgaXMgYnJva2VuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktcHJvcGFnYXRlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJl
LW5vc2Nyb2xsLWJvZHktcHJvcGFnYXRlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4Yzg1NjdhYjkwNjNj
MTM3NTBiNzIxYmQ5N2JjZGUzYjNlOTFmNTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1w
cm9wYWdhdGVkLmh0bWwKQEAgLTAsMCArMSwxNTkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZ2VzdHVyZS1oZWxwZXJzLmpzIj48L3NjcmlwdD4K
KzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisjdG91Y2h0YXJnZXQgeworICB3aWR0aDogMTAwcHg7
CisgIGhlaWdodDogMTAwcHg7CisgIGJhY2tncm91bmQ6IHdoaXRlOworICBvdmVyZmxvdzpzY3Jv
bGw7Cit9CisKKzo6LXdlYmtpdC1zY3JvbGxiYXIgeworICAgIHdpZHRoOiAwcHg7CisgICAgaGVp
Z2h0OiAwcHg7Cit9CisKKyNncmVlbmJveCB7CisgIHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAx
MDBweDsKKyAgYmFja2dyb3VuZDogZ3JlZW47CisgIHBhZGRpbmc6IDBweDsKKyAgbWFyZ2luOiAw
cHg7Cit9CisKKyNyZWRib3ggeworICB3aWR0aDogMTAwcHg7CisgIGhlaWdodDogMTAwcHg7Cisg
IGJhY2tncm91bmQ6IHJlZDsKKyAgcGFkZGluZzogMHB4OworICBtYXJnaW46IDBweDsKK30KKwor
dGQgeworICBwYWRkaW5nOiAwcHg7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgc3R5bGU9
Im1hcmdpbjowOyBvdmVyZmxvdy15OmhpZGRlbjsiIG9ubG9hZD0icnVuVGVzdCgpOyI+CisKKzxk
aXYgaWQ9InRvdWNodGFyZ2V0Ij4KKyAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjBw
eCIgaWQ9InRhYmxlZm9vIj4KKyAgICA8dHI+CisgICAgICA8dGQ+PGRpdiBpZD0icmVkYm94Ij48
L2Rpdj48L3RkPgorICAgICAgPHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3RkPgorICAg
IDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3Rk
PgorICAgICAgPHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3RkPgorICAgIDwvdHI+Cisg
IDwvdGFibGU+Cis8L2Rpdj4KKworPHRhYmxlIGlkPSJ0YWJsZV90b19maWxsIj4KKyAgICA8dHI+
PHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3RkPjwvdHI+CisgICAgPHRyPjx0ZD48ZGl2
IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+PC90cj4KKzwvdGFibGU+CisKKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CisKK3ZhciBleHBlY3RlZEdlc3R1cmVzVG90YWwgPSAyOwordmFyIGdlc3R1
cmVzT2NjdXJyZWQgPSAwOwordmFyIHNjcm9sbEFtb3VudFggPSBbJzAnLCAnMCddOwordmFyIHNj
cm9sbEFtb3VudFkgPSBbJzAnLCAnMCddOwordmFyIHdoZWVsRXZlbnRzT2NjdXJyZWQgPSAwOwor
dmFyIGV4cGVjdGVkV2hlZWxFdmVudHNPY2N1cnJlZCA9IFsnMCcsICcwJ107Cit2YXIgc2Nyb2xs
RXZlbnRzT2NjdXJyZWQgPSAwOwordmFyIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAn
MCc7Cit2YXIgc2Nyb2xsZWRFbGVtZW50ID0gJ2RvY3VtZW50LmJvZHknCisKKy8vIEFsd2F5cyBj
b25zdHJ1Y3QgYSBwYWdlIGxhcmdlciB0aGFuIHRoZSB2ZXJ0aWNhbCBoZWlnaHQgb2YgdGhlIHdp
bmRvdy4KK2Z1bmN0aW9uIGJ1aWxkUGFnZSgpCit7CisgICAgdmFyIHRhYmxlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3RhYmxlX3RvX2ZpbGwnKTsKKyAgICB2YXIgdGFyZ2V0SGVpZ2h0ID0g
ZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7CisgICAgdmFyIGNlbGxQYWlySGVpZ2h0ID0gdGFi
bGUub2Zmc2V0SGVpZ2h0OworICAgIHZhciBudW1iZXJPZlJlcHMgPSB0YXJnZXRIZWlnaHQgLyBj
ZWxsUGFpckhlaWdodCAqIDI7CisgICAgdmFyIGk7CisgICAgZm9yIChpID0gMDsgaSA8IG51bWJl
ck9mUmVwczsgaSsrKSB7CisgICAgICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
dHInKTsKKyAgICAgICAgcC5pbm5lckhUTUwgPSAnPHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rp
dj48L3RkPic7CisgICAgICAgIHRhYmxlLmFwcGVuZENoaWxkKHApOworICAgICAgICB2YXIgcCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CisgICAgICAgIHAuaW5uZXJIVE1MID0gJzx0
ZD48ZGl2IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+JzsKKyAgICAgICAgdGFibGUuYXBwZW5kQ2hp
bGQocCk7CisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHJl
Y29yZFNjcm9sbCk7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNld2hlZWwiLCBy
ZWNvcmRXaGVlbCk7Cit9CisKK2Z1bmN0aW9uIGZpcnN0R2VzdHVyZVNjcm9sbCgpCit7CisgICAg
ZGVidWcoImZpcnN0IGdlc3R1cmUiKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsQmVn
aW4oOTUsIDEyKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC0xMDAp
OworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTEwKTsKKyAgICBldmVu
dFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOworCisgICAgLy8gV2FpdCBmb3IgbGF5b3V0
LgorICAgIGNoZWNrU2Nyb2xsT2Zmc2V0KCk7Cit9CisKK2Z1bmN0aW9uIHNlY29uZEdlc3R1cmVT
Y3JvbGwoKQoreworICAgIGRlYnVnKCJzZWNvbmQgZ2VzdHVyZSIpOworICAgIGV2ZW50U2VuZGVy
Lmdlc3R1cmVTY3JvbGxCZWdpbigxMiwgOTcpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3Jv
bGxVcGRhdGUoMCwgLTk1KTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAs
IC0yMDApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CisKKyAgICAv
LyBXYWl0IGZvciBsYXlvdXQuCisgICAgY2hlY2tTY3JvbGxPZmZzZXQoKTsKKworICAgIC8vIElu
IHRoaXMgdGVzdCB3ZSBkbyBub3QgZXhwZWN0IGFueSBzY3JvbGwgZXZlbnRzIHRvCisgICAgLy8g
YmUgcmVjZWl2ZWQgYnkgdGhlIGV2ZW50IGxpc3RlbmVyLCBzbyB3ZSBzaWduYWwKKyAgICAvLyB0
aGUgZW5kIG9mIHRoZSB0ZXN0IGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBpbnN0ZWFkCisgICAg
Ly8gb2YgcmVseWluZyBvbiByZWNvcmRTY3JvbGwoKSB0byBkbyBpdC4KKyAgICBmaW5pc2hUZXN0
KCk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgYnVpbGRQYWdlKCk7CisgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBkZXNjcmlwdGlvbignVGhpcyB0ZXN0
cyB0aGF0IGEgcGFnZSBjYW5ub3QgYmUgc2Nyb2xsZWQgdmVydGljYWxseSB3aXRoIHRvdWNoIGlm
IGl0cyBib2R5IGhhcyBzdHlsZSBvdmVyZmxvdy15OmhpZGRlbiAnICsKKyAgICAgICAgICAgICAg
ICAgICAgJ2FuZCB0aGUgc2Nyb2xsIGV2ZW50IGlzIHByb3BvZ2F0ZWQgZnJvbSBhIHNjcm9sbGFi
bGUgY2hpbGQgZGl2LicpOworCisgICAgICAgIGlmIChjaGVja1Rlc3REZXBlbmRlbmNpZXMoKSkK
KyAgICAgICAgICAgIGZpcnN0R2VzdHVyZVNjcm9sbCgpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBleGl0SWZOZWNlc3NhcnkoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygiVGhp
cyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlLiAgVG91Y2ggc2Nyb2xsIHRoZSByZWQgcmVj
dCB0byBsb2cuIik7CisgICAgfQorfQorCitmdW5jdGlvbiBmaW5pc2hUZXN0KCkKK3sKKyAgICBp
ZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGlmIChnZXN0dXJlc09jY3VycmVkID09
IGV4cGVjdGVkR2VzdHVyZXNUb3RhbCkgeworICAgICAgICAgICAgc2hvdWxkQmUoJ3Njcm9sbEV2
ZW50c09jY3VycmVkJywgZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCk7CisgICAgICAgICAg
ICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgICAgICAgICAgaXNTdWNjZXNzZnVsbHlQ
YXJzZWQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteGhpZGRlbi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdl
c3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Yzlh
YTNiYTkwYjhiNTU3MmFiMGFhYzZhNGIxNGZjNTNhOTczNjM2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Ny
b2xsLWJvZHkteGhpZGRlbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0
cyB0aGF0IGEgcGFnZSBjYW5ub3QgYmUgc2Nyb2xsZWQgaG9yaXpvbnRhbGx5IHdpdGggdG91Y2gg
KGJ1dCBjYW4gc3RpbGwgYmUgc2Nyb2xsZWQgdmVydGljYWxseSkgaWYgaXRzIGJvZHkgaGFzIHN0
eWxlIG92ZXJmbG93LXg6aGlkZGVuLiBUaGUgc2Nyb2xsIGV2ZW50cyBpbiB0aGlzIHRlc3QgaGF2
ZSBib3RoIGFuIHggYW5kIHkgY29tcG9uZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworZ2VzdHVyZSBldmVudHMgbm90IGltcGxlbWVudGVkIG9uIHRoaXMgcGxhdGZvcm0gb3Ig
Z2VzdHVyZSBldmVudCBzY3JvbGxpbmcgb2YgYSBkb2N1bWVudCBpcyBicm9rZW4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3Jv
bGwtYm9keS14aGlkZGVuLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0
dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTdjN2FiNGRiYTdkYzZmOTFkM2MzNjU1ZjhlOTZmNTlmN2FhZGU1MwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1u
b3Njcm9sbC1ib2R5LXhoaWRkZW4uaHRtbApAQCAtMCwwICsxLDE0OSBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9nZXN0dXJlLWhlbHBlcnMuanMi
Pjwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyN0b3VjaHRhcmdldCB7CisgIHdp
ZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAgYmFja2dyb3VuZDogd2hpdGU7CisgIG92
ZXJmbG93OmhpZGRlbjsKK30KKworOjotd2Via2l0LXNjcm9sbGJhciB7CisgICAgd2lkdGg6IDBw
eDsKKyAgICBoZWlnaHQ6IDBweDsKK30KKworI2dyZWVuYm94IHsKKyAgd2lkdGg6IDEwMHB4Owor
ICBoZWlnaHQ6IDEwMHB4OworICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgcGFkZGluZzogMHB4Owor
ICBtYXJnaW46IDBweDsKK30KKworI3JlZGJveCB7CisgIHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0
OiAxMDBweDsKKyAgYmFja2dyb3VuZDogcmVkOworICBwYWRkaW5nOiAwcHg7CisgIG1hcmdpbjog
MHB4OworfQorCit0ZCB7CisgIHBhZGRpbmc6IDBweDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keSBzdHlsZT0ibWFyZ2luOjA7IG92ZXJmbG93LXg6aGlkZGVuOyIgb25sb2FkPSJydW5UZXN0
KCk7Ij4KKworPHRhYmxlIGlkPSJob3Jpem9udGFsX3RhYmxlX3RvX2ZpbGwiPgorICA8dHIgaWQ9
ImZpcnN0cm93Ij4KKyAgICA8dGQ+PGRpdiBpZD0icmVkYm94Ij48L2Rpdj48L3RkPgorICAgIDx0
ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD4KKyAgPC90cj4KKzwvdGFibGU+CisKKzx0
YWJsZSBpZD0idmVydGljYWxfdGFibGVfdG9fZmlsbCI+CisgICAgPHRyPjx0ZD48ZGl2IGlkPSJn
cmVlbmJveCI+PC9kaXY+PC90ZD48L3RyPgorICAgIDx0cj48dGQ+PGRpdiBpZD0icmVkYm94Ij48
L2Rpdj48L3RkPjwvdHI+Cis8L3RhYmxlPgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgor
Cit2YXIgZXhwZWN0ZWRHZXN0dXJlc1RvdGFsID0gMjsKK3ZhciBnZXN0dXJlc09jY3VycmVkID0g
MDsKK3ZhciBzY3JvbGxBbW91bnRYID0gWycwJywgJzAnXTsKK3ZhciBzY3JvbGxBbW91bnRZID0g
WycxMTAnLCAnMjA1J107Cit2YXIgd2hlZWxFdmVudHNPY2N1cnJlZCA9IDA7Cit2YXIgZXhwZWN0
ZWRXaGVlbEV2ZW50c09jY3VycmVkID0gWycwJywgJzAnXTsKK3ZhciBzY3JvbGxFdmVudHNPY2N1
cnJlZCA9IDA7Cit2YXIgZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCA9ICcxJzsKK3ZhciBz
Y3JvbGxlZEVsZW1lbnQgPSAnZG9jdW1lbnQuYm9keScKKworLy8gQWx3YXlzIGNvbnN0cnVjdCBh
IHBhZ2UgbGFyZ2VyIHRoYW4gdGhlIHZlcnRpY2FsIGhlaWdodCBvZiB0aGUgd2luZG93LgorZnVu
Y3Rpb24gYnVpbGRQYWdlKCkKK3sKKyAgICAvLyBidWlsZCB2ZXJ0aWNhbCB0YWJsZQorICAgIHZh
ciB0YWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2ZXJ0aWNhbF90YWJsZV90b19maWxs
Jyk7CisgICAgdmFyIHRhcmdldEhlaWdodCA9IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0Owor
ICAgIHZhciBjZWxsUGFpckhlaWdodCA9IHRhYmxlLm9mZnNldEhlaWdodDsKKyAgICB2YXIgbnVt
YmVyT2ZSZXBzID0gdGFyZ2V0SGVpZ2h0IC8gY2VsbFBhaXJIZWlnaHQgKiAyOworICAgIHZhciBp
OworICAgIGZvciAoaSA9IDA7IGkgPCBudW1iZXJPZlJlcHM7IGkrKykgeworICAgICAgICB2YXIg
cCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CisgICAgICAgIHAuaW5uZXJIVE1MID0g
Jzx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD4nOworICAgICAgICB0YWJsZS5hcHBl
bmRDaGlsZChwKTsKKyAgICAgICAgdmFyIHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicp
OworICAgICAgICBwLmlubmVySFRNTCA9ICc8dGQ+PGRpdiBpZD0icmVkYm94Ij48L2Rpdj48L3Rk
Pic7CisgICAgICAgIHRhYmxlLmFwcGVuZENoaWxkKHApOworICAgIH0KKworICAgIC8vIGJ1aWxk
IGhvcml6b250YWwgdGFibGUKKyAgICB2YXIgaG9yaXpvbnRhbFRhYmxlID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2hvcml6b250YWxfdGFibGVfdG9fZmlsbCcpOworICAgIHZhciB0YWJsZVJv
dyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaXJzdHJvdycpOworICAgIHZhciB0YXJnZXRX
aWR0aCA9IGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGg7CisgICAgdmFyIGNlbGxQYWlyV2lkdGgg
PSBob3Jpem9udGFsVGFibGUub2Zmc2V0V2lkdGg7CisgICAgbnVtYmVyT2ZSZXBzID0gdGFyZ2V0
V2lkdGggLyBjZWxsUGFpcldpZHRoICogMjsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtYmVyT2ZS
ZXBzOyBpKyspIHsKKyAgICAgICAgdmFyIHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcp
OworICAgICAgICBwLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJyZWRib3giPjwvZGl2Pic7CisgICAg
ICAgIHRhYmxlUm93LmFwcGVuZENoaWxkKHApOworICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3RkJyk7CisgICAgICAgIHAuaW5uZXJIVE1MID0gJzxkaXYgaWQ9ImdyZWVu
Ym94Ij48L2Rpdj4nOworICAgICAgICB0YWJsZVJvdy5hcHBlbmRDaGlsZChwKTsKKyAgICB9CisK
KyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgcmVjb3JkU2Nyb2xsKTsKKyAg
ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V3aGVlbCIsIHJlY29yZFdoZWVsKTsKK30K
KworZnVuY3Rpb24gZmlyc3RHZXN0dXJlU2Nyb2xsKCkKK3sKKyAgICBkZWJ1ZygiZmlyc3QgZ2Vz
dHVyZSIpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdpbig5NSwgMTIpOworICAg
IGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoLTU1LCAtMTEwKTsKKyAgICBldmVudFNl
bmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOworCisgICAgLy8gV2FpdCBmb3IgbGF5b3V0Lgor
ICAgIGNoZWNrU2Nyb2xsT2Zmc2V0KCk7Cit9CisKK2Z1bmN0aW9uIHNlY29uZEdlc3R1cmVTY3Jv
bGwoKQoreworICAgIGRlYnVnKCJzZWNvbmQgZ2VzdHVyZSIpOworICAgIGV2ZW50U2VuZGVyLmdl
c3R1cmVTY3JvbGxCZWdpbigxMiwgOTcpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxV
cGRhdGUoLTQyLCAtOTUpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7
CisKKyAgICAvLyBXYWl0IGZvciBsYXlvdXQuCisgICAgY2hlY2tTY3JvbGxPZmZzZXQoKTsKK30K
KworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBidWlsZFBhZ2UoKTsKKyAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHRoYXQg
YSBwYWdlIGNhbm5vdCBiZSBzY3JvbGxlZCBob3Jpem9udGFsbHkgd2l0aCB0b3VjaCAnICsKKyAg
ICAgICAgICAgICAgICAgICAgJyhidXQgY2FuIHN0aWxsIGJlIHNjcm9sbGVkIHZlcnRpY2FsbHkp
IGlmIGl0cyBib2R5IGhhcyBzdHlsZSBvdmVyZmxvdy14OmhpZGRlbi4gJyArCisgICAgICAgICAg
ICAgICAgICAgICdUaGUgc2Nyb2xsIGV2ZW50cyBpbiB0aGlzIHRlc3QgaGF2ZSBib3RoIGFuIHgg
YW5kIHkgY29tcG9uZW50LicpOworCisgICAgICAgIGlmIChjaGVja1Rlc3REZXBlbmRlbmNpZXMo
KSkKKyAgICAgICAgICAgIGZpcnN0R2VzdHVyZVNjcm9sbCgpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBleGl0SWZOZWNlc3NhcnkoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1Zygi
VGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlLiAgVG91Y2ggc2Nyb2xsIHRoZSByZWQg
cmVjdCB0byBsb2cuIik7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdl
c3R1cmUtbm9zY3JvbGwtYm9keS15aGlkZGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXloaWRk
ZW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ODkyYmEyOGZiNDZiMmYwMTdiZGFkZThjOTg2
NzdmYjc1M2UxN2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS15aGlkZGVuLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3RzIHRoYXQgYSBwYWdlIGNhbm5vdCBiZSBz
Y3JvbGxlZCB2ZXJ0aWNhbGx5IHdpdGggdG91Y2ggKGJ1dCBjYW4gc3RpbGwgYmUgc2Nyb2xsZWQg
aG9yaXpvbnRhbGx5KSBpZiBpdHMgYm9keSBoYXMgc3R5bGUgb3ZlcmZsb3cteTpoaWRkZW4uIFRo
ZSBzY3JvbGwgZXZlbnRzIGluIHRoaXMgdGVzdCBoYXZlIGJvdGggYW4geCBhbmQgeSBjb21wb25l
bnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitnZXN0dXJlIGV2ZW50cyBub3Qg
aW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybSBvciBnZXN0dXJlIGV2ZW50IHNjcm9sbGluZyBv
ZiBhIGRvY3VtZW50IGlzIGJyb2tlbgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Rv
dWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXloaWRkZW4uaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9s
bC1ib2R5LXloaWRkZW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTZlODg3MDBhNmQ4M2U0Mzg5MWNjMDQz
MTc0MDE0ODM4YTU0ZTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteWhpZGRlbi5odG1s
CkBAIC0wLDAgKzEsMTQ5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2dlc3R1cmUtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiPgorI3RvdWNodGFyZ2V0IHsKKyAgd2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDEw
MHB4OworICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgb3ZlcmZsb3c6aGlkZGVuOworfQorCis6Oi13
ZWJraXQtc2Nyb2xsYmFyIHsKKyAgICB3aWR0aDogMHB4OworICAgIGhlaWdodDogMHB4OworfQor
CisjZ3JlZW5ib3ggeworICB3aWR0aDogMTAwcHg7CisgIGhlaWdodDogMTAwcHg7CisgIGJhY2tn
cm91bmQ6IGdyZWVuOworICBwYWRkaW5nOiAwcHg7CisgIG1hcmdpbjogMHB4OworfQorCisjcmVk
Ym94IHsKKyAgd2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4OworICBiYWNrZ3JvdW5kOiBy
ZWQ7CisgIHBhZGRpbmc6IDBweDsKKyAgbWFyZ2luOiAwcHg7Cit9CisKK3RkIHsKKyAgcGFkZGlu
ZzogMHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IHN0eWxlPSJtYXJnaW46MDsgb3Zl
cmZsb3cteTpoaWRkZW47IiBvbmxvYWQ9InJ1blRlc3QoKTsiPgorCis8dGFibGUgaWQ9Imhvcml6
b250YWxfdGFibGVfdG9fZmlsbCI+CisgIDx0ciBpZD0iZmlyc3Ryb3ciPgorICAgIDx0ZD48ZGl2
IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+CisgICAgPHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rp
dj48L3RkPgorICA8L3RyPgorPC90YWJsZT4KKworPHRhYmxlIGlkPSJ2ZXJ0aWNhbF90YWJsZV90
b19maWxsIj4KKyAgICA8dHI+PHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3RkPjwvdHI+
CisgICAgPHRyPjx0ZD48ZGl2IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+PC90cj4KKzwvdGFibGU+
CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK3ZhciBleHBlY3RlZEdlc3R1cmVzVG90
YWwgPSAyOwordmFyIGdlc3R1cmVzT2NjdXJyZWQgPSAwOwordmFyIHNjcm9sbEFtb3VudFggPSBb
JzU1JywgJzk3J107Cit2YXIgc2Nyb2xsQW1vdW50WSA9IFsnMCcsICcwJ107Cit2YXIgd2hlZWxF
dmVudHNPY2N1cnJlZCA9IDA7Cit2YXIgZXhwZWN0ZWRXaGVlbEV2ZW50c09jY3VycmVkID0gWycw
JywgJzAnXTsKK3ZhciBzY3JvbGxFdmVudHNPY2N1cnJlZCA9IDA7Cit2YXIgZXhwZWN0ZWRTY3Jv
bGxFdmVudHNPY2N1cnJlZCA9ICcxJzsKK3ZhciBzY3JvbGxlZEVsZW1lbnQgPSAnZG9jdW1lbnQu
Ym9keScKKworLy8gQWx3YXlzIGNvbnN0cnVjdCBhIHBhZ2UgbGFyZ2VyIHRoYW4gdGhlIHZlcnRp
Y2FsIGhlaWdodCBvZiB0aGUgd2luZG93LgorZnVuY3Rpb24gYnVpbGRQYWdlKCkKK3sKKyAgICAv
LyBidWlsZCB2ZXJ0aWNhbCB0YWJsZQorICAgIHZhciB0YWJsZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd2ZXJ0aWNhbF90YWJsZV90b19maWxsJyk7CisgICAgdmFyIHRhcmdldEhlaWdodCA9
IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OworICAgIHZhciBjZWxsUGFpckhlaWdodCA9IHRh
YmxlLm9mZnNldEhlaWdodDsKKyAgICB2YXIgbnVtYmVyT2ZSZXBzID0gdGFyZ2V0SGVpZ2h0IC8g
Y2VsbFBhaXJIZWlnaHQgKiAyOworICAgIHZhciBpOworICAgIGZvciAoaSA9IDA7IGkgPCBudW1i
ZXJPZlJlcHM7IGkrKykgeworICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3RyJyk7CisgICAgICAgIHAuaW5uZXJIVE1MID0gJzx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9k
aXY+PC90ZD4nOworICAgICAgICB0YWJsZS5hcHBlbmRDaGlsZChwKTsKKyAgICAgICAgdmFyIHAg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOworICAgICAgICBwLmlubmVySFRNTCA9ICc8
dGQ+PGRpdiBpZD0icmVkYm94Ij48L2Rpdj48L3RkPic7CisgICAgICAgIHRhYmxlLmFwcGVuZENo
aWxkKHApOworICAgIH0KKworICAgIC8vIGJ1aWxkIGhvcml6b250YWwgdGFibGUKKyAgICB2YXIg
aG9yaXpvbnRhbFRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hvcml6b250YWxfdGFi
bGVfdG9fZmlsbCcpOworICAgIHZhciB0YWJsZVJvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdmaXJzdHJvdycpOworICAgIHZhciB0YXJnZXRXaWR0aCA9IGRvY3VtZW50LmJvZHkub2Zmc2V0
V2lkdGg7CisgICAgdmFyIGNlbGxQYWlyV2lkdGggPSBob3Jpem9udGFsVGFibGUub2Zmc2V0V2lk
dGg7CisgICAgbnVtYmVyT2ZSZXBzID0gdGFyZ2V0V2lkdGggLyBjZWxsUGFpcldpZHRoICogMjsK
KyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtYmVyT2ZSZXBzOyBpKyspIHsKKyAgICAgICAgdmFyIHAg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOworICAgICAgICBwLmlubmVySFRNTCA9ICc8
ZGl2IGlkPSJyZWRib3giPjwvZGl2Pic7CisgICAgICAgIHRhYmxlUm93LmFwcGVuZENoaWxkKHAp
OworICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CisgICAgICAg
IHAuaW5uZXJIVE1MID0gJzxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj4nOworICAgICAgICB0YWJs
ZVJvdy5hcHBlbmRDaGlsZChwKTsKKyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigic2Nyb2xsIiwgcmVjb3JkU2Nyb2xsKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2V3aGVlbCIsIHJlY29yZFdoZWVsKTsKK30KKworZnVuY3Rpb24gZmlyc3RHZXN0dXJlU2Ny
b2xsKCkKK3sKKyAgICBkZWJ1ZygiZmlyc3QgZ2VzdHVyZSIpOworICAgIGV2ZW50U2VuZGVyLmdl
c3R1cmVTY3JvbGxCZWdpbigxOTUsIDEyKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xs
VXBkYXRlKC01NSwgLTExMCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEVuZCgwLCAw
KTsKKworICAgIC8vIFdhaXQgZm9yIGxheW91dC4KKyAgICBjaGVja1Njcm9sbE9mZnNldCgpOwor
fQorCitmdW5jdGlvbiBzZWNvbmRHZXN0dXJlU2Nyb2xsKCkKK3sKKyAgICBkZWJ1Zygic2Vjb25k
IGdlc3R1cmUiKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsQmVnaW4oMTIwLCAyNTUp
OworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoLTQyLCAtOTUpOworICAgIGV2
ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CisKKyAgICAvLyBXYWl0IGZvciBsYXlv
dXQuCisgICAgY2hlY2tTY3JvbGxPZmZzZXQoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiBydW5UZXN0KCkK
K3sKKyAgICBidWlsZFBhZ2UoKTsKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgIGRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHRoYXQgYSBwYWdlIGNhbm5vdCBiZSBzY3JvbGxl
ZCB2ZXJ0aWNhbGx5IHdpdGggdG91Y2ggJyArCisgICAgICAgICAgICAgICAgICAgICcoYnV0IGNh
biBzdGlsbCBiZSBzY3JvbGxlZCBob3Jpem9udGFsbHkpIGlmIGl0cyBib2R5IGhhcyBzdHlsZSBv
dmVyZmxvdy15OmhpZGRlbi4gJyArCisgICAgICAgICAgICAgICAgICAgICdUaGUgc2Nyb2xsIGV2
ZW50cyBpbiB0aGlzIHRlc3QgaGF2ZSBib3RoIGFuIHggYW5kIHkgY29tcG9uZW50LicpOworCisg
ICAgICAgIGlmIChjaGVja1Rlc3REZXBlbmRlbmNpZXMoKSkKKyAgICAgICAgICAgIGZpcnN0R2Vz
dHVyZVNjcm9sbCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBleGl0SWZOZWNlc3Nhcnko
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBS
ZW5kZXJUcmVlLiAgVG91Y2ggc2Nyb2xsIHRoZSByZWQgcmVjdCB0byBsb2cuIik7CisgICAgfQor
fQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5v
c2Nyb2xsLWJvZHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTM2OWI5MGVmYTAwNmJkYmY3YTE3ZTkyODI4
NTM4NzQ3MmZkM2FjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkuaHRtbApAQCAtMCwwICsx
LDE2NiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9nZXN0dXJlLWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4K
KyN0b3VjaHRhcmdldCB7CisgIHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAgYmFj
a2dyb3VuZDogd2hpdGU7CisgIG92ZXJmbG93OmhpZGRlbjsKK30KKworOjotd2Via2l0LXNjcm9s
bGJhciB7CisgICAgd2lkdGg6IDBweDsKKyAgICBoZWlnaHQ6IDBweDsKK30KKworI2dyZWVuYm94
IHsKKyAgd2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4OworICBiYWNrZ3JvdW5kOiBncmVl
bjsKKyAgcGFkZGluZzogMHB4OworICBtYXJnaW46IDBweDsKK30KKworI3JlZGJveCB7CisgIHdp
ZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAgYmFja2dyb3VuZDogcmVkOworICBwYWRk
aW5nOiAwcHg7CisgIG1hcmdpbjogMHB4OworfQorCit0ZCB7CisgIHBhZGRpbmc6IDBweDsKK30K
Kzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0ibWFyZ2luOjA7IG92ZXJmbG93OmhpZGRl
bjsiIG9ubG9hZD0icnVuVGVzdCgpOyI+CisKKzx0YWJsZSBpZD0iaG9yaXpvbnRhbF90YWJsZV90
b19maWxsIj4KKyAgPHRyIGlkPSJmaXJzdHJvdyI+CisgICAgPHRkPjxkaXYgaWQ9InJlZGJveCI+
PC9kaXY+PC90ZD4KKyAgICA8dGQ+PGRpdiBpZD0iZ3JlZW5ib3giPjwvZGl2PjwvdGQ+CisgIDwv
dHI+Cis8L3RhYmxlPgorCis8dGFibGUgaWQ9InZlcnRpY2FsX3RhYmxlX3RvX2ZpbGwiPgorICAg
IDx0cj48dGQ+PGRpdiBpZD0iZ3JlZW5ib3giPjwvZGl2PjwvdGQ+PC90cj4KKyAgICA8dHI+PHRk
PjxkaXYgaWQ9InJlZGJveCI+PC9kaXY+PC90ZD48L3RyPgorPC90YWJsZT4KKworPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KKwordmFyIGV4cGVjdGVkR2VzdHVyZXNUb3RhbCA9IDI7Cit2YXIg
Z2VzdHVyZXNPY2N1cnJlZCA9IDA7Cit2YXIgc2Nyb2xsQW1vdW50WCA9IFsnMCcsICcwJ107Cit2
YXIgc2Nyb2xsQW1vdW50WSA9IFsnMCcsICcwJ107Cit2YXIgd2hlZWxFdmVudHNPY2N1cnJlZCA9
IDA7Cit2YXIgZXhwZWN0ZWRXaGVlbEV2ZW50c09jY3VycmVkID0gWycwJywgJzAnXTsKK3ZhciBz
Y3JvbGxFdmVudHNPY2N1cnJlZCA9IDA7Cit2YXIgZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1cnJl
ZCA9ICcwJzsKK3ZhciBzY3JvbGxlZEVsZW1lbnQgPSAnZG9jdW1lbnQuYm9keScKKworLy8gQWx3
YXlzIGNvbnN0cnVjdCBhIHBhZ2UgbGFyZ2VyIHRoYW4gdGhlIHZlcnRpY2FsIGhlaWdodCBvZiB0
aGUgd2luZG93LgorZnVuY3Rpb24gYnVpbGRQYWdlKCkKK3sKKyAgICAvLyBidWlsZCB2ZXJ0aWNh
bCB0YWJsZQorICAgIHZhciB0YWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2ZXJ0aWNh
bF90YWJsZV90b19maWxsJyk7CisgICAgdmFyIHRhcmdldEhlaWdodCA9IGRvY3VtZW50LmJvZHku
b2Zmc2V0SGVpZ2h0OworICAgIHZhciBjZWxsUGFpckhlaWdodCA9IHRhYmxlLm9mZnNldEhlaWdo
dDsKKyAgICB2YXIgbnVtYmVyT2ZSZXBzID0gdGFyZ2V0SGVpZ2h0IC8gY2VsbFBhaXJIZWlnaHQg
KiAyOworICAgIHZhciBpOworICAgIGZvciAoaSA9IDA7IGkgPCBudW1iZXJPZlJlcHM7IGkrKykg
eworICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CisgICAgICAg
IHAuaW5uZXJIVE1MID0gJzx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD4nOworICAg
ICAgICB0YWJsZS5hcHBlbmRDaGlsZChwKTsKKyAgICAgICAgdmFyIHAgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCd0cicpOworICAgICAgICBwLmlubmVySFRNTCA9ICc8dGQ+PGRpdiBpZD0icmVk
Ym94Ij48L2Rpdj48L3RkPic7CisgICAgICAgIHRhYmxlLmFwcGVuZENoaWxkKHApOworICAgIH0K
KworICAgIC8vIGJ1aWxkIGhvcml6b250YWwgdGFibGUKKyAgICB2YXIgaG9yaXpvbnRhbFRhYmxl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hvcml6b250YWxfdGFibGVfdG9fZmlsbCcpOwor
ICAgIHZhciB0YWJsZVJvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaXJzdHJvdycpOwor
ICAgIHZhciB0YXJnZXRXaWR0aCA9IGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGg7CisgICAgdmFy
IGNlbGxQYWlyV2lkdGggPSBob3Jpem9udGFsVGFibGUub2Zmc2V0V2lkdGg7CisgICAgbnVtYmVy
T2ZSZXBzID0gdGFyZ2V0V2lkdGggLyBjZWxsUGFpcldpZHRoICogMjsKKyAgICBmb3IgKGkgPSAw
OyBpIDwgbnVtYmVyT2ZSZXBzOyBpKyspIHsKKyAgICAgICAgdmFyIHAgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCd0ZCcpOworICAgICAgICBwLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJyZWRib3gi
PjwvZGl2Pic7CisgICAgICAgIHRhYmxlUm93LmFwcGVuZENoaWxkKHApOworICAgICAgICB2YXIg
cCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CisgICAgICAgIHAuaW5uZXJIVE1MID0g
JzxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj4nOworICAgICAgICB0YWJsZVJvdy5hcHBlbmRDaGls
ZChwKTsKKyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgcmVj
b3JkU2Nyb2xsKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V3aGVlbCIsIHJl
Y29yZFdoZWVsKTsKK30KKworZnVuY3Rpb24gZmlyc3RHZXN0dXJlU2Nyb2xsKCkKK3sKKyAgICBk
ZWJ1ZygiZmlyc3QgZ2VzdHVyZSIpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdp
big5NSwgMTIpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoLTU1LCAtMTEw
KTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOworCisgICAgLy8gV2Fp
dCBmb3IgbGF5b3V0LgorICAgIGNoZWNrU2Nyb2xsT2Zmc2V0KCk7Cit9CisKK2Z1bmN0aW9uIHNl
Y29uZEdlc3R1cmVTY3JvbGwoKQoreworICAgIGRlYnVnKCJzZWNvbmQgZ2VzdHVyZSIpOworICAg
IGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdpbigxMiwgOTcpOworICAgIGV2ZW50U2VuZGVy
Lmdlc3R1cmVTY3JvbGxVcGRhdGUoLTQyLCAtOTUpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVT
Y3JvbGxFbmQoMCwgMCk7CisKKyAgICAvLyBXYWl0IGZvciBsYXlvdXQuCisgICAgY2hlY2tTY3Jv
bGxPZmZzZXQoKTsKKworICAgIC8vIEluIHRoaXMgdGVzdCB3ZSBkbyBub3QgZXhwZWN0IGFueSBz
Y3JvbGwgZXZlbnRzIHRvCisgICAgLy8gYmUgcmVjZWl2ZWQgYnkgdGhlIGV2ZW50IGxpc3RlbmVy
LCBzbyB3ZSBzaWduYWwKKyAgICAvLyB0aGUgZW5kIG9mIHRoZSB0ZXN0IGJ5IGNhbGxpbmcgdGhp
cyBmdW5jdGlvbiBpbnN0ZWFkCisgICAgLy8gb2YgcmVseWluZyBvbiByZWNvcmRTY3JvbGwoKSB0
byBkbyBpdC4KKyAgICBmaW5pc2hUZXN0KCk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpCit7
CisgICAgYnVpbGRQYWdlKCk7CisgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICBkZXNjcmlwdGlvbignVGhpcyB0ZXN0cyB0aGF0IGEgcGFnZSBjYW5ub3QgYmUgc2Nyb2xsZWQg
d2l0aCB0b3VjaCBpZiBpdHMgYm9keSBoYXMgc3R5bGUgb3ZlcmZsb3c6aGlkZGVuLicpOworCisg
ICAgICAgIGlmIChjaGVja1Rlc3REZXBlbmRlbmNpZXMoKSkKKyAgICAgICAgICAgIGZpcnN0R2Vz
dHVyZVNjcm9sbCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBleGl0SWZOZWNlc3Nhcnko
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBS
ZW5kZXJUcmVlLiAgVG91Y2ggc2Nyb2xsIHRoZSByZWQgcmVjdCB0byBsb2cuIik7CisgICAgfQor
fQorCitmdW5jdGlvbiBmaW5pc2hUZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgIGlmIChnZXN0dXJlc09jY3VycmVkID09IGV4cGVjdGVkR2VzdHVyZXNUb3Rh
bCkgeworICAgICAgICAgICAgc2hvdWxkQmUoJ3Njcm9sbEV2ZW50c09jY3VycmVkJywgZXhwZWN0
ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCk7CisgICAgICAgICAgICBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworICAgICAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3Vj
aC1nZXN0dXJlLXNjcm9sbC1kaXYtbm90LXByb3BhZ2F0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZGl2LW5vdC1wcm9w
YWdhdGVkLmh0bWwKaW5kZXggMjgwMTQwOWQ3YjA0M2MyNDUwOWI2NTcxZGI5YzQ1Yjk2YjAxZGUx
ZC4uZDBjNWQ1MGNiNmM5OGJjYzBlOGRmZmI2YmY5Y2Q1Mjg3YmM0OWI1NyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9s
bC1kaXYtbm90LXByb3BhZ2F0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi1ub3QtcHJvcGFnYXRlZC5odG1s
CkBAIC05MiwyNSArOTIsNiBAQCB2YXIgc2Nyb2xsZWRFbGVtZW50ID0gJ21vdmVkYm94JwogdmFy
IHNjcm9sbEV2ZW50c09jY3VycmVkID0gMDsKIHZhciBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3Vy
cmVkID0gJzEnOwogCi0KLWZ1bmN0aW9uIHJlY29yZFNjcm9sbChldmVudCkgewotCWRlYnVnKCdz
Y3JvbGwgZXZlbnQgJyArIHNjcm9sbEV2ZW50c09jY3VycmVkICsgJys+ICcgKyBldmVudC50YXJn
ZXQpOwotCXNjcm9sbEV2ZW50c09jY3VycmVkKys7Ci0KLQlpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7Ci0JCS8vIEJlY2F1c2Ugc2Nyb2xsIGV2ZW50cyBhcnJpdmUgYXN5bmNocm9ub3VzbHksIG9u
bHkgb25lIHdpbGwgYXJyaXZlLgotCSAgICBpZiAoZ2VzdHVyZXNPY2N1cnJlZCA9PSBleHBlY3Rl
ZEdlc3R1cmVzVG90YWwpIHsKLQkJCXNob3VsZEJlKCdzY3JvbGxFdmVudHNPY2N1cnJlZCcsIGV4
cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQpOwotCSAgICAgICAgLy8gSWYgd2UndmUgZ290IGhl
cmUsIHdlJ3ZlIHBhc3NlZC4KLQkgICAgICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Ci0J
ICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotCSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotCSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotCQl9Ci0gICAg
fQotfQotCi0KIGZ1bmN0aW9uIGZpcnN0R2VzdHVyZVNjcm9sbCgpCiB7CiAgICAgZGVidWcoImZp
cnN0IGdlc3R1cmUiKTsKQEAgLTEyNiw3ICsxMDcsOCBAQCBmdW5jdGlvbiBzZWNvbmRHZXN0dXJl
U2Nyb2xsKCkKIHsKICAgICBkZWJ1Zygic2Vjb25kIGdlc3R1cmUiKTsKICAgICBldmVudFNlbmRl
ci5nZXN0dXJlU2Nyb2xsQmVnaW4oMTIsIDQwKTsKLSAgICBldmVudFNlbmRlci5nZXN0dXJlU2Ny
b2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9uKDAsIC02MCk7CisgICAgZXZlbnRTZW5kZXIuZ2Vz
dHVyZVNjcm9sbFVwZGF0ZVdpdGhvdXRQcm9wYWdhdGlvbigwLCAtNTApOworICAgIGV2ZW50U2Vu
ZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGVXaXRob3V0UHJvcGFnYXRpb24oMCwgLTEwKTsKICAgICBl
dmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOwogCiAgICAgLy8gV2FpdCBmb3IgbGF5
b3V0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90
b3VjaC1nZXN0dXJlLXNjcm9sbC1kaXYtcHJvcGFnYXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1kaXYtcHJvcGFnYXRl
ZC5odG1sCmluZGV4IDM0M2UxNWY1Y2UyOWIyZWNiNjlkMjkyMWQyZWZjNjMxNmE1YTFkZDQuLjk5
NzY5ODU0YWFjNThhNmNlNWYzNzU3OWNkYTg0ZjU3NDg1ZmQ2MzcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZGl2
LXByb3BhZ2F0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0
dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi1wcm9wYWdhdGVkLmh0bWwKQEAgLTkyLDI1ICs5
Miw2IEBAIHZhciBzY3JvbGxlZEVsZW1lbnQgPSAnbW92ZWRib3gnCiB2YXIgc2Nyb2xsRXZlbnRz
T2NjdXJyZWQgPSAwOwogdmFyIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAnMSc7CiAK
LQotZnVuY3Rpb24gcmVjb3JkU2Nyb2xsKGV2ZW50KSB7Ci0JZGVidWcoJ3Njcm9sbCBldmVudCAn
ICsgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgKyAnKz4gJyArIGV2ZW50LnRhcmdldCk7Ci0Jc2Nyb2xs
RXZlbnRzT2NjdXJyZWQrKzsKLQotCWlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLQkJLy8gQmVj
YXVzZSBzY3JvbGwgZXZlbnRzIGFycml2ZSBhc3luY2hyb25vdXNseSwgb25seSBvbmUgd2lsbCBh
cnJpdmUuCi0JICAgIGlmIChnZXN0dXJlc09jY3VycmVkID09IGV4cGVjdGVkR2VzdHVyZXNUb3Rh
bCkgewotCQkJc2hvdWxkQmUoJ3Njcm9sbEV2ZW50c09jY3VycmVkJywgZXhwZWN0ZWRTY3JvbGxF
dmVudHNPY2N1cnJlZCk7Ci0JICAgICAgICAvLyBJZiB3ZSd2ZSBnb3QgaGVyZSwgd2UndmUgcGFz
c2VkLgotCSAgICAgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKLQkgICAgICAgIGlzU3Vj
Y2Vzc2Z1bGx5UGFyc2VkKCk7Ci0JICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0JICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0JCX0KLSAgICB9Ci19Ci0KLQogZnVu
Y3Rpb24gZmlyc3RHZXN0dXJlU2Nyb2xsKCkKIHsKICAgICBkZWJ1ZygiZmlyc3QgZ2VzdHVyZSIp
OwpAQCAtMTI2LDcgKzEwNyw4IEBAIGZ1bmN0aW9uIHNlY29uZEdlc3R1cmVTY3JvbGwoKQogewog
ICAgIGRlYnVnKCJzZWNvbmQgZ2VzdHVyZSIpOwogICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3Jv
bGxCZWdpbigxMiwgNDApOwotICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwg
LTYwKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC01MCk7CisgICAg
ZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMTApOwogICAgIGV2ZW50U2VuZGVy
Lmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CiAKICAgICAvLyBXYWl0IGZvciBsYXlvdXQuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1
cmUtc2Nyb2xsLWRpdi10d2ljZS1wcm9wYWdhdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi10d2ljZS1wcm9wYWdh
dGVkLmh0bWwKaW5kZXggOGY2NTFkNDViY2M5YTA3MjA4ZTIzMGU0OTFhZWQ0OTAzMjQ2OTFmMC4u
MWI2ZTYxZWIzMzc5N2NiNTU2MTY0MjYzNGU4OGM1YTU4ZWIxZGM4NSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1k
aXYtdHdpY2UtcHJvcGFnYXRlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Rv
dWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZGl2LXR3aWNlLXByb3BhZ2F0ZWQuaHRt
bApAQCAtMTE2LDMwICsxMTYsMTIgQEAgdmFyIHNjcm9sbGVkRWxlbWVudCA9ICdtb3ZlZGJveCcK
IHZhciBzY3JvbGxFdmVudHNPY2N1cnJlZCA9IDA7CiB2YXIgZXhwZWN0ZWRTY3JvbGxFdmVudHNP
Y2N1cnJlZCA9ICcxJzsKIAotCi1mdW5jdGlvbiByZWNvcmRTY3JvbGwoZXZlbnQpIHsKLQlkZWJ1
Zygnc2Nyb2xsIGV2ZW50ICcgKyBzY3JvbGxFdmVudHNPY2N1cnJlZCArICcrPiAnICsgZXZlbnQu
dGFyZ2V0KTsKLQlzY3JvbGxFdmVudHNPY2N1cnJlZCsrOwotCi0JaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgewotCQkvLyBCZWNhdXNlIHNjcm9sbCBldmVudHMgYXJyaXZlIGFzeW5jaHJvbm91c2x5
LCBvbmx5IG9uZSB3aWxsIGFycml2ZS4KLQkgICAgaWYgKGdlc3R1cmVzT2NjdXJyZWQgPT0gZXhw
ZWN0ZWRHZXN0dXJlc1RvdGFsKSB7Ci0JCQlzaG91bGRCZSgnc2Nyb2xsRXZlbnRzT2NjdXJyZWQn
LCBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkKTsKLQkgICAgICAgIC8vIElmIHdlJ3ZlIGdv
dCBoZXJlLCB3ZSd2ZSBwYXNzZWQuCi0JICAgICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwotCSAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLQkgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLQkgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLQkJfQot
ICAgIH0KLX0KLQotCiBmdW5jdGlvbiBmaXJzdEdlc3R1cmVTY3JvbGwoKQogewogICAgIGRlYnVn
KCJmaXJzdCBnZXN0dXJlIik7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDEw
LCA3Mik7Ci0gICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMjMwKTsKKyAg
ICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC0yMDApOworICAgIGV2ZW50U2Vu
ZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTMwKTsKICAgICBldmVudFNlbmRlci5nZXN0dXJl
U2Nyb2xsRW5kKDAsIDApOwogCiAgICAgLy8gV2FpdCBmb3IgbGF5b3V0LgpAQCAtMTUwLDcgKzEz
Miw4IEBAIGZ1bmN0aW9uIHNlY29uZEdlc3R1cmVTY3JvbGwoKQogewogICAgIGRlYnVnKCJzZWNv
bmQgZ2VzdHVyZSIpOwogICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdpbigxMiwgNDAp
OwotICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTQ1KTsKKyAgICBldmVu
dFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC0yMCk7CisgICAgZXZlbnRTZW5kZXIuZ2Vz
dHVyZVNjcm9sbFVwZGF0ZSgwLCAtMjUpOwogICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxF
bmQoMCwgMCk7CiAKICAgICAvLyBXYWl0IGZvciBsYXlvdXQuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWlmcmFt
ZS1ub3QtcHJvcGFnYXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1pZnJhbWUtbm90LXByb3BhZ2F0ZWQuaHRtbAppbmRl
eCBhNmQ5ZjIyYzMwMDVhNDUzMjA1OGIzNjM5NjgzZjM3MmY3YmIwOWY3Li5hOTljMjY1NTc3OGVj
ZjRkYmY0MTIyOTEyMTk5YTcyNTU5ZTU3M2QwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWlmcmFtZS1ub3QtcHJv
cGFnYXRlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUv
dG91Y2gtZ2VzdHVyZS1zY3JvbGwtaWZyYW1lLW5vdC1wcm9wYWdhdGVkLmh0bWwKQEAgLTcxLDI1
ICs3MSw2IEBAIHZhciBzY3JvbGxlZEVsZW1lbnQgPSAnbW92ZWRib3gnCiB2YXIgc2Nyb2xsRXZl
bnRzT2NjdXJyZWQgPSAwOwogdmFyIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAnMSc7
CiAKLQotZnVuY3Rpb24gcmVjb3JkU2Nyb2xsKGV2ZW50KSB7Ci0JZGVidWcoJ3Njcm9sbCBldmVu
dCAnICsgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgKyAnKz4gJyArIGV2ZW50LnRhcmdldCk7Ci0Jc2Ny
b2xsRXZlbnRzT2NjdXJyZWQrKzsKLQotCWlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLQkJLy8g
QmVjYXVzZSBzY3JvbGwgZXZlbnRzIGFycml2ZSBhc3luY2hyb25vdXNseSwgb25seSBvbmUgd2ls
bCBhcnJpdmUuCi0JICAgIGlmIChnZXN0dXJlc09jY3VycmVkID09IGV4cGVjdGVkR2VzdHVyZXNU
b3RhbCkgewotCQkJc2hvdWxkQmUoJ3Njcm9sbEV2ZW50c09jY3VycmVkJywgZXhwZWN0ZWRTY3Jv
bGxFdmVudHNPY2N1cnJlZCk7Ci0JICAgICAgICAvLyBJZiB3ZSd2ZSBnb3QgaGVyZSwgd2UndmUg
cGFzc2VkLgotCSAgICAgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKLQkgICAgICAgIGlz
U3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0JICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0J
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0JCX0KLSAgICB9Ci19Ci0KLQog
ZnVuY3Rpb24gZmlyc3RHZXN0dXJlU2Nyb2xsKCkKIHsKICAgICBkZWJ1ZygiZmlyc3QgZ2VzdHVy
ZSIpOwpAQCAtMTA1LDcgKzg2LDggQEAgZnVuY3Rpb24gc2Vjb25kR2VzdHVyZVNjcm9sbCgpCiB7
CiAgICAgZGVidWcoInNlY29uZCBnZXN0dXJlIik7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNj
cm9sbEJlZ2luKDEyLCA0MCk7Ci0gICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZVdp
dGhvdXRQcm9wYWdhdGlvbigwLCAtMTAwKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xs
VXBkYXRlV2l0aG91dFByb3BhZ2F0aW9uKDAsIC0xMCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVy
ZVNjcm9sbFVwZGF0ZVdpdGhvdXRQcm9wYWdhdGlvbigwLCAtNTApOwogICAgIGV2ZW50U2VuZGVy
Lmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CiAKICAgICAvLyBXYWl0IGZvciBsYXlvdXQuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1
cmUtc2Nyb2xsLWlmcmFtZS1wcm9wYWdhdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWlmcmFtZS1wcm9wYWdhdGVkLmh0
bWwKaW5kZXggMWEzYjVhZDk4N2Q3Mjk3NTA2YjBhM2UzNzAzMzk1MWY5M2MyOWE1OC4uZDNjMGFm
NGM5YmE5MzVjYjZjODZlMDM0ZDU1NDk4ZDc0NjAzNDIyZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1pZnJhbWUt
cHJvcGFnYXRlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1
cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtaWZyYW1lLXByb3BhZ2F0ZWQuaHRtbApAQCAtNzEsMjUg
KzcxLDYgQEAgdmFyIHNjcm9sbGVkRWxlbWVudCA9ICdtb3ZlZGJveCcKIHZhciBzY3JvbGxFdmVu
dHNPY2N1cnJlZCA9IDA7CiB2YXIgZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCA9ICcxJzsK
IAotCi1mdW5jdGlvbiByZWNvcmRTY3JvbGwoZXZlbnQpIHsKLQlkZWJ1Zygnc2Nyb2xsIGV2ZW50
ICcgKyBzY3JvbGxFdmVudHNPY2N1cnJlZCArICcrPiAnICsgZXZlbnQudGFyZ2V0KTsKLQlzY3Jv
bGxFdmVudHNPY2N1cnJlZCsrOwotCi0JaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewotCQkvLyBC
ZWNhdXNlIHNjcm9sbCBldmVudHMgYXJyaXZlIGFzeW5jaHJvbm91c2x5LCBvbmx5IG9uZSB3aWxs
IGFycml2ZS4KLQkgICAgaWYgKGdlc3R1cmVzT2NjdXJyZWQgPT0gZXhwZWN0ZWRHZXN0dXJlc1Rv
dGFsKSB7Ci0JCQlzaG91bGRCZSgnc2Nyb2xsRXZlbnRzT2NjdXJyZWQnLCBleHBlY3RlZFNjcm9s
bEV2ZW50c09jY3VycmVkKTsKLQkgICAgICAgIC8vIElmIHdlJ3ZlIGdvdCBoZXJlLCB3ZSd2ZSBw
YXNzZWQuCi0JICAgICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwotCSAgICAgICAgaXNT
dWNjZXNzZnVsbHlQYXJzZWQoKTsKLQkgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLQkg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLQkJfQotICAgIH0KLX0KLQotCiBm
dW5jdGlvbiBmaXJzdEdlc3R1cmVTY3JvbGwoKQogewogICAgIGRlYnVnKCJmaXJzdCBnZXN0dXJl
Iik7CkBAIC0xMDUsNyArODYsOCBAQCBmdW5jdGlvbiBzZWNvbmRHZXN0dXJlU2Nyb2xsKCkKIHsK
ICAgICBkZWJ1Zygic2Vjb25kIGdlc3R1cmUiKTsKICAgICBldmVudFNlbmRlci5nZXN0dXJlU2Ny
b2xsQmVnaW4oMTIsIDQwKTsKLSAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAs
IC0xMDApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTEwKTsKKyAg
ICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC01MCk7CiAgICAgZXZlbnRTZW5k
ZXIuZ2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKIAogICAgIC8vIFdhaXQgZm9yIGxheW91dC4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2Vz
dHVyZS1zY3JvbGwtcGFnZS1ub3QtcHJvcGFnYXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLW5vdC1wcm9wYWdh
dGVkLmh0bWwKaW5kZXggYjM4NTI0NWZjMTljM2IzZDNiOTg5NTkwNDYxMGQ2MDRiYjI5ZjE2YS4u
NDZkODM2YzIwYzFkOTNiNTAxOGMyZjVlMzA2ZmFlNzYyNDhmMjYzOSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1w
YWdlLW5vdC1wcm9wYWdhdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91
Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLW5vdC1wcm9wYWdhdGVkLmh0bWwK
QEAgLTg2LDIzICs4Niw2IEBAIHZhciBzY3JvbGxlZEVsZW1lbnQgPSAnZG9jdW1lbnQuYm9keScK
IHZhciBzY3JvbGxFdmVudHNPY2N1cnJlZCA9IDA7CiB2YXIgZXhwZWN0ZWRTY3JvbGxFdmVudHNP
Y2N1cnJlZCA9ICcxJzsKIAotZnVuY3Rpb24gcmVjb3JkU2Nyb2xsKGV2ZW50KSB7Ci0JZGVidWco
J3Njcm9sbCBldmVudCAnICsgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgKyAnKz4gJyArIGV2ZW50LnRh
cmdldCk7Ci0Jc2Nyb2xsRXZlbnRzT2NjdXJyZWQrKzsKLQotCWlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKLQkJLy8gQmVjYXVzZSBzY3JvbGwgZXZlbnRzIGFycml2ZSBhc3luY2hyb25vdXNseSwg
b25seSBvbmUgd2lsbCBhcnJpdmUuCi0JICAgIGlmIChnZXN0dXJlc09jY3VycmVkID09IGV4cGVj
dGVkR2VzdHVyZXNUb3RhbCkgewotCQkJc2hvdWxkQmUoJ3Njcm9sbEV2ZW50c09jY3VycmVkJywg
ZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCk7Ci0JICAgICAgICAvLyBJZiB3ZSd2ZSBnb3Qg
aGVyZSwgd2UndmUgcGFzc2VkLgotCSAgICAgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
LQkgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0JICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0JICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0JCX0KLSAg
ICB9Ci19Ci0KIC8vIEFsd2F5cyBjb25zdHJ1Y3QgYSBwYWdlIGxhcmdlciB0aGFuIHRoZSB2ZXJ0
aWNhbCBoZWlnaHQgb2YgdGhlIHdpbmRvdy4KIGZ1bmN0aW9uIGJ1aWxkUGFnZSgpCiB7CkBAIC0x
MzYsNyArMTE5LDggQEAgZnVuY3Rpb24gc2Vjb25kR2VzdHVyZVNjcm9sbCgpCiB7CiAgICAgZGVi
dWcoInNlY29uZCBnZXN0dXJlIik7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2lu
KDEyLCA0MCk7Ci0gICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZVdpdGhvdXRQcm9w
YWdhdGlvbigwLCAtMjUwKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlV2l0
aG91dFByb3BhZ2F0aW9uKDAsIC0yMDApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxV
cGRhdGVXaXRob3V0UHJvcGFnYXRpb24oMCwgLTE2MCk7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVy
ZVNjcm9sbEVuZCgwLCAwKTsKIAogICAgIC8vIFdhaXQgZm9yIGxheW91dC4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3Jv
bGwtcGFnZS1wcm9wYWdhdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2UtcHJvcGFnYXRlZC5odG1sCmluZGV4IDA5
MzA5NWM1ZWZiOTZjYmQyMmYyZjBlMWI3ZDVhY2ExZmE1MDhiZDUuLmRhYTQ1NjdlODNmZDE3YWY3
OTgxMTkyNzA0ZmVmM2I5MjZkOTk1YjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcGFnZS1wcm9wYWdhdGVkLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0
dXJlLXNjcm9sbC1wYWdlLXByb3BhZ2F0ZWQuaHRtbApAQCAtODYsMjMgKzg2LDYgQEAgdmFyIHNj
cm9sbGVkRWxlbWVudCA9ICdkb2N1bWVudC5ib2R5JwogdmFyIHNjcm9sbEV2ZW50c09jY3VycmVk
ID0gMDsKIHZhciBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkID0gJzEnOwogCi1mdW5jdGlv
biByZWNvcmRTY3JvbGwoZXZlbnQpIHsKLQlkZWJ1Zygnc2Nyb2xsIGV2ZW50ICcgKyBzY3JvbGxF
dmVudHNPY2N1cnJlZCArICcrPiAnICsgZXZlbnQudGFyZ2V0KTsKLQlzY3JvbGxFdmVudHNPY2N1
cnJlZCsrOwotCi0JaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewotCQkvLyBCZWNhdXNlIHNjcm9s
bCBldmVudHMgYXJyaXZlIGFzeW5jaHJvbm91c2x5LCBvbmx5IG9uZSB3aWxsIGFycml2ZS4KLQkg
ICAgaWYgKGdlc3R1cmVzT2NjdXJyZWQgPT0gZXhwZWN0ZWRHZXN0dXJlc1RvdGFsKSB7Ci0JCQlz
aG91bGRCZSgnc2Nyb2xsRXZlbnRzT2NjdXJyZWQnLCBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3Vy
cmVkKTsKLQkgICAgICAgIC8vIElmIHdlJ3ZlIGdvdCBoZXJlLCB3ZSd2ZSBwYXNzZWQuCi0JICAg
ICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwotCSAgICAgICAgaXNTdWNjZXNzZnVsbHlQ
YXJzZWQoKTsKLQkgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLQkgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLQkJfQotICAgIH0KLX0KLQogLy8gQWx3YXlzIGNvbnN0
cnVjdCBhIHBhZ2UgbGFyZ2VyIHRoYW4gdGhlIHZlcnRpY2FsIGhlaWdodCBvZiB0aGUgd2luZG93
LgogZnVuY3Rpb24gYnVpbGRQYWdlKCkKIHsKQEAgLTEzNiw3ICsxMTksOCBAQCBmdW5jdGlvbiBz
ZWNvbmRHZXN0dXJlU2Nyb2xsKCkKIHsKICAgICBkZWJ1Zygic2Vjb25kIGdlc3R1cmUiKTsKICAg
ICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsQmVnaW4oMTIsIDQwKTsKLSAgICBldmVudFNlbmRl
ci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC0yNTApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVT
Y3JvbGxVcGRhdGUoMCwgLTIwMCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0
ZSgwLCAtMTYwKTsKICAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOwogCiAg
ICAgLy8gV2FpdCBmb3IgbGF5b3V0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2Uu
aHRtbAppbmRleCA0ZTYwZTVjYWUwZTliNTFlYWRiNzU0OGQ3YjdjNjBkMjgzMWJkOWE4Li42ZTEw
MzM2MmE0ZmY5YjBlYTNiNDQzZTBmNjA4ZDY5NmI2MTJlMDVhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2Uu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdl
c3R1cmUtc2Nyb2xsLXBhZ2UuaHRtbApAQCAtMTA1LDcgKzEwNSw3IEBAIGZ1bmN0aW9uIGZpcnN0
R2VzdHVyZVNjcm9sbCgpCiBmdW5jdGlvbiBzZWNvbmRHZXN0dXJlU2Nyb2xsKCkKIHsKICAgICBk
ZWJ1Zygic2Vjb25kIGdlc3R1cmUiKTsKLSAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsQmVn
aW4oMTIsIDQwKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsQmVnaW4oODAwLCA0MCk7
CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMzApOwogICAgIGV2ZW50
U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTMwKTsKICAgICBldmVudFNlbmRlci5nZXN0
dXJlU2Nyb2xsRW5kKDAsIDApOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJv
ZHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVu
dHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjU0Y2FmOWFhNzVkNDRkMmEwMGM1MzFiYjJiMGZkMWE5YjE1ODFkMTEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxOCBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgcGFnZSBjYW5ub3QgYmUgc2Nyb2xs
ZWQgd2l0aCB0b3VjaCBpZiBpdHMgYm9keSBoYXMgc3R5bGUgb3ZlcmZsb3c6aGlkZGVuLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworZmlyc3QgZ2VzdHVyZQorUEFTUyBkb2N1bWVu
dC5ib2R5LnNjcm9sbFRvcCBpcyAwCitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCBpcyAw
CitQQVNTIHdoZWVsRXZlbnRzT2NjdXJyZWQgaXMgMAorc2Vjb25kIGdlc3R1cmUKK1BBU1MgZG9j
dW1lbnQuYm9keS5zY3JvbGxUb3AgaXMgMAorUEFTUyBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQg
aXMgMAorUEFTUyB3aGVlbEV2ZW50c09jY3VycmVkIGlzIDAKK1BBU1Mgc2Nyb2xsRXZlbnRzT2Nj
dXJyZWQgaXMgMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZl
bnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXByb3BhZ2F0ZWQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktcHJvcGFnYXRlZC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGYyMzdhNThmZmVjYTMyZThkZTEzNDc1MWM5NDE3NTI3NTgy
NjRkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXByb3Bh
Z2F0ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgdGVzdHMgdGhhdCBhIHBh
Z2UgY2Fubm90IGJlIHNjcm9sbGVkIHZlcnRpY2FsbHkgd2l0aCB0b3VjaCBpZiBpdHMgYm9keSBo
YXMgc3R5bGUgb3ZlcmZsb3cteTpoaWRkZW4gYW5kIHRoZSBzY3JvbGwgZXZlbnQgaXMgcHJvcG9n
YXRlZCBmcm9tIGEgc2Nyb2xsYWJsZSBjaGlsZCBkaXYuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitmaXJzdCBnZXN0dXJlCitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIGlz
IDAKK1BBU1MgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0IGlzIDAKK1BBU1Mgd2hlZWxFdmVudHNP
Y2N1cnJlZCBpcyAwCitzZWNvbmQgZ2VzdHVyZQorUEFTUyBkb2N1bWVudC5ib2R5LnNjcm9sbFRv
cCBpcyAwCitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCBpcyAwCitQQVNTIHdoZWVsRXZl
bnRzT2NjdXJyZWQgaXMgMAorUEFTUyBzY3JvbGxFdmVudHNPY2N1cnJlZCBpcyAwCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90
b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteGhpZGRlbi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdl
c3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzI3
NzYyOWY0M2FjN2QyOGU3MTJhZmE5YzViNDczNDBjOWJkMTA4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90
b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteGhpZGRlbi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxOSBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgcGFnZSBjYW5ub3QgYmUgc2Nyb2xsZWQgaG9yaXpv
bnRhbGx5IHdpdGggdG91Y2ggKGJ1dCBjYW4gc3RpbGwgYmUgc2Nyb2xsZWQgdmVydGljYWxseSkg
aWYgaXRzIGJvZHkgaGFzIHN0eWxlIG92ZXJmbG93LXg6aGlkZGVuLiBUaGUgc2Nyb2xsIGV2ZW50
cyBpbiB0aGlzIHRlc3QgaGF2ZSBib3RoIGFuIHggYW5kIHkgY29tcG9uZW50LgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworZmlyc3QgZ2VzdHVyZQorUEFTUyBkb2N1bWVudC5ib2R5
LnNjcm9sbFRvcCBpcyAxMTAKK1BBU1MgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0IGlzIDAKK1BB
U1Mgd2hlZWxFdmVudHNPY2N1cnJlZCBpcyAwCitzZWNvbmQgZ2VzdHVyZQorUEFTUyBkb2N1bWVu
dC5ib2R5LnNjcm9sbFRvcCBpcyAyMDUKK1BBU1MgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0IGlz
IDAKK1BBU1Mgd2hlZWxFdmVudHNPY2N1cnJlZCBpcyAwCitzY3JvbGwgZXZlbnQgMCs+IFtvYmpl
Y3QgSFRNTERvY3VtZW50XQorUEFTUyBzY3JvbGxFdmVudHNPY2N1cnJlZCBpcyAxCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90
b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteWhpZGRlbi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdl
c3R1cmUtbm9zY3JvbGwtYm9keS15aGlkZGVuLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODlh
MWQ3MjVkOWMzMWNjYTUwMzFhNjIwMDlkYThlNGY5MjdmMzE4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90
b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteWhpZGRlbi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxOSBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgcGFnZSBjYW5ub3QgYmUgc2Nyb2xsZWQgdmVydGlj
YWxseSB3aXRoIHRvdWNoIChidXQgY2FuIHN0aWxsIGJlIHNjcm9sbGVkIGhvcml6b250YWxseSkg
aWYgaXRzIGJvZHkgaGFzIHN0eWxlIG92ZXJmbG93LXk6aGlkZGVuLiBUaGUgc2Nyb2xsIGV2ZW50
cyBpbiB0aGlzIHRlc3QgaGF2ZSBib3RoIGFuIHggYW5kIHkgY29tcG9uZW50LgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworZmlyc3QgZ2VzdHVyZQorUEFTUyBkb2N1bWVudC5ib2R5
LnNjcm9sbFRvcCBpcyAwCitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCBpcyA1NQorUEFT
UyB3aGVlbEV2ZW50c09jY3VycmVkIGlzIDAKK3NlY29uZCBnZXN0dXJlCitQQVNTIGRvY3VtZW50
LmJvZHkuc2Nyb2xsVG9wIGlzIDAKK1BBU1MgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0IGlzIDk3
CitQQVNTIHdoZWVsRXZlbnRzT2NjdXJyZWQgaXMgMAorc2Nyb2xsIGV2ZW50IDArPiBbb2JqZWN0
IEhUTUxEb2N1bWVudF0KK1BBU1Mgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgaXMgMQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190599</attachid>
            <date>2013-02-27 13:59:25 -0800</date>
            <delta_ts>2013-02-28 10:48:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109769-20130227165538.patch</filename>
            <type>text/plain</type>
            <size>53922</size>
            <attacher name="Terry Anderson">tdanderson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRmN2RjOGFlNTI0YWQ2
MzFlZmMxMjE1NGFkMmRlZjNkYTA4ODgzYy4uMmQ2NDcwNDBlOTgzOWMxNTdmYTA2MjQxNDUzOWQx
OWE2YzIzODk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTAyLTI3ICBUZXJy
eSBBbmRlcnNvbiAgPHRkYW5kZXJzb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZSgpIHNob3VsZCBpbnZva2UgdGhlIHVzZXIt
Z2VuZXJhdGVkIHNjcm9sbCByb3V0aW5lcyAKKyAgICAgICAgc28gaXRzIGJlaGF2aW9yIG1hdGNo
ZXMgb3RoZXIgdXNlci1pbml0aWF0ZWQgc2Nyb2xscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gZW5zdXJlIHRoYXQgdGhlIHNjcm9sbGluZyBiZWhh
dmlvciBvZiBHZXN0dXJlU2Nyb2xsVXBkYXRlIGV2ZW50cyBhcmUgY29uc2lzdGVudCB3aXRoCisg
ICAgICAgIHRoZSBzY3JvbGxpbmcgYmVoYXZpb3Igb2YgbW91c2V3aGVlbCBldmVudHMsIHVzZSB0
aGUgZXhpc3RpbmcgdXNlci1nZW5lcmF0ZWQgc2Nyb2xsIGxvZ2ljCisgICAgICAgIGluc3RlYWQg
b2YgY2FsbGluZyBpbnRvIFJlbmRlckxheWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KCkuIFRoaXMg
cGF0Y2ggZml4ZXMgdGhlIGJ1ZworICAgICAgICByZXBvcnRlZCBpbiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MzE2LCB3aGVyZSB0aGUgZXhhbXBsZSBwYWdlIGNh
bgorICAgICAgICBiZSBzY3JvbGxlZCB1c2luZyB0b3VjaCBidXQgY2Fubm90IGJlIHNjcm9sbGVk
IHVzaW5nIG1vdXNld2hlZWxzLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIHBhdGNoIGRvZXMg
bm90IHVzZSBhbnkgb2YgdGhlIG1vdXNld2hlZWwgZXZlbnQtaGFuZGxpbmcgY29kZS4KKworICAg
ICAgICBUZXN0czogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Ny
b2xsLWJvZHktcHJvcGFnYXRlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9s
bC1ib2R5LXloaWRkZW4uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkuaHRtbAorCisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxCZWdpbik6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxVcGRh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZW5kU2Nyb2xsRXZlbnRUb1Zp
ZXcpOgorICAgICAgICAgICAgQnkgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGF0IHRoZSBzdGFydCBv
ZiBoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlKCkgaW4gdGhlIGNhc2UKKyAgICAgICAgICAgIHdo
ZXJlIHxtX3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGV8IGlzIG51bGwsIHdlIGVuc3VyZSB0aGF0
IHRoZSBzY3JvbGwgdXBkYXRlcworICAgICAgICAgICAgY2FuIHN0aWxsIHNjcm9sbCB0aGUgcGFn
ZSBpdHNlbGYsIGlmIHBvc3NpYmxlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxFbmQpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgIChFdmVudEhhbmRsZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1X
aGVlbEV2ZW50OjpzZXRIYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKToKKwogMjAxMy0wMi0yNiAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBhZGQg
YSBib2R5IHRvIHBsYXRmb3JtIHJlcXVlc3QgdW50aWwgbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNmMxNWFjNGY5OWJiNTYyMjQ4NmMzMzZiZjBmNDFkNjNk
Y2RiMGYyYS4uZmE0OGU4NDNlNGQxYmQ3MGNiNjYyYTg3NTJmNDI0MzUyZWQ4NGVmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtNDAzLDYgKzQwMyw3IEBAIHZvaWQgRXZl
bnRIYW5kbGVyOjpjbGVhcigpCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogICAgIG1fc2Ny
b2xsR2VzdHVyZUhhbmRsaW5nTm9kZSA9IDA7CiAgICAgbV9sYXN0SGl0VGVzdFJlc3VsdE92ZXJX
aWRnZXQgPSBmYWxzZTsKKyAgICBtX3ByZXZpb3VzR2VzdHVyZVNjcm9sbGVkTm9kZSA9IDA7CiAg
ICAgbV9zY3JvbGxiYXJIYW5kbGluZ1Njcm9sbEdlc3R1cmUgPSAwOwogI2VuZGlmCiAgICAgbV9t
YXhNb3VzZU1vdmVkRHVyYXRpb24gPSAwOwpAQCAtMjQ3Niw2ICsyNDc3LDggQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYg
Z2VzdHVyZUV2ZW50KQogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0
ZToKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGVXaXRob3V0UHJv
cGFnYXRpb246CiAgICAgICAgIHJldHVybiBoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlKGdlc3R1
cmVFdmVudCk7CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgorICAg
ICAgICByZXR1cm4gaGFuZGxlR2VzdHVyZVNjcm9sbEVuZChnZXN0dXJlRXZlbnQpOwogICAgIGNh
c2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcDoKICAgICAgICAgcmV0dXJuIGhhbmRsZUdlc3R1
cmVUYXAoZ2VzdHVyZUV2ZW50KTsKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXBE
b3duOgpAQCAtMjQ4Niw3ICsyNDg5LDYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1
cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgICAg
ICByZXR1cm4gaGFuZGxlR2VzdHVyZUxvbmdUYXAoZ2VzdHVyZUV2ZW50KTsKICAgICBjYXNlIFBs
YXRmb3JtRXZlbnQ6Okdlc3R1cmVUd29GaW5nZXJUYXA6CiAgICAgICAgIHJldHVybiBoYW5kbGVH
ZXN0dXJlVHdvRmluZ2VyVGFwKGdlc3R1cmVFdmVudCk7Ci0gICAgY2FzZSBQbGF0Zm9ybUV2ZW50
OjpHZXN0dXJlU2Nyb2xsRW5kOgogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZURvdWJs
ZVRhcDoKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVQaW5jaEJlZ2luOgogICAgIGNh
c2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVBpbmNoRW5kOgpAQCAtMjYxNCwxOSArMjYxNiw2IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzR2VzdHVyZUV2ZW50VG9XaWRnZXRJZlBvc3NpYmxlKGNv
bnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMg
Y29uc3QgTm9kZSogY2xvc2VzdFNjcm9sbGFibGVOb2RlQ2FuZGlkYXRlKGNvbnN0IE5vZGUqIG5v
ZGUpCi17Ci0gICAgZm9yIChFdmVudFBhdGhXYWxrZXIgd2Fsa2VyKG5vZGUpOyB3YWxrZXIubm9k
ZSgpOyB3YWxrZXIubW92ZVRvUGFyZW50KCkpIHsKLSAgICAgICAgTm9kZSogc2Nyb2xsYWJsZU5v
ZGUgPSB3YWxrZXIubm9kZSgpOwotICAgICAgICBpZiAoc2Nyb2xsYWJsZU5vZGUtPmlzRG9jdW1l
bnROb2RlKCkpCi0gICAgICAgICAgICByZXR1cm4gc2Nyb2xsYWJsZU5vZGU7Ci0gICAgICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBzY3JvbGxhYmxlTm9kZS0+cmVuZGVyZXIoKTsKLSAgICAg
ICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0JveCgpICYmIHRvUmVuZGVyQm94KHJlbmRl
cmVyKS0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gc2Nyb2xsYWJsZU5vZGU7Ci0gICAgfQotICAgIHJldHVybiBub2RlOwotfQotCiBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZVNjcm9sbEJlZ2luKGNvbnN0IFBsYXRmb3JtR2Vz
dHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKTsKQEAgLTI2NDUsNiArMjYzNCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVHZXN0dXJlU2Nyb2xsQmVnaW4oY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdl
c3R1cmVFCiAKICAgICBtX2xhc3RIaXRUZXN0UmVzdWx0T3ZlcldpZGdldCA9IHJlc3VsdC5pc092
ZXJXaWRnZXQoKTsgCiAgICAgbV9zY3JvbGxHZXN0dXJlSGFuZGxpbmdOb2RlID0gcmVzdWx0Lmlu
bmVyTm9kZSgpOworICAgIG1fcHJldmlvdXNHZXN0dXJlU2Nyb2xsZWROb2RlID0gMDsKIAogICAg
IE5vZGUqIG5vZGUgPSBtX3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGUuZ2V0KCk7CiAgICAgaWYg
KG5vZGUpCkBAIC0yNjU1LDQ4ICsyNjQ1LDgwIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVH
ZXN0dXJlU2Nyb2xsQmVnaW4oY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFCiAK
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlKGNvbnN0IFBsYXRm
b3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7Ci0gICAgLy8gSWdub3JlIHRoaXMgZXZl
bnQgaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIGEgdGFyZ2V0ZWQgbm9kZSB3aXRoIGEgdmFsaWQg
cmVuZGVyZXIuCi0gICAgY29uc3QgTm9kZSogbm9kZSA9IG1fc2Nyb2xsR2VzdHVyZUhhbmRsaW5n
Tm9kZS5nZXQoKTsKLSAgICBpZiAoIW5vZGUpCisgICAgRmxvYXRTaXplIGRlbHRhKGdlc3R1cmVF
dmVudC5kZWx0YVgoKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWSgpKTsKKyAgICBpZiAoZGVsdGEuaXNa
ZXJvKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlbmRlck9iamVjdCogbGF0Y2hl
ZFJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIWxhdGNoZWRSZW5kZXJlcikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0IGZsb2F0IHNjYWxlRmFjdG9yID0gbV9m
cmFtZS0+cGFnZVpvb21GYWN0b3IoKSAqIG1fZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKTsKKyAg
ICBkZWx0YS5zY2FsZSgxIC8gc2NhbGVGYWN0b3IsIDEgLyBzY2FsZUZhY3Rvcik7CiAKLSAgICBJ
bnRTaXplIGRlbHRhKC1nZXN0dXJlRXZlbnQuZGVsdGFYKCksIC1nZXN0dXJlRXZlbnQuZGVsdGFZ
KCkpOwotICAgIGlmIChkZWx0YS5pc1plcm8oKSkKKyAgICBOb2RlKiBub2RlID0gbV9zY3JvbGxH
ZXN0dXJlSGFuZGxpbmdOb2RlLmdldCgpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJu
IHNlbmRTY3JvbGxFdmVudFRvVmlldyhnZXN0dXJlRXZlbnQsIGRlbHRhKTsKKworICAgIC8vIEln
bm9yZSB0aGlzIGV2ZW50IGlmIHRoZSB0YXJnZXRlZCBub2RlIGRvZXMgbm90IGhhdmUgYSB2YWxp
ZCByZW5kZXJlci4KKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIo
KTsKKyAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBSZWZQ
dHI8RnJhbWVWaWV3PiBwcm90ZWN0b3IobV9mcmFtZS0+dmlldygpKTsKIAogICAgIC8vIFRyeSB0
byBzZW5kIHRoZSBldmVudCB0byB0aGUgY29ycmVjdCB2aWV3LgotICAgIGlmIChwYXNzR2VzdHVy
ZUV2ZW50VG9XaWRnZXRJZlBvc3NpYmxlKGdlc3R1cmVFdmVudCwgbGF0Y2hlZFJlbmRlcmVyKSkK
KyAgICBpZiAocGFzc0dlc3R1cmVFdmVudFRvV2lkZ2V0SWZQb3NzaWJsZShnZXN0dXJlRXZlbnQs
IHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAvLyBPdGhlcndpc2UgaWYg
dGhpcyBpcyB0aGUgY29ycmVjdCB2aWV3IGZvciB0aGUgZXZlbnQsIGZpbmQgdGhlIGNsb3Nlc3Qg
c2Nyb2xsYWJsZQotICAgIC8vIGFuY2VzdG9yIG9mIHRoZSB0YXJnZXRlZCBub2RlIGFuZCBzY3Jv
bGwgdGhlIGxheWVyIHRoYXQgY29udGFpbnMgdGhpcyBub2RlJ3MgcmVuZGVyZXIuCi0gICAgbm9k
ZSA9IGNsb3Nlc3RTY3JvbGxhYmxlTm9kZUNhbmRpZGF0ZShub2RlKTsKLSAgICBpZiAoIW5vZGUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBOb2RlKiBzdG9wTm9kZSA9IDA7CisgICAgYm9v
bCBzY3JvbGxTaG91bGROb3RQcm9wYWdhdGUgPSBnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRm
b3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGVXaXRob3V0UHJvcGFnYXRpb247CisgICAgaWYg
KHNjcm9sbFNob3VsZE5vdFByb3BhZ2F0ZSkKKyAgICAgICAgc3RvcE5vZGUgPSBtX3ByZXZpb3Vz
R2VzdHVyZVNjcm9sbGVkTm9kZS5nZXQoKTsKIAotICAgIGxhdGNoZWRSZW5kZXJlciA9IG5vZGUt
PnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFsYXRjaGVkUmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAvLyBGaXJzdCB0cnkgdG8gc2Nyb2xsIHRoZSBjbG9zZXN0IHNjcm9sbGFibGUg
UmVuZGVyQm94IGFuY2VzdG9yIG9mIHxub2RlfC4KKyAgICBTY3JvbGxHcmFudWxhcml0eSBncmFu
dWxhcml0eSA9IFNjcm9sbEJ5UGl4ZWw7IAorICAgIGJvb2wgaG9yaXpvbnRhbFNjcm9sbCA9IHNj
cm9sbE5vZGUoZGVsdGEud2lkdGgoKSwgZ3JhbnVsYXJpdHksIFNjcm9sbExlZnQsIFNjcm9sbFJp
Z2h0LCBub2RlLCAmc3RvcE5vZGUpOworICAgIGJvb2wgdmVydGljYWxTY3JvbGwgPSBzY3JvbGxO
b2RlKGRlbHRhLmhlaWdodCgpLCBncmFudWxhcml0eSwgU2Nyb2xsVXAsIFNjcm9sbERvd24sIG5v
ZGUsICZzdG9wTm9kZSk7CiAKLSAgICBSZW5kZXJMYXllcjo6U2Nyb2xsUHJvcGFnYXRpb24gc2hv
dWxkUHJvcGFnYXRlID0gUmVuZGVyTGF5ZXI6OlNob3VsZFByb3BhZ2F0ZVNjcm9sbDsKLSAgICBp
ZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBk
YXRlV2l0aG91dFByb3BhZ2F0aW9uKQotICAgICAgICBzaG91bGRQcm9wYWdhdGUgPSBSZW5kZXJM
YXllcjo6RG9udFByb3BhZ2F0ZVNjcm9sbDsKKyAgICBpZiAoc2Nyb2xsU2hvdWxkTm90UHJvcGFn
YXRlKQorICAgICAgICBtX3ByZXZpb3VzR2VzdHVyZVNjcm9sbGVkTm9kZSA9IHN0b3BOb2RlOwog
Ci0gICAgY29uc3QgZmxvYXQgc2NhbGVGYWN0b3IgPSBtX2ZyYW1lLT5wYWdlWm9vbUZhY3Rvcigp
ICogbV9mcmFtZS0+ZnJhbWVTY2FsZUZhY3RvcigpOwotICAgIGRlbHRhLnNjYWxlKDEgLyBzY2Fs
ZUZhY3RvciwgMSAvIHNjYWxlRmFjdG9yKTsKKyAgICBpZiAoaG9yaXpvbnRhbFNjcm9sbCB8fCB2
ZXJ0aWNhbFNjcm9sbCkgeworICAgICAgICBzZXRGcmFtZVdhc1Njcm9sbGVkQnlVc2VyKCk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KIAotICAgIGJvb2wgcmVzdWx0ID0gbGF0Y2hlZFJl
bmRlcmVyLT5lbmNsb3NpbmdMYXllcigpLT5zY3JvbGxCeShkZWx0YSwgUmVuZGVyTGF5ZXI6OlNj
cm9sbE9mZnNldENsYW1wZWQsIHNob3VsZFByb3BhZ2F0ZSk7CisgICAgLy8gT3RoZXJ3aXNlIHRy
eSB0byBzY3JvbGwgdGhlIHZpZXcuCisgICAgcmV0dXJuIHNlbmRTY3JvbGxFdmVudFRvVmlldyhn
ZXN0dXJlRXZlbnQsIGRlbHRhKTsKK30KIAotICAgIGlmIChyZXN1bHQpCitib29sIEV2ZW50SGFu
ZGxlcjo6c2VuZFNjcm9sbEV2ZW50VG9WaWV3KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBn
ZXN0dXJlRXZlbnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkRGVsdGEpCit7CisgICAgRnJhbWVW
aWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgY29uc3QgZmxvYXQgdGlja0Rpdmlzb3IgPSBzdGF0aWNfY2FzdDxm
bG9hdD4oV2hlZWxFdmVudDo6VGlja011bHRpcGxpZXIpOworICAgIEludFBvaW50IHBvaW50KGdl
c3R1cmVFdmVudC5wb3NpdGlvbigpLngoKSwgZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCkueSgpKTsK
KyAgICBJbnRQb2ludCBnbG9iYWxQb2ludChnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKS54
KCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLnkoKSk7CisgICAgUGxhdGZvcm1XaGVl
bEV2ZW50IHN5bnRoZXRpY1doZWVsRXZlbnQocG9pbnQsIGdsb2JhbFBvaW50LAorICAgICAgICBz
Y2FsZWREZWx0YS53aWR0aCgpLCBzY2FsZWREZWx0YS5oZWlnaHQoKSwgCisgICAgICAgIHNjYWxl
ZERlbHRhLndpZHRoKCkgLyB0aWNrRGl2aXNvciwgc2NhbGVkRGVsdGEuaGVpZ2h0KCkgLyB0aWNr
RGl2aXNvciwKKyAgICAgICAgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsCisgICAgICAgIGdlc3R1
cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQu
YWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCkpOworI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oQ0hST01JVU0pCisgICAgc3ludGhldGljV2hlZWxFdmVudC5zZXRIYXNQcmVjaXNl
U2Nyb2xsaW5nRGVsdGFzKHRydWUpOworI2VuZGlmCisKKyAgICBib29sIHNjcm9sbGVkRnJhbWUg
PSB2aWV3LT53aGVlbEV2ZW50KHN5bnRoZXRpY1doZWVsRXZlbnQpOworICAgIGlmIChzY3JvbGxl
ZEZyYW1lKQogICAgICAgICBzZXRGcmFtZVdhc1Njcm9sbGVkQnlVc2VyKCk7CiAKLSAgICByZXR1
cm4gcmVzdWx0OworICAgIHJldHVybiBzY3JvbGxlZEZyYW1lOworfQorCitib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlR2VzdHVyZVNjcm9sbEVuZChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYp
Cit7CisgICAgbV9zY3JvbGxHZXN0dXJlSGFuZGxpbmdOb2RlID0gMDsKKyAgICBtX3ByZXZpb3Vz
R2VzdHVyZVNjcm9sbGVkTm9kZSA9IDA7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgRXZl
bnRIYW5kbGVyOjppc1Njcm9sbGJhckhhbmRsaW5nR2VzdHVyZXMoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggM2ZjMDdmMmZhMjUyZjljNDVmMjRmMWY2YjU1ZTQ3ZTdh
MDBkNzUzZS4uYWViMDhkZTE5YTM0ZmE2YjNhZDBmYWJmNzc4M2YyNDQxMDFkMzA4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0xODEsNiArMTgxLDcgQEAgcHVibGljOgogICAg
IGJvb2wgaGFuZGxlR2VzdHVyZVR3b0ZpbmdlclRhcChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVu
dCYpOwogICAgIGJvb2wgaGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZShjb25zdCBQbGF0Zm9ybUdl
c3R1cmVFdmVudCYpOwogICAgIGJvb2wgaGFuZGxlR2VzdHVyZVNjcm9sbEJlZ2luKGNvbnN0IFBs
YXRmb3JtR2VzdHVyZUV2ZW50Jik7CisgICAgYm9vbCBoYW5kbGVHZXN0dXJlU2Nyb2xsRW5kKGNv
bnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAgYm9vbCBpc1Njcm9sbGJhckhhbmRsaW5n
R2VzdHVyZXMoKSBjb25zdDsKICNlbmRpZgogCkBAIC0zNzgsNiArMzc5LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIGhhbmRsZUdlc3R1cmVGb3JUZXh0U2VsZWN0aW9uT3JDb250ZXh0TWVudShjb25z
dCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogICAgIGJvb2wgcGFzc0dlc3R1cmVFdmVudFRvV2lk
Z2V0KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiwgV2lkZ2V0Kik7CiAgICAgYm9vbCBwYXNz
R2VzdHVyZUV2ZW50VG9XaWRnZXRJZlBvc3NpYmxlKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50
JiwgUmVuZGVyT2JqZWN0Kik7CisgICAgYm9vbCBzZW5kU2Nyb2xsRXZlbnRUb1ZpZXcoY29uc3Qg
UGxhdGZvcm1HZXN0dXJlRXZlbnQmLCBjb25zdCBGbG9hdFNpemUmKTsKICNlbmRpZgogCiAgICAg
dm9pZCBzZXRMYXN0S25vd25Nb3VzZVBvc2l0aW9uKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYp
OwpAQCAtNDY5LDYgKzQ3MSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRT
KQogICAgIFJlZlB0cjxOb2RlPiBtX3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGU7CiAgICAgYm9v
bCBtX2xhc3RIaXRUZXN0UmVzdWx0T3ZlcldpZGdldDsKKyAgICBSZWZQdHI8Tm9kZT4gbV9wcmV2
aW91c0dlc3R1cmVTY3JvbGxlZE5vZGU7CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9zY3JvbGxi
YXJIYW5kbGluZ1Njcm9sbEdlc3R1cmU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAppbmRleCA4YzAzMDJjNWVhNWQ1YmZlOGEzMGIyYzQ1
OTE1ZjMxODI0NjliZjE5Li41YWYyOTc0YjIyYmZkNTRlZjdhODM2MGEzMGIwYTcxYzVmMmJmYzZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaApAQCAt
MTU3LDYgKzE1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKE1BQykg
fHwgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgICAgIGJvb2wgaGFzUHJlY2lzZVNjcm9sbGluZ0Rl
bHRhcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhczsgfQorICAg
ICAgICB2b2lkIHNldEhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoYm9vbCBiKSB7IG1faGFzUHJl
Y2lzZVNjcm9sbGluZ0RlbHRhcyA9IGI7IH0KICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykgfHwg
KFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogICAgICAgICBQbGF0Zm9ybVdoZWVs
RXZlbnRQaGFzZSBwaGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGhhc2U7IH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmODQx
MGU1NDEyMWFlYTBiMGIyZmE5N2UyYjExOWY1MDJlNDhhYTNkLi5iOWZlYjZhMjIzMjExNjgxMDhk
MWZkZDk3ZWMzNDQ5MWZmOWY3MGYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTMtMDItMjcg
IFRlcnJ5IEFuZGVyc29uICA8dGRhbmRlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRXZl
bnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlKCkgc2hvdWxkIGludm9rZSB0aGUg
dXNlci1nZW5lcmF0ZWQgc2Nyb2xsIHJvdXRpbmVzIAorICAgICAgICBzbyBpdHMgYmVoYXZpb3Ig
bWF0Y2hlcyBvdGhlciB1c2VyLWluaXRpYXRlZCBzY3JvbGxzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3NjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb3VyIG5ldyBsYXlvdXQgdGVzdHMgaGF2ZSBi
ZWVuIGFkZGVkIGFuZCB0b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLmh0bWwgaGFzIGJlZW4KKyAg
ICAgICAgbW9kaWZpZWQgdG8gZGVtb25zdHJhdGUgdGhhdCB0aGlzIHBhdGNoIGZpeGVzIHR3byBl
eGlzdGluZyBidWdzLiBTZWUgdGhlIGlubGluZQorICAgICAgICBjb21tZW50cyBiZWxvdyBmb3Ig
ZGV0YWlscy4KKworICAgICAgICBCZWNhdXNlIEkgYW0gbm93IHVzaW5nIHRoZSBleGlzdGluZyB1
c2VyLWdlbmVyYXRlZCBzY3JvbGwgbG9naWMsIHRoZSBkZWx0YSBmb3IgYSBzaW5nbGUKKyAgICAg
ICAgR2VzdHVyZVNjcm9sbFVwZGF0ZSBldmVudCB3aWxsIG5vdCBiZSBwcm9wYWdhdGVkIHRvIHRo
ZSBwYXJlbnQgb2YgdGhlIHRhcmdldGVkIG5vZGUKKyAgICAgICAgdW5sZXNzIHRoZSB0YXJnZXRl
ZCBub2RlIGhhcyBubyByZW1haW5pbmcgc2Nyb2xsYWJsZSBhcmVhLiBTbyB0aGUgY2hhbmdlcyB0
byB0aGUKKyAgICAgICAgZXhpc3RpbmcgbGF5b3V0IHRlc3RzIGhhdmUgYmVlbiBtYWRlIHRvIGVu
c3VyZSB0aGF0IHRoZSB0YXJnZXRlZCBub2RlIGhhcyBiZWVuIGZ1bGx5CisgICAgICAgIHNjcm9s
bGVkIGJlZm9yZSBzdWJzZXF1ZW50IEdlc3R1cmVTY3JvbGxVcGRhdGUgZXZlbnRzIHdpbGwgc2Ny
b2xsIHRoZSBwYXJlbnQocykgb2YKKyAgICAgICAgdGhlIHRhcmdldGVkIG5vZGUuCisKKyAgICAg
ICAgSSBoYXZlIGFsc28gcmVtb3ZlZCB0aGUgZnVuY3Rpb24gcmVjb3JkU2Nyb2xsKCkgZnJvbSB0
aGUgZXhpc3RpbmcgbGF5b3V0IHRlc3RzCisgICAgICAgIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBh
bHJlYWR5IGV4aXN0cyBpbiB0aGUgaW5jbHVkZWQgZmlsZSByZXNvdXJjZXMvZ2VzdHVyZS1oZWxw
ZXJzLmpzLgorCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0
dXJlLW5vc2Nyb2xsLWJvZHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2
ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1wcm9wYWdhdGVk
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVy
ZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktcHJvcGFnYXRlZC5odG1sOiBDb3BpZWQgZnJv
bSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Ny
b2xsLXBhZ2UuaHRtbC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNo
LWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJv
ZHkteGhpZGRlbi5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2UuaHRtbC4KKyAgICAgICAgKiBmYXN0
L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS15aGlkZGVu
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVy
ZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteWhpZGRlbi5odG1sOiBDb3BpZWQgZnJvbSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xs
LXBhZ2UuaHRtbC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdl
c3R1cmUtbm9zY3JvbGwtYm9keS5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2UuaHRtbC4KKyAgICAg
ICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi1u
b3QtcHJvcGFnYXRlZC5odG1sOgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUv
dG91Y2gtZ2VzdHVyZS1zY3JvbGwtZGl2LXByb3BhZ2F0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi10d2ljZS1wcm9w
YWdhdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1n
ZXN0dXJlLXNjcm9sbC1pZnJhbWUtbm90LXByb3BhZ2F0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWlmcmFtZS1wcm9wYWdh
dGVkLmh0bWw6CisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0
dXJlLXNjcm9sbC1wYWdlLW5vdC1wcm9wYWdhdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9ldmVu
dHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLXByb3BhZ2F0ZWQuaHRt
bDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Ny
b2xsLXBhZ2UuaHRtbDoKKyAgICAgICAgICAgICAgSSBtb2RpZmllZCB0aGlzIGxheW91dCB0ZXN0
IGluIG9yZGVyIHRvIGFkZCB0ZXN0IGNvdmVyYWdlIGZvciBhbm90aGVyIGJ1ZworICAgICAgICAg
ICAgICB3aGljaCBpcyBmaXhlZCBieSB0aGlzIHBhdGNoOiBpZiB0aGUgaGl0IHRlc3QgcGVyZm9y
bWVkIG9uIGEgR2VzdHVyZVNjcm9sbEJlZ2luCisgICAgICAgICAgICAgIGRvZXMgbm90IHRhcmdl
dCBhIHNwZWNpZmljIG5vZGUsIHRoZSBzdWJzZXF1ZW50IEdlc3R1cmVTY3JvbGxVcGRhdGUgZXZl
bnRzIHNob3VsZAorICAgICAgICAgICAgICBzdGlsbCBhdHRlbXB0IHRvIHNjcm9sbCB0aGUgcGFn
ZSBpdHNlbGYuIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIGhvdyBtb3VzZXdoZWVsCisgICAgICAg
ICAgICAgIGV2ZW50cyBiZWhhdmUuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9l
dmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1wcm9wYWdhdGVkLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91
Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteGhpZGRlbi1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNo
L2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXloaWRkZW4tZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgICAgICAgVGhlc2UgZm91ciBuZXcgbGF5b3V0IHRlc3RzIHZlcmlm
eSB0aGF0IGEgbm9uLXNjcm9sbGFibGUgYm9keSB3aWxsIG5vdCBzY3JvbGwsCisgICAgICAgICAg
ICAgIGFzIHJlcG9ydGVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDkzMTYuCisKIDIwMTMtMDItMjcgIFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFRlc3QgZXhwZWN0YXRpb25zIHVwZGF0ZXMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gt
Z2VzdHVyZS1ub3Njcm9sbC1ib2R5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wZmJlM2QyY2MxZDA4MTgwN2YyYWU3OTU0ZjFlMjBlMGZmODk0NTQ5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90
b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAK
K1RoaXMgdGVzdHMgdGhhdCBhIHBhZ2UgY2Fubm90IGJlIHNjcm9sbGVkIHdpdGggdG91Y2ggaWYg
aXRzIGJvZHkgaGFzIHN0eWxlIG92ZXJmbG93OmhpZGRlbi4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK2dlc3R1cmUgZXZlbnRzIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRm
b3JtIG9yIGdlc3R1cmUgZXZlbnQgc2Nyb2xsaW5nIG9mIGEgZG9jdW1lbnQgaXMgYnJva2VuCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJl
LW5vc2Nyb2xsLWJvZHktcHJvcGFnYXRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1wcm9wYWdh
dGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTg3ZTQ4Njg0YTA1YzkxMDFjOTJkMmI3ODFj
MWU4N2JjYzdlZTdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktcHJvcGFnYXRlZC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgcGFnZSBjYW5ub3Qg
YmUgc2Nyb2xsZWQgdmVydGljYWxseSB3aXRoIHRvdWNoIGlmIGl0cyBib2R5IGhhcyBzdHlsZSBv
dmVyZmxvdy15OmhpZGRlbiBhbmQgdGhlIHNjcm9sbCBldmVudCBpcyBwcm9wb2dhdGVkIGZyb20g
YSBzY3JvbGxhYmxlIGNoaWxkIGRpdi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K2dlc3R1cmUgZXZlbnRzIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtIG9yIGdlc3R1
cmUgZXZlbnQgc2Nyb2xsaW5nIG9mIGEgZG9jdW1lbnQgaXMgYnJva2VuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJv
ZHktcHJvcGFnYXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVy
ZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktcHJvcGFnYXRlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk4Yzg1NjdhYjkwNjNjMTM3NTBiNzIxYmQ5N2JjZGUzYjNlOTFmNTcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUt
bm9zY3JvbGwtYm9keS1wcm9wYWdhdGVkLmh0bWwKQEAgLTAsMCArMSwxNTkgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZ2VzdHVyZS1oZWxwZXJz
LmpzIj48L3NjcmlwdD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisjdG91Y2h0YXJnZXQgewor
ICB3aWR0aDogMTAwcHg7CisgIGhlaWdodDogMTAwcHg7CisgIGJhY2tncm91bmQ6IHdoaXRlOwor
ICBvdmVyZmxvdzpzY3JvbGw7Cit9CisKKzo6LXdlYmtpdC1zY3JvbGxiYXIgeworICAgIHdpZHRo
OiAwcHg7CisgICAgaGVpZ2h0OiAwcHg7Cit9CisKKyNncmVlbmJveCB7CisgIHdpZHRoOiAxMDBw
eDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAgYmFja2dyb3VuZDogZ3JlZW47CisgIHBhZGRpbmc6IDBw
eDsKKyAgbWFyZ2luOiAwcHg7Cit9CisKKyNyZWRib3ggeworICB3aWR0aDogMTAwcHg7CisgIGhl
aWdodDogMTAwcHg7CisgIGJhY2tncm91bmQ6IHJlZDsKKyAgcGFkZGluZzogMHB4OworICBtYXJn
aW46IDBweDsKK30KKwordGQgeworICBwYWRkaW5nOiAwcHg7Cit9Cis8L3N0eWxlPgorPC9oZWFk
PgorPGJvZHkgc3R5bGU9Im1hcmdpbjowOyBvdmVyZmxvdy15OmhpZGRlbjsiIG9ubG9hZD0icnVu
VGVzdCgpOyI+CisKKzxkaXYgaWQ9InRvdWNodGFyZ2V0Ij4KKyAgPHRhYmxlIGJvcmRlcj0iMCIg
Y2VsbHNwYWNpbmc9IjBweCIgaWQ9InRhYmxlZm9vIj4KKyAgICA8dHI+CisgICAgICA8dGQ+PGRp
diBpZD0icmVkYm94Ij48L2Rpdj48L3RkPgorICAgICAgPHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48
L2Rpdj48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkPjxkaXYgaWQ9ImdyZWVu
Ym94Ij48L2Rpdj48L3RkPgorICAgICAgPHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3Rk
PgorICAgIDwvdHI+CisgIDwvdGFibGU+Cis8L2Rpdj4KKworPHRhYmxlIGlkPSJ0YWJsZV90b19m
aWxsIj4KKyAgICA8dHI+PHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3RkPjwvdHI+Cisg
ICAgPHRyPjx0ZD48ZGl2IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+PC90cj4KKzwvdGFibGU+CisK
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK3ZhciBleHBlY3RlZEdlc3R1cmVzVG90YWwg
PSAyOwordmFyIGdlc3R1cmVzT2NjdXJyZWQgPSAwOwordmFyIHNjcm9sbEFtb3VudFggPSBbJzAn
LCAnMCddOwordmFyIHNjcm9sbEFtb3VudFkgPSBbJzAnLCAnMCddOwordmFyIHdoZWVsRXZlbnRz
T2NjdXJyZWQgPSAwOwordmFyIGV4cGVjdGVkV2hlZWxFdmVudHNPY2N1cnJlZCA9IFsnMCcsICcw
J107Cit2YXIgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAwOwordmFyIGV4cGVjdGVkU2Nyb2xsRXZl
bnRzT2NjdXJyZWQgPSAnMCc7Cit2YXIgc2Nyb2xsZWRFbGVtZW50ID0gJ2RvY3VtZW50LmJvZHkn
CisKKy8vIEFsd2F5cyBjb25zdHJ1Y3QgYSBwYWdlIGxhcmdlciB0aGFuIHRoZSB2ZXJ0aWNhbCBo
ZWlnaHQgb2YgdGhlIHdpbmRvdy4KK2Z1bmN0aW9uIGJ1aWxkUGFnZSgpCit7CisgICAgdmFyIHRh
YmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYmxlX3RvX2ZpbGwnKTsKKyAgICB2YXIg
dGFyZ2V0SGVpZ2h0ID0gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7CisgICAgdmFyIGNlbGxQ
YWlySGVpZ2h0ID0gdGFibGUub2Zmc2V0SGVpZ2h0OworICAgIHZhciBudW1iZXJPZlJlcHMgPSB0
YXJnZXRIZWlnaHQgLyBjZWxsUGFpckhlaWdodCAqIDI7CisgICAgdmFyIGk7CisgICAgZm9yIChp
ID0gMDsgaSA8IG51bWJlck9mUmVwczsgaSsrKSB7CisgICAgICAgIHZhciBwID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgndHInKTsKKyAgICAgICAgcC5pbm5lckhUTUwgPSAnPHRkPjxkaXYgaWQ9
ImdyZWVuYm94Ij48L2Rpdj48L3RkPic7CisgICAgICAgIHRhYmxlLmFwcGVuZENoaWxkKHApOwor
ICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CisgICAgICAgIHAu
aW5uZXJIVE1MID0gJzx0ZD48ZGl2IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+JzsKKyAgICAgICAg
dGFibGUuYXBwZW5kQ2hpbGQocCk7CisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoInNjcm9sbCIsIHJlY29yZFNjcm9sbCk7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNld2hlZWwiLCByZWNvcmRXaGVlbCk7Cit9CisKK2Z1bmN0aW9uIGZpcnN0R2VzdHVyZVNj
cm9sbCgpCit7CisgICAgZGVidWcoImZpcnN0IGdlc3R1cmUiKTsKKyAgICBldmVudFNlbmRlci5n
ZXN0dXJlU2Nyb2xsQmVnaW4oOTUsIDEyKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xs
VXBkYXRlKDAsIC0xMDApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwg
LTEwKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOworCisgICAgLy8g
V2FpdCBmb3IgbGF5b3V0LgorICAgIGNoZWNrU2Nyb2xsT2Zmc2V0KCk7Cit9CisKK2Z1bmN0aW9u
IHNlY29uZEdlc3R1cmVTY3JvbGwoKQoreworICAgIGRlYnVnKCJzZWNvbmQgZ2VzdHVyZSIpOwor
ICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdpbigxMiwgOTcpOworICAgIGV2ZW50U2Vu
ZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTk1KTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJl
U2Nyb2xsVXBkYXRlKDAsIC0yMDApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQo
MCwgMCk7CisKKyAgICAvLyBXYWl0IGZvciBsYXlvdXQuCisgICAgY2hlY2tTY3JvbGxPZmZzZXQo
KTsKKworICAgIC8vIEluIHRoaXMgdGVzdCB3ZSBkbyBub3QgZXhwZWN0IGFueSBzY3JvbGwgZXZl
bnRzIHRvCisgICAgLy8gYmUgcmVjZWl2ZWQgYnkgdGhlIGV2ZW50IGxpc3RlbmVyLCBzbyB3ZSBz
aWduYWwKKyAgICAvLyB0aGUgZW5kIG9mIHRoZSB0ZXN0IGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlv
biBpbnN0ZWFkCisgICAgLy8gb2YgcmVseWluZyBvbiByZWNvcmRTY3JvbGwoKSB0byBkbyBpdC4K
KyAgICBmaW5pc2hUZXN0KCk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgYnVp
bGRQYWdlKCk7CisgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBkZXNjcmlw
dGlvbignVGhpcyB0ZXN0cyB0aGF0IGEgcGFnZSBjYW5ub3QgYmUgc2Nyb2xsZWQgdmVydGljYWxs
eSB3aXRoIHRvdWNoIGlmIGl0cyBib2R5IGhhcyBzdHlsZSBvdmVyZmxvdy15OmhpZGRlbiAnICsK
KyAgICAgICAgICAgICAgICAgICAgJ2FuZCB0aGUgc2Nyb2xsIGV2ZW50IGlzIHByb3BvZ2F0ZWQg
ZnJvbSBhIHNjcm9sbGFibGUgY2hpbGQgZGl2LicpOworCisgICAgICAgIGlmIChjaGVja1Rlc3RE
ZXBlbmRlbmNpZXMoKSkKKyAgICAgICAgICAgIGZpcnN0R2VzdHVyZVNjcm9sbCgpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBleGl0SWZOZWNlc3NhcnkoKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlLiAgVG91Y2ggc2Ny
b2xsIHRoZSByZWQgcmVjdCB0byBsb2cuIik7CisgICAgfQorfQorCitmdW5jdGlvbiBmaW5pc2hU
ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGlmIChnZXN0
dXJlc09jY3VycmVkID09IGV4cGVjdGVkR2VzdHVyZXNUb3RhbCkgeworICAgICAgICAgICAgc2hv
dWxkQmUoJ3Njcm9sbEV2ZW50c09jY3VycmVkJywgZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1cnJl
ZCk7CisgICAgICAgICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgICAgICAgICAg
aXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJv
ZHkteGhpZGRlbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41YzlhYTNiYTkwYjhiNTU3MmFiMGFhYzZhNGIxNGZjNTNhOTczNjM2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3Vj
aC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteGhpZGRlbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MCBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgcGFnZSBjYW5ub3QgYmUgc2Nyb2xsZWQgaG9yaXpvbnRh
bGx5IHdpdGggdG91Y2ggKGJ1dCBjYW4gc3RpbGwgYmUgc2Nyb2xsZWQgdmVydGljYWxseSkgaWYg
aXRzIGJvZHkgaGFzIHN0eWxlIG92ZXJmbG93LXg6aGlkZGVuLiBUaGUgc2Nyb2xsIGV2ZW50cyBp
biB0aGlzIHRlc3QgaGF2ZSBib3RoIGFuIHggYW5kIHkgY29tcG9uZW50LgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworZ2VzdHVyZSBldmVudHMgbm90IGltcGxlbWVudGVkIG9uIHRo
aXMgcGxhdGZvcm0gb3IgZ2VzdHVyZSBldmVudCBzY3JvbGxpbmcgb2YgYSBkb2N1bWVudCBpcyBi
cm9rZW4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNo
LWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTdjN2FiNGRiYTdkYzZmOTFkM2MzNjU1ZjhlOTZmNTlmN2FhZGU1Mwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUv
dG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXhoaWRkZW4uaHRtbApAQCAtMCwwICsxLDE0OSBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9nZXN0
dXJlLWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyN0b3Vj
aHRhcmdldCB7CisgIHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAgYmFja2dyb3Vu
ZDogd2hpdGU7CisgIG92ZXJmbG93OmhpZGRlbjsKK30KKworOjotd2Via2l0LXNjcm9sbGJhciB7
CisgICAgd2lkdGg6IDBweDsKKyAgICBoZWlnaHQ6IDBweDsKK30KKworI2dyZWVuYm94IHsKKyAg
d2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4OworICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAg
cGFkZGluZzogMHB4OworICBtYXJnaW46IDBweDsKK30KKworI3JlZGJveCB7CisgIHdpZHRoOiAx
MDBweDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAgYmFja2dyb3VuZDogcmVkOworICBwYWRkaW5nOiAw
cHg7CisgIG1hcmdpbjogMHB4OworfQorCit0ZCB7CisgIHBhZGRpbmc6IDBweDsKK30KKzwvc3R5
bGU+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0ibWFyZ2luOjA7IG92ZXJmbG93LXg6aGlkZGVuOyIg
b25sb2FkPSJydW5UZXN0KCk7Ij4KKworPHRhYmxlIGlkPSJob3Jpem9udGFsX3RhYmxlX3RvX2Zp
bGwiPgorICA8dHIgaWQ9ImZpcnN0cm93Ij4KKyAgICA8dGQ+PGRpdiBpZD0icmVkYm94Ij48L2Rp
dj48L3RkPgorICAgIDx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD4KKyAgPC90cj4K
KzwvdGFibGU+CisKKzx0YWJsZSBpZD0idmVydGljYWxfdGFibGVfdG9fZmlsbCI+CisgICAgPHRy
Pjx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD48L3RyPgorICAgIDx0cj48dGQ+PGRp
diBpZD0icmVkYm94Ij48L2Rpdj48L3RkPjwvdHI+Cis8L3RhYmxlPgorCis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgorCit2YXIgZXhwZWN0ZWRHZXN0dXJlc1RvdGFsID0gMjsKK3ZhciBnZXN0
dXJlc09jY3VycmVkID0gMDsKK3ZhciBzY3JvbGxBbW91bnRYID0gWycwJywgJzAnXTsKK3ZhciBz
Y3JvbGxBbW91bnRZID0gWycxMTAnLCAnMjA1J107Cit2YXIgd2hlZWxFdmVudHNPY2N1cnJlZCA9
IDA7Cit2YXIgZXhwZWN0ZWRXaGVlbEV2ZW50c09jY3VycmVkID0gWycwJywgJzAnXTsKK3ZhciBz
Y3JvbGxFdmVudHNPY2N1cnJlZCA9IDA7Cit2YXIgZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1cnJl
ZCA9ICcxJzsKK3ZhciBzY3JvbGxlZEVsZW1lbnQgPSAnZG9jdW1lbnQuYm9keScKKworLy8gQWx3
YXlzIGNvbnN0cnVjdCBhIHBhZ2UgbGFyZ2VyIHRoYW4gdGhlIHZlcnRpY2FsIGhlaWdodCBvZiB0
aGUgd2luZG93LgorZnVuY3Rpb24gYnVpbGRQYWdlKCkKK3sKKyAgICAvLyBidWlsZCB2ZXJ0aWNh
bCB0YWJsZQorICAgIHZhciB0YWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2ZXJ0aWNh
bF90YWJsZV90b19maWxsJyk7CisgICAgdmFyIHRhcmdldEhlaWdodCA9IGRvY3VtZW50LmJvZHku
b2Zmc2V0SGVpZ2h0OworICAgIHZhciBjZWxsUGFpckhlaWdodCA9IHRhYmxlLm9mZnNldEhlaWdo
dDsKKyAgICB2YXIgbnVtYmVyT2ZSZXBzID0gdGFyZ2V0SGVpZ2h0IC8gY2VsbFBhaXJIZWlnaHQg
KiAyOworICAgIHZhciBpOworICAgIGZvciAoaSA9IDA7IGkgPCBudW1iZXJPZlJlcHM7IGkrKykg
eworICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CisgICAgICAg
IHAuaW5uZXJIVE1MID0gJzx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD4nOworICAg
ICAgICB0YWJsZS5hcHBlbmRDaGlsZChwKTsKKyAgICAgICAgdmFyIHAgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCd0cicpOworICAgICAgICBwLmlubmVySFRNTCA9ICc8dGQ+PGRpdiBpZD0icmVk
Ym94Ij48L2Rpdj48L3RkPic7CisgICAgICAgIHRhYmxlLmFwcGVuZENoaWxkKHApOworICAgIH0K
KworICAgIC8vIGJ1aWxkIGhvcml6b250YWwgdGFibGUKKyAgICB2YXIgaG9yaXpvbnRhbFRhYmxl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hvcml6b250YWxfdGFibGVfdG9fZmlsbCcpOwor
ICAgIHZhciB0YWJsZVJvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaXJzdHJvdycpOwor
ICAgIHZhciB0YXJnZXRXaWR0aCA9IGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGg7CisgICAgdmFy
IGNlbGxQYWlyV2lkdGggPSBob3Jpem9udGFsVGFibGUub2Zmc2V0V2lkdGg7CisgICAgbnVtYmVy
T2ZSZXBzID0gdGFyZ2V0V2lkdGggLyBjZWxsUGFpcldpZHRoICogMjsKKyAgICBmb3IgKGkgPSAw
OyBpIDwgbnVtYmVyT2ZSZXBzOyBpKyspIHsKKyAgICAgICAgdmFyIHAgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCd0ZCcpOworICAgICAgICBwLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJyZWRib3gi
PjwvZGl2Pic7CisgICAgICAgIHRhYmxlUm93LmFwcGVuZENoaWxkKHApOworICAgICAgICB2YXIg
cCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CisgICAgICAgIHAuaW5uZXJIVE1MID0g
JzxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj4nOworICAgICAgICB0YWJsZVJvdy5hcHBlbmRDaGls
ZChwKTsKKyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgcmVj
b3JkU2Nyb2xsKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V3aGVlbCIsIHJl
Y29yZFdoZWVsKTsKK30KKworZnVuY3Rpb24gZmlyc3RHZXN0dXJlU2Nyb2xsKCkKK3sKKyAgICBk
ZWJ1ZygiZmlyc3QgZ2VzdHVyZSIpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdp
big5NSwgMTIpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoLTU1LCAtMTEw
KTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOworCisgICAgLy8gV2Fp
dCBmb3IgbGF5b3V0LgorICAgIGNoZWNrU2Nyb2xsT2Zmc2V0KCk7Cit9CisKK2Z1bmN0aW9uIHNl
Y29uZEdlc3R1cmVTY3JvbGwoKQoreworICAgIGRlYnVnKCJzZWNvbmQgZ2VzdHVyZSIpOworICAg
IGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdpbigxMiwgOTcpOworICAgIGV2ZW50U2VuZGVy
Lmdlc3R1cmVTY3JvbGxVcGRhdGUoLTQyLCAtOTUpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVT
Y3JvbGxFbmQoMCwgMCk7CisKKyAgICAvLyBXYWl0IGZvciBsYXlvdXQuCisgICAgY2hlY2tTY3Jv
bGxPZmZzZXQoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBidWlsZFBhZ2Uo
KTsKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGRlc2NyaXB0aW9uKCdU
aGlzIHRlc3RzIHRoYXQgYSBwYWdlIGNhbm5vdCBiZSBzY3JvbGxlZCBob3Jpem9udGFsbHkgd2l0
aCB0b3VjaCAnICsKKyAgICAgICAgICAgICAgICAgICAgJyhidXQgY2FuIHN0aWxsIGJlIHNjcm9s
bGVkIHZlcnRpY2FsbHkpIGlmIGl0cyBib2R5IGhhcyBzdHlsZSBvdmVyZmxvdy14OmhpZGRlbi4g
JyArCisgICAgICAgICAgICAgICAgICAgICdUaGUgc2Nyb2xsIGV2ZW50cyBpbiB0aGlzIHRlc3Qg
aGF2ZSBib3RoIGFuIHggYW5kIHkgY29tcG9uZW50LicpOworCisgICAgICAgIGlmIChjaGVja1Rl
c3REZXBlbmRlbmNpZXMoKSkKKyAgICAgICAgICAgIGZpcnN0R2VzdHVyZVNjcm9sbCgpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBleGl0SWZOZWNlc3NhcnkoKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlLiAgVG91Y2gg
c2Nyb2xsIHRoZSByZWQgcmVjdCB0byBsb2cuIik7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS15aGlkZGVuLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Nj
cm9sbC1ib2R5LXloaWRkZW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ODkyYmEyOGZiNDZi
MmYwMTdiZGFkZThjOTg2NzdmYjc1M2UxN2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS15
aGlkZGVuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3RzIHRoYXQgYSBw
YWdlIGNhbm5vdCBiZSBzY3JvbGxlZCB2ZXJ0aWNhbGx5IHdpdGggdG91Y2ggKGJ1dCBjYW4gc3Rp
bGwgYmUgc2Nyb2xsZWQgaG9yaXpvbnRhbGx5KSBpZiBpdHMgYm9keSBoYXMgc3R5bGUgb3ZlcmZs
b3cteTpoaWRkZW4uIFRoZSBzY3JvbGwgZXZlbnRzIGluIHRoaXMgdGVzdCBoYXZlIGJvdGggYW4g
eCBhbmQgeSBjb21wb25lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitnZXN0
dXJlIGV2ZW50cyBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybSBvciBnZXN0dXJlIGV2
ZW50IHNjcm9sbGluZyBvZiBhIGRvY3VtZW50IGlzIGJyb2tlbgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXlo
aWRkZW4uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gt
Z2VzdHVyZS1ub3Njcm9sbC1ib2R5LXloaWRkZW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTZlODg3MDBh
NmQ4M2U0Mzg5MWNjMDQzMTc0MDE0ODM4YTU0ZTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJv
ZHkteWhpZGRlbi5odG1sCkBAIC0wLDAgKzEsMTQ5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2dlc3R1cmUtaGVscGVycy5qcyI+PC9zY3JpcHQ+
Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorI3RvdWNodGFyZ2V0IHsKKyAgd2lkdGg6IDEwMHB4
OworICBoZWlnaHQ6IDEwMHB4OworICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgb3ZlcmZsb3c6aGlk
ZGVuOworfQorCis6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKKyAgICB3aWR0aDogMHB4OworICAgIGhl
aWdodDogMHB4OworfQorCisjZ3JlZW5ib3ggeworICB3aWR0aDogMTAwcHg7CisgIGhlaWdodDog
MTAwcHg7CisgIGJhY2tncm91bmQ6IGdyZWVuOworICBwYWRkaW5nOiAwcHg7CisgIG1hcmdpbjog
MHB4OworfQorCisjcmVkYm94IHsKKyAgd2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4Owor
ICBiYWNrZ3JvdW5kOiByZWQ7CisgIHBhZGRpbmc6IDBweDsKKyAgbWFyZ2luOiAwcHg7Cit9CisK
K3RkIHsKKyAgcGFkZGluZzogMHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IHN0eWxl
PSJtYXJnaW46MDsgb3ZlcmZsb3cteTpoaWRkZW47IiBvbmxvYWQ9InJ1blRlc3QoKTsiPgorCis8
dGFibGUgaWQ9Imhvcml6b250YWxfdGFibGVfdG9fZmlsbCI+CisgIDx0ciBpZD0iZmlyc3Ryb3ci
PgorICAgIDx0ZD48ZGl2IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+CisgICAgPHRkPjxkaXYgaWQ9
ImdyZWVuYm94Ij48L2Rpdj48L3RkPgorICA8L3RyPgorPC90YWJsZT4KKworPHRhYmxlIGlkPSJ2
ZXJ0aWNhbF90YWJsZV90b19maWxsIj4KKyAgICA8dHI+PHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48
L2Rpdj48L3RkPjwvdHI+CisgICAgPHRyPjx0ZD48ZGl2IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+
PC90cj4KKzwvdGFibGU+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK3ZhciBleHBl
Y3RlZEdlc3R1cmVzVG90YWwgPSAyOwordmFyIGdlc3R1cmVzT2NjdXJyZWQgPSAwOwordmFyIHNj
cm9sbEFtb3VudFggPSBbJzU1JywgJzk3J107Cit2YXIgc2Nyb2xsQW1vdW50WSA9IFsnMCcsICcw
J107Cit2YXIgd2hlZWxFdmVudHNPY2N1cnJlZCA9IDA7Cit2YXIgZXhwZWN0ZWRXaGVlbEV2ZW50
c09jY3VycmVkID0gWycwJywgJzAnXTsKK3ZhciBzY3JvbGxFdmVudHNPY2N1cnJlZCA9IDA7Cit2
YXIgZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCA9ICcxJzsKK3ZhciBzY3JvbGxlZEVsZW1l
bnQgPSAnZG9jdW1lbnQuYm9keScKKworLy8gQWx3YXlzIGNvbnN0cnVjdCBhIHBhZ2UgbGFyZ2Vy
IHRoYW4gdGhlIHZlcnRpY2FsIGhlaWdodCBvZiB0aGUgd2luZG93LgorZnVuY3Rpb24gYnVpbGRQ
YWdlKCkKK3sKKyAgICAvLyBidWlsZCB2ZXJ0aWNhbCB0YWJsZQorICAgIHZhciB0YWJsZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd2ZXJ0aWNhbF90YWJsZV90b19maWxsJyk7CisgICAgdmFy
IHRhcmdldEhlaWdodCA9IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OworICAgIHZhciBjZWxs
UGFpckhlaWdodCA9IHRhYmxlLm9mZnNldEhlaWdodDsKKyAgICB2YXIgbnVtYmVyT2ZSZXBzID0g
dGFyZ2V0SGVpZ2h0IC8gY2VsbFBhaXJIZWlnaHQgKiAyOworICAgIHZhciBpOworICAgIGZvciAo
aSA9IDA7IGkgPCBudW1iZXJPZlJlcHM7IGkrKykgeworICAgICAgICB2YXIgcCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CisgICAgICAgIHAuaW5uZXJIVE1MID0gJzx0ZD48ZGl2IGlk
PSJncmVlbmJveCI+PC9kaXY+PC90ZD4nOworICAgICAgICB0YWJsZS5hcHBlbmRDaGlsZChwKTsK
KyAgICAgICAgdmFyIHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOworICAgICAgICBw
LmlubmVySFRNTCA9ICc8dGQ+PGRpdiBpZD0icmVkYm94Ij48L2Rpdj48L3RkPic7CisgICAgICAg
IHRhYmxlLmFwcGVuZENoaWxkKHApOworICAgIH0KKworICAgIC8vIGJ1aWxkIGhvcml6b250YWwg
dGFibGUKKyAgICB2YXIgaG9yaXpvbnRhbFRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2hvcml6b250YWxfdGFibGVfdG9fZmlsbCcpOworICAgIHZhciB0YWJsZVJvdyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdmaXJzdHJvdycpOworICAgIHZhciB0YXJnZXRXaWR0aCA9IGRvY3Vt
ZW50LmJvZHkub2Zmc2V0V2lkdGg7CisgICAgdmFyIGNlbGxQYWlyV2lkdGggPSBob3Jpem9udGFs
VGFibGUub2Zmc2V0V2lkdGg7CisgICAgbnVtYmVyT2ZSZXBzID0gdGFyZ2V0V2lkdGggLyBjZWxs
UGFpcldpZHRoICogMjsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtYmVyT2ZSZXBzOyBpKyspIHsK
KyAgICAgICAgdmFyIHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOworICAgICAgICBw
LmlubmVySFRNTCA9ICc8ZGl2IGlkPSJyZWRib3giPjwvZGl2Pic7CisgICAgICAgIHRhYmxlUm93
LmFwcGVuZENoaWxkKHApOworICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3RkJyk7CisgICAgICAgIHAuaW5uZXJIVE1MID0gJzxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj4n
OworICAgICAgICB0YWJsZVJvdy5hcHBlbmRDaGlsZChwKTsKKyAgICB9CisKKyAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgcmVjb3JkU2Nyb2xsKTsKKyAgICB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigibW91c2V3aGVlbCIsIHJlY29yZFdoZWVsKTsKK30KKworZnVuY3Rpb24g
Zmlyc3RHZXN0dXJlU2Nyb2xsKCkKK3sKKyAgICBkZWJ1ZygiZmlyc3QgZ2VzdHVyZSIpOworICAg
IGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdpbigxOTUsIDEyKTsKKyAgICBldmVudFNlbmRl
ci5nZXN0dXJlU2Nyb2xsVXBkYXRlKC01NSwgLTExMCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVy
ZVNjcm9sbEVuZCgwLCAwKTsKKworICAgIC8vIFdhaXQgZm9yIGxheW91dC4KKyAgICBjaGVja1Nj
cm9sbE9mZnNldCgpOworfQorCitmdW5jdGlvbiBzZWNvbmRHZXN0dXJlU2Nyb2xsKCkKK3sKKyAg
ICBkZWJ1Zygic2Vjb25kIGdlc3R1cmUiKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xs
QmVnaW4oMTIwLCAyNTUpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoLTQy
LCAtOTUpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CisKKyAgICAv
LyBXYWl0IGZvciBsYXlvdXQuCisgICAgY2hlY2tTY3JvbGxPZmZzZXQoKTsKK30KKworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5j
dGlvbiBydW5UZXN0KCkKK3sKKyAgICBidWlsZFBhZ2UoKTsKKyAgICBpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CisgICAgICAgIGRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHRoYXQgYSBwYWdlIGNh
bm5vdCBiZSBzY3JvbGxlZCB2ZXJ0aWNhbGx5IHdpdGggdG91Y2ggJyArCisgICAgICAgICAgICAg
ICAgICAgICcoYnV0IGNhbiBzdGlsbCBiZSBzY3JvbGxlZCBob3Jpem9udGFsbHkpIGlmIGl0cyBi
b2R5IGhhcyBzdHlsZSBvdmVyZmxvdy15OmhpZGRlbi4gJyArCisgICAgICAgICAgICAgICAgICAg
ICdUaGUgc2Nyb2xsIGV2ZW50cyBpbiB0aGlzIHRlc3QgaGF2ZSBib3RoIGFuIHggYW5kIHkgY29t
cG9uZW50LicpOworCisgICAgICAgIGlmIChjaGVja1Rlc3REZXBlbmRlbmNpZXMoKSkKKyAgICAg
ICAgICAgIGZpcnN0R2VzdHVyZVNjcm9sbCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBl
eGl0SWZOZWNlc3NhcnkoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0
IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlLiAgVG91Y2ggc2Nyb2xsIHRoZSByZWQgcmVjdCB0byBs
b2cuIik7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9z
Y3JvbGwtYm9keS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90
b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTM2OWI5MGVmYTAw
NmJkYmY3YTE3ZTkyODI4NTM4NzQ3MmZkM2FjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHku
aHRtbApAQCAtMCwwICsxLDE2NiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9nZXN0dXJlLWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHN0eWxlIHR5
cGU9InRleHQvY3NzIj4KKyN0b3VjaHRhcmdldCB7CisgIHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0
OiAxMDBweDsKKyAgYmFja2dyb3VuZDogd2hpdGU7CisgIG92ZXJmbG93OmhpZGRlbjsKK30KKwor
Ojotd2Via2l0LXNjcm9sbGJhciB7CisgICAgd2lkdGg6IDBweDsKKyAgICBoZWlnaHQ6IDBweDsK
K30KKworI2dyZWVuYm94IHsKKyAgd2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4OworICBi
YWNrZ3JvdW5kOiBncmVlbjsKKyAgcGFkZGluZzogMHB4OworICBtYXJnaW46IDBweDsKK30KKwor
I3JlZGJveCB7CisgIHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAgYmFja2dyb3Vu
ZDogcmVkOworICBwYWRkaW5nOiAwcHg7CisgIG1hcmdpbjogMHB4OworfQorCit0ZCB7CisgIHBh
ZGRpbmc6IDBweDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0ibWFyZ2luOjA7
IG92ZXJmbG93OmhpZGRlbjsiIG9ubG9hZD0icnVuVGVzdCgpOyI+CisKKzx0YWJsZSBpZD0iaG9y
aXpvbnRhbF90YWJsZV90b19maWxsIj4KKyAgPHRyIGlkPSJmaXJzdHJvdyI+CisgICAgPHRkPjxk
aXYgaWQ9InJlZGJveCI+PC9kaXY+PC90ZD4KKyAgICA8dGQ+PGRpdiBpZD0iZ3JlZW5ib3giPjwv
ZGl2PjwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorCis8dGFibGUgaWQ9InZlcnRpY2FsX3RhYmxl
X3RvX2ZpbGwiPgorICAgIDx0cj48dGQ+PGRpdiBpZD0iZ3JlZW5ib3giPjwvZGl2PjwvdGQ+PC90
cj4KKyAgICA8dHI+PHRkPjxkaXYgaWQ9InJlZGJveCI+PC9kaXY+PC90ZD48L3RyPgorPC90YWJs
ZT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwordmFyIGV4cGVjdGVkR2VzdHVyZXNU
b3RhbCA9IDI7Cit2YXIgZ2VzdHVyZXNPY2N1cnJlZCA9IDA7Cit2YXIgc2Nyb2xsQW1vdW50WCA9
IFsnMCcsICcwJ107Cit2YXIgc2Nyb2xsQW1vdW50WSA9IFsnMCcsICcwJ107Cit2YXIgd2hlZWxF
dmVudHNPY2N1cnJlZCA9IDA7Cit2YXIgZXhwZWN0ZWRXaGVlbEV2ZW50c09jY3VycmVkID0gWycw
JywgJzAnXTsKK3ZhciBzY3JvbGxFdmVudHNPY2N1cnJlZCA9IDA7Cit2YXIgZXhwZWN0ZWRTY3Jv
bGxFdmVudHNPY2N1cnJlZCA9ICcwJzsKK3ZhciBzY3JvbGxlZEVsZW1lbnQgPSAnZG9jdW1lbnQu
Ym9keScKKworLy8gQWx3YXlzIGNvbnN0cnVjdCBhIHBhZ2UgbGFyZ2VyIHRoYW4gdGhlIHZlcnRp
Y2FsIGhlaWdodCBvZiB0aGUgd2luZG93LgorZnVuY3Rpb24gYnVpbGRQYWdlKCkKK3sKKyAgICAv
LyBidWlsZCB2ZXJ0aWNhbCB0YWJsZQorICAgIHZhciB0YWJsZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd2ZXJ0aWNhbF90YWJsZV90b19maWxsJyk7CisgICAgdmFyIHRhcmdldEhlaWdodCA9
IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OworICAgIHZhciBjZWxsUGFpckhlaWdodCA9IHRh
YmxlLm9mZnNldEhlaWdodDsKKyAgICB2YXIgbnVtYmVyT2ZSZXBzID0gdGFyZ2V0SGVpZ2h0IC8g
Y2VsbFBhaXJIZWlnaHQgKiAyOworICAgIHZhciBpOworICAgIGZvciAoaSA9IDA7IGkgPCBudW1i
ZXJPZlJlcHM7IGkrKykgeworICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3RyJyk7CisgICAgICAgIHAuaW5uZXJIVE1MID0gJzx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9k
aXY+PC90ZD4nOworICAgICAgICB0YWJsZS5hcHBlbmRDaGlsZChwKTsKKyAgICAgICAgdmFyIHAg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOworICAgICAgICBwLmlubmVySFRNTCA9ICc8
dGQ+PGRpdiBpZD0icmVkYm94Ij48L2Rpdj48L3RkPic7CisgICAgICAgIHRhYmxlLmFwcGVuZENo
aWxkKHApOworICAgIH0KKworICAgIC8vIGJ1aWxkIGhvcml6b250YWwgdGFibGUKKyAgICB2YXIg
aG9yaXpvbnRhbFRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hvcml6b250YWxfdGFi
bGVfdG9fZmlsbCcpOworICAgIHZhciB0YWJsZVJvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdmaXJzdHJvdycpOworICAgIHZhciB0YXJnZXRXaWR0aCA9IGRvY3VtZW50LmJvZHkub2Zmc2V0
V2lkdGg7CisgICAgdmFyIGNlbGxQYWlyV2lkdGggPSBob3Jpem9udGFsVGFibGUub2Zmc2V0V2lk
dGg7CisgICAgbnVtYmVyT2ZSZXBzID0gdGFyZ2V0V2lkdGggLyBjZWxsUGFpcldpZHRoICogMjsK
KyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtYmVyT2ZSZXBzOyBpKyspIHsKKyAgICAgICAgdmFyIHAg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOworICAgICAgICBwLmlubmVySFRNTCA9ICc8
ZGl2IGlkPSJyZWRib3giPjwvZGl2Pic7CisgICAgICAgIHRhYmxlUm93LmFwcGVuZENoaWxkKHAp
OworICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CisgICAgICAg
IHAuaW5uZXJIVE1MID0gJzxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj4nOworICAgICAgICB0YWJs
ZVJvdy5hcHBlbmRDaGlsZChwKTsKKyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigic2Nyb2xsIiwgcmVjb3JkU2Nyb2xsKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2V3aGVlbCIsIHJlY29yZFdoZWVsKTsKK30KKworZnVuY3Rpb24gZmlyc3RHZXN0dXJlU2Ny
b2xsKCkKK3sKKyAgICBkZWJ1ZygiZmlyc3QgZ2VzdHVyZSIpOworICAgIGV2ZW50U2VuZGVyLmdl
c3R1cmVTY3JvbGxCZWdpbig5NSwgMTIpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxV
cGRhdGUoLTU1LCAtMTEwKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDAp
OworCisgICAgLy8gV2FpdCBmb3IgbGF5b3V0LgorICAgIGNoZWNrU2Nyb2xsT2Zmc2V0KCk7Cit9
CisKK2Z1bmN0aW9uIHNlY29uZEdlc3R1cmVTY3JvbGwoKQoreworICAgIGRlYnVnKCJzZWNvbmQg
Z2VzdHVyZSIpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdpbigxMiwgOTcpOwor
ICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoLTQyLCAtOTUpOworICAgIGV2ZW50
U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CisKKyAgICAvLyBXYWl0IGZvciBsYXlvdXQu
CisgICAgY2hlY2tTY3JvbGxPZmZzZXQoKTsKKworICAgIC8vIEluIHRoaXMgdGVzdCB3ZSBkbyBu
b3QgZXhwZWN0IGFueSBzY3JvbGwgZXZlbnRzIHRvCisgICAgLy8gYmUgcmVjZWl2ZWQgYnkgdGhl
IGV2ZW50IGxpc3RlbmVyLCBzbyB3ZSBzaWduYWwKKyAgICAvLyB0aGUgZW5kIG9mIHRoZSB0ZXN0
IGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBpbnN0ZWFkCisgICAgLy8gb2YgcmVseWluZyBvbiBy
ZWNvcmRTY3JvbGwoKSB0byBkbyBpdC4KKyAgICBmaW5pc2hUZXN0KCk7Cit9CisKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rp
b24gcnVuVGVzdCgpCit7CisgICAgYnVpbGRQYWdlKCk7CisgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgICAgICBkZXNjcmlwdGlvbignVGhpcyB0ZXN0cyB0aGF0IGEgcGFnZSBjYW5u
b3QgYmUgc2Nyb2xsZWQgd2l0aCB0b3VjaCBpZiBpdHMgYm9keSBoYXMgc3R5bGUgb3ZlcmZsb3c6
aGlkZGVuLicpOworCisgICAgICAgIGlmIChjaGVja1Rlc3REZXBlbmRlbmNpZXMoKSkKKyAgICAg
ICAgICAgIGZpcnN0R2VzdHVyZVNjcm9sbCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBl
eGl0SWZOZWNlc3NhcnkoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0
IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlLiAgVG91Y2ggc2Nyb2xsIHRoZSByZWQgcmVjdCB0byBs
b2cuIik7CisgICAgfQorfQorCitmdW5jdGlvbiBmaW5pc2hUZXN0KCkKK3sKKyAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGlmIChnZXN0dXJlc09jY3VycmVkID09IGV4cGVj
dGVkR2VzdHVyZXNUb3RhbCkgeworICAgICAgICAgICAgc2hvdWxkQmUoJ3Njcm9sbEV2ZW50c09j
Y3VycmVkJywgZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCk7CisgICAgICAgICAgICBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgICAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQo
KTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91
Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1kaXYtbm90LXByb3BhZ2F0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3Jv
bGwtZGl2LW5vdC1wcm9wYWdhdGVkLmh0bWwKaW5kZXggMjgwMTQwOWQ3YjA0M2MyNDUwOWI2NTcx
ZGI5YzQ1Yjk2YjAxZGUxZC4uZDBjNWQ1MGNiNmM5OGJjYzBlOGRmZmI2YmY5Y2Q1Mjg3YmM0OWI1
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3Vj
aC1nZXN0dXJlLXNjcm9sbC1kaXYtbm90LXByb3BhZ2F0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi1ub3Qt
cHJvcGFnYXRlZC5odG1sCkBAIC05MiwyNSArOTIsNiBAQCB2YXIgc2Nyb2xsZWRFbGVtZW50ID0g
J21vdmVkYm94JwogdmFyIHNjcm9sbEV2ZW50c09jY3VycmVkID0gMDsKIHZhciBleHBlY3RlZFNj
cm9sbEV2ZW50c09jY3VycmVkID0gJzEnOwogCi0KLWZ1bmN0aW9uIHJlY29yZFNjcm9sbChldmVu
dCkgewotCWRlYnVnKCdzY3JvbGwgZXZlbnQgJyArIHNjcm9sbEV2ZW50c09jY3VycmVkICsgJys+
ICcgKyBldmVudC50YXJnZXQpOwotCXNjcm9sbEV2ZW50c09jY3VycmVkKys7Ci0KLQlpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7Ci0JCS8vIEJlY2F1c2Ugc2Nyb2xsIGV2ZW50cyBhcnJpdmUgYXN5
bmNocm9ub3VzbHksIG9ubHkgb25lIHdpbGwgYXJyaXZlLgotCSAgICBpZiAoZ2VzdHVyZXNPY2N1
cnJlZCA9PSBleHBlY3RlZEdlc3R1cmVzVG90YWwpIHsKLQkJCXNob3VsZEJlKCdzY3JvbGxFdmVu
dHNPY2N1cnJlZCcsIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQpOwotCSAgICAgICAgLy8g
SWYgd2UndmUgZ290IGhlcmUsIHdlJ3ZlIHBhc3NlZC4KLQkgICAgICAgIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Ci0JICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotCSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotCSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwotCQl9Ci0gICAgfQotfQotCi0KIGZ1bmN0aW9uIGZpcnN0R2VzdHVyZVNjcm9sbCgpCiB7
CiAgICAgZGVidWcoImZpcnN0IGdlc3R1cmUiKTsKQEAgLTEyNiw3ICsxMDcsOCBAQCBmdW5jdGlv
biBzZWNvbmRHZXN0dXJlU2Nyb2xsKCkKIHsKICAgICBkZWJ1Zygic2Vjb25kIGdlc3R1cmUiKTsK
ICAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsQmVnaW4oMTIsIDQwKTsKLSAgICBldmVudFNl
bmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9uKDAsIC02MCk7CisgICAg
ZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZVdpdGhvdXRQcm9wYWdhdGlvbigwLCAtNTAp
OworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGVXaXRob3V0UHJvcGFnYXRpb24o
MCwgLTEwKTsKICAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOwogCiAgICAg
Ly8gV2FpdCBmb3IgbGF5b3V0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1kaXYtcHJvcGFnYXRlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9s
bC1kaXYtcHJvcGFnYXRlZC5odG1sCmluZGV4IDM0M2UxNWY1Y2UyOWIyZWNiNjlkMjkyMWQyZWZj
NjMxNmE1YTFkZDQuLjk5NzY5ODU0YWFjNThhNmNlNWYzNzU3OWNkYTg0ZjU3NDg1ZmQ2MzcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2Vz
dHVyZS1zY3JvbGwtZGl2LXByb3BhZ2F0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi1wcm9wYWdhdGVkLmh0
bWwKQEAgLTkyLDI1ICs5Miw2IEBAIHZhciBzY3JvbGxlZEVsZW1lbnQgPSAnbW92ZWRib3gnCiB2
YXIgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAwOwogdmFyIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2Nj
dXJyZWQgPSAnMSc7CiAKLQotZnVuY3Rpb24gcmVjb3JkU2Nyb2xsKGV2ZW50KSB7Ci0JZGVidWco
J3Njcm9sbCBldmVudCAnICsgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgKyAnKz4gJyArIGV2ZW50LnRh
cmdldCk7Ci0Jc2Nyb2xsRXZlbnRzT2NjdXJyZWQrKzsKLQotCWlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKLQkJLy8gQmVjYXVzZSBzY3JvbGwgZXZlbnRzIGFycml2ZSBhc3luY2hyb25vdXNseSwg
b25seSBvbmUgd2lsbCBhcnJpdmUuCi0JICAgIGlmIChnZXN0dXJlc09jY3VycmVkID09IGV4cGVj
dGVkR2VzdHVyZXNUb3RhbCkgewotCQkJc2hvdWxkQmUoJ3Njcm9sbEV2ZW50c09jY3VycmVkJywg
ZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCk7Ci0JICAgICAgICAvLyBJZiB3ZSd2ZSBnb3Qg
aGVyZSwgd2UndmUgcGFzc2VkLgotCSAgICAgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
LQkgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0JICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0JICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0JCX0KLSAg
ICB9Ci19Ci0KLQogZnVuY3Rpb24gZmlyc3RHZXN0dXJlU2Nyb2xsKCkKIHsKICAgICBkZWJ1Zygi
Zmlyc3QgZ2VzdHVyZSIpOwpAQCAtMTI2LDcgKzEwNyw4IEBAIGZ1bmN0aW9uIHNlY29uZEdlc3R1
cmVTY3JvbGwoKQogewogICAgIGRlYnVnKCJzZWNvbmQgZ2VzdHVyZSIpOwogICAgIGV2ZW50U2Vu
ZGVyLmdlc3R1cmVTY3JvbGxCZWdpbigxMiwgNDApOwotICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVT
Y3JvbGxVcGRhdGUoMCwgLTYwKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRl
KDAsIC01MCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMTApOwog
ICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CiAKICAgICAvLyBXYWl0IGZv
ciBsYXlvdXQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0
dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi10d2ljZS1wcm9wYWdhdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRp
di10d2ljZS1wcm9wYWdhdGVkLmh0bWwKaW5kZXggOGY2NTFkNDViY2M5YTA3MjA4ZTIzMGU0OTFh
ZWQ0OTAzMjQ2OTFmMC4uMWI2ZTYxZWIzMzc5N2NiNTU2MTY0MjYzNGU4OGM1YTU4ZWIxZGM4NSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1n
ZXN0dXJlLXNjcm9sbC1kaXYtdHdpY2UtcHJvcGFnYXRlZC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZGl2LXR3aWNl
LXByb3BhZ2F0ZWQuaHRtbApAQCAtMTE2LDMwICsxMTYsMTIgQEAgdmFyIHNjcm9sbGVkRWxlbWVu
dCA9ICdtb3ZlZGJveCcKIHZhciBzY3JvbGxFdmVudHNPY2N1cnJlZCA9IDA7CiB2YXIgZXhwZWN0
ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCA9ICcxJzsKIAotCi1mdW5jdGlvbiByZWNvcmRTY3JvbGwo
ZXZlbnQpIHsKLQlkZWJ1Zygnc2Nyb2xsIGV2ZW50ICcgKyBzY3JvbGxFdmVudHNPY2N1cnJlZCAr
ICcrPiAnICsgZXZlbnQudGFyZ2V0KTsKLQlzY3JvbGxFdmVudHNPY2N1cnJlZCsrOwotCi0JaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgewotCQkvLyBCZWNhdXNlIHNjcm9sbCBldmVudHMgYXJyaXZl
IGFzeW5jaHJvbm91c2x5LCBvbmx5IG9uZSB3aWxsIGFycml2ZS4KLQkgICAgaWYgKGdlc3R1cmVz
T2NjdXJyZWQgPT0gZXhwZWN0ZWRHZXN0dXJlc1RvdGFsKSB7Ci0JCQlzaG91bGRCZSgnc2Nyb2xs
RXZlbnRzT2NjdXJyZWQnLCBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkKTsKLQkgICAgICAg
IC8vIElmIHdlJ3ZlIGdvdCBoZXJlLCB3ZSd2ZSBwYXNzZWQuCi0JICAgICAgICBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwotCSAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLQkgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLQkgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLQkJfQotICAgIH0KLX0KLQotCiBmdW5jdGlvbiBmaXJzdEdlc3R1cmVTY3JvbGwo
KQogewogICAgIGRlYnVnKCJmaXJzdCBnZXN0dXJlIik7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVy
ZVNjcm9sbEJlZ2luKDEwLCA3Mik7Ci0gICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0
ZSgwLCAtMjMwKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC0yMDAp
OworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTMwKTsKICAgICBldmVu
dFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOwogCiAgICAgLy8gV2FpdCBmb3IgbGF5b3V0
LgpAQCAtMTUwLDcgKzEzMiw4IEBAIGZ1bmN0aW9uIHNlY29uZEdlc3R1cmVTY3JvbGwoKQogewog
ICAgIGRlYnVnKCJzZWNvbmQgZ2VzdHVyZSIpOwogICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3Jv
bGxCZWdpbigxMiwgNDApOwotICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwg
LTQ1KTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC0yMCk7CisgICAg
ZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMjUpOwogICAgIGV2ZW50U2VuZGVy
Lmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CiAKICAgICAvLyBXYWl0IGZvciBsYXlvdXQuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1
cmUtc2Nyb2xsLWlmcmFtZS1ub3QtcHJvcGFnYXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1pZnJhbWUtbm90LXByb3Bh
Z2F0ZWQuaHRtbAppbmRleCBhNmQ5ZjIyYzMwMDVhNDUzMjA1OGIzNjM5NjgzZjM3MmY3YmIwOWY3
Li5hOTljMjY1NTc3OGVjZjRkYmY0MTIyOTEyMTk5YTcyNTU5ZTU3M2QwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xs
LWlmcmFtZS1ub3QtcHJvcGFnYXRlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtaWZyYW1lLW5vdC1wcm9wYWdhdGVk
Lmh0bWwKQEAgLTcxLDI1ICs3MSw2IEBAIHZhciBzY3JvbGxlZEVsZW1lbnQgPSAnbW92ZWRib3gn
CiB2YXIgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAwOwogdmFyIGV4cGVjdGVkU2Nyb2xsRXZlbnRz
T2NjdXJyZWQgPSAnMSc7CiAKLQotZnVuY3Rpb24gcmVjb3JkU2Nyb2xsKGV2ZW50KSB7Ci0JZGVi
dWcoJ3Njcm9sbCBldmVudCAnICsgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgKyAnKz4gJyArIGV2ZW50
LnRhcmdldCk7Ci0Jc2Nyb2xsRXZlbnRzT2NjdXJyZWQrKzsKLQotCWlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKLQkJLy8gQmVjYXVzZSBzY3JvbGwgZXZlbnRzIGFycml2ZSBhc3luY2hyb25vdXNs
eSwgb25seSBvbmUgd2lsbCBhcnJpdmUuCi0JICAgIGlmIChnZXN0dXJlc09jY3VycmVkID09IGV4
cGVjdGVkR2VzdHVyZXNUb3RhbCkgewotCQkJc2hvdWxkQmUoJ3Njcm9sbEV2ZW50c09jY3VycmVk
JywgZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCk7Ci0JICAgICAgICAvLyBJZiB3ZSd2ZSBn
b3QgaGVyZSwgd2UndmUgcGFzc2VkLgotCSAgICAgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKLQkgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0JICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0JICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0JCX0K
LSAgICB9Ci19Ci0KLQogZnVuY3Rpb24gZmlyc3RHZXN0dXJlU2Nyb2xsKCkKIHsKICAgICBkZWJ1
ZygiZmlyc3QgZ2VzdHVyZSIpOwpAQCAtMTA1LDcgKzg2LDggQEAgZnVuY3Rpb24gc2Vjb25kR2Vz
dHVyZVNjcm9sbCgpCiB7CiAgICAgZGVidWcoInNlY29uZCBnZXN0dXJlIik7CiAgICAgZXZlbnRT
ZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDEyLCA0MCk7Ci0gICAgZXZlbnRTZW5kZXIuZ2VzdHVy
ZVNjcm9sbFVwZGF0ZVdpdGhvdXRQcm9wYWdhdGlvbigwLCAtMTAwKTsKKyAgICBldmVudFNlbmRl
ci5nZXN0dXJlU2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9uKDAsIC0xMCk7CisgICAgZXZl
bnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZVdpdGhvdXRQcm9wYWdhdGlvbigwLCAtNTApOwog
ICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CiAKICAgICAvLyBXYWl0IGZv
ciBsYXlvdXQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0
dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWlmcmFtZS1wcm9wYWdhdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWlmcmFt
ZS1wcm9wYWdhdGVkLmh0bWwKaW5kZXggMWEzYjVhZDk4N2Q3Mjk3NTA2YjBhM2UzNzAzMzk1MWY5
M2MyOWE1OC4uZDNjMGFmNGM5YmE5MzVjYjZjODZlMDM0ZDU1NDk4ZDc0NjAzNDIyZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJl
LXNjcm9sbC1pZnJhbWUtcHJvcGFnYXRlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtaWZyYW1lLXByb3BhZ2F0ZWQu
aHRtbApAQCAtNzEsMjUgKzcxLDYgQEAgdmFyIHNjcm9sbGVkRWxlbWVudCA9ICdtb3ZlZGJveCcK
IHZhciBzY3JvbGxFdmVudHNPY2N1cnJlZCA9IDA7CiB2YXIgZXhwZWN0ZWRTY3JvbGxFdmVudHNP
Y2N1cnJlZCA9ICcxJzsKIAotCi1mdW5jdGlvbiByZWNvcmRTY3JvbGwoZXZlbnQpIHsKLQlkZWJ1
Zygnc2Nyb2xsIGV2ZW50ICcgKyBzY3JvbGxFdmVudHNPY2N1cnJlZCArICcrPiAnICsgZXZlbnQu
dGFyZ2V0KTsKLQlzY3JvbGxFdmVudHNPY2N1cnJlZCsrOwotCi0JaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgewotCQkvLyBCZWNhdXNlIHNjcm9sbCBldmVudHMgYXJyaXZlIGFzeW5jaHJvbm91c2x5
LCBvbmx5IG9uZSB3aWxsIGFycml2ZS4KLQkgICAgaWYgKGdlc3R1cmVzT2NjdXJyZWQgPT0gZXhw
ZWN0ZWRHZXN0dXJlc1RvdGFsKSB7Ci0JCQlzaG91bGRCZSgnc2Nyb2xsRXZlbnRzT2NjdXJyZWQn
LCBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkKTsKLQkgICAgICAgIC8vIElmIHdlJ3ZlIGdv
dCBoZXJlLCB3ZSd2ZSBwYXNzZWQuCi0JICAgICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwotCSAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLQkgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLQkgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLQkJfQot
ICAgIH0KLX0KLQotCiBmdW5jdGlvbiBmaXJzdEdlc3R1cmVTY3JvbGwoKQogewogICAgIGRlYnVn
KCJmaXJzdCBnZXN0dXJlIik7CkBAIC0xMDUsNyArODYsOCBAQCBmdW5jdGlvbiBzZWNvbmRHZXN0
dXJlU2Nyb2xsKCkKIHsKICAgICBkZWJ1Zygic2Vjb25kIGdlc3R1cmUiKTsKICAgICBldmVudFNl
bmRlci5nZXN0dXJlU2Nyb2xsQmVnaW4oMTIsIDQwKTsKLSAgICBldmVudFNlbmRlci5nZXN0dXJl
U2Nyb2xsVXBkYXRlKDAsIC0xMDApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRh
dGUoMCwgLTEwKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC01MCk7
CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKIAogICAgIC8vIFdhaXQg
Zm9yIGxheW91dC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcGFnZS1ub3QtcHJvcGFnYXRlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1w
YWdlLW5vdC1wcm9wYWdhdGVkLmh0bWwKaW5kZXggYjM4NTI0NWZjMTljM2IzZDNiOTg5NTkwNDYx
MGQ2MDRiYjI5ZjE2YS4uNDZkODM2YzIwYzFkOTNiNTAxOGMyZjVlMzA2ZmFlNzYyNDhmMjYzOSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1n
ZXN0dXJlLXNjcm9sbC1wYWdlLW5vdC1wcm9wYWdhdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLW5vdC1w
cm9wYWdhdGVkLmh0bWwKQEAgLTg2LDIzICs4Niw2IEBAIHZhciBzY3JvbGxlZEVsZW1lbnQgPSAn
ZG9jdW1lbnQuYm9keScKIHZhciBzY3JvbGxFdmVudHNPY2N1cnJlZCA9IDA7CiB2YXIgZXhwZWN0
ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCA9ICcxJzsKIAotZnVuY3Rpb24gcmVjb3JkU2Nyb2xsKGV2
ZW50KSB7Ci0JZGVidWcoJ3Njcm9sbCBldmVudCAnICsgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgKyAn
Kz4gJyArIGV2ZW50LnRhcmdldCk7Ci0Jc2Nyb2xsRXZlbnRzT2NjdXJyZWQrKzsKLQotCWlmICh3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKLQkJLy8gQmVjYXVzZSBzY3JvbGwgZXZlbnRzIGFycml2ZSBh
c3luY2hyb25vdXNseSwgb25seSBvbmUgd2lsbCBhcnJpdmUuCi0JICAgIGlmIChnZXN0dXJlc09j
Y3VycmVkID09IGV4cGVjdGVkR2VzdHVyZXNUb3RhbCkgewotCQkJc2hvdWxkQmUoJ3Njcm9sbEV2
ZW50c09jY3VycmVkJywgZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCk7Ci0JICAgICAgICAv
LyBJZiB3ZSd2ZSBnb3QgaGVyZSwgd2UndmUgcGFzc2VkLgotCSAgICAgICAgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKLQkgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0JICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0JICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci0JCX0KLSAgICB9Ci19Ci0KIC8vIEFsd2F5cyBjb25zdHJ1Y3QgYSBwYWdlIGxhcmdl
ciB0aGFuIHRoZSB2ZXJ0aWNhbCBoZWlnaHQgb2YgdGhlIHdpbmRvdy4KIGZ1bmN0aW9uIGJ1aWxk
UGFnZSgpCiB7CkBAIC0xMzYsNyArMTE5LDggQEAgZnVuY3Rpb24gc2Vjb25kR2VzdHVyZVNjcm9s
bCgpCiB7CiAgICAgZGVidWcoInNlY29uZCBnZXN0dXJlIik7CiAgICAgZXZlbnRTZW5kZXIuZ2Vz
dHVyZVNjcm9sbEJlZ2luKDEyLCA0MCk7Ci0gICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVw
ZGF0ZVdpdGhvdXRQcm9wYWdhdGlvbigwLCAtMjUwKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJl
U2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9uKDAsIC0yMDApOworICAgIGV2ZW50U2VuZGVy
Lmdlc3R1cmVTY3JvbGxVcGRhdGVXaXRob3V0UHJvcGFnYXRpb24oMCwgLTE2MCk7CiAgICAgZXZl
bnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKIAogICAgIC8vIFdhaXQgZm9yIGxheW91
dC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91
Y2gtZ2VzdHVyZS1zY3JvbGwtcGFnZS1wcm9wYWdhdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2UtcHJvcGFnYXRl
ZC5odG1sCmluZGV4IDA5MzA5NWM1ZWZiOTZjYmQyMmYyZjBlMWI3ZDVhY2ExZmE1MDhiZDUuLmRh
YTQ1NjdlODNmZDE3YWY3OTgxMTkyNzA0ZmVmM2I5MjZkOTk1YjAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcGFn
ZS1wcm9wYWdhdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLXByb3BhZ2F0ZWQuaHRtbApAQCAtODYsMjMg
Kzg2LDYgQEAgdmFyIHNjcm9sbGVkRWxlbWVudCA9ICdkb2N1bWVudC5ib2R5JwogdmFyIHNjcm9s
bEV2ZW50c09jY3VycmVkID0gMDsKIHZhciBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkID0g
JzEnOwogCi1mdW5jdGlvbiByZWNvcmRTY3JvbGwoZXZlbnQpIHsKLQlkZWJ1Zygnc2Nyb2xsIGV2
ZW50ICcgKyBzY3JvbGxFdmVudHNPY2N1cnJlZCArICcrPiAnICsgZXZlbnQudGFyZ2V0KTsKLQlz
Y3JvbGxFdmVudHNPY2N1cnJlZCsrOwotCi0JaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewotCQkv
LyBCZWNhdXNlIHNjcm9sbCBldmVudHMgYXJyaXZlIGFzeW5jaHJvbm91c2x5LCBvbmx5IG9uZSB3
aWxsIGFycml2ZS4KLQkgICAgaWYgKGdlc3R1cmVzT2NjdXJyZWQgPT0gZXhwZWN0ZWRHZXN0dXJl
c1RvdGFsKSB7Ci0JCQlzaG91bGRCZSgnc2Nyb2xsRXZlbnRzT2NjdXJyZWQnLCBleHBlY3RlZFNj
cm9sbEV2ZW50c09jY3VycmVkKTsKLQkgICAgICAgIC8vIElmIHdlJ3ZlIGdvdCBoZXJlLCB3ZSd2
ZSBwYXNzZWQuCi0JICAgICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwotCSAgICAgICAg
aXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLQkgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LQkgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLQkJfQotICAgIH0KLX0KLQog
Ly8gQWx3YXlzIGNvbnN0cnVjdCBhIHBhZ2UgbGFyZ2VyIHRoYW4gdGhlIHZlcnRpY2FsIGhlaWdo
dCBvZiB0aGUgd2luZG93LgogZnVuY3Rpb24gYnVpbGRQYWdlKCkKIHsKQEAgLTEzNiw3ICsxMTks
OCBAQCBmdW5jdGlvbiBzZWNvbmRHZXN0dXJlU2Nyb2xsKCkKIHsKICAgICBkZWJ1Zygic2Vjb25k
IGdlc3R1cmUiKTsKICAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsQmVnaW4oMTIsIDQwKTsK
LSAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC0yNTApOworICAgIGV2ZW50
U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTIwMCk7CisgICAgZXZlbnRTZW5kZXIuZ2Vz
dHVyZVNjcm9sbFVwZGF0ZSgwLCAtMTYwKTsKICAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xs
RW5kKDAsIDApOwogCiAgICAgLy8gV2FpdCBmb3IgbGF5b3V0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1
cmUtc2Nyb2xsLXBhZ2UuaHRtbAppbmRleCA0ZTYwZTVjYWUwZTliNTFlYWRiNzU0OGQ3YjdjNjBk
MjgzMWJkOWE4Li42ZTEwMzM2MmE0ZmY5YjBlYTNiNDQzZTBmNjA4ZDY5NmI2MTJlMDVhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1
cmUtc2Nyb2xsLXBhZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2UuaHRtbApAQCAtMTA1LDcgKzEwNSw3IEBA
IGZ1bmN0aW9uIGZpcnN0R2VzdHVyZVNjcm9sbCgpCiBmdW5jdGlvbiBzZWNvbmRHZXN0dXJlU2Ny
b2xsKCkKIHsKICAgICBkZWJ1Zygic2Vjb25kIGdlc3R1cmUiKTsKLSAgICBldmVudFNlbmRlci5n
ZXN0dXJlU2Nyb2xsQmVnaW4oMTIsIDQwKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xs
QmVnaW4oODAwLCA0MCk7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAt
MzApOwogICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTMwKTsKICAgICBl
dmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0
dXJlLW5vc2Nyb2xsLWJvZHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJv
ZHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0Y2FmOWFhNzVkNDRkMmEwMGM1MzFiYjJiMGZk
MWE5YjE1ODFkMTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9k
eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgcGFnZSBj
YW5ub3QgYmUgc2Nyb2xsZWQgd2l0aCB0b3VjaCBpZiBpdHMgYm9keSBoYXMgc3R5bGUgb3ZlcmZs
b3c6aGlkZGVuLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworZmlyc3QgZ2VzdHVy
ZQorUEFTUyBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCBpcyAwCitQQVNTIGRvY3VtZW50LmJvZHku
c2Nyb2xsTGVmdCBpcyAwCitQQVNTIHdoZWVsRXZlbnRzT2NjdXJyZWQgaXMgMAorc2Vjb25kIGdl
c3R1cmUKK1BBU1MgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgaXMgMAorUEFTUyBkb2N1bWVudC5i
b2R5LnNjcm9sbExlZnQgaXMgMAorUEFTUyB3aGVlbEV2ZW50c09jY3VycmVkIGlzIDAKK1BBU1Mg
c2Nyb2xsRXZlbnRzT2NjdXJyZWQgaXMgMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1i
b2R5LXByb3BhZ2F0ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkt
cHJvcGFnYXRlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGYyMzdhNThmZmVjYTMyZThkZTEz
NDc1MWM5NDE3NTI3NTgyNjRkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Nj
cm9sbC1ib2R5LXByb3BhZ2F0ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1RoaXMg
dGVzdHMgdGhhdCBhIHBhZ2UgY2Fubm90IGJlIHNjcm9sbGVkIHZlcnRpY2FsbHkgd2l0aCB0b3Vj
aCBpZiBpdHMgYm9keSBoYXMgc3R5bGUgb3ZlcmZsb3cteTpoaWRkZW4gYW5kIHRoZSBzY3JvbGwg
ZXZlbnQgaXMgcHJvcG9nYXRlZCBmcm9tIGEgc2Nyb2xsYWJsZSBjaGlsZCBkaXYuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitmaXJzdCBnZXN0dXJlCitQQVNTIGRvY3VtZW50LmJv
ZHkuc2Nyb2xsVG9wIGlzIDAKK1BBU1MgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0IGlzIDAKK1BB
U1Mgd2hlZWxFdmVudHNPY2N1cnJlZCBpcyAwCitzZWNvbmQgZ2VzdHVyZQorUEFTUyBkb2N1bWVu
dC5ib2R5LnNjcm9sbFRvcCBpcyAwCitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCBpcyAw
CitQQVNTIHdoZWVsRXZlbnRzT2NjdXJyZWQgaXMgMAorUEFTUyBzY3JvbGxFdmVudHNPY2N1cnJl
ZCBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteGhpZGRlbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kYzI3NzYyOWY0M2FjN2QyOGU3MTJhZmE5YzViNDczNDBjOWJkMTA4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteGhpZGRlbi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxOSBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgcGFnZSBjYW5ub3QgYmUg
c2Nyb2xsZWQgaG9yaXpvbnRhbGx5IHdpdGggdG91Y2ggKGJ1dCBjYW4gc3RpbGwgYmUgc2Nyb2xs
ZWQgdmVydGljYWxseSkgaWYgaXRzIGJvZHkgaGFzIHN0eWxlIG92ZXJmbG93LXg6aGlkZGVuLiBU
aGUgc2Nyb2xsIGV2ZW50cyBpbiB0aGlzIHRlc3QgaGF2ZSBib3RoIGFuIHggYW5kIHkgY29tcG9u
ZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworZmlyc3QgZ2VzdHVyZQorUEFT
UyBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCBpcyAxMTAKK1BBU1MgZG9jdW1lbnQuYm9keS5zY3Jv
bGxMZWZ0IGlzIDAKK1BBU1Mgd2hlZWxFdmVudHNPY2N1cnJlZCBpcyAwCitzZWNvbmQgZ2VzdHVy
ZQorUEFTUyBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCBpcyAyMDUKK1BBU1MgZG9jdW1lbnQuYm9k
eS5zY3JvbGxMZWZ0IGlzIDAKK1BBU1Mgd2hlZWxFdmVudHNPY2N1cnJlZCBpcyAwCitzY3JvbGwg
ZXZlbnQgMCs+IFtvYmplY3QgSFRNTERvY3VtZW50XQorUEFTUyBzY3JvbGxFdmVudHNPY2N1cnJl
ZCBpcyAxCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteWhpZGRlbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS15aGlkZGVuLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ODlhMWQ3MjVkOWMzMWNjYTUwMzFhNjIwMDlkYThlNGY5MjdmMzE4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteWhpZGRlbi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxOSBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgcGFnZSBjYW5ub3QgYmUg
c2Nyb2xsZWQgdmVydGljYWxseSB3aXRoIHRvdWNoIChidXQgY2FuIHN0aWxsIGJlIHNjcm9sbGVk
IGhvcml6b250YWxseSkgaWYgaXRzIGJvZHkgaGFzIHN0eWxlIG92ZXJmbG93LXk6aGlkZGVuLiBU
aGUgc2Nyb2xsIGV2ZW50cyBpbiB0aGlzIHRlc3QgaGF2ZSBib3RoIGFuIHggYW5kIHkgY29tcG9u
ZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworZmlyc3QgZ2VzdHVyZQorUEFT
UyBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCBpcyAwCitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xs
TGVmdCBpcyA1NQorUEFTUyB3aGVlbEV2ZW50c09jY3VycmVkIGlzIDAKK3NlY29uZCBnZXN0dXJl
CitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIGlzIDAKK1BBU1MgZG9jdW1lbnQuYm9keS5z
Y3JvbGxMZWZ0IGlzIDk3CitQQVNTIHdoZWVsRXZlbnRzT2NjdXJyZWQgaXMgMAorc2Nyb2xsIGV2
ZW50IDArPiBbb2JqZWN0IEhUTUxEb2N1bWVudF0KK1BBU1Mgc2Nyb2xsRXZlbnRzT2NjdXJyZWQg
aXMgMQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190758</attachid>
            <date>2013-02-28 10:48:52 -0800</date>
            <delta_ts>2013-03-01 15:54:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109769-20130228134504.patch</filename>
            <type>text/plain</type>
            <size>55403</size>
            <attacher name="Terry Anderson">tdanderson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTUwMWE4ZTM5ZWQ1NjM5
NTk0YWNiYWM2MzU5Y2VkZTAyZTRlNjU2ZC4uMzg0MjBkYTlmZjI3ZjM3MDFmNWM5MGUzNDMzMDky
YWIwMGYxNTI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTAyLTI4ICBUZXJy
eSBBbmRlcnNvbiAgPHRkYW5kZXJzb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZSgpIHNob3VsZCBpbnZva2UgdGhlIHVzZXIt
Z2VuZXJhdGVkIHNjcm9sbCByb3V0aW5lcyAKKyAgICAgICAgc28gaXRzIGJlaGF2aW9yIG1hdGNo
ZXMgb3RoZXIgdXNlci1pbml0aWF0ZWQgc2Nyb2xscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gZW5zdXJlIHRoYXQgdGhlIHNjcm9sbGluZyBiZWhh
dmlvciBvZiBHZXN0dXJlU2Nyb2xsVXBkYXRlIGV2ZW50cyBhcmUgY29uc2lzdGVudCB3aXRoCisg
ICAgICAgIHRoZSBzY3JvbGxpbmcgYmVoYXZpb3Igb2YgbW91c2V3aGVlbCBldmVudHMsIHVzZSB0
aGUgZXhpc3RpbmcgdXNlci1nZW5lcmF0ZWQgc2Nyb2xsIGxvZ2ljCisgICAgICAgIGluc3RlYWQg
b2YgY2FsbGluZyBpbnRvIFJlbmRlckxheWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KCkuIFRoaXMg
cGF0Y2ggZml4ZXMgdGhlIGJ1ZworICAgICAgICByZXBvcnRlZCBpbiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MzE2LCB3aGVyZSB0aGUgZXhhbXBsZSBwYWdlIGNh
bgorICAgICAgICBiZSBzY3JvbGxlZCB1c2luZyB0b3VjaCBidXQgY2Fubm90IGJlIHNjcm9sbGVk
IHVzaW5nIG1vdXNld2hlZWxzLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIHBhdGNoIGRvZXMg
bm90IHVzZSBhbnkgb2YgdGhlIG1vdXNld2hlZWwgZXZlbnQtaGFuZGxpbmcgY29kZS4KKworICAg
ICAgICBUZXN0czogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Ny
b2xsLWJvZHktcHJvcGFnYXRlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9s
bC1ib2R5LXloaWRkZW4uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkuaHRtbAorCisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxCZWdpbik6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxVcGRh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZW5kU2Nyb2xsRXZlbnRUb1Zp
ZXcpOgorICAgICAgICAgICAgQnkgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGF0IHRoZSBzdGFydCBv
ZiBoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlKCkgaW4gdGhlIGNhc2UKKyAgICAgICAgICAgIHdo
ZXJlIHxtX3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGV8IGlzIG51bGwsIHdlIGVuc3VyZSB0aGF0
IHRoZSBzY3JvbGwgdXBkYXRlcworICAgICAgICAgICAgY2FuIHN0aWxsIHNjcm9sbCB0aGUgcGFn
ZSBpdHNlbGYsIGlmIHBvc3NpYmxlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmNsZWFyR2VzdHVyZVNjcm9sbE5vZGVzKToKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAoRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
V2hlZWxFdmVudDo6c2V0SGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyk6CisKIDIwMTMtMDItMjgg
IERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWRE
QjogSU8gZXJyb3Igd2hlbiBjaGVja2luZyBzY2hlbWEgc2hvdWxkIGRlc3Ryb3kgTGV2ZWxEQiBk
aXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjk0ZDMyZWJiYzlmOTExNWZi
YjZjYjVhNGQxYTJjMzMxNDZiYThiNC4uNDI3MDA5Y2Y2ODI5NjExYjE2MjYzYTRjYTRiMjQ2MTIy
OGNhNzAwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAx
My0wMi0yOCAgVGVycnkgQW5kZXJzb24gIDx0ZGFuZGVyc29uQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxVcGRhdGUoKSBzaG91bGQgaW52
b2tlIHRoZSB1c2VyLWdlbmVyYXRlZCBzY3JvbGwgcm91dGluZXMgCisgICAgICAgIHNvIGl0cyBi
ZWhhdmlvciBtYXRjaGVzIG90aGVyIHVzZXItaW5pdGlhdGVkIHNjcm9sbHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTc2OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsZWFyIHRoZSBub2RlcyBjb3Jy
ZXNwb25kaW5nIHRvIGEgZmxpbmcgc2Nyb2xsIGV2ZW50IHdoZW4gdGhlIGV2ZW50IGVuZHMuCisK
KyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6dXBkYXRlQW5pbWF0aW9ucyk6CisKIDIwMTMtMDItMjggIERhdmlkIEdyb2dhbiAgPGRn
cm9nYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogSU8gZXJyb3Igd2hlbiBj
aGVja2luZyBzY2hlbWEgc2hvdWxkIGRlc3Ryb3kgTGV2ZWxEQiBkaXJlY3RvcnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA2YzE1YWM0Zjk5YmI1NjIyNDg2YzMzNmJmMGY0
MWQ2M2RjZGIwZjJhLi4wZmZjYmE4NzFmNTE1M2E0NGQyOTUxNGE5MGY4NTg1MTI5ODEwYTczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC00MDMsNiArNDAzLDcgQEAgdm9p
ZCBFdmVudEhhbmRsZXI6OmNsZWFyKCkKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAg
bV9zY3JvbGxHZXN0dXJlSGFuZGxpbmdOb2RlID0gMDsKICAgICBtX2xhc3RIaXRUZXN0UmVzdWx0
T3ZlcldpZGdldCA9IGZhbHNlOworICAgIG1fcHJldmlvdXNHZXN0dXJlU2Nyb2xsZWROb2RlID0g
MDsKICAgICBtX3Njcm9sbGJhckhhbmRsaW5nU2Nyb2xsR2VzdHVyZSA9IDA7CiAjZW5kaWYKICAg
ICBtX21heE1vdXNlTW92ZWREdXJhdGlvbiA9IDA7CkBAIC0yNDc2LDYgKzI0NzcsOSBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2
ZW50JiBnZXN0dXJlRXZlbnQpCiAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xs
VXBkYXRlOgogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZVdpdGhv
dXRQcm9wYWdhdGlvbjoKICAgICAgICAgcmV0dXJuIGhhbmRsZUdlc3R1cmVTY3JvbGxVcGRhdGUo
Z2VzdHVyZUV2ZW50KTsKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6
CisgICAgICAgIGNsZWFyR2VzdHVyZVNjcm9sbE5vZGVzKCk7IAorICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXA6CiAgICAgICAgIHJldHVybiBo
YW5kbGVHZXN0dXJlVGFwKGdlc3R1cmVFdmVudCk7CiAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpH
ZXN0dXJlVGFwRG93bjoKQEAgLTI0ODYsNyArMjQ5MCw2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVu
dCkKICAgICAgICAgcmV0dXJuIGhhbmRsZUdlc3R1cmVMb25nVGFwKGdlc3R1cmVFdmVudCk7CiAg
ICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVHdvRmluZ2VyVGFwOgogICAgICAgICByZXR1
cm4gaGFuZGxlR2VzdHVyZVR3b0ZpbmdlclRhcChnZXN0dXJlRXZlbnQpOwotICAgIGNhc2UgUGxh
dGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdl
c3R1cmVEb3VibGVUYXA6CiAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlUGluY2hCZWdp
bjoKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVQaW5jaEVuZDoKQEAgLTI2MTQsMTkg
KzI2MTcsNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc0dlc3R1cmVFdmVudFRvV2lkZ2V0SWZQ
b3NzaWJsZShjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotc3RhdGljIGNvbnN0IE5vZGUqIGNsb3Nlc3RTY3JvbGxhYmxlTm9kZUNhbmRpZGF0ZShjb25z
dCBOb2RlKiBub2RlKQotewotICAgIGZvciAoRXZlbnRQYXRoV2Fsa2VyIHdhbGtlcihub2RlKTsg
d2Fsa2VyLm5vZGUoKTsgd2Fsa2VyLm1vdmVUb1BhcmVudCgpKSB7Ci0gICAgICAgIE5vZGUqIHNj
cm9sbGFibGVOb2RlID0gd2Fsa2VyLm5vZGUoKTsKLSAgICAgICAgaWYgKHNjcm9sbGFibGVOb2Rl
LT5pc0RvY3VtZW50Tm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuIHNjcm9sbGFibGVOb2RlOwot
ICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2Nyb2xsYWJsZU5vZGUtPnJlbmRlcmVy
KCk7Ci0gICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNCb3goKSAmJiB0b1JlbmRl
ckJveChyZW5kZXJlciktPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKQotICAg
ICAgICAgICAgcmV0dXJuIHNjcm9sbGFibGVOb2RlOwotICAgIH0KLSAgICByZXR1cm4gbm9kZTsK
LX0KLQogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxCZWdpbihjb25zdCBQ
bGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogewogICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CkBAIC0yNjQ1LDYgKzI2MzUsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZVNjcm9sbEJlZ2luKGNvbnN0IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50JiBnZXN0dXJlRQogCiAgICAgbV9sYXN0SGl0VGVzdFJlc3VsdE92ZXJXaWRnZXQgPSBy
ZXN1bHQuaXNPdmVyV2lkZ2V0KCk7IAogICAgIG1fc2Nyb2xsR2VzdHVyZUhhbmRsaW5nTm9kZSA9
IHJlc3VsdC5pbm5lck5vZGUoKTsKKyAgICBtX3ByZXZpb3VzR2VzdHVyZVNjcm9sbGVkTm9kZSA9
IDA7CiAKICAgICBOb2RlKiBub2RlID0gbV9zY3JvbGxHZXN0dXJlSGFuZGxpbmdOb2RlLmdldCgp
OwogICAgIGlmIChub2RlKQpAQCAtMjY1NSw0OCArMjY0Niw3OSBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlR2VzdHVyZVNjcm9sbEJlZ2luKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBn
ZXN0dXJlRQogCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZShj
b25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogewotICAgIC8vIElnbm9y
ZSB0aGlzIGV2ZW50IGlmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBhIHRhcmdldGVkIG5vZGUgd2l0
aCBhIHZhbGlkIHJlbmRlcmVyLgotICAgIGNvbnN0IE5vZGUqIG5vZGUgPSBtX3Njcm9sbEdlc3R1
cmVIYW5kbGluZ05vZGUuZ2V0KCk7Ci0gICAgaWYgKCFub2RlKQorICAgIEZsb2F0U2l6ZSBkZWx0
YShnZXN0dXJlRXZlbnQuZGVsdGFYKCksIGdlc3R1cmVFdmVudC5kZWx0YVkoKSk7CisgICAgaWYg
KGRlbHRhLmlzWmVybygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZW5kZXJPYmpl
Y3QqIGxhdGNoZWRSZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFsYXRjaGVk
UmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjb25zdCBmbG9hdCBzY2FsZUZh
Y3RvciA9IG1fZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCkgKiBtX2ZyYW1lLT5mcmFtZVNjYWxlRmFj
dG9yKCk7CisgICAgZGVsdGEuc2NhbGUoMSAvIHNjYWxlRmFjdG9yLCAxIC8gc2NhbGVGYWN0b3Ip
OwogCi0gICAgSW50U2l6ZSBkZWx0YSgtZ2VzdHVyZUV2ZW50LmRlbHRhWCgpLCAtZ2VzdHVyZUV2
ZW50LmRlbHRhWSgpKTsKLSAgICBpZiAoZGVsdGEuaXNaZXJvKCkpCisgICAgTm9kZSogbm9kZSA9
IG1fc2Nyb2xsR2VzdHVyZUhhbmRsaW5nTm9kZS5nZXQoKTsKKyAgICBpZiAoIW5vZGUpCisgICAg
ICAgIHJldHVybiBzZW5kU2Nyb2xsRXZlbnRUb1ZpZXcoZ2VzdHVyZUV2ZW50LCBkZWx0YSk7CisK
KyAgICAvLyBJZ25vcmUgdGhpcyBldmVudCBpZiB0aGUgdGFyZ2V0ZWQgbm9kZSBkb2VzIG5vdCBo
YXZlIGEgdmFsaWQgcmVuZGVyZXIuCisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUt
PnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdG9yKG1fZnJhbWUtPnZpZXcoKSk7CiAKICAg
ICAvLyBUcnkgdG8gc2VuZCB0aGUgZXZlbnQgdG8gdGhlIGNvcnJlY3Qgdmlldy4KLSAgICBpZiAo
cGFzc0dlc3R1cmVFdmVudFRvV2lkZ2V0SWZQb3NzaWJsZShnZXN0dXJlRXZlbnQsIGxhdGNoZWRS
ZW5kZXJlcikpCisgICAgaWYgKHBhc3NHZXN0dXJlRXZlbnRUb1dpZGdldElmUG9zc2libGUoZ2Vz
dHVyZUV2ZW50LCByZW5kZXJlcikpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgLy8gT3Ro
ZXJ3aXNlIGlmIHRoaXMgaXMgdGhlIGNvcnJlY3QgdmlldyBmb3IgdGhlIGV2ZW50LCBmaW5kIHRo
ZSBjbG9zZXN0IHNjcm9sbGFibGUKLSAgICAvLyBhbmNlc3RvciBvZiB0aGUgdGFyZ2V0ZWQgbm9k
ZSBhbmQgc2Nyb2xsIHRoZSBsYXllciB0aGF0IGNvbnRhaW5zIHRoaXMgbm9kZSdzIHJlbmRlcmVy
LgotICAgIG5vZGUgPSBjbG9zZXN0U2Nyb2xsYWJsZU5vZGVDYW5kaWRhdGUobm9kZSk7Ci0gICAg
aWYgKCFub2RlKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgTm9kZSogc3RvcE5vZGUgPSAw
OworICAgIGJvb2wgc2Nyb2xsU2hvdWxkTm90UHJvcGFnYXRlID0gZ2VzdHVyZUV2ZW50LnR5cGUo
KSA9PSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9u
OworICAgIGlmIChzY3JvbGxTaG91bGROb3RQcm9wYWdhdGUpCisgICAgICAgIHN0b3BOb2RlID0g
bV9wcmV2aW91c0dlc3R1cmVTY3JvbGxlZE5vZGUuZ2V0KCk7CiAKLSAgICBsYXRjaGVkUmVuZGVy
ZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghbGF0Y2hlZFJlbmRlcmVyKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgLy8gRmlyc3QgdHJ5IHRvIHNjcm9sbCB0aGUgY2xvc2VzdCBz
Y3JvbGxhYmxlIFJlbmRlckJveCBhbmNlc3RvciBvZiB8bm9kZXwuCisgICAgU2Nyb2xsR3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdHkgPSBTY3JvbGxCeVBpeGVsOyAKKyAgICBib29sIGhvcml6b250YWxT
Y3JvbGwgPSBzY3JvbGxOb2RlKGRlbHRhLndpZHRoKCksIGdyYW51bGFyaXR5LCBTY3JvbGxMZWZ0
LCBTY3JvbGxSaWdodCwgbm9kZSwgJnN0b3BOb2RlKTsKKyAgICBib29sIHZlcnRpY2FsU2Nyb2xs
ID0gc2Nyb2xsTm9kZShkZWx0YS5oZWlnaHQoKSwgZ3JhbnVsYXJpdHksIFNjcm9sbFVwLCBTY3Jv
bGxEb3duLCBub2RlLCAmc3RvcE5vZGUpOwogCi0gICAgUmVuZGVyTGF5ZXI6OlNjcm9sbFByb3Bh
Z2F0aW9uIHNob3VsZFByb3BhZ2F0ZSA9IFJlbmRlckxheWVyOjpTaG91bGRQcm9wYWdhdGVTY3Jv
bGw7Ci0gICAgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVy
ZVNjcm9sbFVwZGF0ZVdpdGhvdXRQcm9wYWdhdGlvbikKLSAgICAgICAgc2hvdWxkUHJvcGFnYXRl
ID0gUmVuZGVyTGF5ZXI6OkRvbnRQcm9wYWdhdGVTY3JvbGw7CisgICAgaWYgKHNjcm9sbFNob3Vs
ZE5vdFByb3BhZ2F0ZSkKKyAgICAgICAgbV9wcmV2aW91c0dlc3R1cmVTY3JvbGxlZE5vZGUgPSBz
dG9wTm9kZTsKIAotICAgIGNvbnN0IGZsb2F0IHNjYWxlRmFjdG9yID0gbV9mcmFtZS0+cGFnZVpv
b21GYWN0b3IoKSAqIG1fZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKTsKLSAgICBkZWx0YS5zY2Fs
ZSgxIC8gc2NhbGVGYWN0b3IsIDEgLyBzY2FsZUZhY3Rvcik7CisgICAgaWYgKGhvcml6b250YWxT
Y3JvbGwgfHwgdmVydGljYWxTY3JvbGwpIHsKKyAgICAgICAgc2V0RnJhbWVXYXNTY3JvbGxlZEJ5
VXNlcigpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKLSAgICBib29sIHJlc3VsdCA9
IGxhdGNoZWRSZW5kZXJlci0+ZW5jbG9zaW5nTGF5ZXIoKS0+c2Nyb2xsQnkoZGVsdGEsIFJlbmRl
ckxheWVyOjpTY3JvbGxPZmZzZXRDbGFtcGVkLCBzaG91bGRQcm9wYWdhdGUpOworICAgIC8vIE90
aGVyd2lzZSB0cnkgdG8gc2Nyb2xsIHRoZSB2aWV3LgorICAgIHJldHVybiBzZW5kU2Nyb2xsRXZl
bnRUb1ZpZXcoZ2VzdHVyZUV2ZW50LCBkZWx0YSk7Cit9CiAKLSAgICBpZiAocmVzdWx0KQorYm9v
bCBFdmVudEhhbmRsZXI6OnNlbmRTY3JvbGxFdmVudFRvVmlldyhjb25zdCBQbGF0Zm9ybUdlc3R1
cmVFdmVudCYgZ2VzdHVyZUV2ZW50LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlZERlbHRhKQorewor
ICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKKyAgICBpZiAoIXZpZXcpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IGZsb2F0IHRpY2tEaXZpc29yID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KFdoZWVsRXZlbnQ6OlRpY2tNdWx0aXBsaWVyKTsKKyAgICBJbnRQb2lu
dCBwb2ludChnZXN0dXJlRXZlbnQucG9zaXRpb24oKS54KCksIGdlc3R1cmVFdmVudC5wb3NpdGlv
bigpLnkoKSk7CisgICAgSW50UG9pbnQgZ2xvYmFsUG9pbnQoZ2VzdHVyZUV2ZW50Lmdsb2JhbFBv
c2l0aW9uKCkueCgpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKS55KCkpOworICAgIFBs
YXRmb3JtV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbEV2ZW50KHBvaW50LCBnbG9iYWxQb2ludCwK
KyAgICAgICAgc2NhbGVkRGVsdGEud2lkdGgoKSwgc2NhbGVkRGVsdGEuaGVpZ2h0KCksIAorICAg
ICAgICBzY2FsZWREZWx0YS53aWR0aCgpIC8gdGlja0Rpdmlzb3IsIHNjYWxlZERlbHRhLmhlaWdo
dCgpIC8gdGlja0Rpdmlzb3IsCisgICAgICAgIFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LAorICAg
ICAgICBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2Vz
dHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpKTsKKyNpZiBQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKENIUk9NSVVNKQorICAgIHN5bnRoZXRpY1doZWVsRXZlbnQuc2V0
SGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyh0cnVlKTsKKyNlbmRpZgorCisgICAgYm9vbCBzY3Jv
bGxlZEZyYW1lID0gdmlldy0+d2hlZWxFdmVudChzeW50aGV0aWNXaGVlbEV2ZW50KTsKKyAgICBp
ZiAoc2Nyb2xsZWRGcmFtZSkKICAgICAgICAgc2V0RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpOwog
Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gc2Nyb2xsZWRGcmFtZTsKK30KKwordm9p
ZCBFdmVudEhhbmRsZXI6OmNsZWFyR2VzdHVyZVNjcm9sbE5vZGVzKCkKK3sKKyAgICBtX3Njcm9s
bEdlc3R1cmVIYW5kbGluZ05vZGUgPSAwOworICAgIG1fcHJldmlvdXNHZXN0dXJlU2Nyb2xsZWRO
b2RlID0gMDsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OmlzU2Nyb2xsYmFySGFuZGxpbmdHZXN0
dXJlcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCAzZmMwN2YyZmEy
NTJmOWM0NWYyNGYxZjZiNTVlNDdlN2EwMGQ3NTNlLi5lZThkYWFjZGUzMmE0OWEzZTczOGNjMjEy
MDMyZGNlNDM5NGQ4Mjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTE4MSw2
ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlVHdvRmluZ2VyVGFwKGNv
bnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlU2Nyb2xs
VXBkYXRlKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAgYm9vbCBoYW5kbGVHZXN0
dXJlU2Nyb2xsQmVnaW4oY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKKyAgICB2b2lkIGNs
ZWFyR2VzdHVyZVNjcm9sbE5vZGVzKCk7CiAgICAgYm9vbCBpc1Njcm9sbGJhckhhbmRsaW5nR2Vz
dHVyZXMoKSBjb25zdDsKICNlbmRpZgogCkBAIC0zNzgsNiArMzc5LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGhhbmRsZUdlc3R1cmVGb3JUZXh0U2VsZWN0aW9uT3JDb250ZXh0TWVudShjb25zdCBQ
bGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogICAgIGJvb2wgcGFzc0dlc3R1cmVFdmVudFRvV2lkZ2V0
KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiwgV2lkZ2V0Kik7CiAgICAgYm9vbCBwYXNzR2Vz
dHVyZUV2ZW50VG9XaWRnZXRJZlBvc3NpYmxlKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jiwg
UmVuZGVyT2JqZWN0Kik7CisgICAgYm9vbCBzZW5kU2Nyb2xsRXZlbnRUb1ZpZXcoY29uc3QgUGxh
dGZvcm1HZXN0dXJlRXZlbnQmLCBjb25zdCBGbG9hdFNpemUmKTsKICNlbmRpZgogCiAgICAgdm9p
ZCBzZXRMYXN0S25vd25Nb3VzZVBvc2l0aW9uKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwpA
QCAtNDY5LDYgKzQ3MSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQog
ICAgIFJlZlB0cjxOb2RlPiBtX3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGU7CiAgICAgYm9vbCBt
X2xhc3RIaXRUZXN0UmVzdWx0T3ZlcldpZGdldDsKKyAgICBSZWZQdHI8Tm9kZT4gbV9wcmV2aW91
c0dlc3R1cmVTY3JvbGxlZE5vZGU7CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9zY3JvbGxiYXJI
YW5kbGluZ1Njcm9sbEdlc3R1cmU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAppbmRleCA4YzAzMDJjNWVhNWQ1YmZlOGEzMGIyYzQ1OTE1
ZjMxODI0NjliZjE5Li41YWYyOTc0YjIyYmZkNTRlZjdhODM2MGEzMGIwYTcxYzVmMmJmYzZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaApAQCAtMTU3
LDYgKzE1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oQ0hST01JVU0pCiAgICAgICAgIGJvb2wgaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRh
cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhczsgfQorICAgICAg
ICB2b2lkIHNldEhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoYm9vbCBiKSB7IG1faGFzUHJlY2lz
ZVNjcm9sbGluZ0RlbHRhcyA9IGI7IH0KICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBM
QVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZl
bnRQaGFzZSBwaGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGhhc2U7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCAxYWQ5ZmJmN2Q1ZmNkMDYxMmU2Mjhi
ZmQzZWI3NzFhOTk3NTRmNDBiLi5jYThlMDM1YjYwM2Y1ZWU2YWRlZmFmMzAzMzBkNGMyMWY1NjU5
ZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0x
ODQ2LDYgKzE4NDYsOCBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zKGRvdWJs
ZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkKICAgICAgICAgICAgIG1fZ2VzdHVyZUFuaW1hdGlv
bi5jbGVhcigpOwogICAgICAgICAgICAgaWYgKG1fbGF5ZXJUcmVlVmlldykKICAgICAgICAgICAg
ICAgICBtX2xheWVyVHJlZVZpZXctPmRpZFN0b3BGbGluZ2luZygpOworCisgICAgICAgICAgICBt
YWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5jbGVhckdlc3R1cmVTY3Jv
bGxOb2RlcygpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTkzODRkMzhkYjFiM2Q5M2Yw
YjZhNWEwNjlkNzVhMGIzZjg4M2I4ZS4uY2VhZGUxNjkzMjZiMmFkMTc5N2FmNjZhZGQ2Mzc5OThm
OTQ3OGE3OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEzLTAyLTI4ICBUZXJyeSBBbmRlcnNv
biAgPHRkYW5kZXJzb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZSgpIHNob3VsZCBpbnZva2UgdGhlIHVzZXItZ2VuZXJhdGVk
IHNjcm9sbCByb3V0aW5lcyAKKyAgICAgICAgc28gaXRzIGJlaGF2aW9yIG1hdGNoZXMgb3RoZXIg
dXNlci1pbml0aWF0ZWQgc2Nyb2xscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA5NzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRm91ciBuZXcgbGF5b3V0IHRlc3RzIGhhdmUgYmVlbiBhZGRlZCBhbmQg
dG91Y2gtZ2VzdHVyZS1zY3JvbGwtcGFnZS5odG1sIGhhcyBiZWVuCisgICAgICAgIG1vZGlmaWVk
IHRvIGRlbW9uc3RyYXRlIHRoYXQgdGhpcyBwYXRjaCBmaXhlcyB0d28gZXhpc3RpbmcgYnVncy4g
U2VlIHRoZSBpbmxpbmUKKyAgICAgICAgY29tbWVudHMgYmVsb3cgZm9yIGRldGFpbHMuCisKKyAg
ICAgICAgQmVjYXVzZSBJIGFtIG5vdyB1c2luZyB0aGUgZXhpc3RpbmcgdXNlci1nZW5lcmF0ZWQg
c2Nyb2xsIGxvZ2ljLCB0aGUgZGVsdGEgZm9yIGEgc2luZ2xlCisgICAgICAgIEdlc3R1cmVTY3Jv
bGxVcGRhdGUgZXZlbnQgd2lsbCBub3QgYmUgcHJvcGFnYXRlZCB0byB0aGUgcGFyZW50IG9mIHRo
ZSB0YXJnZXRlZCBub2RlCisgICAgICAgIHVubGVzcyB0aGUgdGFyZ2V0ZWQgbm9kZSBoYXMgbm8g
cmVtYWluaW5nIHNjcm9sbGFibGUgYXJlYS4gU28gdGhlIGNoYW5nZXMgdG8gdGhlCisgICAgICAg
IGV4aXN0aW5nIGxheW91dCB0ZXN0cyBoYXZlIGJlZW4gbWFkZSB0byBlbnN1cmUgdGhhdCB0aGUg
dGFyZ2V0ZWQgbm9kZSBoYXMgYmVlbiBmdWxseQorICAgICAgICBzY3JvbGxlZCBiZWZvcmUgc3Vi
c2VxdWVudCBHZXN0dXJlU2Nyb2xsVXBkYXRlIGV2ZW50cyB3aWxsIHNjcm9sbCB0aGUgcGFyZW50
KHMpIG9mCisgICAgICAgIHRoZSB0YXJnZXRlZCBub2RlLgorCisgICAgICAgIEkgaGF2ZSBhbHNv
IHJlbW92ZWQgdGhlIGZ1bmN0aW9uIHJlY29yZFNjcm9sbCgpIGZyb20gdGhlIGV4aXN0aW5nIGxh
eW91dCB0ZXN0cworICAgICAgICBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gYWxyZWFkeSBleGlzdHMg
aW4gdGhlIGluY2x1ZGVkIGZpbGUgcmVzb3VyY2VzL2dlc3R1cmUtaGVscGVycy5qcy4KKworICAg
ICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1i
b2R5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktcHJvcGFnYXRlZC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVy
ZS1ub3Njcm9sbC1ib2R5LXByb3BhZ2F0ZWQuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLmh0bWwu
CisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Ny
b2xsLWJvZHkteGhpZGRlbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZl
bnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXhoaWRkZW4uaHRt
bDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3Vj
aC1nZXN0dXJlLXNjcm9sbC1wYWdlLmh0bWwuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gv
Z2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteWhpZGRlbi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVy
ZS1ub3Njcm9sbC1ib2R5LXloaWRkZW4uaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLmh0bWwuCisg
ICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xs
LWJvZHkuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLmh0bWwuCisgICAgICAgICogZmFzdC9ldmVu
dHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1kaXYtbm90LXByb3BhZ2F0ZWQu
aHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUt
c2Nyb2xsLWRpdi1wcm9wYWdhdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gv
Z2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1kaXYtdHdpY2UtcHJvcGFnYXRlZC5odG1sOgor
ICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwt
aWZyYW1lLW5vdC1wcm9wYWdhdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gv
Z2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1pZnJhbWUtcHJvcGFnYXRlZC5odG1sOgorICAg
ICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcGFn
ZS1ub3QtcHJvcGFnYXRlZC5odG1sOgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1
cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcGFnZS1wcm9wYWdhdGVkLmh0bWw6CisgICAgICAgICog
ZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLmh0bWw6
CisgICAgICAgICAgICAgIEkgbW9kaWZpZWQgdGhpcyBsYXlvdXQgdGVzdCBpbiBvcmRlciB0byBh
ZGQgdGVzdCBjb3ZlcmFnZSBmb3IgYW5vdGhlciBidWcKKyAgICAgICAgICAgICAgd2hpY2ggaXMg
Zml4ZWQgYnkgdGhpcyBwYXRjaDogaWYgdGhlIGhpdCB0ZXN0IHBlcmZvcm1lZCBvbiBhIEdlc3R1
cmVTY3JvbGxCZWdpbgorICAgICAgICAgICAgICBkb2VzIG5vdCB0YXJnZXQgYSBzcGVjaWZpYyBu
b2RlLCB0aGUgc3Vic2VxdWVudCBHZXN0dXJlU2Nyb2xsVXBkYXRlIGV2ZW50cyBzaG91bGQKKyAg
ICAgICAgICAgICAgc3RpbGwgYXR0ZW1wdCB0byBzY3JvbGwgdGhlIHBhZ2UgaXRzZWxmLiBUaGlz
IGlzIGNvbnNpc3RlbnQgd2l0aCBob3cgbW91c2V3aGVlbAorICAgICAgICAgICAgICBldmVudHMg
YmVoYXZlLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3Vj
aC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktcHJvcGFnYXRlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91
Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXhoaWRkZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNo
LWdlc3R1cmUtbm9zY3JvbGwtYm9keS15aGlkZGVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICAgICAgIFRoZXNlIGZvdXIgbmV3IGxheW91dCB0ZXN0cyB2ZXJpZnkgdGhhdCBhIG5vbi1z
Y3JvbGxhYmxlIGJvZHkgd2lsbCBub3Qgc2Nyb2xsLAorICAgICAgICAgICAgICBhcyByZXBvcnRl
ZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MzE2LgorCiAy
MDEzLTAyLTI4ICBTdGVwaGVuIENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW0Nocm9taXVtXSBNYXJraW5nIG9uZSBtb3JlIGh0bWw1IHRlc3QgYXMgdGltZW91dApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1n
ZXN0dXJlLW5vc2Nyb2xsLWJvZHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBmYmUzZDJjYzFkMDgxODA3ZjJhZTc5NTRmMWUyMGUwZmY4OTQ1NDkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3Rv
dWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAor
VGhpcyB0ZXN0cyB0aGF0IGEgcGFnZSBjYW5ub3QgYmUgc2Nyb2xsZWQgd2l0aCB0b3VjaCBpZiBp
dHMgYm9keSBoYXMgc3R5bGUgb3ZlcmZsb3c6aGlkZGVuLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworZ2VzdHVyZSBldmVudHMgbm90IGltcGxlbWVudGVkIG9uIHRoaXMgcGxhdGZv
cm0gb3IgZ2VzdHVyZSBldmVudCBzY3JvbGxpbmcgb2YgYSBkb2N1bWVudCBpcyBicm9rZW4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUt
bm9zY3JvbGwtYm9keS1wcm9wYWdhdGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXByb3BhZ2F0
ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlODdlNDg2ODRhMDVjOTEwMWM5MmQyYjc4MWMx
ZTg3YmNjN2VlN2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1wcm9wYWdhdGVkLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3RzIHRoYXQgYSBwYWdlIGNhbm5vdCBi
ZSBzY3JvbGxlZCB2ZXJ0aWNhbGx5IHdpdGggdG91Y2ggaWYgaXRzIGJvZHkgaGFzIHN0eWxlIG92
ZXJmbG93LXk6aGlkZGVuIGFuZCB0aGUgc2Nyb2xsIGV2ZW50IGlzIHByb3BvZ2F0ZWQgZnJvbSBh
IHNjcm9sbGFibGUgY2hpbGQgZGl2LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
Z2VzdHVyZSBldmVudHMgbm90IGltcGxlbWVudGVkIG9uIHRoaXMgcGxhdGZvcm0gb3IgZ2VzdHVy
ZSBldmVudCBzY3JvbGxpbmcgb2YgYSBkb2N1bWVudCBpcyBicm9rZW4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9k
eS1wcm9wYWdhdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJl
L3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1wcm9wYWdhdGVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OThjODU2N2FiOTA2M2MxMzc1MGI3MjFiZDk3YmNkZTNiM2U5MWY1NwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1u
b3Njcm9sbC1ib2R5LXByb3BhZ2F0ZWQuaHRtbApAQCAtMCwwICsxLDE1OSBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9nZXN0dXJlLWhlbHBlcnMu
anMiPjwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyN0b3VjaHRhcmdldCB7Cisg
IHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAgYmFja2dyb3VuZDogd2hpdGU7Cisg
IG92ZXJmbG93OnNjcm9sbDsKK30KKworOjotd2Via2l0LXNjcm9sbGJhciB7CisgICAgd2lkdGg6
IDBweDsKKyAgICBoZWlnaHQ6IDBweDsKK30KKworI2dyZWVuYm94IHsKKyAgd2lkdGg6IDEwMHB4
OworICBoZWlnaHQ6IDEwMHB4OworICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgcGFkZGluZzogMHB4
OworICBtYXJnaW46IDBweDsKK30KKworI3JlZGJveCB7CisgIHdpZHRoOiAxMDBweDsKKyAgaGVp
Z2h0OiAxMDBweDsKKyAgYmFja2dyb3VuZDogcmVkOworICBwYWRkaW5nOiAwcHg7CisgIG1hcmdp
bjogMHB4OworfQorCit0ZCB7CisgIHBhZGRpbmc6IDBweDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keSBzdHlsZT0ibWFyZ2luOjA7IG92ZXJmbG93LXk6aGlkZGVuOyIgb25sb2FkPSJydW5U
ZXN0KCk7Ij4KKworPGRpdiBpZD0idG91Y2h0YXJnZXQiPgorICA8dGFibGUgYm9yZGVyPSIwIiBj
ZWxsc3BhY2luZz0iMHB4IiBpZD0idGFibGVmb28iPgorICAgIDx0cj4KKyAgICAgIDx0ZD48ZGl2
IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+CisgICAgICA8dGQ+PGRpdiBpZD0iZ3JlZW5ib3giPjwv
ZGl2PjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQ+PGRpdiBpZD0iZ3JlZW5i
b3giPjwvZGl2PjwvdGQ+CisgICAgICA8dGQ+PGRpdiBpZD0iZ3JlZW5ib3giPjwvZGl2PjwvdGQ+
CisgICAgPC90cj4KKyAgPC90YWJsZT4KKzwvZGl2PgorCis8dGFibGUgaWQ9InRhYmxlX3RvX2Zp
bGwiPgorICAgIDx0cj48dGQ+PGRpdiBpZD0iZ3JlZW5ib3giPjwvZGl2PjwvdGQ+PC90cj4KKyAg
ICA8dHI+PHRkPjxkaXYgaWQ9InJlZGJveCI+PC9kaXY+PC90ZD48L3RyPgorPC90YWJsZT4KKwor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwordmFyIGV4cGVjdGVkR2VzdHVyZXNUb3RhbCA9
IDI7Cit2YXIgZ2VzdHVyZXNPY2N1cnJlZCA9IDA7Cit2YXIgc2Nyb2xsQW1vdW50WCA9IFsnMCcs
ICcwJ107Cit2YXIgc2Nyb2xsQW1vdW50WSA9IFsnMCcsICcwJ107Cit2YXIgd2hlZWxFdmVudHNP
Y2N1cnJlZCA9IDA7Cit2YXIgZXhwZWN0ZWRXaGVlbEV2ZW50c09jY3VycmVkID0gWycwJywgJzAn
XTsKK3ZhciBzY3JvbGxFdmVudHNPY2N1cnJlZCA9IDA7Cit2YXIgZXhwZWN0ZWRTY3JvbGxFdmVu
dHNPY2N1cnJlZCA9ICcwJzsKK3ZhciBzY3JvbGxlZEVsZW1lbnQgPSAnZG9jdW1lbnQuYm9keScK
KworLy8gQWx3YXlzIGNvbnN0cnVjdCBhIHBhZ2UgbGFyZ2VyIHRoYW4gdGhlIHZlcnRpY2FsIGhl
aWdodCBvZiB0aGUgd2luZG93LgorZnVuY3Rpb24gYnVpbGRQYWdlKCkKK3sKKyAgICB2YXIgdGFi
bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFibGVfdG9fZmlsbCcpOworICAgIHZhciB0
YXJnZXRIZWlnaHQgPSBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKKyAgICB2YXIgY2VsbFBh
aXJIZWlnaHQgPSB0YWJsZS5vZmZzZXRIZWlnaHQ7CisgICAgdmFyIG51bWJlck9mUmVwcyA9IHRh
cmdldEhlaWdodCAvIGNlbGxQYWlySGVpZ2h0ICogMjsKKyAgICB2YXIgaTsKKyAgICBmb3IgKGkg
PSAwOyBpIDwgbnVtYmVyT2ZSZXBzOyBpKyspIHsKKyAgICAgICAgdmFyIHAgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCd0cicpOworICAgICAgICBwLmlubmVySFRNTCA9ICc8dGQ+PGRpdiBpZD0i
Z3JlZW5ib3giPjwvZGl2PjwvdGQ+JzsKKyAgICAgICAgdGFibGUuYXBwZW5kQ2hpbGQocCk7Cisg
ICAgICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKKyAgICAgICAgcC5p
bm5lckhUTUwgPSAnPHRkPjxkaXYgaWQ9InJlZGJveCI+PC9kaXY+PC90ZD4nOworICAgICAgICB0
YWJsZS5hcHBlbmRDaGlsZChwKTsKKyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigic2Nyb2xsIiwgcmVjb3JkU2Nyb2xsKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2V3aGVlbCIsIHJlY29yZFdoZWVsKTsKK30KKworZnVuY3Rpb24gZmlyc3RHZXN0dXJlU2Ny
b2xsKCkKK3sKKyAgICBkZWJ1ZygiZmlyc3QgZ2VzdHVyZSIpOworICAgIGV2ZW50U2VuZGVyLmdl
c3R1cmVTY3JvbGxCZWdpbig5NSwgMTIpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxV
cGRhdGUoMCwgLTEwMCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAt
MTApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CisKKyAgICAvLyBX
YWl0IGZvciBsYXlvdXQuCisgICAgY2hlY2tTY3JvbGxPZmZzZXQoKTsKK30KKworZnVuY3Rpb24g
c2Vjb25kR2VzdHVyZVNjcm9sbCgpCit7CisgICAgZGVidWcoInNlY29uZCBnZXN0dXJlIik7Cisg
ICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDEyLCA5Nyk7CisgICAgZXZlbnRTZW5k
ZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtOTUpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVT
Y3JvbGxVcGRhdGUoMCwgLTIwMCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEVuZCgw
LCAwKTsKKworICAgIC8vIFdhaXQgZm9yIGxheW91dC4KKyAgICBjaGVja1Njcm9sbE9mZnNldCgp
OworCisgICAgLy8gSW4gdGhpcyB0ZXN0IHdlIGRvIG5vdCBleHBlY3QgYW55IHNjcm9sbCBldmVu
dHMgdG8KKyAgICAvLyBiZSByZWNlaXZlZCBieSB0aGUgZXZlbnQgbGlzdGVuZXIsIHNvIHdlIHNp
Z25hbAorICAgIC8vIHRoZSBlbmQgb2YgdGhlIHRlc3QgYnkgY2FsbGluZyB0aGlzIGZ1bmN0aW9u
IGluc3RlYWQKKyAgICAvLyBvZiByZWx5aW5nIG9uIHJlY29yZFNjcm9sbCgpIHRvIGRvIGl0Lgor
ICAgIGZpbmlzaFRlc3QoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBidWls
ZFBhZ2UoKTsKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGRlc2NyaXB0
aW9uKCdUaGlzIHRlc3RzIHRoYXQgYSBwYWdlIGNhbm5vdCBiZSBzY3JvbGxlZCB2ZXJ0aWNhbGx5
IHdpdGggdG91Y2ggaWYgaXRzIGJvZHkgaGFzIHN0eWxlIG92ZXJmbG93LXk6aGlkZGVuICcgKwor
ICAgICAgICAgICAgICAgICAgICAnYW5kIHRoZSBzY3JvbGwgZXZlbnQgaXMgcHJvcG9nYXRlZCBm
cm9tIGEgc2Nyb2xsYWJsZSBjaGlsZCBkaXYuJyk7CisKKyAgICAgICAgaWYgKGNoZWNrVGVzdERl
cGVuZGVuY2llcygpKQorICAgICAgICAgICAgZmlyc3RHZXN0dXJlU2Nyb2xsKCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGV4aXRJZk5lY2Vzc2FyeSgpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRHVtcFJlbmRlclRyZWUuICBUb3VjaCBzY3Jv
bGwgdGhlIHJlZCByZWN0IHRvIGxvZy4iKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGZpbmlzaFRl
c3QoKQoreworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgaWYgKGdlc3R1
cmVzT2NjdXJyZWQgPT0gZXhwZWN0ZWRHZXN0dXJlc1RvdGFsKSB7CisgICAgICAgICAgICBzaG91
bGRCZSgnc2Nyb2xsRXZlbnRzT2NjdXJyZWQnLCBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVk
KTsKKyAgICAgICAgICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgICAgICAgICBp
c1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9Cisg
ICAgfQorfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9k
eS14aGlkZGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXhoaWRkZW4tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjVjOWFhM2JhOTBiOGI1NTcyYWIwYWFjNmE0YjE0ZmM1M2E5NzM2MzYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNo
LWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEw
IEBACitUaGlzIHRlc3RzIHRoYXQgYSBwYWdlIGNhbm5vdCBiZSBzY3JvbGxlZCBob3Jpem9udGFs
bHkgd2l0aCB0b3VjaCAoYnV0IGNhbiBzdGlsbCBiZSBzY3JvbGxlZCB2ZXJ0aWNhbGx5KSBpZiBp
dHMgYm9keSBoYXMgc3R5bGUgb3ZlcmZsb3cteDpoaWRkZW4uIFRoZSBzY3JvbGwgZXZlbnRzIGlu
IHRoaXMgdGVzdCBoYXZlIGJvdGggYW4geCBhbmQgeSBjb21wb25lbnQuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitnZXN0dXJlIGV2ZW50cyBub3QgaW1wbGVtZW50ZWQgb24gdGhp
cyBwbGF0Zm9ybSBvciBnZXN0dXJlIGV2ZW50IHNjcm9sbGluZyBvZiBhIGRvY3VtZW50IGlzIGJy
b2tlbgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gt
Z2VzdHVyZS1ub3Njcm9sbC1ib2R5LXhoaWRkZW4uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXhoaWRkZW4uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41N2M3YWI0ZGJhN2RjNmY5MWQzYzM2NTVmOGU5NmY1OWY3YWFkZTUzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90
b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteGhpZGRlbi5odG1sCkBAIC0wLDAgKzEsMTQ5IEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2dlc3R1
cmUtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorI3RvdWNo
dGFyZ2V0IHsKKyAgd2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4OworICBiYWNrZ3JvdW5k
OiB3aGl0ZTsKKyAgb3ZlcmZsb3c6aGlkZGVuOworfQorCis6Oi13ZWJraXQtc2Nyb2xsYmFyIHsK
KyAgICB3aWR0aDogMHB4OworICAgIGhlaWdodDogMHB4OworfQorCisjZ3JlZW5ib3ggeworICB3
aWR0aDogMTAwcHg7CisgIGhlaWdodDogMTAwcHg7CisgIGJhY2tncm91bmQ6IGdyZWVuOworICBw
YWRkaW5nOiAwcHg7CisgIG1hcmdpbjogMHB4OworfQorCisjcmVkYm94IHsKKyAgd2lkdGg6IDEw
MHB4OworICBoZWlnaHQ6IDEwMHB4OworICBiYWNrZ3JvdW5kOiByZWQ7CisgIHBhZGRpbmc6IDBw
eDsKKyAgbWFyZ2luOiAwcHg7Cit9CisKK3RkIHsKKyAgcGFkZGluZzogMHB4OworfQorPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5IHN0eWxlPSJtYXJnaW46MDsgb3ZlcmZsb3cteDpoaWRkZW47IiBv
bmxvYWQ9InJ1blRlc3QoKTsiPgorCis8dGFibGUgaWQ9Imhvcml6b250YWxfdGFibGVfdG9fZmls
bCI+CisgIDx0ciBpZD0iZmlyc3Ryb3ciPgorICAgIDx0ZD48ZGl2IGlkPSJyZWRib3giPjwvZGl2
PjwvdGQ+CisgICAgPHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3RkPgorICA8L3RyPgor
PC90YWJsZT4KKworPHRhYmxlIGlkPSJ2ZXJ0aWNhbF90YWJsZV90b19maWxsIj4KKyAgICA8dHI+
PHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3RkPjwvdHI+CisgICAgPHRyPjx0ZD48ZGl2
IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+PC90cj4KKzwvdGFibGU+CisKKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CisKK3ZhciBleHBlY3RlZEdlc3R1cmVzVG90YWwgPSAyOwordmFyIGdlc3R1
cmVzT2NjdXJyZWQgPSAwOwordmFyIHNjcm9sbEFtb3VudFggPSBbJzAnLCAnMCddOwordmFyIHNj
cm9sbEFtb3VudFkgPSBbJzExMCcsICcyMDUnXTsKK3ZhciB3aGVlbEV2ZW50c09jY3VycmVkID0g
MDsKK3ZhciBleHBlY3RlZFdoZWVsRXZlbnRzT2NjdXJyZWQgPSBbJzAnLCAnMCddOwordmFyIHNj
cm9sbEV2ZW50c09jY3VycmVkID0gMDsKK3ZhciBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVk
ID0gJzEnOwordmFyIHNjcm9sbGVkRWxlbWVudCA9ICdkb2N1bWVudC5ib2R5JworCisvLyBBbHdh
eXMgY29uc3RydWN0IGEgcGFnZSBsYXJnZXIgdGhhbiB0aGUgdmVydGljYWwgaGVpZ2h0IG9mIHRo
ZSB3aW5kb3cuCitmdW5jdGlvbiBidWlsZFBhZ2UoKQoreworICAgIC8vIGJ1aWxkIHZlcnRpY2Fs
IHRhYmxlCisgICAgdmFyIHRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZlcnRpY2Fs
X3RhYmxlX3RvX2ZpbGwnKTsKKyAgICB2YXIgdGFyZ2V0SGVpZ2h0ID0gZG9jdW1lbnQuYm9keS5v
ZmZzZXRIZWlnaHQ7CisgICAgdmFyIGNlbGxQYWlySGVpZ2h0ID0gdGFibGUub2Zmc2V0SGVpZ2h0
OworICAgIHZhciBudW1iZXJPZlJlcHMgPSB0YXJnZXRIZWlnaHQgLyBjZWxsUGFpckhlaWdodCAq
IDI7CisgICAgdmFyIGk7CisgICAgZm9yIChpID0gMDsgaSA8IG51bWJlck9mUmVwczsgaSsrKSB7
CisgICAgICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKKyAgICAgICAg
cC5pbm5lckhUTUwgPSAnPHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3RkPic7CisgICAg
ICAgIHRhYmxlLmFwcGVuZENoaWxkKHApOworICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3RyJyk7CisgICAgICAgIHAuaW5uZXJIVE1MID0gJzx0ZD48ZGl2IGlkPSJyZWRi
b3giPjwvZGl2PjwvdGQ+JzsKKyAgICAgICAgdGFibGUuYXBwZW5kQ2hpbGQocCk7CisgICAgfQor
CisgICAgLy8gYnVpbGQgaG9yaXpvbnRhbCB0YWJsZQorICAgIHZhciBob3Jpem9udGFsVGFibGUg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaG9yaXpvbnRhbF90YWJsZV90b19maWxsJyk7Cisg
ICAgdmFyIHRhYmxlUm93ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpcnN0cm93Jyk7Cisg
ICAgdmFyIHRhcmdldFdpZHRoID0gZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDsKKyAgICB2YXIg
Y2VsbFBhaXJXaWR0aCA9IGhvcml6b250YWxUYWJsZS5vZmZzZXRXaWR0aDsKKyAgICBudW1iZXJP
ZlJlcHMgPSB0YXJnZXRXaWR0aCAvIGNlbGxQYWlyV2lkdGggKiAyOworICAgIGZvciAoaSA9IDA7
IGkgPCBudW1iZXJPZlJlcHM7IGkrKykgeworICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3RkJyk7CisgICAgICAgIHAuaW5uZXJIVE1MID0gJzxkaXYgaWQ9InJlZGJveCI+
PC9kaXY+JzsKKyAgICAgICAgdGFibGVSb3cuYXBwZW5kQ2hpbGQocCk7CisgICAgICAgIHZhciBw
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKKyAgICAgICAgcC5pbm5lckhUTUwgPSAn
PGRpdiBpZD0iZ3JlZW5ib3giPjwvZGl2Pic7CisgICAgICAgIHRhYmxlUm93LmFwcGVuZENoaWxk
KHApOworICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCByZWNv
cmRTY3JvbGwpOworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwgcmVj
b3JkV2hlZWwpOworfQorCitmdW5jdGlvbiBmaXJzdEdlc3R1cmVTY3JvbGwoKQoreworICAgIGRl
YnVnKCJmaXJzdCBnZXN0dXJlIik7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2lu
KDk1LCAxMik7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgtNTUsIC0xMTAp
OworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CisKKyAgICAvLyBXYWl0
IGZvciBsYXlvdXQuCisgICAgY2hlY2tTY3JvbGxPZmZzZXQoKTsKK30KKworZnVuY3Rpb24gc2Vj
b25kR2VzdHVyZVNjcm9sbCgpCit7CisgICAgZGVidWcoInNlY29uZCBnZXN0dXJlIik7CisgICAg
ZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDEyLCA5Nyk7CisgICAgZXZlbnRTZW5kZXIu
Z2VzdHVyZVNjcm9sbFVwZGF0ZSgtNDIsIC05NSk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNj
cm9sbEVuZCgwLCAwKTsKKworICAgIC8vIFdhaXQgZm9yIGxheW91dC4KKyAgICBjaGVja1Njcm9s
bE9mZnNldCgpOworfQorCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGJ1aWxkUGFnZSgp
OworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgZGVzY3JpcHRpb24oJ1Ro
aXMgdGVzdHMgdGhhdCBhIHBhZ2UgY2Fubm90IGJlIHNjcm9sbGVkIGhvcml6b250YWxseSB3aXRo
IHRvdWNoICcgKworICAgICAgICAgICAgICAgICAgICAnKGJ1dCBjYW4gc3RpbGwgYmUgc2Nyb2xs
ZWQgdmVydGljYWxseSkgaWYgaXRzIGJvZHkgaGFzIHN0eWxlIG92ZXJmbG93LXg6aGlkZGVuLiAn
ICsKKyAgICAgICAgICAgICAgICAgICAgJ1RoZSBzY3JvbGwgZXZlbnRzIGluIHRoaXMgdGVzdCBo
YXZlIGJvdGggYW4geCBhbmQgeSBjb21wb25lbnQuJyk7CisKKyAgICAgICAgaWYgKGNoZWNrVGVz
dERlcGVuZGVuY2llcygpKQorICAgICAgICAgICAgZmlyc3RHZXN0dXJlU2Nyb2xsKCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGV4aXRJZk5lY2Vzc2FyeSgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRHVtcFJlbmRlclRyZWUuICBUb3VjaCBz
Y3JvbGwgdGhlIHJlZCByZWN0IHRvIGxvZy4iKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXloaWRkZW4tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Ny
b2xsLWJvZHkteWhpZGRlbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk4OTJiYTI4ZmI0NmIy
ZjAxN2JkYWRlOGM5ODY3N2ZiNzUzZTE3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXlo
aWRkZW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdHMgdGhhdCBhIHBh
Z2UgY2Fubm90IGJlIHNjcm9sbGVkIHZlcnRpY2FsbHkgd2l0aCB0b3VjaCAoYnV0IGNhbiBzdGls
bCBiZSBzY3JvbGxlZCBob3Jpem9udGFsbHkpIGlmIGl0cyBib2R5IGhhcyBzdHlsZSBvdmVyZmxv
dy15OmhpZGRlbi4gVGhlIHNjcm9sbCBldmVudHMgaW4gdGhpcyB0ZXN0IGhhdmUgYm90aCBhbiB4
IGFuZCB5IGNvbXBvbmVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2dlc3R1
cmUgZXZlbnRzIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtIG9yIGdlc3R1cmUgZXZl
bnQgc2Nyb2xsaW5nIG9mIGEgZG9jdW1lbnQgaXMgYnJva2VuCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteWhp
ZGRlbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1n
ZXN0dXJlLW5vc2Nyb2xsLWJvZHkteWhpZGRlbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxNmU4ODcwMGE2
ZDgzZTQzODkxY2MwNDMxNzQwMTQ4MzhhNTRlNDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9k
eS15aGlkZGVuLmh0bWwKQEAgLTAsMCArMSwxNDkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZ2VzdHVyZS1oZWxwZXJzLmpzIj48L3NjcmlwdD4K
KzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisjdG91Y2h0YXJnZXQgeworICB3aWR0aDogMTAwcHg7
CisgIGhlaWdodDogMTAwcHg7CisgIGJhY2tncm91bmQ6IHdoaXRlOworICBvdmVyZmxvdzpoaWRk
ZW47Cit9CisKKzo6LXdlYmtpdC1zY3JvbGxiYXIgeworICAgIHdpZHRoOiAwcHg7CisgICAgaGVp
Z2h0OiAwcHg7Cit9CisKKyNncmVlbmJveCB7CisgIHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAx
MDBweDsKKyAgYmFja2dyb3VuZDogZ3JlZW47CisgIHBhZGRpbmc6IDBweDsKKyAgbWFyZ2luOiAw
cHg7Cit9CisKKyNyZWRib3ggeworICB3aWR0aDogMTAwcHg7CisgIGhlaWdodDogMTAwcHg7Cisg
IGJhY2tncm91bmQ6IHJlZDsKKyAgcGFkZGluZzogMHB4OworICBtYXJnaW46IDBweDsKK30KKwor
dGQgeworICBwYWRkaW5nOiAwcHg7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgc3R5bGU9
Im1hcmdpbjowOyBvdmVyZmxvdy15OmhpZGRlbjsiIG9ubG9hZD0icnVuVGVzdCgpOyI+CisKKzx0
YWJsZSBpZD0iaG9yaXpvbnRhbF90YWJsZV90b19maWxsIj4KKyAgPHRyIGlkPSJmaXJzdHJvdyI+
CisgICAgPHRkPjxkaXYgaWQ9InJlZGJveCI+PC9kaXY+PC90ZD4KKyAgICA8dGQ+PGRpdiBpZD0i
Z3JlZW5ib3giPjwvZGl2PjwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorCis8dGFibGUgaWQ9InZl
cnRpY2FsX3RhYmxlX3RvX2ZpbGwiPgorICAgIDx0cj48dGQ+PGRpdiBpZD0iZ3JlZW5ib3giPjwv
ZGl2PjwvdGQ+PC90cj4KKyAgICA8dHI+PHRkPjxkaXYgaWQ9InJlZGJveCI+PC9kaXY+PC90ZD48
L3RyPgorPC90YWJsZT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwordmFyIGV4cGVj
dGVkR2VzdHVyZXNUb3RhbCA9IDI7Cit2YXIgZ2VzdHVyZXNPY2N1cnJlZCA9IDA7Cit2YXIgc2Ny
b2xsQW1vdW50WCA9IFsnNTUnLCAnOTcnXTsKK3ZhciBzY3JvbGxBbW91bnRZID0gWycwJywgJzAn
XTsKK3ZhciB3aGVlbEV2ZW50c09jY3VycmVkID0gMDsKK3ZhciBleHBlY3RlZFdoZWVsRXZlbnRz
T2NjdXJyZWQgPSBbJzAnLCAnMCddOwordmFyIHNjcm9sbEV2ZW50c09jY3VycmVkID0gMDsKK3Zh
ciBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkID0gJzEnOwordmFyIHNjcm9sbGVkRWxlbWVu
dCA9ICdkb2N1bWVudC5ib2R5JworCisvLyBBbHdheXMgY29uc3RydWN0IGEgcGFnZSBsYXJnZXIg
dGhhbiB0aGUgdmVydGljYWwgaGVpZ2h0IG9mIHRoZSB3aW5kb3cuCitmdW5jdGlvbiBidWlsZFBh
Z2UoKQoreworICAgIC8vIGJ1aWxkIHZlcnRpY2FsIHRhYmxlCisgICAgdmFyIHRhYmxlID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZlcnRpY2FsX3RhYmxlX3RvX2ZpbGwnKTsKKyAgICB2YXIg
dGFyZ2V0SGVpZ2h0ID0gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7CisgICAgdmFyIGNlbGxQ
YWlySGVpZ2h0ID0gdGFibGUub2Zmc2V0SGVpZ2h0OworICAgIHZhciBudW1iZXJPZlJlcHMgPSB0
YXJnZXRIZWlnaHQgLyBjZWxsUGFpckhlaWdodCAqIDI7CisgICAgdmFyIGk7CisgICAgZm9yIChp
ID0gMDsgaSA8IG51bWJlck9mUmVwczsgaSsrKSB7CisgICAgICAgIHZhciBwID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgndHInKTsKKyAgICAgICAgcC5pbm5lckhUTUwgPSAnPHRkPjxkaXYgaWQ9
ImdyZWVuYm94Ij48L2Rpdj48L3RkPic7CisgICAgICAgIHRhYmxlLmFwcGVuZENoaWxkKHApOwor
ICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CisgICAgICAgIHAu
aW5uZXJIVE1MID0gJzx0ZD48ZGl2IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+JzsKKyAgICAgICAg
dGFibGUuYXBwZW5kQ2hpbGQocCk7CisgICAgfQorCisgICAgLy8gYnVpbGQgaG9yaXpvbnRhbCB0
YWJsZQorICAgIHZhciBob3Jpem9udGFsVGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
aG9yaXpvbnRhbF90YWJsZV90b19maWxsJyk7CisgICAgdmFyIHRhYmxlUm93ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2ZpcnN0cm93Jyk7CisgICAgdmFyIHRhcmdldFdpZHRoID0gZG9jdW1l
bnQuYm9keS5vZmZzZXRXaWR0aDsKKyAgICB2YXIgY2VsbFBhaXJXaWR0aCA9IGhvcml6b250YWxU
YWJsZS5vZmZzZXRXaWR0aDsKKyAgICBudW1iZXJPZlJlcHMgPSB0YXJnZXRXaWR0aCAvIGNlbGxQ
YWlyV2lkdGggKiAyOworICAgIGZvciAoaSA9IDA7IGkgPCBudW1iZXJPZlJlcHM7IGkrKykgewor
ICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CisgICAgICAgIHAu
aW5uZXJIVE1MID0gJzxkaXYgaWQ9InJlZGJveCI+PC9kaXY+JzsKKyAgICAgICAgdGFibGVSb3cu
YXBwZW5kQ2hpbGQocCk7CisgICAgICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
dGQnKTsKKyAgICAgICAgcC5pbm5lckhUTUwgPSAnPGRpdiBpZD0iZ3JlZW5ib3giPjwvZGl2Pic7
CisgICAgICAgIHRhYmxlUm93LmFwcGVuZENoaWxkKHApOworICAgIH0KKworICAgIHdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCByZWNvcmRTY3JvbGwpOworICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwgcmVjb3JkV2hlZWwpOworfQorCitmdW5jdGlvbiBm
aXJzdEdlc3R1cmVTY3JvbGwoKQoreworICAgIGRlYnVnKCJmaXJzdCBnZXN0dXJlIik7CisgICAg
ZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDE5NSwgMTIpOworICAgIGV2ZW50U2VuZGVy
Lmdlc3R1cmVTY3JvbGxVcGRhdGUoLTU1LCAtMTEwKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJl
U2Nyb2xsRW5kKDAsIDApOworCisgICAgLy8gV2FpdCBmb3IgbGF5b3V0LgorICAgIGNoZWNrU2Ny
b2xsT2Zmc2V0KCk7Cit9CisKK2Z1bmN0aW9uIHNlY29uZEdlc3R1cmVTY3JvbGwoKQoreworICAg
IGRlYnVnKCJzZWNvbmQgZ2VzdHVyZSIpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxC
ZWdpbigxMjAsIDI1NSk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgtNDIs
IC05NSk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKKworICAgIC8v
IFdhaXQgZm9yIGxheW91dC4KKyAgICBjaGVja1Njcm9sbE9mZnNldCgpOworfQorCitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0
aW9uIHJ1blRlc3QoKQoreworICAgIGJ1aWxkUGFnZSgpOworICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgZGVzY3JpcHRpb24oJ1RoaXMgdGVzdHMgdGhhdCBhIHBhZ2UgY2Fu
bm90IGJlIHNjcm9sbGVkIHZlcnRpY2FsbHkgd2l0aCB0b3VjaCAnICsKKyAgICAgICAgICAgICAg
ICAgICAgJyhidXQgY2FuIHN0aWxsIGJlIHNjcm9sbGVkIGhvcml6b250YWxseSkgaWYgaXRzIGJv
ZHkgaGFzIHN0eWxlIG92ZXJmbG93LXk6aGlkZGVuLiAnICsKKyAgICAgICAgICAgICAgICAgICAg
J1RoZSBzY3JvbGwgZXZlbnRzIGluIHRoaXMgdGVzdCBoYXZlIGJvdGggYW4geCBhbmQgeSBjb21w
b25lbnQuJyk7CisKKyAgICAgICAgaWYgKGNoZWNrVGVzdERlcGVuZGVuY2llcygpKQorICAgICAg
ICAgICAgZmlyc3RHZXN0dXJlU2Nyb2xsKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV4
aXRJZk5lY2Vzc2FyeSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKCJUaGlzIHRlc3Qg
cmVxdWlyZXMgRHVtcFJlbmRlclRyZWUuICBUb3VjaCBzY3JvbGwgdGhlIHJlZCByZWN0IHRvIGxv
Zy4iKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Nj
cm9sbC1ib2R5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3Rv
dWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhMzY5YjkwZWZhMDA2
YmRiZjdhMTdlOTI4Mjg1Mzg3NDcyZmQzYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS5o
dG1sCkBAIC0wLDAgKzEsMTY2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2dlc3R1cmUtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8c3R5bGUgdHlw
ZT0idGV4dC9jc3MiPgorI3RvdWNodGFyZ2V0IHsKKyAgd2lkdGg6IDEwMHB4OworICBoZWlnaHQ6
IDEwMHB4OworICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgb3ZlcmZsb3c6aGlkZGVuOworfQorCis6
Oi13ZWJraXQtc2Nyb2xsYmFyIHsKKyAgICB3aWR0aDogMHB4OworICAgIGhlaWdodDogMHB4Owor
fQorCisjZ3JlZW5ib3ggeworICB3aWR0aDogMTAwcHg7CisgIGhlaWdodDogMTAwcHg7CisgIGJh
Y2tncm91bmQ6IGdyZWVuOworICBwYWRkaW5nOiAwcHg7CisgIG1hcmdpbjogMHB4OworfQorCisj
cmVkYm94IHsKKyAgd2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4OworICBiYWNrZ3JvdW5k
OiByZWQ7CisgIHBhZGRpbmc6IDBweDsKKyAgbWFyZ2luOiAwcHg7Cit9CisKK3RkIHsKKyAgcGFk
ZGluZzogMHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IHN0eWxlPSJtYXJnaW46MDsg
b3ZlcmZsb3c6aGlkZGVuOyIgb25sb2FkPSJydW5UZXN0KCk7Ij4KKworPHRhYmxlIGlkPSJob3Jp
em9udGFsX3RhYmxlX3RvX2ZpbGwiPgorICA8dHIgaWQ9ImZpcnN0cm93Ij4KKyAgICA8dGQ+PGRp
diBpZD0icmVkYm94Ij48L2Rpdj48L3RkPgorICAgIDx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9k
aXY+PC90ZD4KKyAgPC90cj4KKzwvdGFibGU+CisKKzx0YWJsZSBpZD0idmVydGljYWxfdGFibGVf
dG9fZmlsbCI+CisgICAgPHRyPjx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD48L3Ry
PgorICAgIDx0cj48dGQ+PGRpdiBpZD0icmVkYm94Ij48L2Rpdj48L3RkPjwvdHI+Cis8L3RhYmxl
PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCit2YXIgZXhwZWN0ZWRHZXN0dXJlc1Rv
dGFsID0gMjsKK3ZhciBnZXN0dXJlc09jY3VycmVkID0gMDsKK3ZhciBzY3JvbGxBbW91bnRYID0g
WycwJywgJzAnXTsKK3ZhciBzY3JvbGxBbW91bnRZID0gWycwJywgJzAnXTsKK3ZhciB3aGVlbEV2
ZW50c09jY3VycmVkID0gMDsKK3ZhciBleHBlY3RlZFdoZWVsRXZlbnRzT2NjdXJyZWQgPSBbJzAn
LCAnMCddOwordmFyIHNjcm9sbEV2ZW50c09jY3VycmVkID0gMDsKK3ZhciBleHBlY3RlZFNjcm9s
bEV2ZW50c09jY3VycmVkID0gJzAnOwordmFyIHNjcm9sbGVkRWxlbWVudCA9ICdkb2N1bWVudC5i
b2R5JworCisvLyBBbHdheXMgY29uc3RydWN0IGEgcGFnZSBsYXJnZXIgdGhhbiB0aGUgdmVydGlj
YWwgaGVpZ2h0IG9mIHRoZSB3aW5kb3cuCitmdW5jdGlvbiBidWlsZFBhZ2UoKQoreworICAgIC8v
IGJ1aWxkIHZlcnRpY2FsIHRhYmxlCisgICAgdmFyIHRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3ZlcnRpY2FsX3RhYmxlX3RvX2ZpbGwnKTsKKyAgICB2YXIgdGFyZ2V0SGVpZ2h0ID0g
ZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7CisgICAgdmFyIGNlbGxQYWlySGVpZ2h0ID0gdGFi
bGUub2Zmc2V0SGVpZ2h0OworICAgIHZhciBudW1iZXJPZlJlcHMgPSB0YXJnZXRIZWlnaHQgLyBj
ZWxsUGFpckhlaWdodCAqIDI7CisgICAgdmFyIGk7CisgICAgZm9yIChpID0gMDsgaSA8IG51bWJl
ck9mUmVwczsgaSsrKSB7CisgICAgICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
dHInKTsKKyAgICAgICAgcC5pbm5lckhUTUwgPSAnPHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rp
dj48L3RkPic7CisgICAgICAgIHRhYmxlLmFwcGVuZENoaWxkKHApOworICAgICAgICB2YXIgcCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CisgICAgICAgIHAuaW5uZXJIVE1MID0gJzx0
ZD48ZGl2IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+JzsKKyAgICAgICAgdGFibGUuYXBwZW5kQ2hp
bGQocCk7CisgICAgfQorCisgICAgLy8gYnVpbGQgaG9yaXpvbnRhbCB0YWJsZQorICAgIHZhciBo
b3Jpem9udGFsVGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaG9yaXpvbnRhbF90YWJs
ZV90b19maWxsJyk7CisgICAgdmFyIHRhYmxlUm93ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2ZpcnN0cm93Jyk7CisgICAgdmFyIHRhcmdldFdpZHRoID0gZG9jdW1lbnQuYm9keS5vZmZzZXRX
aWR0aDsKKyAgICB2YXIgY2VsbFBhaXJXaWR0aCA9IGhvcml6b250YWxUYWJsZS5vZmZzZXRXaWR0
aDsKKyAgICBudW1iZXJPZlJlcHMgPSB0YXJnZXRXaWR0aCAvIGNlbGxQYWlyV2lkdGggKiAyOwor
ICAgIGZvciAoaSA9IDA7IGkgPCBudW1iZXJPZlJlcHM7IGkrKykgeworICAgICAgICB2YXIgcCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CisgICAgICAgIHAuaW5uZXJIVE1MID0gJzxk
aXYgaWQ9InJlZGJveCI+PC9kaXY+JzsKKyAgICAgICAgdGFibGVSb3cuYXBwZW5kQ2hpbGQocCk7
CisgICAgICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKKyAgICAgICAg
cC5pbm5lckhUTUwgPSAnPGRpdiBpZD0iZ3JlZW5ib3giPjwvZGl2Pic7CisgICAgICAgIHRhYmxl
Um93LmFwcGVuZENoaWxkKHApOworICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCJzY3JvbGwiLCByZWNvcmRTY3JvbGwpOworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZXdoZWVsIiwgcmVjb3JkV2hlZWwpOworfQorCitmdW5jdGlvbiBmaXJzdEdlc3R1cmVTY3Jv
bGwoKQoreworICAgIGRlYnVnKCJmaXJzdCBnZXN0dXJlIik7CisgICAgZXZlbnRTZW5kZXIuZ2Vz
dHVyZVNjcm9sbEJlZ2luKDk1LCAxMik7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVw
ZGF0ZSgtNTUsIC0xMTApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7
CisKKyAgICAvLyBXYWl0IGZvciBsYXlvdXQuCisgICAgY2hlY2tTY3JvbGxPZmZzZXQoKTsKK30K
KworZnVuY3Rpb24gc2Vjb25kR2VzdHVyZVNjcm9sbCgpCit7CisgICAgZGVidWcoInNlY29uZCBn
ZXN0dXJlIik7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDEyLCA5Nyk7Cisg
ICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgtNDIsIC05NSk7CisgICAgZXZlbnRT
ZW5kZXIuZ2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKKworICAgIC8vIFdhaXQgZm9yIGxheW91dC4K
KyAgICBjaGVja1Njcm9sbE9mZnNldCgpOworCisgICAgLy8gSW4gdGhpcyB0ZXN0IHdlIGRvIG5v
dCBleHBlY3QgYW55IHNjcm9sbCBldmVudHMgdG8KKyAgICAvLyBiZSByZWNlaXZlZCBieSB0aGUg
ZXZlbnQgbGlzdGVuZXIsIHNvIHdlIHNpZ25hbAorICAgIC8vIHRoZSBlbmQgb2YgdGhlIHRlc3Qg
YnkgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGluc3RlYWQKKyAgICAvLyBvZiByZWx5aW5nIG9uIHJl
Y29yZFNjcm9sbCgpIHRvIGRvIGl0LgorICAgIGZpbmlzaFRlc3QoKTsKK30KKworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlv
biBydW5UZXN0KCkKK3sKKyAgICBidWlsZFBhZ2UoKTsKKyAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgIGRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHRoYXQgYSBwYWdlIGNhbm5v
dCBiZSBzY3JvbGxlZCB3aXRoIHRvdWNoIGlmIGl0cyBib2R5IGhhcyBzdHlsZSBvdmVyZmxvdzpo
aWRkZW4uJyk7CisKKyAgICAgICAgaWYgKGNoZWNrVGVzdERlcGVuZGVuY2llcygpKQorICAgICAg
ICAgICAgZmlyc3RHZXN0dXJlU2Nyb2xsKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV4
aXRJZk5lY2Vzc2FyeSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKCJUaGlzIHRlc3Qg
cmVxdWlyZXMgRHVtcFJlbmRlclRyZWUuICBUb3VjaCBzY3JvbGwgdGhlIHJlZCByZWN0IHRvIGxv
Zy4iKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGZpbmlzaFRlc3QoKQoreworICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgaWYgKGdlc3R1cmVzT2NjdXJyZWQgPT0gZXhwZWN0
ZWRHZXN0dXJlc1RvdGFsKSB7CisgICAgICAgICAgICBzaG91bGRCZSgnc2Nyb2xsRXZlbnRzT2Nj
dXJyZWQnLCBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkKTsKKyAgICAgICAgICAgIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgp
OworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisgICAgfQorfQorPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi1ub3QtcHJvcGFnYXRlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9s
bC1kaXYtbm90LXByb3BhZ2F0ZWQuaHRtbAppbmRleCAyODAxNDA5ZDdiMDQzYzI0NTA5YjY1NzFk
YjljNDViOTZiMDFkZTFkLi5kMGM1ZDUwY2I2Yzk4YmNjMGU4ZGZmYjZiZjljZDUyODdiYzQ5YjU3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNo
LWdlc3R1cmUtc2Nyb2xsLWRpdi1ub3QtcHJvcGFnYXRlZC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZGl2LW5vdC1w
cm9wYWdhdGVkLmh0bWwKQEAgLTkyLDI1ICs5Miw2IEBAIHZhciBzY3JvbGxlZEVsZW1lbnQgPSAn
bW92ZWRib3gnCiB2YXIgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAwOwogdmFyIGV4cGVjdGVkU2Ny
b2xsRXZlbnRzT2NjdXJyZWQgPSAnMSc7CiAKLQotZnVuY3Rpb24gcmVjb3JkU2Nyb2xsKGV2ZW50
KSB7Ci0JZGVidWcoJ3Njcm9sbCBldmVudCAnICsgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgKyAnKz4g
JyArIGV2ZW50LnRhcmdldCk7Ci0Jc2Nyb2xsRXZlbnRzT2NjdXJyZWQrKzsKLQotCWlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKLQkJLy8gQmVjYXVzZSBzY3JvbGwgZXZlbnRzIGFycml2ZSBhc3lu
Y2hyb25vdXNseSwgb25seSBvbmUgd2lsbCBhcnJpdmUuCi0JICAgIGlmIChnZXN0dXJlc09jY3Vy
cmVkID09IGV4cGVjdGVkR2VzdHVyZXNUb3RhbCkgewotCQkJc2hvdWxkQmUoJ3Njcm9sbEV2ZW50
c09jY3VycmVkJywgZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCk7Ci0JICAgICAgICAvLyBJ
ZiB3ZSd2ZSBnb3QgaGVyZSwgd2UndmUgcGFzc2VkLgotCSAgICAgICAgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKLQkgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0JICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0JICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci0JCX0KLSAgICB9Ci19Ci0KLQogZnVuY3Rpb24gZmlyc3RHZXN0dXJlU2Nyb2xsKCkKIHsK
ICAgICBkZWJ1ZygiZmlyc3QgZ2VzdHVyZSIpOwpAQCAtMTI2LDcgKzEwNyw4IEBAIGZ1bmN0aW9u
IHNlY29uZEdlc3R1cmVTY3JvbGwoKQogewogICAgIGRlYnVnKCJzZWNvbmQgZ2VzdHVyZSIpOwog
ICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdpbigxMiwgNDApOwotICAgIGV2ZW50U2Vu
ZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGVXaXRob3V0UHJvcGFnYXRpb24oMCwgLTYwKTsKKyAgICBl
dmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9uKDAsIC01MCk7
CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZVdpdGhvdXRQcm9wYWdhdGlvbigw
LCAtMTApOwogICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CiAKICAgICAv
LyBXYWl0IGZvciBsYXlvdXQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi1wcm9wYWdhdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xs
LWRpdi1wcm9wYWdhdGVkLmh0bWwKaW5kZXggMzQzZTE1ZjVjZTI5YjJlY2I2OWQyOTIxZDJlZmM2
MzE2YTVhMWRkNC4uOTk3Njk4NTRhYWM1OGE2Y2U1ZjM3NTc5Y2RhODRmNTc0ODVmZDYzNyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0
dXJlLXNjcm9sbC1kaXYtcHJvcGFnYXRlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZGl2LXByb3BhZ2F0ZWQuaHRt
bApAQCAtOTIsMjUgKzkyLDYgQEAgdmFyIHNjcm9sbGVkRWxlbWVudCA9ICdtb3ZlZGJveCcKIHZh
ciBzY3JvbGxFdmVudHNPY2N1cnJlZCA9IDA7CiB2YXIgZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1
cnJlZCA9ICcxJzsKIAotCi1mdW5jdGlvbiByZWNvcmRTY3JvbGwoZXZlbnQpIHsKLQlkZWJ1Zygn
c2Nyb2xsIGV2ZW50ICcgKyBzY3JvbGxFdmVudHNPY2N1cnJlZCArICcrPiAnICsgZXZlbnQudGFy
Z2V0KTsKLQlzY3JvbGxFdmVudHNPY2N1cnJlZCsrOwotCi0JaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgewotCQkvLyBCZWNhdXNlIHNjcm9sbCBldmVudHMgYXJyaXZlIGFzeW5jaHJvbm91c2x5LCBv
bmx5IG9uZSB3aWxsIGFycml2ZS4KLQkgICAgaWYgKGdlc3R1cmVzT2NjdXJyZWQgPT0gZXhwZWN0
ZWRHZXN0dXJlc1RvdGFsKSB7Ci0JCQlzaG91bGRCZSgnc2Nyb2xsRXZlbnRzT2NjdXJyZWQnLCBl
eHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkKTsKLQkgICAgICAgIC8vIElmIHdlJ3ZlIGdvdCBo
ZXJlLCB3ZSd2ZSBwYXNzZWQuCi0JICAgICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwot
CSAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLQkgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLQkgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLQkJfQotICAg
IH0KLX0KLQotCiBmdW5jdGlvbiBmaXJzdEdlc3R1cmVTY3JvbGwoKQogewogICAgIGRlYnVnKCJm
aXJzdCBnZXN0dXJlIik7CkBAIC0xMjYsNyArMTA3LDggQEAgZnVuY3Rpb24gc2Vjb25kR2VzdHVy
ZVNjcm9sbCgpCiB7CiAgICAgZGVidWcoInNlY29uZCBnZXN0dXJlIik7CiAgICAgZXZlbnRTZW5k
ZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDEyLCA0MCk7Ci0gICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNj
cm9sbFVwZGF0ZSgwLCAtNjApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUo
MCwgLTUwKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC0xMCk7CiAg
ICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKIAogICAgIC8vIFdhaXQgZm9y
IGxheW91dC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1
cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZGl2LXR3aWNlLXByb3BhZ2F0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZGl2
LXR3aWNlLXByb3BhZ2F0ZWQuaHRtbAppbmRleCA4ZjY1MWQ0NWJjYzlhMDcyMDhlMjMwZTQ5MWFl
ZDQ5MDMyNDY5MWYwLi4xYjZlNjFlYjMzNzk3Y2I1NTYxNjQyNjM0ZTg4YzVhNThlYjFkYzg1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdl
c3R1cmUtc2Nyb2xsLWRpdi10d2ljZS1wcm9wYWdhdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1kaXYtdHdpY2Ut
cHJvcGFnYXRlZC5odG1sCkBAIC0xMTYsMzAgKzExNiwxMiBAQCB2YXIgc2Nyb2xsZWRFbGVtZW50
ID0gJ21vdmVkYm94JwogdmFyIHNjcm9sbEV2ZW50c09jY3VycmVkID0gMDsKIHZhciBleHBlY3Rl
ZFNjcm9sbEV2ZW50c09jY3VycmVkID0gJzEnOwogCi0KLWZ1bmN0aW9uIHJlY29yZFNjcm9sbChl
dmVudCkgewotCWRlYnVnKCdzY3JvbGwgZXZlbnQgJyArIHNjcm9sbEV2ZW50c09jY3VycmVkICsg
Jys+ICcgKyBldmVudC50YXJnZXQpOwotCXNjcm9sbEV2ZW50c09jY3VycmVkKys7Ci0KLQlpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7Ci0JCS8vIEJlY2F1c2Ugc2Nyb2xsIGV2ZW50cyBhcnJpdmUg
YXN5bmNocm9ub3VzbHksIG9ubHkgb25lIHdpbGwgYXJyaXZlLgotCSAgICBpZiAoZ2VzdHVyZXNP
Y2N1cnJlZCA9PSBleHBlY3RlZEdlc3R1cmVzVG90YWwpIHsKLQkJCXNob3VsZEJlKCdzY3JvbGxF
dmVudHNPY2N1cnJlZCcsIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQpOwotCSAgICAgICAg
Ly8gSWYgd2UndmUgZ290IGhlcmUsIHdlJ3ZlIHBhc3NlZC4KLQkgICAgICAgIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Ci0JICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotCSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotCSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwotCQl9Ci0gICAgfQotfQotCi0KIGZ1bmN0aW9uIGZpcnN0R2VzdHVyZVNjcm9sbCgp
CiB7CiAgICAgZGVidWcoImZpcnN0IGdlc3R1cmUiKTsKICAgICBldmVudFNlbmRlci5nZXN0dXJl
U2Nyb2xsQmVnaW4oMTAsIDcyKTsKLSAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRl
KDAsIC0yMzApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTIwMCk7
CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMzApOwogICAgIGV2ZW50
U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CiAKICAgICAvLyBXYWl0IGZvciBsYXlvdXQu
CkBAIC0xNTAsNyArMTMyLDggQEAgZnVuY3Rpb24gc2Vjb25kR2VzdHVyZVNjcm9sbCgpCiB7CiAg
ICAgZGVidWcoInNlY29uZCBnZXN0dXJlIik7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9s
bEJlZ2luKDEyLCA0MCk7Ci0gICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAt
NDUpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTIwKTsKKyAgICBl
dmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC0yNSk7CiAgICAgZXZlbnRTZW5kZXIu
Z2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKIAogICAgIC8vIFdhaXQgZm9yIGxheW91dC4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVy
ZS1zY3JvbGwtaWZyYW1lLW5vdC1wcm9wYWdhdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWlmcmFtZS1ub3QtcHJvcGFn
YXRlZC5odG1sCmluZGV4IGE2ZDlmMjJjMzAwNWE0NTMyMDU4YjM2Mzk2ODNmMzcyZjdiYjA5Zjcu
LmE5OWMyNjU1Nzc4ZWNmNGRiZjQxMjI5MTIxOTlhNzI1NTllNTczZDAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwt
aWZyYW1lLW5vdC1wcm9wYWdhdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1pZnJhbWUtbm90LXByb3BhZ2F0ZWQu
aHRtbApAQCAtNzEsMjUgKzcxLDYgQEAgdmFyIHNjcm9sbGVkRWxlbWVudCA9ICdtb3ZlZGJveCcK
IHZhciBzY3JvbGxFdmVudHNPY2N1cnJlZCA9IDA7CiB2YXIgZXhwZWN0ZWRTY3JvbGxFdmVudHNP
Y2N1cnJlZCA9ICcxJzsKIAotCi1mdW5jdGlvbiByZWNvcmRTY3JvbGwoZXZlbnQpIHsKLQlkZWJ1
Zygnc2Nyb2xsIGV2ZW50ICcgKyBzY3JvbGxFdmVudHNPY2N1cnJlZCArICcrPiAnICsgZXZlbnQu
dGFyZ2V0KTsKLQlzY3JvbGxFdmVudHNPY2N1cnJlZCsrOwotCi0JaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgewotCQkvLyBCZWNhdXNlIHNjcm9sbCBldmVudHMgYXJyaXZlIGFzeW5jaHJvbm91c2x5
LCBvbmx5IG9uZSB3aWxsIGFycml2ZS4KLQkgICAgaWYgKGdlc3R1cmVzT2NjdXJyZWQgPT0gZXhw
ZWN0ZWRHZXN0dXJlc1RvdGFsKSB7Ci0JCQlzaG91bGRCZSgnc2Nyb2xsRXZlbnRzT2NjdXJyZWQn
LCBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkKTsKLQkgICAgICAgIC8vIElmIHdlJ3ZlIGdv
dCBoZXJlLCB3ZSd2ZSBwYXNzZWQuCi0JICAgICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwotCSAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLQkgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLQkgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLQkJfQot
ICAgIH0KLX0KLQotCiBmdW5jdGlvbiBmaXJzdEdlc3R1cmVTY3JvbGwoKQogewogICAgIGRlYnVn
KCJmaXJzdCBnZXN0dXJlIik7CkBAIC0xMDUsNyArODYsOCBAQCBmdW5jdGlvbiBzZWNvbmRHZXN0
dXJlU2Nyb2xsKCkKIHsKICAgICBkZWJ1Zygic2Vjb25kIGdlc3R1cmUiKTsKICAgICBldmVudFNl
bmRlci5nZXN0dXJlU2Nyb2xsQmVnaW4oMTIsIDQwKTsKLSAgICBldmVudFNlbmRlci5nZXN0dXJl
U2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9uKDAsIC0xMDApOworICAgIGV2ZW50U2VuZGVy
Lmdlc3R1cmVTY3JvbGxVcGRhdGVXaXRob3V0UHJvcGFnYXRpb24oMCwgLTEwKTsKKyAgICBldmVu
dFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9uKDAsIC01MCk7CiAg
ICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKIAogICAgIC8vIFdhaXQgZm9y
IGxheW91dC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1
cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtaWZyYW1lLXByb3BhZ2F0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtaWZyYW1l
LXByb3BhZ2F0ZWQuaHRtbAppbmRleCAxYTNiNWFkOTg3ZDcyOTc1MDZiMGEzZTM3MDMzOTUxZjkz
YzI5YTU4Li5kM2MwYWY0YzliYTkzNWNiNmM4NmUwMzRkNTU0OThkNzQ2MDM0MjJkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUt
c2Nyb2xsLWlmcmFtZS1wcm9wYWdhdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1pZnJhbWUtcHJvcGFnYXRlZC5o
dG1sCkBAIC03MSwyNSArNzEsNiBAQCB2YXIgc2Nyb2xsZWRFbGVtZW50ID0gJ21vdmVkYm94Jwog
dmFyIHNjcm9sbEV2ZW50c09jY3VycmVkID0gMDsKIHZhciBleHBlY3RlZFNjcm9sbEV2ZW50c09j
Y3VycmVkID0gJzEnOwogCi0KLWZ1bmN0aW9uIHJlY29yZFNjcm9sbChldmVudCkgewotCWRlYnVn
KCdzY3JvbGwgZXZlbnQgJyArIHNjcm9sbEV2ZW50c09jY3VycmVkICsgJys+ICcgKyBldmVudC50
YXJnZXQpOwotCXNjcm9sbEV2ZW50c09jY3VycmVkKys7Ci0KLQlpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7Ci0JCS8vIEJlY2F1c2Ugc2Nyb2xsIGV2ZW50cyBhcnJpdmUgYXN5bmNocm9ub3VzbHks
IG9ubHkgb25lIHdpbGwgYXJyaXZlLgotCSAgICBpZiAoZ2VzdHVyZXNPY2N1cnJlZCA9PSBleHBl
Y3RlZEdlc3R1cmVzVG90YWwpIHsKLQkJCXNob3VsZEJlKCdzY3JvbGxFdmVudHNPY2N1cnJlZCcs
IGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQpOwotCSAgICAgICAgLy8gSWYgd2UndmUgZ290
IGhlcmUsIHdlJ3ZlIHBhc3NlZC4KLQkgICAgICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Ci0JICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotCSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotCSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotCQl9Ci0g
ICAgfQotfQotCi0KIGZ1bmN0aW9uIGZpcnN0R2VzdHVyZVNjcm9sbCgpCiB7CiAgICAgZGVidWco
ImZpcnN0IGdlc3R1cmUiKTsKQEAgLTEwNSw3ICs4Niw4IEBAIGZ1bmN0aW9uIHNlY29uZEdlc3R1
cmVTY3JvbGwoKQogewogICAgIGRlYnVnKCJzZWNvbmQgZ2VzdHVyZSIpOwogICAgIGV2ZW50U2Vu
ZGVyLmdlc3R1cmVTY3JvbGxCZWdpbigxMiwgNDApOwotICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVT
Y3JvbGxVcGRhdGUoMCwgLTEwMCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0
ZSgwLCAtMTApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTUwKTsK
ICAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOwogCiAgICAgLy8gV2FpdCBm
b3IgbGF5b3V0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLW5vdC1wcm9wYWdhdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBh
Z2Utbm90LXByb3BhZ2F0ZWQuaHRtbAppbmRleCBiMzg1MjQ1ZmMxOWMzYjNkM2I5ODk1OTA0NjEw
ZDYwNGJiMjlmMTZhLi40NmQ4MzZjMjBjMWQ5M2I1MDE4YzJmNWUzMDZmYWU3NjI0OGYyNjM5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdl
c3R1cmUtc2Nyb2xsLXBhZ2Utbm90LXByb3BhZ2F0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2Utbm90LXBy
b3BhZ2F0ZWQuaHRtbApAQCAtODYsMjMgKzg2LDYgQEAgdmFyIHNjcm9sbGVkRWxlbWVudCA9ICdk
b2N1bWVudC5ib2R5JwogdmFyIHNjcm9sbEV2ZW50c09jY3VycmVkID0gMDsKIHZhciBleHBlY3Rl
ZFNjcm9sbEV2ZW50c09jY3VycmVkID0gJzEnOwogCi1mdW5jdGlvbiByZWNvcmRTY3JvbGwoZXZl
bnQpIHsKLQlkZWJ1Zygnc2Nyb2xsIGV2ZW50ICcgKyBzY3JvbGxFdmVudHNPY2N1cnJlZCArICcr
PiAnICsgZXZlbnQudGFyZ2V0KTsKLQlzY3JvbGxFdmVudHNPY2N1cnJlZCsrOwotCi0JaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgewotCQkvLyBCZWNhdXNlIHNjcm9sbCBldmVudHMgYXJyaXZlIGFz
eW5jaHJvbm91c2x5LCBvbmx5IG9uZSB3aWxsIGFycml2ZS4KLQkgICAgaWYgKGdlc3R1cmVzT2Nj
dXJyZWQgPT0gZXhwZWN0ZWRHZXN0dXJlc1RvdGFsKSB7Ci0JCQlzaG91bGRCZSgnc2Nyb2xsRXZl
bnRzT2NjdXJyZWQnLCBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkKTsKLQkgICAgICAgIC8v
IElmIHdlJ3ZlIGdvdCBoZXJlLCB3ZSd2ZSBwYXNzZWQuCi0JICAgICAgICBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwotCSAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLQkgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLQkgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLQkJfQotICAgIH0KLX0KLQogLy8gQWx3YXlzIGNvbnN0cnVjdCBhIHBhZ2UgbGFyZ2Vy
IHRoYW4gdGhlIHZlcnRpY2FsIGhlaWdodCBvZiB0aGUgd2luZG93LgogZnVuY3Rpb24gYnVpbGRQ
YWdlKCkKIHsKQEAgLTEzNiw3ICsxMTksOCBAQCBmdW5jdGlvbiBzZWNvbmRHZXN0dXJlU2Nyb2xs
KCkKIHsKICAgICBkZWJ1Zygic2Vjb25kIGdlc3R1cmUiKTsKICAgICBldmVudFNlbmRlci5nZXN0
dXJlU2Nyb2xsQmVnaW4oMTIsIDQwKTsKLSAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBk
YXRlV2l0aG91dFByb3BhZ2F0aW9uKDAsIC0yNTApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVT
Y3JvbGxVcGRhdGVXaXRob3V0UHJvcGFnYXRpb24oMCwgLTIwMCk7CisgICAgZXZlbnRTZW5kZXIu
Z2VzdHVyZVNjcm9sbFVwZGF0ZVdpdGhvdXRQcm9wYWdhdGlvbigwLCAtMTYwKTsKICAgICBldmVu
dFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOwogCiAgICAgLy8gV2FpdCBmb3IgbGF5b3V0
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3Vj
aC1nZXN0dXJlLXNjcm9sbC1wYWdlLXByb3BhZ2F0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcGFnZS1wcm9wYWdhdGVk
Lmh0bWwKaW5kZXggMDkzMDk1YzVlZmI5NmNiZDIyZjJmMGUxYjdkNWFjYTFmYTUwOGJkNS4uZGFh
NDU2N2U4M2ZkMTdhZjc5ODExOTI3MDRmZWYzYjkyNmQ5OTViMCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdl
LXByb3BhZ2F0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0
dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2UtcHJvcGFnYXRlZC5odG1sCkBAIC04NiwyMyAr
ODYsNiBAQCB2YXIgc2Nyb2xsZWRFbGVtZW50ID0gJ2RvY3VtZW50LmJvZHknCiB2YXIgc2Nyb2xs
RXZlbnRzT2NjdXJyZWQgPSAwOwogdmFyIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAn
MSc7CiAKLWZ1bmN0aW9uIHJlY29yZFNjcm9sbChldmVudCkgewotCWRlYnVnKCdzY3JvbGwgZXZl
bnQgJyArIHNjcm9sbEV2ZW50c09jY3VycmVkICsgJys+ICcgKyBldmVudC50YXJnZXQpOwotCXNj
cm9sbEV2ZW50c09jY3VycmVkKys7Ci0KLQlpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Ci0JCS8v
IEJlY2F1c2Ugc2Nyb2xsIGV2ZW50cyBhcnJpdmUgYXN5bmNocm9ub3VzbHksIG9ubHkgb25lIHdp
bGwgYXJyaXZlLgotCSAgICBpZiAoZ2VzdHVyZXNPY2N1cnJlZCA9PSBleHBlY3RlZEdlc3R1cmVz
VG90YWwpIHsKLQkJCXNob3VsZEJlKCdzY3JvbGxFdmVudHNPY2N1cnJlZCcsIGV4cGVjdGVkU2Ny
b2xsRXZlbnRzT2NjdXJyZWQpOwotCSAgICAgICAgLy8gSWYgd2UndmUgZ290IGhlcmUsIHdlJ3Zl
IHBhc3NlZC4KLQkgICAgICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Ci0JICAgICAgICBp
c1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotCSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
CSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotCQl9Ci0gICAgfQotfQotCiAv
LyBBbHdheXMgY29uc3RydWN0IGEgcGFnZSBsYXJnZXIgdGhhbiB0aGUgdmVydGljYWwgaGVpZ2h0
IG9mIHRoZSB3aW5kb3cuCiBmdW5jdGlvbiBidWlsZFBhZ2UoKQogewpAQCAtMTM2LDcgKzExOSw4
IEBAIGZ1bmN0aW9uIHNlY29uZEdlc3R1cmVTY3JvbGwoKQogewogICAgIGRlYnVnKCJzZWNvbmQg
Z2VzdHVyZSIpOwogICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdpbigxMiwgNDApOwot
ICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTI1MCk7CisgICAgZXZlbnRT
ZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMjAwKTsKKyAgICBldmVudFNlbmRlci5nZXN0
dXJlU2Nyb2xsVXBkYXRlKDAsIC0xNjApOwogICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxF
bmQoMCwgMCk7CiAKICAgICAvLyBXYWl0IGZvciBsYXlvdXQuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2Uu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVy
ZS1zY3JvbGwtcGFnZS5odG1sCmluZGV4IDRlNjBlNWNhZTBlOWI1MWVhZGI3NTQ4ZDdiN2M2MGQy
ODMxYmQ5YTguLjZlMTAzMzYyYTRmZjliMGVhM2I0NDNlMGY2MDhkNjk2YjYxMmUwNWEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVy
ZS1zY3JvbGwtcGFnZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcGFnZS5odG1sCkBAIC0xMDUsNyArMTA1LDcgQEAg
ZnVuY3Rpb24gZmlyc3RHZXN0dXJlU2Nyb2xsKCkKIGZ1bmN0aW9uIHNlY29uZEdlc3R1cmVTY3Jv
bGwoKQogewogICAgIGRlYnVnKCJzZWNvbmQgZ2VzdHVyZSIpOwotICAgIGV2ZW50U2VuZGVyLmdl
c3R1cmVTY3JvbGxCZWdpbigxMiwgNDApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxC
ZWdpbig4MDAsIDQwKTsKICAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC0z
MCk7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMzApOwogICAgIGV2
ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1
cmUtbm9zY3JvbGwtYm9keS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9k
eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRjYWY5YWE3NWQ0NGQyYTAwYzUzMWJiMmIwZmQx
YTliMTU4MWQxMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUaGlzIHRlc3RzIHRoYXQgYSBwYWdlIGNh
bm5vdCBiZSBzY3JvbGxlZCB3aXRoIHRvdWNoIGlmIGl0cyBib2R5IGhhcyBzdHlsZSBvdmVyZmxv
dzpoaWRkZW4uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitmaXJzdCBnZXN0dXJl
CitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIGlzIDAKK1BBU1MgZG9jdW1lbnQuYm9keS5z
Y3JvbGxMZWZ0IGlzIDAKK1BBU1Mgd2hlZWxFdmVudHNPY2N1cnJlZCBpcyAwCitzZWNvbmQgZ2Vz
dHVyZQorUEFTUyBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCBpcyAwCitQQVNTIGRvY3VtZW50LmJv
ZHkuc2Nyb2xsTGVmdCBpcyAwCitQQVNTIHdoZWVsRXZlbnRzT2NjdXJyZWQgaXMgMAorUEFTUyBz
Y3JvbGxFdmVudHNPY2N1cnJlZCBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJv
ZHktcHJvcGFnYXRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1w
cm9wYWdhdGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZjIzN2E1OGZmZWNhMzJlOGRlMTM0
NzUxYzk0MTc1Mjc1ODI2NGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Ny
b2xsLWJvZHktcHJvcGFnYXRlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGhpcyB0
ZXN0cyB0aGF0IGEgcGFnZSBjYW5ub3QgYmUgc2Nyb2xsZWQgdmVydGljYWxseSB3aXRoIHRvdWNo
IGlmIGl0cyBib2R5IGhhcyBzdHlsZSBvdmVyZmxvdy15OmhpZGRlbiBhbmQgdGhlIHNjcm9sbCBl
dmVudCBpcyBwcm9wb2dhdGVkIGZyb20gYSBzY3JvbGxhYmxlIGNoaWxkIGRpdi4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2ZpcnN0IGdlc3R1cmUKK1BBU1MgZG9jdW1lbnQuYm9k
eS5zY3JvbGxUb3AgaXMgMAorUEFTUyBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQgaXMgMAorUEFT
UyB3aGVlbEV2ZW50c09jY3VycmVkIGlzIDAKK3NlY29uZCBnZXN0dXJlCitQQVNTIGRvY3VtZW50
LmJvZHkuc2Nyb2xsVG9wIGlzIDAKK1BBU1MgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0IGlzIDAK
K1BBU1Mgd2hlZWxFdmVudHNPY2N1cnJlZCBpcyAwCitQQVNTIHNjcm9sbEV2ZW50c09jY3VycmVk
IGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90
b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXhoaWRkZW4tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRjMjc3NjI5ZjQzYWM3ZDI4ZTcxMmFmYTljNWI0NzM0MGM5YmQxMDgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90
b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE5IEBACitUaGlzIHRlc3RzIHRoYXQgYSBwYWdlIGNhbm5vdCBiZSBz
Y3JvbGxlZCBob3Jpem9udGFsbHkgd2l0aCB0b3VjaCAoYnV0IGNhbiBzdGlsbCBiZSBzY3JvbGxl
ZCB2ZXJ0aWNhbGx5KSBpZiBpdHMgYm9keSBoYXMgc3R5bGUgb3ZlcmZsb3cteDpoaWRkZW4uIFRo
ZSBzY3JvbGwgZXZlbnRzIGluIHRoaXMgdGVzdCBoYXZlIGJvdGggYW4geCBhbmQgeSBjb21wb25l
bnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitmaXJzdCBnZXN0dXJlCitQQVNT
IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIGlzIDExMAorUEFTUyBkb2N1bWVudC5ib2R5LnNjcm9s
bExlZnQgaXMgMAorUEFTUyB3aGVlbEV2ZW50c09jY3VycmVkIGlzIDAKK3NlY29uZCBnZXN0dXJl
CitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIGlzIDIwNQorUEFTUyBkb2N1bWVudC5ib2R5
LnNjcm9sbExlZnQgaXMgMAorUEFTUyB3aGVlbEV2ZW50c09jY3VycmVkIGlzIDAKK3Njcm9sbCBl
dmVudCAwKz4gW29iamVjdCBIVE1MRG9jdW1lbnRdCitQQVNTIHNjcm9sbEV2ZW50c09jY3VycmVk
IGlzIDEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90
b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS15aGlkZGVuLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXloaWRkZW4tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY4OWExZDcyNWQ5YzMxY2NhNTAzMWE2MjAwOWRhOGU0ZjkyN2YzMTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90
b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS15aGlkZGVuLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE5IEBACitUaGlzIHRlc3RzIHRoYXQgYSBwYWdlIGNhbm5vdCBiZSBz
Y3JvbGxlZCB2ZXJ0aWNhbGx5IHdpdGggdG91Y2ggKGJ1dCBjYW4gc3RpbGwgYmUgc2Nyb2xsZWQg
aG9yaXpvbnRhbGx5KSBpZiBpdHMgYm9keSBoYXMgc3R5bGUgb3ZlcmZsb3cteTpoaWRkZW4uIFRo
ZSBzY3JvbGwgZXZlbnRzIGluIHRoaXMgdGVzdCBoYXZlIGJvdGggYW4geCBhbmQgeSBjb21wb25l
bnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitmaXJzdCBnZXN0dXJlCitQQVNT
IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIGlzIDAKK1BBU1MgZG9jdW1lbnQuYm9keS5zY3JvbGxM
ZWZ0IGlzIDU1CitQQVNTIHdoZWVsRXZlbnRzT2NjdXJyZWQgaXMgMAorc2Vjb25kIGdlc3R1cmUK
K1BBU1MgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgaXMgMAorUEFTUyBkb2N1bWVudC5ib2R5LnNj
cm9sbExlZnQgaXMgOTcKK1BBU1Mgd2hlZWxFdmVudHNPY2N1cnJlZCBpcyAwCitzY3JvbGwgZXZl
bnQgMCs+IFtvYmplY3QgSFRNTERvY3VtZW50XQorUEFTUyBzY3JvbGxFdmVudHNPY2N1cnJlZCBp
cyAxCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191056</attachid>
            <date>2013-03-01 15:54:59 -0800</date>
            <delta_ts>2013-03-01 17:10:24 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-109769-20130301185109.patch</filename>
            <type>text/plain</type>
            <size>55460</size>
            <attacher name="Terry Anderson">tdanderson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc5YzU5N2FmMDRiNjkz
MjAzZDUwNjFiNzI4NmRlNTQyMWM1MmFlMy4uODg1OTFhMDFiNDQyYjhiOTZhYThhMTc2YjU4OTU3
ZjViYzBlZjJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTAzLTAxICBUZXJy
eSBBbmRlcnNvbiAgPHRkYW5kZXJzb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZSgpIHNob3VsZCBpbnZva2UgdGhlIHVzZXIt
Z2VuZXJhdGVkIHNjcm9sbCByb3V0aW5lcyAKKyAgICAgICAgc28gaXRzIGJlaGF2aW9yIG1hdGNo
ZXMgb3RoZXIgdXNlci1pbml0aWF0ZWQgc2Nyb2xscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFt
ZXMgUm9iaW5zb24uCisKKyAgICAgICAgVG8gZW5zdXJlIHRoYXQgdGhlIHNjcm9sbGluZyBiZWhh
dmlvciBvZiBHZXN0dXJlU2Nyb2xsVXBkYXRlIGV2ZW50cyBhcmUgY29uc2lzdGVudCB3aXRoCisg
ICAgICAgIHRoZSBzY3JvbGxpbmcgYmVoYXZpb3Igb2YgbW91c2V3aGVlbCBldmVudHMsIHVzZSB0
aGUgZXhpc3RpbmcgdXNlci1nZW5lcmF0ZWQgc2Nyb2xsIGxvZ2ljCisgICAgICAgIGluc3RlYWQg
b2YgY2FsbGluZyBpbnRvIFJlbmRlckxheWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KCkuIFRoaXMg
cGF0Y2ggZml4ZXMgdGhlIGJ1ZworICAgICAgICByZXBvcnRlZCBpbiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MzE2LCB3aGVyZSB0aGUgZXhhbXBsZSBwYWdlIGNh
bgorICAgICAgICBiZSBzY3JvbGxlZCB1c2luZyB0b3VjaCBidXQgY2Fubm90IGJlIHNjcm9sbGVk
IHVzaW5nIG1vdXNld2hlZWxzLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIHBhdGNoIGRvZXMg
bm90IHVzZSBhbnkgb2YgdGhlIG1vdXNld2hlZWwgZXZlbnQtaGFuZGxpbmcgY29kZS4KKworICAg
ICAgICBUZXN0czogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Ny
b2xsLWJvZHktcHJvcGFnYXRlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9s
bC1ib2R5LXloaWRkZW4uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkuaHRtbAorCisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxCZWdpbik6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxVcGRh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZW5kU2Nyb2xsRXZlbnRUb1Zp
ZXcpOgorICAgICAgICAgICAgQnkgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGF0IHRoZSBzdGFydCBv
ZiBoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlKCkgaW4gdGhlIGNhc2UKKyAgICAgICAgICAgIHdo
ZXJlIHxtX3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGV8IGlzIG51bGwsIHdlIGVuc3VyZSB0aGF0
IHRoZSBzY3JvbGwgdXBkYXRlcworICAgICAgICAgICAgY2FuIHN0aWxsIHNjcm9sbCB0aGUgcGFn
ZSBpdHNlbGYsIGlmIHBvc3NpYmxlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmNsZWFyR2VzdHVyZVNjcm9sbE5vZGVzKToKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAoRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
V2hlZWxFdmVudDo6c2V0SGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyk6CisKIDIwMTMtMDMtMDEg
IFZpY3RvciBDYXJidW5lICA8dmNhcmJ1bmVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFN1cHBv
cnQgcGFkZGluZywgbWFyZ2luIGFuZCBib3JkZXIgZm9yIGludGVybmFsIFVBIGN1ZSBzdHlsaW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDg1MDJmZGM2NDIwYzlmOWQ2MzUxOWYzZTY5
ODIyZjUzODE0MDQxOGIuLjQzOTljYWQ2NTIzNjQxODQ3ZjM5NGQ5ODg4ZGZkNzc0OWFjNTA4ZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDMtMDEg
IFRlcnJ5IEFuZGVyc29uICA8dGRhbmRlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRXZl
bnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlKCkgc2hvdWxkIGludm9rZSB0aGUg
dXNlci1nZW5lcmF0ZWQgc2Nyb2xsIHJvdXRpbmVzIAorICAgICAgICBzbyBpdHMgYmVoYXZpb3Ig
bWF0Y2hlcyBvdGhlciB1c2VyLWluaXRpYXRlZCBzY3JvbGxzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3NjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBKYW1lcyBSb2JpbnNvbi4KKworICAgICAgICBDbGVhciB0aGUgbm9kZXMgY29ycmVzcG9uZGlu
ZyB0byBhIGZsaW5nIHNjcm9sbCBldmVudCB3aGVuIHRoZSBldmVudCBlbmRzLgorCisgICAgICAg
ICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnVw
ZGF0ZUFuaW1hdGlvbnMpOgorCiAyMDEzLTAzLTAxICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZp
ZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQ0
NDIyIGFuZCByMTQ0NDI0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDZj
MTVhYzRmOTliYjU2MjI0ODZjMzM2YmYwZjQxZDYzZGNkYjBmMmEuLjBmZmNiYTg3MWY1MTUzYTQ0
ZDI5NTE0YTkwZjg1ODUxMjk4MTBhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKQEAgLTQwMyw2ICs0MDMsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6Y2xlYXIoKQogI2lmIEVO
QUJMRShHRVNUVVJFX0VWRU5UUykKICAgICBtX3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGUgPSAw
OwogICAgIG1fbGFzdEhpdFRlc3RSZXN1bHRPdmVyV2lkZ2V0ID0gZmFsc2U7CisgICAgbV9wcmV2
aW91c0dlc3R1cmVTY3JvbGxlZE5vZGUgPSAwOwogICAgIG1fc2Nyb2xsYmFySGFuZGxpbmdTY3Jv
bGxHZXN0dXJlID0gMDsKICNlbmRpZgogICAgIG1fbWF4TW91c2VNb3ZlZER1cmF0aW9uID0gMDsK
QEAgLTI0NzYsNiArMjQ3Nyw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZl
bnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAgICBjYXNlIFBs
YXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU6CiAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50
OjpHZXN0dXJlU2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9uOgogICAgICAgICByZXR1cm4g
aGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZShnZXN0dXJlRXZlbnQpOworICAgIGNhc2UgUGxhdGZv
cm1FdmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKKyAgICAgICAgY2xlYXJHZXN0dXJlU2Nyb2xsTm9k
ZXMoKTsgCisgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2Vz
dHVyZVRhcDoKICAgICAgICAgcmV0dXJuIGhhbmRsZUdlc3R1cmVUYXAoZ2VzdHVyZUV2ZW50KTsK
ICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXBEb3duOgpAQCAtMjQ4Niw3ICsyNDkw
LDYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9y
bUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgICAgICByZXR1cm4gaGFuZGxlR2VzdHVy
ZUxvbmdUYXAoZ2VzdHVyZUV2ZW50KTsKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVU
d29GaW5nZXJUYXA6CiAgICAgICAgIHJldHVybiBoYW5kbGVHZXN0dXJlVHdvRmluZ2VyVGFwKGdl
c3R1cmVFdmVudCk7Ci0gICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgog
ICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKICAgICBjYXNlIFBsYXRm
b3JtRXZlbnQ6Okdlc3R1cmVQaW5jaEJlZ2luOgogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2Vz
dHVyZVBpbmNoRW5kOgpAQCAtMjYxNCwxOSArMjYxNyw2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpw
YXNzR2VzdHVyZUV2ZW50VG9XaWRnZXRJZlBvc3NpYmxlKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2
ZW50CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgY29uc3QgTm9kZSogY2xvc2VzdFNj
cm9sbGFibGVOb2RlQ2FuZGlkYXRlKGNvbnN0IE5vZGUqIG5vZGUpCi17Ci0gICAgZm9yIChFdmVu
dFBhdGhXYWxrZXIgd2Fsa2VyKG5vZGUpOyB3YWxrZXIubm9kZSgpOyB3YWxrZXIubW92ZVRvUGFy
ZW50KCkpIHsKLSAgICAgICAgTm9kZSogc2Nyb2xsYWJsZU5vZGUgPSB3YWxrZXIubm9kZSgpOwot
ICAgICAgICBpZiAoc2Nyb2xsYWJsZU5vZGUtPmlzRG9jdW1lbnROb2RlKCkpCi0gICAgICAgICAg
ICByZXR1cm4gc2Nyb2xsYWJsZU5vZGU7Ci0gICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSBzY3JvbGxhYmxlTm9kZS0+cmVuZGVyZXIoKTsKLSAgICAgICAgaWYgKHJlbmRlcmVyICYmIHJl
bmRlcmVyLT5pc0JveCgpICYmIHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2FuQmVTY3JvbGxlZEFu
ZEhhc1Njcm9sbGFibGVBcmVhKCkpCi0gICAgICAgICAgICByZXR1cm4gc2Nyb2xsYWJsZU5vZGU7
Ci0gICAgfQotICAgIHJldHVybiBub2RlOwotfQotCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
R2VzdHVyZVNjcm9sbEJlZ2luKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZl
bnQpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKQEAg
LTI2NDUsNiArMjYzNSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xs
QmVnaW4oY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFCiAKICAgICBtX2xhc3RI
aXRUZXN0UmVzdWx0T3ZlcldpZGdldCA9IHJlc3VsdC5pc092ZXJXaWRnZXQoKTsgCiAgICAgbV9z
Y3JvbGxHZXN0dXJlSGFuZGxpbmdOb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOworICAgIG1fcHJl
dmlvdXNHZXN0dXJlU2Nyb2xsZWROb2RlID0gMDsKIAogICAgIE5vZGUqIG5vZGUgPSBtX3Njcm9s
bEdlc3R1cmVIYW5kbGluZ05vZGUuZ2V0KCk7CiAgICAgaWYgKG5vZGUpCkBAIC0yNjU1LDQ4ICsy
NjQ2LDc5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xsQmVnaW4oY29u
c3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0
dXJlRXZlbnQpCiB7Ci0gICAgLy8gSWdub3JlIHRoaXMgZXZlbnQgaWYgd2UgZG9uJ3QgYWxyZWFk
eSBoYXZlIGEgdGFyZ2V0ZWQgbm9kZSB3aXRoIGEgdmFsaWQgcmVuZGVyZXIuCi0gICAgY29uc3Qg
Tm9kZSogbm9kZSA9IG1fc2Nyb2xsR2VzdHVyZUhhbmRsaW5nTm9kZS5nZXQoKTsKLSAgICBpZiAo
IW5vZGUpCisgICAgRmxvYXRTaXplIGRlbHRhKGdlc3R1cmVFdmVudC5kZWx0YVgoKSwgZ2VzdHVy
ZUV2ZW50LmRlbHRhWSgpKTsKKyAgICBpZiAoZGVsdGEuaXNaZXJvKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIFJlbmRlck9iamVjdCogbGF0Y2hlZFJlbmRlcmVyID0gbm9kZS0+cmVu
ZGVyZXIoKTsKLSAgICBpZiAoIWxhdGNoZWRSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGNvbnN0IGZsb2F0IHNjYWxlRmFjdG9yID0gbV9mcmFtZS0+cGFnZVpvb21GYWN0b3Io
KSAqIG1fZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKTsKKyAgICBkZWx0YS5zY2FsZSgxIC8gc2Nh
bGVGYWN0b3IsIDEgLyBzY2FsZUZhY3Rvcik7CiAKLSAgICBJbnRTaXplIGRlbHRhKC1nZXN0dXJl
RXZlbnQuZGVsdGFYKCksIC1nZXN0dXJlRXZlbnQuZGVsdGFZKCkpOwotICAgIGlmIChkZWx0YS5p
c1plcm8oKSkKKyAgICBOb2RlKiBub2RlID0gbV9zY3JvbGxHZXN0dXJlSGFuZGxpbmdOb2RlLmdl
dCgpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIHNlbmRTY3JvbGxFdmVudFRvVmll
dyhnZXN0dXJlRXZlbnQsIGRlbHRhKTsKKworICAgIC8vIElnbm9yZSB0aGlzIGV2ZW50IGlmIHRo
ZSB0YXJnZXRlZCBub2RlIGRvZXMgbm90IGhhdmUgYSB2YWxpZCByZW5kZXJlci4KKyAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVy
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBSZWZQdHI8RnJhbWVWaWV3PiBwcm90ZWN0
b3IobV9mcmFtZS0+dmlldygpKTsKIAogICAgIC8vIFRyeSB0byBzZW5kIHRoZSBldmVudCB0byB0
aGUgY29ycmVjdCB2aWV3LgotICAgIGlmIChwYXNzR2VzdHVyZUV2ZW50VG9XaWRnZXRJZlBvc3Np
YmxlKGdlc3R1cmVFdmVudCwgbGF0Y2hlZFJlbmRlcmVyKSkKKyAgICBpZiAocGFzc0dlc3R1cmVF
dmVudFRvV2lkZ2V0SWZQb3NzaWJsZShnZXN0dXJlRXZlbnQsIHJlbmRlcmVyKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICAvLyBPdGhlcndpc2UgaWYgdGhpcyBpcyB0aGUgY29ycmVjdCB2
aWV3IGZvciB0aGUgZXZlbnQsIGZpbmQgdGhlIGNsb3Nlc3Qgc2Nyb2xsYWJsZQotICAgIC8vIGFu
Y2VzdG9yIG9mIHRoZSB0YXJnZXRlZCBub2RlIGFuZCBzY3JvbGwgdGhlIGxheWVyIHRoYXQgY29u
dGFpbnMgdGhpcyBub2RlJ3MgcmVuZGVyZXIuCi0gICAgbm9kZSA9IGNsb3Nlc3RTY3JvbGxhYmxl
Tm9kZUNhbmRpZGF0ZShub2RlKTsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBOb2RlKiBzdG9wTm9kZSA9IDA7CisgICAgYm9vbCBzY3JvbGxTaG91bGROb3RQcm9w
YWdhdGUgPSBnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3Jv
bGxVcGRhdGVXaXRob3V0UHJvcGFnYXRpb247CisgICAgaWYgKHNjcm9sbFNob3VsZE5vdFByb3Bh
Z2F0ZSkKKyAgICAgICAgc3RvcE5vZGUgPSBtX3ByZXZpb3VzR2VzdHVyZVNjcm9sbGVkTm9kZS5n
ZXQoKTsKIAotICAgIGxhdGNoZWRSZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYg
KCFsYXRjaGVkUmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBGaXJzdCB0
cnkgdG8gc2Nyb2xsIHRoZSBjbG9zZXN0IHNjcm9sbGFibGUgUmVuZGVyQm94IGFuY2VzdG9yIG9m
IHxub2RlfC4KKyAgICBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSA9IFNjcm9sbEJ5UGl4
ZWw7IAorICAgIGJvb2wgaG9yaXpvbnRhbFNjcm9sbCA9IHNjcm9sbE5vZGUoZGVsdGEud2lkdGgo
KSwgZ3JhbnVsYXJpdHksIFNjcm9sbExlZnQsIFNjcm9sbFJpZ2h0LCBub2RlLCAmc3RvcE5vZGUp
OworICAgIGJvb2wgdmVydGljYWxTY3JvbGwgPSBzY3JvbGxOb2RlKGRlbHRhLmhlaWdodCgpLCBn
cmFudWxhcml0eSwgU2Nyb2xsVXAsIFNjcm9sbERvd24sIG5vZGUsICZzdG9wTm9kZSk7CiAKLSAg
ICBSZW5kZXJMYXllcjo6U2Nyb2xsUHJvcGFnYXRpb24gc2hvdWxkUHJvcGFnYXRlID0gUmVuZGVy
TGF5ZXI6OlNob3VsZFByb3BhZ2F0ZVNjcm9sbDsKLSAgICBpZiAoZ2VzdHVyZUV2ZW50LnR5cGUo
KSA9PSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9u
KQotICAgICAgICBzaG91bGRQcm9wYWdhdGUgPSBSZW5kZXJMYXllcjo6RG9udFByb3BhZ2F0ZVNj
cm9sbDsKKyAgICBpZiAoc2Nyb2xsU2hvdWxkTm90UHJvcGFnYXRlKQorICAgICAgICBtX3ByZXZp
b3VzR2VzdHVyZVNjcm9sbGVkTm9kZSA9IHN0b3BOb2RlOwogCi0gICAgY29uc3QgZmxvYXQgc2Nh
bGVGYWN0b3IgPSBtX2ZyYW1lLT5wYWdlWm9vbUZhY3RvcigpICogbV9mcmFtZS0+ZnJhbWVTY2Fs
ZUZhY3RvcigpOwotICAgIGRlbHRhLnNjYWxlKDEgLyBzY2FsZUZhY3RvciwgMSAvIHNjYWxlRmFj
dG9yKTsKKyAgICBpZiAoaG9yaXpvbnRhbFNjcm9sbCB8fCB2ZXJ0aWNhbFNjcm9sbCkgeworICAg
ICAgICBzZXRGcmFtZVdhc1Njcm9sbGVkQnlVc2VyKCk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KIAotICAgIGJvb2wgcmVzdWx0ID0gbGF0Y2hlZFJlbmRlcmVyLT5lbmNsb3NpbmdMYXll
cigpLT5zY3JvbGxCeShkZWx0YSwgUmVuZGVyTGF5ZXI6OlNjcm9sbE9mZnNldENsYW1wZWQsIHNo
b3VsZFByb3BhZ2F0ZSk7CisgICAgLy8gT3RoZXJ3aXNlIHRyeSB0byBzY3JvbGwgdGhlIHZpZXcu
CisgICAgcmV0dXJuIHNlbmRTY3JvbGxFdmVudFRvVmlldyhnZXN0dXJlRXZlbnQsIGRlbHRhKTsK
K30KIAotICAgIGlmIChyZXN1bHQpCitib29sIEV2ZW50SGFuZGxlcjo6c2VuZFNjcm9sbEV2ZW50
VG9WaWV3KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQsIGNvbnN0IEZs
b2F0U2l6ZSYgc2NhbGVkRGVsdGEpCit7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+
dmlldygpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29u
c3QgZmxvYXQgdGlja0Rpdmlzb3IgPSBzdGF0aWNfY2FzdDxmbG9hdD4oV2hlZWxFdmVudDo6VGlj
a011bHRpcGxpZXIpOworICAgIEludFBvaW50IHBvaW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigp
LngoKSwgZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCkueSgpKTsKKyAgICBJbnRQb2ludCBnbG9iYWxQ
b2ludChnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKS54KCksIGdlc3R1cmVFdmVudC5nbG9i
YWxQb3NpdGlvbigpLnkoKSk7CisgICAgUGxhdGZvcm1XaGVlbEV2ZW50IHN5bnRoZXRpY1doZWVs
RXZlbnQocG9pbnQsIGdsb2JhbFBvaW50LAorICAgICAgICBzY2FsZWREZWx0YS53aWR0aCgpLCBz
Y2FsZWREZWx0YS5oZWlnaHQoKSwgCisgICAgICAgIHNjYWxlZERlbHRhLndpZHRoKCkgLyB0aWNr
RGl2aXNvciwgc2NhbGVkRGVsdGEuaGVpZ2h0KCkgLyB0aWNrRGl2aXNvciwKKyAgICAgICAgU2Ny
b2xsQnlQaXhlbFdoZWVsRXZlbnQsCisgICAgICAgIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBn
ZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVu
dC5tZXRhS2V5KCkpOworI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oQ0hST01JVU0pCisg
ICAgc3ludGhldGljV2hlZWxFdmVudC5zZXRIYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKHRydWUp
OworI2VuZGlmCisKKyAgICBib29sIHNjcm9sbGVkRnJhbWUgPSB2aWV3LT53aGVlbEV2ZW50KHN5
bnRoZXRpY1doZWVsRXZlbnQpOworICAgIGlmIChzY3JvbGxlZEZyYW1lKQogICAgICAgICBzZXRG
cmFtZVdhc1Njcm9sbGVkQnlVc2VyKCk7CiAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVy
biBzY3JvbGxlZEZyYW1lOworfQorCit2b2lkIEV2ZW50SGFuZGxlcjo6Y2xlYXJHZXN0dXJlU2Ny
b2xsTm9kZXMoKQoreworICAgIG1fc2Nyb2xsR2VzdHVyZUhhbmRsaW5nTm9kZSA9IDA7CisgICAg
bV9wcmV2aW91c0dlc3R1cmVTY3JvbGxlZE5vZGUgPSAwOwogfQogCiBib29sIEV2ZW50SGFuZGxl
cjo6aXNTY3JvbGxiYXJIYW5kbGluZ0dlc3R1cmVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5oCmluZGV4IDNmYzA3ZjJmYTI1MmY5YzQ1ZjI0ZjFmNmI1NWU0N2U3YTAwZDc1M2Uu
LmVlOGRhYWNkZTMyYTQ5YTNlNzM4Y2MyMTIwMzJkY2U0Mzk0ZDgyNzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaApAQCAtMTgxLDYgKzE4MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGhh
bmRsZUdlc3R1cmVUd29GaW5nZXJUYXAoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICAg
ICBib29sIGhhbmRsZUdlc3R1cmVTY3JvbGxVcGRhdGUoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZl
bnQmKTsKICAgICBib29sIGhhbmRsZUdlc3R1cmVTY3JvbGxCZWdpbihjb25zdCBQbGF0Zm9ybUdl
c3R1cmVFdmVudCYpOworICAgIHZvaWQgY2xlYXJHZXN0dXJlU2Nyb2xsTm9kZXMoKTsKICAgICBi
b29sIGlzU2Nyb2xsYmFySGFuZGxpbmdHZXN0dXJlcygpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTM3
OCw2ICszNzksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlR2VzdHVyZUZvclRleHRTZWxl
Y3Rpb25PckNvbnRleHRNZW51KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAgYm9v
bCBwYXNzR2VzdHVyZUV2ZW50VG9XaWRnZXQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmLCBX
aWRnZXQqKTsKICAgICBib29sIHBhc3NHZXN0dXJlRXZlbnRUb1dpZGdldElmUG9zc2libGUoY29u
c3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmLCBSZW5kZXJPYmplY3QqKTsKKyAgICBib29sIHNlbmRT
Y3JvbGxFdmVudFRvVmlldyhjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYsIGNvbnN0IEZsb2F0
U2l6ZSYpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldExhc3RLbm93bk1vdXNlUG9zaXRpb24oY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CkBAIC00NjksNiArNDcxLDcgQEAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgUmVmUHRyPE5vZGU+IG1fc2Nyb2xsR2VzdHVy
ZUhhbmRsaW5nTm9kZTsKICAgICBib29sIG1fbGFzdEhpdFRlc3RSZXN1bHRPdmVyV2lkZ2V0Owor
ICAgIFJlZlB0cjxOb2RlPiBtX3ByZXZpb3VzR2VzdHVyZVNjcm9sbGVkTm9kZTsKICAgICBSZWZQ
dHI8U2Nyb2xsYmFyPiBtX3Njcm9sbGJhckhhbmRsaW5nU2Nyb2xsR2VzdHVyZTsKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCmluZGV4IDhj
MDMwMmM1ZWE1ZDViZmU4YTMwYjJjNDU5MTVmMzE4MjQ2OWJmMTkuLjVhZjI5NzRiMjJiZmQ1NGVm
N2E4MzYwYTMwYjBhNzFjNWYyYmZjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtV2hlZWxFdmVudC5oCkBAIC0xNTcsNiArMTU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShDSFJPTUlVTSkKICAgICAgICAgYm9v
bCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNQcmVjaXNl
U2Nyb2xsaW5nRGVsdGFzOyB9CisgICAgICAgIHZvaWQgc2V0SGFzUHJlY2lzZVNjcm9sbGluZ0Rl
bHRhcyhib29sIGIpIHsgbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gYjsgfQogI2VuZGlm
CiAjaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJTikp
CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlKCkgY29uc3QgeyByZXR1cm4g
bV9waGFzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmlu
ZGV4IDRlMTNhMWVjYWYxMTQ3ZmVmMmUzOGZjMzYyY2EwYjBhMTcyZWE2YWUuLjZkMjI3ZTlhOTU5
NmQ1NjkwNDI4MDQxNWRjMDRiODRhNGY1YzhkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE4NDYsNiArMTg0Niw4IEBAIHZvaWQgV2ViVmlld0lt
cGw6OnVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKQogICAg
ICAgICAgICAgbV9nZXN0dXJlQW5pbWF0aW9uLmNsZWFyKCk7CiAgICAgICAgICAgICBpZiAobV9s
YXllclRyZWVWaWV3KQogICAgICAgICAgICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+ZGlkU3RvcEZs
aW5naW5nKCk7CisKKyAgICAgICAgICAgIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRI
YW5kbGVyKCktPmNsZWFyR2VzdHVyZVNjcm9sbE5vZGVzKCk7CiAgICAgICAgIH0KICAgICB9CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmYmFmMmMyNzY0ZGQyNTNiMzM4Y2Y5ZTM3OTBmMmRmYjg0MDAxYTQ3Li41NzBhMjlm
ZjIxOTk3ZTg2NWYzYjlkYjhiYzM0MTBkMGVjYjJkZmU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAK
KzIwMTMtMDMtMDEgIFRlcnJ5IEFuZGVyc29uICA8dGRhbmRlcnNvbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlKCkgc2hvdWxk
IGludm9rZSB0aGUgdXNlci1nZW5lcmF0ZWQgc2Nyb2xsIHJvdXRpbmVzIAorICAgICAgICBzbyBp
dHMgYmVoYXZpb3IgbWF0Y2hlcyBvdGhlciB1c2VyLWluaXRpYXRlZCBzY3JvbGxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3NjkKKworICAgICAg
ICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KKworICAgICAgICBGb3VyIG5ldyBsYXlvdXQg
dGVzdHMgaGF2ZSBiZWVuIGFkZGVkIGFuZCB0b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLmh0bWwg
aGFzIGJlZW4KKyAgICAgICAgbW9kaWZpZWQgdG8gZGVtb25zdHJhdGUgdGhhdCB0aGlzIHBhdGNo
IGZpeGVzIHR3byBleGlzdGluZyBidWdzLiBTZWUgdGhlIGlubGluZQorICAgICAgICBjb21tZW50
cyBiZWxvdyBmb3IgZGV0YWlscy4KKworICAgICAgICBCZWNhdXNlIEkgYW0gbm93IHVzaW5nIHRo
ZSBleGlzdGluZyB1c2VyLWdlbmVyYXRlZCBzY3JvbGwgbG9naWMsIHRoZSBkZWx0YSBmb3IgYSBz
aW5nbGUKKyAgICAgICAgR2VzdHVyZVNjcm9sbFVwZGF0ZSBldmVudCB3aWxsIG5vdCBiZSBwcm9w
YWdhdGVkIHRvIHRoZSBwYXJlbnQgb2YgdGhlIHRhcmdldGVkIG5vZGUKKyAgICAgICAgdW5sZXNz
IHRoZSB0YXJnZXRlZCBub2RlIGhhcyBubyByZW1haW5pbmcgc2Nyb2xsYWJsZSBhcmVhLiBTbyB0
aGUgY2hhbmdlcyB0byB0aGUKKyAgICAgICAgZXhpc3RpbmcgbGF5b3V0IHRlc3RzIGhhdmUgYmVl
biBtYWRlIHRvIGVuc3VyZSB0aGF0IHRoZSB0YXJnZXRlZCBub2RlIGhhcyBiZWVuIGZ1bGx5Cisg
ICAgICAgIHNjcm9sbGVkIGJlZm9yZSBzdWJzZXF1ZW50IEdlc3R1cmVTY3JvbGxVcGRhdGUgZXZl
bnRzIHdpbGwgc2Nyb2xsIHRoZSBwYXJlbnQocykgb2YKKyAgICAgICAgdGhlIHRhcmdldGVkIG5v
ZGUuCisKKyAgICAgICAgSSBoYXZlIGFsc28gcmVtb3ZlZCB0aGUgZnVuY3Rpb24gcmVjb3JkU2Ny
b2xsKCkgZnJvbSB0aGUgZXhpc3RpbmcgbGF5b3V0IHRlc3RzCisgICAgICAgIGJlY2F1c2UgdGhp
cyBmdW5jdGlvbiBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgaW5jbHVkZWQgZmlsZSByZXNvdXJjZXMv
Z2VzdHVyZS1oZWxwZXJzLmpzLgorCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVy
ZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9k
eS1wcm9wYWdhdGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktcHJvcGFnYXRlZC5odG1s
OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNo
LWdlc3R1cmUtc2Nyb2xsLXBhZ2UuaHRtbC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJl
LW5vc2Nyb2xsLWJvZHkteGhpZGRlbi5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2UuaHRtbC4KKyAg
ICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwt
Ym9keS15aGlkZGVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteWhpZGRlbi5odG1sOiBD
b3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdl
c3R1cmUtc2Nyb2xsLXBhZ2UuaHRtbC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0
dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2Uu
aHRtbC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUt
c2Nyb2xsLWRpdi1ub3QtcHJvcGFnYXRlZC5odG1sOgorICAgICAgICAqIGZhc3QvZXZlbnRzL3Rv
dWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZGl2LXByb3BhZ2F0ZWQuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRp
di10d2ljZS1wcm9wYWdhdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1pZnJhbWUtbm90LXByb3BhZ2F0ZWQuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWlm
cmFtZS1wcm9wYWdhdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVy
ZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLW5vdC1wcm9wYWdhdGVkLmh0bWw6CisgICAgICAg
ICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLXBy
b3BhZ2F0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNo
LWdlc3R1cmUtc2Nyb2xsLXBhZ2UuaHRtbDoKKyAgICAgICAgICAgICAgSSBtb2RpZmllZCB0aGlz
IGxheW91dCB0ZXN0IGluIG9yZGVyIHRvIGFkZCB0ZXN0IGNvdmVyYWdlIGZvciBhbm90aGVyIGJ1
ZworICAgICAgICAgICAgICB3aGljaCBpcyBmaXhlZCBieSB0aGlzIHBhdGNoOiBpZiB0aGUgaGl0
IHRlc3QgcGVyZm9ybWVkIG9uIGEgR2VzdHVyZVNjcm9sbEJlZ2luCisgICAgICAgICAgICAgIGRv
ZXMgbm90IHRhcmdldCBhIHNwZWNpZmljIG5vZGUsIHRoZSBzdWJzZXF1ZW50IEdlc3R1cmVTY3Jv
bGxVcGRhdGUgZXZlbnRzIHNob3VsZAorICAgICAgICAgICAgICBzdGlsbCBhdHRlbXB0IHRvIHNj
cm9sbCB0aGUgcGFnZSBpdHNlbGYuIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIGhvdyBtb3VzZXdo
ZWVsCisgICAgICAgICAgICAgIGV2ZW50cyBiZWhhdmUuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJv
ZHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1wcm9wYWdh
dGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteGhpZGRl
bi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3Qv
ZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXloaWRkZW4t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgICAgICAgVGhlc2UgZm91ciBuZXcgbGF5b3V0
IHRlc3RzIHZlcmlmeSB0aGF0IGEgbm9uLXNjcm9sbGFibGUgYm9keSB3aWxsIG5vdCBzY3JvbGws
CisgICAgICAgICAgICAgIGFzIHJlcG9ydGVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDkzMTYuCisKIDIwMTMtMDMtMDEgIEphbWVzIFJvYmluc29uICA8amFt
ZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE1hcmsgc29tZSBzb2Z0d2Fy
ZSBjb21wb3NpdGluZyB0ZXN0cyBhcyBmYWlsaW5nIGJlZm9yZSBsYW5kaW5nIGFudGktYWxpYXNp
bmcgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmYmUzZDJjYzFkMDgxODA3ZjJhZTc5NTRmMWUyMGUw
ZmY4OTQ1NDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMCBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgcGFnZSBjYW5ub3QgYmUgc2Nyb2xsZWQgd2l0
aCB0b3VjaCBpZiBpdHMgYm9keSBoYXMgc3R5bGUgb3ZlcmZsb3c6aGlkZGVuLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworZ2VzdHVyZSBldmVudHMgbm90IGltcGxlbWVudGVkIG9u
IHRoaXMgcGxhdGZvcm0gb3IgZ2VzdHVyZSBldmVudCBzY3JvbGxpbmcgb2YgYSBkb2N1bWVudCBp
cyBicm9rZW4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3Rv
dWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1wcm9wYWdhdGVkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1i
b2R5LXByb3BhZ2F0ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlODdlNDg2ODRhMDVjOTEw
MWM5MmQyYjc4MWMxZTg3YmNjN2VlN2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1wcm9w
YWdhdGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3RzIHRoYXQgYSBw
YWdlIGNhbm5vdCBiZSBzY3JvbGxlZCB2ZXJ0aWNhbGx5IHdpdGggdG91Y2ggaWYgaXRzIGJvZHkg
aGFzIHN0eWxlIG92ZXJmbG93LXk6aGlkZGVuIGFuZCB0aGUgc2Nyb2xsIGV2ZW50IGlzIHByb3Bv
Z2F0ZWQgZnJvbSBhIHNjcm9sbGFibGUgY2hpbGQgZGl2LgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworZ2VzdHVyZSBldmVudHMgbm90IGltcGxlbWVudGVkIG9uIHRoaXMgcGxhdGZv
cm0gb3IgZ2VzdHVyZSBldmVudCBzY3JvbGxpbmcgb2YgYSBkb2N1bWVudCBpcyBicm9rZW4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUt
bm9zY3JvbGwtYm9keS1wcm9wYWdhdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1wcm9wYWdhdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYThiYmRlZTBiMTYyMzRkNmM1OTNjMzM1NTAyOTc2NTBlODgzYWE5MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91
Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXByb3BhZ2F0ZWQuaHRtbApAQCAtMCwwICsxLDE1OSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2dlc3R1cmUtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8c3R5
bGUgdHlwZT0idGV4dC9jc3MiPgorI3RvdWNodGFyZ2V0IHsKKyAgd2lkdGg6IDEwMHB4OworICBo
ZWlnaHQ6IDEwMHB4OworICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgb3ZlcmZsb3c6c2Nyb2xsOwor
fQorCis6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKKyAgICB3aWR0aDogMHB4OworICAgIGhlaWdodDog
MHB4OworfQorCisjZ3JlZW5ib3ggeworICB3aWR0aDogMTAwcHg7CisgIGhlaWdodDogMTAwcHg7
CisgIGJhY2tncm91bmQ6IGdyZWVuOworICBwYWRkaW5nOiAwcHg7CisgIG1hcmdpbjogMHB4Owor
fQorCisjcmVkYm94IHsKKyAgd2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4OworICBiYWNr
Z3JvdW5kOiByZWQ7CisgIHBhZGRpbmc6IDBweDsKKyAgbWFyZ2luOiAwcHg7Cit9CisKK3RkIHsK
KyAgcGFkZGluZzogMHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IHN0eWxlPSJtYXJn
aW46MDsgb3ZlcmZsb3cteTpoaWRkZW47IiBvbmxvYWQ9InJ1blRlc3QoKTsiPgorCis8ZGl2IGlk
PSJ0b3VjaHRhcmdldCI+CisgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwcHgiIGlk
PSJ0YWJsZWZvbyI+CisgICAgPHRyPgorICAgICAgPHRkPjxkaXYgaWQ9InJlZGJveCI+PC9kaXY+
PC90ZD4KKyAgICAgIDx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD4KKyAgICA8L3Ry
PgorICAgIDx0cj4KKyAgICAgIDx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD4KKyAg
ICAgIDx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD4KKyAgICA8L3RyPgorICA8L3Rh
YmxlPgorPC9kaXY+CisKKzx0YWJsZSBpZD0idGFibGVfdG9fZmlsbCI+CisgICAgPHRyPjx0ZD48
ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD48L3RyPgorICAgIDx0cj48dGQ+PGRpdiBpZD0i
cmVkYm94Ij48L2Rpdj48L3RkPjwvdHI+Cis8L3RhYmxlPgorCis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgorCit2YXIgZXhwZWN0ZWRHZXN0dXJlc1RvdGFsID0gMjsKK3ZhciBnZXN0dXJlc09j
Y3VycmVkID0gMDsKK3ZhciBzY3JvbGxBbW91bnRYID0gWycwJywgJzAnXTsKK3ZhciBzY3JvbGxB
bW91bnRZID0gWycwJywgJzAnXTsKK3ZhciB3aGVlbEV2ZW50c09jY3VycmVkID0gMDsKK3ZhciBl
eHBlY3RlZFdoZWVsRXZlbnRzT2NjdXJyZWQgPSBbJzAnLCAnMCddOwordmFyIHNjcm9sbEV2ZW50
c09jY3VycmVkID0gMDsKK3ZhciBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkID0gJzAnOwor
dmFyIHNjcm9sbGVkRWxlbWVudCA9ICdkb2N1bWVudC5ib2R5JworCisvLyBBbHdheXMgY29uc3Ry
dWN0IGEgcGFnZSBsYXJnZXIgdGhhbiB0aGUgdmVydGljYWwgaGVpZ2h0IG9mIHRoZSB3aW5kb3cu
CitmdW5jdGlvbiBidWlsZFBhZ2UoKQoreworICAgIHZhciB0YWJsZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0YWJsZV90b19maWxsJyk7CisgICAgdmFyIHRhcmdldEhlaWdodCA9IGRvY3Vt
ZW50LmJvZHkub2Zmc2V0SGVpZ2h0OworICAgIHZhciBjZWxsUGFpckhlaWdodCA9IHRhYmxlLm9m
ZnNldEhlaWdodDsKKyAgICB2YXIgbnVtYmVyT2ZSZXBzID0gdGFyZ2V0SGVpZ2h0IC8gY2VsbFBh
aXJIZWlnaHQgKiAyOworICAgIHZhciBpOworICAgIGZvciAoaSA9IDA7IGkgPCBudW1iZXJPZlJl
cHM7IGkrKykgeworICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7
CisgICAgICAgIHAuaW5uZXJIVE1MID0gJzx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90
ZD4nOworICAgICAgICB0YWJsZS5hcHBlbmRDaGlsZChwKTsKKyAgICAgICAgdmFyIHAgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOworICAgICAgICBwLmlubmVySFRNTCA9ICc8dGQ+PGRp
diBpZD0icmVkYm94Ij48L2Rpdj48L3RkPic7CisgICAgICAgIHRhYmxlLmFwcGVuZENoaWxkKHAp
OworICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCByZWNvcmRT
Y3JvbGwpOworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwgcmVjb3Jk
V2hlZWwpOworfQorCitmdW5jdGlvbiBmaXJzdEdlc3R1cmVTY3JvbGwoKQoreworICAgIGRlYnVn
KCJmaXJzdCBnZXN0dXJlIik7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDk1
LCAxMik7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMTAwKTsKKyAg
ICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC0xMCk7CisgICAgZXZlbnRTZW5k
ZXIuZ2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKKworICAgIC8vIFdhaXQgZm9yIGxheW91dC4KKyAg
ICBjaGVja1Njcm9sbE9mZnNldCgpOworfQorCitmdW5jdGlvbiBzZWNvbmRHZXN0dXJlU2Nyb2xs
KCkKK3sKKyAgICBkZWJ1Zygic2Vjb25kIGdlc3R1cmUiKTsKKyAgICBldmVudFNlbmRlci5nZXN0
dXJlU2Nyb2xsQmVnaW4oMTIsIDk3KTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBk
YXRlKDAsIC05NSk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMjAw
KTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOworCisgICAgLy8gV2Fp
dCBmb3IgbGF5b3V0LgorICAgIGNoZWNrU2Nyb2xsT2Zmc2V0KCk7CisKKyAgICAvLyBJbiB0aGlz
IHRlc3Qgd2UgZG8gbm90IGV4cGVjdCBhbnkgc2Nyb2xsIGV2ZW50cyB0bworICAgIC8vIGJlIHJl
Y2VpdmVkIGJ5IHRoZSBldmVudCBsaXN0ZW5lciwgc28gd2Ugc2lnbmFsCisgICAgLy8gdGhlIGVu
ZCBvZiB0aGUgdGVzdCBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gaW5zdGVhZAorICAgIC8vIG9m
IHJlbHlpbmcgb24gcmVjb3JkU2Nyb2xsKCkgdG8gZG8gaXQuCisgICAgZmluaXNoVGVzdCgpOwor
fQorCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGJ1aWxkUGFnZSgpOworICAgIGlmICh3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgZGVzY3JpcHRpb24oJ1RoaXMgdGVzdHMgdGhh
dCBhIHBhZ2UgY2Fubm90IGJlIHNjcm9sbGVkIHZlcnRpY2FsbHkgd2l0aCB0b3VjaCBpZiBpdHMg
Ym9keSBoYXMgc3R5bGUgb3ZlcmZsb3cteTpoaWRkZW4gJyArCisgICAgICAgICAgICAgICAgICAg
ICdhbmQgdGhlIHNjcm9sbCBldmVudCBpcyBwcm9wb2dhdGVkIGZyb20gYSBzY3JvbGxhYmxlIGNo
aWxkIGRpdi4nKTsKKworICAgICAgICBpZiAoY2hlY2tUZXN0RGVwZW5kZW5jaWVzKCkpCisgICAg
ICAgICAgICBmaXJzdEdlc3R1cmVTY3JvbGwoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
ZXhpdElmTmVjZXNzYXJ5KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoIlRoaXMgdGVz
dCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZS4gIFRvdWNoIHNjcm9sbCB0aGUgcmVkIHJlY3QgdG8g
bG9nLiIpOworICAgIH0KK30KKworZnVuY3Rpb24gZmluaXNoVGVzdCgpCit7CisgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBpZiAoZ2VzdHVyZXNPY2N1cnJlZCA9PSBleHBl
Y3RlZEdlc3R1cmVzVG90YWwpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCdzY3JvbGxFdmVudHNP
Y2N1cnJlZCcsIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQpOworICAgICAgICAgICAgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2Vk
KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICB9Cit9Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Rv
dWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXhoaWRkZW4tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJl
LW5vc2Nyb2xsLWJvZHkteGhpZGRlbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM5YWEzYmE5
MGI4YjU1NzJhYjBhYWM2YTRiMTRmYzUzYTk3MzYzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1i
b2R5LXhoaWRkZW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdHMgdGhh
dCBhIHBhZ2UgY2Fubm90IGJlIHNjcm9sbGVkIGhvcml6b250YWxseSB3aXRoIHRvdWNoIChidXQg
Y2FuIHN0aWxsIGJlIHNjcm9sbGVkIHZlcnRpY2FsbHkpIGlmIGl0cyBib2R5IGhhcyBzdHlsZSBv
dmVyZmxvdy14OmhpZGRlbi4gVGhlIHNjcm9sbCBldmVudHMgaW4gdGhpcyB0ZXN0IGhhdmUgYm90
aCBhbiB4IGFuZCB5IGNvbXBvbmVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K2dlc3R1cmUgZXZlbnRzIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtIG9yIGdlc3R1
cmUgZXZlbnQgc2Nyb2xsaW5nIG9mIGEgZG9jdW1lbnQgaXMgYnJva2VuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJv
ZHkteGhpZGRlbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90
b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJvZHkteGhpZGRlbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0YmM4
NGY3NGI0NzQ3ZjUyYjdiNzJmNjE0YTY0NzBlY2JkODdlZDAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3Jv
bGwtYm9keS14aGlkZGVuLmh0bWwKQEAgLTAsMCArMSwxNDkgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9nZXN0dXJlLWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4K
KyN0b3VjaHRhcmdldCB7CisgIHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAgYmFj
a2dyb3VuZDogd2hpdGU7CisgIG92ZXJmbG93OmhpZGRlbjsKK30KKworOjotd2Via2l0LXNjcm9s
bGJhciB7CisgICAgd2lkdGg6IDBweDsKKyAgICBoZWlnaHQ6IDBweDsKK30KKworI2dyZWVuYm94
IHsKKyAgd2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4OworICBiYWNrZ3JvdW5kOiBncmVl
bjsKKyAgcGFkZGluZzogMHB4OworICBtYXJnaW46IDBweDsKK30KKworI3JlZGJveCB7CisgIHdp
ZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAgYmFja2dyb3VuZDogcmVkOworICBwYWRk
aW5nOiAwcHg7CisgIG1hcmdpbjogMHB4OworfQorCit0ZCB7CisgIHBhZGRpbmc6IDBweDsKK30K
Kzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0ibWFyZ2luOjA7IG92ZXJmbG93LXg6aGlk
ZGVuOyIgb25sb2FkPSJydW5UZXN0KCk7Ij4KKworPHRhYmxlIGlkPSJob3Jpem9udGFsX3RhYmxl
X3RvX2ZpbGwiPgorICA8dHIgaWQ9ImZpcnN0cm93Ij4KKyAgICA8dGQ+PGRpdiBpZD0icmVkYm94
Ij48L2Rpdj48L3RkPgorICAgIDx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD4KKyAg
PC90cj4KKzwvdGFibGU+CisKKzx0YWJsZSBpZD0idmVydGljYWxfdGFibGVfdG9fZmlsbCI+Cisg
ICAgPHRyPjx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD48L3RyPgorICAgIDx0cj48
dGQ+PGRpdiBpZD0icmVkYm94Ij48L2Rpdj48L3RkPjwvdHI+Cis8L3RhYmxlPgorCis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgorCit2YXIgZXhwZWN0ZWRHZXN0dXJlc1RvdGFsID0gMjsKK3Zh
ciBnZXN0dXJlc09jY3VycmVkID0gMDsKK3ZhciBzY3JvbGxBbW91bnRYID0gWycwJywgJzAnXTsK
K3ZhciBzY3JvbGxBbW91bnRZID0gWycxMTAnLCAnMjA1J107Cit2YXIgd2hlZWxFdmVudHNPY2N1
cnJlZCA9IDA7Cit2YXIgZXhwZWN0ZWRXaGVlbEV2ZW50c09jY3VycmVkID0gWycwJywgJzAnXTsK
K3ZhciBzY3JvbGxFdmVudHNPY2N1cnJlZCA9IDA7Cit2YXIgZXhwZWN0ZWRTY3JvbGxFdmVudHNP
Y2N1cnJlZCA9ICcxJzsKK3ZhciBzY3JvbGxlZEVsZW1lbnQgPSAnZG9jdW1lbnQuYm9keScKKwor
Ly8gQWx3YXlzIGNvbnN0cnVjdCBhIHBhZ2UgbGFyZ2VyIHRoYW4gdGhlIHZlcnRpY2FsIGhlaWdo
dCBvZiB0aGUgd2luZG93LgorZnVuY3Rpb24gYnVpbGRQYWdlKCkKK3sKKyAgICAvLyBidWlsZCB2
ZXJ0aWNhbCB0YWJsZQorICAgIHZhciB0YWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2
ZXJ0aWNhbF90YWJsZV90b19maWxsJyk7CisgICAgdmFyIHRhcmdldEhlaWdodCA9IGRvY3VtZW50
LmJvZHkub2Zmc2V0SGVpZ2h0OworICAgIHZhciBjZWxsUGFpckhlaWdodCA9IHRhYmxlLm9mZnNl
dEhlaWdodDsKKyAgICB2YXIgbnVtYmVyT2ZSZXBzID0gdGFyZ2V0SGVpZ2h0IC8gY2VsbFBhaXJI
ZWlnaHQgKiAyOworICAgIHZhciBpOworICAgIGZvciAoaSA9IDA7IGkgPCBudW1iZXJPZlJlcHM7
IGkrKykgeworICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7Cisg
ICAgICAgIHAuaW5uZXJIVE1MID0gJzx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD4n
OworICAgICAgICB0YWJsZS5hcHBlbmRDaGlsZChwKTsKKyAgICAgICAgdmFyIHAgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCd0cicpOworICAgICAgICBwLmlubmVySFRNTCA9ICc8dGQ+PGRpdiBp
ZD0icmVkYm94Ij48L2Rpdj48L3RkPic7CisgICAgICAgIHRhYmxlLmFwcGVuZENoaWxkKHApOwor
ICAgIH0KKworICAgIC8vIGJ1aWxkIGhvcml6b250YWwgdGFibGUKKyAgICB2YXIgaG9yaXpvbnRh
bFRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hvcml6b250YWxfdGFibGVfdG9fZmls
bCcpOworICAgIHZhciB0YWJsZVJvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaXJzdHJv
dycpOworICAgIHZhciB0YXJnZXRXaWR0aCA9IGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGg7Cisg
ICAgdmFyIGNlbGxQYWlyV2lkdGggPSBob3Jpem9udGFsVGFibGUub2Zmc2V0V2lkdGg7CisgICAg
bnVtYmVyT2ZSZXBzID0gdGFyZ2V0V2lkdGggLyBjZWxsUGFpcldpZHRoICogMjsKKyAgICBmb3Ig
KGkgPSAwOyBpIDwgbnVtYmVyT2ZSZXBzOyBpKyspIHsKKyAgICAgICAgdmFyIHAgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCd0ZCcpOworICAgICAgICBwLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJy
ZWRib3giPjwvZGl2Pic7CisgICAgICAgIHRhYmxlUm93LmFwcGVuZENoaWxkKHApOworICAgICAg
ICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CisgICAgICAgIHAuaW5uZXJI
VE1MID0gJzxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj4nOworICAgICAgICB0YWJsZVJvdy5hcHBl
bmRDaGlsZChwKTsKKyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xs
IiwgcmVjb3JkU2Nyb2xsKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V3aGVl
bCIsIHJlY29yZFdoZWVsKTsKK30KKworZnVuY3Rpb24gZmlyc3RHZXN0dXJlU2Nyb2xsKCkKK3sK
KyAgICBkZWJ1ZygiZmlyc3QgZ2VzdHVyZSIpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3Jv
bGxCZWdpbig5NSwgMTIpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoLTU1
LCAtMTEwKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOworCisgICAg
Ly8gV2FpdCBmb3IgbGF5b3V0LgorICAgIGNoZWNrU2Nyb2xsT2Zmc2V0KCk7Cit9CisKK2Z1bmN0
aW9uIHNlY29uZEdlc3R1cmVTY3JvbGwoKQoreworICAgIGRlYnVnKCJzZWNvbmQgZ2VzdHVyZSIp
OworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdpbigxMiwgOTcpOworICAgIGV2ZW50
U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoLTQyLCAtOTUpOworICAgIGV2ZW50U2VuZGVyLmdl
c3R1cmVTY3JvbGxFbmQoMCwgMCk7CisKKyAgICAvLyBXYWl0IGZvciBsYXlvdXQuCisgICAgY2hl
Y2tTY3JvbGxPZmZzZXQoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBidWls
ZFBhZ2UoKTsKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGRlc2NyaXB0
aW9uKCdUaGlzIHRlc3RzIHRoYXQgYSBwYWdlIGNhbm5vdCBiZSBzY3JvbGxlZCBob3Jpem9udGFs
bHkgd2l0aCB0b3VjaCAnICsKKyAgICAgICAgICAgICAgICAgICAgJyhidXQgY2FuIHN0aWxsIGJl
IHNjcm9sbGVkIHZlcnRpY2FsbHkpIGlmIGl0cyBib2R5IGhhcyBzdHlsZSBvdmVyZmxvdy14Omhp
ZGRlbi4gJyArCisgICAgICAgICAgICAgICAgICAgICdUaGUgc2Nyb2xsIGV2ZW50cyBpbiB0aGlz
IHRlc3QgaGF2ZSBib3RoIGFuIHggYW5kIHkgY29tcG9uZW50LicpOworCisgICAgICAgIGlmIChj
aGVja1Rlc3REZXBlbmRlbmNpZXMoKSkKKyAgICAgICAgICAgIGZpcnN0R2VzdHVyZVNjcm9sbCgp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBleGl0SWZOZWNlc3NhcnkoKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlLiAg
VG91Y2ggc2Nyb2xsIHRoZSByZWQgcmVjdCB0byBsb2cuIik7CisgICAgfQorfQorPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS15aGlkZGVuLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVy
ZS1ub3Njcm9sbC1ib2R5LXloaWRkZW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ODkyYmEy
OGZiNDZiMmYwMTdiZGFkZThjOTg2NzdmYjc1M2UxN2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwt
Ym9keS15aGlkZGVuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3RzIHRo
YXQgYSBwYWdlIGNhbm5vdCBiZSBzY3JvbGxlZCB2ZXJ0aWNhbGx5IHdpdGggdG91Y2ggKGJ1dCBj
YW4gc3RpbGwgYmUgc2Nyb2xsZWQgaG9yaXpvbnRhbGx5KSBpZiBpdHMgYm9keSBoYXMgc3R5bGUg
b3ZlcmZsb3cteTpoaWRkZW4uIFRoZSBzY3JvbGwgZXZlbnRzIGluIHRoaXMgdGVzdCBoYXZlIGJv
dGggYW4geCBhbmQgeSBjb21wb25lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitnZXN0dXJlIGV2ZW50cyBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybSBvciBnZXN0
dXJlIGV2ZW50IHNjcm9sbGluZyBvZiBhIGRvY3VtZW50IGlzIGJyb2tlbgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1i
b2R5LXloaWRkZW4uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUv
dG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXloaWRkZW4uaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYWRj
ODZhNTkyMGRiODI2MWMzODQxZDE1Y2Y4M2RlY2Q3ZDA0OTc2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Ny
b2xsLWJvZHkteWhpZGRlbi5odG1sCkBAIC0wLDAgKzEsMTQ5IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvZ2VzdHVyZS1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+
CisjdG91Y2h0YXJnZXQgeworICB3aWR0aDogMTAwcHg7CisgIGhlaWdodDogMTAwcHg7CisgIGJh
Y2tncm91bmQ6IHdoaXRlOworICBvdmVyZmxvdzpoaWRkZW47Cit9CisKKzo6LXdlYmtpdC1zY3Jv
bGxiYXIgeworICAgIHdpZHRoOiAwcHg7CisgICAgaGVpZ2h0OiAwcHg7Cit9CisKKyNncmVlbmJv
eCB7CisgIHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAgYmFja2dyb3VuZDogZ3Jl
ZW47CisgIHBhZGRpbmc6IDBweDsKKyAgbWFyZ2luOiAwcHg7Cit9CisKKyNyZWRib3ggeworICB3
aWR0aDogMTAwcHg7CisgIGhlaWdodDogMTAwcHg7CisgIGJhY2tncm91bmQ6IHJlZDsKKyAgcGFk
ZGluZzogMHB4OworICBtYXJnaW46IDBweDsKK30KKwordGQgeworICBwYWRkaW5nOiAwcHg7Cit9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgc3R5bGU9Im1hcmdpbjowOyBvdmVyZmxvdy15Omhp
ZGRlbjsiIG9ubG9hZD0icnVuVGVzdCgpOyI+CisKKzx0YWJsZSBpZD0iaG9yaXpvbnRhbF90YWJs
ZV90b19maWxsIj4KKyAgPHRyIGlkPSJmaXJzdHJvdyI+CisgICAgPHRkPjxkaXYgaWQ9InJlZGJv
eCI+PC9kaXY+PC90ZD4KKyAgICA8dGQ+PGRpdiBpZD0iZ3JlZW5ib3giPjwvZGl2PjwvdGQ+Cisg
IDwvdHI+Cis8L3RhYmxlPgorCis8dGFibGUgaWQ9InZlcnRpY2FsX3RhYmxlX3RvX2ZpbGwiPgor
ICAgIDx0cj48dGQ+PGRpdiBpZD0iZ3JlZW5ib3giPjwvZGl2PjwvdGQ+PC90cj4KKyAgICA8dHI+
PHRkPjxkaXYgaWQ9InJlZGJveCI+PC9kaXY+PC90ZD48L3RyPgorPC90YWJsZT4KKworPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwordmFyIGV4cGVjdGVkR2VzdHVyZXNUb3RhbCA9IDI7Cit2
YXIgZ2VzdHVyZXNPY2N1cnJlZCA9IDA7Cit2YXIgc2Nyb2xsQW1vdW50WCA9IFsnNTUnLCAnOTcn
XTsKK3ZhciBzY3JvbGxBbW91bnRZID0gWycwJywgJzAnXTsKK3ZhciB3aGVlbEV2ZW50c09jY3Vy
cmVkID0gMDsKK3ZhciBleHBlY3RlZFdoZWVsRXZlbnRzT2NjdXJyZWQgPSBbJzAnLCAnMCddOwor
dmFyIHNjcm9sbEV2ZW50c09jY3VycmVkID0gMDsKK3ZhciBleHBlY3RlZFNjcm9sbEV2ZW50c09j
Y3VycmVkID0gJzEnOwordmFyIHNjcm9sbGVkRWxlbWVudCA9ICdkb2N1bWVudC5ib2R5JworCisv
LyBBbHdheXMgY29uc3RydWN0IGEgcGFnZSBsYXJnZXIgdGhhbiB0aGUgdmVydGljYWwgaGVpZ2h0
IG9mIHRoZSB3aW5kb3cuCitmdW5jdGlvbiBidWlsZFBhZ2UoKQoreworICAgIC8vIGJ1aWxkIHZl
cnRpY2FsIHRhYmxlCisgICAgdmFyIHRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Zl
cnRpY2FsX3RhYmxlX3RvX2ZpbGwnKTsKKyAgICB2YXIgdGFyZ2V0SGVpZ2h0ID0gZG9jdW1lbnQu
Ym9keS5vZmZzZXRIZWlnaHQ7CisgICAgdmFyIGNlbGxQYWlySGVpZ2h0ID0gdGFibGUub2Zmc2V0
SGVpZ2h0OworICAgIHZhciBudW1iZXJPZlJlcHMgPSB0YXJnZXRIZWlnaHQgLyBjZWxsUGFpckhl
aWdodCAqIDI7CisgICAgdmFyIGk7CisgICAgZm9yIChpID0gMDsgaSA8IG51bWJlck9mUmVwczsg
aSsrKSB7CisgICAgICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKKyAg
ICAgICAgcC5pbm5lckhUTUwgPSAnPHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3RkPic7
CisgICAgICAgIHRhYmxlLmFwcGVuZENoaWxkKHApOworICAgICAgICB2YXIgcCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CisgICAgICAgIHAuaW5uZXJIVE1MID0gJzx0ZD48ZGl2IGlk
PSJyZWRib3giPjwvZGl2PjwvdGQ+JzsKKyAgICAgICAgdGFibGUuYXBwZW5kQ2hpbGQocCk7Cisg
ICAgfQorCisgICAgLy8gYnVpbGQgaG9yaXpvbnRhbCB0YWJsZQorICAgIHZhciBob3Jpem9udGFs
VGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaG9yaXpvbnRhbF90YWJsZV90b19maWxs
Jyk7CisgICAgdmFyIHRhYmxlUm93ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpcnN0cm93
Jyk7CisgICAgdmFyIHRhcmdldFdpZHRoID0gZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDsKKyAg
ICB2YXIgY2VsbFBhaXJXaWR0aCA9IGhvcml6b250YWxUYWJsZS5vZmZzZXRXaWR0aDsKKyAgICBu
dW1iZXJPZlJlcHMgPSB0YXJnZXRXaWR0aCAvIGNlbGxQYWlyV2lkdGggKiAyOworICAgIGZvciAo
aSA9IDA7IGkgPCBudW1iZXJPZlJlcHM7IGkrKykgeworICAgICAgICB2YXIgcCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CisgICAgICAgIHAuaW5uZXJIVE1MID0gJzxkaXYgaWQ9InJl
ZGJveCI+PC9kaXY+JzsKKyAgICAgICAgdGFibGVSb3cuYXBwZW5kQ2hpbGQocCk7CisgICAgICAg
IHZhciBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKKyAgICAgICAgcC5pbm5lckhU
TUwgPSAnPGRpdiBpZD0iZ3JlZW5ib3giPjwvZGl2Pic7CisgICAgICAgIHRhYmxlUm93LmFwcGVu
ZENoaWxkKHApOworICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwi
LCByZWNvcmRTY3JvbGwpOworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVs
IiwgcmVjb3JkV2hlZWwpOworfQorCitmdW5jdGlvbiBmaXJzdEdlc3R1cmVTY3JvbGwoKQorewor
ICAgIGRlYnVnKCJmaXJzdCBnZXN0dXJlIik7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9s
bEJlZ2luKDE5NSwgMTIpOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoLTU1
LCAtMTEwKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOworCisgICAg
Ly8gV2FpdCBmb3IgbGF5b3V0LgorICAgIGNoZWNrU2Nyb2xsT2Zmc2V0KCk7Cit9CisKK2Z1bmN0
aW9uIHNlY29uZEdlc3R1cmVTY3JvbGwoKQoreworICAgIGRlYnVnKCJzZWNvbmQgZ2VzdHVyZSIp
OworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdpbigxMjAsIDI1NSk7CisgICAgZXZl
bnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgtNDIsIC05NSk7CisgICAgZXZlbnRTZW5kZXIu
Z2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKKworICAgIC8vIFdhaXQgZm9yIGxheW91dC4KKyAgICBj
aGVja1Njcm9sbE9mZnNldCgpOworfQorCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGJ1
aWxkUGFnZSgpOworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgZGVzY3Jp
cHRpb24oJ1RoaXMgdGVzdHMgdGhhdCBhIHBhZ2UgY2Fubm90IGJlIHNjcm9sbGVkIHZlcnRpY2Fs
bHkgd2l0aCB0b3VjaCAnICsKKyAgICAgICAgICAgICAgICAgICAgJyhidXQgY2FuIHN0aWxsIGJl
IHNjcm9sbGVkIGhvcml6b250YWxseSkgaWYgaXRzIGJvZHkgaGFzIHN0eWxlIG92ZXJmbG93LXk6
aGlkZGVuLiAnICsKKyAgICAgICAgICAgICAgICAgICAgJ1RoZSBzY3JvbGwgZXZlbnRzIGluIHRo
aXMgdGVzdCBoYXZlIGJvdGggYW4geCBhbmQgeSBjb21wb25lbnQuJyk7CisKKyAgICAgICAgaWYg
KGNoZWNrVGVzdERlcGVuZGVuY2llcygpKQorICAgICAgICAgICAgZmlyc3RHZXN0dXJlU2Nyb2xs
KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV4aXRJZk5lY2Vzc2FyeSgpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRHVtcFJlbmRlclRyZWUu
ICBUb3VjaCBzY3JvbGwgdGhlIHJlZCByZWN0IHRvIGxvZy4iKTsKKyAgICB9Cit9Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9k
eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg1YjVlNDhlMTdiY2ZmNzA2ZmM1NmU3YTc0NzEzZDhlOGQxYmU2
NWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0
dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS5odG1sCkBAIC0wLDAgKzEsMTY2IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvZ2VzdHVyZS1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyI+CisjdG91Y2h0YXJnZXQgeworICB3aWR0aDogMTAwcHg7CisgIGhlaWdo
dDogMTAwcHg7CisgIGJhY2tncm91bmQ6IHdoaXRlOworICBvdmVyZmxvdzpoaWRkZW47Cit9CisK
Kzo6LXdlYmtpdC1zY3JvbGxiYXIgeworICAgIHdpZHRoOiAwcHg7CisgICAgaGVpZ2h0OiAwcHg7
Cit9CisKKyNncmVlbmJveCB7CisgIHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAg
YmFja2dyb3VuZDogZ3JlZW47CisgIHBhZGRpbmc6IDBweDsKKyAgbWFyZ2luOiAwcHg7Cit9CisK
KyNyZWRib3ggeworICB3aWR0aDogMTAwcHg7CisgIGhlaWdodDogMTAwcHg7CisgIGJhY2tncm91
bmQ6IHJlZDsKKyAgcGFkZGluZzogMHB4OworICBtYXJnaW46IDBweDsKK30KKwordGQgeworICBw
YWRkaW5nOiAwcHg7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgc3R5bGU9Im1hcmdpbjow
OyBvdmVyZmxvdzpoaWRkZW47IiBvbmxvYWQ9InJ1blRlc3QoKTsiPgorCis8dGFibGUgaWQ9Imhv
cml6b250YWxfdGFibGVfdG9fZmlsbCI+CisgIDx0ciBpZD0iZmlyc3Ryb3ciPgorICAgIDx0ZD48
ZGl2IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+CisgICAgPHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48
L2Rpdj48L3RkPgorICA8L3RyPgorPC90YWJsZT4KKworPHRhYmxlIGlkPSJ2ZXJ0aWNhbF90YWJs
ZV90b19maWxsIj4KKyAgICA8dHI+PHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3RkPjwv
dHI+CisgICAgPHRyPjx0ZD48ZGl2IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+PC90cj4KKzwvdGFi
bGU+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK3ZhciBleHBlY3RlZEdlc3R1cmVz
VG90YWwgPSAyOwordmFyIGdlc3R1cmVzT2NjdXJyZWQgPSAwOwordmFyIHNjcm9sbEFtb3VudFgg
PSBbJzAnLCAnMCddOwordmFyIHNjcm9sbEFtb3VudFkgPSBbJzAnLCAnMCddOwordmFyIHdoZWVs
RXZlbnRzT2NjdXJyZWQgPSAwOwordmFyIGV4cGVjdGVkV2hlZWxFdmVudHNPY2N1cnJlZCA9IFsn
MCcsICcwJ107Cit2YXIgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAwOwordmFyIGV4cGVjdGVkU2Ny
b2xsRXZlbnRzT2NjdXJyZWQgPSAnMCc7Cit2YXIgc2Nyb2xsZWRFbGVtZW50ID0gJ2RvY3VtZW50
LmJvZHknCisKKy8vIEFsd2F5cyBjb25zdHJ1Y3QgYSBwYWdlIGxhcmdlciB0aGFuIHRoZSB2ZXJ0
aWNhbCBoZWlnaHQgb2YgdGhlIHdpbmRvdy4KK2Z1bmN0aW9uIGJ1aWxkUGFnZSgpCit7CisgICAg
Ly8gYnVpbGQgdmVydGljYWwgdGFibGUKKyAgICB2YXIgdGFibGUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndmVydGljYWxfdGFibGVfdG9fZmlsbCcpOworICAgIHZhciB0YXJnZXRIZWlnaHQg
PSBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKKyAgICB2YXIgY2VsbFBhaXJIZWlnaHQgPSB0
YWJsZS5vZmZzZXRIZWlnaHQ7CisgICAgdmFyIG51bWJlck9mUmVwcyA9IHRhcmdldEhlaWdodCAv
IGNlbGxQYWlySGVpZ2h0ICogMjsKKyAgICB2YXIgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVt
YmVyT2ZSZXBzOyBpKyspIHsKKyAgICAgICAgdmFyIHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCd0cicpOworICAgICAgICBwLmlubmVySFRNTCA9ICc8dGQ+PGRpdiBpZD0iZ3JlZW5ib3giPjwv
ZGl2PjwvdGQ+JzsKKyAgICAgICAgdGFibGUuYXBwZW5kQ2hpbGQocCk7CisgICAgICAgIHZhciBw
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKKyAgICAgICAgcC5pbm5lckhUTUwgPSAn
PHRkPjxkaXYgaWQ9InJlZGJveCI+PC9kaXY+PC90ZD4nOworICAgICAgICB0YWJsZS5hcHBlbmRD
aGlsZChwKTsKKyAgICB9CisKKyAgICAvLyBidWlsZCBob3Jpem9udGFsIHRhYmxlCisgICAgdmFy
IGhvcml6b250YWxUYWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdob3Jpem9udGFsX3Rh
YmxlX3RvX2ZpbGwnKTsKKyAgICB2YXIgdGFibGVSb3cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZmlyc3Ryb3cnKTsKKyAgICB2YXIgdGFyZ2V0V2lkdGggPSBkb2N1bWVudC5ib2R5Lm9mZnNl
dFdpZHRoOworICAgIHZhciBjZWxsUGFpcldpZHRoID0gaG9yaXpvbnRhbFRhYmxlLm9mZnNldFdp
ZHRoOworICAgIG51bWJlck9mUmVwcyA9IHRhcmdldFdpZHRoIC8gY2VsbFBhaXJXaWR0aCAqIDI7
CisgICAgZm9yIChpID0gMDsgaSA8IG51bWJlck9mUmVwczsgaSsrKSB7CisgICAgICAgIHZhciBw
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKKyAgICAgICAgcC5pbm5lckhUTUwgPSAn
PGRpdiBpZD0icmVkYm94Ij48L2Rpdj4nOworICAgICAgICB0YWJsZVJvdy5hcHBlbmRDaGlsZChw
KTsKKyAgICAgICAgdmFyIHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOworICAgICAg
ICBwLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+JzsKKyAgICAgICAgdGFi
bGVSb3cuYXBwZW5kQ2hpbGQocCk7CisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoInNjcm9sbCIsIHJlY29yZFNjcm9sbCk7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNld2hlZWwiLCByZWNvcmRXaGVlbCk7Cit9CisKK2Z1bmN0aW9uIGZpcnN0R2VzdHVyZVNj
cm9sbCgpCit7CisgICAgZGVidWcoImZpcnN0IGdlc3R1cmUiKTsKKyAgICBldmVudFNlbmRlci5n
ZXN0dXJlU2Nyb2xsQmVnaW4oOTUsIDEyKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xs
VXBkYXRlKC01NSwgLTExMCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEVuZCgwLCAw
KTsKKworICAgIC8vIFdhaXQgZm9yIGxheW91dC4KKyAgICBjaGVja1Njcm9sbE9mZnNldCgpOwor
fQorCitmdW5jdGlvbiBzZWNvbmRHZXN0dXJlU2Nyb2xsKCkKK3sKKyAgICBkZWJ1Zygic2Vjb25k
IGdlc3R1cmUiKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsQmVnaW4oMTIsIDk3KTsK
KyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKC00MiwgLTk1KTsKKyAgICBldmVu
dFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOworCisgICAgLy8gV2FpdCBmb3IgbGF5b3V0
LgorICAgIGNoZWNrU2Nyb2xsT2Zmc2V0KCk7CisKKyAgICAvLyBJbiB0aGlzIHRlc3Qgd2UgZG8g
bm90IGV4cGVjdCBhbnkgc2Nyb2xsIGV2ZW50cyB0bworICAgIC8vIGJlIHJlY2VpdmVkIGJ5IHRo
ZSBldmVudCBsaXN0ZW5lciwgc28gd2Ugc2lnbmFsCisgICAgLy8gdGhlIGVuZCBvZiB0aGUgdGVz
dCBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gaW5zdGVhZAorICAgIC8vIG9mIHJlbHlpbmcgb24g
cmVjb3JkU2Nyb2xsKCkgdG8gZG8gaXQuCisgICAgZmluaXNoVGVzdCgpOworfQorCitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0
aW9uIHJ1blRlc3QoKQoreworICAgIGJ1aWxkUGFnZSgpOworICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgZGVzY3JpcHRpb24oJ1RoaXMgdGVzdHMgdGhhdCBhIHBhZ2UgY2Fu
bm90IGJlIHNjcm9sbGVkIHdpdGggdG91Y2ggaWYgaXRzIGJvZHkgaGFzIHN0eWxlIG92ZXJmbG93
OmhpZGRlbi4nKTsKKworICAgICAgICBpZiAoY2hlY2tUZXN0RGVwZW5kZW5jaWVzKCkpCisgICAg
ICAgICAgICBmaXJzdEdlc3R1cmVTY3JvbGwoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
ZXhpdElmTmVjZXNzYXJ5KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoIlRoaXMgdGVz
dCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZS4gIFRvdWNoIHNjcm9sbCB0aGUgcmVkIHJlY3QgdG8g
bG9nLiIpOworICAgIH0KK30KKworZnVuY3Rpb24gZmluaXNoVGVzdCgpCit7CisgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBpZiAoZ2VzdHVyZXNPY2N1cnJlZCA9PSBleHBl
Y3RlZEdlc3R1cmVzVG90YWwpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCdzY3JvbGxFdmVudHNP
Y2N1cnJlZCcsIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQpOworICAgICAgICAgICAgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2Vk
KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICB9Cit9Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Rv
dWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZGl2LW5vdC1wcm9wYWdhdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Ny
b2xsLWRpdi1ub3QtcHJvcGFnYXRlZC5odG1sCmluZGV4IDI4MDE0MDlkN2IwNDNjMjQ1MDliNjU3
MWRiOWM0NWI5NmIwMWRlMWQuLmQwYzVkNTBjYjZjOThiY2MwZThkZmZiNmJmOWNkNTI4N2JjNDli
NTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91
Y2gtZ2VzdHVyZS1zY3JvbGwtZGl2LW5vdC1wcm9wYWdhdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1kaXYtbm90
LXByb3BhZ2F0ZWQuaHRtbApAQCAtOTIsMjUgKzkyLDYgQEAgdmFyIHNjcm9sbGVkRWxlbWVudCA9
ICdtb3ZlZGJveCcKIHZhciBzY3JvbGxFdmVudHNPY2N1cnJlZCA9IDA7CiB2YXIgZXhwZWN0ZWRT
Y3JvbGxFdmVudHNPY2N1cnJlZCA9ICcxJzsKIAotCi1mdW5jdGlvbiByZWNvcmRTY3JvbGwoZXZl
bnQpIHsKLQlkZWJ1Zygnc2Nyb2xsIGV2ZW50ICcgKyBzY3JvbGxFdmVudHNPY2N1cnJlZCArICcr
PiAnICsgZXZlbnQudGFyZ2V0KTsKLQlzY3JvbGxFdmVudHNPY2N1cnJlZCsrOwotCi0JaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgewotCQkvLyBCZWNhdXNlIHNjcm9sbCBldmVudHMgYXJyaXZlIGFz
eW5jaHJvbm91c2x5LCBvbmx5IG9uZSB3aWxsIGFycml2ZS4KLQkgICAgaWYgKGdlc3R1cmVzT2Nj
dXJyZWQgPT0gZXhwZWN0ZWRHZXN0dXJlc1RvdGFsKSB7Ci0JCQlzaG91bGRCZSgnc2Nyb2xsRXZl
bnRzT2NjdXJyZWQnLCBleHBlY3RlZFNjcm9sbEV2ZW50c09jY3VycmVkKTsKLQkgICAgICAgIC8v
IElmIHdlJ3ZlIGdvdCBoZXJlLCB3ZSd2ZSBwYXNzZWQuCi0JICAgICAgICBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwotCSAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLQkgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLQkgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLQkJfQotICAgIH0KLX0KLQotCiBmdW5jdGlvbiBmaXJzdEdlc3R1cmVTY3JvbGwoKQog
ewogICAgIGRlYnVnKCJmaXJzdCBnZXN0dXJlIik7CkBAIC0xMjYsNyArMTA3LDggQEAgZnVuY3Rp
b24gc2Vjb25kR2VzdHVyZVNjcm9sbCgpCiB7CiAgICAgZGVidWcoInNlY29uZCBnZXN0dXJlIik7
CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDEyLCA0MCk7Ci0gICAgZXZlbnRT
ZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZVdpdGhvdXRQcm9wYWdhdGlvbigwLCAtNjApOworICAg
IGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGVXaXRob3V0UHJvcGFnYXRpb24oMCwgLTUw
KTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9u
KDAsIC0xMCk7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKIAogICAg
IC8vIFdhaXQgZm9yIGxheW91dC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZGl2LXByb3BhZ2F0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3Jv
bGwtZGl2LXByb3BhZ2F0ZWQuaHRtbAppbmRleCAzNDNlMTVmNWNlMjliMmVjYjY5ZDI5MjFkMmVm
YzYzMTZhNWExZGQ0Li45OTc2OTg1NGFhYzU4YTZjZTVmMzc1NzljZGE4NGY1NzQ4NWZkNjM3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdl
c3R1cmUtc2Nyb2xsLWRpdi1wcm9wYWdhdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1kaXYtcHJvcGFnYXRlZC5o
dG1sCkBAIC05MiwyNSArOTIsNiBAQCB2YXIgc2Nyb2xsZWRFbGVtZW50ID0gJ21vdmVkYm94Jwog
dmFyIHNjcm9sbEV2ZW50c09jY3VycmVkID0gMDsKIHZhciBleHBlY3RlZFNjcm9sbEV2ZW50c09j
Y3VycmVkID0gJzEnOwogCi0KLWZ1bmN0aW9uIHJlY29yZFNjcm9sbChldmVudCkgewotCWRlYnVn
KCdzY3JvbGwgZXZlbnQgJyArIHNjcm9sbEV2ZW50c09jY3VycmVkICsgJys+ICcgKyBldmVudC50
YXJnZXQpOwotCXNjcm9sbEV2ZW50c09jY3VycmVkKys7Ci0KLQlpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7Ci0JCS8vIEJlY2F1c2Ugc2Nyb2xsIGV2ZW50cyBhcnJpdmUgYXN5bmNocm9ub3VzbHks
IG9ubHkgb25lIHdpbGwgYXJyaXZlLgotCSAgICBpZiAoZ2VzdHVyZXNPY2N1cnJlZCA9PSBleHBl
Y3RlZEdlc3R1cmVzVG90YWwpIHsKLQkJCXNob3VsZEJlKCdzY3JvbGxFdmVudHNPY2N1cnJlZCcs
IGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQpOwotCSAgICAgICAgLy8gSWYgd2UndmUgZ290
IGhlcmUsIHdlJ3ZlIHBhc3NlZC4KLQkgICAgICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Ci0JICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotCSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotCSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotCQl9Ci0g
ICAgfQotfQotCi0KIGZ1bmN0aW9uIGZpcnN0R2VzdHVyZVNjcm9sbCgpCiB7CiAgICAgZGVidWco
ImZpcnN0IGdlc3R1cmUiKTsKQEAgLTEyNiw3ICsxMDcsOCBAQCBmdW5jdGlvbiBzZWNvbmRHZXN0
dXJlU2Nyb2xsKCkKIHsKICAgICBkZWJ1Zygic2Vjb25kIGdlc3R1cmUiKTsKICAgICBldmVudFNl
bmRlci5nZXN0dXJlU2Nyb2xsQmVnaW4oMTIsIDQwKTsKLSAgICBldmVudFNlbmRlci5nZXN0dXJl
U2Nyb2xsVXBkYXRlKDAsIC02MCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0
ZSgwLCAtNTApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTEwKTsK
ICAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOwogCiAgICAgLy8gV2FpdCBm
b3IgbGF5b3V0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1kaXYtdHdpY2UtcHJvcGFnYXRlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1k
aXYtdHdpY2UtcHJvcGFnYXRlZC5odG1sCmluZGV4IDhmNjUxZDQ1YmNjOWEwNzIwOGUyMzBlNDkx
YWVkNDkwMzI0NjkxZjAuLjFiNmU2MWViMzM3OTdjYjU1NjE2NDI2MzRlODhjNWE1OGViMWRjODUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gt
Z2VzdHVyZS1zY3JvbGwtZGl2LXR3aWNlLXByb3BhZ2F0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWRpdi10d2lj
ZS1wcm9wYWdhdGVkLmh0bWwKQEAgLTExNiwzMCArMTE2LDEyIEBAIHZhciBzY3JvbGxlZEVsZW1l
bnQgPSAnbW92ZWRib3gnCiB2YXIgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAwOwogdmFyIGV4cGVj
dGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAnMSc7CiAKLQotZnVuY3Rpb24gcmVjb3JkU2Nyb2xs
KGV2ZW50KSB7Ci0JZGVidWcoJ3Njcm9sbCBldmVudCAnICsgc2Nyb2xsRXZlbnRzT2NjdXJyZWQg
KyAnKz4gJyArIGV2ZW50LnRhcmdldCk7Ci0Jc2Nyb2xsRXZlbnRzT2NjdXJyZWQrKzsKLQotCWlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLQkJLy8gQmVjYXVzZSBzY3JvbGwgZXZlbnRzIGFycml2
ZSBhc3luY2hyb25vdXNseSwgb25seSBvbmUgd2lsbCBhcnJpdmUuCi0JICAgIGlmIChnZXN0dXJl
c09jY3VycmVkID09IGV4cGVjdGVkR2VzdHVyZXNUb3RhbCkgewotCQkJc2hvdWxkQmUoJ3Njcm9s
bEV2ZW50c09jY3VycmVkJywgZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCk7Ci0JICAgICAg
ICAvLyBJZiB3ZSd2ZSBnb3QgaGVyZSwgd2UndmUgcGFzc2VkLgotCSAgICAgICAgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKLQkgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0JICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0JICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci0JCX0KLSAgICB9Ci19Ci0KLQogZnVuY3Rpb24gZmlyc3RHZXN0dXJlU2Nyb2xs
KCkKIHsKICAgICBkZWJ1ZygiZmlyc3QgZ2VzdHVyZSIpOwogICAgIGV2ZW50U2VuZGVyLmdlc3R1
cmVTY3JvbGxCZWdpbigxMCwgNzIpOwotICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRh
dGUoMCwgLTIzMCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMjAw
KTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC0zMCk7CiAgICAgZXZl
bnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEVuZCgwLCAwKTsKIAogICAgIC8vIFdhaXQgZm9yIGxheW91
dC4KQEAgLTE1MCw3ICsxMzIsOCBAQCBmdW5jdGlvbiBzZWNvbmRHZXN0dXJlU2Nyb2xsKCkKIHsK
ICAgICBkZWJ1Zygic2Vjb25kIGdlc3R1cmUiKTsKICAgICBldmVudFNlbmRlci5nZXN0dXJlU2Ny
b2xsQmVnaW4oMTIsIDQwKTsKLSAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAs
IC00NSk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMjApOworICAg
IGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGUoMCwgLTI1KTsKICAgICBldmVudFNlbmRl
ci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOwogCiAgICAgLy8gV2FpdCBmb3IgbGF5b3V0LgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0
dXJlLXNjcm9sbC1pZnJhbWUtbm90LXByb3BhZ2F0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtaWZyYW1lLW5vdC1wcm9w
YWdhdGVkLmh0bWwKaW5kZXggYTZkOWYyMmMzMDA1YTQ1MzIwNThiMzYzOTY4M2YzNzJmN2JiMDlm
Ny4uYTk5YzI2NTU3NzhlY2Y0ZGJmNDEyMjkxMjE5OWE3MjU1OWU1NzNkMCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9s
bC1pZnJhbWUtbm90LXByb3BhZ2F0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWlmcmFtZS1ub3QtcHJvcGFnYXRl
ZC5odG1sCkBAIC03MSwyNSArNzEsNiBAQCB2YXIgc2Nyb2xsZWRFbGVtZW50ID0gJ21vdmVkYm94
JwogdmFyIHNjcm9sbEV2ZW50c09jY3VycmVkID0gMDsKIHZhciBleHBlY3RlZFNjcm9sbEV2ZW50
c09jY3VycmVkID0gJzEnOwogCi0KLWZ1bmN0aW9uIHJlY29yZFNjcm9sbChldmVudCkgewotCWRl
YnVnKCdzY3JvbGwgZXZlbnQgJyArIHNjcm9sbEV2ZW50c09jY3VycmVkICsgJys+ICcgKyBldmVu
dC50YXJnZXQpOwotCXNjcm9sbEV2ZW50c09jY3VycmVkKys7Ci0KLQlpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7Ci0JCS8vIEJlY2F1c2Ugc2Nyb2xsIGV2ZW50cyBhcnJpdmUgYXN5bmNocm9ub3Vz
bHksIG9ubHkgb25lIHdpbGwgYXJyaXZlLgotCSAgICBpZiAoZ2VzdHVyZXNPY2N1cnJlZCA9PSBl
eHBlY3RlZEdlc3R1cmVzVG90YWwpIHsKLQkJCXNob3VsZEJlKCdzY3JvbGxFdmVudHNPY2N1cnJl
ZCcsIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQpOwotCSAgICAgICAgLy8gSWYgd2UndmUg
Z290IGhlcmUsIHdlJ3ZlIHBhc3NlZC4KLQkgICAgICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Ci0JICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotCSAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotCSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotCQl9
Ci0gICAgfQotfQotCi0KIGZ1bmN0aW9uIGZpcnN0R2VzdHVyZVNjcm9sbCgpCiB7CiAgICAgZGVi
dWcoImZpcnN0IGdlc3R1cmUiKTsKQEAgLTEwNSw3ICs4Niw4IEBAIGZ1bmN0aW9uIHNlY29uZEdl
c3R1cmVTY3JvbGwoKQogewogICAgIGRlYnVnKCJzZWNvbmQgZ2VzdHVyZSIpOwogICAgIGV2ZW50
U2VuZGVyLmdlc3R1cmVTY3JvbGxCZWdpbigxMiwgNDApOwotICAgIGV2ZW50U2VuZGVyLmdlc3R1
cmVTY3JvbGxVcGRhdGVXaXRob3V0UHJvcGFnYXRpb24oMCwgLTEwMCk7CisgICAgZXZlbnRTZW5k
ZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZVdpdGhvdXRQcm9wYWdhdGlvbigwLCAtMTApOworICAgIGV2
ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxVcGRhdGVXaXRob3V0UHJvcGFnYXRpb24oMCwgLTUwKTsK
ICAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsRW5kKDAsIDApOwogCiAgICAgLy8gV2FpdCBm
b3IgbGF5b3V0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1pZnJhbWUtcHJvcGFnYXRlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1pZnJh
bWUtcHJvcGFnYXRlZC5odG1sCmluZGV4IDFhM2I1YWQ5ODdkNzI5NzUwNmIwYTNlMzcwMzM5NTFm
OTNjMjlhNTguLmQzYzBhZjRjOWJhOTM1Y2I2Yzg2ZTAzNGQ1NTQ5OGQ3NDYwMzQyMmQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVy
ZS1zY3JvbGwtaWZyYW1lLXByb3BhZ2F0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWlmcmFtZS1wcm9wYWdhdGVk
Lmh0bWwKQEAgLTcxLDI1ICs3MSw2IEBAIHZhciBzY3JvbGxlZEVsZW1lbnQgPSAnbW92ZWRib3gn
CiB2YXIgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAwOwogdmFyIGV4cGVjdGVkU2Nyb2xsRXZlbnRz
T2NjdXJyZWQgPSAnMSc7CiAKLQotZnVuY3Rpb24gcmVjb3JkU2Nyb2xsKGV2ZW50KSB7Ci0JZGVi
dWcoJ3Njcm9sbCBldmVudCAnICsgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgKyAnKz4gJyArIGV2ZW50
LnRhcmdldCk7Ci0Jc2Nyb2xsRXZlbnRzT2NjdXJyZWQrKzsKLQotCWlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKLQkJLy8gQmVjYXVzZSBzY3JvbGwgZXZlbnRzIGFycml2ZSBhc3luY2hyb25vdXNs
eSwgb25seSBvbmUgd2lsbCBhcnJpdmUuCi0JICAgIGlmIChnZXN0dXJlc09jY3VycmVkID09IGV4
cGVjdGVkR2VzdHVyZXNUb3RhbCkgewotCQkJc2hvdWxkQmUoJ3Njcm9sbEV2ZW50c09jY3VycmVk
JywgZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCk7Ci0JICAgICAgICAvLyBJZiB3ZSd2ZSBn
b3QgaGVyZSwgd2UndmUgcGFzc2VkLgotCSAgICAgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKLQkgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0JICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0JICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0JCX0K
LSAgICB9Ci19Ci0KLQogZnVuY3Rpb24gZmlyc3RHZXN0dXJlU2Nyb2xsKCkKIHsKICAgICBkZWJ1
ZygiZmlyc3QgZ2VzdHVyZSIpOwpAQCAtMTA1LDcgKzg2LDggQEAgZnVuY3Rpb24gc2Vjb25kR2Vz
dHVyZVNjcm9sbCgpCiB7CiAgICAgZGVidWcoInNlY29uZCBnZXN0dXJlIik7CiAgICAgZXZlbnRT
ZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDEyLCA0MCk7Ci0gICAgZXZlbnRTZW5kZXIuZ2VzdHVy
ZVNjcm9sbFVwZGF0ZSgwLCAtMTAwKTsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBk
YXRlKDAsIC0xMCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtNTAp
OwogICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CiAKICAgICAvLyBXYWl0
IGZvciBsYXlvdXQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2Utbm90LXByb3BhZ2F0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwt
cGFnZS1ub3QtcHJvcGFnYXRlZC5odG1sCmluZGV4IGIzODUyNDVmYzE5YzNiM2QzYjk4OTU5MDQ2
MTBkNjA0YmIyOWYxNmEuLjQ2ZDgzNmMyMGMxZDkzYjUwMThjMmY1ZTMwNmZhZTc2MjQ4ZjI2Mzkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gt
Z2VzdHVyZS1zY3JvbGwtcGFnZS1ub3QtcHJvcGFnYXRlZC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcGFnZS1ub3Qt
cHJvcGFnYXRlZC5odG1sCkBAIC04NiwyMyArODYsNiBAQCB2YXIgc2Nyb2xsZWRFbGVtZW50ID0g
J2RvY3VtZW50LmJvZHknCiB2YXIgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAwOwogdmFyIGV4cGVj
dGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQgPSAnMSc7CiAKLWZ1bmN0aW9uIHJlY29yZFNjcm9sbChl
dmVudCkgewotCWRlYnVnKCdzY3JvbGwgZXZlbnQgJyArIHNjcm9sbEV2ZW50c09jY3VycmVkICsg
Jys+ICcgKyBldmVudC50YXJnZXQpOwotCXNjcm9sbEV2ZW50c09jY3VycmVkKys7Ci0KLQlpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7Ci0JCS8vIEJlY2F1c2Ugc2Nyb2xsIGV2ZW50cyBhcnJpdmUg
YXN5bmNocm9ub3VzbHksIG9ubHkgb25lIHdpbGwgYXJyaXZlLgotCSAgICBpZiAoZ2VzdHVyZXNP
Y2N1cnJlZCA9PSBleHBlY3RlZEdlc3R1cmVzVG90YWwpIHsKLQkJCXNob3VsZEJlKCdzY3JvbGxF
dmVudHNPY2N1cnJlZCcsIGV4cGVjdGVkU2Nyb2xsRXZlbnRzT2NjdXJyZWQpOwotCSAgICAgICAg
Ly8gSWYgd2UndmUgZ290IGhlcmUsIHdlJ3ZlIHBhc3NlZC4KLQkgICAgICAgIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Ci0JICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotCSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotCSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwotCQl9Ci0gICAgfQotfQotCiAvLyBBbHdheXMgY29uc3RydWN0IGEgcGFnZSBsYXJn
ZXIgdGhhbiB0aGUgdmVydGljYWwgaGVpZ2h0IG9mIHRoZSB3aW5kb3cuCiBmdW5jdGlvbiBidWls
ZFBhZ2UoKQogewpAQCAtMTM2LDcgKzExOSw4IEBAIGZ1bmN0aW9uIHNlY29uZEdlc3R1cmVTY3Jv
bGwoKQogewogICAgIGRlYnVnKCJzZWNvbmQgZ2VzdHVyZSIpOwogICAgIGV2ZW50U2VuZGVyLmdl
c3R1cmVTY3JvbGxCZWdpbigxMiwgNDApOwotICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxV
cGRhdGVXaXRob3V0UHJvcGFnYXRpb24oMCwgLTI1MCk7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVy
ZVNjcm9sbFVwZGF0ZVdpdGhvdXRQcm9wYWdhdGlvbigwLCAtMjAwKTsKKyAgICBldmVudFNlbmRl
ci5nZXN0dXJlU2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9uKDAsIC0xNjApOwogICAgIGV2
ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CiAKICAgICAvLyBXYWl0IGZvciBsYXlv
dXQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3Rv
dWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2UtcHJvcGFnYXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLXByb3BhZ2F0
ZWQuaHRtbAppbmRleCAwOTMwOTVjNWVmYjk2Y2JkMjJmMmYwZTFiN2Q1YWNhMWZhNTA4YmQ1Li5k
YWE0NTY3ZTgzZmQxN2FmNzk4MTE5MjcwNGZlZjNiOTI2ZDk5NWIwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBh
Z2UtcHJvcGFnYXRlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcGFnZS1wcm9wYWdhdGVkLmh0bWwKQEAgLTg2LDIz
ICs4Niw2IEBAIHZhciBzY3JvbGxlZEVsZW1lbnQgPSAnZG9jdW1lbnQuYm9keScKIHZhciBzY3Jv
bGxFdmVudHNPY2N1cnJlZCA9IDA7CiB2YXIgZXhwZWN0ZWRTY3JvbGxFdmVudHNPY2N1cnJlZCA9
ICcxJzsKIAotZnVuY3Rpb24gcmVjb3JkU2Nyb2xsKGV2ZW50KSB7Ci0JZGVidWcoJ3Njcm9sbCBl
dmVudCAnICsgc2Nyb2xsRXZlbnRzT2NjdXJyZWQgKyAnKz4gJyArIGV2ZW50LnRhcmdldCk7Ci0J
c2Nyb2xsRXZlbnRzT2NjdXJyZWQrKzsKLQotCWlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLQkJ
Ly8gQmVjYXVzZSBzY3JvbGwgZXZlbnRzIGFycml2ZSBhc3luY2hyb25vdXNseSwgb25seSBvbmUg
d2lsbCBhcnJpdmUuCi0JICAgIGlmIChnZXN0dXJlc09jY3VycmVkID09IGV4cGVjdGVkR2VzdHVy
ZXNUb3RhbCkgewotCQkJc2hvdWxkQmUoJ3Njcm9sbEV2ZW50c09jY3VycmVkJywgZXhwZWN0ZWRT
Y3JvbGxFdmVudHNPY2N1cnJlZCk7Ci0JICAgICAgICAvLyBJZiB3ZSd2ZSBnb3QgaGVyZSwgd2Un
dmUgcGFzc2VkLgotCSAgICAgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKLQkgICAgICAg
IGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0JICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0JICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0JCX0KLSAgICB9Ci19Ci0K
IC8vIEFsd2F5cyBjb25zdHJ1Y3QgYSBwYWdlIGxhcmdlciB0aGFuIHRoZSB2ZXJ0aWNhbCBoZWln
aHQgb2YgdGhlIHdpbmRvdy4KIGZ1bmN0aW9uIGJ1aWxkUGFnZSgpCiB7CkBAIC0xMzYsNyArMTE5
LDggQEAgZnVuY3Rpb24gc2Vjb25kR2VzdHVyZVNjcm9sbCgpCiB7CiAgICAgZGVidWcoInNlY29u
ZCBnZXN0dXJlIik7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKDEyLCA0MCk7
Ci0gICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMjUwKTsKKyAgICBldmVu
dFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC0yMDApOworICAgIGV2ZW50U2VuZGVyLmdl
c3R1cmVTY3JvbGxVcGRhdGUoMCwgLTE2MCk7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9s
bEVuZCgwLCAwKTsKIAogICAgIC8vIFdhaXQgZm9yIGxheW91dC4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcGFn
ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0
dXJlLXNjcm9sbC1wYWdlLmh0bWwKaW5kZXggNGU2MGU1Y2FlMGU5YjUxZWFkYjc1NDhkN2I3YzYw
ZDI4MzFiZDlhOC4uZjkzNTQzMmNjMjg5MzJkNTA5MWMyNmYxOTQ3MTYwZGE5NmNhYjAwYiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0
dXJlLXNjcm9sbC1wYWdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gv
Z2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1wYWdlLmh0bWwKQEAgLTEsNCArMSw0IEBACi08
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8IURPQ1RZUEUg
aHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+CkBAIC0xMDUsNyArMTA1LDcgQEAg
ZnVuY3Rpb24gZmlyc3RHZXN0dXJlU2Nyb2xsKCkKIGZ1bmN0aW9uIHNlY29uZEdlc3R1cmVTY3Jv
bGwoKQogewogICAgIGRlYnVnKCJzZWNvbmQgZ2VzdHVyZSIpOwotICAgIGV2ZW50U2VuZGVyLmdl
c3R1cmVTY3JvbGxCZWdpbigxMiwgNDApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxC
ZWdpbig4MDAsIDQwKTsKICAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC0z
MCk7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtMzApOwogICAgIGV2
ZW50U2VuZGVyLmdlc3R1cmVTY3JvbGxFbmQoMCwgMCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1
cmUtbm9zY3JvbGwtYm9keS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9k
eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRjYWY5YWE3NWQ0NGQyYTAwYzUzMWJiMmIwZmQx
YTliMTU4MWQxMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUaGlzIHRlc3RzIHRoYXQgYSBwYWdlIGNh
bm5vdCBiZSBzY3JvbGxlZCB3aXRoIHRvdWNoIGlmIGl0cyBib2R5IGhhcyBzdHlsZSBvdmVyZmxv
dzpoaWRkZW4uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitmaXJzdCBnZXN0dXJl
CitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIGlzIDAKK1BBU1MgZG9jdW1lbnQuYm9keS5z
Y3JvbGxMZWZ0IGlzIDAKK1BBU1Mgd2hlZWxFdmVudHNPY2N1cnJlZCBpcyAwCitzZWNvbmQgZ2Vz
dHVyZQorUEFTUyBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCBpcyAwCitQQVNTIGRvY3VtZW50LmJv
ZHkuc2Nyb2xsTGVmdCBpcyAwCitQQVNTIHdoZWVsRXZlbnRzT2NjdXJyZWQgaXMgMAorUEFTUyBz
Y3JvbGxFdmVudHNPY2N1cnJlZCBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Nyb2xsLWJv
ZHktcHJvcGFnYXRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS1w
cm9wYWdhdGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZjIzN2E1OGZmZWNhMzJlOGRlMTM0
NzUxYzk0MTc1Mjc1ODI2NGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLW5vc2Ny
b2xsLWJvZHktcHJvcGFnYXRlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGhpcyB0
ZXN0cyB0aGF0IGEgcGFnZSBjYW5ub3QgYmUgc2Nyb2xsZWQgdmVydGljYWxseSB3aXRoIHRvdWNo
IGlmIGl0cyBib2R5IGhhcyBzdHlsZSBvdmVyZmxvdy15OmhpZGRlbiBhbmQgdGhlIHNjcm9sbCBl
dmVudCBpcyBwcm9wb2dhdGVkIGZyb20gYSBzY3JvbGxhYmxlIGNoaWxkIGRpdi4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2ZpcnN0IGdlc3R1cmUKK1BBU1MgZG9jdW1lbnQuYm9k
eS5zY3JvbGxUb3AgaXMgMAorUEFTUyBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQgaXMgMAorUEFT
UyB3aGVlbEV2ZW50c09jY3VycmVkIGlzIDAKK3NlY29uZCBnZXN0dXJlCitQQVNTIGRvY3VtZW50
LmJvZHkuc2Nyb2xsVG9wIGlzIDAKK1BBU1MgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0IGlzIDAK
K1BBU1Mgd2hlZWxFdmVudHNPY2N1cnJlZCBpcyAwCitQQVNTIHNjcm9sbEV2ZW50c09jY3VycmVk
IGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90
b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXhoaWRkZW4tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRjMjc3NjI5ZjQzYWM3ZDI4ZTcxMmFmYTljNWI0NzM0MGM5YmQxMDgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90
b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS14aGlkZGVuLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE5IEBACitUaGlzIHRlc3RzIHRoYXQgYSBwYWdlIGNhbm5vdCBiZSBz
Y3JvbGxlZCBob3Jpem9udGFsbHkgd2l0aCB0b3VjaCAoYnV0IGNhbiBzdGlsbCBiZSBzY3JvbGxl
ZCB2ZXJ0aWNhbGx5KSBpZiBpdHMgYm9keSBoYXMgc3R5bGUgb3ZlcmZsb3cteDpoaWRkZW4uIFRo
ZSBzY3JvbGwgZXZlbnRzIGluIHRoaXMgdGVzdCBoYXZlIGJvdGggYW4geCBhbmQgeSBjb21wb25l
bnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitmaXJzdCBnZXN0dXJlCitQQVNT
IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIGlzIDExMAorUEFTUyBkb2N1bWVudC5ib2R5LnNjcm9s
bExlZnQgaXMgMAorUEFTUyB3aGVlbEV2ZW50c09jY3VycmVkIGlzIDAKK3NlY29uZCBnZXN0dXJl
CitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIGlzIDIwNQorUEFTUyBkb2N1bWVudC5ib2R5
LnNjcm9sbExlZnQgaXMgMAorUEFTUyB3aGVlbEV2ZW50c09jY3VycmVkIGlzIDAKK3Njcm9sbCBl
dmVudCAwKz4gW29iamVjdCBIVE1MRG9jdW1lbnRdCitQQVNTIHNjcm9sbEV2ZW50c09jY3VycmVk
IGlzIDEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90
b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS15aGlkZGVuLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvdG91Y2gtZ2VzdHVyZS1ub3Njcm9sbC1ib2R5LXloaWRkZW4tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY4OWExZDcyNWQ5YzMxY2NhNTAzMWE2MjAwOWRhOGU0ZjkyN2YzMTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90
b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtbm9zY3JvbGwtYm9keS15aGlkZGVuLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE5IEBACitUaGlzIHRlc3RzIHRoYXQgYSBwYWdlIGNhbm5vdCBiZSBz
Y3JvbGxlZCB2ZXJ0aWNhbGx5IHdpdGggdG91Y2ggKGJ1dCBjYW4gc3RpbGwgYmUgc2Nyb2xsZWQg
aG9yaXpvbnRhbGx5KSBpZiBpdHMgYm9keSBoYXMgc3R5bGUgb3ZlcmZsb3cteTpoaWRkZW4uIFRo
ZSBzY3JvbGwgZXZlbnRzIGluIHRoaXMgdGVzdCBoYXZlIGJvdGggYW4geCBhbmQgeSBjb21wb25l
bnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitmaXJzdCBnZXN0dXJlCitQQVNT
IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIGlzIDAKK1BBU1MgZG9jdW1lbnQuYm9keS5zY3JvbGxM
ZWZ0IGlzIDU1CitQQVNTIHdoZWVsRXZlbnRzT2NjdXJyZWQgaXMgMAorc2Vjb25kIGdlc3R1cmUK
K1BBU1MgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgaXMgMAorUEFTUyBkb2N1bWVudC5ib2R5LnNj
cm9sbExlZnQgaXMgOTcKK1BBU1Mgd2hlZWxFdmVudHNPY2N1cnJlZCBpcyAwCitzY3JvbGwgZXZl
bnQgMCs+IFtvYmplY3QgSFRNTERvY3VtZW50XQorUEFTUyBzY3JvbGxFdmVudHNPY2N1cnJlZCBp
cyAxCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>