<?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>23607</bug_id>
          
          <creation_ts>2009-01-28 16:15:13 -0800</creation_ts>
          <short_desc>REGRESSION: Clicking near an contentEditable div will focus the div, even though it shouldn&apos;t!</short_desc>
          <delta_ts>2009-02-24 14:28:44 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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>23605</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hyatt</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>107432</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-28 16:15:13 -0800</bug_when>
    <thetext>Clicking near an contentEditable div will focus the div, even though it shouldn&apos;t!

This is especially noticeable if the div is the only content in the page (as any click on the body will focus the div).  FF and IE get this right.

This blocks conversion of text areas away from shadow nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107433</commentid>
    <comment_count>1</comment_count>
      <attachid>27133</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-28 16:16:01 -0800</bug_when>
    <thetext>Created attachment 27133
js portion of test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107781</commentid>
    <comment_count>2</comment_count>
      <attachid>27196</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-30 14:50:08 -0800</bug_when>
    <thetext>Created attachment 27196
First pass testcases for bug 23605 and bug 23607

 ...ick-in-margins-inside-editable-div-expected.txt |    9 ++
 .../click-in-margins-inside-editable-div.html      |   13 ++
 .../click-outside-editable-div-expected.txt        |   15 ++
 .../selection/click-outside-editable-div.html      |   13 ++
 .../editing/selection/resources/TEMPLATE.html      |   13 ++
 .../click-in-margins-inside-editable-div.js        |  135 ++++++++++++++++++++
 .../resources/click-outside-editable-div.js        |   50 +++++++
 7 files changed, 248 insertions(+), 0 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107782</commentid>
    <comment_count>3</comment_count>
      <attachid>27197</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-30 14:50:09 -0800</bug_when>
    <thetext>Created attachment 27197
First pass fix, Position::cannonicalPosition still seems to break us

 WebCore/rendering/RenderBlock.cpp     |  112 +++++++++++++++------------------
 WebCore/rendering/RenderContainer.cpp |    3 +-
 WebCore/rendering/RenderInline.cpp    |    1 +
 3 files changed, 54 insertions(+), 62 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107783</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-30 14:53:26 -0800</bug_when>
    <thetext>I&apos;ve attached our first stab.  It&apos;s broken.  We&apos;re now correctly returning a good VisualPosition right before the editable div, but canonicalPosition is turning our returned position into the next div.  I&apos;m not sure what changes we need to make to canonicalPosition to make this work.  Should our placement be a &quot;candidate position&quot;?  Should we special case to check if next&apos;s editibitility is not the same as position&apos;s?  (That&apos;s probably the fix.)

Here&apos;s the function for reference:  In our case, we fall out the last return where it does return next;

Position VisiblePosition::canonicalPosition(const Position&amp; position)
{
    // FIXME (9535):  Canonicalizing to the leftmost candidate means that if we&apos;re at a line wrap, we will 
    // ask renderers to paint downstream carets for other renderers.
    // To fix this, we need to either a) add code to all paintCarets to pass the responsibility off to
    // the appropriate renderer for VisiblePosition&apos;s like these, or b) canonicalize to the rightmost candidate
    // unless the affinity is upstream.
    Node* node = position.node();
    if (!node)
        return Position();

    node-&gt;document()-&gt;updateLayoutIgnorePendingStylesheets();

    Position candidate = position.upstream();
    if (candidate.isCandidate())
        return candidate;
    candidate = position.downstream();
    if (candidate.isCandidate())
        return candidate;

    // When neither upstream or downstream gets us to a candidate (upstream/downstream won&apos;t leave 
    // blocks or enter new ones), we search forward and backward until we find one.
    Position next = canonicalizeCandidate(nextCandidate(position));
    Position prev = canonicalizeCandidate(previousCandidate(position));
    Node* nextNode = next.node();
    Node* prevNode = prev.node();

    // The new position must be in the same editable element. Enforce that first.
    // Unless the descent is from a non-editable html element to an editable body.
    if (node-&gt;hasTagName(htmlTag) &amp;&amp; !node-&gt;isContentEditable())
        return next.isNotNull() ? next : prev;

    Node* editingRoot = editableRootForPosition(position);
        
    // If the html element is editable, descending into its body will look like a descent 
    // from non-editable to editable content since rootEditableElement() always stops at the body.
    if (editingRoot &amp;&amp; editingRoot-&gt;hasTagName(htmlTag) || position.node()-&gt;isDocumentNode())
        return next.isNotNull() ? next : prev;
        
    bool prevIsInSameEditableElement = prevNode &amp;&amp; editableRootForPosition(prev) == editingRoot;
    bool nextIsInSameEditableElement = nextNode &amp;&amp; editableRootForPosition(next) == editingRoot;
    if (prevIsInSameEditableElement &amp;&amp; !nextIsInSameEditableElement)
        return prev;
        
    if (nextIsInSameEditableElement &amp;&amp; !prevIsInSameEditableElement)
        return next;
        
    if (!nextIsInSameEditableElement &amp;&amp; !prevIsInSameEditableElement)
        return Position();

    // The new position should be in the same block flow element. Favor that.
    Node *originalBlock = node-&gt;enclosingBlockFlowElement();
    bool nextIsOutsideOriginalBlock = !nextNode-&gt;isDescendantOf(originalBlock) &amp;&amp; nextNode != originalBlock;
    bool prevIsOutsideOriginalBlock = !prevNode-&gt;isDescendantOf(originalBlock) &amp;&amp; prevNode != originalBlock;
    if (nextIsOutsideOriginalBlock &amp;&amp; !prevIsOutsideOriginalBlock)
        return prev;
        
    return next;
}
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107784</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-30 14:53:55 -0800</bug_when>
    <thetext>I&apos;m very interested in Justin&apos;s comment here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107787</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-30 15:01:45 -0800</bug_when>
    <thetext>I was wrong!  We hit this line:
    if (!nextIsInSameEditableElement &amp;&amp; !prevIsInSameEditableElement)
        return Position();

We might just change that to return &quot;position&quot; instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107791</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-30 15:10:24 -0800</bug_when>
    <thetext>Yay!  Now we&apos;re crashing at:
            if (previous.isNull()) {
                ASSERT_NOT_REACHED();

in Selection::adjustForEditableContent..  sigh.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107802</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-30 16:33:07 -0800</bug_when>
    <thetext>Ha!  This is a regression:
http://trac.webkit.org/browser/trunk/LayoutTests/platform/mac/editing/selection/contenteditable-click-outside-expected.png

We already had a test which was failing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107809</commentid>
    <comment_count>9</comment_count>
      <attachid>27204</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-30 17:54:30 -0800</bug_when>
    <thetext>Created attachment 27204
Fix bugs 23605 and 23607

 LayoutTests/ChangeLog                              |   33 +++++
 ...ick-in-margins-inside-editable-div-expected.txt |   23 ++++
 .../click-in-margins-inside-editable-div.html      |   13 ++
 .../click-outside-editable-div-expected.txt        |   17 +++
 .../selection/click-outside-editable-div.html      |   13 ++
 .../selection/contenteditable-click-outside.html   |   13 --
 .../editing/selection/resources/TEMPLATE.html      |   13 ++
 .../click-in-margins-inside-editable-div.js        |  138 ++++++++++++++++++++
 .../resources/click-outside-editable-div.js        |   50 +++++++
 ...contenteditable-click-outside-expected.checksum |    1 -
 .../contenteditable-click-outside-expected.png     |  Bin 21262 -&gt; 0 bytes
 .../contenteditable-click-outside-expected.txt     |   16 ---
 .../selection/select-all-iframe-expected.txt       |    4 +-
 .../select-from-textfield-outwards-expected.txt    |    2 +-
 .../contenteditable-click-outside-expected.txt     |   12 --
 .../selection/select-all-iframe-expected.txt       |   56 --------
 WebCore/ChangeLog                                  |   28 ++++
 WebCore/editing/VisiblePosition.cpp                |    4 +-
 WebCore/rendering/RenderBlock.cpp                  |  115 +++++++---------
 WebCore/rendering/RenderContainer.cpp              |    3 +-
 WebCore/rendering/RenderInline.cpp                 |    1 +
 21 files changed, 385 insertions(+), 170 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107810</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-30 17:56:27 -0800</bug_when>
    <thetext>The editing delegate changes are not well understood, but I think they&apos;re progressions.  Perhaps when Justing reviews this he can comment on if they look better to him too! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107816</commentid>
    <comment_count>11</comment_count>
      <attachid>27207</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-30 18:26:21 -0800</bug_when>
    <thetext>Created attachment 27207
Fix bugs 23605 and 23607

 LayoutTests/ChangeLog                              |   33 +++++
 ...ick-in-margins-inside-editable-div-expected.txt |   23 ++++
 .../click-in-margins-inside-editable-div.html      |   13 ++
 .../click-outside-editable-div-expected.txt        |   17 +++
 .../selection/click-outside-editable-div.html      |   13 ++
 .../selection/contenteditable-click-outside.html   |   13 --
 .../editing/selection/resources/TEMPLATE.html      |   13 ++
 .../click-in-margins-inside-editable-div.js        |  138 ++++++++++++++++++++
 .../resources/click-outside-editable-div.js        |   50 +++++++
 ...contenteditable-click-outside-expected.checksum |    1 -
 .../contenteditable-click-outside-expected.png     |  Bin 21262 -&gt; 0 bytes
 .../contenteditable-click-outside-expected.txt     |   16 ---
 .../selection/select-all-iframe-expected.txt       |    4 +-
 .../select-from-textfield-outwards-expected.txt    |    2 +-
 .../contenteditable-click-outside-expected.txt     |   12 --
 .../selection/select-all-iframe-expected.txt       |   56 --------
 WebCore/ChangeLog                                  |   28 ++++
 WebCore/editing/VisiblePosition.cpp                |    4 +-
 WebCore/rendering/RenderBlock.cpp                  |  113 +++++++---------
 WebCore/rendering/RenderContainer.cpp              |    3 +-
 WebCore/rendering/RenderInline.cpp                 |    1 +
 21 files changed, 383 insertions(+), 170 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107821</commentid>
    <comment_count>12</comment_count>
      <attachid>27210</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-30 22:12:58 -0800</bug_when>
    <thetext>Created attachment 27210
Fix bugs 23605 and 23607

 LayoutTests/ChangeLog                              |   33 +++++
 ...ick-in-margins-inside-editable-div-expected.txt |   23 ++++
 .../click-in-margins-inside-editable-div.html      |   13 ++
 .../click-outside-editable-div-expected.txt        |   17 +++
 .../selection/click-outside-editable-div.html      |   13 ++
 .../selection/contenteditable-click-outside.html   |   13 --
 .../editing/selection/resources/TEMPLATE.html      |   13 ++
 .../click-in-margins-inside-editable-div.js        |  138 ++++++++++++++++++++
 .../resources/click-outside-editable-div.js        |   50 +++++++
 ...contenteditable-click-outside-expected.checksum |    1 -
 .../contenteditable-click-outside-expected.png     |  Bin 21262 -&gt; 0 bytes
 .../contenteditable-click-outside-expected.txt     |   16 ---
 .../selection/select-all-iframe-expected.txt       |    4 +-
 .../select-from-textfield-outwards-expected.txt    |    2 +-
 .../contenteditable-click-outside-expected.txt     |   12 --
 .../selection/select-all-iframe-expected.txt       |   56 --------
 WebCore/ChangeLog                                  |   28 ++++
 WebCore/editing/VisiblePosition.cpp                |    4 +-
 WebCore/rendering/RenderBlock.cpp                  |  113 +++++++---------
 WebCore/rendering/RenderContainer.cpp              |    3 +-
 WebCore/rendering/RenderInline.cpp                 |    1 +
 21 files changed, 383 insertions(+), 170 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107822</commentid>
    <comment_count>13</comment_count>
      <attachid>27211</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-30 22:14:59 -0800</bug_when>
    <thetext>Created attachment 27211
Fix bugs 23605 and 23607

 LayoutTests/ChangeLog                              |   33 ++++
 ...ick-in-margins-inside-editable-div-expected.txt |   23 +++
 .../click-in-margins-inside-editable-div.html      |   13 ++
 .../click-outside-editable-div-expected.txt        |   17 ++
 .../selection/click-outside-editable-div.html      |   13 ++
 .../selection/contenteditable-click-outside.html   |   13 --
 .../editing/selection/resources/TEMPLATE.html      |   13 ++
 .../click-in-margins-inside-editable-div.js        |  138 ++++++++++++++++
 .../resources/click-outside-editable-div.js        |   50 ++++++
 ...contenteditable-click-outside-expected.checksum |    1 -
 .../contenteditable-click-outside-expected.png     |  Bin 21262 -&gt; 0 bytes
 .../contenteditable-click-outside-expected.txt     |   16 --
 .../selection/select-all-iframe-expected.txt       |    4 +-
 .../select-from-textfield-outwards-expected.txt    |    2 +-
 .../contenteditable-click-outside-expected.txt     |   12 --
 .../selection/select-all-iframe-expected.txt       |   56 -------
 WebCore/ChangeLog                                  |   31 ++++
 WebCore/editing/VisiblePosition.cpp                |    4 +-
 WebCore/rendering/RenderBlock.cpp                  |  174 +++++++++-----------
 WebCore/rendering/RenderContainer.cpp              |    3 +-
 WebCore/rendering/RenderInline.cpp                 |    1 +
 21 files changed, 419 insertions(+), 198 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108067</commentid>
    <comment_count>14</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-02-02 17:35:08 -0800</bug_when>
    <thetext>&gt; The editing delegate changes are not well understood

The change in:

/LayoutTests/platform/mac/editing/selection/select-all-iframe-expected.txt

comes from your fix for 23605 (the x position of the caret that&apos;s created is close to where the mouseDown occurred now instead of after the line of text).  So that&apos;s fine.

But, the change in:

/LayoutTests/platform/mac/editing/selection/select-from-textfield-outwards-expected.txt

leads me to believe that the patch may have caused a regression in behavior when you click inside a text field and drag-select up.  It looks like for a particular position above the textfield, we create the wrong selection.  Check out line 25 of select-from-textfield-outwards:

eventSender.mouseMoveTo(middleX, middleY - field.offsetHeight);

It looks like that used to correspond to this:

EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text &gt; DIV to 12 of #text &gt; DIV toDOMRange:range from 0 of #text &gt; DIV to 12 of #text &gt; DIV affinity:NSSelectionAffinityDownstream stillSelecting:FALSE

which is being replaced by:

EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text &gt; DIV to 12 of #text &gt; DIV toDOMRange:range from 11 of #text &gt; DIV to 17 of #text &gt; DIV affinity:NSSelectionAffinityDownstream stillSelecting:FALSE

which doesn&apos;t seem right.

Also I think:

+// FIXME: This function should could go on RenderObject an instance method then
+// all cases in which positionForCoordinates recurses could call this instead to

should perhaps read &quot;...should go in an RenderObject instance method, then...&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108069</commentid>
    <comment_count>15</comment_count>
      <attachid>27270</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-02-02 17:58:26 -0800</bug_when>
    <thetext>Created attachment 27270
A full git patch for easier applying by ojan (with git am)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108557</commentid>
    <comment_count>16</comment_count>
      <attachid>27371</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-02-05 17:42:18 -0800</bug_when>
    <thetext>Created attachment 27371
Fix positionForCoordinates now with an added fix for clicking in the margins of the body.

 LayoutTests/ChangeLog                              |   31 ++++
 ...ick-in-margins-inside-editable-div-expected.txt |   23 +++
 .../click-in-margins-inside-editable-div.html      |   13 ++
 .../click-outside-editable-div-expected.txt        |   20 +++
 .../selection/click-outside-editable-div.html      |   13 ++
 .../selection/contenteditable-click-outside.html   |   13 --
 .../editing/selection/resources/TEMPLATE.html      |   13 ++
 .../click-in-margins-inside-editable-div.js        |  138 ++++++++++++++++
 .../resources/click-outside-editable-div.js        |   55 ++++++
 .../editing/selection/select-missing-image.html    |    2 +-
 ...contenteditable-click-outside-expected.checksum |    1 -
 .../contenteditable-click-outside-expected.txt     |   16 --
 .../selection/select-all-iframe-expected.txt       |    4 +-
 .../select-from-textfield-outwards-expected.txt    |    2 +-
 .../selection/select-missing-image-expected.txt    |    3 +-
 .../contenteditable-click-outside-expected.txt     |   12 --
 .../selection/select-all-iframe-expected.txt       |   56 -------
 WebCore/ChangeLog                                  |   29 ++++
 WebCore/editing/VisiblePosition.cpp                |    6 +-
 WebCore/rendering/RenderBlock.cpp                  |  174 +++++++++-----------
 WebCore/rendering/RenderInline.cpp                 |    1 +
 21 files changed, 426 insertions(+), 199 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108558</commentid>
    <comment_count>17</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-02-05 17:50:43 -0800</bug_when>
    <thetext>WRT LayoutTests/platform/mac/editing/selection/select-from-textfield-outwards-expected.txt, I think the new behavior is very similar to the old behavior. Specifically, they both have a bug where if you click from the middle of a textfield and drag upwards, at first it selects to the end of the textfield, then at some point selects to the beginning (from the middle). The only difference is where the switch happens. In the old code, it&apos;s somewhere in the middle of the margin. In the new code, it&apos;s at the top of the margin. This is a separate bug that should be fixed so that we always select from the middle to the beginning of the textfield, or that we do the IE behavior and ignore that you&apos;re above the field and continue selecting text as you drag in the x-axis.

WRT LayoutTests/editing/selection/select-missing-image.html. It relied on the old buggy behavior. A execCommand(SelectAll) on a selection that *contains* a contentEditable div should not select the contents of the div. So the new behavior is more correct. My change to the test is to give it an ID that matches the rest of the selection tests, which correctly puts focus inside the div before calling the execCommand. It still tests the original goal that a missing image properly shows it&apos;s selected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109227</commentid>
    <comment_count>18</comment_count>
      <attachid>27371</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-02-10 17:48:10 -0800</bug_when>
    <thetext>Comment on attachment 27371
Fix positionForCoordinates now with an added fix for clicking in the margins of the body.

&gt; --- a/WebCore/editing/VisiblePosition.cpp
&gt; +++ b/WebCore/editing/VisiblePosition.cpp
&gt; @@ -478,7 +478,7 @@ Position VisiblePosition::canonicalPosition(const Position&amp; position)
&gt;  
&gt;      // The new position must be in the same editable element. Enforce that first.
&gt;      // Unless the descent is from a non-editable html element to an editable body.
&gt; -    if (node-&gt;hasTagName(htmlTag) &amp;&amp; !node-&gt;isContentEditable())
&gt; +    if (node-&gt;hasTagName(htmlTag) &amp;&amp; !node-&gt;isContentEditable() &amp;&amp; node-&gt;ownerDocument()-&gt;body()-&gt;isContentEditable())
&gt;          return next.isNotNull() ? next : prev;
&gt;  

I think body() can be null in certain circumstances but am not positive.


&gt; +// FIXME: This function should could go on RenderObject an instance method then
&gt; +// all cases in which positionForCoordinates recurses could call this instead to
&gt; +// prevent crossing editable boundaries.  This would require many tests!

Can you clean up the comment?  &quot;should could&quot; and did you mean &quot;as an instance method&quot;?  I think &quot;recurs&quot; is easier to read
than &quot;recurses&quot;.  Same for other places where you say &quot;recurse&quot; (I&apos;d just say &quot;recur.&quot;)

&gt; +static VisiblePosition positionForPointRespectingEditingBoundaries(RenderBox* parent, RenderBox* child, const IntPoint&amp; parentCoords)
&gt; +{
&gt; +    int xInChildCoords = parentCoords.x() - child-&gt;x();
&gt; +    int yInChildCoords = parentCoords.y() - child-&gt;y();
&gt; +
&gt; +    // If this is an anonymous renderer, we just recurse normally
&gt; +    Node* childNode = child-&gt;element();
&gt; +    if (!childNode)
&gt; +        return child-&gt;positionForCoordinates(xInChildCoords, yInChildCoords);
&gt; +
&gt; +    // Otherwise, first make sure that the editability of the parent and child agree!

I don&apos;t think the ! is necessary here. I mean, it&apos;s just editing code. It&apos;s not *that* exciting.

&gt; +    // If they don&apos;t agree, then we return a visible position just before or after the child
&gt; +    RenderObject* ancestor = parent;
&gt; +    while (ancestor &amp;&amp; !ancestor-&gt;element())
&gt; +        ancestor = ancestor-&gt;parent();
&gt; +    
&gt; +    // If we can&apos;t find an ancestor to check editability on, or editibility is unchanged, we recurse like normal

Typo. &quot;editibility&quot; should be &quot;editability&quot;

&gt; +VisiblePosition positionForPointWithInlineChildren(RenderBlock* block, const IntPoint&amp; pointInContents, int xInParentCoords)

Should be static.

&gt; +{
&gt; +    ASSERT(block-&gt;childrenInline());
&gt; +
&gt; +    if (!block-&gt;firstRootBox())
&gt; +        return VisiblePosition(block-&gt;element(), 0, DOWNSTREAM);
&gt; +
&gt; +    // look for the closest line box in the root box which is at the passed-in y coordinate
&gt; +    for (RootInlineBox* root = block-&gt;firstRootBox(); root; root = root-&gt;nextRootBox()) {
&gt; +        int bottom;
&gt; +        // set the bottom based on whether there is a next root box
&gt; +        if (root-&gt;nextRootBox())
&gt; +            // FIXME: make the break point halfway between the bottom of the previous root box and the top of the next root box
&gt; +            bottom = root-&gt;nextRootBox()-&gt;topOverflow();
&gt; +        else
&gt; +            bottom = root-&gt;bottomOverflow() + verticalLineClickFudgeFactor;
&gt; +        // check if this root line box is located at this y coordinate
&gt; +        if (pointInContents.y() &lt; bottom &amp;&amp; root-&gt;firstChild()) {
&gt; +            // FIXME: It seems like a bug that this function needs xInParentCoords
&gt; +            InlineBox* closestBox = root-&gt;closestLeafChildForXPos(xInParentCoords);

It does indeed seem like a bug at first glance.  Please make sure to split out a followup bug on this issue.


&gt; diff --git a/WebCore/rendering/RenderInline.cpp b/WebCore/rendering/RenderInline.cpp
&gt; index 8f09fc7..e8ee55d 100644
&gt; --- a/WebCore/rendering/RenderInline.cpp
&gt; +++ b/WebCore/rendering/RenderInline.cpp
&gt; @@ -485,6 +485,7 @@ VisiblePosition RenderInline::positionForCoordinates(int x, int y)
&gt;      while (c) {
&gt;          RenderBox* contBlock = c;
&gt;          if (c-&gt;isInline() || c-&gt;firstChild())
&gt; +            // The continuations (anonymous blocks) will never be editable, so we don&apos;t need to worry about crossing editable boundaries here.
&gt;              return c-&gt;positionForCoordinates(parentBlockX - contBlock-&gt;x(), parentBlockY - contBlock-&gt;y());
&gt;          c = toRenderBlock(c)-&gt;inlineContinuation();
&gt;      }

Just revert this change please.  I think the comment here is more confusing than helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109573</commentid>
    <comment_count>19</comment_count>
      <attachid>27626</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-02-12 16:02:03 -0800</bug_when>
    <thetext>Created attachment 27626
Fix for clicking below the last root line box with multiple line boxes.

 LayoutTests/ChangeLog                              |   35 ++++
 ...ick-in-margins-inside-editable-div-expected.txt |   23 +++
 .../click-in-margins-inside-editable-div.html      |   14 ++
 ...n-padding-with-multiple-line-boxes-expected.txt |   11 ++
 .../click-in-padding-with-multiple-line-boxes.html |   14 ++
 .../click-outside-editable-div-expected.txt        |   20 ++
 .../selection/click-outside-editable-div.html      |   14 ++
 .../selection/contenteditable-click-outside.html   |   13 --
 .../editing/selection/resources/TEMPLATE.html      |   14 ++
 .../click-in-margins-inside-editable-div.js        |   93 ++++++++++
 .../click-in-padding-with-multiple-line-boxes.js   |   62 +++++++
 .../resources/click-outside-editable-div.js        |   49 +++++
 .../resources/js-test-selection-shared.js          |   44 +++++
 .../editing/selection/select-missing-image.html    |    2 +-
 ...contenteditable-click-outside-expected.checksum |    1 -
 .../contenteditable-click-outside-expected.txt     |   16 --
 .../selection/select-all-iframe-expected.txt       |    4 +-
 .../select-from-textfield-outwards-expected.txt    |    2 +-
 .../selection/select-missing-image-expected.txt    |    3 +-
 .../contenteditable-click-outside-expected.txt     |   12 --
 .../selection/select-all-iframe-expected.txt       |   56 ------
 WebCore/ChangeLog                                  |   29 +++
 WebCore/editing/VisiblePosition.cpp                |   10 +-
 WebCore/rendering/RenderBlock.cpp                  |  184 ++++++++++----------
 24 files changed, 525 insertions(+), 200 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109574</commentid>
    <comment_count>20</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-02-12 16:06:37 -0800</bug_when>
    <thetext>All addressed.

Two issues:
1. If the body was null, I wasn&apos;t really sure what to do. returning Position() seems like the only option though. All the layout tests still pass, but I doubt we have any that test a null body.
2. I just went ahead and fixed the FIXME you wanted me to file a bug for. Added a layout test for that case as well. In the process, found a bug this code was about to introduce. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109710</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-02-13 11:27:02 -0800</bug_when>
    <thetext>*** Bug 23605 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110012</commentid>
    <comment_count>22</comment_count>
      <attachid>27626</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-02-17 14:48:22 -0800</bug_when>
    <thetext>Comment on attachment 27626
Fix for clicking below the last root line box with multiple line boxes.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110797</commentid>
    <comment_count>23</comment_count>
      <attachid>27927</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-02-24 13:25:45 -0800</bug_when>
    <thetext>Created attachment 27927
Same patch, but synced to trunk for easier landing by eseidel.

 LayoutTests/ChangeLog                              |   35 ++++
 ...ick-in-margins-inside-editable-div-expected.txt |   23 +++
 .../click-in-margins-inside-editable-div.html      |   14 ++
 ...n-padding-with-multiple-line-boxes-expected.txt |   11 ++
 .../click-in-padding-with-multiple-line-boxes.html |   14 ++
 .../click-outside-editable-div-expected.txt        |   20 ++
 .../selection/click-outside-editable-div.html      |   14 ++
 .../selection/contenteditable-click-outside.html   |   13 --
 .../editing/selection/resources/TEMPLATE.html      |   14 ++
 .../click-in-margins-inside-editable-div.js        |   93 ++++++++++
 .../click-in-padding-with-multiple-line-boxes.js   |   62 +++++++
 .../resources/click-outside-editable-div.js        |   49 +++++
 .../resources/js-test-selection-shared.js          |   44 +++++
 .../editing/selection/select-missing-image.html    |    2 +-
 ...contenteditable-click-outside-expected.checksum |    1 -
 .../contenteditable-click-outside-expected.txt     |   16 --
 .../selection/select-all-iframe-expected.txt       |    4 +-
 .../select-from-textfield-outwards-expected.txt    |    2 +-
 .../selection/select-missing-image-expected.txt    |    3 +-
 .../contenteditable-click-outside-expected.txt     |   12 --
 .../selection/select-all-iframe-expected.txt       |   56 ------
 WebCore/ChangeLog                                  |   29 +++
 WebCore/editing/VisiblePosition.cpp                |   10 +-
 WebCore/rendering/RenderBlock.cpp                  |  184 ++++++++++----------
 24 files changed, 525 insertions(+), 200 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110802</commentid>
    <comment_count>24</comment_count>
      <attachid>27929</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-02-24 13:32:51 -0800</bug_when>
    <thetext>Created attachment 27929
patch made with git format-patch for even easier patching by eseidel. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110818</commentid>
    <comment_count>25</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-02-24 14:28:44 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	D	LayoutTests/editing/selection/contenteditable-click-outside.html
	D	LayoutTests/platform/mac/editing/selection/contenteditable-click-outside-expected.checksum
	D	LayoutTests/platform/mac/editing/selection/contenteditable-click-outside-expected.txt
	D	LayoutTests/platform/qt/editing/selection/contenteditable-click-outside-expected.txt
	D	LayoutTests/platform/qt/editing/selection/select-all-iframe-expected.txt
	M	LayoutTests/ChangeLog
	A	LayoutTests/editing/selection/click-in-margins-inside-editable-div-expected.txt
	A	LayoutTests/editing/selection/click-in-margins-inside-editable-div.html
	A	LayoutTests/editing/selection/click-in-padding-with-multiple-line-boxes-expected.txt
	A	LayoutTests/editing/selection/click-in-padding-with-multiple-line-boxes.html
	A	LayoutTests/editing/selection/click-outside-editable-div-expected.txt
	A	LayoutTests/editing/selection/click-outside-editable-div.html
	A	LayoutTests/editing/selection/resources/TEMPLATE.html
	A	LayoutTests/editing/selection/resources/click-in-margins-inside-editable-div.js
	A	LayoutTests/editing/selection/resources/click-in-padding-with-multiple-line-boxes.js
	A	LayoutTests/editing/selection/resources/click-outside-editable-div.js
	A	LayoutTests/editing/selection/resources/js-test-selection-shared.js
	M	LayoutTests/editing/selection/select-missing-image.html
	M	LayoutTests/platform/mac/editing/selection/select-all-iframe-expected.txt
	M	LayoutTests/platform/mac/editing/selection/select-from-textfield-outwards-expected.txt
	M	LayoutTests/platform/mac/editing/selection/select-missing-image-expected.txt
	M	WebCore/ChangeLog
	M	WebCore/editing/VisiblePosition.cpp
	M	WebCore/rendering/RenderBlock.cpp
Committed r41191
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>27133</attachid>
            <date>2009-01-28 16:16:01 -0800</date>
            <delta_ts>2009-01-28 16:16:01 -0800</delta_ts>
            <desc>js portion of test case</desc>
            <filename>click-outside-editable-div.js</filename>
            <type>application/x-javascript</type>
            <size>1440</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGVzY3JpcHRpb24oIiIpCgpkb2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpbiA9ICIwcHgiOwoKdmFy
IG91dGVyRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cm91dGVyRGl2LnN0eWxl
LmNzc1RleHQgPSAid2lkdGg6IDEwMHB4OyBwYWRkaW5nOiAxMDBweDsgYmFja2dyb3VuZC1jb2xv
cjogYmx1ZTsiOwp2YXIgaW5uZXJEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
aW5uZXJEaXYuc3R5bGUuY3NzVGV4dCA9ICJoZWlnaHQ6IDEwMHB4OyBib3JkZXI6IDFweCBzb2xp
ZCBwaW5rOyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiOwppbm5lckRpdi5jb250ZW50RWRpdGFi
bGUgPSB0cnVlOwpvdXRlckRpdi5hcHBlbmRDaGlsZChpbm5lckRpdik7CmRvY3VtZW50LmJvZHku
aW5zZXJ0QmVmb3JlKG91dGVyRGl2LCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOwoKdmFyIGxh
c3RDbGlja0NhdXNlZEZvY3VzID0gZmFsc2U7CmRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5l
cigibW91c2V1cCIsIGZ1bmN0aW9uKGUpIHsKICAgIHZhciBsYXN0Q2xpY2sgPSBlIHx8IHdpbmRv
dy5ldmVudDsKICAgIGlmIChsYXN0Q2xpY2tDYXVzZWRGb2N1cykgewogICAgICAgIHRlc3RGYWls
ZWQoIkNsaWNrIEAgIiArIGxhc3RDbGljay5jbGllbnRYICsgIiwgIiArIGxhc3RDbGljay5jbGll
bnRZICsgIiBjYXVzZWQgaW5uZXJkaXYgdG8gZm9jdXMhIik7CiAgICB9IGVsc2UgewogICAgICAg
IHRlc3RQYXNzZWQoIkNsaWNrIEAgIiArIGxhc3RDbGljay5jbGllbnRYICsgIiwgIiArIGxhc3RD
bGljay5jbGllbnRZICsgIiBkaWQgbm90IGNhdXNlIGZvY3VzLiIpOwogICAgfQogICAgaW5uZXJE
aXYuYmx1cigpOwogICAgbGFzdENsaWNrQ2F1c2VkRm9jdXMgPSBmYWxzZTsKfSwgZmFsc2UpOwoK
aW5uZXJEaXYuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCBmdW5jdGlvbigpIHsKICAgIGxhc3RD
bGlja0NhdXNlZEZvY3VzID0gdHJ1ZTsKfSwgZmFsc2UpOwoKZnVuY3Rpb24gY2xpY2tBdCh4LCB5
KSB7CiAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOwogICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwp9CgppZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CiAgICBjbGlja0F0KDUwLCA1MCk7CiAgICBjbGlja0F0KDE1MCwgNTApOwogICAg
Y2xpY2tBdCgyNTAsIDUwKTsKCiAgICBjbGlja0F0KDUwLCAxNTApOwogICAgY2xpY2tBdCgyNTAs
IDE1MCk7CgogICAgY2xpY2tBdCg1MCwgMjUwKTsKICAgIGNsaWNrQXQoMTUwLCAyNTApOwogICAg
Y2xpY2tBdCgyNTAsIDI1MCk7IAp9IGVsc2UgewogICAgZGVidWcoIkNsaWNrIGluIGFsbCA4IHJl
Z2lvbnMgYXJvdW5kIHRoZSBncmVlbiBkaXYgdG8gdGVzdC4iKTsKfQoKdmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27196</attachid>
            <date>2009-01-30 14:50:08 -0800</date>
            <delta_ts>2009-01-30 17:53:41 -0800</delta_ts>
            <desc>First pass testcases for bug 23605 and bug 23607</desc>
            <filename>First-pass-testcases-for-bug-23605-and-bug-23607.patch</filename>
            <type>text/plain</type>
            <size>10067</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">NWRkNjRmNjA4OTExODRiZjE2OWZmNGJhOWYxMmEzNWVmZmZkY2NlYQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFi
bGUtZGl2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNr
LWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFjYTNlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxl
LWRpdi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
NTM6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBmaXJzdFRleHQKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitGQUlMIHN1Y2Nlc3NmdWxseVBhcnNlZCBzaG91bGQg
YmUgdHJ1ZSAob2YgdHlwZSBib29sZWFuKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlwZSB1bmRlZmlu
ZWQpLgorCitURVNUIENPTVBMRVRFCiswMAorMTEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5odG1s
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUt
ZWRpdGFibGUtZGl2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg0
NjczMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Ns
aWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5odG1sCkBAIC0wLDAgKzEsMTMgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTliMDQx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2st
b3V0c2lkZS1lZGl0YWJsZS1kaXYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIENsaWNrIEAgNTAsIDUwIGRpZCBub3QgY2F1
c2UgZm9jdXMuCitQQVNTIENsaWNrIEAgMTUwLCA1MCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFT
UyBDbGljayBAIDI1MCwgNTAgZGlkIG5vdCBjYXVzZSBmb2N1cy4KK0ZBSUwgQ2xpY2sgQCA1MCwg
MTUwIGNhdXNlZCBpbm5lcmRpdiB0byBmb2N1cyEKK0ZBSUwgQ2xpY2sgQCAyNTAsIDE1MCBjYXVz
ZWQgaW5uZXJkaXYgdG8gZm9jdXMhCitGQUlMIENsaWNrIEAgNTAsIDI1MCBjYXVzZWQgaW5uZXJk
aXYgdG8gZm9jdXMhCitGQUlMIENsaWNrIEAgMTUwLCAyNTAgY2F1c2VkIGlubmVyZGl2IHRvIGZv
Y3VzIQorRkFJTCBDbGljayBAIDI1MCwgMjUwIGNhdXNlZCBpbm5lcmRpdiB0byBmb2N1cyEKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1vdXRzaWRlLWVkaXRhYmxl
LWRpdi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stb3V0c2lkZS1l
ZGl0YWJsZS1kaXYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDU1
OWEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xp
Y2stb3V0c2lkZS1lZGl0YWJsZS1kaXYuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9j
bGljay1vdXRzaWRlLWVkaXRhYmxlLWRpdi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291
cmNlcy9URU1QTEFURS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3Vy
Y2VzL1RFTVBMQVRFLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBj
ZTU2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jl
c291cmNlcy9URU1QTEFURS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iWU9VUl9KU19GSUxFX0hFUkUi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2staW4tbWFyZ2lucy1pbnNpZGUt
ZWRpdGFibGUtZGl2LmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2Vz
L2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5lMTMzOWUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVk
aXRhYmxlLWRpdi5qcwpAQCAtMCwwICsxLDEzNSBAQAorZGVzY3JpcHRpb24oIiIpCisKK2RvY3Vt
ZW50LmJvZHkuc3R5bGUubWFyZ2luID0gMDsKKwordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworZGl2LnN0eWxlLmNzc1RleHQgPSAiZm9udC1mYW1pbHk6IGFoZW07IGZv
bnQtc2l6ZTogMjBweDsgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHllbGxvdzsgd2lkdGg6IDQw
cHg7IGhlaWdodDogMTkwcHg7IHBhZGRpbmc6IDIwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVu
OyI7CitkaXYuY29udGVudEVkaXRhYmxlID0gdHJ1ZTsKKwordmFyIGZpcnN0VGV4dCA9IGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCJYWCIpOwordmFyIGZpcnN0RGl2ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CitmaXJzdERpdi5hcHBlbmRDaGlsZChmaXJzdFRleHQpOworZmlyc3RE
aXYuc3R5bGUuY3NzVGV4dCA9ICJwYWRkaW5nLWJvdHRvbTogMTlweDsgYm9yZGVyLWJvdHRvbTog
MXB4IHNvbGlkIHBpbms7IG1hcmdpbi1ib3R0b206IDIwcHgiOworZGl2LmFwcGVuZENoaWxkKGZp
cnN0RGl2KTsKKwordmFyIHNlY29uZFRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiWVki
KTsKK3ZhciBzZWNvbmREaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK3NlY29u
ZERpdi5zdHlsZS5jc3NUZXh0ID0gIm1hcmdpbi10b3A6IDUwcHgiOworc2Vjb25kRGl2LmFwcGVu
ZENoaWxkKHNlY29uZFRleHQpOworZGl2LmFwcGVuZENoaWxkKHNlY29uZERpdik7CisKK2RvY3Vt
ZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRpdiwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKKwor
ZnVuY3Rpb24gb2JqZWN0QXNTdHJpbmcob2JqZWN0LCBwcm9wZXJ0aWVzKSB7CisgICAgdmFyIHJl
c3VsdCA9ICJbIjsKKyAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHByb3BlcnRpZXMubGVuZ3RoOyB4
KyspIHsKKyAgICAgICAgdmFyIHByb3BlcnR5ID0gcHJvcGVydGllc1t4XTsKKyAgICAgICAgaWYg
KHggIT0gMCkKKyAgICAgICAgICAgIHJlc3VsdCArPSAiICI7CisKKyAgICAgICAgdmFyIHZhbHVl
ID0gb2JqZWN0W3Byb3BlcnR5XTsKKyAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLm5vZGVUeXBl
KSAvLyB0ZXh0Tm9kZQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSArICIoICIgKyB2YWx1ZS5u
b2RlVmFsdWUgKyAiICkiOworCisgICAgICAgIHJlc3VsdCArPSBwcm9wZXJ0eSArICI6ICIgKyB2
YWx1ZTsKKyAgICB9CisgICAgcmVzdWx0ICs9ICddJzsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitmdW5jdGlvbiBzZWxlY3Rpb25Bc1N0cmluZyhzZWwpCit7CisgICAgdmFyIHByb3BlcnRpZXMg
PSBbJ2FuY2hvck5vZGUnLCAnYW5jaG9yT2Zmc2V0JywgJ2ZvY3VzTm9kZScsICdmb2N1c09mZnNl
dCcsICdpc0NvbGxhcHNlZCddOyAgIAorICAgIHJldHVybiBvYmplY3RBc1N0cmluZyhzZWwsIHBy
b3BlcnRpZXMpOworfQorCitmdW5jdGlvbiBhc3NlcnRSYW5nZShub2RlLCBvZmZzZXQpIHsKKyAg
ICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgIGlmIChzZWwuYW5jaG9yTm9k
ZSA9PSBub2RlCisgICAgICAgICYmIHNlbC5mb2N1c05vZGUgPT0gbm9kZQorICAgICAgICAmJiBz
ZWwuYW5jaG9yT2Zmc2V0ID09IG9mZnNldAorICAgICAgICAmJiBzZWwuZm9jdXNPZmZzZXQgPT0g
b2Zmc2V0CisgICAgICAgICYmIHNlbC5pc0NvbGxhcHNlZCkgeworICAgICAgICB0ZXN0UGFzc2Vk
KCJTZWxlY3Rpb24gaXMgYXQgbm9kZTogIiArIG5vZGUgKyAiIG9mZnNldDogIiArIG9mZnNldCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiU2VsZWN0aW9uIGlzICIgKyBzZWxl
Y3Rpb25Bc1N0cmluZyhzZWwpICsgIiBzaG91bGQgYmUgYXQgbm9kZTogIiArIG5vZGUgKyAiIG9m
ZnNldDogIiArIG9mZnNldCk7CisgICAgfQorICAgIAorfQorCitmdW5jdGlvbiBjbGljayh4LCB5
KSB7CisgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyh4LCB5KTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
fQorCitmdW5jdGlvbiBjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoeCwgeSwgbm9kZSwgb2Zmc2V0
KSB7CisgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBjbGljayh4LCB5KTsK
KyAgICAgICAgYXNzZXJ0UmFuZ2Uobm9kZSwgb2Zmc2V0KTsKKyAgICB9IGVsc2UgeworICAgICAg
ICB0ZXN0cy5wdXNoKHsKKyAgICAgICAgICAgIHRlc3RGdW5jdGlvbjogZnVuY3Rpb24oKSB7IGFz
c2VydFJhbmdlKG5vZGUsIG9mZnNldCk7IH0sCisgICAgICAgICAgICBjbGlja1N0cmluZzogIiAi
ICsgeCArICIsICIgKyB5IH0KKyAgICAgICAgKQorICAgIH0KK30KKworZnVuY3Rpb24gcHJpbnRD
bGlja1N0cmluZ0ZvcldhaXRpbmdUZXN0KCkKK3sKKyAgICBpZiAoIXRlc3RzW3Rlc3RJbmRleF0p
CisgICAgICAgIHJldHVybjsKKyAgICBkZWJ1ZygiV2FpdGluZyBmb3IgY2xpY2sgQCAiICsgdGVz
dHNbdGVzdEluZGV4XS5jbGlja1N0cmluZyk7Cit9CisKK3ZhciB0ZXN0SW5kZXggPSAwOwordmFy
IHRlc3RzID0gW107CitmdW5jdGlvbiBydW5JbnRlcmFjdGl2ZVRlc3RzSWZOZWVkZWQoKQorewor
ICAgIHRlc3RJbmRleCA9IDA7CisgICAgcHJpbnRDbGlja1N0cmluZ0ZvcldhaXRpbmdUZXN0KCk7
CisgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgZnVuY3Rpb24o
KSB7CisgICAgICAgIGRlYnVnKCJHb3QgY2xpY2sgQCAiICsgZXZlbnQuY2xpZW50WCArICIsICIg
KyBldmVudC5jbGllbnRZKTsKKyAgICAgICAgdmFyIHRlc3QgPSB0ZXN0c1t0ZXN0SW5kZXhdOwor
ICAgICAgICBpZiAodGVzdCkgeworICAgICAgICAgICAgdGVzdC50ZXN0RnVuY3Rpb24oKTsKKyAg
ICAgICAgICAgIHRlc3RJbmRleCsrOworICAgICAgICAgICAgcHJpbnRDbGlja1N0cmluZ0Zvcldh
aXRpbmdUZXN0KCk7CisgICAgICAgIH0KKyAgICB9LCBmYWxzZSk7Cit9CisKKy8vIFdoZW4gY2xp
Y2tpbmcgYmV0d2VlbiBkaXZzIHNlcGFyYXRlZCBieSBtYXJnaW5zIGluIGFuIGVkaXRhYmxlCisv
LyB0ZXh0IHJlZ2lvbiwgdGhlIGJyb3dzZXJzIGRpZmZlciBpbiBiZWhhdmlvcjoKKy8vIEZGMzog
dmVydGljYWwgcGFkZGluZyBib3ggKyBzb21lIHNvcnQgb2Ygb3ZlcmhhbmcgZGVjZW50PworLy8g
SUU2L0lFNzogdmVydGljYWwgcGFkZGluZyBib3gKKy8vIElFOCBiMjogbWFyZ2luIGJveAorLy8g
U2FmYXJpMzogbWFyZ2luIGJveCAoYnV0IGN1cnNvciBnb2VzIGF0IGVuZCBvZiBsaW5lKQorCitj
bGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoMTAsIDEwLCBmaXJzdFRleHQsIDApOworY2xpY2tTaG91
bGRSZXN1bHRJblJhbmdlKDQwLCAxMCwgZmlyc3RUZXh0LCAxKTsKK2NsaWNrU2hvdWxkUmVzdWx0
SW5SYW5nZSg3MCwgMTAsIGZpcnN0VGV4dCwgMik7CisKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5n
ZSgxMCwgMzAsIGZpcnN0VGV4dCwgMCk7CitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNzAsIDMw
LCBmaXJzdFRleHQsIDIpOworCitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoMTAsIDUwLCBmaXJz
dFRleHQsIDApOworY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKDQwLCA1MCwgZmlyc3RUZXh0LCAx
KTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSg3MCwgNTAsIGZpcnN0VGV4dCwgMik7CisKKy8v
IFdlJ3JlIGdvaW5nIHRvIGZvbGxvdyBJRSA3J3MgYmVoYXZpb3IgYW5kIHVzZSB0aGUgcGFkZGlu
ZyBib3ggaGVpZ2h0CisvLyBmb3IgZGV0ZXJtaW5pbmcgaWYgdGhlIGNsaWNrIGJlbG93IGEgZGl2
IChpbiB0aGUgcGFkZGluZy9tYXJnaW4gcmVnaW9uKQorY2xpY2tTaG91bGRSZXN1bHRJblJhbmdl
KDEwLCA3MCwgc2Vjb25kVGV4dCwgMCk7CitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNDAsIDcw
LCBzZWNvbmRUZXh0LCAxKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSg3MCwgNzAsIHNlY29u
ZFRleHQsIDIpOworCitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoMTAsIDExMCwgc2Vjb25kVGV4
dCwgMCk7CitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNDAsIDExMCwgc2Vjb25kVGV4dCwgMSk7
CitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNzAsIDExMCwgc2Vjb25kVGV4dCwgMik7CisKK3J1
bkludGVyYWN0aXZlVGVzdHNJZk5lZWRlZCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2stb3V0c2lkZS1lZGl0YWJsZS1kaXYu
anMgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2stb3V0c2lk
ZS1lZGl0YWJsZS1kaXYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMx
M2MwMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jl
c291cmNlcy9jbGljay1vdXRzaWRlLWVkaXRhYmxlLWRpdi5qcwpAQCAtMCwwICsxLDUwIEBACitk
ZXNjcmlwdGlvbigiIikKKworZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW4gPSAiMHB4IjsKKwor
dmFyIG91dGVyRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitvdXRlckRpdi5z
dHlsZS5jc3NUZXh0ID0gIndpZHRoOiAxMDBweDsgcGFkZGluZzogMTAwcHg7IGJhY2tncm91bmQt
Y29sb3I6IGJsdWU7IjsKK3ZhciBpbm5lckRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworaW5uZXJEaXYuc3R5bGUuY3NzVGV4dCA9ICJoZWlnaHQ6IDEwMHB4OyBib3JkZXI6IDFw
eCBzb2xpZCBwaW5rOyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiOworaW5uZXJEaXYuY29udGVu
dEVkaXRhYmxlID0gdHJ1ZTsKK291dGVyRGl2LmFwcGVuZENoaWxkKGlubmVyRGl2KTsKK2RvY3Vt
ZW50LmJvZHkuaW5zZXJ0QmVmb3JlKG91dGVyRGl2LCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQp
OworCit2YXIgbGFzdENsaWNrQ2F1c2VkRm9jdXMgPSBmYWxzZTsKK2RvY3VtZW50LmJvZHkuYWRk
RXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIGZ1bmN0aW9uKGUpIHsKKyAgICB2YXIgbGFzdENsaWNr
ID0gZSB8fCB3aW5kb3cuZXZlbnQ7CisgICAgaWYgKGxhc3RDbGlja0NhdXNlZEZvY3VzKSB7Cisg
ICAgICAgIHRlc3RGYWlsZWQoIkNsaWNrIEAgIiArIGxhc3RDbGljay5jbGllbnRYICsgIiwgIiAr
IGxhc3RDbGljay5jbGllbnRZICsgIiBjYXVzZWQgaW5uZXJkaXYgdG8gZm9jdXMhIik7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiQ2xpY2sgQCAiICsgbGFzdENsaWNrLmNsaWVu
dFggKyAiLCAiICsgbGFzdENsaWNrLmNsaWVudFkgKyAiIGRpZCBub3QgY2F1c2UgZm9jdXMuIik7
CisgICAgfQorICAgIGlubmVyRGl2LmJsdXIoKTsKKyAgICBsYXN0Q2xpY2tDYXVzZWRGb2N1cyA9
IGZhbHNlOworfSwgZmFsc2UpOworCitpbm5lckRpdi5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIs
IGZ1bmN0aW9uKCkgeworICAgIGxhc3RDbGlja0NhdXNlZEZvY3VzID0gdHJ1ZTsKK30sIGZhbHNl
KTsKKworZnVuY3Rpb24gY2xpY2tBdCh4LCB5KSB7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOworfQorCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgY2xpY2tBdCg1
MCwgNTApOworICAgIGNsaWNrQXQoMTUwLCA1MCk7CisgICAgY2xpY2tBdCgyNTAsIDUwKTsKKwor
ICAgIGNsaWNrQXQoNTAsIDE1MCk7CisgICAgY2xpY2tBdCgyNTAsIDE1MCk7CisKKyAgICBjbGlj
a0F0KDUwLCAyNTApOworICAgIGNsaWNrQXQoMTUwLCAyNTApOworICAgIGNsaWNrQXQoMjUwLCAy
NTApOyAKK30gZWxzZSB7CisgICAgZGVidWcoIkNsaWNrIGluIGFsbCA4IHJlZ2lvbnMgYXJvdW5k
IHRoZSBncmVlbiBkaXYgdG8gdGVzdC4iKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27197</attachid>
            <date>2009-01-30 14:50:09 -0800</date>
            <delta_ts>2009-01-30 17:53:48 -0800</delta_ts>
            <desc>First pass fix, Position::cannonicalPosition still seems to break us</desc>
            <filename>First-pass-fix-Position-cannonicalPosition-still-seems-to-break-us.patch</filename>
            <type>text/plain</type>
            <size>9454</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">YTU2NDhlZjhiMjdjNzNkMDc2ZDZhOGQxZjY0ZWVhNWQxNmM2NTI1ZApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCmluZGV4IDQ5OTY5ZGEuLmIyN2YzOWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKQEAgLTMzMjQsMTcgKzMzMjQsNDUgQEAgUG9zaXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0
aW9uRm9yUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgYm9vbCBzdGFydCkgY28KICAg
ICByZXR1cm4gUG9zaXRpb24obm9kZSwgb2Zmc2V0KTsKIH0KIAorc3RhdGljIFZpc2libGVQb3Np
dGlvbiBwb3NpdGlvbkZvckNvb3JkaW5hdGVzSW5DaGlsZChSZW5kZXJCb3gqIHBhcmVudCwgUmVu
ZGVyQm94KiBjaGlsZCwgaW50IHhJblBhcmVudENvb3JkcywgaW50IHlJblBhcmVudENvb3JkcykK
K3sKKy8vICAgIGludCByZXN0cmljdGVkWCA9IHhJblBhcmVudENvb3JkcyAtIGNoaWxkLT54KCk7
CisvLyAgICByZXN0cmljdGVkWCA9IG1heChtaW4ocmVzdHJpY3RlZFgsIGNoaWxkLT53aWR0aCgp
KSwgMCk7CisgICAgLy8gUHJldGVuZCB0aGF0IHdoZXJldmVyIHdlIGhpdCAibmVhciIgdGhlIGNo
aWxkLCBhY3R1YWxseSBoaXQgdGhlIGNoaWxkCisgICAgLy8gaW5zaWRlIHsoMCwwKSwgKHdpZHRo
KCksIGhlaWdodCgpKX0uICBNZWFuaW5nLCBpZiB5b3UgaGl0IGJlbG93IGEgbGluZSwgYnV0Cisg
ICAgLy8gaW4gdGhlIHgtbWlkZGxlIG9mIHRoZSBsaW5lLCB0aGUgY3Vyc29yIHdpbGwgYmUgb24g
dGhlIGxpbmUgaW4gdGhlIG1pZGRsZS4KKyAgICAvLyBGSVhNRTogTmVlZHMgdG8gYmUgZWRpdGlu
Zy1hd2FyZSByZWN1cnNlIG1ldGhvZAorCisgICAgaW50IHhJbkNoaWxkQ29vcmRzID0geEluUGFy
ZW50Q29vcmRzIC0gY2hpbGQtPngoKTsKKyAgICBpbnQgeUluQ2hpbGRDb29yZHMgPSB5SW5QYXJl
bnRDb29yZHMgLSBjaGlsZC0+eSgpOworCisgICAgLy8gSWYgdGhpcyBpcyBhbiBhbm9ueW1vdXMg
cmVuZGVyZXIsIHdlIGp1c3QgcmVjdXJzZSBub3JtYWxseQorICAgIE5vZGUqIGNoaWxkTm9kZSA9
IGNoaWxkLT5lbGVtZW50KCk7CisgICAgaWYgKCFjaGlsZE5vZGUpCisgICAgICAgIHJldHVybiBj
aGlsZC0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyh4SW5DaGlsZENvb3JkcywgeUluQ2hpbGRDb29y
ZHMpOworCisgICAgLy8gT3RoZXJ3aXNlLCBmaXJzdCBtYWtlIHN1cmUgdGhhdCB0aGUgZWRpdGFi
aWxpdHkgb2YgdGhlIHBhcmVudCBhbmQgY2hpbGQgYWdyZWUhCisgICAgLy8gSWYgdGhleSBkb24n
dCBhZ3JlZSwgdGhlbiB3ZSByZXR1cm4gYSB2aXNpYmxlIHBvc2l0aW9uIGp1c3QgYmVmb3JlIG9y
IGFmdGVyIHRoZSBjaGlsZAorICAgIFJlbmRlck9iamVjdCogYW5jZXN0b3IgPSBwYXJlbnQ7Cisg
ICAgd2hpbGUgKGFuY2VzdG9yICYmICFhbmNlc3Rvci0+ZWxlbWVudCgpKQorICAgICAgICBhbmNl
c3RvciA9IGFuY2VzdG9yLT5wYXJlbnQoKTsKKyAgICAKKyAgICAvLyBJZiB3ZSBjYW4ndCBmaW5k
IGFuIGFuY2VzdG9yIHRvIGNoZWNrIGVkaXRhYmlsaXR5IG9uLCBvciBlZGl0aWJpbGl0eSBpcyB1
bmNoYW5nZWQsIHdlIHJlY3Vyc2UgbGlrZSBub3JtYWwKKyAgICBpZiAoIWFuY2VzdG9yIHx8IGFu
Y2VzdG9yLT5lbGVtZW50KCktPmlzQ29udGVudEVkaXRhYmxlKCkgPT0gY2hpbGROb2RlLT5pc0Nv
bnRlbnRFZGl0YWJsZSgpKQorICAgICAgICByZXR1cm4gY2hpbGQtPnBvc2l0aW9uRm9yQ29vcmRp
bmF0ZXMoeEluQ2hpbGRDb29yZHMsIHlJbkNoaWxkQ29vcmRzKTsKKworICAgIC8vIE90aGVyd2lz
ZSByZXR1cm4gYmVmb3JlIG9yIGFmdGVyIHRoZSBjaGlsZCwgZGVwZW5kaW5nIG9uIGlmIHRoZSBj
bGljayB3YXMgbGVmdCBvciByaWdodCBvZiB0aGUgY2hpbGQKKyAgICBpbnQgY2hpbGRNaWRYID0g
Y2hpbGQtPndpZHRoKCkgLyAyOworICAgIGlmICh4SW5DaGlsZENvb3JkcyA8IGNoaWxkTWlkWCkK
KyAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihhbmNlc3Rvci0+ZWxlbWVudCgpLCBjaGls
ZE5vZGUtPm5vZGVJbmRleCgpLCBET1dOU1RSRUFNKTsKKyAgICByZXR1cm4gVmlzaWJsZVBvc2l0
aW9uKGFuY2VzdG9yLT5lbGVtZW50KCksIGNoaWxkTm9kZS0+bm9kZUluZGV4KCkgKyAxLCBVUFNU
UkVBTSk7Cit9CisKIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JDb29y
ZGluYXRlcyhpbnQgeCwgaW50IHkpCiB7CiAgICAgaWYgKGlzVGFibGUoKSkKICAgICAgICAgcmV0
dXJuIFJlbmRlckNvbnRhaW5lcjo6cG9zaXRpb25Gb3JDb29yZGluYXRlcyh4LCB5KTsgCiAKLSAg
ICBpbnQgdG9wID0gYm9yZGVyVG9wKCk7Ci0gICAgaW50IGJvdHRvbSA9IHRvcCArIHBhZGRpbmdU
b3AoKSArIGNvbnRlbnRIZWlnaHQoKSArIHBhZGRpbmdCb3R0b20oKTsKLQotICAgIGludCBsZWZ0
ID0gYm9yZGVyTGVmdCgpOwotICAgIGludCByaWdodCA9IGxlZnQgKyBwYWRkaW5nTGVmdCgpICsg
Y29udGVudFdpZHRoKCkgKyBwYWRkaW5nUmlnaHQoKTsKLQogICAgIE5vZGUqIG4gPSBlbGVtZW50
KCk7CiAgICAgCiAgICAgaW50IGNvbnRlbnRzWCA9IHg7CkBAIC0zMzQ4LDQ1ICszMzc2LDYgQEAg
VmlzaWJsZVBvc2l0aW9uIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKGludCB4
LCBpbnQgeSkKICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obiwgY2FyZXRNYXhP
ZmZzZXQoKSwgRE9XTlNUUkVBTSk7CiAgICAgfSAKIAotICAgIC8vIElmIHdlIHN0YXJ0IGluc2lk
ZSB0aGUgc2hhZG93IHRyZWUsIHdlIHdpbGwgc3RheSBpbnNpZGUgKGV2ZW4gaWYgdGhlIHBvaW50
IGlzIGFib3ZlIG9yIGJlbG93KS4KLSAgICBpZiAoIShuICYmIG4tPmlzU2hhZG93Tm9kZSgpKSAm
JiAhY2hpbGRyZW5JbmxpbmUoKSkgewotICAgICAgICAvLyBEb24ndCByZXR1cm4gcG9zaXRpb25z
IGluc2lkZSBlZGl0YWJsZSByb290cyBmb3IgY29vcmRpbmF0ZXMgb3V0c2lkZSB0aG9zZSByb290
cywgZXhjZXB0IGZvciBjb29yZGluYXRlcyBvdXRzaWRlCi0gICAgICAgIC8vIGEgZG9jdW1lbnQg
dGhhdCBpcyBlbnRpcmVseSBlZGl0YWJsZS4KLSAgICAgICAgYm9vbCBpc0VkaXRhYmxlUm9vdCA9
IG4gJiYgbi0+cm9vdEVkaXRhYmxlRWxlbWVudCgpID09IG4gJiYgIW4tPmhhc1RhZ05hbWUoYm9k
eVRhZykgJiYgIW4tPmhhc1RhZ05hbWUoaHRtbFRhZyk7Ci0KLSAgICAgICAgaWYgKHkgPCB0b3Ag
fHwgKGlzRWRpdGFibGVSb290ICYmICh5IDwgYm90dG9tICYmIHggPCBsZWZ0KSkpIHsKLSAgICAg
ICAgICAgIGlmICghaXNFZGl0YWJsZVJvb3QpCi0gICAgICAgICAgICAgICAgaWYgKFJlbmRlckJv
eCogYyA9IGZpcnN0Q2hpbGRCb3goKSkgeyAvLyBGSVhNRTogVGhpcyBjb2RlIGRvZXNuJ3QgbWFr
ZSBhbnkgc2Vuc2UuICBUaGlzIGNoaWxkIGNvdWxkIGJlIGFuIGlubGluZSBvciBhIHBvc2l0aW9u
ZWQgZWxlbWVudCBvciBhIGZsb2F0LCBldGMuCi0gICAgICAgICAgICAgICAgICAgIFZpc2libGVQ
b3NpdGlvbiBwID0gYy0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyhjb250ZW50c1ggLSBjLT54KCks
IGNvbnRlbnRzWSAtIGMtPnkoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwLmlzTm90TnVs
bCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHA7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKG4pIHsKLSAgICAgICAgICAgICAgICBpZiAoTm9kZSogc3AgPSBu
LT5zaGFkb3dQYXJlbnROb2RlKCkpCi0gICAgICAgICAgICAgICAgICAgIG4gPSBzcDsKLSAgICAg
ICAgICAgICAgICBpZiAoTm9kZSogcCA9IG4tPnBhcmVudCgpKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKHAsIG4tPm5vZGVJbmRleCgpLCBET1dOU1RSRUFNKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obiwgMCwg
RE9XTlNUUkVBTSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoeSA+PSBib3R0b20gfHwgKGlz
RWRpdGFibGVSb290ICYmICh5ID49IHRvcCAmJiB4ID49IHJpZ2h0KSkpIHsKLSAgICAgICAgICAg
IGlmICghaXNFZGl0YWJsZVJvb3QpCi0gICAgICAgICAgICAgICAgaWYgKFJlbmRlckJveCogYyA9
IGxhc3RDaGlsZEJveCgpKSB7IC8vIEZJWE1FOiBUaGlzIGNvZGUgZG9lc24ndCBtYWtlIGFueSBz
ZW5zZS4gIFRoaXMgY2hpbGQgY291bGQgYmUgYW4gaW5saW5lIG9yIGEgcG9zaXRpb25lZCBlbGVt
ZW50IG9yIGEgZmxvYXQsIGV0Yy4KLSAgICAgICAgICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IHAgPSBjLT5wb3NpdGlvbkZvckNvb3JkaW5hdGVzKGNvbnRlbnRzWCAtIGMtPngoKSwgY29udGVu
dHNZIC0gYy0+eSgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHAuaXNOb3ROdWxsKCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAobikgewotICAgICAgICAgICAgICAgIGlmIChOb2RlKiBzcCA9IG4tPnNoYWRv
d1BhcmVudE5vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgbiA9IHNwOwotICAgICAgICAgICAg
ICAgIGlmIChOb2RlKiBwID0gbi0+cGFyZW50KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBWaXNpYmxlUG9zaXRpb24ocCwgbi0+bm9kZUluZGV4KCkgKyAxLCBET1dOU1RSRUFNKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obiwgMCwgRE9X
TlNUUkVBTSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkg
ewogICAgICAgICBpZiAoIWZpcnN0Um9vdEJveCgpKQogICAgICAgICAgICAgcmV0dXJuIFZpc2li
bGVQb3NpdGlvbihuLCAwLCBET1dOU1RSRUFNKTsKQEAgLTMzOTQsOSArMzM4MywxMCBAQCBWaXNp
YmxlUG9zaXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoaW50IHgsIGlu
dCB5KQogICAgICAgICBpZiAoY29udGVudHNZIDwgZmlyc3RSb290Qm94KCktPnRvcE92ZXJmbG93
KCkgLSB2ZXJ0aWNhbExpbmVDbGlja0Z1ZGdlRmFjdG9yKQogICAgICAgICAgICAgLy8geSBjb29y
ZGluYXRlIGlzIGFib3ZlIGZpcnN0IHJvb3QgbGluZSBib3gKICAgICAgICAgICAgIHJldHVybiBW
aXNpYmxlUG9zaXRpb24ocG9zaXRpb25Gb3JCb3goZmlyc3RSb290Qm94KCktPmZpcnN0TGVhZkNo
aWxkKCksIHRydWUpLCBET1dOU1RSRUFNKTsKLSAgICAgICAgCisKICAgICAgICAgLy8gbG9vayBm
b3IgdGhlIGNsb3Nlc3QgbGluZSBib3ggaW4gdGhlIHJvb3QgYm94IHdoaWNoIGlzIGF0IHRoZSBw
YXNzZWQtaW4geSBjb29yZGluYXRlCiAgICAgICAgIGZvciAoUm9vdElubGluZUJveCogcm9vdCA9
IGZpcnN0Um9vdEJveCgpOyByb290OyByb290ID0gcm9vdC0+bmV4dFJvb3RCb3goKSkgeworICAg
ICAgICAgICAgaW50IGJvdHRvbTsKICAgICAgICAgICAgIC8vIHNldCB0aGUgYm90dG9tIGJhc2Vk
IG9uIHdoZXRoZXIgdGhlcmUgaXMgYSBuZXh0IHJvb3QgYm94CiAgICAgICAgICAgICBpZiAocm9v
dC0+bmV4dFJvb3RCb3goKSkKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogbWFrZSB0aGUgYnJl
YWsgcG9pbnQgaGFsZndheSBiZXR3ZWVuIHRoZSBib3R0b20gb2YgdGhlIHByZXZpb3VzIHJvb3Qg
Ym94IGFuZCB0aGUgdG9wIG9mIHRoZSBuZXh0IHJvb3QgYm94CkBAIC0zNDE5LDIzICszNDA5LDI1
IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JDb29yZGluYXRlcyhp
bnQgeCwgaW50IHkpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obiwgMCwgRE9XTlNU
UkVBTSk7CiAgICAgfQogICAgIAotICAgIC8vIFNlZSBpZiBhbnkgY2hpbGQgYmxvY2tzIGV4aXN0
IGF0IHRoaXMgeSBjb29yZGluYXRlLgorICAgIC8vIENoZWNrIHRvcC9ib3R0b20gY2hpbGQtbWFy
Z2luL3BhcmVudC1wYWRkaW5nIGZvciBjbGlja3MgYW5kIHBsYWNlIHRoZW0gaW4gdGhlIGZpcnN0
L2xhc3QgY2hpbGQKKyAgICAvLyBGSVhNRTogVGhpcyB3aWxsIG5vdCBjb3JyZWN0bHkgaGFuZGxl
IGZpcnN0IG9yIGxhc3QgY2hpbGRyZW4gYmVpbmcgcG9zaXRpb25lZCBvciBub24tdmlzaWJsZQog
ICAgIGlmIChmaXJzdENoaWxkQm94KCkgJiYgY29udGVudHNZIDwgZmlyc3RDaGlsZEJveCgpLT55
KCkpCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obiwgMCwgRE9XTlNUUkVBTSk7Ci0g
ICAgZm9yIChSZW5kZXJCb3gqIHJlbmRlcmVyID0gZmlyc3RDaGlsZEJveCgpOyByZW5kZXJlcjsg
cmVuZGVyZXIgPSByZW5kZXJlci0+bmV4dFNpYmxpbmdCb3goKSkgewotICAgICAgICBpZiAocmVu
ZGVyZXItPmhlaWdodCgpID09IDAgfHwgcmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSAh
PSBWSVNJQkxFIHx8IHJlbmRlcmVyLT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkpCisgICAgICAg
IHBvc2l0aW9uRm9yQ29vcmRpbmF0ZXNJbkNoaWxkKHRoaXMsIGZpcnN0Q2hpbGRCb3goKSwgY29u
dGVudHNYLCBjb250ZW50c1kpOworICAgIGlmIChsYXN0Q2hpbGRCb3goKSAmJiBjb250ZW50c1kg
PiBsYXN0Q2hpbGRCb3goKS0+eSgpKQorICAgICAgICBwb3NpdGlvbkZvckNvb3JkaW5hdGVzSW5D
aGlsZCh0aGlzLCBsYXN0Q2hpbGRCb3goKSwgY29udGVudHNYLCBjb250ZW50c1kpOworCisgICAg
Zm9yIChSZW5kZXJCb3gqIGNoaWxkQm94ID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZEJveDsgY2hp
bGRCb3ggPSBjaGlsZEJveC0+bmV4dFNpYmxpbmdCb3goKSkgeworICAgICAgICBpZiAoY2hpbGRC
b3gtPmhlaWdodCgpID09IDAgfHwgY2hpbGRCb3gtPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFIHx8IGNoaWxkQm94LT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgUmVuZGVyQm94KiBuZXh0ID0gcmVuZGVyZXItPm5leHRTaWJs
aW5nQm94KCk7Ci0gICAgICAgIHdoaWxlIChuZXh0ICYmIG5leHQtPmlzRmxvYXRpbmdPclBvc2l0
aW9uZWQoKSkKLSAgICAgICAgICAgIG5leHQgPSBuZXh0LT5uZXh0U2libGluZ0JveCgpOwotICAg
ICAgICBpZiAobmV4dCkgCi0gICAgICAgICAgICBib3R0b20gPSBuZXh0LT55KCk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGJvdHRvbSA9IHRvcCArIHNjcm9sbEhlaWdodCgpOwotICAgICAg
ICBpZiAoY29udGVudHNZID49IHJlbmRlcmVyLT55KCkgJiYgY29udGVudHNZIDwgYm90dG9tKQot
ICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5wb3NpdGlvbkZvckNvb3JkaW5hdGVzKGNvbnRl
bnRzWCAtIHJlbmRlcmVyLT54KCksIGNvbnRlbnRzWSAtIHJlbmRlcmVyLT55KCkpOworICAgICAg
ICBSZW5kZXJCb3gqIG5leHRDaGlsZEJveCA9IGNoaWxkQm94LT5uZXh0U2libGluZ0JveCgpOwor
ICAgICAgICB3aGlsZSAobmV4dENoaWxkQm94ICYmIG5leHRDaGlsZEJveC0+aXNGbG9hdGluZ09y
UG9zaXRpb25lZCgpKQorICAgICAgICAgICAgbmV4dENoaWxkQm94ID0gbmV4dENoaWxkQm94LT5u
ZXh0U2libGluZ0JveCgpOworICAgICAgICBpbnQgYm90dG9tID0gbmV4dENoaWxkQm94ID8gbmV4
dENoaWxkQm94LT55KCkgOiBjaGlsZEJveC0+eSgpICsgY2hpbGRCb3gtPmhlaWdodCgpOworICAg
ICAgICBpZiAoY29udGVudHNZIDwgYm90dG9tKQorICAgICAgICAgICAgcG9zaXRpb25Gb3JDb29y
ZGluYXRlc0luQ2hpbGQodGhpcywgY2hpbGRCb3gsIGNvbnRlbnRzWCwgY29udGVudHNZKTsKICAg
ICB9Ci0gICAgCisKKyAgICAvLyBXZSBvbmx5IGhpdCBoZXJlIGlmIHRoZXJlIGFyZSBubyBjaGls
ZHJlbiwgb3Igb25seSBmbG9hdGVkL3Bvc2l0aW9uZWQsIG9yIG9ubHkgbm9uLXZpc2libGUgYmxv
Y2sgY2hpbGRyZW4gYmVsb3cgdGhlIGNsaWNrCiAgICAgcmV0dXJuIFJlbmRlckNvbnRhaW5lcjo6
cG9zaXRpb25Gb3JDb29yZGluYXRlcyh4LCB5KTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQ29udGFpbmVyLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNv
bnRhaW5lci5jcHAKaW5kZXggNzFlNWQwOS4uNDNlOGJjMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQ29udGFpbmVyLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJDb250YWluZXIuY3BwCkBAIC01OTEsOCArNTkxLDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRl
ckNvbnRhaW5lcjo6cG9zaXRpb25Gb3JDb29yZGluYXRlcyhpbnQgeFBvcywgaW50IHlQb3MpCiAg
ICAgICAgIGlmICh4UG9zIDwgMCB8fCB4UG9zID4gcmlnaHQgfHwgeVBvcyA8IDAgfHwgeVBvcyA+
IGJvdHRvbSkgewogICAgICAgICAgICAgaWYgKHhQb3MgPD0gcmlnaHQgLyAyKQogICAgICAgICAg
ICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24oZWxlbWVudCgpLCAwKSk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihQ
b3NpdGlvbihlbGVtZW50KCksIG1heERlZXBPZmZzZXQoZWxlbWVudCgpKSkpOworICAgICAgICAg
ICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihQb3NpdGlvbihlbGVtZW50KCksIG1heERlZXBPZmZz
ZXQoZWxlbWVudCgpKSkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmNwcAppbmRleCBhYmU4YjJhLi44NmU3MTY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGlu
ZS5jcHAKQEAgLTQ4NCw2ICs0ODQsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVySW5saW5lOjpw
b3NpdGlvbkZvckNvb3JkaW5hdGVzKGludCB4LCBpbnQgeSkKICAgICB3aGlsZSAoYykgewogICAg
ICAgICBSZW5kZXJCb3gqIGNvbnRCbG9jayA9IGM7CiAgICAgICAgIGlmIChjLT5pc0lubGluZSgp
IHx8IGMtPmZpcnN0Q2hpbGQoKSkKKyAgICAgICAgICAgIC8vIFRoZSBjb250aW51YXRpb25zIChh
bm9ueW1vdXMgYmxvY2tzKSB3aWxsIG5ldmVyIGJlIGVkaXRhYmxlLCBzbyB3ZSBkb24ndCBuZWVk
IHRvIHdvcnJ5IGFib3V0IGNyb3NzaW5nIGVkaXRhYmxlIGJvdW5kYXJpZXMgaGVyZS4KICAgICAg
ICAgICAgIHJldHVybiBjLT5wb3NpdGlvbkZvckNvb3JkaW5hdGVzKHBhcmVudEJsb2NrWCAtIGNv
bnRCbG9jay0+eCgpLCBwYXJlbnRCbG9ja1kgLSBjb250QmxvY2stPnkoKSk7CiAgICAgICAgIGMg
PSB0b1JlbmRlckJsb2NrKGMpLT5pbmxpbmVDb250aW51YXRpb24oKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27204</attachid>
            <date>2009-01-30 17:54:30 -0800</date>
            <delta_ts>2009-01-30 18:26:29 -0800</delta_ts>
            <desc>Fix bugs 23605 and 23607</desc>
            <filename>Fix-bugs-23605-and-23607.patch</filename>
            <type>text/plain</type>
            <size>38443</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">Njk5OTkyM2Y0OWQ4ODMwZDA1NTU2N2RkZWFhMzhiNGMxMmJmNDE4OQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdjOTgyZmMu
LjU0OGYwM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAwOS0wMS0zMCAgT2phbiBWYWZhaSA8
b2phbkBjaHJvbWl1bS5vcmc+IGFuZCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgY3Vyc29y
IHBvc2l0aW9ucyBtYXRjaCBJRTYvSUU3L0ZGMyB3aGVuIGNsaWNraW5nIGluIG1hcmdpbnMvcGFk
ZGluZworICAgICAgICBhcm91bmQgZGl2cyBpbnNpZGUgZWRpdGFibGUgcmVnaW9ucy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjA1CisgICAgICAg
IAorICAgICAgICBGaXggY2xpY2tzIG91dHNpZGUgZWRpdGFibGUgcmVnaW9ucyBmcm9tIGZvY3Vz
aW5nIHRoZSBlZGl0YWJsZSByZWdpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzYwNworICAgICAgICAKKyAgICAgICAgUmVtb3ZlZCBlZGl0aW5n
L3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS5odG1sIGFzIGl0J3MKKyAg
ICAgICAgbm90IGFzIHVzZWZ1bCBhcyBvdXIgbmV3IHRlc3RzLgorICAgICAgICAKKyAgICAgICAg
QWRkZWQgdGVzdHM6CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lu
cy1pbnNpZGUtZWRpdGFibGUtZGl2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2Vs
ZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2Lmh0bWw6IEFkZGVkLgorCisgICAgICAg
ICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2st
aW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stb3V0c2lkZS1lZGl0YWJs
ZS1kaXYuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVk
aXRhYmxlLWNsaWNrLW91dHNpZGUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Nl
bGVjdGlvbi9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
ZWRpdGluZy9leGVjQ29tbWFuZC9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbC4KKyAgICAgICAgKiBl
ZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFi
bGUtZGl2LmpzOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rp
b24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQuY2hlY2tzdW06IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0
YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Nl
bGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1mcm9tLXRleHRmaWVsZC1vdXR3YXJkcy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vY29u
dGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKwogMjAwOS0wMS0zMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0
YWJsZS1kaXYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xp
Y2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWYzZDExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFi
bGUtZGl2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIzIEBACitFbnN1cmUgY3Vyc29yIHBsYWNl
bWVudCBtYXRjaGVzIElFNi9JRTcvRkYzIHdoZW4gY2xpY2tpbmcgYWJvdmUvYmVsb3cgbGluZXMg
aW4gcGFkZGluZy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgU2VsZWN0
aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAwCitQQVNTIFNlbGVjdGlvbiBp
cyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMQorUEFTUyBTZWxlY3Rpb24gaXMgYXQg
bm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDIKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6
IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAwCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2Jq
ZWN0IFRleHRdIG9mZnNldDogMgorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBU
ZXh0XSBvZmZzZXQ6IDAKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0g
b2Zmc2V0OiAxCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNl
dDogMgorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDAK
K1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAxCitQQVNT
IFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMgorUEFTUyBTZWxl
Y3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDAKK1BBU1MgU2VsZWN0aW9u
IGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAxCitQQVNTIFNlbGVjdGlvbiBpcyBh
dCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5odG1sIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRp
dGFibGUtZGl2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg0Njcz
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNr
LWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmJhNzcxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stb3V0
c2lkZS1lZGl0YWJsZS1kaXYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK0Vuc3VyZSB0
aGF0IGNsaWNraW5nIGluIHRoZSBtYXJnaW5zIGFyb3VuZCBlZGl0YWJsZSBkaXZzIGRvZXMgbm90
IGdyYW50IGZvY3VzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDbGlj
ayBAIDUwLCA1MCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBDbGljayBAIDE1MCwgNTAgZGlk
IG5vdCBjYXVzZSBmb2N1cy4KK1BBU1MgQ2xpY2sgQCAyNTAsIDUwIGRpZCBub3QgY2F1c2UgZm9j
dXMuCitQQVNTIENsaWNrIEAgNTAsIDE1MCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBDbGlj
ayBAIDI1MCwgMTUwIGRpZCBub3QgY2F1c2UgZm9jdXMuCitQQVNTIENsaWNrIEAgNTAsIDI1MCBk
aWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBDbGljayBAIDE1MCwgMjUwIGRpZCBub3QgY2F1c2Ug
Zm9jdXMuCitQQVNTIENsaWNrIEAgMjUwLCAyNTAgZGlkIG5vdCBjYXVzZSBmb2N1cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1vdXRzaWRlLWVkaXRhYmxlLWRp
di5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stb3V0c2lkZS1lZGl0
YWJsZS1kaXYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDU1OWEw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2st
b3V0c2lkZS1lZGl0YWJsZS1kaXYuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jbGlj
ay1vdXRzaWRlLWVkaXRhYmxlLWRpdi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRl
ZGl0YWJsZS1jbGljay1vdXRzaWRlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5MGQ4ZWFlLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMyArMCwwIEBACi08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKLTwv
c2NyaXB0PgotPGRpdiBzdHlsZT0id2lkdGg6IDQwMHB4OyBoZWlnaHQ6IDUwcHg7IHBhZGRpbmc6
IDI1cHggMCAwIDI1cHg7IGJhY2tncm91bmQ6IHllbGxvdzsiPjxkaXYgY29udGVudGVkaXRhYmxl
PSJ0cnVlIiBzdHlsZT0iYmFja2dyb3VuZDogd2hpdGU7IGhlaWdodDoyMHB4OyB3aWR0aDoxMDBw
eCI+PC9kaXY+PC9kaXY+Ci08cD5UaGlzIHRlc3QgY2xpY2tzIG91dHNpZGUgYW4gZWRpdGFibGUg
ZGl2IGVsZW1lbnQsIGFuZCBtdXN0IG5vdCByZXN1bHQgaW4gdGhlIGVsZW1lbnQgcmVjZWl2aW5n
IGZvY3VzLiBJZiB0aGUgdGVzdCBzdWNjZWVkcyB0aGUgZWxlbWVudCBzaG91bGQgbm90IGhhdmUg
YSBmb2N1cyByaW5nLjwvcD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Ci0g
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMjI1LCA0NSk7Ci0gICAgZXZlbnRTZW5kZXIubW91
c2VEb3duKCk7Ci0gICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwotfQotPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvVEVNUExBVEUu
aHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9URU1QTEFURS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwY2U1NmMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvVEVNUExB
VEUuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9IllPVVJfSlNfRklMRV9IRVJFIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5q
cyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9jbGljay1pbi1tYXJn
aW5zLWluc2lkZS1lZGl0YWJsZS1kaXYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNjFiNzEzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL3Jlc291cmNlcy9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0YWJsZS1kaXYuanMK
QEAgLTAsMCArMSwxMzggQEAKK2Rlc2NyaXB0aW9uKCJFbnN1cmUgY3Vyc29yIHBsYWNlbWVudCBt
YXRjaGVzIElFNi9JRTcvRkYzIHdoZW4gY2xpY2tpbmcgYWJvdmUvYmVsb3cgbGluZXMgaW4gcGFk
ZGluZy4iKQorCitkb2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpbiA9IDA7CisKK3ZhciBkaXYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5zdHlsZS5jc3NUZXh0ID0gImZvbnQt
ZmFtaWx5OiBhaGVtOyBmb250LXNpemU6IDIwcHg7IC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB5
ZWxsb3c7IHdpZHRoOiA0MHB4OyBoZWlnaHQ6IDgwcHg7IHBhZGRpbmc6IDIwcHg7IGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOyI7CitkaXYuY29udGVudEVkaXRhYmxlID0gdHJ1ZTsKKwordmFyIGZp
cnN0VGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJYWCIpOwordmFyIGZpcnN0RGl2ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitmaXJzdERpdi5hcHBlbmRDaGlsZChmaXJz
dFRleHQpOworZmlyc3REaXYuc3R5bGUuY3NzVGV4dCA9ICJwYWRkaW5nLWJvdHRvbTogMTlweDsg
Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHBpbms7IG1hcmdpbi1ib3R0b206IDIwcHgiOworZGl2
LmFwcGVuZENoaWxkKGZpcnN0RGl2KTsKKwordmFyIHNlY29uZFRleHQgPSBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgiWVkiKTsKK3ZhciBzZWNvbmREaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKK3NlY29uZERpdi5hcHBlbmRDaGlsZChzZWNvbmRUZXh0KTsKK2Rpdi5hcHBlbmRD
aGlsZChzZWNvbmREaXYpOworCitkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShkaXYsIGRvY3Vt
ZW50LmJvZHkuZmlyc3RDaGlsZCk7CisKK2Z1bmN0aW9uIG9iamVjdEFzU3RyaW5nKG9iamVjdCwg
cHJvcGVydGllcykgeworICAgIHZhciByZXN1bHQgPSAiWyI7CisgICAgZm9yICh2YXIgeCA9IDA7
IHggPCBwcm9wZXJ0aWVzLmxlbmd0aDsgeCsrKSB7CisgICAgICAgIHZhciBwcm9wZXJ0eSA9IHBy
b3BlcnRpZXNbeF07CisgICAgICAgIGlmICh4ICE9IDApCisgICAgICAgICAgICByZXN1bHQgKz0g
IiAiOworCisgICAgICAgIHZhciB2YWx1ZSA9IG9iamVjdFtwcm9wZXJ0eV07CisgICAgICAgIGlm
ICh2YWx1ZSAmJiB2YWx1ZS5ub2RlVHlwZSkgLy8gdGV4dE5vZGUKKyAgICAgICAgICAgIHZhbHVl
ID0gdmFsdWUgKyAiKCAiICsgdmFsdWUubm9kZVZhbHVlICsgIiApIjsKKworICAgICAgICByZXN1
bHQgKz0gcHJvcGVydHkgKyAiOiAiICsgdmFsdWU7CisgICAgfQorICAgIHJlc3VsdCArPSAnXSc7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gc2VsZWN0aW9uQXNTdHJpbmcoc2Vs
KQoreworICAgIHZhciBwcm9wZXJ0aWVzID0gWydhbmNob3JOb2RlJywgJ2FuY2hvck9mZnNldCcs
ICdmb2N1c05vZGUnLCAnZm9jdXNPZmZzZXQnLCAnaXNDb2xsYXBzZWQnXTsKKyAgICByZXR1cm4g
b2JqZWN0QXNTdHJpbmcoc2VsLCBwcm9wZXJ0aWVzKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0UmFu
Z2Uobm9kZSwgb2Zmc2V0KSB7CisgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsK
KyAgICBpZiAoc2VsLmFuY2hvck5vZGUgPT0gbm9kZQorICAgICAgICAmJiBzZWwuZm9jdXNOb2Rl
ID09IG5vZGUKKyAgICAgICAgJiYgc2VsLmFuY2hvck9mZnNldCA9PSBvZmZzZXQKKyAgICAgICAg
JiYgc2VsLmZvY3VzT2Zmc2V0ID09IG9mZnNldAorICAgICAgICAmJiBzZWwuaXNDb2xsYXBzZWQp
IHsKKyAgICAgICAgdGVzdFBhc3NlZCgiU2VsZWN0aW9uIGlzIGF0IG5vZGU6ICIgKyBub2RlICsg
IiBvZmZzZXQ6ICIgKyBvZmZzZXQpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQo
IlNlbGVjdGlvbiBpcyAiICsgc2VsZWN0aW9uQXNTdHJpbmcoc2VsKSArICIgc2hvdWxkIGJlIGF0
IG5vZGU6ICIgKyBub2RlICsgIiBvZmZzZXQ6ICIgKyBvZmZzZXQpOworICAgIH0KK30KKworZnVu
Y3Rpb24gY2xpY2soeCwgeSkgeworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KK30KKworZnVuY3Rpb24gY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKHgs
IHksIG5vZGUsIG9mZnNldCkgeworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgY2xpY2soeCwgeSk7CisgICAgICAgIGFzc2VydFJhbmdlKG5vZGUsIG9mZnNldCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgdGVzdHMucHVzaCh7CisgICAgICAgICAgICB0ZXN0RnVuY3Rpb246
IGZ1bmN0aW9uKCkgeyBhc3NlcnRSYW5nZShub2RlLCBvZmZzZXQpOyB9LAorICAgICAgICAgICAg
Y2xpY2tTdHJpbmc6ICIgIiArIHggKyAiLCAiICsgeSB9CisgICAgICAgICkKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIHByaW50Q2xpY2tTdHJpbmdGb3JXYWl0aW5nVGVzdCgpCit7CisgICAgaWYgKCF0
ZXN0c1t0ZXN0SW5kZXhdKQorICAgICAgICByZXR1cm47CisgICAgZGVidWcoIldhaXRpbmcgZm9y
IGNsaWNrIEAgIiArIHRlc3RzW3Rlc3RJbmRleF0uY2xpY2tTdHJpbmcpOworfQorCit2YXIgdGVz
dEluZGV4ID0gMDsKK3ZhciB0ZXN0cyA9IFtdOworZnVuY3Rpb24gcnVuSW50ZXJhY3RpdmVUZXN0
cygpCit7CisgICAgdGVzdEluZGV4ID0gMDsKKyAgICBwcmludENsaWNrU3RyaW5nRm9yV2FpdGlu
Z1Rlc3QoKTsKKyAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoIkdvdCBjbGljayBAICIgKyBldmVudC5jbGllbnRY
ICsgIiwgIiArIGV2ZW50LmNsaWVudFkpOworICAgICAgICB2YXIgdGVzdCA9IHRlc3RzW3Rlc3RJ
bmRleF07CisgICAgICAgIGlmICh0ZXN0KSB7CisgICAgICAgICAgICB0ZXN0LnRlc3RGdW5jdGlv
bigpOworICAgICAgICAgICAgdGVzdEluZGV4Kys7CisgICAgICAgICAgICBwcmludENsaWNrU3Ry
aW5nRm9yV2FpdGluZ1Rlc3QoKTsKKyAgICAgICAgfQorICAgIH0sIGZhbHNlKTsKK30KKworLy8g
V2hlbiBjbGlja2luZyBiZXR3ZWVuIGRpdnMgc2VwYXJhdGVkIGJ5IG1hcmdpbnMgaW4gYW4gZWRp
dGFibGUKKy8vIHRleHQgcmVnaW9uLCB0aGUgYnJvd3NlcnMgZGlmZmVyIGluIGJlaGF2aW9yOgor
Ly8gRkYzOiB2ZXJ0aWNhbCBwYWRkaW5nIGJveCArIHNvbWUgc29ydCBvZiBvdmVyaGFuZyBkZWNl
bnQ/CisvLyBJRTYvSUU3OiB2ZXJ0aWNhbCBwYWRkaW5nIGJveAorLy8gSUU4IGIyOiBtYXJnaW4g
Ym94CisvLyBTYWZhcmkzOiBtYXJnaW4gYm94IChidXQgY3Vyc29yIGdvZXMgYXQgZW5kIG9mIGxp
bmUpCisKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSgxMCwgMTAsIGZpcnN0VGV4dCwgMCk7Citj
bGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNDAsIDEwLCBmaXJzdFRleHQsIDEpOworY2xpY2tTaG91
bGRSZXN1bHRJblJhbmdlKDcwLCAxMCwgZmlyc3RUZXh0LCAyKTsKKworY2xpY2tTaG91bGRSZXN1
bHRJblJhbmdlKDEwLCAzMCwgZmlyc3RUZXh0LCAwKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5n
ZSg3MCwgMzAsIGZpcnN0VGV4dCwgMik7CisKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSgxMCwg
NTAsIGZpcnN0VGV4dCwgMCk7CitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNDAsIDUwLCBmaXJz
dFRleHQsIDEpOworY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKDcwLCA1MCwgZmlyc3RUZXh0LCAy
KTsKKworLy8gV2UncmUgZ29pbmcgdG8gZm9sbG93IElFIDcncyBiZWhhdmlvciBhbmQgdXNlIHRo
ZSBwYWRkaW5nIGJveCBoZWlnaHQKKy8vIGZvciBkZXRlcm1pbmluZyBpZiB0aGUgY2xpY2sgYmVs
b3cgYSBkaXYgKGluIHRoZSBwYWRkaW5nL21hcmdpbiByZWdpb24pCitjbGlja1Nob3VsZFJlc3Vs
dEluUmFuZ2UoMTAsIDcwLCBzZWNvbmRUZXh0LCAwKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5n
ZSg0MCwgNzAsIHNlY29uZFRleHQsIDEpOworY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKDcwLCA3
MCwgc2Vjb25kVGV4dCwgMik7CisKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSgxMCwgMTEwLCBz
ZWNvbmRUZXh0LCAwKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSg0MCwgMTEwLCBzZWNvbmRU
ZXh0LCAxKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSg3MCwgMTEwLCBzZWNvbmRUZXh0LCAy
KTsKKworLy8gQ2xlYW4gdXAgYWZ0ZXIgb3Vyc2VsdmVzIGlmIHdlJ3JlIG5vdCBiZWluZyBydW4g
aW4gdGhlIGJyb3dzZXIKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBkb2N1bWVudC5i
b2R5LnJlbW92ZUNoaWxkKGRpdik7Cit9IGVsc2UgeworICAgIHJ1bkludGVyYWN0aXZlVGVzdHMo
KTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVz
b3VyY2VzL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LmpzIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1OWJjYzAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2stb3V0c2lkZS1l
ZGl0YWJsZS1kaXYuanMKQEAgLTAsMCArMSw1MCBAQAorZGVzY3JpcHRpb24oIkVuc3VyZSB0aGF0
IGNsaWNraW5nIGluIHRoZSBtYXJnaW5zIGFyb3VuZCBlZGl0YWJsZSBkaXZzIGRvZXMgbm90IGdy
YW50IGZvY3VzLiIpCisKK2RvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luID0gIjBweCI7CisKK3Zh
ciBvdXRlckRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworb3V0ZXJEaXYuc3R5
bGUuY3NzVGV4dCA9ICJ3aWR0aDogMTAwcHg7IHBhZGRpbmc6IDEwMHB4OyBiYWNrZ3JvdW5kLWNv
bG9yOiBibHVlOyI7Cit2YXIgaW5uZXJEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKK2lubmVyRGl2LnN0eWxlLmNzc1RleHQgPSAiaGVpZ2h0OiAxMDBweDsgYm9yZGVyOiAxcHgg
c29saWQgcGluazsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IjsKK2lubmVyRGl2LmNvbnRlbnRF
ZGl0YWJsZSA9IHRydWU7CitvdXRlckRpdi5hcHBlbmRDaGlsZChpbm5lckRpdik7Citkb2N1bWVu
dC5ib2R5Lmluc2VydEJlZm9yZShvdXRlckRpdiwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsK
KwordmFyIGxhc3RDbGlja0NhdXNlZEZvY3VzID0gZmFsc2U7Citkb2N1bWVudC5ib2R5LmFkZEV2
ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBmdW5jdGlvbihlKSB7CisgICAgdmFyIGxhc3RDbGljayA9
IGUgfHwgd2luZG93LmV2ZW50OworICAgIGlmIChsYXN0Q2xpY2tDYXVzZWRGb2N1cykgeworICAg
ICAgICB0ZXN0RmFpbGVkKCJDbGljayBAICIgKyBsYXN0Q2xpY2suY2xpZW50WCArICIsICIgKyBs
YXN0Q2xpY2suY2xpZW50WSArICIgY2F1c2VkIGlubmVyZGl2IHRvIGZvY3VzISIpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNsaWNrIEAgIiArIGxhc3RDbGljay5jbGllbnRY
ICsgIiwgIiArIGxhc3RDbGljay5jbGllbnRZICsgIiBkaWQgbm90IGNhdXNlIGZvY3VzLiIpOwor
ICAgIH0KKyAgICBpbm5lckRpdi5ibHVyKCk7CisgICAgbGFzdENsaWNrQ2F1c2VkRm9jdXMgPSBm
YWxzZTsKK30sIGZhbHNlKTsKKworaW5uZXJEaXYuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCBm
dW5jdGlvbigpIHsKKyAgICBsYXN0Q2xpY2tDYXVzZWRGb2N1cyA9IHRydWU7Cit9LCBmYWxzZSk7
CisKK2Z1bmN0aW9uIGNsaWNrQXQoeCwgeSkgeworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlVXAoKTsKK30KKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIGNsaWNrQXQoNTAs
IDUwKTsKKyAgICBjbGlja0F0KDE1MCwgNTApOworICAgIGNsaWNrQXQoMjUwLCA1MCk7CisKKyAg
ICBjbGlja0F0KDUwLCAxNTApOworICAgIGNsaWNrQXQoMjUwLCAxNTApOworCisgICAgY2xpY2tB
dCg1MCwgMjUwKTsKKyAgICBjbGlja0F0KDE1MCwgMjUwKTsKKyAgICBjbGlja0F0KDI1MCwgMjUw
KTsKK30gZWxzZSB7CisgICAgZGVidWcoIkNsaWNrIGluIGFsbCA4IHJlZ2lvbnMgYXJvdW5kIHRo
ZSBncmVlbiBkaXYgdG8gdGVzdC4iKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRz
aWRlLWV4cGVjdGVkLmNoZWNrc3VtIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
c2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLmNoZWNrc3Vt
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTkxN2YxLi4wMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUt
Y2xpY2stb3V0c2lkZS1leHBlY3RlZC5jaGVja3N1bQorKysgL2Rldi9udWxsCkBAIC0xICswLDAg
QEAKLTE2NTJmZDgxYjZjODdiOTg4YTAwMzMxOGY5ODE5Mzc4ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLnBuZyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xp
Y2stb3V0c2lkZS1leHBlY3RlZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2
YzE4ODIuLjAwMDAwMDAKQmluYXJ5IGZpbGVzIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLnBu
ZyBhbmQgL2Rldi9udWxsIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250
ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDE0YzZmYjAuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLUVESVRJTkcgREVMRUdBVEU6
IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAwIG9mIERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0
eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKLUVESVRJTkcgREVMRUdBVEU6IHNob3Vs
ZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0Rp
ZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1sYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKLWxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJCbG9jayB7SFRNTH0gYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCi0gICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3
ODR4NTc2Ci0gICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDQyNXg3NSBbYmdj
b2xvcj0jRkZGRjAwXQotICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMjUsMjUpIHNpemUg
MTAweDIwIFtiZ2NvbG9yPSNGRkZGRkZdCi0gICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsOTEp
IHNpemUgNzg0eDM2Ci0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc1
OXgzNgotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc1OTogIlRoaXMgdGVzdCBj
bGlja3Mgb3V0c2lkZSBhbiBlZGl0YWJsZSBkaXYgZWxlbWVudCwgYW5kIG11c3Qgbm90IHJlc3Vs
dCBpbiB0aGUgZWxlbWVudCByZWNlaXZpbmcgZm9jdXMuIElmIHRoZSB0ZXN0IHN1Y2NlZWRzIHRo
ZSIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMjM1OiAiZWxlbWVudCBzaG91
bGQgbm90IGhhdmUgYSBmb2N1cyByaW5nLiIKLWNhcmV0OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDAg
e0RJVn0gb2YgY2hpbGQgMCB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1M
fSBvZiBkb2N1bWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3Rl
ZC50eHQKaW5kZXggODQyYzJhMy4uYjQwNWRlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0
LWFsbC1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsOSBAQAogRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdl
OnJhbmdlIGZyb20gMCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA0IG9mIEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5n
OldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNo
b3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZp
bml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQor
RURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9t
IDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGls
bFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVH
QVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2YgI3RleHQg
PiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVh
bSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDUgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byA1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFm
ZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNF
CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZERlbGV0
ZURPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKIEVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1mcm9tLXRleHRmaWVsZC1vdXR3YXJkcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2Vs
ZWN0LWZyb20tdGV4dGZpZWxkLW91dHdhcmRzLWV4cGVjdGVkLnR4dAppbmRleCAxOGMzN2E2Li5i
MDY0NzQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxl
Y3Rpb24vc2VsZWN0LWZyb20tdGV4dGZpZWxkLW91dHdhcmRzLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWZyb20tdGV4
dGZpZWxkLW91dHdhcmRzLWV4cGVjdGVkLnR4dApAQCAtOCwxMCArOCwxMCBAQCBFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4
dCA+IERJViB0byAxMgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRF
OiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2YgI3RleHQgPiBE
SVYgdG8gMTcgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQg
PiBESVYgdG8gMTIgb2YgI3RleHQgPiBESVYgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURv
d25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgot
RURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9t
IDAgb2YgI3RleHQgPiBESVYgdG8gMTIgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBm
cm9tIDAgb2YgI3RleHQgPiBESVYgdG8gMTIgb2YgI3RleHQgPiBESVYgYWZmaW5pdHk6TlNTZWxl
Y3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVM
RUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0
ID4gRElWIHRvIDEyIG9mICN0ZXh0ID4gRElWIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAj
dGV4dCA+IERJViB0byAxNyBvZiAjdGV4dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmlu
aXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdl
IGZyb20gMTEgb2YgI3RleHQgPiBESVYgdG8gMTcgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpy
YW5nZSBmcm9tIDExIG9mICN0ZXh0ID4gRElWIHRvIDE3IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5
Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElU
SU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMTEg
b2YgI3RleHQgPiBESVYgdG8gMTcgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBmcm9t
IDExIG9mICN0ZXh0ID4gRElWIHRvIDE3IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0
aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBsYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKICAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKIGxheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vY29udGVu
dGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBiMzFmYTI3Li4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGlu
ZSA5OiBUeXBlRXJyb3I6IFZhbHVlIHVuZGVmaW5lZCAocmVzdWx0IG9mIGV4cHJlc3Npb24gZXZl
bnRTZW5kZXIubW92ZVRvKSBpcyBub3Qgb2JqZWN0LgotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCi0gIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi1sYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKLSAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAot
ICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3OAotICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA0MjV4NzUgW2JnY29sb3I9I0ZGRkYwMF0KLSAgICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDI1LDI1KSBzaXplIDEwMHgyMCBbYmdjb2xvcj0jRkZG
RkZGXQotICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDg5KSBzaXplIDc4NHgzOAotICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NzF4MzgKLSAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCA3NzE6ICJUaGlzIHRlc3QgY2xpY2tzIG91dHNpZGUgYW4gZWRp
dGFibGUgZGl2IGVsZW1lbnQsIGFuZCBtdXN0IG5vdCByZXN1bHQgaW4gdGhlIGVsZW1lbnQgcmVj
ZWl2aW5nIGZvY3VzLiBJZiB0aGUgdGVzdCBzdWNjZWVkcyB0aGUiCi0gICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMTkpIHdpZHRoIDIzODogImVsZW1lbnQgc2hvdWxkIG5vdCBoYXZlIGEgZm9jdXMg
cmluZy4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVj
dGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxMjIzMWMuLjAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFsbC1pZnJhbWUtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdl
OnJhbmdlIGZyb20gMCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA0IG9mIEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50Ci1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5n
OldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNo
b3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZp
bml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQot
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VT
ZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpG
QUxTRQotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRE
ZWxldGVET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
Ci1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5n
ZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rp
bmc6RkFMU0UKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCi1sYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLWxheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCi0gICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc4Ci0g
ICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDc4NHgxNzMKLSAgICAg
ICAgUmVuZGVyUGFydE9iamVjdCB7SUZSQU1FfSBhdCAoMCwwKSBzaXplIDMwNHgxNTQgW2JvcmRl
cjogKDJweCBpbnNldCAjMDAwMDAwKV0KLSAgICAgICAgICBsYXllciBhdCAoMCwwKSBzaXplIDMw
MHgxNTAKLSAgICAgICAgICAgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSAzMDB4MTUwCi0gICAg
ICAgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSAzMDB4MTUwCi0gICAgICAgICAgICBSZW5kZXJCbG9j
ayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSAzMDB4MTUwCi0gICAgICAgICAgICAgIFJlbmRlckJvZHkg
e0JPRFl9IGF0ICg4LDgpIHNpemUgMjg0eDEzNCBbYmdjb2xvcj0jRkZGRkUwXQotICAgICAgICAg
ICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgMjg0eDE5Ci0gICAgICAgICAg
ICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgxOQotICAgICAgICBSZW5kZXJC
UiB7QlJ9IGF0ICgzMDQsMTU0KSBzaXplIDB4MAotICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgw
LDE1NCkgc2l6ZSAweDE5Ci0gICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMTg3KSBzaXplIDc4
NHgzOQotICAgICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgNjgzeDIwCi0gICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNjgzeDIwCi0gICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1MTQ6ICJUaGlzIHRlc3QgdXNlcyB0aGUgZXZlbnRT
ZW5kZXIgdG8gZG8gYSBtb3VzZSBjbGljayB0byBmb2N1cyB0aGUgc3ViZnJhbWUuICIKLSAgICAg
ICAgICAgIHRleHQgcnVuIGF0ICg1MTQsMCkgd2lkdGggMTY5OiAiSXQgd29uJ3QgcnVuIGludGVy
YWN0aXZlbHkuIgotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDY4MywwKSBzaXplIDc0
MHgzOQotICAgICAgICAgIHRleHQgcnVuIGF0ICg2ODMsMCkgd2lkdGggNDogIiAiCi0gICAgICAg
ICAgdGV4dCBydW4gYXQgKDY4NywwKSB3aWR0aCA1MzogIlRvIHJ1biBpdCIKLSAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwyMCkgd2lkdGggMzQ4OiAibWFudWFsbHksIGNsaWNrIG9uIHRoZSBpZnJh
bWUsIFNlbGVjdCBBbGwsIHRoZW4gaGl0IGRlbGV0ZS4iCi0gICAgICBSZW5kZXJCbG9jayAoYW5v
bnltb3VzKSBhdCAoMCwyNDApIHNpemUgNzg0eDU3Ci0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwwKSBzaXplIDc3Nng1NwotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRo
IDc3NjogIlNlbGVjdGluZyBhbGwgdGhlIGNvbnRlbnQgaW4gYSBjb250ZW50ZWRpdGFibGUgaWZy
YW1lIHNob3VsZCBzZWxlY3QgdGhlIGlmcmFtZSBpdHNlbGYgKHRvIGhlbHAgdGhlIHVzZXIgZGVs
ZXRlIHRoZSBpZnJhbWUpIG9ubHkgaWYiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTkpIHdp
ZHRoIDIxOTogInRoZSBpZnJhbWUgaXMgaW4gYW4gZWRpdGFibGUgcmVnaW9uLiAiCi0gICAgICAg
ICAgdGV4dCBydW4gYXQgKDIxOSwxOSkgd2lkdGggNDMwOiAiVGhpcyB0ZXN0IGxvYWRzIC4uL3Jl
c291cmNlcy9zZWxlY3QtYWxsLWlmcmFtZS1zcmMuaHRtbCBpbnRvIGFuIGlmcmFtZS4gIgotICAg
ICAgICAgIHRleHQgcnVuIGF0ICg2NDksMTkpIHdpZHRoIDk4OiAiVGhhdCBmaWxlIGRvZXMgYSIK
LSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzOCkgd2lkdGggMTIzOiAiU2VsZWN0IEFsbCArIERl
bGV0ZS4gIgotICAgICAgICAgIHRleHQgcnVuIGF0ICgxMjMsMzgpIHdpZHRoIDE3MTogIlR3byB0
aGluZ3Mgc2hvdWxkIGhhcHBlbjoiCi0gICAgICBSZW5kZXJCbG9jayB7VUx9IGF0ICgwLDMxMSkg
c2l6ZSA3ODR4NTcKLSAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoNDAsMCkgc2l6ZSA3
NDR4MzgKLSAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgtMTcsMCkgc2l6ZSA3eDE5OiBi
dWxsZXQKLSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3Mjh4MzgK
LSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQ1MTogIlRoZSBTZWxlY3QgQWxs
IG9wZXJhdGlvbiBzaG91bGQgbm90IHNlbGVjdCB0aGUgaWZyYW1lLCBvbmx5IGl0J3MgY29udGVu
dHMuICIKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICg0NTEsMCkgd2lkdGggMjc3OiAiVGhlIHJl
c3VsdHMgb2YgdGhlIFNlbGVjdCBBbGwgd2lsbCBiZSBhcHBhcmVudCIKLSAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDE5KSB3aWR0aCA0NjQ6ICJmcm9tIHRoZSBkZWxlZ2F0ZSBtZXNzYWdlcyB0
aGF0IER1bXBSZW5kZXJUcmVlIHJlY2VpdmVzIGFuZCBkdW1wcy4iCi0gICAgICAgIFJlbmRlckxp
c3RJdGVtIHtMSX0gYXQgKDQwLDM4KSBzaXplIDc0NHgxOQotICAgICAgICAgIFJlbmRlckxpc3RN
YXJrZXIgYXQgKC0xNywwKSBzaXplIDd4MTk6IGJ1bGxldAotICAgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDM0MngxOQotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMzQyOiAiVGhlIGNvbnRlbnRzIG9mIHRoZSBlZGl0YWJsZSBpZnJhbWUgc2hvdWxk
IGJlIGRlbGV0ZWQuIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1ZDA4MmEzLi4wNGMxZjg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDA5LTAxLTMw
ICBPamFuIFZhZmFpIDxvamFuQGNocm9taXVtLm9yZz4gYW5kIEVyaWMgU2VpZGVsIDxlcmljQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWFrZSBjdXJzb3IgcG9zaXRpb25zIG1hdGNoIElFNi9JRTcvRkYzIHdoZW4gY2xpY2tpbmcg
aW4gbWFyZ2lucy9wYWRkaW5nCisgICAgICAgIGFyb3VuZCBkaXZzIGluc2lkZSBlZGl0YWJsZSBy
ZWdpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM2MDUKKyAgICAgICAgCisgICAgICAgIEZpeCBjbGlja3Mgb3V0c2lkZSBlZGl0YWJsZSByZWdp
b25zIGZyb20gZm9jdXNpbmcgdGhlIGVkaXRhYmxlIHJlZ2lvbi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjA3CisgICAgICAgIAorICAgICAgICBS
ZW1vdmVkIGVkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLmh0
bWwgYXMgaXQncworICAgICAgICBub3QgYXMgdXNlZnVsIGFzIG91ciBuZXcgdGVzdHMuCisKKyAg
ICAgICAgQWRkZWQgdGVzdHM6CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4t
bWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2Lmh0bWw6IEFkZGVkLgorCisg
ICAgICAgICogZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VmlzaWJsZVBvc2l0aW9uOjpjYW5vbmljYWxQb3NpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uRm9yQ29vcmRpbmF0
ZXNJbkNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwb3NpdGlvbkZvckNv
b3JkaW5hdGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ29udGFpbmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckNvbnRhaW5lcjo6cG9zaXRpb25Gb3JDb29yZGluYXRlcyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbmxpbmU6OnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMpOgorCiAyMDA5LTAxLTMwICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhdmUgSHlhdHQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRp
b24uY3BwIGIvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKaW5kZXggM2Q3NzFj
Ni4uYzM1MGJiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5j
cHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKQEAgLTQ5MiwxMCAr
NDkyLDEwIEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6Y2Fub25pY2FsUG9zaXRpb24oY29u
c3QgUG9zaXRpb24mIHBvc2l0aW9uKQogICAgIGJvb2wgbmV4dElzSW5TYW1lRWRpdGFibGVFbGVt
ZW50ID0gbmV4dE5vZGUgJiYgZWRpdGFibGVSb290Rm9yUG9zaXRpb24obmV4dCkgPT0gZWRpdGlu
Z1Jvb3Q7CiAgICAgaWYgKHByZXZJc0luU2FtZUVkaXRhYmxlRWxlbWVudCAmJiAhbmV4dElzSW5T
YW1lRWRpdGFibGVFbGVtZW50KQogICAgICAgICByZXR1cm4gcHJldjsKLSAgICAgICAgCisKICAg
ICBpZiAobmV4dElzSW5TYW1lRWRpdGFibGVFbGVtZW50ICYmICFwcmV2SXNJblNhbWVFZGl0YWJs
ZUVsZW1lbnQpCiAgICAgICAgIHJldHVybiBuZXh0OwotICAgICAgICAKKwogICAgIGlmICghbmV4
dElzSW5TYW1lRWRpdGFibGVFbGVtZW50ICYmICFwcmV2SXNJblNhbWVFZGl0YWJsZUVsZW1lbnQp
CiAgICAgICAgIHJldHVybiBQb3NpdGlvbigpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
aW5kZXggZGRlYWJiNy4uOGRmYjhkZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAt
MzMyNSwxNyArMzMyNSw0NSBAQCBQb3NpdGlvbiBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JSZW5k
ZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBib29sIHN0YXJ0KSBjbwogICAgIHJldHVybiBQ
b3NpdGlvbihub2RlLCBvZmZzZXQpOwogfQogCitzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHBvc2l0
aW9uRm9yQ29vcmRpbmF0ZXNJbkNoaWxkKFJlbmRlckJveCogcGFyZW50LCBSZW5kZXJCb3gqIGNo
aWxkLCBpbnQgeEluUGFyZW50Q29vcmRzLCBpbnQgeUluUGFyZW50Q29vcmRzKQoreworLy8gICAg
aW50IHJlc3RyaWN0ZWRYID0geEluUGFyZW50Q29vcmRzIC0gY2hpbGQtPngoKTsKKy8vICAgIHJl
c3RyaWN0ZWRYID0gbWF4KG1pbihyZXN0cmljdGVkWCwgY2hpbGQtPndpZHRoKCkpLCAwKTsKKyAg
ICAvLyBQcmV0ZW5kIHRoYXQgd2hlcmV2ZXIgd2UgaGl0ICJuZWFyIiB0aGUgY2hpbGQsIGFjdHVh
bGx5IGhpdCB0aGUgY2hpbGQKKyAgICAvLyBpbnNpZGUgeygwLDApLCAod2lkdGgoKSwgaGVpZ2h0
KCkpfS4gIE1lYW5pbmcsIGlmIHlvdSBoaXQgYmVsb3cgYSBsaW5lLCBidXQKKyAgICAvLyBpbiB0
aGUgeC1taWRkbGUgb2YgdGhlIGxpbmUsIHRoZSBjdXJzb3Igd2lsbCBiZSBvbiB0aGUgbGluZSBp
biB0aGUgbWlkZGxlLgorICAgIC8vIEZJWE1FOiBOZWVkcyB0byBiZSBlZGl0aW5nLWF3YXJlIHJl
Y3Vyc2UgbWV0aG9kCisKKyAgICBpbnQgeEluQ2hpbGRDb29yZHMgPSB4SW5QYXJlbnRDb29yZHMg
LSBjaGlsZC0+eCgpOworICAgIGludCB5SW5DaGlsZENvb3JkcyA9IHlJblBhcmVudENvb3JkcyAt
IGNoaWxkLT55KCk7CisKKyAgICAvLyBJZiB0aGlzIGlzIGFuIGFub255bW91cyByZW5kZXJlciwg
d2UganVzdCByZWN1cnNlIG5vcm1hbGx5CisgICAgTm9kZSogY2hpbGROb2RlID0gY2hpbGQtPmVs
ZW1lbnQoKTsKKyAgICBpZiAoIWNoaWxkTm9kZSkKKyAgICAgICAgcmV0dXJuIGNoaWxkLT5wb3Np
dGlvbkZvckNvb3JkaW5hdGVzKHhJbkNoaWxkQ29vcmRzLCB5SW5DaGlsZENvb3Jkcyk7CisKKyAg
ICAvLyBPdGhlcndpc2UsIGZpcnN0IG1ha2Ugc3VyZSB0aGF0IHRoZSBlZGl0YWJpbGl0eSBvZiB0
aGUgcGFyZW50IGFuZCBjaGlsZCBhZ3JlZSEKKyAgICAvLyBJZiB0aGV5IGRvbid0IGFncmVlLCB0
aGVuIHdlIHJldHVybiBhIHZpc2libGUgcG9zaXRpb24ganVzdCBiZWZvcmUgb3IgYWZ0ZXIgdGhl
IGNoaWxkCisgICAgUmVuZGVyT2JqZWN0KiBhbmNlc3RvciA9IHBhcmVudDsKKyAgICB3aGlsZSAo
YW5jZXN0b3IgJiYgIWFuY2VzdG9yLT5lbGVtZW50KCkpCisgICAgICAgIGFuY2VzdG9yID0gYW5j
ZXN0b3ItPnBhcmVudCgpOworICAgIAorICAgIC8vIElmIHdlIGNhbid0IGZpbmQgYW4gYW5jZXN0
b3IgdG8gY2hlY2sgZWRpdGFiaWxpdHkgb24sIG9yIGVkaXRpYmlsaXR5IGlzIHVuY2hhbmdlZCwg
d2UgcmVjdXJzZSBsaWtlIG5vcm1hbAorICAgIGlmICghYW5jZXN0b3IgfHwgYW5jZXN0b3ItPmVs
ZW1lbnQoKS0+aXNDb250ZW50RWRpdGFibGUoKSA9PSBjaGlsZE5vZGUtPmlzQ29udGVudEVkaXRh
YmxlKCkpCisgICAgICAgIHJldHVybiBjaGlsZC0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyh4SW5D
aGlsZENvb3JkcywgeUluQ2hpbGRDb29yZHMpOworCisgICAgLy8gT3RoZXJ3aXNlIHJldHVybiBi
ZWZvcmUgb3IgYWZ0ZXIgdGhlIGNoaWxkLCBkZXBlbmRpbmcgb24gaWYgdGhlIGNsaWNrIHdhcyBs
ZWZ0IG9yIHJpZ2h0IG9mIHRoZSBjaGlsZAorICAgIGludCBjaGlsZE1pZFggPSBjaGlsZC0+d2lk
dGgoKSAvIDI7CisgICAgaWYgKHhJbkNoaWxkQ29vcmRzIDwgY2hpbGRNaWRYKQorICAgICAgICBy
ZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGFuY2VzdG9yLT5lbGVtZW50KCksIGNoaWxkTm9kZS0+bm9k
ZUluZGV4KCksIERPV05TVFJFQU0pOworICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oYW5jZXN0
b3ItPmVsZW1lbnQoKSwgY2hpbGROb2RlLT5ub2RlSW5kZXgoKSArIDEsIFVQU1RSRUFNKTsKK30K
KwogVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKGlu
dCB4LCBpbnQgeSkKIHsKICAgICBpZiAoaXNUYWJsZSgpKQogICAgICAgICByZXR1cm4gUmVuZGVy
Q29udGFpbmVyOjpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKHgsIHkpOyAKIAotICAgIGludCB0b3Ag
PSBib3JkZXJUb3AoKTsKLSAgICBpbnQgYm90dG9tID0gdG9wICsgcGFkZGluZ1RvcCgpICsgY29u
dGVudEhlaWdodCgpICsgcGFkZGluZ0JvdHRvbSgpOwotCi0gICAgaW50IGxlZnQgPSBib3JkZXJM
ZWZ0KCk7Ci0gICAgaW50IHJpZ2h0ID0gbGVmdCArIHBhZGRpbmdMZWZ0KCkgKyBjb250ZW50V2lk
dGgoKSArIHBhZGRpbmdSaWdodCgpOwotCiAgICAgTm9kZSogbiA9IGVsZW1lbnQoKTsKICAgICAK
ICAgICBpbnQgY29udGVudHNYID0geDsKQEAgLTMzNDksNTUgKzMzNzcsMTMgQEAgVmlzaWJsZVBv
c2l0aW9uIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKGludCB4LCBpbnQgeSkK
ICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obiwgY2FyZXRNYXhPZmZzZXQoKSwg
RE9XTlNUUkVBTSk7CiAgICAgfSAKIAotICAgIC8vIElmIHdlIHN0YXJ0IGluc2lkZSB0aGUgc2hh
ZG93IHRyZWUsIHdlIHdpbGwgc3RheSBpbnNpZGUgKGV2ZW4gaWYgdGhlIHBvaW50IGlzIGFib3Zl
IG9yIGJlbG93KS4KLSAgICBpZiAoIShuICYmIG4tPmlzU2hhZG93Tm9kZSgpKSAmJiAhY2hpbGRy
ZW5JbmxpbmUoKSkgewotICAgICAgICAvLyBEb24ndCByZXR1cm4gcG9zaXRpb25zIGluc2lkZSBl
ZGl0YWJsZSByb290cyBmb3IgY29vcmRpbmF0ZXMgb3V0c2lkZSB0aG9zZSByb290cywgZXhjZXB0
IGZvciBjb29yZGluYXRlcyBvdXRzaWRlCi0gICAgICAgIC8vIGEgZG9jdW1lbnQgdGhhdCBpcyBl
bnRpcmVseSBlZGl0YWJsZS4KLSAgICAgICAgYm9vbCBpc0VkaXRhYmxlUm9vdCA9IG4gJiYgbi0+
cm9vdEVkaXRhYmxlRWxlbWVudCgpID09IG4gJiYgIW4tPmhhc1RhZ05hbWUoYm9keVRhZykgJiYg
IW4tPmhhc1RhZ05hbWUoaHRtbFRhZyk7Ci0KLSAgICAgICAgaWYgKHkgPCB0b3AgfHwgKGlzRWRp
dGFibGVSb290ICYmICh5IDwgYm90dG9tICYmIHggPCBsZWZ0KSkpIHsKLSAgICAgICAgICAgIGlm
ICghaXNFZGl0YWJsZVJvb3QpCi0gICAgICAgICAgICAgICAgaWYgKFJlbmRlckJveCogYyA9IGZp
cnN0Q2hpbGRCb3goKSkgeyAvLyBGSVhNRTogVGhpcyBjb2RlIGRvZXNuJ3QgbWFrZSBhbnkgc2Vu
c2UuICBUaGlzIGNoaWxkIGNvdWxkIGJlIGFuIGlubGluZSBvciBhIHBvc2l0aW9uZWQgZWxlbWVu
dCBvciBhIGZsb2F0LCBldGMuCi0gICAgICAgICAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBw
ID0gYy0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyhjb250ZW50c1ggLSBjLT54KCksIGNvbnRlbnRz
WSAtIGMtPnkoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwLmlzTm90TnVsbCgpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKG4pIHsKLSAgICAgICAgICAgICAgICBpZiAoTm9kZSogc3AgPSBuLT5zaGFkb3dQ
YXJlbnROb2RlKCkpCi0gICAgICAgICAgICAgICAgICAgIG4gPSBzcDsKLSAgICAgICAgICAgICAg
ICBpZiAoTm9kZSogcCA9IG4tPnBhcmVudCgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
VmlzaWJsZVBvc2l0aW9uKHAsIG4tPm5vZGVJbmRleCgpLCBET1dOU1RSRUFNKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obiwgMCwgRE9XTlNUUkVB
TSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoeSA+PSBib3R0b20gfHwgKGlzRWRpdGFibGVS
b290ICYmICh5ID49IHRvcCAmJiB4ID49IHJpZ2h0KSkpIHsKLSAgICAgICAgICAgIGlmICghaXNF
ZGl0YWJsZVJvb3QpCi0gICAgICAgICAgICAgICAgaWYgKFJlbmRlckJveCogYyA9IGxhc3RDaGls
ZEJveCgpKSB7IC8vIEZJWE1FOiBUaGlzIGNvZGUgZG9lc24ndCBtYWtlIGFueSBzZW5zZS4gIFRo
aXMgY2hpbGQgY291bGQgYmUgYW4gaW5saW5lIG9yIGEgcG9zaXRpb25lZCBlbGVtZW50IG9yIGEg
ZmxvYXQsIGV0Yy4KLSAgICAgICAgICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAgPSBjLT5w
b3NpdGlvbkZvckNvb3JkaW5hdGVzKGNvbnRlbnRzWCAtIGMtPngoKSwgY29udGVudHNZIC0gYy0+
eSgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHAuaXNOb3ROdWxsKCkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAobikgewotICAgICAgICAgICAgICAgIGlmIChOb2RlKiBzcCA9IG4tPnNoYWRvd1BhcmVudE5v
ZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgbiA9IHNwOwotICAgICAgICAgICAgICAgIGlmIChO
b2RlKiBwID0gbi0+cGFyZW50KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpYmxl
UG9zaXRpb24ocCwgbi0+bm9kZUluZGV4KCkgKyAxLCBET1dOU1RSRUFNKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obiwgMCwgRE9XTlNUUkVBTSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkgewogICAgICAg
ICBpZiAoIWZpcnN0Um9vdEJveCgpKQogICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlv
bihuLCAwLCBET1dOU1RSRUFNKTsKIAotICAgICAgICBpZiAoY29udGVudHNZIDwgZmlyc3RSb290
Qm94KCktPnRvcE92ZXJmbG93KCkgLSB2ZXJ0aWNhbExpbmVDbGlja0Z1ZGdlRmFjdG9yKQotICAg
ICAgICAgICAgLy8geSBjb29yZGluYXRlIGlzIGFib3ZlIGZpcnN0IHJvb3QgbGluZSBib3gKLSAg
ICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24ocG9zaXRpb25Gb3JCb3goZmlyc3RSb290
Qm94KCktPmZpcnN0TGVhZkNoaWxkKCksIHRydWUpLCBET1dOU1RSRUFNKTsKLSAgICAgICAgCiAg
ICAgICAgIC8vIGxvb2sgZm9yIHRoZSBjbG9zZXN0IGxpbmUgYm94IGluIHRoZSByb290IGJveCB3
aGljaCBpcyBhdCB0aGUgcGFzc2VkLWluIHkgY29vcmRpbmF0ZQogICAgICAgICBmb3IgKFJvb3RJ
bmxpbmVCb3gqIHJvb3QgPSBmaXJzdFJvb3RCb3goKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm5leHRS
b290Qm94KCkpIHsKKyAgICAgICAgICAgIGludCBib3R0b207CiAgICAgICAgICAgICAvLyBzZXQg
dGhlIGJvdHRvbSBiYXNlZCBvbiB3aGV0aGVyIHRoZXJlIGlzIGEgbmV4dCByb290IGJveAogICAg
ICAgICAgICAgaWYgKHJvb3QtPm5leHRSb290Qm94KCkpCiAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IG1ha2UgdGhlIGJyZWFrIHBvaW50IGhhbGZ3YXkgYmV0d2VlbiB0aGUgYm90dG9tIG9mIHRo
ZSBwcmV2aW91cyByb290IGJveCBhbmQgdGhlIHRvcCBvZiB0aGUgbmV4dCByb290IGJveApAQCAt
MzQxNCwyOSArMzQwMCwyOCBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0aW9u
Rm9yQ29vcmRpbmF0ZXMoaW50IHgsIGludCB5KQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGxh
c3RSb290Qm94KCkpCi0gICAgICAgICAgICAvLyB5IGNvb3JkaW5hdGUgaXMgYmVsb3cgbGFzdCBy
b290IGxpbmUgYm94Ci0gICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9u
Rm9yQm94KGxhc3RSb290Qm94KCktPmxhc3RMZWFmQ2hpbGQoKSwgZmFsc2UpLCBET1dOU1RSRUFN
KTsKKyAgICAgICAgICAgIC8vIHkgY29vcmRpbmF0ZSBpcyBiZWxvdyBsYXN0IHJvb3QgbGluZSBi
b3gsIHByZXRlbmQgd2UgaGl0IGl0CisgICAgICAgICAgICByZXR1cm4gbGFzdFJvb3RCb3goKS0+
b2JqZWN0KCktPnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoY29udGVudHNYLCBsYXN0Um9vdEJveCgp
LT5tX3kpOwogCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obiwgMCwgRE9XTlNUUkVB
TSk7CiAgICAgfQogICAgIAotICAgIC8vIFNlZSBpZiBhbnkgY2hpbGQgYmxvY2tzIGV4aXN0IGF0
IHRoaXMgeSBjb29yZGluYXRlLgorICAgIC8vIENoZWNrIHRvcC9ib3R0b20gY2hpbGQtbWFyZ2lu
L3BhcmVudC1wYWRkaW5nIGZvciBjbGlja3MgYW5kIHBsYWNlIHRoZW0gaW4gdGhlIGZpcnN0L2xh
c3QgY2hpbGQKKyAgICAvLyBGSVhNRTogVGhpcyB3aWxsIG5vdCBjb3JyZWN0bHkgaGFuZGxlIGZp
cnN0IG9yIGxhc3QgY2hpbGRyZW4gYmVpbmcgcG9zaXRpb25lZCBvciBub24tdmlzaWJsZQogICAg
IGlmIChmaXJzdENoaWxkQm94KCkgJiYgY29udGVudHNZIDwgZmlyc3RDaGlsZEJveCgpLT55KCkp
Ci0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obiwgMCwgRE9XTlNUUkVBTSk7Ci0gICAg
Zm9yIChSZW5kZXJCb3gqIHJlbmRlcmVyID0gZmlyc3RDaGlsZEJveCgpOyByZW5kZXJlcjsgcmVu
ZGVyZXIgPSByZW5kZXJlci0+bmV4dFNpYmxpbmdCb3goKSkgewotICAgICAgICBpZiAocmVuZGVy
ZXItPmhlaWdodCgpID09IDAgfHwgcmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFIHx8IHJlbmRlcmVyLT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkpCisgICAgICAgIHJl
dHVybiBwb3NpdGlvbkZvckNvb3JkaW5hdGVzSW5DaGlsZCh0aGlzLCBmaXJzdENoaWxkQm94KCks
IGNvbnRlbnRzWCwgY29udGVudHNZKTsKKyAgICBpZiAobGFzdENoaWxkQm94KCkgJiYgY29udGVu
dHNZID4gbGFzdENoaWxkQm94KCktPnkoKSkKKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uRm9yQ29v
cmRpbmF0ZXNJbkNoaWxkKHRoaXMsIGxhc3RDaGlsZEJveCgpLCBjb250ZW50c1gsIGNvbnRlbnRz
WSk7CisKKyAgICBmb3IgKFJlbmRlckJveCogY2hpbGRCb3ggPSBmaXJzdENoaWxkQm94KCk7IGNo
aWxkQm94OyBjaGlsZEJveCA9IGNoaWxkQm94LT5uZXh0U2libGluZ0JveCgpKSB7CisgICAgICAg
IGlmIChjaGlsZEJveC0+aGVpZ2h0KCkgPT0gMCB8fCBjaGlsZEJveC0+c3R5bGUoKS0+dmlzaWJp
bGl0eSgpICE9IFZJU0lCTEUgfHwgY2hpbGRCb3gtPmlzRmxvYXRpbmdPclBvc2l0aW9uZWQoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBSZW5kZXJCb3gqIG5leHQgPSByZW5kZXJl
ci0+bmV4dFNpYmxpbmdCb3goKTsKLSAgICAgICAgd2hpbGUgKG5leHQgJiYgbmV4dC0+aXNGbG9h
dGluZ09yUG9zaXRpb25lZCgpKQotICAgICAgICAgICAgbmV4dCA9IG5leHQtPm5leHRTaWJsaW5n
Qm94KCk7Ci0gICAgICAgIGlmIChuZXh0KSAKLSAgICAgICAgICAgIGJvdHRvbSA9IG5leHQtPnko
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYm90dG9tID0gdG9wICsgc2Nyb2xsSGVpZ2h0
KCk7Ci0gICAgICAgIGlmIChjb250ZW50c1kgPj0gcmVuZGVyZXItPnkoKSAmJiBjb250ZW50c1kg
PCBib3R0b20pCi0gICAgICAgICAgICByZXR1cm4gcmVuZGVyZXItPnBvc2l0aW9uRm9yQ29vcmRp
bmF0ZXMoY29udGVudHNYIC0gcmVuZGVyZXItPngoKSwgY29udGVudHNZIC0gcmVuZGVyZXItPnko
KSk7CisgICAgICAgIC8vIFdlIGhpdCB0aGlzIGNoaWxkIGlmIG91ciBjbGljayB3YXMgYWJvdmUg
dGhlIGJvdHRvbSBvZiBpdHMgcGFkZGluZyBib3ggKGxpa2UgSUU2LzcgYW5kIEZGMykKKyAgICAg
ICAgaWYgKGNvbnRlbnRzWSA8IGNoaWxkQm94LT55KCkgKyBjaGlsZEJveC0+aGVpZ2h0KCkpCisg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb25Gb3JDb29yZGluYXRlc0luQ2hpbGQodGhpcywgY2hp
bGRCb3gsIGNvbnRlbnRzWCwgY29udGVudHNZKTsKICAgICB9Ci0gICAgCisKKyAgICAvLyBXZSBv
bmx5IGhpdCBoZXJlIGlmIHRoZXJlIGFyZSBubyBjaGlsZHJlbiwgb3Igb25seSBmbG9hdGVkL3Bv
c2l0aW9uZWQsIG9yIG9ubHkgbm9uLXZpc2libGUgYmxvY2sgY2hpbGRyZW4gYmVsb3cgdGhlIGNs
aWNrCiAgICAgcmV0dXJuIFJlbmRlckNvbnRhaW5lcjo6cG9zaXRpb25Gb3JDb29yZGluYXRlcyh4
LCB5KTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29udGFpbmVy
LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbnRhaW5lci5jcHAKaW5kZXggNzFlNWQw
OS4uNDNlOGJjMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29udGFpbmVy
LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwCkBAIC01OTEs
OCArNTkxLDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlckNvbnRhaW5lcjo6cG9zaXRpb25Gb3JD
b29yZGluYXRlcyhpbnQgeFBvcywgaW50IHlQb3MpCiAgICAgICAgIGlmICh4UG9zIDwgMCB8fCB4
UG9zID4gcmlnaHQgfHwgeVBvcyA8IDAgfHwgeVBvcyA+IGJvdHRvbSkgewogICAgICAgICAgICAg
aWYgKHhQb3MgPD0gcmlnaHQgLyAyKQogICAgICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9z
aXRpb24oUG9zaXRpb24oZWxlbWVudCgpLCAwKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihQb3NpdGlvbihlbGVtZW50KCksIG1heERl
ZXBPZmZzZXQoZWxlbWVudCgpKSkpOworICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlv
bihQb3NpdGlvbihlbGVtZW50KCksIG1heERlZXBPZmZzZXQoZWxlbWVudCgpKSkpOwogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCBhYmU4YjJhLi44
NmU3MTY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTQ4NCw2ICs0ODQsNyBA
QCBWaXNpYmxlUG9zaXRpb24gUmVuZGVySW5saW5lOjpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKGlu
dCB4LCBpbnQgeSkKICAgICB3aGlsZSAoYykgewogICAgICAgICBSZW5kZXJCb3gqIGNvbnRCbG9j
ayA9IGM7CiAgICAgICAgIGlmIChjLT5pc0lubGluZSgpIHx8IGMtPmZpcnN0Q2hpbGQoKSkKKyAg
ICAgICAgICAgIC8vIFRoZSBjb250aW51YXRpb25zIChhbm9ueW1vdXMgYmxvY2tzKSB3aWxsIG5l
dmVyIGJlIGVkaXRhYmxlLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGNyb3NzaW5n
IGVkaXRhYmxlIGJvdW5kYXJpZXMgaGVyZS4KICAgICAgICAgICAgIHJldHVybiBjLT5wb3NpdGlv
bkZvckNvb3JkaW5hdGVzKHBhcmVudEJsb2NrWCAtIGNvbnRCbG9jay0+eCgpLCBwYXJlbnRCbG9j
a1kgLSBjb250QmxvY2stPnkoKSk7CiAgICAgICAgIGMgPSB0b1JlbmRlckJsb2NrKGMpLT5pbmxp
bmVDb250aW51YXRpb24oKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27207</attachid>
            <date>2009-01-30 18:26:21 -0800</date>
            <delta_ts>2009-01-30 22:15:09 -0800</delta_ts>
            <desc>Fix bugs 23605 and 23607</desc>
            <filename>Fix-bugs-23605-and-23607.patch</filename>
            <type>text/plain</type>
            <size>38487</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">YmYzZGQyYWNkZWEzNGMxN2UyZWY1ZjU4ZTlhMDdkNGNiNWNiMzQ5ZApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdjOTgyZmMu
LjU0OGYwM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAwOS0wMS0zMCAgT2phbiBWYWZhaSA8
b2phbkBjaHJvbWl1bS5vcmc+IGFuZCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgY3Vyc29y
IHBvc2l0aW9ucyBtYXRjaCBJRTYvSUU3L0ZGMyB3aGVuIGNsaWNraW5nIGluIG1hcmdpbnMvcGFk
ZGluZworICAgICAgICBhcm91bmQgZGl2cyBpbnNpZGUgZWRpdGFibGUgcmVnaW9ucy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjA1CisgICAgICAg
IAorICAgICAgICBGaXggY2xpY2tzIG91dHNpZGUgZWRpdGFibGUgcmVnaW9ucyBmcm9tIGZvY3Vz
aW5nIHRoZSBlZGl0YWJsZSByZWdpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzYwNworICAgICAgICAKKyAgICAgICAgUmVtb3ZlZCBlZGl0aW5n
L3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS5odG1sIGFzIGl0J3MKKyAg
ICAgICAgbm90IGFzIHVzZWZ1bCBhcyBvdXIgbmV3IHRlc3RzLgorICAgICAgICAKKyAgICAgICAg
QWRkZWQgdGVzdHM6CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lu
cy1pbnNpZGUtZWRpdGFibGUtZGl2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2Vs
ZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2Lmh0bWw6IEFkZGVkLgorCisgICAgICAg
ICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2st
aW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stb3V0c2lkZS1lZGl0YWJs
ZS1kaXYuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVk
aXRhYmxlLWNsaWNrLW91dHNpZGUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Nl
bGVjdGlvbi9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
ZWRpdGluZy9leGVjQ29tbWFuZC9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbC4KKyAgICAgICAgKiBl
ZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFi
bGUtZGl2LmpzOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rp
b24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQuY2hlY2tzdW06IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0
YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Nl
bGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1mcm9tLXRleHRmaWVsZC1vdXR3YXJkcy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vY29u
dGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKwogMjAwOS0wMS0zMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0
YWJsZS1kaXYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xp
Y2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWYzZDExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFi
bGUtZGl2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIzIEBACitFbnN1cmUgY3Vyc29yIHBsYWNl
bWVudCBtYXRjaGVzIElFNi9JRTcvRkYzIHdoZW4gY2xpY2tpbmcgYWJvdmUvYmVsb3cgbGluZXMg
aW4gcGFkZGluZy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgU2VsZWN0
aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAwCitQQVNTIFNlbGVjdGlvbiBp
cyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMQorUEFTUyBTZWxlY3Rpb24gaXMgYXQg
bm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDIKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6
IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAwCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2Jq
ZWN0IFRleHRdIG9mZnNldDogMgorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBU
ZXh0XSBvZmZzZXQ6IDAKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0g
b2Zmc2V0OiAxCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNl
dDogMgorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDAK
K1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAxCitQQVNT
IFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMgorUEFTUyBTZWxl
Y3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDAKK1BBU1MgU2VsZWN0aW9u
IGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAxCitQQVNTIFNlbGVjdGlvbiBpcyBh
dCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5odG1sIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRp
dGFibGUtZGl2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg0Njcz
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNr
LWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmJhNzcxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stb3V0
c2lkZS1lZGl0YWJsZS1kaXYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK0Vuc3VyZSB0
aGF0IGNsaWNraW5nIGluIHRoZSBtYXJnaW5zIGFyb3VuZCBlZGl0YWJsZSBkaXZzIGRvZXMgbm90
IGdyYW50IGZvY3VzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDbGlj
ayBAIDUwLCA1MCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBDbGljayBAIDE1MCwgNTAgZGlk
IG5vdCBjYXVzZSBmb2N1cy4KK1BBU1MgQ2xpY2sgQCAyNTAsIDUwIGRpZCBub3QgY2F1c2UgZm9j
dXMuCitQQVNTIENsaWNrIEAgNTAsIDE1MCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBDbGlj
ayBAIDI1MCwgMTUwIGRpZCBub3QgY2F1c2UgZm9jdXMuCitQQVNTIENsaWNrIEAgNTAsIDI1MCBk
aWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBDbGljayBAIDE1MCwgMjUwIGRpZCBub3QgY2F1c2Ug
Zm9jdXMuCitQQVNTIENsaWNrIEAgMjUwLCAyNTAgZGlkIG5vdCBjYXVzZSBmb2N1cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1vdXRzaWRlLWVkaXRhYmxlLWRp
di5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stb3V0c2lkZS1lZGl0
YWJsZS1kaXYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDU1OWEw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2st
b3V0c2lkZS1lZGl0YWJsZS1kaXYuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jbGlj
ay1vdXRzaWRlLWVkaXRhYmxlLWRpdi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRl
ZGl0YWJsZS1jbGljay1vdXRzaWRlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5MGQ4ZWFlLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMyArMCwwIEBACi08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKLTwv
c2NyaXB0PgotPGRpdiBzdHlsZT0id2lkdGg6IDQwMHB4OyBoZWlnaHQ6IDUwcHg7IHBhZGRpbmc6
IDI1cHggMCAwIDI1cHg7IGJhY2tncm91bmQ6IHllbGxvdzsiPjxkaXYgY29udGVudGVkaXRhYmxl
PSJ0cnVlIiBzdHlsZT0iYmFja2dyb3VuZDogd2hpdGU7IGhlaWdodDoyMHB4OyB3aWR0aDoxMDBw
eCI+PC9kaXY+PC9kaXY+Ci08cD5UaGlzIHRlc3QgY2xpY2tzIG91dHNpZGUgYW4gZWRpdGFibGUg
ZGl2IGVsZW1lbnQsIGFuZCBtdXN0IG5vdCByZXN1bHQgaW4gdGhlIGVsZW1lbnQgcmVjZWl2aW5n
IGZvY3VzLiBJZiB0aGUgdGVzdCBzdWNjZWVkcyB0aGUgZWxlbWVudCBzaG91bGQgbm90IGhhdmUg
YSBmb2N1cyByaW5nLjwvcD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Ci0g
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMjI1LCA0NSk7Ci0gICAgZXZlbnRTZW5kZXIubW91
c2VEb3duKCk7Ci0gICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwotfQotPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvVEVNUExBVEUu
aHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9URU1QTEFURS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwY2U1NmMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvVEVNUExB
VEUuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9IllPVVJfSlNfRklMRV9IRVJFIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5q
cyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9jbGljay1pbi1tYXJn
aW5zLWluc2lkZS1lZGl0YWJsZS1kaXYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNjFiNzEzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL3Jlc291cmNlcy9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0YWJsZS1kaXYuanMK
QEAgLTAsMCArMSwxMzggQEAKK2Rlc2NyaXB0aW9uKCJFbnN1cmUgY3Vyc29yIHBsYWNlbWVudCBt
YXRjaGVzIElFNi9JRTcvRkYzIHdoZW4gY2xpY2tpbmcgYWJvdmUvYmVsb3cgbGluZXMgaW4gcGFk
ZGluZy4iKQorCitkb2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpbiA9IDA7CisKK3ZhciBkaXYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5zdHlsZS5jc3NUZXh0ID0gImZvbnQt
ZmFtaWx5OiBhaGVtOyBmb250LXNpemU6IDIwcHg7IC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB5
ZWxsb3c7IHdpZHRoOiA0MHB4OyBoZWlnaHQ6IDgwcHg7IHBhZGRpbmc6IDIwcHg7IGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOyI7CitkaXYuY29udGVudEVkaXRhYmxlID0gdHJ1ZTsKKwordmFyIGZp
cnN0VGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJYWCIpOwordmFyIGZpcnN0RGl2ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitmaXJzdERpdi5hcHBlbmRDaGlsZChmaXJz
dFRleHQpOworZmlyc3REaXYuc3R5bGUuY3NzVGV4dCA9ICJwYWRkaW5nLWJvdHRvbTogMTlweDsg
Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHBpbms7IG1hcmdpbi1ib3R0b206IDIwcHgiOworZGl2
LmFwcGVuZENoaWxkKGZpcnN0RGl2KTsKKwordmFyIHNlY29uZFRleHQgPSBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgiWVkiKTsKK3ZhciBzZWNvbmREaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKK3NlY29uZERpdi5hcHBlbmRDaGlsZChzZWNvbmRUZXh0KTsKK2Rpdi5hcHBlbmRD
aGlsZChzZWNvbmREaXYpOworCitkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShkaXYsIGRvY3Vt
ZW50LmJvZHkuZmlyc3RDaGlsZCk7CisKK2Z1bmN0aW9uIG9iamVjdEFzU3RyaW5nKG9iamVjdCwg
cHJvcGVydGllcykgeworICAgIHZhciByZXN1bHQgPSAiWyI7CisgICAgZm9yICh2YXIgeCA9IDA7
IHggPCBwcm9wZXJ0aWVzLmxlbmd0aDsgeCsrKSB7CisgICAgICAgIHZhciBwcm9wZXJ0eSA9IHBy
b3BlcnRpZXNbeF07CisgICAgICAgIGlmICh4ICE9IDApCisgICAgICAgICAgICByZXN1bHQgKz0g
IiAiOworCisgICAgICAgIHZhciB2YWx1ZSA9IG9iamVjdFtwcm9wZXJ0eV07CisgICAgICAgIGlm
ICh2YWx1ZSAmJiB2YWx1ZS5ub2RlVHlwZSkgLy8gdGV4dE5vZGUKKyAgICAgICAgICAgIHZhbHVl
ID0gdmFsdWUgKyAiKCAiICsgdmFsdWUubm9kZVZhbHVlICsgIiApIjsKKworICAgICAgICByZXN1
bHQgKz0gcHJvcGVydHkgKyAiOiAiICsgdmFsdWU7CisgICAgfQorICAgIHJlc3VsdCArPSAnXSc7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gc2VsZWN0aW9uQXNTdHJpbmcoc2Vs
KQoreworICAgIHZhciBwcm9wZXJ0aWVzID0gWydhbmNob3JOb2RlJywgJ2FuY2hvck9mZnNldCcs
ICdmb2N1c05vZGUnLCAnZm9jdXNPZmZzZXQnLCAnaXNDb2xsYXBzZWQnXTsKKyAgICByZXR1cm4g
b2JqZWN0QXNTdHJpbmcoc2VsLCBwcm9wZXJ0aWVzKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0UmFu
Z2Uobm9kZSwgb2Zmc2V0KSB7CisgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsK
KyAgICBpZiAoc2VsLmFuY2hvck5vZGUgPT0gbm9kZQorICAgICAgICAmJiBzZWwuZm9jdXNOb2Rl
ID09IG5vZGUKKyAgICAgICAgJiYgc2VsLmFuY2hvck9mZnNldCA9PSBvZmZzZXQKKyAgICAgICAg
JiYgc2VsLmZvY3VzT2Zmc2V0ID09IG9mZnNldAorICAgICAgICAmJiBzZWwuaXNDb2xsYXBzZWQp
IHsKKyAgICAgICAgdGVzdFBhc3NlZCgiU2VsZWN0aW9uIGlzIGF0IG5vZGU6ICIgKyBub2RlICsg
IiBvZmZzZXQ6ICIgKyBvZmZzZXQpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQo
IlNlbGVjdGlvbiBpcyAiICsgc2VsZWN0aW9uQXNTdHJpbmcoc2VsKSArICIgc2hvdWxkIGJlIGF0
IG5vZGU6ICIgKyBub2RlICsgIiBvZmZzZXQ6ICIgKyBvZmZzZXQpOworICAgIH0KK30KKworZnVu
Y3Rpb24gY2xpY2soeCwgeSkgeworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KK30KKworZnVuY3Rpb24gY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKHgs
IHksIG5vZGUsIG9mZnNldCkgeworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgY2xpY2soeCwgeSk7CisgICAgICAgIGFzc2VydFJhbmdlKG5vZGUsIG9mZnNldCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgdGVzdHMucHVzaCh7CisgICAgICAgICAgICB0ZXN0RnVuY3Rpb246
IGZ1bmN0aW9uKCkgeyBhc3NlcnRSYW5nZShub2RlLCBvZmZzZXQpOyB9LAorICAgICAgICAgICAg
Y2xpY2tTdHJpbmc6ICIgIiArIHggKyAiLCAiICsgeSB9CisgICAgICAgICkKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIHByaW50Q2xpY2tTdHJpbmdGb3JXYWl0aW5nVGVzdCgpCit7CisgICAgaWYgKCF0
ZXN0c1t0ZXN0SW5kZXhdKQorICAgICAgICByZXR1cm47CisgICAgZGVidWcoIldhaXRpbmcgZm9y
IGNsaWNrIEAgIiArIHRlc3RzW3Rlc3RJbmRleF0uY2xpY2tTdHJpbmcpOworfQorCit2YXIgdGVz
dEluZGV4ID0gMDsKK3ZhciB0ZXN0cyA9IFtdOworZnVuY3Rpb24gcnVuSW50ZXJhY3RpdmVUZXN0
cygpCit7CisgICAgdGVzdEluZGV4ID0gMDsKKyAgICBwcmludENsaWNrU3RyaW5nRm9yV2FpdGlu
Z1Rlc3QoKTsKKyAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoIkdvdCBjbGljayBAICIgKyBldmVudC5jbGllbnRY
ICsgIiwgIiArIGV2ZW50LmNsaWVudFkpOworICAgICAgICB2YXIgdGVzdCA9IHRlc3RzW3Rlc3RJ
bmRleF07CisgICAgICAgIGlmICh0ZXN0KSB7CisgICAgICAgICAgICB0ZXN0LnRlc3RGdW5jdGlv
bigpOworICAgICAgICAgICAgdGVzdEluZGV4Kys7CisgICAgICAgICAgICBwcmludENsaWNrU3Ry
aW5nRm9yV2FpdGluZ1Rlc3QoKTsKKyAgICAgICAgfQorICAgIH0sIGZhbHNlKTsKK30KKworLy8g
V2hlbiBjbGlja2luZyBiZXR3ZWVuIGRpdnMgc2VwYXJhdGVkIGJ5IG1hcmdpbnMgaW4gYW4gZWRp
dGFibGUKKy8vIHRleHQgcmVnaW9uLCB0aGUgYnJvd3NlcnMgZGlmZmVyIGluIGJlaGF2aW9yOgor
Ly8gRkYzOiB2ZXJ0aWNhbCBwYWRkaW5nIGJveCArIHNvbWUgc29ydCBvZiBvdmVyaGFuZyBkZWNl
bnQ/CisvLyBJRTYvSUU3OiB2ZXJ0aWNhbCBwYWRkaW5nIGJveAorLy8gSUU4IGIyOiBtYXJnaW4g
Ym94CisvLyBTYWZhcmkzOiBtYXJnaW4gYm94IChidXQgY3Vyc29yIGdvZXMgYXQgZW5kIG9mIGxp
bmUpCisKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSgxMCwgMTAsIGZpcnN0VGV4dCwgMCk7Citj
bGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNDAsIDEwLCBmaXJzdFRleHQsIDEpOworY2xpY2tTaG91
bGRSZXN1bHRJblJhbmdlKDcwLCAxMCwgZmlyc3RUZXh0LCAyKTsKKworY2xpY2tTaG91bGRSZXN1
bHRJblJhbmdlKDEwLCAzMCwgZmlyc3RUZXh0LCAwKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5n
ZSg3MCwgMzAsIGZpcnN0VGV4dCwgMik7CisKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSgxMCwg
NTAsIGZpcnN0VGV4dCwgMCk7CitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNDAsIDUwLCBmaXJz
dFRleHQsIDEpOworY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKDcwLCA1MCwgZmlyc3RUZXh0LCAy
KTsKKworLy8gV2UncmUgZ29pbmcgdG8gZm9sbG93IElFIDcncyBiZWhhdmlvciBhbmQgdXNlIHRo
ZSBwYWRkaW5nIGJveCBoZWlnaHQKKy8vIGZvciBkZXRlcm1pbmluZyBpZiB0aGUgY2xpY2sgYmVs
b3cgYSBkaXYgKGluIHRoZSBwYWRkaW5nL21hcmdpbiByZWdpb24pCitjbGlja1Nob3VsZFJlc3Vs
dEluUmFuZ2UoMTAsIDcwLCBzZWNvbmRUZXh0LCAwKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5n
ZSg0MCwgNzAsIHNlY29uZFRleHQsIDEpOworY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKDcwLCA3
MCwgc2Vjb25kVGV4dCwgMik7CisKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSgxMCwgMTEwLCBz
ZWNvbmRUZXh0LCAwKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSg0MCwgMTEwLCBzZWNvbmRU
ZXh0LCAxKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSg3MCwgMTEwLCBzZWNvbmRUZXh0LCAy
KTsKKworLy8gQ2xlYW4gdXAgYWZ0ZXIgb3Vyc2VsdmVzIGlmIHdlJ3JlIG5vdCBiZWluZyBydW4g
aW4gdGhlIGJyb3dzZXIKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBkb2N1bWVudC5i
b2R5LnJlbW92ZUNoaWxkKGRpdik7Cit9IGVsc2UgeworICAgIHJ1bkludGVyYWN0aXZlVGVzdHMo
KTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVz
b3VyY2VzL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LmpzIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1OWJjYzAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2stb3V0c2lkZS1l
ZGl0YWJsZS1kaXYuanMKQEAgLTAsMCArMSw1MCBAQAorZGVzY3JpcHRpb24oIkVuc3VyZSB0aGF0
IGNsaWNraW5nIGluIHRoZSBtYXJnaW5zIGFyb3VuZCBlZGl0YWJsZSBkaXZzIGRvZXMgbm90IGdy
YW50IGZvY3VzLiIpCisKK2RvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luID0gIjBweCI7CisKK3Zh
ciBvdXRlckRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworb3V0ZXJEaXYuc3R5
bGUuY3NzVGV4dCA9ICJ3aWR0aDogMTAwcHg7IHBhZGRpbmc6IDEwMHB4OyBiYWNrZ3JvdW5kLWNv
bG9yOiBibHVlOyI7Cit2YXIgaW5uZXJEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKK2lubmVyRGl2LnN0eWxlLmNzc1RleHQgPSAiaGVpZ2h0OiAxMDBweDsgYm9yZGVyOiAxcHgg
c29saWQgcGluazsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IjsKK2lubmVyRGl2LmNvbnRlbnRF
ZGl0YWJsZSA9IHRydWU7CitvdXRlckRpdi5hcHBlbmRDaGlsZChpbm5lckRpdik7Citkb2N1bWVu
dC5ib2R5Lmluc2VydEJlZm9yZShvdXRlckRpdiwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsK
KwordmFyIGxhc3RDbGlja0NhdXNlZEZvY3VzID0gZmFsc2U7Citkb2N1bWVudC5ib2R5LmFkZEV2
ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBmdW5jdGlvbihlKSB7CisgICAgdmFyIGxhc3RDbGljayA9
IGUgfHwgd2luZG93LmV2ZW50OworICAgIGlmIChsYXN0Q2xpY2tDYXVzZWRGb2N1cykgeworICAg
ICAgICB0ZXN0RmFpbGVkKCJDbGljayBAICIgKyBsYXN0Q2xpY2suY2xpZW50WCArICIsICIgKyBs
YXN0Q2xpY2suY2xpZW50WSArICIgY2F1c2VkIGlubmVyZGl2IHRvIGZvY3VzISIpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNsaWNrIEAgIiArIGxhc3RDbGljay5jbGllbnRY
ICsgIiwgIiArIGxhc3RDbGljay5jbGllbnRZICsgIiBkaWQgbm90IGNhdXNlIGZvY3VzLiIpOwor
ICAgIH0KKyAgICBpbm5lckRpdi5ibHVyKCk7CisgICAgbGFzdENsaWNrQ2F1c2VkRm9jdXMgPSBm
YWxzZTsKK30sIGZhbHNlKTsKKworaW5uZXJEaXYuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCBm
dW5jdGlvbigpIHsKKyAgICBsYXN0Q2xpY2tDYXVzZWRGb2N1cyA9IHRydWU7Cit9LCBmYWxzZSk7
CisKK2Z1bmN0aW9uIGNsaWNrQXQoeCwgeSkgeworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlVXAoKTsKK30KKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIGNsaWNrQXQoNTAs
IDUwKTsKKyAgICBjbGlja0F0KDE1MCwgNTApOworICAgIGNsaWNrQXQoMjUwLCA1MCk7CisKKyAg
ICBjbGlja0F0KDUwLCAxNTApOworICAgIGNsaWNrQXQoMjUwLCAxNTApOworCisgICAgY2xpY2tB
dCg1MCwgMjUwKTsKKyAgICBjbGlja0F0KDE1MCwgMjUwKTsKKyAgICBjbGlja0F0KDI1MCwgMjUw
KTsKK30gZWxzZSB7CisgICAgZGVidWcoIkNsaWNrIGluIGFsbCA4IHJlZ2lvbnMgYXJvdW5kIHRo
ZSBncmVlbiBkaXYgdG8gdGVzdC4iKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRz
aWRlLWV4cGVjdGVkLmNoZWNrc3VtIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
c2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLmNoZWNrc3Vt
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTkxN2YxLi4wMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUt
Y2xpY2stb3V0c2lkZS1leHBlY3RlZC5jaGVja3N1bQorKysgL2Rldi9udWxsCkBAIC0xICswLDAg
QEAKLTE2NTJmZDgxYjZjODdiOTg4YTAwMzMxOGY5ODE5Mzc4ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLnBuZyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xp
Y2stb3V0c2lkZS1leHBlY3RlZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2
YzE4ODIuLjAwMDAwMDAKQmluYXJ5IGZpbGVzIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLnBu
ZyBhbmQgL2Rldi9udWxsIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250
ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDE0YzZmYjAuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLUVESVRJTkcgREVMRUdBVEU6
IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAwIG9mIERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0
eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKLUVESVRJTkcgREVMRUdBVEU6IHNob3Vs
ZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0Rp
ZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1sYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKLWxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJCbG9jayB7SFRNTH0gYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCi0gICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3
ODR4NTc2Ci0gICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDQyNXg3NSBbYmdj
b2xvcj0jRkZGRjAwXQotICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMjUsMjUpIHNpemUg
MTAweDIwIFtiZ2NvbG9yPSNGRkZGRkZdCi0gICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsOTEp
IHNpemUgNzg0eDM2Ci0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc1
OXgzNgotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc1OTogIlRoaXMgdGVzdCBj
bGlja3Mgb3V0c2lkZSBhbiBlZGl0YWJsZSBkaXYgZWxlbWVudCwgYW5kIG11c3Qgbm90IHJlc3Vs
dCBpbiB0aGUgZWxlbWVudCByZWNlaXZpbmcgZm9jdXMuIElmIHRoZSB0ZXN0IHN1Y2NlZWRzIHRo
ZSIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMjM1OiAiZWxlbWVudCBzaG91
bGQgbm90IGhhdmUgYSBmb2N1cyByaW5nLiIKLWNhcmV0OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDAg
e0RJVn0gb2YgY2hpbGQgMCB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1M
fSBvZiBkb2N1bWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3Rl
ZC50eHQKaW5kZXggODQyYzJhMy4uYjQwNWRlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0
LWFsbC1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsOSBAQAogRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdl
OnJhbmdlIGZyb20gMCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA0IG9mIEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5n
OldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNo
b3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZp
bml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQor
RURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9t
IDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGls
bFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVH
QVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2YgI3RleHQg
PiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVh
bSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDUgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byA1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFm
ZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNF
CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZERlbGV0
ZURPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKIEVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1mcm9tLXRleHRmaWVsZC1vdXR3YXJkcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2Vs
ZWN0LWZyb20tdGV4dGZpZWxkLW91dHdhcmRzLWV4cGVjdGVkLnR4dAppbmRleCAxOGMzN2E2Li5i
MDY0NzQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxl
Y3Rpb24vc2VsZWN0LWZyb20tdGV4dGZpZWxkLW91dHdhcmRzLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWZyb20tdGV4
dGZpZWxkLW91dHdhcmRzLWV4cGVjdGVkLnR4dApAQCAtOCwxMCArOCwxMCBAQCBFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4
dCA+IERJViB0byAxMgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRF
OiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2YgI3RleHQgPiBE
SVYgdG8gMTcgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQg
PiBESVYgdG8gMTIgb2YgI3RleHQgPiBESVYgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURv
d25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgot
RURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9t
IDAgb2YgI3RleHQgPiBESVYgdG8gMTIgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBm
cm9tIDAgb2YgI3RleHQgPiBESVYgdG8gMTIgb2YgI3RleHQgPiBESVYgYWZmaW5pdHk6TlNTZWxl
Y3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVM
RUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0
ID4gRElWIHRvIDEyIG9mICN0ZXh0ID4gRElWIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAj
dGV4dCA+IERJViB0byAxNyBvZiAjdGV4dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmlu
aXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdl
IGZyb20gMTEgb2YgI3RleHQgPiBESVYgdG8gMTcgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpy
YW5nZSBmcm9tIDExIG9mICN0ZXh0ID4gRElWIHRvIDE3IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5
Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElU
SU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMTEg
b2YgI3RleHQgPiBESVYgdG8gMTcgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBmcm9t
IDExIG9mICN0ZXh0ID4gRElWIHRvIDE3IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0
aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBsYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKICAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKIGxheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vY29udGVu
dGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBiMzFmYTI3Li4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGlu
ZSA5OiBUeXBlRXJyb3I6IFZhbHVlIHVuZGVmaW5lZCAocmVzdWx0IG9mIGV4cHJlc3Npb24gZXZl
bnRTZW5kZXIubW92ZVRvKSBpcyBub3Qgb2JqZWN0LgotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCi0gIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi1sYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKLSAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAot
ICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3OAotICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA0MjV4NzUgW2JnY29sb3I9I0ZGRkYwMF0KLSAgICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDI1LDI1KSBzaXplIDEwMHgyMCBbYmdjb2xvcj0jRkZG
RkZGXQotICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDg5KSBzaXplIDc4NHgzOAotICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NzF4MzgKLSAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCA3NzE6ICJUaGlzIHRlc3QgY2xpY2tzIG91dHNpZGUgYW4gZWRp
dGFibGUgZGl2IGVsZW1lbnQsIGFuZCBtdXN0IG5vdCByZXN1bHQgaW4gdGhlIGVsZW1lbnQgcmVj
ZWl2aW5nIGZvY3VzLiBJZiB0aGUgdGVzdCBzdWNjZWVkcyB0aGUiCi0gICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMTkpIHdpZHRoIDIzODogImVsZW1lbnQgc2hvdWxkIG5vdCBoYXZlIGEgZm9jdXMg
cmluZy4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVj
dGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxMjIzMWMuLjAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFsbC1pZnJhbWUtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdl
OnJhbmdlIGZyb20gMCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA0IG9mIEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50Ci1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5n
OldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNo
b3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZp
bml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQot
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VT
ZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpG
QUxTRQotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRE
ZWxldGVET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
Ci1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5n
ZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rp
bmc6RkFMU0UKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCi1sYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLWxheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCi0gICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc4Ci0g
ICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDc4NHgxNzMKLSAgICAg
ICAgUmVuZGVyUGFydE9iamVjdCB7SUZSQU1FfSBhdCAoMCwwKSBzaXplIDMwNHgxNTQgW2JvcmRl
cjogKDJweCBpbnNldCAjMDAwMDAwKV0KLSAgICAgICAgICBsYXllciBhdCAoMCwwKSBzaXplIDMw
MHgxNTAKLSAgICAgICAgICAgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSAzMDB4MTUwCi0gICAg
ICAgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSAzMDB4MTUwCi0gICAgICAgICAgICBSZW5kZXJCbG9j
ayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSAzMDB4MTUwCi0gICAgICAgICAgICAgIFJlbmRlckJvZHkg
e0JPRFl9IGF0ICg4LDgpIHNpemUgMjg0eDEzNCBbYmdjb2xvcj0jRkZGRkUwXQotICAgICAgICAg
ICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgMjg0eDE5Ci0gICAgICAgICAg
ICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgxOQotICAgICAgICBSZW5kZXJC
UiB7QlJ9IGF0ICgzMDQsMTU0KSBzaXplIDB4MAotICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgw
LDE1NCkgc2l6ZSAweDE5Ci0gICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMTg3KSBzaXplIDc4
NHgzOQotICAgICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgNjgzeDIwCi0gICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNjgzeDIwCi0gICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1MTQ6ICJUaGlzIHRlc3QgdXNlcyB0aGUgZXZlbnRT
ZW5kZXIgdG8gZG8gYSBtb3VzZSBjbGljayB0byBmb2N1cyB0aGUgc3ViZnJhbWUuICIKLSAgICAg
ICAgICAgIHRleHQgcnVuIGF0ICg1MTQsMCkgd2lkdGggMTY5OiAiSXQgd29uJ3QgcnVuIGludGVy
YWN0aXZlbHkuIgotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDY4MywwKSBzaXplIDc0
MHgzOQotICAgICAgICAgIHRleHQgcnVuIGF0ICg2ODMsMCkgd2lkdGggNDogIiAiCi0gICAgICAg
ICAgdGV4dCBydW4gYXQgKDY4NywwKSB3aWR0aCA1MzogIlRvIHJ1biBpdCIKLSAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwyMCkgd2lkdGggMzQ4OiAibWFudWFsbHksIGNsaWNrIG9uIHRoZSBpZnJh
bWUsIFNlbGVjdCBBbGwsIHRoZW4gaGl0IGRlbGV0ZS4iCi0gICAgICBSZW5kZXJCbG9jayAoYW5v
bnltb3VzKSBhdCAoMCwyNDApIHNpemUgNzg0eDU3Ci0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwwKSBzaXplIDc3Nng1NwotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRo
IDc3NjogIlNlbGVjdGluZyBhbGwgdGhlIGNvbnRlbnQgaW4gYSBjb250ZW50ZWRpdGFibGUgaWZy
YW1lIHNob3VsZCBzZWxlY3QgdGhlIGlmcmFtZSBpdHNlbGYgKHRvIGhlbHAgdGhlIHVzZXIgZGVs
ZXRlIHRoZSBpZnJhbWUpIG9ubHkgaWYiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTkpIHdp
ZHRoIDIxOTogInRoZSBpZnJhbWUgaXMgaW4gYW4gZWRpdGFibGUgcmVnaW9uLiAiCi0gICAgICAg
ICAgdGV4dCBydW4gYXQgKDIxOSwxOSkgd2lkdGggNDMwOiAiVGhpcyB0ZXN0IGxvYWRzIC4uL3Jl
c291cmNlcy9zZWxlY3QtYWxsLWlmcmFtZS1zcmMuaHRtbCBpbnRvIGFuIGlmcmFtZS4gIgotICAg
ICAgICAgIHRleHQgcnVuIGF0ICg2NDksMTkpIHdpZHRoIDk4OiAiVGhhdCBmaWxlIGRvZXMgYSIK
LSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzOCkgd2lkdGggMTIzOiAiU2VsZWN0IEFsbCArIERl
bGV0ZS4gIgotICAgICAgICAgIHRleHQgcnVuIGF0ICgxMjMsMzgpIHdpZHRoIDE3MTogIlR3byB0
aGluZ3Mgc2hvdWxkIGhhcHBlbjoiCi0gICAgICBSZW5kZXJCbG9jayB7VUx9IGF0ICgwLDMxMSkg
c2l6ZSA3ODR4NTcKLSAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoNDAsMCkgc2l6ZSA3
NDR4MzgKLSAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgtMTcsMCkgc2l6ZSA3eDE5OiBi
dWxsZXQKLSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3Mjh4MzgK
LSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQ1MTogIlRoZSBTZWxlY3QgQWxs
IG9wZXJhdGlvbiBzaG91bGQgbm90IHNlbGVjdCB0aGUgaWZyYW1lLCBvbmx5IGl0J3MgY29udGVu
dHMuICIKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICg0NTEsMCkgd2lkdGggMjc3OiAiVGhlIHJl
c3VsdHMgb2YgdGhlIFNlbGVjdCBBbGwgd2lsbCBiZSBhcHBhcmVudCIKLSAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDE5KSB3aWR0aCA0NjQ6ICJmcm9tIHRoZSBkZWxlZ2F0ZSBtZXNzYWdlcyB0
aGF0IER1bXBSZW5kZXJUcmVlIHJlY2VpdmVzIGFuZCBkdW1wcy4iCi0gICAgICAgIFJlbmRlckxp
c3RJdGVtIHtMSX0gYXQgKDQwLDM4KSBzaXplIDc0NHgxOQotICAgICAgICAgIFJlbmRlckxpc3RN
YXJrZXIgYXQgKC0xNywwKSBzaXplIDd4MTk6IGJ1bGxldAotICAgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDM0MngxOQotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMzQyOiAiVGhlIGNvbnRlbnRzIG9mIHRoZSBlZGl0YWJsZSBpZnJhbWUgc2hvdWxk
IGJlIGRlbGV0ZWQuIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1ZDA4MmEzLi4wNGMxZjg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDA5LTAxLTMw
ICBPamFuIFZhZmFpIDxvamFuQGNocm9taXVtLm9yZz4gYW5kIEVyaWMgU2VpZGVsIDxlcmljQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWFrZSBjdXJzb3IgcG9zaXRpb25zIG1hdGNoIElFNi9JRTcvRkYzIHdoZW4gY2xpY2tpbmcg
aW4gbWFyZ2lucy9wYWRkaW5nCisgICAgICAgIGFyb3VuZCBkaXZzIGluc2lkZSBlZGl0YWJsZSBy
ZWdpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM2MDUKKyAgICAgICAgCisgICAgICAgIEZpeCBjbGlja3Mgb3V0c2lkZSBlZGl0YWJsZSByZWdp
b25zIGZyb20gZm9jdXNpbmcgdGhlIGVkaXRhYmxlIHJlZ2lvbi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjA3CisgICAgICAgIAorICAgICAgICBS
ZW1vdmVkIGVkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLmh0
bWwgYXMgaXQncworICAgICAgICBub3QgYXMgdXNlZnVsIGFzIG91ciBuZXcgdGVzdHMuCisKKyAg
ICAgICAgQWRkZWQgdGVzdHM6CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4t
bWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2Lmh0bWw6IEFkZGVkLgorCisg
ICAgICAgICogZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VmlzaWJsZVBvc2l0aW9uOjpjYW5vbmljYWxQb3NpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uRm9yQ29vcmRpbmF0
ZXNJbkNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwb3NpdGlvbkZvckNv
b3JkaW5hdGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ29udGFpbmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckNvbnRhaW5lcjo6cG9zaXRpb25Gb3JDb29yZGluYXRlcyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbmxpbmU6OnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMpOgorCiAyMDA5LTAxLTMwICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhdmUgSHlhdHQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRp
b24uY3BwIGIvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKaW5kZXggM2Q3NzFj
Ni4uYzM1MGJiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5j
cHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKQEAgLTQ5MiwxMCAr
NDkyLDEwIEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6Y2Fub25pY2FsUG9zaXRpb24oY29u
c3QgUG9zaXRpb24mIHBvc2l0aW9uKQogICAgIGJvb2wgbmV4dElzSW5TYW1lRWRpdGFibGVFbGVt
ZW50ID0gbmV4dE5vZGUgJiYgZWRpdGFibGVSb290Rm9yUG9zaXRpb24obmV4dCkgPT0gZWRpdGlu
Z1Jvb3Q7CiAgICAgaWYgKHByZXZJc0luU2FtZUVkaXRhYmxlRWxlbWVudCAmJiAhbmV4dElzSW5T
YW1lRWRpdGFibGVFbGVtZW50KQogICAgICAgICByZXR1cm4gcHJldjsKLSAgICAgICAgCisKICAg
ICBpZiAobmV4dElzSW5TYW1lRWRpdGFibGVFbGVtZW50ICYmICFwcmV2SXNJblNhbWVFZGl0YWJs
ZUVsZW1lbnQpCiAgICAgICAgIHJldHVybiBuZXh0OwotICAgICAgICAKKwogICAgIGlmICghbmV4
dElzSW5TYW1lRWRpdGFibGVFbGVtZW50ICYmICFwcmV2SXNJblNhbWVFZGl0YWJsZUVsZW1lbnQp
CiAgICAgICAgIHJldHVybiBQb3NpdGlvbigpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
aW5kZXggZGRlYWJiNy4uYTM3NThkMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAt
MzMyNSwyMiArMzMyNSw0OCBAQCBQb3NpdGlvbiBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JSZW5k
ZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBib29sIHN0YXJ0KSBjbwogICAgIHJldHVybiBQ
b3NpdGlvbihub2RlLCBvZmZzZXQpOwogfQogCisKKy8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNo
b3VsZCBtYXliZSBnbyBvbiBSZW5kZXJPYmplY3QgYW4gaW5zdGFuY2UgbWV0aG9kIHRoZW4KKy8v
IGFsbCBjYXNlcyBpbiB3aGljaCBwb3NpdGlvbkZvckNvb3JkaW5hdGVzIHJlY3Vyc2VzIGNvdWxk
IGNhbGwgdGhpcyBpbnN0ZWFkIHRvCisvLyBwcmV2ZW50IGNyb3NzaW5nIGVkaXRhYmxlIGJvdW5k
YXJpZXMuICBUaGlzIHdvdWxkIHJlcXVpcmUgbWFueSB0ZXN0cyEKK3N0YXRpYyBWaXNpYmxlUG9z
aXRpb24gcG9zaXRpb25Gb3JQb2ludFJlc3BlY3RpbmdFZGl0aW5nQm91bmRhcmllcyhSZW5kZXJC
b3gqIHBhcmVudCwgUmVuZGVyQm94KiBjaGlsZCwgY29uc3QgSW50UG9pbnQmIHBhcmVudENvb3Jk
cykKK3sKKyAgICBpbnQgeEluQ2hpbGRDb29yZHMgPSBwYXJlbnRDb29yZHMueCgpIC0gY2hpbGQt
PngoKTsKKyAgICBpbnQgeUluQ2hpbGRDb29yZHMgPSBwYXJlbnRDb29yZHMueSgpIC0gY2hpbGQt
PnkoKTsKKworICAgIC8vIElmIHRoaXMgaXMgYW4gYW5vbnltb3VzIHJlbmRlcmVyLCB3ZSBqdXN0
IHJlY3Vyc2Ugbm9ybWFsbHkKKyAgICBOb2RlKiBjaGlsZE5vZGUgPSBjaGlsZC0+ZWxlbWVudCgp
OworICAgIGlmICghY2hpbGROb2RlKQorICAgICAgICByZXR1cm4gY2hpbGQtPnBvc2l0aW9uRm9y
Q29vcmRpbmF0ZXMoeEluQ2hpbGRDb29yZHMsIHlJbkNoaWxkQ29vcmRzKTsKKworICAgIC8vIE90
aGVyd2lzZSwgZmlyc3QgbWFrZSBzdXJlIHRoYXQgdGhlIGVkaXRhYmlsaXR5IG9mIHRoZSBwYXJl
bnQgYW5kIGNoaWxkIGFncmVlIQorICAgIC8vIElmIHRoZXkgZG9uJ3QgYWdyZWUsIHRoZW4gd2Ug
cmV0dXJuIGEgdmlzaWJsZSBwb3NpdGlvbiBqdXN0IGJlZm9yZSBvciBhZnRlciB0aGUgY2hpbGQK
KyAgICBSZW5kZXJPYmplY3QqIGFuY2VzdG9yID0gcGFyZW50OworICAgIHdoaWxlIChhbmNlc3Rv
ciAmJiAhYW5jZXN0b3ItPmVsZW1lbnQoKSkKKyAgICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci0+
cGFyZW50KCk7CisgICAgCisgICAgLy8gSWYgd2UgY2FuJ3QgZmluZCBhbiBhbmNlc3RvciB0byBj
aGVjayBlZGl0YWJpbGl0eSBvbiwgb3IgZWRpdGliaWxpdHkgaXMgdW5jaGFuZ2VkLCB3ZSByZWN1
cnNlIGxpa2Ugbm9ybWFsCisgICAgaWYgKCFhbmNlc3RvciB8fCBhbmNlc3Rvci0+ZWxlbWVudCgp
LT5pc0NvbnRlbnRFZGl0YWJsZSgpID09IGNoaWxkTm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSkK
KyAgICAgICAgcmV0dXJuIGNoaWxkLT5wb3NpdGlvbkZvckNvb3JkaW5hdGVzKHhJbkNoaWxkQ29v
cmRzLCB5SW5DaGlsZENvb3Jkcyk7CisKKyAgICAvLyBPdGhlcndpc2UgcmV0dXJuIGJlZm9yZSBv
ciBhZnRlciB0aGUgY2hpbGQsIGRlcGVuZGluZyBvbiBpZiB0aGUgY2xpY2sgd2FzIGxlZnQgb3Ig
cmlnaHQgb2YgdGhlIGNoaWxkCisgICAgaW50IGNoaWxkTWlkWCA9IGNoaWxkLT53aWR0aCgpIC8g
MjsKKyAgICBpZiAoeEluQ2hpbGRDb29yZHMgPCBjaGlsZE1pZFgpCisgICAgICAgIHJldHVybiBW
aXNpYmxlUG9zaXRpb24oYW5jZXN0b3ItPmVsZW1lbnQoKSwgY2hpbGROb2RlLT5ub2RlSW5kZXgo
KSwgRE9XTlNUUkVBTSk7CisgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihhbmNlc3Rvci0+ZWxl
bWVudCgpLCBjaGlsZE5vZGUtPm5vZGVJbmRleCgpICsgMSwgVVBTVFJFQU0pOworfQorCiBWaXNp
YmxlUG9zaXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoaW50IHgsIGlu
dCB5KQogewogICAgIGlmIChpc1RhYmxlKCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJDb250YWlu
ZXI6OnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoeCwgeSk7IAogCi0gICAgaW50IHRvcCA9IGJvcmRl
clRvcCgpOwotICAgIGludCBib3R0b20gPSB0b3AgKyBwYWRkaW5nVG9wKCkgKyBjb250ZW50SGVp
Z2h0KCkgKyBwYWRkaW5nQm90dG9tKCk7Ci0KLSAgICBpbnQgbGVmdCA9IGJvcmRlckxlZnQoKTsK
LSAgICBpbnQgcmlnaHQgPSBsZWZ0ICsgcGFkZGluZ0xlZnQoKSArIGNvbnRlbnRXaWR0aCgpICsg
cGFkZGluZ1JpZ2h0KCk7Ci0KICAgICBOb2RlKiBuID0gZWxlbWVudCgpOwogICAgIAogICAgIGlu
dCBjb250ZW50c1ggPSB4OwogICAgIGludCBjb250ZW50c1kgPSB5OwogICAgIG9mZnNldEZvckNv
bnRlbnRzKGNvbnRlbnRzWCwgY29udGVudHNZKTsKKyAgICBJbnRQb2ludCBwb2ludEluQ29udGVu
dHMoY29udGVudHNYLCBjb250ZW50c1kpOwogCiAgICAgaWYgKGlzUmVwbGFjZWQoKSkgewogICAg
ICAgICBpZiAoeSA8IDAgfHwgeSA8IGhlaWdodCgpICYmIHggPCAwKQpAQCAtMzM0OSw1NSArMzM3
NSwxMyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yQ29vcmRpbmF0
ZXMoaW50IHgsIGludCB5KQogICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihuLCBj
YXJldE1heE9mZnNldCgpLCBET1dOU1RSRUFNKTsKICAgICB9IAogCi0gICAgLy8gSWYgd2Ugc3Rh
cnQgaW5zaWRlIHRoZSBzaGFkb3cgdHJlZSwgd2Ugd2lsbCBzdGF5IGluc2lkZSAoZXZlbiBpZiB0
aGUgcG9pbnQgaXMgYWJvdmUgb3IgYmVsb3cpLgotICAgIGlmICghKG4gJiYgbi0+aXNTaGFkb3dO
b2RlKCkpICYmICFjaGlsZHJlbklubGluZSgpKSB7Ci0gICAgICAgIC8vIERvbid0IHJldHVybiBw
b3NpdGlvbnMgaW5zaWRlIGVkaXRhYmxlIHJvb3RzIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIHRo
b3NlIHJvb3RzLCBleGNlcHQgZm9yIGNvb3JkaW5hdGVzIG91dHNpZGUKLSAgICAgICAgLy8gYSBk
b2N1bWVudCB0aGF0IGlzIGVudGlyZWx5IGVkaXRhYmxlLgotICAgICAgICBib29sIGlzRWRpdGFi
bGVSb290ID0gbiAmJiBuLT5yb290RWRpdGFibGVFbGVtZW50KCkgPT0gbiAmJiAhbi0+aGFzVGFn
TmFtZShib2R5VGFnKSAmJiAhbi0+aGFzVGFnTmFtZShodG1sVGFnKTsKLQotICAgICAgICBpZiAo
eSA8IHRvcCB8fCAoaXNFZGl0YWJsZVJvb3QgJiYgKHkgPCBib3R0b20gJiYgeCA8IGxlZnQpKSkg
ewotICAgICAgICAgICAgaWYgKCFpc0VkaXRhYmxlUm9vdCkKLSAgICAgICAgICAgICAgICBpZiAo
UmVuZGVyQm94KiBjID0gZmlyc3RDaGlsZEJveCgpKSB7IC8vIEZJWE1FOiBUaGlzIGNvZGUgZG9l
c24ndCBtYWtlIGFueSBzZW5zZS4gIFRoaXMgY2hpbGQgY291bGQgYmUgYW4gaW5saW5lIG9yIGEg
cG9zaXRpb25lZCBlbGVtZW50IG9yIGEgZmxvYXQsIGV0Yy4KLSAgICAgICAgICAgICAgICAgICAg
VmlzaWJsZVBvc2l0aW9uIHAgPSBjLT5wb3NpdGlvbkZvckNvb3JkaW5hdGVzKGNvbnRlbnRzWCAt
IGMtPngoKSwgY29udGVudHNZIC0gYy0+eSgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHAu
aXNOb3ROdWxsKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcDsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobikgewotICAgICAgICAgICAgICAgIGlmIChOb2Rl
KiBzcCA9IG4tPnNoYWRvd1BhcmVudE5vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgbiA9IHNw
OwotICAgICAgICAgICAgICAgIGlmIChOb2RlKiBwID0gbi0+cGFyZW50KCkpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24ocCwgbi0+bm9kZUluZGV4KCksIERPV05T
VFJFQU0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlv
bihuLCAwLCBET1dOU1RSRUFNKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh5ID49IGJvdHRv
bSB8fCAoaXNFZGl0YWJsZVJvb3QgJiYgKHkgPj0gdG9wICYmIHggPj0gcmlnaHQpKSkgewotICAg
ICAgICAgICAgaWYgKCFpc0VkaXRhYmxlUm9vdCkKLSAgICAgICAgICAgICAgICBpZiAoUmVuZGVy
Qm94KiBjID0gbGFzdENoaWxkQm94KCkpIHsgLy8gRklYTUU6IFRoaXMgY29kZSBkb2Vzbid0IG1h
a2UgYW55IHNlbnNlLiAgVGhpcyBjaGlsZCBjb3VsZCBiZSBhbiBpbmxpbmUgb3IgYSBwb3NpdGlv
bmVkIGVsZW1lbnQgb3IgYSBmbG9hdCwgZXRjLgotICAgICAgICAgICAgICAgICAgICBWaXNpYmxl
UG9zaXRpb24gcCA9IGMtPnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoY29udGVudHNYIC0gYy0+eCgp
LCBjb250ZW50c1kgLSBjLT55KCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAocC5pc05vdE51
bGwoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChuKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE5vZGUqIHNwID0g
bi0+c2hhZG93UGFyZW50Tm9kZSgpKQotICAgICAgICAgICAgICAgICAgICBuID0gc3A7Ci0gICAg
ICAgICAgICAgICAgaWYgKE5vZGUqIHAgPSBuLT5wYXJlbnQoKSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihwLCBuLT5ub2RlSW5kZXgoKSArIDEsIERPV05TVFJF
QU0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihu
LCAwLCBET1dOU1RSRUFNKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIGlmIChjaGlsZHJlbklu
bGluZSgpKSB7CiAgICAgICAgIGlmICghZmlyc3RSb290Qm94KCkpCiAgICAgICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKG4sIDAsIERPV05TVFJFQU0pOwogCi0gICAgICAgIGlmIChjb250
ZW50c1kgPCBmaXJzdFJvb3RCb3goKS0+dG9wT3ZlcmZsb3coKSAtIHZlcnRpY2FsTGluZUNsaWNr
RnVkZ2VGYWN0b3IpCi0gICAgICAgICAgICAvLyB5IGNvb3JkaW5hdGUgaXMgYWJvdmUgZmlyc3Qg
cm9vdCBsaW5lIGJveAotICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihwb3NpdGlv
bkZvckJveChmaXJzdFJvb3RCb3goKS0+Zmlyc3RMZWFmQ2hpbGQoKSwgdHJ1ZSksIERPV05TVFJF
QU0pOwotICAgICAgICAKICAgICAgICAgLy8gbG9vayBmb3IgdGhlIGNsb3Nlc3QgbGluZSBib3gg
aW4gdGhlIHJvb3QgYm94IHdoaWNoIGlzIGF0IHRoZSBwYXNzZWQtaW4geSBjb29yZGluYXRlCiAg
ICAgICAgIGZvciAoUm9vdElubGluZUJveCogcm9vdCA9IGZpcnN0Um9vdEJveCgpOyByb290OyBy
b290ID0gcm9vdC0+bmV4dFJvb3RCb3goKSkgeworICAgICAgICAgICAgaW50IGJvdHRvbTsKICAg
ICAgICAgICAgIC8vIHNldCB0aGUgYm90dG9tIGJhc2VkIG9uIHdoZXRoZXIgdGhlcmUgaXMgYSBu
ZXh0IHJvb3QgYm94CiAgICAgICAgICAgICBpZiAocm9vdC0+bmV4dFJvb3RCb3goKSkKICAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogbWFrZSB0aGUgYnJlYWsgcG9pbnQgaGFsZndheSBiZXR3ZWVu
IHRoZSBib3R0b20gb2YgdGhlIHByZXZpb3VzIHJvb3QgYm94IGFuZCB0aGUgdG9wIG9mIHRoZSBu
ZXh0IHJvb3QgYm94CkBAIC0zNDE0LDI5ICszMzk4LDI4IEBAIFZpc2libGVQb3NpdGlvbiBSZW5k
ZXJCbG9jazo6cG9zaXRpb25Gb3JDb29yZGluYXRlcyhpbnQgeCwgaW50IHkpCiAgICAgICAgIH0K
IAogICAgICAgICBpZiAobGFzdFJvb3RCb3goKSkKLSAgICAgICAgICAgIC8vIHkgY29vcmRpbmF0
ZSBpcyBiZWxvdyBsYXN0IHJvb3QgbGluZSBib3gKLSAgICAgICAgICAgIHJldHVybiBWaXNpYmxl
UG9zaXRpb24ocG9zaXRpb25Gb3JCb3gobGFzdFJvb3RCb3goKS0+bGFzdExlYWZDaGlsZCgpLCBm
YWxzZSksIERPV05TVFJFQU0pOworICAgICAgICAgICAgLy8geSBjb29yZGluYXRlIGlzIGJlbG93
IGxhc3Qgcm9vdCBsaW5lIGJveCwgcHJldGVuZCB3ZSBoaXQgaXQKKyAgICAgICAgICAgIHJldHVy
biBsYXN0Um9vdEJveCgpLT5vYmplY3QoKS0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyhjb250ZW50
c1gsIGxhc3RSb290Qm94KCktPm1feSk7CiAKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlv
bihuLCAwLCBET1dOU1RSRUFNKTsKICAgICB9CiAgICAgCi0gICAgLy8gU2VlIGlmIGFueSBjaGls
ZCBibG9ja3MgZXhpc3QgYXQgdGhpcyB5IGNvb3JkaW5hdGUuCisgICAgLy8gQ2hlY2sgdG9wL2Jv
dHRvbSBjaGlsZC1tYXJnaW4vcGFyZW50LXBhZGRpbmcgZm9yIGNsaWNrcyBhbmQgcGxhY2UgdGhl
bSBpbiB0aGUgZmlyc3QvbGFzdCBjaGlsZAorICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgbm90IGNv
cnJlY3RseSBoYW5kbGUgZmlyc3Qgb3IgbGFzdCBjaGlsZHJlbiBiZWluZyBwb3NpdGlvbmVkIG9y
IG5vbi12aXNpYmxlCiAgICAgaWYgKGZpcnN0Q2hpbGRCb3goKSAmJiBjb250ZW50c1kgPCBmaXJz
dENoaWxkQm94KCktPnkoKSkKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihuLCAwLCBE
T1dOU1RSRUFNKTsKLSAgICBmb3IgKFJlbmRlckJveCogcmVuZGVyZXIgPSBmaXJzdENoaWxkQm94
KCk7IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5uZXh0U2libGluZ0JveCgpKSB7Ci0g
ICAgICAgIGlmIChyZW5kZXJlci0+aGVpZ2h0KCkgPT0gMCB8fCByZW5kZXJlci0+c3R5bGUoKS0+
dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcmVuZGVyZXItPmlzRmxvYXRpbmdPclBvc2l0aW9u
ZWQoKSkKKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uRm9yUG9pbnRSZXNwZWN0aW5nRWRpdGluZ0Jv
dW5kYXJpZXModGhpcywgZmlyc3RDaGlsZEJveCgpLCBwb2ludEluQ29udGVudHMpOworICAgIGlm
IChsYXN0Q2hpbGRCb3goKSAmJiBjb250ZW50c1kgPiBsYXN0Q2hpbGRCb3goKS0+eSgpKQorICAg
ICAgICByZXR1cm4gcG9zaXRpb25Gb3JQb2ludFJlc3BlY3RpbmdFZGl0aW5nQm91bmRhcmllcyh0
aGlzLCBsYXN0Q2hpbGRCb3goKSwgcG9pbnRJbkNvbnRlbnRzKTsKKworICAgIGZvciAoUmVuZGVy
Qm94KiBjaGlsZEJveCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGRCb3g7IGNoaWxkQm94ID0gY2hp
bGRCb3gtPm5leHRTaWJsaW5nQm94KCkpIHsKKyAgICAgICAgaWYgKGNoaWxkQm94LT5oZWlnaHQo
KSA9PSAwIHx8IGNoaWxkQm94LT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBj
aGlsZEJveC0+aXNGbG9hdGluZ09yUG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIFJlbmRlckJveCogbmV4dCA9IHJlbmRlcmVyLT5uZXh0U2libGluZ0JveCgpOwot
ICAgICAgICB3aGlsZSAobmV4dCAmJiBuZXh0LT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkpCi0g
ICAgICAgICAgICBuZXh0ID0gbmV4dC0+bmV4dFNpYmxpbmdCb3goKTsKLSAgICAgICAgaWYgKG5l
eHQpIAotICAgICAgICAgICAgYm90dG9tID0gbmV4dC0+eSgpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBib3R0b20gPSB0b3AgKyBzY3JvbGxIZWlnaHQoKTsKLSAgICAgICAgaWYgKGNvbnRl
bnRzWSA+PSByZW5kZXJlci0+eSgpICYmIGNvbnRlbnRzWSA8IGJvdHRvbSkKLSAgICAgICAgICAg
IHJldHVybiByZW5kZXJlci0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyhjb250ZW50c1ggLSByZW5k
ZXJlci0+eCgpLCBjb250ZW50c1kgLSByZW5kZXJlci0+eSgpKTsKKyAgICAgICAgLy8gV2UgaGl0
IHRoaXMgY2hpbGQgaWYgb3VyIGNsaWNrIHdhcyBhYm92ZSB0aGUgYm90dG9tIG9mIGl0cyBwYWRk
aW5nIGJveCAobGlrZSBJRTYvNyBhbmQgRkYzKQorICAgICAgICBpZiAoY29udGVudHNZIDwgY2hp
bGRCb3gtPnkoKSArIGNoaWxkQm94LT5oZWlnaHQoKSkKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbkZvclBvaW50UmVzcGVjdGluZ0VkaXRpbmdCb3VuZGFyaWVzKHRoaXMsIGNoaWxkQm94LCBw
b2ludEluQ29udGVudHMpOwogICAgIH0KLSAgICAKKworICAgIC8vIFdlIG9ubHkgaGl0IGhlcmUg
aWYgdGhlcmUgYXJlIG5vIGNoaWxkcmVuLCBvciBvbmx5IGZsb2F0ZWQvcG9zaXRpb25lZCwgb3Ig
b25seSBub24tdmlzaWJsZSBibG9jayBjaGlsZHJlbiBiZWxvdyB0aGUgY2xpY2sKICAgICByZXR1
cm4gUmVuZGVyQ29udGFpbmVyOjpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKHgsIHkpOwogfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQ29udGFpbmVyLmNwcAppbmRleCA3MWU1ZDA5Li40M2U4YmMyIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbnRhaW5lci5jcHAKQEAgLTU5MSw4ICs1OTEsNyBAQCBW
aXNpYmxlUG9zaXRpb24gUmVuZGVyQ29udGFpbmVyOjpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKGlu
dCB4UG9zLCBpbnQgeVBvcykKICAgICAgICAgaWYgKHhQb3MgPCAwIHx8IHhQb3MgPiByaWdodCB8
fCB5UG9zIDwgMCB8fCB5UG9zID4gYm90dG9tKSB7CiAgICAgICAgICAgICBpZiAoeFBvcyA8PSBy
aWdodCAvIDIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihQb3NpdGlv
bihlbGVtZW50KCksIDApKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKGVsZW1lbnQoKSwgbWF4RGVlcE9mZnNldChlbGVt
ZW50KCkpKSk7CisgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKGVs
ZW1lbnQoKSwgbWF4RGVlcE9mZnNldChlbGVtZW50KCkpKSk7CiAgICAgICAgIH0KICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IGFiZThiMmEuLjg2ZTcxNjcgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtNDg0LDYgKzQ4NCw3IEBAIFZpc2libGVQb3Np
dGlvbiBSZW5kZXJJbmxpbmU6OnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoaW50IHgsIGludCB5KQog
ICAgIHdoaWxlIChjKSB7CiAgICAgICAgIFJlbmRlckJveCogY29udEJsb2NrID0gYzsKICAgICAg
ICAgaWYgKGMtPmlzSW5saW5lKCkgfHwgYy0+Zmlyc3RDaGlsZCgpKQorICAgICAgICAgICAgLy8g
VGhlIGNvbnRpbnVhdGlvbnMgKGFub255bW91cyBibG9ja3MpIHdpbGwgbmV2ZXIgYmUgZWRpdGFi
bGUsIHNvIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgY3Jvc3NpbmcgZWRpdGFibGUgYm91
bmRhcmllcyBoZXJlLgogICAgICAgICAgICAgcmV0dXJuIGMtPnBvc2l0aW9uRm9yQ29vcmRpbmF0
ZXMocGFyZW50QmxvY2tYIC0gY29udEJsb2NrLT54KCksIHBhcmVudEJsb2NrWSAtIGNvbnRCbG9j
ay0+eSgpKTsKICAgICAgICAgYyA9IHRvUmVuZGVyQmxvY2soYyktPmlubGluZUNvbnRpbnVhdGlv
bigpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27210</attachid>
            <date>2009-01-30 22:12:58 -0800</date>
            <delta_ts>2009-01-30 22:15:18 -0800</delta_ts>
            <desc>Fix bugs 23605 and 23607</desc>
            <filename>Fix-bugs-23605-and-23607.patch</filename>
            <type>text/plain</type>
            <size>38487</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">YmYzZGQyYWNkZWEzNGMxN2UyZWY1ZjU4ZTlhMDdkNGNiNWNiMzQ5ZApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdjOTgyZmMu
LjU0OGYwM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAwOS0wMS0zMCAgT2phbiBWYWZhaSA8
b2phbkBjaHJvbWl1bS5vcmc+IGFuZCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgY3Vyc29y
IHBvc2l0aW9ucyBtYXRjaCBJRTYvSUU3L0ZGMyB3aGVuIGNsaWNraW5nIGluIG1hcmdpbnMvcGFk
ZGluZworICAgICAgICBhcm91bmQgZGl2cyBpbnNpZGUgZWRpdGFibGUgcmVnaW9ucy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjA1CisgICAgICAg
IAorICAgICAgICBGaXggY2xpY2tzIG91dHNpZGUgZWRpdGFibGUgcmVnaW9ucyBmcm9tIGZvY3Vz
aW5nIHRoZSBlZGl0YWJsZSByZWdpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzYwNworICAgICAgICAKKyAgICAgICAgUmVtb3ZlZCBlZGl0aW5n
L3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS5odG1sIGFzIGl0J3MKKyAg
ICAgICAgbm90IGFzIHVzZWZ1bCBhcyBvdXIgbmV3IHRlc3RzLgorICAgICAgICAKKyAgICAgICAg
QWRkZWQgdGVzdHM6CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lu
cy1pbnNpZGUtZWRpdGFibGUtZGl2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2Vs
ZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2Lmh0bWw6IEFkZGVkLgorCisgICAgICAg
ICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2st
aW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stb3V0c2lkZS1lZGl0YWJs
ZS1kaXYuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVk
aXRhYmxlLWNsaWNrLW91dHNpZGUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Nl
bGVjdGlvbi9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
ZWRpdGluZy9leGVjQ29tbWFuZC9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbC4KKyAgICAgICAgKiBl
ZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFi
bGUtZGl2LmpzOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rp
b24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQuY2hlY2tzdW06IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0
YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Nl
bGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1mcm9tLXRleHRmaWVsZC1vdXR3YXJkcy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vY29u
dGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKwogMjAwOS0wMS0zMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0
YWJsZS1kaXYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xp
Y2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWYzZDExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFi
bGUtZGl2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIzIEBACitFbnN1cmUgY3Vyc29yIHBsYWNl
bWVudCBtYXRjaGVzIElFNi9JRTcvRkYzIHdoZW4gY2xpY2tpbmcgYWJvdmUvYmVsb3cgbGluZXMg
aW4gcGFkZGluZy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgU2VsZWN0
aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAwCitQQVNTIFNlbGVjdGlvbiBp
cyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMQorUEFTUyBTZWxlY3Rpb24gaXMgYXQg
bm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDIKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6
IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAwCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2Jq
ZWN0IFRleHRdIG9mZnNldDogMgorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBU
ZXh0XSBvZmZzZXQ6IDAKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0g
b2Zmc2V0OiAxCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNl
dDogMgorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDAK
K1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAxCitQQVNT
IFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMgorUEFTUyBTZWxl
Y3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDAKK1BBU1MgU2VsZWN0aW9u
IGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAxCitQQVNTIFNlbGVjdGlvbiBpcyBh
dCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5odG1sIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRp
dGFibGUtZGl2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg0Njcz
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNr
LWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmJhNzcxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stb3V0
c2lkZS1lZGl0YWJsZS1kaXYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK0Vuc3VyZSB0
aGF0IGNsaWNraW5nIGluIHRoZSBtYXJnaW5zIGFyb3VuZCBlZGl0YWJsZSBkaXZzIGRvZXMgbm90
IGdyYW50IGZvY3VzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDbGlj
ayBAIDUwLCA1MCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBDbGljayBAIDE1MCwgNTAgZGlk
IG5vdCBjYXVzZSBmb2N1cy4KK1BBU1MgQ2xpY2sgQCAyNTAsIDUwIGRpZCBub3QgY2F1c2UgZm9j
dXMuCitQQVNTIENsaWNrIEAgNTAsIDE1MCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBDbGlj
ayBAIDI1MCwgMTUwIGRpZCBub3QgY2F1c2UgZm9jdXMuCitQQVNTIENsaWNrIEAgNTAsIDI1MCBk
aWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBDbGljayBAIDE1MCwgMjUwIGRpZCBub3QgY2F1c2Ug
Zm9jdXMuCitQQVNTIENsaWNrIEAgMjUwLCAyNTAgZGlkIG5vdCBjYXVzZSBmb2N1cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1vdXRzaWRlLWVkaXRhYmxlLWRp
di5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stb3V0c2lkZS1lZGl0
YWJsZS1kaXYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDU1OWEw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2st
b3V0c2lkZS1lZGl0YWJsZS1kaXYuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jbGlj
ay1vdXRzaWRlLWVkaXRhYmxlLWRpdi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRl
ZGl0YWJsZS1jbGljay1vdXRzaWRlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5MGQ4ZWFlLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMyArMCwwIEBACi08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKLTwv
c2NyaXB0PgotPGRpdiBzdHlsZT0id2lkdGg6IDQwMHB4OyBoZWlnaHQ6IDUwcHg7IHBhZGRpbmc6
IDI1cHggMCAwIDI1cHg7IGJhY2tncm91bmQ6IHllbGxvdzsiPjxkaXYgY29udGVudGVkaXRhYmxl
PSJ0cnVlIiBzdHlsZT0iYmFja2dyb3VuZDogd2hpdGU7IGhlaWdodDoyMHB4OyB3aWR0aDoxMDBw
eCI+PC9kaXY+PC9kaXY+Ci08cD5UaGlzIHRlc3QgY2xpY2tzIG91dHNpZGUgYW4gZWRpdGFibGUg
ZGl2IGVsZW1lbnQsIGFuZCBtdXN0IG5vdCByZXN1bHQgaW4gdGhlIGVsZW1lbnQgcmVjZWl2aW5n
IGZvY3VzLiBJZiB0aGUgdGVzdCBzdWNjZWVkcyB0aGUgZWxlbWVudCBzaG91bGQgbm90IGhhdmUg
YSBmb2N1cyByaW5nLjwvcD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Ci0g
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMjI1LCA0NSk7Ci0gICAgZXZlbnRTZW5kZXIubW91
c2VEb3duKCk7Ci0gICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwotfQotPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvVEVNUExBVEUu
aHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9URU1QTEFURS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwY2U1NmMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvVEVNUExB
VEUuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9IllPVVJfSlNfRklMRV9IRVJFIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5q
cyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9jbGljay1pbi1tYXJn
aW5zLWluc2lkZS1lZGl0YWJsZS1kaXYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNjFiNzEzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL3Jlc291cmNlcy9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0YWJsZS1kaXYuanMK
QEAgLTAsMCArMSwxMzggQEAKK2Rlc2NyaXB0aW9uKCJFbnN1cmUgY3Vyc29yIHBsYWNlbWVudCBt
YXRjaGVzIElFNi9JRTcvRkYzIHdoZW4gY2xpY2tpbmcgYWJvdmUvYmVsb3cgbGluZXMgaW4gcGFk
ZGluZy4iKQorCitkb2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpbiA9IDA7CisKK3ZhciBkaXYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5zdHlsZS5jc3NUZXh0ID0gImZvbnQt
ZmFtaWx5OiBhaGVtOyBmb250LXNpemU6IDIwcHg7IC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB5
ZWxsb3c7IHdpZHRoOiA0MHB4OyBoZWlnaHQ6IDgwcHg7IHBhZGRpbmc6IDIwcHg7IGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOyI7CitkaXYuY29udGVudEVkaXRhYmxlID0gdHJ1ZTsKKwordmFyIGZp
cnN0VGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJYWCIpOwordmFyIGZpcnN0RGl2ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitmaXJzdERpdi5hcHBlbmRDaGlsZChmaXJz
dFRleHQpOworZmlyc3REaXYuc3R5bGUuY3NzVGV4dCA9ICJwYWRkaW5nLWJvdHRvbTogMTlweDsg
Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHBpbms7IG1hcmdpbi1ib3R0b206IDIwcHgiOworZGl2
LmFwcGVuZENoaWxkKGZpcnN0RGl2KTsKKwordmFyIHNlY29uZFRleHQgPSBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgiWVkiKTsKK3ZhciBzZWNvbmREaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKK3NlY29uZERpdi5hcHBlbmRDaGlsZChzZWNvbmRUZXh0KTsKK2Rpdi5hcHBlbmRD
aGlsZChzZWNvbmREaXYpOworCitkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShkaXYsIGRvY3Vt
ZW50LmJvZHkuZmlyc3RDaGlsZCk7CisKK2Z1bmN0aW9uIG9iamVjdEFzU3RyaW5nKG9iamVjdCwg
cHJvcGVydGllcykgeworICAgIHZhciByZXN1bHQgPSAiWyI7CisgICAgZm9yICh2YXIgeCA9IDA7
IHggPCBwcm9wZXJ0aWVzLmxlbmd0aDsgeCsrKSB7CisgICAgICAgIHZhciBwcm9wZXJ0eSA9IHBy
b3BlcnRpZXNbeF07CisgICAgICAgIGlmICh4ICE9IDApCisgICAgICAgICAgICByZXN1bHQgKz0g
IiAiOworCisgICAgICAgIHZhciB2YWx1ZSA9IG9iamVjdFtwcm9wZXJ0eV07CisgICAgICAgIGlm
ICh2YWx1ZSAmJiB2YWx1ZS5ub2RlVHlwZSkgLy8gdGV4dE5vZGUKKyAgICAgICAgICAgIHZhbHVl
ID0gdmFsdWUgKyAiKCAiICsgdmFsdWUubm9kZVZhbHVlICsgIiApIjsKKworICAgICAgICByZXN1
bHQgKz0gcHJvcGVydHkgKyAiOiAiICsgdmFsdWU7CisgICAgfQorICAgIHJlc3VsdCArPSAnXSc7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gc2VsZWN0aW9uQXNTdHJpbmcoc2Vs
KQoreworICAgIHZhciBwcm9wZXJ0aWVzID0gWydhbmNob3JOb2RlJywgJ2FuY2hvck9mZnNldCcs
ICdmb2N1c05vZGUnLCAnZm9jdXNPZmZzZXQnLCAnaXNDb2xsYXBzZWQnXTsKKyAgICByZXR1cm4g
b2JqZWN0QXNTdHJpbmcoc2VsLCBwcm9wZXJ0aWVzKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0UmFu
Z2Uobm9kZSwgb2Zmc2V0KSB7CisgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsK
KyAgICBpZiAoc2VsLmFuY2hvck5vZGUgPT0gbm9kZQorICAgICAgICAmJiBzZWwuZm9jdXNOb2Rl
ID09IG5vZGUKKyAgICAgICAgJiYgc2VsLmFuY2hvck9mZnNldCA9PSBvZmZzZXQKKyAgICAgICAg
JiYgc2VsLmZvY3VzT2Zmc2V0ID09IG9mZnNldAorICAgICAgICAmJiBzZWwuaXNDb2xsYXBzZWQp
IHsKKyAgICAgICAgdGVzdFBhc3NlZCgiU2VsZWN0aW9uIGlzIGF0IG5vZGU6ICIgKyBub2RlICsg
IiBvZmZzZXQ6ICIgKyBvZmZzZXQpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQo
IlNlbGVjdGlvbiBpcyAiICsgc2VsZWN0aW9uQXNTdHJpbmcoc2VsKSArICIgc2hvdWxkIGJlIGF0
IG5vZGU6ICIgKyBub2RlICsgIiBvZmZzZXQ6ICIgKyBvZmZzZXQpOworICAgIH0KK30KKworZnVu
Y3Rpb24gY2xpY2soeCwgeSkgeworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KK30KKworZnVuY3Rpb24gY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKHgs
IHksIG5vZGUsIG9mZnNldCkgeworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgY2xpY2soeCwgeSk7CisgICAgICAgIGFzc2VydFJhbmdlKG5vZGUsIG9mZnNldCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgdGVzdHMucHVzaCh7CisgICAgICAgICAgICB0ZXN0RnVuY3Rpb246
IGZ1bmN0aW9uKCkgeyBhc3NlcnRSYW5nZShub2RlLCBvZmZzZXQpOyB9LAorICAgICAgICAgICAg
Y2xpY2tTdHJpbmc6ICIgIiArIHggKyAiLCAiICsgeSB9CisgICAgICAgICkKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIHByaW50Q2xpY2tTdHJpbmdGb3JXYWl0aW5nVGVzdCgpCit7CisgICAgaWYgKCF0
ZXN0c1t0ZXN0SW5kZXhdKQorICAgICAgICByZXR1cm47CisgICAgZGVidWcoIldhaXRpbmcgZm9y
IGNsaWNrIEAgIiArIHRlc3RzW3Rlc3RJbmRleF0uY2xpY2tTdHJpbmcpOworfQorCit2YXIgdGVz
dEluZGV4ID0gMDsKK3ZhciB0ZXN0cyA9IFtdOworZnVuY3Rpb24gcnVuSW50ZXJhY3RpdmVUZXN0
cygpCit7CisgICAgdGVzdEluZGV4ID0gMDsKKyAgICBwcmludENsaWNrU3RyaW5nRm9yV2FpdGlu
Z1Rlc3QoKTsKKyAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoIkdvdCBjbGljayBAICIgKyBldmVudC5jbGllbnRY
ICsgIiwgIiArIGV2ZW50LmNsaWVudFkpOworICAgICAgICB2YXIgdGVzdCA9IHRlc3RzW3Rlc3RJ
bmRleF07CisgICAgICAgIGlmICh0ZXN0KSB7CisgICAgICAgICAgICB0ZXN0LnRlc3RGdW5jdGlv
bigpOworICAgICAgICAgICAgdGVzdEluZGV4Kys7CisgICAgICAgICAgICBwcmludENsaWNrU3Ry
aW5nRm9yV2FpdGluZ1Rlc3QoKTsKKyAgICAgICAgfQorICAgIH0sIGZhbHNlKTsKK30KKworLy8g
V2hlbiBjbGlja2luZyBiZXR3ZWVuIGRpdnMgc2VwYXJhdGVkIGJ5IG1hcmdpbnMgaW4gYW4gZWRp
dGFibGUKKy8vIHRleHQgcmVnaW9uLCB0aGUgYnJvd3NlcnMgZGlmZmVyIGluIGJlaGF2aW9yOgor
Ly8gRkYzOiB2ZXJ0aWNhbCBwYWRkaW5nIGJveCArIHNvbWUgc29ydCBvZiBvdmVyaGFuZyBkZWNl
bnQ/CisvLyBJRTYvSUU3OiB2ZXJ0aWNhbCBwYWRkaW5nIGJveAorLy8gSUU4IGIyOiBtYXJnaW4g
Ym94CisvLyBTYWZhcmkzOiBtYXJnaW4gYm94IChidXQgY3Vyc29yIGdvZXMgYXQgZW5kIG9mIGxp
bmUpCisKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSgxMCwgMTAsIGZpcnN0VGV4dCwgMCk7Citj
bGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNDAsIDEwLCBmaXJzdFRleHQsIDEpOworY2xpY2tTaG91
bGRSZXN1bHRJblJhbmdlKDcwLCAxMCwgZmlyc3RUZXh0LCAyKTsKKworY2xpY2tTaG91bGRSZXN1
bHRJblJhbmdlKDEwLCAzMCwgZmlyc3RUZXh0LCAwKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5n
ZSg3MCwgMzAsIGZpcnN0VGV4dCwgMik7CisKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSgxMCwg
NTAsIGZpcnN0VGV4dCwgMCk7CitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNDAsIDUwLCBmaXJz
dFRleHQsIDEpOworY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKDcwLCA1MCwgZmlyc3RUZXh0LCAy
KTsKKworLy8gV2UncmUgZ29pbmcgdG8gZm9sbG93IElFIDcncyBiZWhhdmlvciBhbmQgdXNlIHRo
ZSBwYWRkaW5nIGJveCBoZWlnaHQKKy8vIGZvciBkZXRlcm1pbmluZyBpZiB0aGUgY2xpY2sgYmVs
b3cgYSBkaXYgKGluIHRoZSBwYWRkaW5nL21hcmdpbiByZWdpb24pCitjbGlja1Nob3VsZFJlc3Vs
dEluUmFuZ2UoMTAsIDcwLCBzZWNvbmRUZXh0LCAwKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5n
ZSg0MCwgNzAsIHNlY29uZFRleHQsIDEpOworY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKDcwLCA3
MCwgc2Vjb25kVGV4dCwgMik7CisKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSgxMCwgMTEwLCBz
ZWNvbmRUZXh0LCAwKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSg0MCwgMTEwLCBzZWNvbmRU
ZXh0LCAxKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSg3MCwgMTEwLCBzZWNvbmRUZXh0LCAy
KTsKKworLy8gQ2xlYW4gdXAgYWZ0ZXIgb3Vyc2VsdmVzIGlmIHdlJ3JlIG5vdCBiZWluZyBydW4g
aW4gdGhlIGJyb3dzZXIKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBkb2N1bWVudC5i
b2R5LnJlbW92ZUNoaWxkKGRpdik7Cit9IGVsc2UgeworICAgIHJ1bkludGVyYWN0aXZlVGVzdHMo
KTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVz
b3VyY2VzL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LmpzIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1OWJjYzAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2stb3V0c2lkZS1l
ZGl0YWJsZS1kaXYuanMKQEAgLTAsMCArMSw1MCBAQAorZGVzY3JpcHRpb24oIkVuc3VyZSB0aGF0
IGNsaWNraW5nIGluIHRoZSBtYXJnaW5zIGFyb3VuZCBlZGl0YWJsZSBkaXZzIGRvZXMgbm90IGdy
YW50IGZvY3VzLiIpCisKK2RvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luID0gIjBweCI7CisKK3Zh
ciBvdXRlckRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworb3V0ZXJEaXYuc3R5
bGUuY3NzVGV4dCA9ICJ3aWR0aDogMTAwcHg7IHBhZGRpbmc6IDEwMHB4OyBiYWNrZ3JvdW5kLWNv
bG9yOiBibHVlOyI7Cit2YXIgaW5uZXJEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKK2lubmVyRGl2LnN0eWxlLmNzc1RleHQgPSAiaGVpZ2h0OiAxMDBweDsgYm9yZGVyOiAxcHgg
c29saWQgcGluazsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IjsKK2lubmVyRGl2LmNvbnRlbnRF
ZGl0YWJsZSA9IHRydWU7CitvdXRlckRpdi5hcHBlbmRDaGlsZChpbm5lckRpdik7Citkb2N1bWVu
dC5ib2R5Lmluc2VydEJlZm9yZShvdXRlckRpdiwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsK
KwordmFyIGxhc3RDbGlja0NhdXNlZEZvY3VzID0gZmFsc2U7Citkb2N1bWVudC5ib2R5LmFkZEV2
ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBmdW5jdGlvbihlKSB7CisgICAgdmFyIGxhc3RDbGljayA9
IGUgfHwgd2luZG93LmV2ZW50OworICAgIGlmIChsYXN0Q2xpY2tDYXVzZWRGb2N1cykgeworICAg
ICAgICB0ZXN0RmFpbGVkKCJDbGljayBAICIgKyBsYXN0Q2xpY2suY2xpZW50WCArICIsICIgKyBs
YXN0Q2xpY2suY2xpZW50WSArICIgY2F1c2VkIGlubmVyZGl2IHRvIGZvY3VzISIpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNsaWNrIEAgIiArIGxhc3RDbGljay5jbGllbnRY
ICsgIiwgIiArIGxhc3RDbGljay5jbGllbnRZICsgIiBkaWQgbm90IGNhdXNlIGZvY3VzLiIpOwor
ICAgIH0KKyAgICBpbm5lckRpdi5ibHVyKCk7CisgICAgbGFzdENsaWNrQ2F1c2VkRm9jdXMgPSBm
YWxzZTsKK30sIGZhbHNlKTsKKworaW5uZXJEaXYuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCBm
dW5jdGlvbigpIHsKKyAgICBsYXN0Q2xpY2tDYXVzZWRGb2N1cyA9IHRydWU7Cit9LCBmYWxzZSk7
CisKK2Z1bmN0aW9uIGNsaWNrQXQoeCwgeSkgeworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlVXAoKTsKK30KKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIGNsaWNrQXQoNTAs
IDUwKTsKKyAgICBjbGlja0F0KDE1MCwgNTApOworICAgIGNsaWNrQXQoMjUwLCA1MCk7CisKKyAg
ICBjbGlja0F0KDUwLCAxNTApOworICAgIGNsaWNrQXQoMjUwLCAxNTApOworCisgICAgY2xpY2tB
dCg1MCwgMjUwKTsKKyAgICBjbGlja0F0KDE1MCwgMjUwKTsKKyAgICBjbGlja0F0KDI1MCwgMjUw
KTsKK30gZWxzZSB7CisgICAgZGVidWcoIkNsaWNrIGluIGFsbCA4IHJlZ2lvbnMgYXJvdW5kIHRo
ZSBncmVlbiBkaXYgdG8gdGVzdC4iKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRz
aWRlLWV4cGVjdGVkLmNoZWNrc3VtIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
c2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLmNoZWNrc3Vt
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTkxN2YxLi4wMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUt
Y2xpY2stb3V0c2lkZS1leHBlY3RlZC5jaGVja3N1bQorKysgL2Rldi9udWxsCkBAIC0xICswLDAg
QEAKLTE2NTJmZDgxYjZjODdiOTg4YTAwMzMxOGY5ODE5Mzc4ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLnBuZyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xp
Y2stb3V0c2lkZS1leHBlY3RlZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2
YzE4ODIuLjAwMDAwMDAKQmluYXJ5IGZpbGVzIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLnBu
ZyBhbmQgL2Rldi9udWxsIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250
ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDE0YzZmYjAuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLUVESVRJTkcgREVMRUdBVEU6
IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAwIG9mIERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0
eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKLUVESVRJTkcgREVMRUdBVEU6IHNob3Vs
ZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0Rp
ZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1sYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKLWxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJCbG9jayB7SFRNTH0gYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCi0gICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3
ODR4NTc2Ci0gICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDQyNXg3NSBbYmdj
b2xvcj0jRkZGRjAwXQotICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMjUsMjUpIHNpemUg
MTAweDIwIFtiZ2NvbG9yPSNGRkZGRkZdCi0gICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsOTEp
IHNpemUgNzg0eDM2Ci0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc1
OXgzNgotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc1OTogIlRoaXMgdGVzdCBj
bGlja3Mgb3V0c2lkZSBhbiBlZGl0YWJsZSBkaXYgZWxlbWVudCwgYW5kIG11c3Qgbm90IHJlc3Vs
dCBpbiB0aGUgZWxlbWVudCByZWNlaXZpbmcgZm9jdXMuIElmIHRoZSB0ZXN0IHN1Y2NlZWRzIHRo
ZSIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMjM1OiAiZWxlbWVudCBzaG91
bGQgbm90IGhhdmUgYSBmb2N1cyByaW5nLiIKLWNhcmV0OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDAg
e0RJVn0gb2YgY2hpbGQgMCB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1M
fSBvZiBkb2N1bWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3Rl
ZC50eHQKaW5kZXggODQyYzJhMy4uYjQwNWRlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0
LWFsbC1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsOSBAQAogRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdl
OnJhbmdlIGZyb20gMCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA0IG9mIEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5n
OldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNo
b3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZp
bml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQor
RURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9t
IDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGls
bFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVH
QVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2YgI3RleHQg
PiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVh
bSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDUgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byA1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFm
ZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNF
CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZERlbGV0
ZURPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKIEVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1mcm9tLXRleHRmaWVsZC1vdXR3YXJkcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2Vs
ZWN0LWZyb20tdGV4dGZpZWxkLW91dHdhcmRzLWV4cGVjdGVkLnR4dAppbmRleCAxOGMzN2E2Li5i
MDY0NzQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxl
Y3Rpb24vc2VsZWN0LWZyb20tdGV4dGZpZWxkLW91dHdhcmRzLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWZyb20tdGV4
dGZpZWxkLW91dHdhcmRzLWV4cGVjdGVkLnR4dApAQCAtOCwxMCArOCwxMCBAQCBFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4
dCA+IERJViB0byAxMgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRF
OiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2YgI3RleHQgPiBE
SVYgdG8gMTcgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQg
PiBESVYgdG8gMTIgb2YgI3RleHQgPiBESVYgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURv
d25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgot
RURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9t
IDAgb2YgI3RleHQgPiBESVYgdG8gMTIgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBm
cm9tIDAgb2YgI3RleHQgPiBESVYgdG8gMTIgb2YgI3RleHQgPiBESVYgYWZmaW5pdHk6TlNTZWxl
Y3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVM
RUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0
ID4gRElWIHRvIDEyIG9mICN0ZXh0ID4gRElWIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAj
dGV4dCA+IERJViB0byAxNyBvZiAjdGV4dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmlu
aXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdl
IGZyb20gMTEgb2YgI3RleHQgPiBESVYgdG8gMTcgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpy
YW5nZSBmcm9tIDExIG9mICN0ZXh0ID4gRElWIHRvIDE3IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5
Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElU
SU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMTEg
b2YgI3RleHQgPiBESVYgdG8gMTcgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBmcm9t
IDExIG9mICN0ZXh0ID4gRElWIHRvIDE3IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0
aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBsYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKICAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKIGxheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vY29udGVu
dGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBiMzFmYTI3Li4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGlu
ZSA5OiBUeXBlRXJyb3I6IFZhbHVlIHVuZGVmaW5lZCAocmVzdWx0IG9mIGV4cHJlc3Npb24gZXZl
bnRTZW5kZXIubW92ZVRvKSBpcyBub3Qgb2JqZWN0LgotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCi0gIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi1sYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKLSAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAot
ICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3OAotICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA0MjV4NzUgW2JnY29sb3I9I0ZGRkYwMF0KLSAgICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDI1LDI1KSBzaXplIDEwMHgyMCBbYmdjb2xvcj0jRkZG
RkZGXQotICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDg5KSBzaXplIDc4NHgzOAotICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NzF4MzgKLSAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCA3NzE6ICJUaGlzIHRlc3QgY2xpY2tzIG91dHNpZGUgYW4gZWRp
dGFibGUgZGl2IGVsZW1lbnQsIGFuZCBtdXN0IG5vdCByZXN1bHQgaW4gdGhlIGVsZW1lbnQgcmVj
ZWl2aW5nIGZvY3VzLiBJZiB0aGUgdGVzdCBzdWNjZWVkcyB0aGUiCi0gICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMTkpIHdpZHRoIDIzODogImVsZW1lbnQgc2hvdWxkIG5vdCBoYXZlIGEgZm9jdXMg
cmluZy4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVj
dGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxMjIzMWMuLjAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFsbC1pZnJhbWUtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdl
OnJhbmdlIGZyb20gMCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA0IG9mIEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50Ci1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5n
OldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNo
b3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZp
bml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQot
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VT
ZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpG
QUxTRQotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRE
ZWxldGVET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
Ci1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5n
ZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rp
bmc6RkFMU0UKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCi1sYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLWxheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCi0gICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc4Ci0g
ICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDc4NHgxNzMKLSAgICAg
ICAgUmVuZGVyUGFydE9iamVjdCB7SUZSQU1FfSBhdCAoMCwwKSBzaXplIDMwNHgxNTQgW2JvcmRl
cjogKDJweCBpbnNldCAjMDAwMDAwKV0KLSAgICAgICAgICBsYXllciBhdCAoMCwwKSBzaXplIDMw
MHgxNTAKLSAgICAgICAgICAgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSAzMDB4MTUwCi0gICAg
ICAgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSAzMDB4MTUwCi0gICAgICAgICAgICBSZW5kZXJCbG9j
ayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSAzMDB4MTUwCi0gICAgICAgICAgICAgIFJlbmRlckJvZHkg
e0JPRFl9IGF0ICg4LDgpIHNpemUgMjg0eDEzNCBbYmdjb2xvcj0jRkZGRkUwXQotICAgICAgICAg
ICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgMjg0eDE5Ci0gICAgICAgICAg
ICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgxOQotICAgICAgICBSZW5kZXJC
UiB7QlJ9IGF0ICgzMDQsMTU0KSBzaXplIDB4MAotICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgw
LDE1NCkgc2l6ZSAweDE5Ci0gICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMTg3KSBzaXplIDc4
NHgzOQotICAgICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgNjgzeDIwCi0gICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNjgzeDIwCi0gICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1MTQ6ICJUaGlzIHRlc3QgdXNlcyB0aGUgZXZlbnRT
ZW5kZXIgdG8gZG8gYSBtb3VzZSBjbGljayB0byBmb2N1cyB0aGUgc3ViZnJhbWUuICIKLSAgICAg
ICAgICAgIHRleHQgcnVuIGF0ICg1MTQsMCkgd2lkdGggMTY5OiAiSXQgd29uJ3QgcnVuIGludGVy
YWN0aXZlbHkuIgotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDY4MywwKSBzaXplIDc0
MHgzOQotICAgICAgICAgIHRleHQgcnVuIGF0ICg2ODMsMCkgd2lkdGggNDogIiAiCi0gICAgICAg
ICAgdGV4dCBydW4gYXQgKDY4NywwKSB3aWR0aCA1MzogIlRvIHJ1biBpdCIKLSAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwyMCkgd2lkdGggMzQ4OiAibWFudWFsbHksIGNsaWNrIG9uIHRoZSBpZnJh
bWUsIFNlbGVjdCBBbGwsIHRoZW4gaGl0IGRlbGV0ZS4iCi0gICAgICBSZW5kZXJCbG9jayAoYW5v
bnltb3VzKSBhdCAoMCwyNDApIHNpemUgNzg0eDU3Ci0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwwKSBzaXplIDc3Nng1NwotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRo
IDc3NjogIlNlbGVjdGluZyBhbGwgdGhlIGNvbnRlbnQgaW4gYSBjb250ZW50ZWRpdGFibGUgaWZy
YW1lIHNob3VsZCBzZWxlY3QgdGhlIGlmcmFtZSBpdHNlbGYgKHRvIGhlbHAgdGhlIHVzZXIgZGVs
ZXRlIHRoZSBpZnJhbWUpIG9ubHkgaWYiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTkpIHdp
ZHRoIDIxOTogInRoZSBpZnJhbWUgaXMgaW4gYW4gZWRpdGFibGUgcmVnaW9uLiAiCi0gICAgICAg
ICAgdGV4dCBydW4gYXQgKDIxOSwxOSkgd2lkdGggNDMwOiAiVGhpcyB0ZXN0IGxvYWRzIC4uL3Jl
c291cmNlcy9zZWxlY3QtYWxsLWlmcmFtZS1zcmMuaHRtbCBpbnRvIGFuIGlmcmFtZS4gIgotICAg
ICAgICAgIHRleHQgcnVuIGF0ICg2NDksMTkpIHdpZHRoIDk4OiAiVGhhdCBmaWxlIGRvZXMgYSIK
LSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzOCkgd2lkdGggMTIzOiAiU2VsZWN0IEFsbCArIERl
bGV0ZS4gIgotICAgICAgICAgIHRleHQgcnVuIGF0ICgxMjMsMzgpIHdpZHRoIDE3MTogIlR3byB0
aGluZ3Mgc2hvdWxkIGhhcHBlbjoiCi0gICAgICBSZW5kZXJCbG9jayB7VUx9IGF0ICgwLDMxMSkg
c2l6ZSA3ODR4NTcKLSAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoNDAsMCkgc2l6ZSA3
NDR4MzgKLSAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgtMTcsMCkgc2l6ZSA3eDE5OiBi
dWxsZXQKLSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3Mjh4MzgK
LSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQ1MTogIlRoZSBTZWxlY3QgQWxs
IG9wZXJhdGlvbiBzaG91bGQgbm90IHNlbGVjdCB0aGUgaWZyYW1lLCBvbmx5IGl0J3MgY29udGVu
dHMuICIKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICg0NTEsMCkgd2lkdGggMjc3OiAiVGhlIHJl
c3VsdHMgb2YgdGhlIFNlbGVjdCBBbGwgd2lsbCBiZSBhcHBhcmVudCIKLSAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDE5KSB3aWR0aCA0NjQ6ICJmcm9tIHRoZSBkZWxlZ2F0ZSBtZXNzYWdlcyB0
aGF0IER1bXBSZW5kZXJUcmVlIHJlY2VpdmVzIGFuZCBkdW1wcy4iCi0gICAgICAgIFJlbmRlckxp
c3RJdGVtIHtMSX0gYXQgKDQwLDM4KSBzaXplIDc0NHgxOQotICAgICAgICAgIFJlbmRlckxpc3RN
YXJrZXIgYXQgKC0xNywwKSBzaXplIDd4MTk6IGJ1bGxldAotICAgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDM0MngxOQotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMzQyOiAiVGhlIGNvbnRlbnRzIG9mIHRoZSBlZGl0YWJsZSBpZnJhbWUgc2hvdWxk
IGJlIGRlbGV0ZWQuIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1ZDA4MmEzLi4wNGMxZjg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDA5LTAxLTMw
ICBPamFuIFZhZmFpIDxvamFuQGNocm9taXVtLm9yZz4gYW5kIEVyaWMgU2VpZGVsIDxlcmljQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWFrZSBjdXJzb3IgcG9zaXRpb25zIG1hdGNoIElFNi9JRTcvRkYzIHdoZW4gY2xpY2tpbmcg
aW4gbWFyZ2lucy9wYWRkaW5nCisgICAgICAgIGFyb3VuZCBkaXZzIGluc2lkZSBlZGl0YWJsZSBy
ZWdpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM2MDUKKyAgICAgICAgCisgICAgICAgIEZpeCBjbGlja3Mgb3V0c2lkZSBlZGl0YWJsZSByZWdp
b25zIGZyb20gZm9jdXNpbmcgdGhlIGVkaXRhYmxlIHJlZ2lvbi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjA3CisgICAgICAgIAorICAgICAgICBS
ZW1vdmVkIGVkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLmh0
bWwgYXMgaXQncworICAgICAgICBub3QgYXMgdXNlZnVsIGFzIG91ciBuZXcgdGVzdHMuCisKKyAg
ICAgICAgQWRkZWQgdGVzdHM6CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4t
bWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2Lmh0bWw6IEFkZGVkLgorCisg
ICAgICAgICogZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VmlzaWJsZVBvc2l0aW9uOjpjYW5vbmljYWxQb3NpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uRm9yQ29vcmRpbmF0
ZXNJbkNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwb3NpdGlvbkZvckNv
b3JkaW5hdGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ29udGFpbmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckNvbnRhaW5lcjo6cG9zaXRpb25Gb3JDb29yZGluYXRlcyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbmxpbmU6OnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMpOgorCiAyMDA5LTAxLTMwICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhdmUgSHlhdHQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRp
b24uY3BwIGIvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKaW5kZXggM2Q3NzFj
Ni4uYzM1MGJiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5j
cHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKQEAgLTQ5MiwxMCAr
NDkyLDEwIEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6Y2Fub25pY2FsUG9zaXRpb24oY29u
c3QgUG9zaXRpb24mIHBvc2l0aW9uKQogICAgIGJvb2wgbmV4dElzSW5TYW1lRWRpdGFibGVFbGVt
ZW50ID0gbmV4dE5vZGUgJiYgZWRpdGFibGVSb290Rm9yUG9zaXRpb24obmV4dCkgPT0gZWRpdGlu
Z1Jvb3Q7CiAgICAgaWYgKHByZXZJc0luU2FtZUVkaXRhYmxlRWxlbWVudCAmJiAhbmV4dElzSW5T
YW1lRWRpdGFibGVFbGVtZW50KQogICAgICAgICByZXR1cm4gcHJldjsKLSAgICAgICAgCisKICAg
ICBpZiAobmV4dElzSW5TYW1lRWRpdGFibGVFbGVtZW50ICYmICFwcmV2SXNJblNhbWVFZGl0YWJs
ZUVsZW1lbnQpCiAgICAgICAgIHJldHVybiBuZXh0OwotICAgICAgICAKKwogICAgIGlmICghbmV4
dElzSW5TYW1lRWRpdGFibGVFbGVtZW50ICYmICFwcmV2SXNJblNhbWVFZGl0YWJsZUVsZW1lbnQp
CiAgICAgICAgIHJldHVybiBQb3NpdGlvbigpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
aW5kZXggZGRlYWJiNy4uYTM3NThkMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAt
MzMyNSwyMiArMzMyNSw0OCBAQCBQb3NpdGlvbiBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JSZW5k
ZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBib29sIHN0YXJ0KSBjbwogICAgIHJldHVybiBQ
b3NpdGlvbihub2RlLCBvZmZzZXQpOwogfQogCisKKy8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNo
b3VsZCBtYXliZSBnbyBvbiBSZW5kZXJPYmplY3QgYW4gaW5zdGFuY2UgbWV0aG9kIHRoZW4KKy8v
IGFsbCBjYXNlcyBpbiB3aGljaCBwb3NpdGlvbkZvckNvb3JkaW5hdGVzIHJlY3Vyc2VzIGNvdWxk
IGNhbGwgdGhpcyBpbnN0ZWFkIHRvCisvLyBwcmV2ZW50IGNyb3NzaW5nIGVkaXRhYmxlIGJvdW5k
YXJpZXMuICBUaGlzIHdvdWxkIHJlcXVpcmUgbWFueSB0ZXN0cyEKK3N0YXRpYyBWaXNpYmxlUG9z
aXRpb24gcG9zaXRpb25Gb3JQb2ludFJlc3BlY3RpbmdFZGl0aW5nQm91bmRhcmllcyhSZW5kZXJC
b3gqIHBhcmVudCwgUmVuZGVyQm94KiBjaGlsZCwgY29uc3QgSW50UG9pbnQmIHBhcmVudENvb3Jk
cykKK3sKKyAgICBpbnQgeEluQ2hpbGRDb29yZHMgPSBwYXJlbnRDb29yZHMueCgpIC0gY2hpbGQt
PngoKTsKKyAgICBpbnQgeUluQ2hpbGRDb29yZHMgPSBwYXJlbnRDb29yZHMueSgpIC0gY2hpbGQt
PnkoKTsKKworICAgIC8vIElmIHRoaXMgaXMgYW4gYW5vbnltb3VzIHJlbmRlcmVyLCB3ZSBqdXN0
IHJlY3Vyc2Ugbm9ybWFsbHkKKyAgICBOb2RlKiBjaGlsZE5vZGUgPSBjaGlsZC0+ZWxlbWVudCgp
OworICAgIGlmICghY2hpbGROb2RlKQorICAgICAgICByZXR1cm4gY2hpbGQtPnBvc2l0aW9uRm9y
Q29vcmRpbmF0ZXMoeEluQ2hpbGRDb29yZHMsIHlJbkNoaWxkQ29vcmRzKTsKKworICAgIC8vIE90
aGVyd2lzZSwgZmlyc3QgbWFrZSBzdXJlIHRoYXQgdGhlIGVkaXRhYmlsaXR5IG9mIHRoZSBwYXJl
bnQgYW5kIGNoaWxkIGFncmVlIQorICAgIC8vIElmIHRoZXkgZG9uJ3QgYWdyZWUsIHRoZW4gd2Ug
cmV0dXJuIGEgdmlzaWJsZSBwb3NpdGlvbiBqdXN0IGJlZm9yZSBvciBhZnRlciB0aGUgY2hpbGQK
KyAgICBSZW5kZXJPYmplY3QqIGFuY2VzdG9yID0gcGFyZW50OworICAgIHdoaWxlIChhbmNlc3Rv
ciAmJiAhYW5jZXN0b3ItPmVsZW1lbnQoKSkKKyAgICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci0+
cGFyZW50KCk7CisgICAgCisgICAgLy8gSWYgd2UgY2FuJ3QgZmluZCBhbiBhbmNlc3RvciB0byBj
aGVjayBlZGl0YWJpbGl0eSBvbiwgb3IgZWRpdGliaWxpdHkgaXMgdW5jaGFuZ2VkLCB3ZSByZWN1
cnNlIGxpa2Ugbm9ybWFsCisgICAgaWYgKCFhbmNlc3RvciB8fCBhbmNlc3Rvci0+ZWxlbWVudCgp
LT5pc0NvbnRlbnRFZGl0YWJsZSgpID09IGNoaWxkTm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSkK
KyAgICAgICAgcmV0dXJuIGNoaWxkLT5wb3NpdGlvbkZvckNvb3JkaW5hdGVzKHhJbkNoaWxkQ29v
cmRzLCB5SW5DaGlsZENvb3Jkcyk7CisKKyAgICAvLyBPdGhlcndpc2UgcmV0dXJuIGJlZm9yZSBv
ciBhZnRlciB0aGUgY2hpbGQsIGRlcGVuZGluZyBvbiBpZiB0aGUgY2xpY2sgd2FzIGxlZnQgb3Ig
cmlnaHQgb2YgdGhlIGNoaWxkCisgICAgaW50IGNoaWxkTWlkWCA9IGNoaWxkLT53aWR0aCgpIC8g
MjsKKyAgICBpZiAoeEluQ2hpbGRDb29yZHMgPCBjaGlsZE1pZFgpCisgICAgICAgIHJldHVybiBW
aXNpYmxlUG9zaXRpb24oYW5jZXN0b3ItPmVsZW1lbnQoKSwgY2hpbGROb2RlLT5ub2RlSW5kZXgo
KSwgRE9XTlNUUkVBTSk7CisgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihhbmNlc3Rvci0+ZWxl
bWVudCgpLCBjaGlsZE5vZGUtPm5vZGVJbmRleCgpICsgMSwgVVBTVFJFQU0pOworfQorCiBWaXNp
YmxlUG9zaXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoaW50IHgsIGlu
dCB5KQogewogICAgIGlmIChpc1RhYmxlKCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJDb250YWlu
ZXI6OnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoeCwgeSk7IAogCi0gICAgaW50IHRvcCA9IGJvcmRl
clRvcCgpOwotICAgIGludCBib3R0b20gPSB0b3AgKyBwYWRkaW5nVG9wKCkgKyBjb250ZW50SGVp
Z2h0KCkgKyBwYWRkaW5nQm90dG9tKCk7Ci0KLSAgICBpbnQgbGVmdCA9IGJvcmRlckxlZnQoKTsK
LSAgICBpbnQgcmlnaHQgPSBsZWZ0ICsgcGFkZGluZ0xlZnQoKSArIGNvbnRlbnRXaWR0aCgpICsg
cGFkZGluZ1JpZ2h0KCk7Ci0KICAgICBOb2RlKiBuID0gZWxlbWVudCgpOwogICAgIAogICAgIGlu
dCBjb250ZW50c1ggPSB4OwogICAgIGludCBjb250ZW50c1kgPSB5OwogICAgIG9mZnNldEZvckNv
bnRlbnRzKGNvbnRlbnRzWCwgY29udGVudHNZKTsKKyAgICBJbnRQb2ludCBwb2ludEluQ29udGVu
dHMoY29udGVudHNYLCBjb250ZW50c1kpOwogCiAgICAgaWYgKGlzUmVwbGFjZWQoKSkgewogICAg
ICAgICBpZiAoeSA8IDAgfHwgeSA8IGhlaWdodCgpICYmIHggPCAwKQpAQCAtMzM0OSw1NSArMzM3
NSwxMyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yQ29vcmRpbmF0
ZXMoaW50IHgsIGludCB5KQogICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihuLCBj
YXJldE1heE9mZnNldCgpLCBET1dOU1RSRUFNKTsKICAgICB9IAogCi0gICAgLy8gSWYgd2Ugc3Rh
cnQgaW5zaWRlIHRoZSBzaGFkb3cgdHJlZSwgd2Ugd2lsbCBzdGF5IGluc2lkZSAoZXZlbiBpZiB0
aGUgcG9pbnQgaXMgYWJvdmUgb3IgYmVsb3cpLgotICAgIGlmICghKG4gJiYgbi0+aXNTaGFkb3dO
b2RlKCkpICYmICFjaGlsZHJlbklubGluZSgpKSB7Ci0gICAgICAgIC8vIERvbid0IHJldHVybiBw
b3NpdGlvbnMgaW5zaWRlIGVkaXRhYmxlIHJvb3RzIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIHRo
b3NlIHJvb3RzLCBleGNlcHQgZm9yIGNvb3JkaW5hdGVzIG91dHNpZGUKLSAgICAgICAgLy8gYSBk
b2N1bWVudCB0aGF0IGlzIGVudGlyZWx5IGVkaXRhYmxlLgotICAgICAgICBib29sIGlzRWRpdGFi
bGVSb290ID0gbiAmJiBuLT5yb290RWRpdGFibGVFbGVtZW50KCkgPT0gbiAmJiAhbi0+aGFzVGFn
TmFtZShib2R5VGFnKSAmJiAhbi0+aGFzVGFnTmFtZShodG1sVGFnKTsKLQotICAgICAgICBpZiAo
eSA8IHRvcCB8fCAoaXNFZGl0YWJsZVJvb3QgJiYgKHkgPCBib3R0b20gJiYgeCA8IGxlZnQpKSkg
ewotICAgICAgICAgICAgaWYgKCFpc0VkaXRhYmxlUm9vdCkKLSAgICAgICAgICAgICAgICBpZiAo
UmVuZGVyQm94KiBjID0gZmlyc3RDaGlsZEJveCgpKSB7IC8vIEZJWE1FOiBUaGlzIGNvZGUgZG9l
c24ndCBtYWtlIGFueSBzZW5zZS4gIFRoaXMgY2hpbGQgY291bGQgYmUgYW4gaW5saW5lIG9yIGEg
cG9zaXRpb25lZCBlbGVtZW50IG9yIGEgZmxvYXQsIGV0Yy4KLSAgICAgICAgICAgICAgICAgICAg
VmlzaWJsZVBvc2l0aW9uIHAgPSBjLT5wb3NpdGlvbkZvckNvb3JkaW5hdGVzKGNvbnRlbnRzWCAt
IGMtPngoKSwgY29udGVudHNZIC0gYy0+eSgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHAu
aXNOb3ROdWxsKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcDsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobikgewotICAgICAgICAgICAgICAgIGlmIChOb2Rl
KiBzcCA9IG4tPnNoYWRvd1BhcmVudE5vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgbiA9IHNw
OwotICAgICAgICAgICAgICAgIGlmIChOb2RlKiBwID0gbi0+cGFyZW50KCkpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24ocCwgbi0+bm9kZUluZGV4KCksIERPV05T
VFJFQU0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlv
bihuLCAwLCBET1dOU1RSRUFNKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh5ID49IGJvdHRv
bSB8fCAoaXNFZGl0YWJsZVJvb3QgJiYgKHkgPj0gdG9wICYmIHggPj0gcmlnaHQpKSkgewotICAg
ICAgICAgICAgaWYgKCFpc0VkaXRhYmxlUm9vdCkKLSAgICAgICAgICAgICAgICBpZiAoUmVuZGVy
Qm94KiBjID0gbGFzdENoaWxkQm94KCkpIHsgLy8gRklYTUU6IFRoaXMgY29kZSBkb2Vzbid0IG1h
a2UgYW55IHNlbnNlLiAgVGhpcyBjaGlsZCBjb3VsZCBiZSBhbiBpbmxpbmUgb3IgYSBwb3NpdGlv
bmVkIGVsZW1lbnQgb3IgYSBmbG9hdCwgZXRjLgotICAgICAgICAgICAgICAgICAgICBWaXNpYmxl
UG9zaXRpb24gcCA9IGMtPnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoY29udGVudHNYIC0gYy0+eCgp
LCBjb250ZW50c1kgLSBjLT55KCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAocC5pc05vdE51
bGwoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChuKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE5vZGUqIHNwID0g
bi0+c2hhZG93UGFyZW50Tm9kZSgpKQotICAgICAgICAgICAgICAgICAgICBuID0gc3A7Ci0gICAg
ICAgICAgICAgICAgaWYgKE5vZGUqIHAgPSBuLT5wYXJlbnQoKSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihwLCBuLT5ub2RlSW5kZXgoKSArIDEsIERPV05TVFJF
QU0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihu
LCAwLCBET1dOU1RSRUFNKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIGlmIChjaGlsZHJlbklu
bGluZSgpKSB7CiAgICAgICAgIGlmICghZmlyc3RSb290Qm94KCkpCiAgICAgICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKG4sIDAsIERPV05TVFJFQU0pOwogCi0gICAgICAgIGlmIChjb250
ZW50c1kgPCBmaXJzdFJvb3RCb3goKS0+dG9wT3ZlcmZsb3coKSAtIHZlcnRpY2FsTGluZUNsaWNr
RnVkZ2VGYWN0b3IpCi0gICAgICAgICAgICAvLyB5IGNvb3JkaW5hdGUgaXMgYWJvdmUgZmlyc3Qg
cm9vdCBsaW5lIGJveAotICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihwb3NpdGlv
bkZvckJveChmaXJzdFJvb3RCb3goKS0+Zmlyc3RMZWFmQ2hpbGQoKSwgdHJ1ZSksIERPV05TVFJF
QU0pOwotICAgICAgICAKICAgICAgICAgLy8gbG9vayBmb3IgdGhlIGNsb3Nlc3QgbGluZSBib3gg
aW4gdGhlIHJvb3QgYm94IHdoaWNoIGlzIGF0IHRoZSBwYXNzZWQtaW4geSBjb29yZGluYXRlCiAg
ICAgICAgIGZvciAoUm9vdElubGluZUJveCogcm9vdCA9IGZpcnN0Um9vdEJveCgpOyByb290OyBy
b290ID0gcm9vdC0+bmV4dFJvb3RCb3goKSkgeworICAgICAgICAgICAgaW50IGJvdHRvbTsKICAg
ICAgICAgICAgIC8vIHNldCB0aGUgYm90dG9tIGJhc2VkIG9uIHdoZXRoZXIgdGhlcmUgaXMgYSBu
ZXh0IHJvb3QgYm94CiAgICAgICAgICAgICBpZiAocm9vdC0+bmV4dFJvb3RCb3goKSkKICAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogbWFrZSB0aGUgYnJlYWsgcG9pbnQgaGFsZndheSBiZXR3ZWVu
IHRoZSBib3R0b20gb2YgdGhlIHByZXZpb3VzIHJvb3QgYm94IGFuZCB0aGUgdG9wIG9mIHRoZSBu
ZXh0IHJvb3QgYm94CkBAIC0zNDE0LDI5ICszMzk4LDI4IEBAIFZpc2libGVQb3NpdGlvbiBSZW5k
ZXJCbG9jazo6cG9zaXRpb25Gb3JDb29yZGluYXRlcyhpbnQgeCwgaW50IHkpCiAgICAgICAgIH0K
IAogICAgICAgICBpZiAobGFzdFJvb3RCb3goKSkKLSAgICAgICAgICAgIC8vIHkgY29vcmRpbmF0
ZSBpcyBiZWxvdyBsYXN0IHJvb3QgbGluZSBib3gKLSAgICAgICAgICAgIHJldHVybiBWaXNpYmxl
UG9zaXRpb24ocG9zaXRpb25Gb3JCb3gobGFzdFJvb3RCb3goKS0+bGFzdExlYWZDaGlsZCgpLCBm
YWxzZSksIERPV05TVFJFQU0pOworICAgICAgICAgICAgLy8geSBjb29yZGluYXRlIGlzIGJlbG93
IGxhc3Qgcm9vdCBsaW5lIGJveCwgcHJldGVuZCB3ZSBoaXQgaXQKKyAgICAgICAgICAgIHJldHVy
biBsYXN0Um9vdEJveCgpLT5vYmplY3QoKS0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyhjb250ZW50
c1gsIGxhc3RSb290Qm94KCktPm1feSk7CiAKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlv
bihuLCAwLCBET1dOU1RSRUFNKTsKICAgICB9CiAgICAgCi0gICAgLy8gU2VlIGlmIGFueSBjaGls
ZCBibG9ja3MgZXhpc3QgYXQgdGhpcyB5IGNvb3JkaW5hdGUuCisgICAgLy8gQ2hlY2sgdG9wL2Jv
dHRvbSBjaGlsZC1tYXJnaW4vcGFyZW50LXBhZGRpbmcgZm9yIGNsaWNrcyBhbmQgcGxhY2UgdGhl
bSBpbiB0aGUgZmlyc3QvbGFzdCBjaGlsZAorICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgbm90IGNv
cnJlY3RseSBoYW5kbGUgZmlyc3Qgb3IgbGFzdCBjaGlsZHJlbiBiZWluZyBwb3NpdGlvbmVkIG9y
IG5vbi12aXNpYmxlCiAgICAgaWYgKGZpcnN0Q2hpbGRCb3goKSAmJiBjb250ZW50c1kgPCBmaXJz
dENoaWxkQm94KCktPnkoKSkKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihuLCAwLCBE
T1dOU1RSRUFNKTsKLSAgICBmb3IgKFJlbmRlckJveCogcmVuZGVyZXIgPSBmaXJzdENoaWxkQm94
KCk7IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5uZXh0U2libGluZ0JveCgpKSB7Ci0g
ICAgICAgIGlmIChyZW5kZXJlci0+aGVpZ2h0KCkgPT0gMCB8fCByZW5kZXJlci0+c3R5bGUoKS0+
dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcmVuZGVyZXItPmlzRmxvYXRpbmdPclBvc2l0aW9u
ZWQoKSkKKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uRm9yUG9pbnRSZXNwZWN0aW5nRWRpdGluZ0Jv
dW5kYXJpZXModGhpcywgZmlyc3RDaGlsZEJveCgpLCBwb2ludEluQ29udGVudHMpOworICAgIGlm
IChsYXN0Q2hpbGRCb3goKSAmJiBjb250ZW50c1kgPiBsYXN0Q2hpbGRCb3goKS0+eSgpKQorICAg
ICAgICByZXR1cm4gcG9zaXRpb25Gb3JQb2ludFJlc3BlY3RpbmdFZGl0aW5nQm91bmRhcmllcyh0
aGlzLCBsYXN0Q2hpbGRCb3goKSwgcG9pbnRJbkNvbnRlbnRzKTsKKworICAgIGZvciAoUmVuZGVy
Qm94KiBjaGlsZEJveCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGRCb3g7IGNoaWxkQm94ID0gY2hp
bGRCb3gtPm5leHRTaWJsaW5nQm94KCkpIHsKKyAgICAgICAgaWYgKGNoaWxkQm94LT5oZWlnaHQo
KSA9PSAwIHx8IGNoaWxkQm94LT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBj
aGlsZEJveC0+aXNGbG9hdGluZ09yUG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIFJlbmRlckJveCogbmV4dCA9IHJlbmRlcmVyLT5uZXh0U2libGluZ0JveCgpOwot
ICAgICAgICB3aGlsZSAobmV4dCAmJiBuZXh0LT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkpCi0g
ICAgICAgICAgICBuZXh0ID0gbmV4dC0+bmV4dFNpYmxpbmdCb3goKTsKLSAgICAgICAgaWYgKG5l
eHQpIAotICAgICAgICAgICAgYm90dG9tID0gbmV4dC0+eSgpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBib3R0b20gPSB0b3AgKyBzY3JvbGxIZWlnaHQoKTsKLSAgICAgICAgaWYgKGNvbnRl
bnRzWSA+PSByZW5kZXJlci0+eSgpICYmIGNvbnRlbnRzWSA8IGJvdHRvbSkKLSAgICAgICAgICAg
IHJldHVybiByZW5kZXJlci0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyhjb250ZW50c1ggLSByZW5k
ZXJlci0+eCgpLCBjb250ZW50c1kgLSByZW5kZXJlci0+eSgpKTsKKyAgICAgICAgLy8gV2UgaGl0
IHRoaXMgY2hpbGQgaWYgb3VyIGNsaWNrIHdhcyBhYm92ZSB0aGUgYm90dG9tIG9mIGl0cyBwYWRk
aW5nIGJveCAobGlrZSBJRTYvNyBhbmQgRkYzKQorICAgICAgICBpZiAoY29udGVudHNZIDwgY2hp
bGRCb3gtPnkoKSArIGNoaWxkQm94LT5oZWlnaHQoKSkKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbkZvclBvaW50UmVzcGVjdGluZ0VkaXRpbmdCb3VuZGFyaWVzKHRoaXMsIGNoaWxkQm94LCBw
b2ludEluQ29udGVudHMpOwogICAgIH0KLSAgICAKKworICAgIC8vIFdlIG9ubHkgaGl0IGhlcmUg
aWYgdGhlcmUgYXJlIG5vIGNoaWxkcmVuLCBvciBvbmx5IGZsb2F0ZWQvcG9zaXRpb25lZCwgb3Ig
b25seSBub24tdmlzaWJsZSBibG9jayBjaGlsZHJlbiBiZWxvdyB0aGUgY2xpY2sKICAgICByZXR1
cm4gUmVuZGVyQ29udGFpbmVyOjpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKHgsIHkpOwogfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQ29udGFpbmVyLmNwcAppbmRleCA3MWU1ZDA5Li40M2U4YmMyIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbnRhaW5lci5jcHAKQEAgLTU5MSw4ICs1OTEsNyBAQCBW
aXNpYmxlUG9zaXRpb24gUmVuZGVyQ29udGFpbmVyOjpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKGlu
dCB4UG9zLCBpbnQgeVBvcykKICAgICAgICAgaWYgKHhQb3MgPCAwIHx8IHhQb3MgPiByaWdodCB8
fCB5UG9zIDwgMCB8fCB5UG9zID4gYm90dG9tKSB7CiAgICAgICAgICAgICBpZiAoeFBvcyA8PSBy
aWdodCAvIDIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihQb3NpdGlv
bihlbGVtZW50KCksIDApKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKGVsZW1lbnQoKSwgbWF4RGVlcE9mZnNldChlbGVt
ZW50KCkpKSk7CisgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKGVs
ZW1lbnQoKSwgbWF4RGVlcE9mZnNldChlbGVtZW50KCkpKSk7CiAgICAgICAgIH0KICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IGFiZThiMmEuLjg2ZTcxNjcgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtNDg0LDYgKzQ4NCw3IEBAIFZpc2libGVQb3Np
dGlvbiBSZW5kZXJJbmxpbmU6OnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoaW50IHgsIGludCB5KQog
ICAgIHdoaWxlIChjKSB7CiAgICAgICAgIFJlbmRlckJveCogY29udEJsb2NrID0gYzsKICAgICAg
ICAgaWYgKGMtPmlzSW5saW5lKCkgfHwgYy0+Zmlyc3RDaGlsZCgpKQorICAgICAgICAgICAgLy8g
VGhlIGNvbnRpbnVhdGlvbnMgKGFub255bW91cyBibG9ja3MpIHdpbGwgbmV2ZXIgYmUgZWRpdGFi
bGUsIHNvIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgY3Jvc3NpbmcgZWRpdGFibGUgYm91
bmRhcmllcyBoZXJlLgogICAgICAgICAgICAgcmV0dXJuIGMtPnBvc2l0aW9uRm9yQ29vcmRpbmF0
ZXMocGFyZW50QmxvY2tYIC0gY29udEJsb2NrLT54KCksIHBhcmVudEJsb2NrWSAtIGNvbnRCbG9j
ay0+eSgpKTsKICAgICAgICAgYyA9IHRvUmVuZGVyQmxvY2soYyktPmlubGluZUNvbnRpbnVhdGlv
bigpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27211</attachid>
            <date>2009-01-30 22:14:59 -0800</date>
            <delta_ts>2009-02-05 17:44:12 -0800</delta_ts>
            <desc>Fix bugs 23605 and 23607</desc>
            <filename>Fix-bugs-23605-and-23607.patch</filename>
            <type>text/plain</type>
            <size>40842</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">YTBiMjMyZDFkYzVjNmJjYmNmNTJhNjk0MWM2Nzc0NWYwMmI2MDc1YgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdjOTgyZmMu
LjU0OGYwM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAwOS0wMS0zMCAgT2phbiBWYWZhaSA8
b2phbkBjaHJvbWl1bS5vcmc+IGFuZCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgY3Vyc29y
IHBvc2l0aW9ucyBtYXRjaCBJRTYvSUU3L0ZGMyB3aGVuIGNsaWNraW5nIGluIG1hcmdpbnMvcGFk
ZGluZworICAgICAgICBhcm91bmQgZGl2cyBpbnNpZGUgZWRpdGFibGUgcmVnaW9ucy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjA1CisgICAgICAg
IAorICAgICAgICBGaXggY2xpY2tzIG91dHNpZGUgZWRpdGFibGUgcmVnaW9ucyBmcm9tIGZvY3Vz
aW5nIHRoZSBlZGl0YWJsZSByZWdpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzYwNworICAgICAgICAKKyAgICAgICAgUmVtb3ZlZCBlZGl0aW5n
L3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS5odG1sIGFzIGl0J3MKKyAg
ICAgICAgbm90IGFzIHVzZWZ1bCBhcyBvdXIgbmV3IHRlc3RzLgorICAgICAgICAKKyAgICAgICAg
QWRkZWQgdGVzdHM6CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lu
cy1pbnNpZGUtZWRpdGFibGUtZGl2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2Vs
ZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2Lmh0bWw6IEFkZGVkLgorCisgICAgICAg
ICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2st
aW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stb3V0c2lkZS1lZGl0YWJs
ZS1kaXYuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVk
aXRhYmxlLWNsaWNrLW91dHNpZGUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Nl
bGVjdGlvbi9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
ZWRpdGluZy9leGVjQ29tbWFuZC9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbC4KKyAgICAgICAgKiBl
ZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFi
bGUtZGl2LmpzOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rp
b24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQuY2hlY2tzdW06IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0
YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Nl
bGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1mcm9tLXRleHRmaWVsZC1vdXR3YXJkcy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vY29u
dGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKwogMjAwOS0wMS0zMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0
YWJsZS1kaXYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xp
Y2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWYzZDExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFi
bGUtZGl2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIzIEBACitFbnN1cmUgY3Vyc29yIHBsYWNl
bWVudCBtYXRjaGVzIElFNi9JRTcvRkYzIHdoZW4gY2xpY2tpbmcgYWJvdmUvYmVsb3cgbGluZXMg
aW4gcGFkZGluZy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgU2VsZWN0
aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAwCitQQVNTIFNlbGVjdGlvbiBp
cyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMQorUEFTUyBTZWxlY3Rpb24gaXMgYXQg
bm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDIKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6
IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAwCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2Jq
ZWN0IFRleHRdIG9mZnNldDogMgorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBU
ZXh0XSBvZmZzZXQ6IDAKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0g
b2Zmc2V0OiAxCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNl
dDogMgorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDAK
K1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAxCitQQVNT
IFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMgorUEFTUyBTZWxl
Y3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDAKK1BBU1MgU2VsZWN0aW9u
IGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAxCitQQVNTIFNlbGVjdGlvbiBpcyBh
dCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5odG1sIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRp
dGFibGUtZGl2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg0Njcz
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNr
LWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmJhNzcxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stb3V0
c2lkZS1lZGl0YWJsZS1kaXYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK0Vuc3VyZSB0
aGF0IGNsaWNraW5nIGluIHRoZSBtYXJnaW5zIGFyb3VuZCBlZGl0YWJsZSBkaXZzIGRvZXMgbm90
IGdyYW50IGZvY3VzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDbGlj
ayBAIDUwLCA1MCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBDbGljayBAIDE1MCwgNTAgZGlk
IG5vdCBjYXVzZSBmb2N1cy4KK1BBU1MgQ2xpY2sgQCAyNTAsIDUwIGRpZCBub3QgY2F1c2UgZm9j
dXMuCitQQVNTIENsaWNrIEAgNTAsIDE1MCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBDbGlj
ayBAIDI1MCwgMTUwIGRpZCBub3QgY2F1c2UgZm9jdXMuCitQQVNTIENsaWNrIEAgNTAsIDI1MCBk
aWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBDbGljayBAIDE1MCwgMjUwIGRpZCBub3QgY2F1c2Ug
Zm9jdXMuCitQQVNTIENsaWNrIEAgMjUwLCAyNTAgZGlkIG5vdCBjYXVzZSBmb2N1cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1vdXRzaWRlLWVkaXRhYmxlLWRp
di5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stb3V0c2lkZS1lZGl0
YWJsZS1kaXYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDU1OWEw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2st
b3V0c2lkZS1lZGl0YWJsZS1kaXYuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jbGlj
ay1vdXRzaWRlLWVkaXRhYmxlLWRpdi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRl
ZGl0YWJsZS1jbGljay1vdXRzaWRlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5MGQ4ZWFlLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMyArMCwwIEBACi08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKLTwv
c2NyaXB0PgotPGRpdiBzdHlsZT0id2lkdGg6IDQwMHB4OyBoZWlnaHQ6IDUwcHg7IHBhZGRpbmc6
IDI1cHggMCAwIDI1cHg7IGJhY2tncm91bmQ6IHllbGxvdzsiPjxkaXYgY29udGVudGVkaXRhYmxl
PSJ0cnVlIiBzdHlsZT0iYmFja2dyb3VuZDogd2hpdGU7IGhlaWdodDoyMHB4OyB3aWR0aDoxMDBw
eCI+PC9kaXY+PC9kaXY+Ci08cD5UaGlzIHRlc3QgY2xpY2tzIG91dHNpZGUgYW4gZWRpdGFibGUg
ZGl2IGVsZW1lbnQsIGFuZCBtdXN0IG5vdCByZXN1bHQgaW4gdGhlIGVsZW1lbnQgcmVjZWl2aW5n
IGZvY3VzLiBJZiB0aGUgdGVzdCBzdWNjZWVkcyB0aGUgZWxlbWVudCBzaG91bGQgbm90IGhhdmUg
YSBmb2N1cyByaW5nLjwvcD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Ci0g
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMjI1LCA0NSk7Ci0gICAgZXZlbnRTZW5kZXIubW91
c2VEb3duKCk7Ci0gICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwotfQotPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvVEVNUExBVEUu
aHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9URU1QTEFURS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwY2U1NmMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvVEVNUExB
VEUuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9IllPVVJfSlNfRklMRV9IRVJFIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5q
cyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9jbGljay1pbi1tYXJn
aW5zLWluc2lkZS1lZGl0YWJsZS1kaXYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNWQ4NzUyMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL3Jlc291cmNlcy9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0YWJsZS1kaXYuanMK
QEAgLTAsMCArMSwxMzggQEAKK2Rlc2NyaXB0aW9uKCJFbnN1cmUgY3Vyc29yIHBsYWNlbWVudCBt
YXRjaGVzIElFNi9JRTcvRkYzIHdoZW4gY2xpY2tpbmcgYWJvdmUvYmVsb3cgbGluZXMgaW4gcGFk
ZGluZy4iKQorCitkb2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpbiA9IDA7CisKK3ZhciBkaXYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5zdHlsZS5jc3NUZXh0ID0gImZvbnQt
ZmFtaWx5OiBhaGVtOyBmb250LXNpemU6IDIwcHg7IC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB5
ZWxsb3c7IHdpZHRoOiA0MHB4OyBoZWlnaHQ6IDgwcHg7IHBhZGRpbmc6IDIwcHg7IGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOyI7CitkaXYuY29udGVudEVkaXRhYmxlID0gdHJ1ZTsKKwordmFyIGZp
cnN0VGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJYWCIpOwordmFyIGZpcnN0RGl2ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitmaXJzdERpdi5hcHBlbmRDaGlsZChmaXJz
dFRleHQpOworZmlyc3REaXYuc3R5bGUuY3NzVGV4dCA9ICJwYWRkaW5nLWJvdHRvbTogMTlweDsg
Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHBpbms7IG1hcmdpbi1ib3R0b206IDIwcHgiOworZGl2
LmFwcGVuZENoaWxkKGZpcnN0RGl2KTsKKwordmFyIHNlY29uZFRleHQgPSBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgiWVkiKTsKK3ZhciBzZWNvbmREaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKK3NlY29uZERpdi5hcHBlbmRDaGlsZChzZWNvbmRUZXh0KTsKK2Rpdi5hcHBlbmRD
aGlsZChzZWNvbmREaXYpOworCitkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShkaXYsIGRvY3Vt
ZW50LmJvZHkuZmlyc3RDaGlsZCk7CisKK2Z1bmN0aW9uIG9iamVjdEFzU3RyaW5nKG9iamVjdCwg
cHJvcGVydGllcykgeworICAgIHZhciByZXN1bHQgPSAiWyI7CisgICAgZm9yICh2YXIgeCA9IDA7
IHggPCBwcm9wZXJ0aWVzLmxlbmd0aDsgeCsrKSB7CisgICAgICAgIHZhciBwcm9wZXJ0eSA9IHBy
b3BlcnRpZXNbeF07CisgICAgICAgIGlmICh4ICE9IDApCisgICAgICAgICAgICByZXN1bHQgKz0g
IiAiOworCisgICAgICAgIHZhciB2YWx1ZSA9IG9iamVjdFtwcm9wZXJ0eV07CisgICAgICAgIGlm
ICh2YWx1ZSAmJiB2YWx1ZS5ub2RlVHlwZSkgLy8gdGV4dE5vZGUKKyAgICAgICAgICAgIHZhbHVl
ID0gdmFsdWUgKyAiKCAiICsgdmFsdWUubm9kZVZhbHVlICsgIiApIjsKKworICAgICAgICByZXN1
bHQgKz0gcHJvcGVydHkgKyAiOiAiICsgdmFsdWU7CisgICAgfQorICAgIHJlc3VsdCArPSAnXSc7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gc2VsZWN0aW9uQXNTdHJpbmcoc2Vs
KQoreworICAgIHZhciBwcm9wZXJ0aWVzID0gWydhbmNob3JOb2RlJywgJ2FuY2hvck9mZnNldCcs
ICdmb2N1c05vZGUnLCAnZm9jdXNPZmZzZXQnLCAnaXNDb2xsYXBzZWQnXTsKKyAgICByZXR1cm4g
b2JqZWN0QXNTdHJpbmcoc2VsLCBwcm9wZXJ0aWVzKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0UmFu
Z2Uobm9kZSwgb2Zmc2V0KSB7CisgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsK
KyAgICBpZiAoc2VsLmFuY2hvck5vZGUgPT0gbm9kZQorICAgICAgICAmJiBzZWwuZm9jdXNOb2Rl
ID09IG5vZGUKKyAgICAgICAgJiYgc2VsLmFuY2hvck9mZnNldCA9PSBvZmZzZXQKKyAgICAgICAg
JiYgc2VsLmZvY3VzT2Zmc2V0ID09IG9mZnNldAorICAgICAgICAmJiBzZWwuaXNDb2xsYXBzZWQp
IHsKKyAgICAgICAgdGVzdFBhc3NlZCgiU2VsZWN0aW9uIGlzIGF0IG5vZGU6ICIgKyBub2RlICsg
IiBvZmZzZXQ6ICIgKyBvZmZzZXQpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQo
IlNlbGVjdGlvbiBpcyAiICsgc2VsZWN0aW9uQXNTdHJpbmcoc2VsKSArICIgc2hvdWxkIGJlIGF0
IG5vZGU6ICIgKyBub2RlICsgIiBvZmZzZXQ6ICIgKyBvZmZzZXQpOworICAgIH0KK30KKworZnVu
Y3Rpb24gY2xpY2soeCwgeSkgeworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KK30KKworZnVuY3Rpb24gY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKHgs
IHksIG5vZGUsIG9mZnNldCkgeworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgY2xpY2soeCwgeSk7CisgICAgICAgIGFzc2VydFJhbmdlKG5vZGUsIG9mZnNldCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgdGVzdHMucHVzaCh7CisgICAgICAgICAgICB0ZXN0RnVuY3Rpb246
IGZ1bmN0aW9uKCkgeyBhc3NlcnRSYW5nZShub2RlLCBvZmZzZXQpOyB9LAorICAgICAgICAgICAg
Y2xpY2tTdHJpbmc6ICIgIiArIHggKyAiLCAiICsgeSB9CisgICAgICAgICkKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIHByaW50Q2xpY2tTdHJpbmdGb3JXYWl0aW5nVGVzdCgpCit7CisgICAgaWYgKCF0
ZXN0c1t0ZXN0SW5kZXhdKQorICAgICAgICByZXR1cm47CisgICAgZGVidWcoIldhaXRpbmcgZm9y
IGNsaWNrIEAgIiArIHRlc3RzW3Rlc3RJbmRleF0uY2xpY2tTdHJpbmcpOworfQorCit2YXIgdGVz
dEluZGV4ID0gMDsKK3ZhciB0ZXN0cyA9IFtdOworZnVuY3Rpb24gcnVuSW50ZXJhY3RpdmVUZXN0
cygpCit7CisgICAgdGVzdEluZGV4ID0gMDsKKyAgICBwcmludENsaWNrU3RyaW5nRm9yV2FpdGlu
Z1Rlc3QoKTsKKyAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoIkdvdCBjbGljayBAICIgKyBldmVudC5jbGllbnRY
ICsgIiwgIiArIGV2ZW50LmNsaWVudFkpOworICAgICAgICB2YXIgdGVzdCA9IHRlc3RzW3Rlc3RJ
bmRleF07CisgICAgICAgIGlmICh0ZXN0KSB7CisgICAgICAgICAgICB0ZXN0LnRlc3RGdW5jdGlv
bigpOworICAgICAgICAgICAgdGVzdEluZGV4Kys7CisgICAgICAgICAgICBwcmludENsaWNrU3Ry
aW5nRm9yV2FpdGluZ1Rlc3QoKTsKKyAgICAgICAgfQorICAgIH0sIGZhbHNlKTsKK30KKworLy8g
V2hlbiBjbGlja2luZyBiZXR3ZWVuIGRpdnMgc2VwYXJhdGVkIGJ5IG1hcmdpbnMgaW4gYW4gZWRp
dGFibGUKKy8vIHRleHQgcmVnaW9uLCB0aGUgYnJvd3NlcnMgZGlmZmVyIGluIGJlaGF2aW9yOgor
Ly8gRkYzOiB2ZXJ0aWNhbCBwYWRkaW5nIGJveCArIHNvbWUgc29ydCBvZiBvdmVyaGFuZyBkZWNl
bnQ/CisvLyBJRTYvSUU3OiB2ZXJ0aWNhbCBwYWRkaW5nIGJveAorLy8gSUU4IGIyOiBtYXJnaW4g
Ym94CisvLyBTYWZhcmkzOiBtYXJnaW4gYm94IChidXQgY3Vyc29yIGdvZXMgYXQgZW5kIG9mIGxp
bmUpCisKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSgxMCwgMTAsIGZpcnN0VGV4dCwgMCk7Citj
bGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNDAsIDEwLCBmaXJzdFRleHQsIDEpOworY2xpY2tTaG91
bGRSZXN1bHRJblJhbmdlKDcwLCAxMCwgZmlyc3RUZXh0LCAyKTsKKworY2xpY2tTaG91bGRSZXN1
bHRJblJhbmdlKDEwLCAzMCwgZmlyc3RUZXh0LCAwKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5n
ZSg3MCwgMzAsIGZpcnN0VGV4dCwgMik7CisKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSgxMCwg
NTAsIGZpcnN0VGV4dCwgMCk7CitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNDAsIDUwLCBmaXJz
dFRleHQsIDEpOworY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKDcwLCA1MCwgZmlyc3RUZXh0LCAy
KTsKKworLy8gV2UncmUgZ29pbmcgdG8gZm9sbG93IElFIDcncyBiZWhhdmlvciBhbmQgdXNlIHRo
ZSBwYWRkaW5nIGJveCBoZWlnaHQKKy8vIGZvciBkZXRlcm1pbmluZyBpZiB0aGUgY2xpY2sgYmVs
b3cgYSBkaXYgKGluIHRoZSBwYWRkaW5nL21hcmdpbiByZWdpb24pCitjbGlja1Nob3VsZFJlc3Vs
dEluUmFuZ2UoMTAsIDcwLCBzZWNvbmRUZXh0LCAwKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5n
ZSg0MCwgNzAsIHNlY29uZFRleHQsIDEpOworY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKDcwLCA3
MCwgc2Vjb25kVGV4dCwgMik7CisKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSgxMCwgMTEwLCBz
ZWNvbmRUZXh0LCAwKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSg0MCwgMTEwLCBzZWNvbmRU
ZXh0LCAxKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSg3MCwgMTEwLCBzZWNvbmRUZXh0LCAy
KTsKKworLy8gQ2xlYW4gdXAgYWZ0ZXIgb3Vyc2VsdmVzIGlmIHdlJ3JlIG5vdCBiZWluZyBydW4g
aW4gdGhlIGJyb3dzZXIKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBkb2N1bWVudC5i
b2R5LnJlbW92ZUNoaWxkKGRpdik7Cit9IGVsc2UgeworICAgIHJ1bkludGVyYWN0aXZlVGVzdHMo
KTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2stb3V0c2lkZS1lZGl0YWJs
ZS1kaXYuanMgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2st
b3V0c2lkZS1lZGl0YWJsZS1kaXYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uOTc2NGZlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL3Jlc291cmNlcy9jbGljay1vdXRzaWRlLWVkaXRhYmxlLWRpdi5qcwpAQCAtMCwwICsxLDUw
IEBACitkZXNjcmlwdGlvbigiRW5zdXJlIHRoYXQgY2xpY2tpbmcgaW4gdGhlIG1hcmdpbnMgYXJv
dW5kIGVkaXRhYmxlIGRpdnMgZG9lcyBub3QgZ3JhbnQgZm9jdXMuIikKKworZG9jdW1lbnQuYm9k
eS5zdHlsZS5tYXJnaW4gPSAiMHB4IjsKKwordmFyIG91dGVyRGl2ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CitvdXRlckRpdi5zdHlsZS5jc3NUZXh0ID0gIndpZHRoOiAxMDBweDsg
cGFkZGluZzogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6IGJsdWU7IjsKK3ZhciBpbm5lckRpdiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworaW5uZXJEaXYuc3R5bGUuY3NzVGV4dCA9
ICJoZWlnaHQ6IDEwMHB4OyBib3JkZXI6IDFweCBzb2xpZCBwaW5rOyBiYWNrZ3JvdW5kLWNvbG9y
OiBncmVlbjsiOworaW5uZXJEaXYuY29udGVudEVkaXRhYmxlID0gdHJ1ZTsKK291dGVyRGl2LmFw
cGVuZENoaWxkKGlubmVyRGl2KTsKK2RvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKG91dGVyRGl2
LCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOworCit2YXIgbGFzdENsaWNrQ2F1c2VkRm9jdXMg
PSBmYWxzZTsKK2RvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIGZ1bmN0
aW9uKGUpIHsKKyAgICB2YXIgbGFzdENsaWNrID0gZSB8fCB3aW5kb3cuZXZlbnQ7CisgICAgaWYg
KGxhc3RDbGlja0NhdXNlZEZvY3VzKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNsaWNrIEAgIiAr
IGxhc3RDbGljay5jbGllbnRYICsgIiwgIiArIGxhc3RDbGljay5jbGllbnRZICsgIiBjYXVzZWQg
aW5uZXJkaXYgdG8gZm9jdXMhIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3NlZCgi
Q2xpY2sgQCAiICsgbGFzdENsaWNrLmNsaWVudFggKyAiLCAiICsgbGFzdENsaWNrLmNsaWVudFkg
KyAiIGRpZCBub3QgY2F1c2UgZm9jdXMuIik7CisgICAgfQorICAgIGlubmVyRGl2LmJsdXIoKTsK
KyAgICBsYXN0Q2xpY2tDYXVzZWRGb2N1cyA9IGZhbHNlOworfSwgZmFsc2UpOworCitpbm5lckRp
di5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIGZ1bmN0aW9uKCkgeworICAgIGxhc3RDbGlja0Nh
dXNlZEZvY3VzID0gdHJ1ZTsKK30sIGZhbHNlKTsKKworZnVuY3Rpb24gY2xpY2tBdCh4LCB5KSB7
CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91
c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgY2xpY2tBdCg1MCwgNTApOworICAgIGNsaWNrQXQoMTUwLCA1MCk7
CisgICAgY2xpY2tBdCgyNTAsIDUwKTsKKworICAgIGNsaWNrQXQoNTAsIDE1MCk7CisgICAgY2xp
Y2tBdCgyNTAsIDE1MCk7CisKKyAgICBjbGlja0F0KDUwLCAyNTApOworICAgIGNsaWNrQXQoMTUw
LCAyNTApOworICAgIGNsaWNrQXQoMjUwLCAyNTApOworfSBlbHNlIHsKKyAgICBkZWJ1ZygiQ2xp
Y2sgaW4gYWxsIDggcmVnaW9ucyBhcm91bmQgdGhlIGdyZWVuIGRpdiB0byB0ZXN0LiIpOworfQor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0
c2lkZS1leHBlY3RlZC5jaGVja3N1bSBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1leHBlY3RlZC5jaGVja3N1
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU5MTdmMS4uMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxl
LWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQuY2hlY2tzdW0KKysrIC9kZXYvbnVsbApAQCAtMSArMCww
IEBACi0xNjUyZmQ4MWI2Yzg3Yjk4OGEwMDMzMThmOTgxOTM3OApcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Nl
bGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1leHBlY3RlZC5wbmcgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNs
aWNrLW91dHNpZGUtZXhwZWN0ZWQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
NmMxODgyLi4wMDAwMDAwCkJpbmFyeSBmaWxlcyBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1leHBlY3RlZC5w
bmcgYW5kIC9kZXYvbnVsbCBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29u
dGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxNGM2ZmIwLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1FRElUSU5HIERFTEVHQVRF
OiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZy
b20gMCBvZiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5p
dHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiBzaG91
bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50Ci1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdE
aWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCi1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyQmxvY2sge0hUTUx9IGF0
ICgwLDApIHNpemUgODAweDYwMAotICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUg
Nzg0eDU3NgotICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA0MjV4NzUgW2Jn
Y29sb3I9I0ZGRkYwMF0KLSAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDI1LDI1KSBzaXpl
IDEwMHgyMCBbYmdjb2xvcj0jRkZGRkZGXQotICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDkx
KSBzaXplIDc4NHgzNgotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3
NTl4MzYKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NTk6ICJUaGlzIHRlc3Qg
Y2xpY2tzIG91dHNpZGUgYW4gZWRpdGFibGUgZGl2IGVsZW1lbnQsIGFuZCBtdXN0IG5vdCByZXN1
bHQgaW4gdGhlIGVsZW1lbnQgcmVjZWl2aW5nIGZvY3VzLiBJZiB0aGUgdGVzdCBzdWNjZWVkcyB0
aGUiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDIzNTogImVsZW1lbnQgc2hv
dWxkIG5vdCBoYXZlIGEgZm9jdXMgcmluZy4iCi1jYXJldDogcG9zaXRpb24gMCBvZiBjaGlsZCAw
IHtESVZ9IG9mIGNoaWxkIDAge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRN
TH0gb2YgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFsbC1pZnJhbWUtZXhwZWN0
ZWQudHh0CmluZGV4IDg0MmMyYTMuLmI0MDVkZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVj
dC1hbGwtaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDkgQEAKIEVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5v
dGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5n
ZTpyYW5nZSBmcm9tIDAgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNCBvZiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGlu
ZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBz
aG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRv
RE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZm
aW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UK
K0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDUgb2YgI3RleHQgPiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3Rp
bGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxF
R0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJl
YW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNl
bGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBh
ZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxT
RQogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxl
dGVET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CiBF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtZnJvbS10ZXh0ZmllbGQtb3V0d2FyZHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3Nl
bGVjdC1mcm9tLXRleHRmaWVsZC1vdXR3YXJkcy1leHBlY3RlZC50eHQKaW5kZXggMThjMzdhNi4u
YjA2NDc0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2Vs
ZWN0aW9uL3NlbGVjdC1mcm9tLXRleHRmaWVsZC1vdXR3YXJkcy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1mcm9tLXRl
eHRmaWVsZC1vdXR3YXJkcy1leHBlY3RlZC50eHQKQEAgLTgsMTAgKzgsMTAgQEAgRURJVElORyBE
RUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3Rl
eHQgPiBESVYgdG8gMTIKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FU
RTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0ID4g
RElWIHRvIDE3IG9mICN0ZXh0ID4gRElWIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0
ID4gRElWIHRvIDEyIG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlE
b3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
LUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAwIG9mICN0ZXh0ID4gRElWIHRvIDEyIG9mICN0ZXh0ID4gRElWIHRvRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAwIG9mICN0ZXh0ID4gRElWIHRvIDEyIG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2Vs
ZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4
dCA+IERJViB0byAxMiBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2Yg
I3RleHQgPiBESVYgdG8gMTcgb2YgI3RleHQgPiBESVYgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZp
bml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNh
dGlvbgogRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5n
ZSBmcm9tIDExIG9mICN0ZXh0ID4gRElWIHRvIDE3IG9mICN0ZXh0ID4gRElWIHRvRE9NUmFuZ2U6
cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViB0byAxNyBvZiAjdGV4dCA+IERJViBhZmZpbml0
eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJ
VElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDEx
IG9mICN0ZXh0ID4gRElWIHRvIDE3IG9mICN0ZXh0ID4gRElWIHRvRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAxMSBvZiAjdGV4dCA+IERJViB0byAxNyBvZiAjdGV4dCA+IERJViBhZmZpbml0eTpOU1NlbGVj
dGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCiAgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiBsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRl
bnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYjMxZmEyNy4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IGxp
bmUgOTogVHlwZUVycm9yOiBWYWx1ZSB1bmRlZmluZWQgKHJlc3VsdCBvZiBleHByZXNzaW9uIGV2
ZW50U2VuZGVyLm1vdmVUbykgaXMgbm90IG9iamVjdC4KLWxheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAotICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAotbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCi0gIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
LSAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzgKLSAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNDI1eDc1IFtiZ2NvbG9yPSNGRkZGMDBdCi0gICAg
ICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyNSwyNSkgc2l6ZSAxMDB4MjAgW2JnY29sb3I9I0ZG
RkZGRl0KLSAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw4OSkgc2l6ZSA3ODR4MzgKLSAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzcxeDM4Ci0gICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggNzcxOiAiVGhpcyB0ZXN0IGNsaWNrcyBvdXRzaWRlIGFuIGVk
aXRhYmxlIGRpdiBlbGVtZW50LCBhbmQgbXVzdCBub3QgcmVzdWx0IGluIHRoZSBlbGVtZW50IHJl
Y2VpdmluZyBmb2N1cy4gSWYgdGhlIHRlc3Qgc3VjY2VlZHMgdGhlIgotICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDE5KSB3aWR0aCAyMzg6ICJlbGVtZW50IHNob3VsZCBub3QgaGF2ZSBhIGZvY3Vz
IHJpbmcuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxl
Y3Rpb24vc2VsZWN0LWFsbC1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFsbC1pZnJhbWUtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTIyMzFjLi4wMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5v
dGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5n
ZTpyYW5nZSBmcm9tIDAgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNCBvZiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudAotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGlu
ZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBz
aG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRv
RE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZm
aW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UK
LUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdl
U2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6
RkFMU0UKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxk
RGVsZXRlRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dAotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFu
Z2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0
aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgotbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi1sYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNp
emUgODAweDYwMAotICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3OAot
ICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA3ODR4MTczCi0gICAg
ICAgIFJlbmRlclBhcnRPYmplY3Qge0lGUkFNRX0gYXQgKDAsMCkgc2l6ZSAzMDR4MTU0IFtib3Jk
ZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCi0gICAgICAgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSAz
MDB4MTUwCi0gICAgICAgICAgICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgMzAweDE1MAotICAg
ICAgICAgIGxheWVyIGF0ICgwLDApIHNpemUgMzAweDE1MAotICAgICAgICAgICAgUmVuZGVyQmxv
Y2sge0hUTUx9IGF0ICgwLDApIHNpemUgMzAweDE1MAotICAgICAgICAgICAgICBSZW5kZXJCb2R5
IHtCT0RZfSBhdCAoOCw4KSBzaXplIDI4NHgxMzQgW2JnY29sb3I9I0ZGRkZFMF0KLSAgICAgICAg
ICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDI4NHgxOQotICAgICAgICAg
ICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MTkKLSAgICAgICAgUmVuZGVy
QlIge0JSfSBhdCAoMzA0LDE1NCkgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAo
MCwxNTQpIHNpemUgMHgxOQotICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDE4Nykgc2l6ZSA3
ODR4MzkKLSAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDY4M3gyMAotICAg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDY4M3gyMAotICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTE0OiAiVGhpcyB0ZXN0IHVzZXMgdGhlIGV2ZW50
U2VuZGVyIHRvIGRvIGEgbW91c2UgY2xpY2sgdG8gZm9jdXMgdGhlIHN1YmZyYW1lLiAiCi0gICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoNTE0LDApIHdpZHRoIDE2OTogIkl0IHdvbid0IHJ1biBpbnRl
cmFjdGl2ZWx5LiIKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg2ODMsMCkgc2l6ZSA3
NDB4MzkKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoNjgzLDApIHdpZHRoIDQ6ICIgIgotICAgICAg
ICAgIHRleHQgcnVuIGF0ICg2ODcsMCkgd2lkdGggNTM6ICJUbyBydW4gaXQiCi0gICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMjApIHdpZHRoIDM0ODogIm1hbnVhbGx5LCBjbGljayBvbiB0aGUgaWZy
YW1lLCBTZWxlY3QgQWxsLCB0aGVuIGhpdCBkZWxldGUuIgotICAgICAgUmVuZGVyQmxvY2sgKGFu
b255bW91cykgYXQgKDAsMjQwKSBzaXplIDc4NHg1NwotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSA3NzZ4NTcKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCA3NzY6ICJTZWxlY3RpbmcgYWxsIHRoZSBjb250ZW50IGluIGEgY29udGVudGVkaXRhYmxlIGlm
cmFtZSBzaG91bGQgc2VsZWN0IHRoZSBpZnJhbWUgaXRzZWxmICh0byBoZWxwIHRoZSB1c2VyIGRl
bGV0ZSB0aGUgaWZyYW1lKSBvbmx5IGlmIgotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE5KSB3
aWR0aCAyMTk6ICJ0aGUgaWZyYW1lIGlzIGluIGFuIGVkaXRhYmxlIHJlZ2lvbi4gIgotICAgICAg
ICAgIHRleHQgcnVuIGF0ICgyMTksMTkpIHdpZHRoIDQzMDogIlRoaXMgdGVzdCBsb2FkcyAuLi9y
ZXNvdXJjZXMvc2VsZWN0LWFsbC1pZnJhbWUtc3JjLmh0bWwgaW50byBhbiBpZnJhbWUuICIKLSAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoNjQ5LDE5KSB3aWR0aCA5ODogIlRoYXQgZmlsZSBkb2VzIGEi
Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMzgpIHdpZHRoIDEyMzogIlNlbGVjdCBBbGwgKyBE
ZWxldGUuICIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTIzLDM4KSB3aWR0aCAxNzE6ICJUd28g
dGhpbmdzIHNob3VsZCBoYXBwZW46IgotICAgICAgUmVuZGVyQmxvY2sge1VMfSBhdCAoMCwzMTEp
IHNpemUgNzg0eDU3Ci0gICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDQwLDApIHNpemUg
NzQ0eDM4Ci0gICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoLTE3LDApIHNpemUgN3gxOTog
YnVsbGV0Ci0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzI4eDM4
Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0NTE6ICJUaGUgU2VsZWN0IEFs
bCBvcGVyYXRpb24gc2hvdWxkIG5vdCBzZWxlY3QgdGhlIGlmcmFtZSwgb25seSBpdCdzIGNvbnRl
bnRzLiAiCi0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNDUxLDApIHdpZHRoIDI3NzogIlRoZSBy
ZXN1bHRzIG9mIHRoZSBTZWxlY3QgQWxsIHdpbGwgYmUgYXBwYXJlbnQiCi0gICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwxOSkgd2lkdGggNDY0OiAiZnJvbSB0aGUgZGVsZWdhdGUgbWVzc2FnZXMg
dGhhdCBEdW1wUmVuZGVyVHJlZSByZWNlaXZlcyBhbmQgZHVtcHMuIgotICAgICAgICBSZW5kZXJM
aXN0SXRlbSB7TEl9IGF0ICg0MCwzOCkgc2l6ZSA3NDR4MTkKLSAgICAgICAgICBSZW5kZXJMaXN0
TWFya2VyIGF0ICgtMTcsMCkgc2l6ZSA3eDE5OiBidWxsZXQKLSAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzNDJ4MTkKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDApIHdpZHRoIDM0MjogIlRoZSBjb250ZW50cyBvZiB0aGUgZWRpdGFibGUgaWZyYW1lIHNob3Vs
ZCBiZSBkZWxldGVkLiIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggNWQwODJhMy4uMGY0MzM5NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAwOS0wMS0z
MCAgT2phbiBWYWZhaSA8b2phbkBjaHJvbWl1bS5vcmc+IGFuZCBFcmljIFNlaWRlbCA8ZXJpY0B3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1ha2UgY3Vyc29yIHBvc2l0aW9ucyBtYXRjaCBJRTYvSUU3L0ZGMyB3aGVuIGNsaWNraW5n
IGluIG1hcmdpbnMvcGFkZGluZworICAgICAgICBhcm91bmQgZGl2cyBpbnNpZGUgZWRpdGFibGUg
cmVnaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNjA1CisKKyAgICAgICAgRml4IGNsaWNrcyBvdXRzaWRlIGVkaXRhYmxlIHJlZ2lvbnMgZnJv
bSBmb2N1c2luZyB0aGUgZWRpdGFibGUgcmVnaW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MDcKKworICAgICAgICBSZW1vdmVkIGVkaXRpbmcv
c2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLmh0bWwgYXMgaXQncworICAg
ICAgICBub3QgYXMgdXNlZnVsIGFzIG91ciBuZXcgdGVzdHMuCisKKyAgICAgICAgQ2xlYW4gdXAg
UmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMgdG8gcmVtb3ZlIGRlYWQgY29kZSwK
KyAgICAgICAgZHVwbGljYXRlIGNvZGUsIGFuZCBnZW5lcmFsbHkgbWFrZSBpdCBtb3JlIHJlYWRh
YmxlLgorCisgICAgICAgIEFkZGVkIHRlc3RzOgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9u
L2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1vdXRzaWRlLWVkaXRhYmxlLWRpdi5odG1sOiBB
ZGRlZC4KKworICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbjo6Y2Fub25pY2FsUG9zaXRpb24pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3NpdGlvbkZv
ckNvb3JkaW5hdGVzSW5DaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9z
aXRpb25Gb3JDb29yZGluYXRlcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNvbnRhaW5l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb250YWluZXI6OnBvc2l0aW9uRm9yQ29v
cmRpbmF0ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKToKKwogMjAw
OS0wMS0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvVmlz
aWJsZVBvc2l0aW9uLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCmlu
ZGV4IDNkNzcxYzYuLmMzNTBiYmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
UG9zaXRpb24uY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCkBA
IC00OTIsMTAgKzQ5MiwxMCBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmNhbm9uaWNhbFBv
c2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKICAgICBib29sIG5leHRJc0luU2FtZUVk
aXRhYmxlRWxlbWVudCA9IG5leHROb2RlICYmIGVkaXRhYmxlUm9vdEZvclBvc2l0aW9uKG5leHQp
ID09IGVkaXRpbmdSb290OwogICAgIGlmIChwcmV2SXNJblNhbWVFZGl0YWJsZUVsZW1lbnQgJiYg
IW5leHRJc0luU2FtZUVkaXRhYmxlRWxlbWVudCkKICAgICAgICAgcmV0dXJuIHByZXY7Ci0gICAg
ICAgIAorCiAgICAgaWYgKG5leHRJc0luU2FtZUVkaXRhYmxlRWxlbWVudCAmJiAhcHJldklzSW5T
YW1lRWRpdGFibGVFbGVtZW50KQogICAgICAgICByZXR1cm4gbmV4dDsKLSAgICAgICAgCisKICAg
ICBpZiAoIW5leHRJc0luU2FtZUVkaXRhYmxlRWxlbWVudCAmJiAhcHJldklzSW5TYW1lRWRpdGFi
bGVFbGVtZW50KQogICAgICAgICByZXR1cm4gUG9zaXRpb24oKTsKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCmluZGV4IGRkZWFiYjcuLjI3ODBhM2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKQEAgLTMzMjUsMTE4ICszMzI1LDEwNiBAQCBQb3NpdGlvbiBSZW5kZXJCbG9jazo6cG9z
aXRpb25Gb3JSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBib29sIHN0YXJ0KSBjbwog
ICAgIHJldHVybiBQb3NpdGlvbihub2RlLCBvZmZzZXQpOwogfQogCisvLyBGSVhNRTogVGhpcyBm
dW5jdGlvbiBzaG91bGQgY291bGQgZ28gb24gUmVuZGVyT2JqZWN0IGFuIGluc3RhbmNlIG1ldGhv
ZCB0aGVuCisvLyBhbGwgY2FzZXMgaW4gd2hpY2ggcG9zaXRpb25Gb3JDb29yZGluYXRlcyByZWN1
cnNlcyBjb3VsZCBjYWxsIHRoaXMgaW5zdGVhZCB0bworLy8gcHJldmVudCBjcm9zc2luZyBlZGl0
YWJsZSBib3VuZGFyaWVzLiAgVGhpcyB3b3VsZCByZXF1aXJlIG1hbnkgdGVzdHMhCitzdGF0aWMg
VmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnRSZXNwZWN0aW5nRWRpdGluZ0JvdW5kYXJp
ZXMoUmVuZGVyQm94KiBwYXJlbnQsIFJlbmRlckJveCogY2hpbGQsIGNvbnN0IEludFBvaW50JiBw
YXJlbnRDb29yZHMpCit7CisgICAgaW50IHhJbkNoaWxkQ29vcmRzID0gcGFyZW50Q29vcmRzLngo
KSAtIGNoaWxkLT54KCk7CisgICAgaW50IHlJbkNoaWxkQ29vcmRzID0gcGFyZW50Q29vcmRzLnko
KSAtIGNoaWxkLT55KCk7CisKKyAgICAvLyBJZiB0aGlzIGlzIGFuIGFub255bW91cyByZW5kZXJl
ciwgd2UganVzdCByZWN1cnNlIG5vcm1hbGx5CisgICAgTm9kZSogY2hpbGROb2RlID0gY2hpbGQt
PmVsZW1lbnQoKTsKKyAgICBpZiAoIWNoaWxkTm9kZSkKKyAgICAgICAgcmV0dXJuIGNoaWxkLT5w
b3NpdGlvbkZvckNvb3JkaW5hdGVzKHhJbkNoaWxkQ29vcmRzLCB5SW5DaGlsZENvb3Jkcyk7CisK
KyAgICAvLyBPdGhlcndpc2UsIGZpcnN0IG1ha2Ugc3VyZSB0aGF0IHRoZSBlZGl0YWJpbGl0eSBv
ZiB0aGUgcGFyZW50IGFuZCBjaGlsZCBhZ3JlZSEKKyAgICAvLyBJZiB0aGV5IGRvbid0IGFncmVl
LCB0aGVuIHdlIHJldHVybiBhIHZpc2libGUgcG9zaXRpb24ganVzdCBiZWZvcmUgb3IgYWZ0ZXIg
dGhlIGNoaWxkCisgICAgUmVuZGVyT2JqZWN0KiBhbmNlc3RvciA9IHBhcmVudDsKKyAgICB3aGls
ZSAoYW5jZXN0b3IgJiYgIWFuY2VzdG9yLT5lbGVtZW50KCkpCisgICAgICAgIGFuY2VzdG9yID0g
YW5jZXN0b3ItPnBhcmVudCgpOworICAgIAorICAgIC8vIElmIHdlIGNhbid0IGZpbmQgYW4gYW5j
ZXN0b3IgdG8gY2hlY2sgZWRpdGFiaWxpdHkgb24sIG9yIGVkaXRpYmlsaXR5IGlzIHVuY2hhbmdl
ZCwgd2UgcmVjdXJzZSBsaWtlIG5vcm1hbAorICAgIGlmICghYW5jZXN0b3IgfHwgYW5jZXN0b3It
PmVsZW1lbnQoKS0+aXNDb250ZW50RWRpdGFibGUoKSA9PSBjaGlsZE5vZGUtPmlzQ29udGVudEVk
aXRhYmxlKCkpCisgICAgICAgIHJldHVybiBjaGlsZC0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyh4
SW5DaGlsZENvb3JkcywgeUluQ2hpbGRDb29yZHMpOworCisgICAgLy8gT3RoZXJ3aXNlIHJldHVy
biBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGNoaWxkLCBkZXBlbmRpbmcgb24gaWYgdGhlIGNsaWNrIHdh
cyBsZWZ0IG9yIHJpZ2h0IG9mIHRoZSBjaGlsZAorICAgIGludCBjaGlsZE1pZFggPSBjaGlsZC0+
d2lkdGgoKSAvIDI7CisgICAgaWYgKHhJbkNoaWxkQ29vcmRzIDwgY2hpbGRNaWRYKQorICAgICAg
ICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGFuY2VzdG9yLT5lbGVtZW50KCksIGNoaWxkTm9kZS0+
bm9kZUluZGV4KCksIERPV05TVFJFQU0pOworICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oYW5j
ZXN0b3ItPmVsZW1lbnQoKSwgY2hpbGROb2RlLT5ub2RlSW5kZXgoKSArIDEsIFVQU1RSRUFNKTsK
K30KKworVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4o
UmVuZGVyQmxvY2sqIGJsb2NrLCBjb25zdCBJbnRQb2ludCYgcG9pbnRJbkNvbnRlbnRzLCBpbnQg
eEluUGFyZW50Q29vcmRzKQoreworICAgIEFTU0VSVChibG9jay0+Y2hpbGRyZW5JbmxpbmUoKSk7
CisKKyAgICBpZiAoIWJsb2NrLT5maXJzdFJvb3RCb3goKSkKKyAgICAgICAgcmV0dXJuIFZpc2li
bGVQb3NpdGlvbihibG9jay0+ZWxlbWVudCgpLCAwLCBET1dOU1RSRUFNKTsKKworICAgIC8vIGxv
b2sgZm9yIHRoZSBjbG9zZXN0IGxpbmUgYm94IGluIHRoZSByb290IGJveCB3aGljaCBpcyBhdCB0
aGUgcGFzc2VkLWluIHkgY29vcmRpbmF0ZQorICAgIGZvciAoUm9vdElubGluZUJveCogcm9vdCA9
IGJsb2NrLT5maXJzdFJvb3RCb3goKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm5leHRSb290Qm94KCkp
IHsKKyAgICAgICAgaW50IGJvdHRvbTsKKyAgICAgICAgLy8gc2V0IHRoZSBib3R0b20gYmFzZWQg
b24gd2hldGhlciB0aGVyZSBpcyBhIG5leHQgcm9vdCBib3gKKyAgICAgICAgaWYgKHJvb3QtPm5l
eHRSb290Qm94KCkpCisgICAgICAgICAgICAvLyBGSVhNRTogbWFrZSB0aGUgYnJlYWsgcG9pbnQg
aGFsZndheSBiZXR3ZWVuIHRoZSBib3R0b20gb2YgdGhlIHByZXZpb3VzIHJvb3QgYm94IGFuZCB0
aGUgdG9wIG9mIHRoZSBuZXh0IHJvb3QgYm94CisgICAgICAgICAgICBib3R0b20gPSByb290LT5u
ZXh0Um9vdEJveCgpLT50b3BPdmVyZmxvdygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBi
b3R0b20gPSByb290LT5ib3R0b21PdmVyZmxvdygpICsgdmVydGljYWxMaW5lQ2xpY2tGdWRnZUZh
Y3RvcjsKKyAgICAgICAgLy8gY2hlY2sgaWYgdGhpcyByb290IGxpbmUgYm94IGlzIGxvY2F0ZWQg
YXQgdGhpcyB5IGNvb3JkaW5hdGUKKyAgICAgICAgaWYgKHBvaW50SW5Db250ZW50cy55KCkgPCBi
b3R0b20gJiYgcm9vdC0+Zmlyc3RDaGlsZCgpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogSXQg
c2VlbXMgbGlrZSBhIGJ1ZyB0aGF0IHRoaXMgZnVuY3Rpb24gbmVlZHMgeEluUGFyZW50Q29vcmRz
CisgICAgICAgICAgICBJbmxpbmVCb3gqIGNsb3Nlc3RCb3ggPSByb290LT5jbG9zZXN0TGVhZkNo
aWxkRm9yWFBvcyh4SW5QYXJlbnRDb29yZHMpOworICAgICAgICAgICAgaWYgKGNsb3Nlc3RCb3gp
CisgICAgICAgICAgICAgICAgLy8gcGFzcyB0aGUgYm94IGEgeSBwb3NpdGlvbiB0aGF0IGlzIGlu
c2lkZSBpdAorICAgICAgICAgICAgICAgIHJldHVybiBjbG9zZXN0Qm94LT5vYmplY3QoKS0+cG9z
aXRpb25Gb3JDb29yZGluYXRlcyhwb2ludEluQ29udGVudHMueCgpLCBjbG9zZXN0Qm94LT5tX3kp
OworICAgICAgICB9CisgICAgfQorCisgICAgLy8geSBjb29yZGluYXRlIGlzIGJlbG93IGxhc3Qg
cm9vdCBsaW5lIGJveCwgcHJldGVuZCB3ZSBoaXQgaXQKKyAgICBJbmxpbmVCb3gqIGxhc3RSb290
TGluZUJveCA9IGJsb2NrLT5sYXN0Um9vdEJveCgpOworICAgIHJldHVybiBsYXN0Um9vdExpbmVC
b3gtPm9iamVjdCgpLT5wb3NpdGlvbkZvckNvb3JkaW5hdGVzKHBvaW50SW5Db250ZW50cy54KCks
IGxhc3RSb290TGluZUJveC0+bV95KTsKK30KKwogVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJsb2Nr
Ojpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKGludCB4LCBpbnQgeSkKIHsKICAgICBpZiAoaXNUYWJs
ZSgpKQogICAgICAgICByZXR1cm4gUmVuZGVyQ29udGFpbmVyOjpwb3NpdGlvbkZvckNvb3JkaW5h
dGVzKHgsIHkpOyAKIAotICAgIGludCB0b3AgPSBib3JkZXJUb3AoKTsKLSAgICBpbnQgYm90dG9t
ID0gdG9wICsgcGFkZGluZ1RvcCgpICsgY29udGVudEhlaWdodCgpICsgcGFkZGluZ0JvdHRvbSgp
OwotCi0gICAgaW50IGxlZnQgPSBib3JkZXJMZWZ0KCk7Ci0gICAgaW50IHJpZ2h0ID0gbGVmdCAr
IHBhZGRpbmdMZWZ0KCkgKyBjb250ZW50V2lkdGgoKSArIHBhZGRpbmdSaWdodCgpOwotCi0gICAg
Tm9kZSogbiA9IGVsZW1lbnQoKTsKLSAgICAKICAgICBpbnQgY29udGVudHNYID0geDsKICAgICBp
bnQgY29udGVudHNZID0geTsKICAgICBvZmZzZXRGb3JDb250ZW50cyhjb250ZW50c1gsIGNvbnRl
bnRzWSk7CisgICAgSW50UG9pbnQgcG9pbnRJbkNvbnRlbnRzKGNvbnRlbnRzWCwgY29udGVudHNZ
KTsKIAogICAgIGlmIChpc1JlcGxhY2VkKCkpIHsKICAgICAgICAgaWYgKHkgPCAwIHx8IHkgPCBo
ZWlnaHQoKSAmJiB4IDwgMCkKLSAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obiwg
Y2FyZXRNaW5PZmZzZXQoKSwgRE9XTlNUUkVBTSk7CisgICAgICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKGVsZW1lbnQoKSwgY2FyZXRNaW5PZmZzZXQoKSwgRE9XTlNUUkVBTSk7CiAgICAg
ICAgIGlmICh5ID49IGhlaWdodCgpIHx8IHkgPj0gMCAmJiB4ID49IHdpZHRoKCkpCi0gICAgICAg
ICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG4sIGNhcmV0TWF4T2Zmc2V0KCksIERPV05TVFJF
QU0pOworICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihlbGVtZW50KCksIGNhcmV0
TWF4T2Zmc2V0KCksIERPV05TVFJFQU0pOwogICAgIH0gCiAKLSAgICAvLyBJZiB3ZSBzdGFydCBp
bnNpZGUgdGhlIHNoYWRvdyB0cmVlLCB3ZSB3aWxsIHN0YXkgaW5zaWRlIChldmVuIGlmIHRoZSBw
b2ludCBpcyBhYm92ZSBvciBiZWxvdykuCi0gICAgaWYgKCEobiAmJiBuLT5pc1NoYWRvd05vZGUo
KSkgJiYgIWNoaWxkcmVuSW5saW5lKCkpIHsKLSAgICAgICAgLy8gRG9uJ3QgcmV0dXJuIHBvc2l0
aW9ucyBpbnNpZGUgZWRpdGFibGUgcm9vdHMgZm9yIGNvb3JkaW5hdGVzIG91dHNpZGUgdGhvc2Ug
cm9vdHMsIGV4Y2VwdCBmb3IgY29vcmRpbmF0ZXMgb3V0c2lkZQotICAgICAgICAvLyBhIGRvY3Vt
ZW50IHRoYXQgaXMgZW50aXJlbHkgZWRpdGFibGUuCi0gICAgICAgIGJvb2wgaXNFZGl0YWJsZVJv
b3QgPSBuICYmIG4tPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSA9PSBuICYmICFuLT5oYXNUYWdOYW1l
KGJvZHlUYWcpICYmICFuLT5oYXNUYWdOYW1lKGh0bWxUYWcpOwotCi0gICAgICAgIGlmICh5IDwg
dG9wIHx8IChpc0VkaXRhYmxlUm9vdCAmJiAoeSA8IGJvdHRvbSAmJiB4IDwgbGVmdCkpKSB7Ci0g
ICAgICAgICAgICBpZiAoIWlzRWRpdGFibGVSb290KQotICAgICAgICAgICAgICAgIGlmIChSZW5k
ZXJCb3gqIGMgPSBmaXJzdENoaWxkQm94KCkpIHsgLy8gRklYTUU6IFRoaXMgY29kZSBkb2Vzbid0
IG1ha2UgYW55IHNlbnNlLiAgVGhpcyBjaGlsZCBjb3VsZCBiZSBhbiBpbmxpbmUgb3IgYSBwb3Np
dGlvbmVkIGVsZW1lbnQgb3IgYSBmbG9hdCwgZXRjLgotICAgICAgICAgICAgICAgICAgICBWaXNp
YmxlUG9zaXRpb24gcCA9IGMtPnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoY29udGVudHNYIC0gYy0+
eCgpLCBjb250ZW50c1kgLSBjLT55KCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAocC5pc05v
dE51bGwoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGlmIChuKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE5vZGUqIHNw
ID0gbi0+c2hhZG93UGFyZW50Tm9kZSgpKQotICAgICAgICAgICAgICAgICAgICBuID0gc3A7Ci0g
ICAgICAgICAgICAgICAgaWYgKE5vZGUqIHAgPSBuLT5wYXJlbnQoKSkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihwLCBuLT5ub2RlSW5kZXgoKSwgRE9XTlNUUkVB
TSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG4s
IDAsIERPV05TVFJFQU0pOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHkgPj0gYm90dG9tIHx8
IChpc0VkaXRhYmxlUm9vdCAmJiAoeSA+PSB0b3AgJiYgeCA+PSByaWdodCkpKSB7Ci0gICAgICAg
ICAgICBpZiAoIWlzRWRpdGFibGVSb290KQotICAgICAgICAgICAgICAgIGlmIChSZW5kZXJCb3gq
IGMgPSBsYXN0Q2hpbGRCb3goKSkgeyAvLyBGSVhNRTogVGhpcyBjb2RlIGRvZXNuJ3QgbWFrZSBh
bnkgc2Vuc2UuICBUaGlzIGNoaWxkIGNvdWxkIGJlIGFuIGlubGluZSBvciBhIHBvc2l0aW9uZWQg
ZWxlbWVudCBvciBhIGZsb2F0LCBldGMuCi0gICAgICAgICAgICAgICAgICAgIFZpc2libGVQb3Np
dGlvbiBwID0gYy0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyhjb250ZW50c1ggLSBjLT54KCksIGNv
bnRlbnRzWSAtIGMtPnkoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwLmlzTm90TnVsbCgp
KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHA7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKG4pIHsKLSAgICAgICAgICAgICAgICBpZiAoTm9kZSogc3AgPSBuLT5z
aGFkb3dQYXJlbnROb2RlKCkpCi0gICAgICAgICAgICAgICAgICAgIG4gPSBzcDsKLSAgICAgICAg
ICAgICAgICBpZiAoTm9kZSogcCA9IG4tPnBhcmVudCgpKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gVmlzaWJsZVBvc2l0aW9uKHAsIG4tPm5vZGVJbmRleCgpICsgMSwgRE9XTlNUUkVBTSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG4sIDAs
IERPV05TVFJFQU0pOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgaWYgKGNoaWxkcmVuSW5saW5l
KCkpIHsKLSAgICAgICAgaWYgKCFmaXJzdFJvb3RCb3goKSkKLSAgICAgICAgICAgIHJldHVybiBW
aXNpYmxlUG9zaXRpb24obiwgMCwgRE9XTlNUUkVBTSk7Ci0KLSAgICAgICAgaWYgKGNvbnRlbnRz
WSA8IGZpcnN0Um9vdEJveCgpLT50b3BPdmVyZmxvdygpIC0gdmVydGljYWxMaW5lQ2xpY2tGdWRn
ZUZhY3RvcikKLSAgICAgICAgICAgIC8vIHkgY29vcmRpbmF0ZSBpcyBhYm92ZSBmaXJzdCByb290
IGxpbmUgYm94Ci0gICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uRm9y
Qm94KGZpcnN0Um9vdEJveCgpLT5maXJzdExlYWZDaGlsZCgpLCB0cnVlKSwgRE9XTlNUUkVBTSk7
Ci0gICAgICAgIAotICAgICAgICAvLyBsb29rIGZvciB0aGUgY2xvc2VzdCBsaW5lIGJveCBpbiB0
aGUgcm9vdCBib3ggd2hpY2ggaXMgYXQgdGhlIHBhc3NlZC1pbiB5IGNvb3JkaW5hdGUKLSAgICAg
ICAgZm9yIChSb290SW5saW5lQm94KiByb290ID0gZmlyc3RSb290Qm94KCk7IHJvb3Q7IHJvb3Qg
PSByb290LT5uZXh0Um9vdEJveCgpKSB7Ci0gICAgICAgICAgICAvLyBzZXQgdGhlIGJvdHRvbSBi
YXNlZCBvbiB3aGV0aGVyIHRoZXJlIGlzIGEgbmV4dCByb290IGJveAotICAgICAgICAgICAgaWYg
KHJvb3QtPm5leHRSb290Qm94KCkpCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IG1ha2UgdGhl
IGJyZWFrIHBvaW50IGhhbGZ3YXkgYmV0d2VlbiB0aGUgYm90dG9tIG9mIHRoZSBwcmV2aW91cyBy
b290IGJveCBhbmQgdGhlIHRvcCBvZiB0aGUgbmV4dCByb290IGJveAotICAgICAgICAgICAgICAg
IGJvdHRvbSA9IHJvb3QtPm5leHRSb290Qm94KCktPnRvcE92ZXJmbG93KCk7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgYm90dG9tID0gcm9vdC0+Ym90dG9tT3ZlcmZsb3coKSAr
IHZlcnRpY2FsTGluZUNsaWNrRnVkZ2VGYWN0b3I7Ci0gICAgICAgICAgICAvLyBjaGVjayBpZiB0
aGlzIHJvb3QgbGluZSBib3ggaXMgbG9jYXRlZCBhdCB0aGlzIHkgY29vcmRpbmF0ZQotICAgICAg
ICAgICAgaWYgKGNvbnRlbnRzWSA8IGJvdHRvbSAmJiByb290LT5maXJzdENoaWxkKCkpIHsKLSAg
ICAgICAgICAgICAgICBJbmxpbmVCb3gqIGNsb3Nlc3RCb3ggPSByb290LT5jbG9zZXN0TGVhZkNo
aWxkRm9yWFBvcyh4KTsKLSAgICAgICAgICAgICAgICBpZiAoY2xvc2VzdEJveCkKLSAgICAgICAg
ICAgICAgICAgICAgLy8gcGFzcyB0aGUgYm94IGEgeSBwb3NpdGlvbiB0aGF0IGlzIGluc2lkZSBp
dAotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdEJveC0+b2JqZWN0KCktPnBvc2l0
aW9uRm9yQ29vcmRpbmF0ZXMoY29udGVudHNYLCBjbG9zZXN0Qm94LT5tX3kpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGxhc3RSb290Qm94KCkpCi0gICAgICAgICAg
ICAvLyB5IGNvb3JkaW5hdGUgaXMgYmVsb3cgbGFzdCByb290IGxpbmUgYm94Ci0gICAgICAgICAg
ICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uRm9yQm94KGxhc3RSb290Qm94KCktPmxh
c3RMZWFmQ2hpbGQoKSwgZmFsc2UpLCBET1dOU1RSRUFNKTsKLQotICAgICAgICByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKG4sIDAsIERPV05TVFJFQU0pOworICAgICAgICAvLyBGSVhNRTogY2xvc2Vz
dExlYWZDaGlsZEZvclhQb3Mgc2VlbXMgdG8gdXNlIHggaW5zZWFkIG9mIGNvbnRlbnRYLCB3aGlj
aCBzZWVtcyB3cm9uZyE/CisgICAgICAgIHJldHVybiBwb3NpdGlvbkZvclBvaW50V2l0aElubGlu
ZUNoaWxkcmVuKHRoaXMsIHBvaW50SW5Db250ZW50cywgeCk7CiAgICAgfQotICAgIAotICAgIC8v
IFNlZSBpZiBhbnkgY2hpbGQgYmxvY2tzIGV4aXN0IGF0IHRoaXMgeSBjb29yZGluYXRlLgorCisg
ICAgLy8gQ2hlY2sgdG9wL2JvdHRvbSBjaGlsZC1tYXJnaW4vcGFyZW50LXBhZGRpbmcgZm9yIGNs
aWNrcyBhbmQgcGxhY2UgdGhlbSBpbiB0aGUgZmlyc3QvbGFzdCBjaGlsZAorICAgIC8vIEZJWE1F
OiBUaGlzIHdpbGwgbm90IGNvcnJlY3RseSBoYW5kbGUgZmlyc3Qgb3IgbGFzdCBjaGlsZHJlbiBi
ZWluZyBwb3NpdGlvbmVkIG9yIG5vbi12aXNpYmxlCiAgICAgaWYgKGZpcnN0Q2hpbGRCb3goKSAm
JiBjb250ZW50c1kgPCBmaXJzdENoaWxkQm94KCktPnkoKSkKLSAgICAgICAgcmV0dXJuIFZpc2li
bGVQb3NpdGlvbihuLCAwLCBET1dOU1RSRUFNKTsKLSAgICBmb3IgKFJlbmRlckJveCogcmVuZGVy
ZXIgPSBmaXJzdENoaWxkQm94KCk7IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5uZXh0
U2libGluZ0JveCgpKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlci0+aGVpZ2h0KCkgPT0gMCB8fCBy
ZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcmVuZGVyZXItPmlz
RmxvYXRpbmdPclBvc2l0aW9uZWQoKSkKKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uRm9yUG9pbnRS
ZXNwZWN0aW5nRWRpdGluZ0JvdW5kYXJpZXModGhpcywgZmlyc3RDaGlsZEJveCgpLCBwb2ludElu
Q29udGVudHMpOworICAgIGlmIChsYXN0Q2hpbGRCb3goKSAmJiBjb250ZW50c1kgPiBsYXN0Q2hp
bGRCb3goKS0+eSgpKQorICAgICAgICByZXR1cm4gcG9zaXRpb25Gb3JQb2ludFJlc3BlY3RpbmdF
ZGl0aW5nQm91bmRhcmllcyh0aGlzLCBsYXN0Q2hpbGRCb3goKSwgcG9pbnRJbkNvbnRlbnRzKTsK
KworICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZEJveCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGRC
b3g7IGNoaWxkQm94ID0gY2hpbGRCb3gtPm5leHRTaWJsaW5nQm94KCkpIHsKKyAgICAgICAgaWYg
KGNoaWxkQm94LT5oZWlnaHQoKSA9PSAwIHx8IGNoaWxkQm94LT5zdHlsZSgpLT52aXNpYmlsaXR5
KCkgIT0gVklTSUJMRSB8fCBjaGlsZEJveC0+aXNGbG9hdGluZ09yUG9zaXRpb25lZCgpKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFJlbmRlckJveCogbmV4dCA9IHJlbmRlcmVyLT5u
ZXh0U2libGluZ0JveCgpOwotICAgICAgICB3aGlsZSAobmV4dCAmJiBuZXh0LT5pc0Zsb2F0aW5n
T3JQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICBuZXh0ID0gbmV4dC0+bmV4dFNpYmxpbmdCb3go
KTsKLSAgICAgICAgaWYgKG5leHQpIAotICAgICAgICAgICAgYm90dG9tID0gbmV4dC0+eSgpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBib3R0b20gPSB0b3AgKyBzY3JvbGxIZWlnaHQoKTsK
LSAgICAgICAgaWYgKGNvbnRlbnRzWSA+PSByZW5kZXJlci0+eSgpICYmIGNvbnRlbnRzWSA8IGJv
dHRvbSkKLSAgICAgICAgICAgIHJldHVybiByZW5kZXJlci0+cG9zaXRpb25Gb3JDb29yZGluYXRl
cyhjb250ZW50c1ggLSByZW5kZXJlci0+eCgpLCBjb250ZW50c1kgLSByZW5kZXJlci0+eSgpKTsK
KyAgICAgICAgLy8gV2UgaGl0IHRoaXMgY2hpbGQgaWYgb3VyIGNsaWNrIHdhcyBhYm92ZSB0aGUg
Ym90dG9tIG9mIGl0cyBwYWRkaW5nIGJveCAobGlrZSBJRTYvNyBhbmQgRkYzKQorICAgICAgICBp
ZiAoY29udGVudHNZIDwgY2hpbGRCb3gtPnkoKSArIGNoaWxkQm94LT5oZWlnaHQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBwb3NpdGlvbkZvclBvaW50UmVzcGVjdGluZ0VkaXRpbmdCb3VuZGFyaWVz
KHRoaXMsIGNoaWxkQm94LCBwb2ludEluQ29udGVudHMpOwogICAgIH0KLSAgICAKKworICAgIC8v
IFdlIG9ubHkgZ2V0IGhlcmUgaWYgdGhlcmUgYXJlIG5vLCBvciBvbmx5IGZsb2F0ZWQvcG9zaXRp
b25lZCwgb3Igb25seQorICAgIC8vIG5vbi12aXNpYmxlIGJsb2NrIGNoaWxkcmVuIGJlbG93IHRo
ZSBjbGljay4KICAgICByZXR1cm4gUmVuZGVyQ29udGFpbmVyOjpwb3NpdGlvbkZvckNvb3JkaW5h
dGVzKHgsIHkpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb250
YWluZXIuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29udGFpbmVyLmNwcAppbmRleCA3
MWU1ZDA5Li40M2U4YmMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb250
YWluZXIuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbnRhaW5lci5jcHAKQEAg
LTU5MSw4ICs1OTEsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQ29udGFpbmVyOjpwb3NpdGlv
bkZvckNvb3JkaW5hdGVzKGludCB4UG9zLCBpbnQgeVBvcykKICAgICAgICAgaWYgKHhQb3MgPCAw
IHx8IHhQb3MgPiByaWdodCB8fCB5UG9zIDwgMCB8fCB5UG9zID4gYm90dG9tKSB7CiAgICAgICAg
ICAgICBpZiAoeFBvcyA8PSByaWdodCAvIDIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2li
bGVQb3NpdGlvbihQb3NpdGlvbihlbGVtZW50KCksIDApKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKGVsZW1lbnQoKSwg
bWF4RGVlcE9mZnNldChlbGVtZW50KCkpKSk7CisgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uKFBvc2l0aW9uKGVsZW1lbnQoKSwgbWF4RGVlcE9mZnNldChlbGVtZW50KCkpKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IGFiZThi
MmEuLjg2ZTcxNjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtNDg0LDYgKzQ4
NCw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJJbmxpbmU6OnBvc2l0aW9uRm9yQ29vcmRpbmF0
ZXMoaW50IHgsIGludCB5KQogICAgIHdoaWxlIChjKSB7CiAgICAgICAgIFJlbmRlckJveCogY29u
dEJsb2NrID0gYzsKICAgICAgICAgaWYgKGMtPmlzSW5saW5lKCkgfHwgYy0+Zmlyc3RDaGlsZCgp
KQorICAgICAgICAgICAgLy8gVGhlIGNvbnRpbnVhdGlvbnMgKGFub255bW91cyBibG9ja3MpIHdp
bGwgbmV2ZXIgYmUgZWRpdGFibGUsIHNvIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgY3Jv
c3NpbmcgZWRpdGFibGUgYm91bmRhcmllcyBoZXJlLgogICAgICAgICAgICAgcmV0dXJuIGMtPnBv
c2l0aW9uRm9yQ29vcmRpbmF0ZXMocGFyZW50QmxvY2tYIC0gY29udEJsb2NrLT54KCksIHBhcmVu
dEJsb2NrWSAtIGNvbnRCbG9jay0+eSgpKTsKICAgICAgICAgYyA9IHRvUmVuZGVyQmxvY2soYykt
PmlubGluZUNvbnRpbnVhdGlvbigpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27270</attachid>
            <date>2009-02-02 17:58:26 -0800</date>
            <delta_ts>2009-02-05 17:44:20 -0800</delta_ts>
            <desc>A full git patch for easier applying by ojan (with git am)</desc>
            <filename>0001-Fix-bugs-23605-and-23607.patch</filename>
            <type>text/plain</type>
            <size>58652</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">RnJvbSBlZDc4OTc1MTk2YTE5MDNmYzkzYjQ3MGZjZGJiZDNmNjI2YzVkNTMyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgpEYXRlOiBX
ZWQsIDI4IEphbiAyMDA5IDE2OjQzOjQ2IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1Z3Mg
MjM2MDUgYW5kIDIzNjA3CgotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAzMyArKysrCiAuLi5pY2staW4tbWFyZ2lucy1pbnNpZGUtZWRp
dGFibGUtZGl2LWV4cGVjdGVkLnR4dCB8ICAgMjMgKysrCiAuLi4vY2xpY2staW4tbWFyZ2lucy1p
bnNpZGUtZWRpdGFibGUtZGl2Lmh0bWwgICAgICB8ICAgMTMgKysKIC4uLi9jbGljay1vdXRzaWRl
LWVkaXRhYmxlLWRpdi1leHBlY3RlZC50eHQgICAgICAgIHwgICAxNyArKwogLi4uL3NlbGVjdGlv
bi9jbGljay1vdXRzaWRlLWVkaXRhYmxlLWRpdi5odG1sICAgICAgfCAgIDEzICsrCiAuLi4vc2Vs
ZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLmh0bWwgICB8ICAgMTMgLS0KIC4u
Li9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbCAgICAgIHwgICAxMyAr
KwogLi4uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5qcyAgICAgICAgfCAg
MTM4ICsrKysrKysrKysrKysrKysKIC4uLi9yZXNvdXJjZXMvY2xpY2stb3V0c2lkZS1lZGl0YWJs
ZS1kaXYuanMgICAgICAgIHwgICA1MCArKysrKysKIC4uLmNvbnRlbnRlZGl0YWJsZS1jbGljay1v
dXRzaWRlLWV4cGVjdGVkLmNoZWNrc3VtIHwgICAgMSAtCiAuLi4vY29udGVudGVkaXRhYmxlLWNs
aWNrLW91dHNpZGUtZXhwZWN0ZWQucG5nICAgICB8ICBCaW4gMjEyNjIgLT4gMCBieXRlcwogLi4u
L2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLnR4dCAgICAgfCAgIDE2IC0t
CiAuLi4vc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVjdGVkLnR4dCAgICAgICB8ICAg
IDQgKy0KIC4uLi9zZWxlY3QtZnJvbS10ZXh0ZmllbGQtb3V0d2FyZHMtZXhwZWN0ZWQudHh0ICAg
IHwgICAgMiArLQogLi4uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLnR4
dCAgICAgfCAgIDEyIC0tCiAuLi4vc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVjdGVk
LnR4dCAgICAgICB8ICAgNTYgLS0tLS0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDMxICsrKysKIFdlYkNvcmUvZWRpdGluZy9WaXNpYmxl
UG9zaXRpb24uY3BwICAgICAgICAgICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwICAgICAgICAgICAgICAgICAgfCAgMTc0ICsrKysrKysrKy0tLS0tLS0t
LS0tCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwICAgICAgICAgICAgICB8
ICAgIDMgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgICAgICAgICAgICAg
ICAgIHwgICAgMSArCiAyMSBmaWxlcyBjaGFuZ2VkLCA0MTkgaW5zZXJ0aW9ucygrKSwgMTk4IGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi1leHBlY3RlZC50eHQKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1t
YXJnaW5zLWluc2lkZS1lZGl0YWJsZS1kaXYuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LWV4cGVj
dGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2Lmh0bWwKIGRlbGV0ZSBtb2RlIDEwMDY0NCBMYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS5o
dG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVz
b3VyY2VzL1RFTVBMQVRFLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUt
ZGl2LmpzCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
cmVzb3VyY2VzL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LmpzCiBkZWxldGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0
YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLmNoZWNrc3VtCiBkZWxldGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJs
ZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLnBuZwogZGVsZXRlIG1vZGUgMTAwNjQ0IExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2st
b3V0c2lkZS1leHBlY3RlZC50eHQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1l
eHBlY3RlZC50eHQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9l
ZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQKCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MGIzYTUyYS4uMjg0ZWNlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDA5LTAxLTMwICBPamFu
IFZhZmFpIDxvamFuQGNocm9taXVtLm9yZz4gYW5kIEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSBjdXJzb3IgcG9zaXRpb25zIG1hdGNoIElFNi9JRTcvRkYzIHdoZW4gY2xpY2tpbmcgaW4gbWFy
Z2lucy9wYWRkaW5nCisgICAgICAgIGFyb3VuZCBkaXZzIGluc2lkZSBlZGl0YWJsZSByZWdpb25z
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MDUK
KyAgICAgICAgCisgICAgICAgIEZpeCBjbGlja3Mgb3V0c2lkZSBlZGl0YWJsZSByZWdpb25zIGZy
b20gZm9jdXNpbmcgdGhlIGVkaXRhYmxlIHJlZ2lvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjA3CisgICAgICAgIAorICAgICAgICBSZW1vdmVk
IGVkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLmh0bWwgYXMg
aXQncworICAgICAgICBub3QgYXMgdXNlZnVsIGFzIG91ciBuZXcgdGVzdHMuCisgICAgICAgIAor
ICAgICAgICBBZGRlZCB0ZXN0czoKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1p
bi1tYXJnaW5zLWluc2lkZS1lZGl0YWJsZS1kaXYuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRp
dGluZy9zZWxlY3Rpb24vY2xpY2stb3V0c2lkZS1lZGl0YWJsZS1kaXYuaHRtbDogQWRkZWQuCisK
KyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0
YWJsZS1kaXYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlv
bi9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0YWJsZS1kaXYuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stb3V0c2lkZS1lZGl0YWJsZS1kaXYtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1vdXRzaWRl
LWVkaXRhYmxlLWRpdi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9j
b250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGVk
aXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9URU1QTEFURS5odG1sOiBDb3BpZWQgZnJvbSBMYXlv
dXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3Jlc291cmNlcy9URU1QTEFURS5odG1sLgorICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9jbGljay1pbi1tYXJnaW5zLWluc2lk
ZS1lZGl0YWJsZS1kaXYuanM6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5n
L3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1leHBlY3RlZC5jaGVja3N1
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29u
dGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2st
b3V0c2lkZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWZyb20tdGV4dGZpZWxkLW91
dHdhcmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVj
dGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFsbC1pZnJh
bWUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorCiAyMDA5LTAyLTAyICBZaWNoYW8gWWluICA8eWlj
aGFvLnlpbkB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrbyBa
aW1tZXJtYW5uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xp
Y2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRp
di1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTlmM2Qx
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNr
LWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwy
MyBAQAorRW5zdXJlIGN1cnNvciBwbGFjZW1lbnQgbWF0Y2hlcyBJRTYvSUU3L0ZGMyB3aGVuIGNs
aWNraW5nIGFib3ZlL2JlbG93IGxpbmVzIGluIHBhZGRpbmcuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9m
ZnNldDogMAorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6
IDEKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAyCitQ
QVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMAorUEFTUyBT
ZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDIKK1BBU1MgU2VsZWN0
aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAwCitQQVNTIFNlbGVjdGlvbiBp
cyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMQorUEFTUyBTZWxlY3Rpb24gaXMgYXQg
bm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDIKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6
IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAwCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2Jq
ZWN0IFRleHRdIG9mZnNldDogMQorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBU
ZXh0XSBvZmZzZXQ6IDIKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0g
b2Zmc2V0OiAwCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNl
dDogMQorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDIK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1tYXJnaW5zLWlu
c2lkZS1lZGl0YWJsZS1kaXYuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Ns
aWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjA4NDY3MzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0YWJsZS1kaXYu
aHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1l
ZGl0YWJsZS1kaXYuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1vdXRzaWRlLWVkaXRh
YmxlLWRpdi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGlj
ay1vdXRzaWRlLWVkaXRhYmxlLWRpdi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMmZiYTc3MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE3IEBACitFbnN1cmUgdGhhdCBjbGlja2luZyBpbiB0aGUgbWFyZ2lucyBhcm91
bmQgZWRpdGFibGUgZGl2cyBkb2VzIG5vdCBncmFudCBmb2N1cy4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgQ2xpY2sgQCA1MCwgNTAgZGlkIG5vdCBjYXVzZSBmb2N1cy4K
K1BBU1MgQ2xpY2sgQCAxNTAsIDUwIGRpZCBub3QgY2F1c2UgZm9jdXMuCitQQVNTIENsaWNrIEAg
MjUwLCA1MCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBDbGljayBAIDUwLCAxNTAgZGlkIG5v
dCBjYXVzZSBmb2N1cy4KK1BBU1MgQ2xpY2sgQCAyNTAsIDE1MCBkaWQgbm90IGNhdXNlIGZvY3Vz
LgorUEFTUyBDbGljayBAIDUwLCAyNTAgZGlkIG5vdCBjYXVzZSBmb2N1cy4KK1BBU1MgQ2xpY2sg
QCAxNTAsIDI1MCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBDbGljayBAIDI1MCwgMjUwIGRp
ZCBub3QgY2F1c2UgZm9jdXMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
Y2xpY2stb3V0c2lkZS1lZGl0YWJsZS1kaXYuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZGQ1NTlhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2Lmh0bWwKQEAgLTAs
MCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvY2xpY2stb3V0c2lkZS1lZGl0YWJsZS1kaXYuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS5odG1sIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBkOGVhZS4uMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0
c2lkZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPHNjcmlwdD4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBFZGl0aW5nQ2FsbGJhY2tzKCk7Ci08L3NjcmlwdD4KLTxkaXYgc3R5bGU9IndpZHRoOiA0MDBw
eDsgaGVpZ2h0OiA1MHB4OyBwYWRkaW5nOiAyNXB4IDAgMCAyNXB4OyBiYWNrZ3JvdW5kOiB5ZWxs
b3c7Ij48ZGl2IGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgc3R5bGU9ImJhY2tncm91bmQ6IHdoaXRl
OyBoZWlnaHQ6MjBweDsgd2lkdGg6MTAwcHgiPjwvZGl2PjwvZGl2PgotPHA+VGhpcyB0ZXN0IGNs
aWNrcyBvdXRzaWRlIGFuIGVkaXRhYmxlIGRpdiBlbGVtZW50LCBhbmQgbXVzdCBub3QgcmVzdWx0
IGluIHRoZSBlbGVtZW50IHJlY2VpdmluZyBmb2N1cy4gSWYgdGhlIHRlc3Qgc3VjY2VlZHMgdGhl
IGVsZW1lbnQgc2hvdWxkIG5vdCBoYXZlIGEgZm9jdXMgcmluZy48L3A+Ci08c2NyaXB0PgotaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgewotICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDIyNSwg
NDUpOwotICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwotICAgIGV2ZW50U2VuZGVyLm1vdXNl
VXAoKTsKLX0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43MGNlNTZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJZT1VSX0pT
X0ZJTEVfSEVSRSI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9jbGljay1pbi1tYXJn
aW5zLWluc2lkZS1lZGl0YWJsZS1kaXYuanMgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9yZXNvdXJjZXMvY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkODc1MjIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2staW4tbWFyZ2lu
cy1pbnNpZGUtZWRpdGFibGUtZGl2LmpzCkBAIC0wLDAgKzEsMTM4IEBACitkZXNjcmlwdGlvbigi
RW5zdXJlIGN1cnNvciBwbGFjZW1lbnQgbWF0Y2hlcyBJRTYvSUU3L0ZGMyB3aGVuIGNsaWNraW5n
IGFib3ZlL2JlbG93IGxpbmVzIGluIHBhZGRpbmcuIikKKworZG9jdW1lbnQuYm9keS5zdHlsZS5t
YXJnaW4gPSAwOworCit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citk
aXYuc3R5bGUuY3NzVGV4dCA9ICJmb250LWZhbWlseTogYWhlbTsgZm9udC1zaXplOiAyMHB4OyAt
d2Via2l0LXRleHQtZmlsbC1jb2xvcjogeWVsbG93OyB3aWR0aDogNDBweDsgaGVpZ2h0OiA4MHB4
OyBwYWRkaW5nOiAyMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiOworZGl2LmNvbnRlbnRF
ZGl0YWJsZSA9IHRydWU7CisKK3ZhciBmaXJzdFRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSgiWFgiKTsKK3ZhciBmaXJzdERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
Zmlyc3REaXYuYXBwZW5kQ2hpbGQoZmlyc3RUZXh0KTsKK2ZpcnN0RGl2LnN0eWxlLmNzc1RleHQg
PSAicGFkZGluZy1ib3R0b206IDE5cHg7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBwaW5rOyBt
YXJnaW4tYm90dG9tOiAyMHB4IjsKK2Rpdi5hcHBlbmRDaGlsZChmaXJzdERpdik7CisKK3ZhciBz
ZWNvbmRUZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIllZIik7Cit2YXIgc2Vjb25kRGl2
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitzZWNvbmREaXYuYXBwZW5kQ2hpbGQo
c2Vjb25kVGV4dCk7CitkaXYuYXBwZW5kQ2hpbGQoc2Vjb25kRGl2KTsKKworZG9jdW1lbnQuYm9k
eS5pbnNlcnRCZWZvcmUoZGl2LCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOworCitmdW5jdGlv
biBvYmplY3RBc1N0cmluZyhvYmplY3QsIHByb3BlcnRpZXMpIHsKKyAgICB2YXIgcmVzdWx0ID0g
IlsiOworICAgIGZvciAodmFyIHggPSAwOyB4IDwgcHJvcGVydGllcy5sZW5ndGg7IHgrKykgewor
ICAgICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW3hdOworICAgICAgICBpZiAoeCAhPSAw
KQorICAgICAgICAgICAgcmVzdWx0ICs9ICIgIjsKKworICAgICAgICB2YXIgdmFsdWUgPSBvYmpl
Y3RbcHJvcGVydHldOworICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUubm9kZVR5cGUpIC8vIHRl
eHROb2RlCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlICsgIiggIiArIHZhbHVlLm5vZGVWYWx1
ZSArICIgKSI7CisKKyAgICAgICAgcmVzdWx0ICs9IHByb3BlcnR5ICsgIjogIiArIHZhbHVlOwor
ICAgIH0KKyAgICByZXN1bHQgKz0gJ10nOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0
aW9uIHNlbGVjdGlvbkFzU3RyaW5nKHNlbCkKK3sKKyAgICB2YXIgcHJvcGVydGllcyA9IFsnYW5j
aG9yTm9kZScsICdhbmNob3JPZmZzZXQnLCAnZm9jdXNOb2RlJywgJ2ZvY3VzT2Zmc2V0JywgJ2lz
Q29sbGFwc2VkJ107CisgICAgcmV0dXJuIG9iamVjdEFzU3RyaW5nKHNlbCwgcHJvcGVydGllcyk7
Cit9CisKK2Z1bmN0aW9uIGFzc2VydFJhbmdlKG5vZGUsIG9mZnNldCkgeworICAgIHZhciBzZWwg
PSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgaWYgKHNlbC5hbmNob3JOb2RlID09IG5vZGUK
KyAgICAgICAgJiYgc2VsLmZvY3VzTm9kZSA9PSBub2RlCisgICAgICAgICYmIHNlbC5hbmNob3JP
ZmZzZXQgPT0gb2Zmc2V0CisgICAgICAgICYmIHNlbC5mb2N1c09mZnNldCA9PSBvZmZzZXQKKyAg
ICAgICAgJiYgc2VsLmlzQ29sbGFwc2VkKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIlNlbGVjdGlv
biBpcyBhdCBub2RlOiAiICsgbm9kZSArICIgb2Zmc2V0OiAiICsgb2Zmc2V0KTsKKyAgICB9IGVs
c2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJTZWxlY3Rpb24gaXMgIiArIHNlbGVjdGlvbkFzU3Ry
aW5nKHNlbCkgKyAiIHNob3VsZCBiZSBhdCBub2RlOiAiICsgbm9kZSArICIgb2Zmc2V0OiAiICsg
b2Zmc2V0KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNsaWNrKHgsIHkpIHsKKyAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkp
OworICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNs
aWNrU2hvdWxkUmVzdWx0SW5SYW5nZSh4LCB5LCBub2RlLCBvZmZzZXQpIHsKKyAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGNsaWNrKHgsIHkpOworICAgICAgICBhc3NlcnRS
YW5nZShub2RlLCBvZmZzZXQpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RzLnB1c2goewor
ICAgICAgICAgICAgdGVzdEZ1bmN0aW9uOiBmdW5jdGlvbigpIHsgYXNzZXJ0UmFuZ2Uobm9kZSwg
b2Zmc2V0KTsgfSwKKyAgICAgICAgICAgIGNsaWNrU3RyaW5nOiAiICIgKyB4ICsgIiwgIiArIHkg
fQorICAgICAgICApCisgICAgfQorfQorCitmdW5jdGlvbiBwcmludENsaWNrU3RyaW5nRm9yV2Fp
dGluZ1Rlc3QoKQoreworICAgIGlmICghdGVzdHNbdGVzdEluZGV4XSkKKyAgICAgICAgcmV0dXJu
OworICAgIGRlYnVnKCJXYWl0aW5nIGZvciBjbGljayBAICIgKyB0ZXN0c1t0ZXN0SW5kZXhdLmNs
aWNrU3RyaW5nKTsKK30KKwordmFyIHRlc3RJbmRleCA9IDA7Cit2YXIgdGVzdHMgPSBbXTsKK2Z1
bmN0aW9uIHJ1bkludGVyYWN0aXZlVGVzdHMoKQoreworICAgIHRlc3RJbmRleCA9IDA7CisgICAg
cHJpbnRDbGlja1N0cmluZ0ZvcldhaXRpbmdUZXN0KCk7CisgICAgZG9jdW1lbnQuYm9keS5hZGRF
dmVudExpc3RlbmVyKCJtb3VzZXVwIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGRlYnVnKCJHb3Qg
Y2xpY2sgQCAiICsgZXZlbnQuY2xpZW50WCArICIsICIgKyBldmVudC5jbGllbnRZKTsKKyAgICAg
ICAgdmFyIHRlc3QgPSB0ZXN0c1t0ZXN0SW5kZXhdOworICAgICAgICBpZiAodGVzdCkgeworICAg
ICAgICAgICAgdGVzdC50ZXN0RnVuY3Rpb24oKTsKKyAgICAgICAgICAgIHRlc3RJbmRleCsrOwor
ICAgICAgICAgICAgcHJpbnRDbGlja1N0cmluZ0ZvcldhaXRpbmdUZXN0KCk7CisgICAgICAgIH0K
KyAgICB9LCBmYWxzZSk7Cit9CisKKy8vIFdoZW4gY2xpY2tpbmcgYmV0d2VlbiBkaXZzIHNlcGFy
YXRlZCBieSBtYXJnaW5zIGluIGFuIGVkaXRhYmxlCisvLyB0ZXh0IHJlZ2lvbiwgdGhlIGJyb3dz
ZXJzIGRpZmZlciBpbiBiZWhhdmlvcjoKKy8vIEZGMzogdmVydGljYWwgcGFkZGluZyBib3ggKyBz
b21lIHNvcnQgb2Ygb3ZlcmhhbmcgZGVjZW50PworLy8gSUU2L0lFNzogdmVydGljYWwgcGFkZGlu
ZyBib3gKKy8vIElFOCBiMjogbWFyZ2luIGJveAorLy8gU2FmYXJpMzogbWFyZ2luIGJveCAoYnV0
IGN1cnNvciBnb2VzIGF0IGVuZCBvZiBsaW5lKQorCitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2Uo
MTAsIDEwLCBmaXJzdFRleHQsIDApOworY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKDQwLCAxMCwg
Zmlyc3RUZXh0LCAxKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSg3MCwgMTAsIGZpcnN0VGV4
dCwgMik7CisKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSgxMCwgMzAsIGZpcnN0VGV4dCwgMCk7
CitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNzAsIDMwLCBmaXJzdFRleHQsIDIpOworCitjbGlj
a1Nob3VsZFJlc3VsdEluUmFuZ2UoMTAsIDUwLCBmaXJzdFRleHQsIDApOworY2xpY2tTaG91bGRS
ZXN1bHRJblJhbmdlKDQwLCA1MCwgZmlyc3RUZXh0LCAxKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5S
YW5nZSg3MCwgNTAsIGZpcnN0VGV4dCwgMik7CisKKy8vIFdlJ3JlIGdvaW5nIHRvIGZvbGxvdyBJ
RSA3J3MgYmVoYXZpb3IgYW5kIHVzZSB0aGUgcGFkZGluZyBib3ggaGVpZ2h0CisvLyBmb3IgZGV0
ZXJtaW5pbmcgaWYgdGhlIGNsaWNrIGJlbG93IGEgZGl2IChpbiB0aGUgcGFkZGluZy9tYXJnaW4g
cmVnaW9uKQorY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKDEwLCA3MCwgc2Vjb25kVGV4dCwgMCk7
CitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNDAsIDcwLCBzZWNvbmRUZXh0LCAxKTsKK2NsaWNr
U2hvdWxkUmVzdWx0SW5SYW5nZSg3MCwgNzAsIHNlY29uZFRleHQsIDIpOworCitjbGlja1Nob3Vs
ZFJlc3VsdEluUmFuZ2UoMTAsIDExMCwgc2Vjb25kVGV4dCwgMCk7CitjbGlja1Nob3VsZFJlc3Vs
dEluUmFuZ2UoNDAsIDExMCwgc2Vjb25kVGV4dCwgMSk7CitjbGlja1Nob3VsZFJlc3VsdEluUmFu
Z2UoNzAsIDExMCwgc2Vjb25kVGV4dCwgMik7CisKKy8vIENsZWFuIHVwIGFmdGVyIG91cnNlbHZl
cyBpZiB3ZSdyZSBub3QgYmVpbmcgcnVuIGluIHRoZSBicm93c2VyCitpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpOworfSBlbHNlIHsK
KyAgICBydW5JbnRlcmFjdGl2ZVRlc3RzKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3Vy
Y2VzL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NjRmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2stb3V0c2lkZS1lZGl0
YWJsZS1kaXYuanMKQEAgLTAsMCArMSw1MCBAQAorZGVzY3JpcHRpb24oIkVuc3VyZSB0aGF0IGNs
aWNraW5nIGluIHRoZSBtYXJnaW5zIGFyb3VuZCBlZGl0YWJsZSBkaXZzIGRvZXMgbm90IGdyYW50
IGZvY3VzLiIpCisKK2RvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luID0gIjBweCI7CisKK3ZhciBv
dXRlckRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworb3V0ZXJEaXYuc3R5bGUu
Y3NzVGV4dCA9ICJ3aWR0aDogMTAwcHg7IHBhZGRpbmc6IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9y
OiBibHVlOyI7Cit2YXIgaW5uZXJEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
K2lubmVyRGl2LnN0eWxlLmNzc1RleHQgPSAiaGVpZ2h0OiAxMDBweDsgYm9yZGVyOiAxcHggc29s
aWQgcGluazsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IjsKK2lubmVyRGl2LmNvbnRlbnRFZGl0
YWJsZSA9IHRydWU7CitvdXRlckRpdi5hcHBlbmRDaGlsZChpbm5lckRpdik7Citkb2N1bWVudC5i
b2R5Lmluc2VydEJlZm9yZShvdXRlckRpdiwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKKwor
dmFyIGxhc3RDbGlja0NhdXNlZEZvY3VzID0gZmFsc2U7Citkb2N1bWVudC5ib2R5LmFkZEV2ZW50
TGlzdGVuZXIoIm1vdXNldXAiLCBmdW5jdGlvbihlKSB7CisgICAgdmFyIGxhc3RDbGljayA9IGUg
fHwgd2luZG93LmV2ZW50OworICAgIGlmIChsYXN0Q2xpY2tDYXVzZWRGb2N1cykgeworICAgICAg
ICB0ZXN0RmFpbGVkKCJDbGljayBAICIgKyBsYXN0Q2xpY2suY2xpZW50WCArICIsICIgKyBsYXN0
Q2xpY2suY2xpZW50WSArICIgY2F1c2VkIGlubmVyZGl2IHRvIGZvY3VzISIpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNsaWNrIEAgIiArIGxhc3RDbGljay5jbGllbnRYICsg
IiwgIiArIGxhc3RDbGljay5jbGllbnRZICsgIiBkaWQgbm90IGNhdXNlIGZvY3VzLiIpOworICAg
IH0KKyAgICBpbm5lckRpdi5ibHVyKCk7CisgICAgbGFzdENsaWNrQ2F1c2VkRm9jdXMgPSBmYWxz
ZTsKK30sIGZhbHNlKTsKKworaW5uZXJEaXYuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCBmdW5j
dGlvbigpIHsKKyAgICBsYXN0Q2xpY2tDYXVzZWRGb2N1cyA9IHRydWU7Cit9LCBmYWxzZSk7CisK
K2Z1bmN0aW9uIGNsaWNrQXQoeCwgeSkgeworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgs
IHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
VXAoKTsKK30KKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIGNsaWNrQXQoNTAsIDUw
KTsKKyAgICBjbGlja0F0KDE1MCwgNTApOworICAgIGNsaWNrQXQoMjUwLCA1MCk7CisKKyAgICBj
bGlja0F0KDUwLCAxNTApOworICAgIGNsaWNrQXQoMjUwLCAxNTApOworCisgICAgY2xpY2tBdCg1
MCwgMjUwKTsKKyAgICBjbGlja0F0KDE1MCwgMjUwKTsKKyAgICBjbGlja0F0KDI1MCwgMjUwKTsK
K30gZWxzZSB7CisgICAgZGVidWcoIkNsaWNrIGluIGFsbCA4IHJlZ2lvbnMgYXJvdW5kIHRoZSBn
cmVlbiBkaXYgdG8gdGVzdC4iKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24v
Y29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQuY2hlY2tzdW0gYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNr
LW91dHNpZGUtZXhwZWN0ZWQuY2hlY2tzdW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGM1OTE3ZjEuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
c2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLmNoZWNrc3Vt
CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotMTY1MmZkODFiNmM4N2I5ODhhMDAzMzE4Zjk4
MTkzNzgKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91
dHNpZGUtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLnBuZwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZjMTg4MjIzM2ZhNzViNWY5ZjA5ZTYwZTRmZTRjYzhj
MjYyMjY5OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmlu
YXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAyMTI2Mgp6Y21lSHZYSD02
fSlVSF5rMGFpZSZxbUdVIUFWYVVRUzBYQ1hxJCE5WEJfVHV6a2RXdndOKyZhO15reH18TkN6UTYK
emZhbX47NX1IeUhnYipQbjVkd2l3UWJAWm1QSTE9dj4jcUNqLW4rPDt0ZCtncW9PNSF7YkRxOFR2
LWU4ayNTNXBFCnp6dFF8PSY2K2pKWFYwOXR5a15iMVUyRTI/Yl5CQH5WOUFPNklTZXFeKyZYXno7
QFJXSmNVPXNKLW48cCF6aCtJOAp6KCFHYzAwfHpje3pwcUYrQGJpbkdwVmdeN3tCU0ohI1NpdjxO
ZiQ/TSllWmR5KH4kSi1lciphNSY7KitwWFliVFkKeklDRkdWZF5KZitGQ2tmZjsja3dndSVkNSZK
SGAjWnY+c05wSks+bmNXcytqd2pEeDw1KE96K1E1Mmx4VWV+cSlNCnpRPH5wTihgJlJJIWtkYWBr
KVApNylKTHMjZXM8S1g7cXJhWGl+VTxBdkJmVS1vWFNjMyNYdE9PJlhTVXJiaDFQKgp6TFlITGN2
QShuMTA+Tl5EY3NVd3NYMUh4XyhrWDZJJFYtbk9SNXYhZSZjQTdYZk1YfXpAY1NgK3BVdVpwYDJF
OTIKelRhUzlAREQkciteIzVzYz1lYz1NXzxpUDI3akE1NUVERjVnLSp1QDVmJj1IO3t4RVpeU0VL
bTg+PWdSN2Rta3dzCnp0NWhDKj1jTGlXZEw+bmptVCR8aGBjI19AQz5AbUN0djEqKCgpJE5VdVBB
YnE1OzhtO0BBVWo+KzJydyhNWXZzKwp6TmJAa2Y/I2dtUj42TSh1WnRYSD13KlU2Z0N6YnghSX1o
JTlXPGwhfnl8S0VRNUxiWTV7eDw5WmVBO0ppeVd0dXQKelhzd3ArOGo5WSFNOW9KNW58NT1DQXpg
ZUoxM2VvKXl8JSk2bmI8c31uc2IqVSVreGhrZDt1OD1nYlpCSEM9d2V3CnohdGQ9TGVSOVVha0VT
MmlCZm07USk+Uj1APWlrVjhiQUdgaUd0eiYle3JvfWczNnFpSy1fYE83WiZFKVpjZnVWbAp6OHQr
b0NrbSZ0ZFJXKXpCNVdAQV5sZU9pUnkoZmNxTSttTS0qSlNmfDQ4QSRkdmZZYn4+V0tUUDd6KWFH
cFNnP0wKelV0bjkxZD1falZ0azImJEhOTncjT1BSQFc5bGtxeU0oeXtYWDAzeUdtS2xvZitXT2FV
P2ZWOyl3d2NlR285PXlrCnpANWhgRUZIZnJNakIoSSt4TFZ9WDd4WlR2cFF2eEp4MDcmNHppQlFU
WClpJXVjPVZGfjZJJDtIRVg2Y3FQdkVrUgp6RUxWUHRTaSpRcV5lITxueTwpcUVjZDF7NEQ5d2xZ
LSppdCsoSGkpWE55KyhIdzZRYzRNP0lEP2Jsdi0/cXFqUl8KemR4ZkUmUGwqeElIMmIoYGllcjQh
X1F3dWpqVF5TWmI8P2U5PlA3cGNERVAyaWomN1klazl8cSQkQyMmU0lAeDd0CnpuN09CTnUlZm9+
K1BqKzR4c1IjODhybFh3dTVoKn1wJDg+NXQ7PWFUQUxgXldjJWdPWGlaQnpnODFBeX5MSmNIeQp6
NUohdGs/TyR9YyhEYWtYZFc5Tz1TWldtVXdNUnFvPDJSVlZLZkM9TSZXcUFNMj1vd1YjNzB0T3JG
JVArUVJpKUoKeil+d21KPUluezFTRTdfPT13SjY4M1VFSUJMRk1kTXphSDhCd1pgeUtmIUZxPEtS
KXh0P1ErPlV7Q014JGxodktBCnpkeH1ES3VkVWdVa2tzak5zT0kmKVVGUlJJY2ktV0Q8SS1sTz8+
Qno2ZERrKVhQWU9GM2pAO1ZxQW5YISR3K0tndAp6X0ZmVVFBI2BackxTRDkqP08rNXk8NTVnSGFj
N092K1YjTm1OQTllLThAbnM0SE1VQm5ibWhaOCkrNzVMRGUrSkkKeiQ4eFJrPiViI3xvcG4zNWRA
JXgjWG4qOzE8cDEhSUZxLVlGPy15I2I7eXpENHQqISp9dWspZG1LTGtEIUhkayU5CnpwJnE2NyE8
VXNeR2ZgNTBlYmJ4MD8+e0U+d1ZKPHJlUTttLSN5YEtRZCVmd2QtMDFBd3xDcWVLM09ve2RIe2pB
Zwp6JmoxZ2JafGwxZyF1RSYhI314VmZCYzxVRDF0LTckeWY+YypxJlhafVNDZ0lEXytRaCNJfilK
TVRiUm03aCt3OEcKem1nazVLPzZEUjtXMmN5NDRgIS1FZGM+MXJ5aCt1aWByVG9vI3ttfG53Rk9W
diYlVnViRzMqVWd1fntyRFBZS0BxCnpXJmI0Mk57TVZ7Tl5NJGpFMFd8LUF5Tj9GKk4mS0NyOGtS
TFkhXmBoaDtETkFYXytnMGBqU3NAbilRUyFfKVBLSQp6I0N2fXFRck1icnJ4IU52dHcpXzteMyRQ
O1F9OEwoaWcoZ2tjWGhpdjt3ZmQ+PnBpVmhaT3F+aT1ZSGt7dEFHfEEKemwrVXlqVyRnVT4kZ2RU
Q3Yrfl9ZTFE9V2pUVTdnUFU7PTFiVzFvZmEpO2t3LWdSb18rKFFzYUwmbjIoYXdBUWBACnp7QD1i
djxtfHpVYyNGcSR6ZCk8JXshNHI0ayU9czk7NHhweVg7VkcyLW9pY2hSeCZDd148c0JUPEB5VSZ2
YTgpQwp6SUc9TFVxKWN+aFR5NW8wc05MVWFRKDdER2RGM2pXdnNpSjAwazhtMXpCKnwxTVdfZFVR
N042Q25ycVZBZFdMJUUKek0wd3VjNHxudG51S2ZkfmtffnpIRWgzYFZwWkBwV0p1Kn5NS0k2NllR
MjdnejJMTnludShvSl91YH5oTGp1PjxACnp8OUFIRm0lan0+YXlqI0sqY1ojeCoxa0lmJldeKWhQ
PCtQVms8d1cmLUIofWtAM1pxcSk/SWVCXkZSTFledDxacgp6WX4xXlFgLTFMblMzV2FSQTVxZUl8
Mzg8elh6YztiVXlGV2dlREVMSilPd1c+PlB7Vz5ye1Y2JDkyPGhpJXB8RHcKejJFMjJVcyF4U0JT
R0hCUGV0cX1aKkAxbjwmenVMa3o3WE95dCtmRCV0dFA3VSV1YWlLYyk/elEtM29MKnBTeyg+Cnpi
YUtjWmItJDNheUs9RDR6eW0pOT9KelU+dlpKKVdBaGQzI2BnQ2wkbUhaUDFkT2BOZUljSyYybWQj
X0J8ODdoWQp6dGJaYS0mXiVmRzxtU0ZGY1Y9V1dqaWRafU9NTHolYHZKTFlxQVp+TXQtNXVRNnw7
KyhReilPN2o9YipCQFl0Rl8KenVhSU0maWhSNypaVCVsSmUkVj51aVY1ekteJGppVnV3TSFzNkxT
SlMpT2IzZ285eGM8Wm17Q3VHPUhfYkJVbmhhCnpXSXRzJTh8R2whUlAySTVyKkE5KVNhSkt8QFdU
RihMMHtoZjYqbk47U0xMSm10MVAyQCQyTmV9a041Kyk+LTxKdgp6WFlHMkd3TXd7Z3lSVldDbyYy
KDljTDBPI2Byb1UzdjI0MH5YWEQzUktofHZqMmlAenh5ME5BMiZXKH5eRWRUTnwKekQqKURCNH4h
YzM9PUo1anxJK3ViQ3klV0F5PWQjaTdlXkFkOERNSWFwTGRgQz9jYypacTZYWkhqQl5RcGBHXiV6
Cnp6ZFg5QGsmQE53cVctc2JEdlg5b25+QCUzZjd4U1QxMnh5eS16bUYkTCsjNUV1Q0x6JUlLUS1+
bSViZD5YMUMqagp6XlZ8NWxgK3JRZEd7RWBVcUBEV3ktIW5YTk8mUmRZbnJDa1EqSkp9Nl5eQiRG
S2tVOCZGKjUpKSFNbjJtWW5sUGgKenh9Riloe1hlVDErVDhkNSg4OCgpSC0xYnA9P1JvZWh6Z3x0
NFRnK3wkVGY8Y0piekhIY2xvN3pLPmk+filUWmJDCnozO3dKd05jX2V6cnhMd1huKFNaZWxURGV5
Zm4+SzlJKmljOU5LSXRCTU93NVcqLWxORHAxPWBWNVhJZVpUTkRWbQp6KUtnNDZaQkRIM1pyfXtI
dURuRyZ2YjdoMEU+NzVBV1I1T2NIUk13SEtSczxFYGNOezQtXkF2ITh5YGV5em92di0KenJHaHoo
bDVUfnhTN0V4cDVFWmBBRzgrclU5aVBVdCVvQWdNVDJ1c0RyKyhpNzw8MyY+ZFI3aV57UEBlWjN4
VmojCnpPbXZBQXprT1JTTCE4Z0pyRENfKCRJaXJ2R2pveG5PeF5Cc1hlXmhWdXFRM2hvMWYlcjNY
TipoWTclPmtKNiRVZAp6JkZWPkM+NnNFYEJnQj9AZXV9RGUwaT1MMFhjNzVaJG8zWTlFPUd2SlAo
OX49JmtUXy1JeDA7NGcza05wYms2dUYKem1WOSEzV1A/N1RKT29pPDtBUEl0cn0hM2ghdH4+Yjsj
fWdiRyY9IX15O087ankmS04zYklzXiFBbXh2d0FSIVNlCnpaKGZAXm5HfnQmTHotJjRDMVBIQ2Jk
bnBELURgfkBXKkZjblZ7UDhSYHk7ZUpFa0htMns+MHZlTFdQdEtoUT5Hdgp6UGt0Tih3dFpqRFls
blcydjwrbTZaPHpfckorNU4pTWBOY201TWhXNTcyQDVeVXwpdTdXISVaSU9fUy1OdlJKRFIKeitg
JTNQTHtvcU1gKihhSmNHSnJaaEpBQTB0ZWlJP1Y4fnx9Xit3VGUmTnEjKT9oVl9eQ0xNaWomMEZW
KjNKR3poCnoxWHAwKWlXRWRuJmJgTUlXaXohNDtPP3FpPDgkbFkkfHNFRTZUVHd3ZThVP3M8ZWh3
TVJ5Tzg0RVF8MWBPRjd9bQp6bylHang/cmYhTDxjbCNfN2dMKkJtemJgSGtAOUVZZ182OzlTVzRs
K2c4YG4qeU53TjA0Y3s1fWBrbGh9MmZoNEEKejtHa01rbXsje3MwIUhBdEt+RlBZU3MpTmBGUSpq
NyFDfFJCV05ybm41TmF6UVdtS1hZPkUzQXpxY2MkPlNKQmhlCno8dUQ3S2ZjXz9rd1c2M1dvcj8j
QkZ5WHp1WGhBTEhFayteNEZtNU5yey1nbE9uVkA+czAhczFfWFh7X3g4c1YhKQp6am1AbyQ8SXxF
fm5tNSM+OGtAVig/UTxoPTckMWBFTkV5fXN5dTVpd0gkKkE9KHthN2AobSMhKWV8RmswO243QHQK
emoqbUZxWEhwazVVRGVqNGYqUn5uWnxifDNHaztYaChLVzE9aj5nSiMwdCNhejtaKHZ7b3A9Um1A
YF5nY2N0NzZsCno2IWJ9RXZrVThPRlIwbThJQGgpenljYHxSN1lJWVM7cmFAR2o0UjchM2BHZEB7
Z3gpfnY1PnNUeyFXJCRANXg0Pwp6Slg5LV5xTytJfXlLNX1UejR1XmNhNGVTTjZOJGBrJFRZeWBP
NnM9PUF3JEhGO2dhYDxheHFiaW4pa3xqZy14eFUKem40cylYZHZnPytONGwxdUMxOHUlWT07djRN
Y1NWR0U1XkF8YFRZMldMdDI7eWBGUWg0WWlzM0Q/YiVVXnQrX2lvCnpjTEF+anV2dEdacDshITYy
JXo5OyEpK2V3ekRASiNtN31XRnUxM188TzRXKG8+V3lhKmI7Sn1jYyhxWmZxYHNoIwp6TGdNLTVI
KSpxNS1lfFAzaWIpSXh3cCRqUC1SWU4ydUFpeXtkRU53XzlUU2woM1FgVypVc0Voc0R3Y2Y8cTh7
N3gKejZDRmJnO25AXlpZNkhuRVhYUWRxPm42K0NoNVZFTlE7WCh0VyVZJHR3cHJ6XiZZPWhGO2Er
cWt7SFljXzVUPTt4Cnp7TUpZR0MpO2l8K0hvTlItKDF3IzhfVmx8MihgKGY3NG08PnFIWnt+Q1BG
SV5FIS1JeGlkMThxblFIOEwrN2s7YQp6b2NtP0pYPlpJPlpQUl5AcXhfPklzckVLTGxVMj5ERE8/
YEY8QGlZSWUxZGZzdmRFQHxAPGtraHBWMmBHPjBzcmkKenV3U1g3IXw+Qk95cyZzKU9xb1M3P1N+
JkRteSZHI1YoNDZOWVV1cUlnPjA1Vl9zJnElRUUhVkRaO3kxWikxQUErCnojPnppb2IyaXoxSUAt
TS1fPSU3JUlrRHZHOz0qRilDMzFsTUxVIzg7ZnZ8YUJmb3NidiQoWFF9WkhRPCp6d3FwfAp6LUUo
bT1RSXJmKEMoPUArPjZORz1wR0ElI1pwZGNHZitnQUN5bVZxWj9rbk1HK2xlaCtDT1c7dXMwVGh+
OzBgUEEKem4tM1pvezR8OEFmM08ydyNgVkdRSEl2X2EzVGlTIyRBRj5KOyZ+QTBSPzcyZTFyc0VI
VEg0PkhDIWdiKT9HJSRDCnooRiVhQjFfbD8+NVkyeDBnWTVuUyFIYmpNbTZDRXdCe2xDNFpTO2Nx
Skl9QyhjQz4tVFNYWD5XK2kwKlUkdyFjcgp6WFgzV012UDc4SCRPcDshU1BMT1F5MTVMNml+JWhH
X1JwTkdnWWFDYSM+UiMpZyYhajNeKSExcyUrTlpPJSZIenkKenNUfCE9USg4YzdnR3NtfVMlYGlQ
P01lI1Y5ekpGaHQ/TUIzQD9ARCphN1FKaFFTd0lId2pVPiZJQ2l0Y3ckcztECnpnQ1gkVGs9cSNM
I0hgMmcmd1pJdG4zIyVAUU5oRGNgdHAjeCNfcj5+XlNgb0pyVzRXemc3dDVAckF3P1U8TlJtVwp6
Q0VvI1Z1KWJoP2JMbXVURCltKU93ZDxnckA2YC1wanEhYmM8eUQ5ZCRKczImN15qPXRkM356N2sh
VkRqKlcpeUcKemBlYGpgUnQ2VzI4cSRZT14rJjBmanNIbik3MVdKenlAZ0dvQT5TT2o3d0ZmMkBz
PyhqeVJTdlh5aSRfXj00STFKCnooU3UtMGR9aFo0dDFaQXx2cFBRQjYqeHNvOVpVSE1wJWhnK29E
cil0YT04b2dBVyhkOUcoJEUmNjI5eElqVHQqRQp6V3Q9OGtAKSheXjN5cHAtMUlkc3JHPVp+Tz4l
MCg+NE10SCVAbSVuejI0ezs5WUBrSXJtfksmI1JjXyF8QWdIVTEKejRNb189YkNWRnBQS31xWCs0
WkpAR28/UFZESVZ8ZWtMMDJrdFp1bVJOUmVTZ2lDcldubmR+Y1VMfkY4JUtgb1Q8CnpXTFBLcUtL
PH5QKGA2aE5lM0xUKmBDTHNGQmNZaHwrU1ZHN3g3TipLNmNQZlZLPkJlJW8pel9vd3xvbmlLamdq
aQp6Kzt2OHQ5X3YwYmY0WnBVe2F7Nlg2bVFYUUYlITxzUGx8Uj1KRHl1Jj1fbVY1Vk9BTzRaOVhD
R2k/PChHQHM9VGUKejs9YCU4TTRzOG53STB7ejd7IyM2amxjfGsyQiM3PEk7LTgyTjdAZDt0SU08
eVIqI1EpPGFgbyo8SnhkY0dLNm9mCnpHbXNwXkJNMmsoX1lAIWJlNWlRJFY+e1ZtS1k/PlNkU1N9
QGZmTHNZJDdfNTQtR1h+JD9ESSUmUyNUJCZ4ZlFKQQp6RD13amFkUVFEQCRpbnx7Q2U/YVkkQkNJ
fiZgWHphQlAhdGU2PVZMJVFDZnNZKDt3fWteY0FuK0JKRGcxUWZnZlEKelB2RGRLRW9WIUpLMkUo
JWVna3wjV2cjelQxJXZ9YFR2M1lNe3BpcVQrWFIxQ25POXlDKz5AI2lGY2t+MlJhaSU3Cno3YD1T
fDQlT1pfIXZRSjhKWk5rKUI3TkpaK3JtXnVHUUVyOXFVZk09bn5QbW94XldJSUQjY0ApKVJmOF5G
MUxQfAp6NG97UlctX2t+NjZtI0w4IXE2NUtVIUFzVSs/MEt+RmY4VHpDQGVPcEBjX3B5XjcqT0t6
d3FiQTcrXz9VKiFtOFMKem4raisqVGtkbSopdXtwYUowYjVrKEIlUj12PWdSRSRKYmdBaFAlfVE5
RnBoX28kO047ZGsyLXBQeFdOYSM5YWFRCnp3VSY9OFI2PS1xOWAheHdnI2h2OXV+O3BCSi0oJH1R
bWxDUEclYVoya09xSUlWPkM7cSFRYCpSWSEoMXpzeTlJJgp6RnN0OTRGc3FDaUVYfG84NTRSMSor
cV4lRmptUmAwRTFSOzhVbG9SKTJZdkV2bVozZzclVUdfUFcpaVEwX0F6bzYKeiRzaT1JPiRNbFhR
akhYKmxmdFNLRXFNKGVIVylSS1hCc01kRkBySD1Ha3ZgKExiK3FuY3RRdCgxcUZeYWczMUl+CnpA
NmIpXyotbWpVTSRRSDw2ViheZEApVD58V1AqKW56VHtPazQlSmwqPUY+aUcmMV5XYXR2NnFeRj5L
aGhabWNuagp6WSRhZHsmN0VMXmdAVzdmJlUpb2xAOERuK0I1ZHliKFpgOUxTNVl9aGFORjRuNktN
dlF0TUJwbT0hd3IqajF0Q3sKekR2QntfRFArZHBqRk09LVpfZmBMQExzblBZel9iNz5XT0EqRitT
Q3dKTFRuZi1wZ1Y5QyRwaVpofW1HMW8/OXM3CnpeR0c7MVhGO3pyKmVUdShKIVJIM1dqMClpTlBw
JCYmMjJgc1RmM3l7Y3tLUDItPy1JOHVxRj50dTt8NjdIWmlJTgp6b3kxLV5zIV9qISZ5REsyWlZT
TzZaUk84RGc5fXxJNUJGR3JFTmthcG9vJXhCIWBrRChnYDFvKD5iTURRc0BWYHwKeiQ9OyM+bFcp
c31CMTdJSjl+ZE0xO14jeWc4JlRKMGMpMWNOJiYoX3huUFJ0T29yVG9QTilFK2d2MFErQGpfUkVV
CnozOWlzTl5Ffm49XjBXfnlCUjlPQGBQJV9NQ28yYSNiRF97KkE4U3Q/WFZMc31tb3pIXnBneTNH
ayVKbjR3I1daUQp6ZHBQTEdjVDxRPzhwWFdiWGFBWm0/bTw5MEV1TThKYCQjOHYtKzlRSW5HfCMq
T3t6eWdjdWsmam93fUp3NSV1ajUKemNCYyt3amRnN2J2QElINURHTTVHZGdra2JHfStaWEhMVG87
Vnc4O3BQTUdUSTded3RCbU4oS200Mk1vSS0jVyVOCnpTOWBkY3FQUHlSYXdvMTFUTWd7aGR7azk8
QVhPR0JmZldaQ3J8cik7dT5aJXYtRDlGaCtUOCZtemZhQEZXMDxYaAp6aGd8Yi0tM1Yje0xMIVhT
UEkhdSl3PTJkNlczP2xvM3FKbT5rRUxOIzM4U2NyRjwzPGU4M0ozXnFmWF9OYDR6eE0KemBIdjRy
ekRsYT8+JlNscDxvbmM5aH5YRCE1NVg3R208ZDt2YXE+dSVhbip4clFVckZYK0B1NUxST2d8RkFY
WT8zCnokO09BWXBxOU9UKlB8M1FUJkshNlMod2dpPyVKezUrKlg3YHN2aFB3R3RMVkg5PXZVY01X
O2o8O1UrWFdjQ0JfeAp6eTYtQTZ3KD5jXyske0E8a0lZVFJHVXM/QEkxdmpQd0MmMDRBd28hKkpv
Kzhocyo2YWhCI3dUSi1iX2VaIzVgU1EKek5yKXg2QnJCbzRNTmNwYURZWj50P31eK3dnTnVTTjdL
PCVycGdyQ19FeWItMWBMa3RSdjU+aD9CQVB1ITE9JnxmCno8XiZnZkhaZk4/QjIjI3swNnA0fT1L
LTt0b20oRUApUiZOcCEkb2FDSUc8aCE9R2JTMzxkQTg4UUFxcmZydUVEVwp6UzBQTXtnalV7cUJV
KHdzMjw2fHdHK1JYMUgxKmFsTC0menRnKWMkQ0ojOH1ocF8oREN4ZlJyZlBUYDA5Kk09XjwKemFZ
VG9zZ2pleFlja312UD9PTlU7dGk9OWVXbjQqPU1CR3syIXVEVit5RXNLY1o+M3FXdnZ8QjNxekNv
YWMwY1pnCnpIWXdHOF81ZCNMVHwxSFhsYkw1ZChjVSF+PUUpeUZFRXRZYG85c1FIQlFjVGdJYjQ5
NDUpOHl9ZTcoJmVnLSo3dQp6WFkqandWQUgqUEBhVyZ5bTY+TDY5WDVTPThpKUckK2k3IXshJSlx
dzJYNXhzN0RHR3N8RGRzflRuVil2cy1lWCoKejRVbmlQIz1iZiZMJWZxPlQqRkRGUDMrPVQ3ejJq
KjlAZlV0Zz10Xz9WZD4tKi04Un0jVzl3TkBaaSs9ZzBHLWJYCnoqRyhoZip7S2xAYzRUdysqfjRT
d09BJlV5KihGUDBmWWglLUckP2IrT3wkU2VlLXwlfGwmUXk8TiEoME1LSDs+KAp6JDZNZ0R4QlRr
T0Q4Kj1Ta2lLeC12YXx4YXV2OG5RITwxMFZCXlFGSVNVZGRtbGAoKW04PD5LRGEwKGtNREdvQVMK
enFGcXNPIWo+LXh7VTZ2Qyt1cFp3PkBkeFBWIVJtM2hIbChfVFMwQ2JnZ3sjITQ5aGoyIzdJVU15
aHk1QjlnMnVfCnpuTzBsc0xBMkg7Iz1UclZwdDNuUlpqZW95Q1YkSDA4ZDJvYS03Q1J7VUghJU9U
bkEkQ2NAVSQ5NXxOUWdlPkA/KQp6PGFfPiU/VklJV2hHWGJmKFooTnJ2Rm5zMTJrYyo7OV48PSNJ
JVl+cmROSzRSbEhuU0xMTXt9Qj9Nd3FYQ3klM0cKemNBQ3hkQlNSNUJ3b0sjWTVocmViYS0qSWZZ
SXIwPkdyJCg9ZDtVVjY9UVVkKGE0Yk9KVkMxMVRUOVg+KWs/UmI0CnoybHhIbjNAfUBWVzhCKTNU
RHwtfWd7O2RNZGxBe2pMUUh8UXtxbmhgLWNSOWBaejdhUSMkfVNSPk5nQE12d1Z1NQp6dnoqeD04
T2QhUUdeJX5XWUdPTEZZYHF5e0lmJiowe3RTND8jPUQtX1FnT05xUk0lUVVPbT9DeSFCVUs8djR2
VmoKemAwMjxIZ1MyZz4/TWlMQEc0fjY2Vm59XkRQe3RgUDR4aW9Sd1plYjBNRzkwQlBIJnExQlRg
MGxxViV4blNtUGNmCnpxfHYjQCR0KSkoTF9mWlMlJEIheXU+Zk5fSWpYZkppP3FQUWolYjxmeTN8
RnhwfldCPjx4YSU4TztkJihWYVNHRAp6dSZvOzVNdFdSQik1YSYtenRYIWthcnspaHd+ZFFNTXMl
WWx2VlRheUBfWig3SDE7Y19QNGwtSSZGeHkzTyVLRUoKempedTRRNzxuP1dfe0x5WG9BRT95ZkYm
TDlwMGxsWFgldzFOanFLZE1eTikhYC1vX28zKntULUtzdFp7al8xY35UCnpFRzxiTkRXa3loITZ7
OyR6eTg+RDZsfHo4PlFafHZQUFFFcz0mYlR4Qz91TlY1c0IjN15nJEslVk8+NSh5TFlRJAp6bntC
Kzklc1c8XmNmYXUtT3hwSm1VYSpoeyhXeCNCWTFnR291PmUraUBkdXVeZEFsVXJfc0hrREs4aEhH
OFR5akYKej9iR1dpb01XYWpke2hFeHkpaGJlUWt6ZSFJZV57Xzl8VWUrOHZuaShZMzRDRkJyKkF4
YX58SnE7NjxTPz01M1RwCnpkcXQ0M2FeWFMxckJafk1IaTxTRnNvbXYjWDJHUj9mQUI/Ky0xQVV3
eUg0ZjNhVl9MUDFxUGIxdn02eHNqSyotTAp6PzkwSG1nX05UPnV2cTZ3YWJETFckNTI+ZkV7QTM8
UHVgSl9AWlQyaWM0TnhTZGRkNSt4ZHokVHpvNz83OXUtfmMKejloWm8lZk59RiNvdUZfe2AlTyVO
cnpleGplfFF8WXN3QWVQT3FTQ2JaT2E+TlpuTmRFPV53NGtFciMtWFg/fVVzCnplWjZyMk95SUNJ
dHxyVyhyOGt2Uk5MaEdgTWMpPlZDSzI8aWJLT0ZtYjg7cm1IO0EtJGExKEVSYzl3QGcwOWF5Vgp6
P1RwYilfSCVjO0dnfXZuR314U0NJb3V0VUo+dGx1TmhJLV4lcUEhfFZsITdHdDtORWcwRkRNKklT
dkwrUmhNdmgKejFBY0lmUHd+OVFQKjh7X1cqZ3FVbEhWailvX1RrKyskPmc1VE5wfD8rRD47QD5v
blhTWTZUQVV1d1FTT1ZTcSE9CnpebGFZfVY0fDtnZEJpZ0tsdlB4PDBhNUYxdEdGOHFxMTtVbGpq
bCNlJFVGQj5JNT1lPDN7Y2Y0cWk8c34pbT1SNwp6c303TzB5cmJWZUM+U3RzRXpxRTZNfGNDdFMp
RzZCRkAlcW14aTVkdUo9WDFLMmcleDRWe0s0SHJmTkdLdEVASzEKej5wSTMtaHFnSDE/eHB6JCMw
I2NZYFl2eiF4NnxUdikjMWEzNC1oKFQ4PmckajIoPkI/TEQ9LUhSfHxOYW00d2h7CnphT3tQUnl5
XjJXXkQ1Q0xRdXpEI157N3Z0VTZKIXxfOUZzSDR7UXA8dnl8JSU3PDBEK3E3IVAoSSF3RVcpNXxY
Zwp6WmgxYV5KKENKV2BGVl48TXsyVTAzXnItdV9aTExAQjJIQz1AQTkkV0otPlFlUllpVWZUOUVI
SXtFPmMyaGY/QUAKejVeajRJUUN0eHxIMn4zcFd0N3pubUxNU3lAMFN7RStKT2tqKSU+b3UhTWJq
JkJyQjY7YFFwR1ByXj1MQ3NTPD16CnphKXd9WEpINVh2RzYxUU1WfT8+VEJeZyVtO1hnPT1DcGBE
VSRJYCh9VVp4Ulk+a0hPKXM7b09idigkSFpGWWxTNwp6UkQlaVZoSjVuXkk2cDdWV09vTypJQW5h
UD1qUj11VXZ9VXJkUTt9TXVIX2F6MzJNRk5CfjdacStYOS1CZ3trdioKejl+JSZeJHZxMVF2MXUh
Yll5R3goQVlCK2h6TUBeenBqaDlCfENLSl8+MERFRUxTNWR6QGFpZE52OzBtIWVUOUdUCnp0Qzl2
JUMzRjdkJVczJG5FeilTJGAlSnxrcHg9RkRSSnpAOD9xUn1rWV9BTj9hfkw0VmQ2KjRaX2RhLWh4
X1JoKwp6ZXtwWXxUalVeUEFTJVE7a0omXioyNyhOYmc8OEdEb2BxZHd3TTwhd0xMS3Z6Uz0kfXZD
OXs2STV3QHsyMyFmSyoKejsjKGtBOzQyeTZVWWxDbDdCSD1rUkRFSEQ1bU97e1lNSzYoenckUXl5
cilNckFgWlheMF9jbyl7PyRmbUs+Uz9BCno4JHMpUU1eNTdtSmEyTWorM0VVZUM8ZWx2ZFc9YXxR
ajJ2eCh2UFFERXokbDtCfVRfaDdpcDF5cjRvTG5mMTxPTwp6b3A+MjRFakMzdyYme2x0Nj9RaWhS
cGE8ZERCNnB6UjRaTFN0UCYtNC1oaUJqRjBtc0d6b34pcSkwb0w0dFB3MmwKeklIUUk8cD1AZ1pP
VUhKNUNnNWxLbXE9MXNqVnlqPG9KSSpVTXhtbHd1dHEhJkhEPWdZQlhgQmVNQjdGZGBkfTJFCnpk
QU5kQERjIy17YmZiVCE2RCpDeEZ5KjFlXld7RjZpMX4yTzlnaWpkXmE4QjdlbmZaPz5sSG80dE9B
QGpoMVpfTAp6aG97NXFKUX1ZPlUmRzByezhhUWptTlprQk5IMztqVkloYUw7ZEhMa3RkN2wyajYw
WSFAMFBCM3R7dTZSYG4pPVcKelBNajFgIW9BSFFxailecXRGQmNwMk0+KUhfNGAxa3dvdCgzKDVj
eXBmJCYmY0NNQU53QXlKZn08amczNCl3fWgxCnpVbHBZcUYqXiUzJSQoaHlLWDdXSFgzfSZpQyNO
JVprYjh9ezxXdnN7KFZWeW5oXiNfemtjQlJDeENTMUxDNFlMNQp6O3tpI0I2USFTYkptV1pzSj5h
KG1UMWM2ejlxYG5aKFBhTGhReTMmS1QpKCl7VSZ2PDB3fF4pS0hWM0xeQU1Se1UKeig0IV5rZnBs
fmd3fndxaEpoT0phcCFBNWVGSHtfd1FZZmgmdlcmWVgxe1czSyN1JH1LOSMoZ2dIa2pfKHEzIztB
CnpLNF5QX0VHSUtScUt4RnBJJnRUdlYwfnhCTT5fdXJmOC09PVUkPj8xezxNNntAbjV6elZNYVYy
e1B4eDZFVEc4Vwp6Xj51WEtVJlcrbiQ5NyR+d2lQRWVCRHs/Uk1RSF9tXlY2MUhSa09nemxDZT9F
RlFxSCg3aTtARGcqSmlpZG9UUTMKejlsaTUlWSU/dWwtUX1MMmBlWmwlOVF6N19OIWlKe2xCUmNX
KnJQd3Mpa15Fd2lrSl9CbVpLdl9UaztobFlZMTgyCnpfYXU1PFhyYW5uKzcwZ3ltbkxVOFpLPCV1
TzEhPFFVO1EpRis0WWZ3Y2lPU3o5aEZIVyl5SVF9VGdIezRmdH1FOwp6d34xRjxFI3xXcV5vZylP
OVN1TXlyJGVELT0qWF9XMk9iQTxNKVgzbE1OM0tXe2dzTnNFV2huSGY8YDFhblN7TUcKekcjQGk7
b3U+NUg0MHEjPlUyfDFGQllrJjZ5NmlfZmZjOGc8REM2QXJENi05MV4jTT09ek5nRzRDIXBzYmRX
IyR3Cno+PXZBTUokQCFvOGxqZEdLMEczPit7VT1UUFZ7KmUzKUJGcHZVNEZ+PDdWRVBIcWkhUWlq
IUVXeDZvJDg0VSVRWQp6S1pSNDgkNjcrcms9QFRrUmk1YTRJSjUpKjZoXl5UbTt5NFJTTUdmOWJT
KHZvKzJ7fUQpQ05pQ3BJVWc4dWAtI3QKel5YR2VPVlk0XnhNfGlxKVNhPnQ2SUMmPG0hSWgpbDBk
XzNjNlM9Z0FhKlhhdW0wfDIpYjs+M2s1UTJtP0I2eSk/CnpFZURBREV6XihSTkZyLTAtWUQ2ZmBU
S1ppaiUkTnMtPSlUS15+QTRGbzNCKCphPUJpIUYlUVY3dksrajBLSmNASQp6NyE4elMjK3EzTSZg
RENfTFJoQkg/JDh6YS1od31hb1IlLVh6fWJaIXRxdislUVNRM0VjO1Q2bFgzX1A+QkJqVHIKem8t
Ri10KlZnJVQkZ3EwcitgVnEoKmdecnNQNilgVklpZXdxWk9lKVQ+a1Uqbk9qbV5UVHJLKmlRJUdC
RnlfPCFpCnpfV2g5XyQxN2x8IUtOJkFzeWJHJnFQT2N4S1d3dFZNdEF3OypvPTs9KDNqOXNEcDlg
RntSMj0/KmYqcnR6YXB2YAp6UiFEJUxISkw/cm95YmJ3V2N4dTBFUkdtckE2MVJIeFJCX0deMGxR
KjJ0M0Qobk85S1VoSVMxbmFYaTxnUH42M2kKej9uUWRUZm4yXyEpYSVmU2F7MUlzRUBCZWtXa1Q9
WURFPnlzO1NMTFY+Q3tkTjdVI159KntjcFpDamB7fUF9aXIyCnpKVThDPDxNLVd1ZEotQlc8M04x
WV9kJFlSX1MtJj05O3opRUclS3o0LSg0SUxXVnRqdHgkJUdeN0R5MUZKUzBQNgp6VVZWflg7dXNx
UUFCQjw0cHZhTXRvQiYocSZUZUkoR3o2KVNuQSE7Z2MxUmVhRTJ4UyQhIzgkXkhnUkhZVF87UmAK
enxFSzJ0UXQ4ME9SYD5rOFBLJjtvUH5od0pzRVpJTFpqdXVKUTkkIzxoRWlVPXBvYmVwejU0ZTN7
SHQxbXoxZ2ZRCnphZTEoUWBzVkBmQG8hdU04T3VaWGRlKmdSMFIlenRLI0Qwb3RwP3lEJG1Lfkst
Vnc5aCZ2WUZvUk8zazJHY1dxegp6bWphUjxvakN0KEB5clN3MVZPSFpzfiRQMkNrLTxScXBiSnlN
PyshQXMyfFc3dClgY2czRnJJPEdGMGpHblA0QnUKemA8YU1KQil1Tj5HTUtXN1U5YXN9ckN+OHwp
T303ZTx3fFZJd2VVU2VlKSluR0h8fD9ALWZRWnptIyQyUVBzYGBzCnojPnNFbUVHRjQ3YFFnKGln
OzZQYjZ2bVZieyVSTWZgS0xed0g2UHNBLWMmcGZUSWV6dmRBR096diQkQ0d4NDN3cAp6N2JBN21F
VSEwPk9DQXxWVlVlUngzM2tyQzljd3ZXKiZlLTdAXzk7cT15MUBCMkJjMj5YSlBjIykrWWJYWTc2
PjgKemd7Y0Y1cmJQM0M5WVJnJTtYIXx7aHRSc1FDIShVP2otantRN2hoaXBOUzduO24oSz5wUFR0
SGY0ZH1YfSotfiQrCnpOMCRPNkYlSDMheHBldSQhIys5KF5tb3pxPD11VVUyXjs9RShSaSgxWDsz
SXJPWkdJKWBneCo+Xz5nMntXWThHVQp6QWF8QTg8bD59eFp5KTtKcUxjJXxBakNqbV5tTD50ZURV
cFJndllpZyRwXmQ3blY3bFV4fDgjKztXbT5Gb0RqcWkKem1VI1gpPSpSNkk/KVJPRD1YPlRfOCs2
SXZxMVl5Y2xkVXNwQmR8V2kwWi00Rjt0X15pJjwlISFLajNNfWFfUTRJCnpsV1ErYDgyPG8zayh+
NEg7X1piRi1aXjJidXFGNTFkTlYhWC1WaHspVlJ5ZWg2dUJZRSN0P3U5NEBTdEhZKnlHVwp6SzMw
d0oycytwSG1jRVRZIyo0JmpfMCo3OzhrP3ohTWpKZ0A/PHp4XzwoRiFhS3NeR2lVQW9uMlU+WWNu
OTMjNW4Kekh8KCFScWR4QUBvOCUhXllFVkA8JnBFeiM3QW1eUjE4Znh7TDAlZ0hQejRRbkt3X34+
ZV5OOWF2TGdTUSR5Nl9jCnoyZzcpY3twNzc0LX1zZXx1ODYoN1hrQ3cjS01le0xHSShmM2Z3ND5i
NGk4NylCITUzKUlxakhwJkwyRWAjWHRRYQp6RHlEYWJwWE17eUErKW4laXc9NX5QeigmMj5xSXFp
YnNUbzhZSE9QK0BvbT80ZkwzRV9YfHdhLTEoOzNWZVhpeWgKejJHOV4qU1dXKSVBamdJdz9nMDtm
KTg4IVdGb0kwYmxGXiFtPlV1UjJ1UUsxdkMmXnlaekRWdTg9czJ5Pk07X0JvCnpoMDlse0ZCYmpF
OzUpJmRzQXRXdVBhNClfKmA7bUtzS0RARk0hUVpfazI5fGlhYXRnI0hXcnlsbyo4R2hOdHlEUgp6
XnlpNzVQYTZ+VjhBZzgzI2ZocVBecm4wT3tyWXltPjE1SjBLeT90fG9Ucl97Y3BAQlAqQXxgV1JS
fFhXOEdIWD8KejFVSipqQldTdHdLXzxMNmZCZXQ0dVRNTk0mZkFUREpTITRaNjt5a2c+USgzWmY7
eXNMUHU2Ynh5TWdKJGtzVm9+CnpONj5SfGRiYiVnNT8+U0V6aSl4JDJDR15Vd1lkP356fnJlK0Vw
SFhGP3dCNmNYWmMtYkJxTkdePmtATmFneX1rJgp6TUs/MkFHVTlMWDxabXJUSkBfdnojKiE1ckBe
dkVGSnBZMGY+KX0zbWhzOHZqVFJoY2JDITgqZHZfYGpZUlgjSiEKekR2JG13I3ZDYDFoR31FVFlM
Nn1KY2MpUC09VT95MVpCcXI9QCp3OHJvWTkhM3Fwbmc1JmMoPnNwaWJWIWdCYi14Cno8b0AxI0B1
a2RPeks5SEp3YytoYVElfTZWUGc1YitfPz5tV0FAbEY8bHdVb3JNWEh6NDN8UlRJSyFhTnR5enJk
JQp6b1lwMkNFRGxmJWpCR3dEMjN9cXlLZURQYTNFflojOGRfMEd5SH4yaWtqelJ4aWFFa3AySTdj
SzhiVCtPaEFLOXkKenRaK2hMP0tHVnNrai1MPGlNNXVZZXBmQThvZWtsfT9lUE5ucWJYO3dMJnpu
NGFAZyhFR3NNIVhEVEszalJRS0wxCnpXcEVYaTxzYS03X1J7Nk9lWCZTTD4hNmhlSFN9fE90fjVK
Z0o3JVpiJndld3BNampSbWglV1lLMW9BKTQ5RnJTdgp6WVcqdDgkQkcyal9ITHdqZm8wRmBvYGtf
IWttNW4xXmhXaSFlV1Q2UXJHMGE4VVpfViZCUW5EaXVwQzt9TH5DUVUKej89VmZod2F9TCM5ZH04
ZklrU05wTUw2fHZkcHYlOGQlJjMoZkl+OzxKMHpea3hhcipVeiFCMUNYaGxEZ3JmPzFQCnoqXyt6
flQ5UTtOK1pnSkpkZ19OWlg8RmFgVXJhYlRmd3U+OFJNcCNsP2ZmbXtXfWI/XmdBUG9nSzlLSG5a
Y3xSIwp6XlQlIUtsY2N9X0BRJX0lO3JnPT82Uz83dUpIUlhqJj9DXjIlbVMpKlZjVmlsWXx8dio/
amZ6XzIqXldgISUyR1kKemxsX2tWYEp8OU5IUWNNNyR0P0A4I0YpYVc8Kmc5NyUxUzZqQ152IWFC
IypjQVpEN1NVbVB+Z0NDJHFkNS1na2FVCnpUdDEzZFhlMEM2OytNN0w/WDtCUXVQZ2c+K1R2MWU2
dUpaQSQ4PDYhRk1QYktpaEFWWkkoeWVePnREP0A7dGllbgp6QCFFYjBraCNgdEpKOXAqOzxWU2om
NDZBZl87KEopKXVabXJAe0RqJUdkJkA3TDFYaFg7ZlZVTzZfdDdCJkhscEMKejNAM0pFMDlGNTNz
TXd7Jj0zQUhIUEBHbU4+UGBzZCkjU3xjPldNPVJ0VCtoYlJJIUZka01ETml1fXd5Sm1gaG4hCnoh
UXZuTEJtQn07dnkpOUNCVUIkTUlAUklAO2pCYU1FRS1uTzRNb0V9PnxmUnVQMlFwJDcwYHp0UEpI
SzR3Qj1MSgp6alZtZzlBciRgaWJYMnU7QkA/Ymt3VDxPcEtkOVh+ZDFxdylJemd8QVFhKzdpV1VP
UDMlI1QrYUZ1ZF9GUWMqJjEKekhkVHV1QXtsMVoxY048UGRaM1FCe0MxdiQya1FmfkJUSlNaRjwr
MWo/ZXNUUCV3TlpzQjhHUTdRPkx5RWIqUjxOCnpBeyZacHAzZHthUFRzTGxEfCFlOTRyX2N+a2k0
XnBQe1dKeTYrRllfV2dqWHkmRCEzWmU2YEUhQS1sdzIoYF5LJAp6QmIjdDtQdmNqNjNKTCt4UEJx
ckxpSkF7cXFGNHVRYUB8Zl9nK2RYfjBpeCpeeDs0fG1nPl85ZCU7RTNSPHRJU28KenVaYHNDXiFN
Kz5jaS1YRnNsfTE5dDI+OUQzME9lMzcjJHBXXnpXJGZ3TCNkS1V0SH5KVF5JTlVoLXZnemcwaXdJ
CnomQWF9P3o2Qz1NYlFBK1pOe1c/Yj5RSntaPzh6MnlWMjRnP0tpeTIkNTMla1ROKUpuQGd7OSZ8
WUA3Tzw/S2BWPgp6JWpLMntlM1diXmZkaG07LXMtYHFKLVUrUip+cHdFWGdafmRuXkxhI259PFdg
ZH4qMyEzT1dfX0FmfT9XcGZMLWwKekp5RGBaVT5IY1F6alFWbUNCWHY+KzJjJDs7ZHtRODZ+OCY1
ZF9PPFcwSCpfKWNxRW9qLS0yQz8mQ2BETVBjVXR7CnpkSG9STmh7YFdGK1JyQE5jVVNhVmNjNkpe
TXpQKHlxfXQ+VEVSK05AYCF8eGh5QVNBcz4oayNpN0kqNEhaSntnIwp6UVJYYSNUKiRqO1NwUVhy
Sk05OUgya3t0MypNMHdZKUFKKkpwcERMJV8wUz03RW9eT3E8O2d7JFUqKX13UiRRKUkKej1qPit4
eHFJfSgyT3dTMk13dytBZWB6P0M/S19PcjlGd1ZLZjk/JFlvQXhmfC1gViZfKTk+ZEp6Qks4MTFF
WV88CnpQZX1QPGkyIT1RcnExYnF8RTBTdDhjNE9HZ1pLUk8jV0R5cW1PbnBPXjI8TUB3RW5BKUpO
b1c/RUtoeT8jY35CYAp6TT16PVBXOSNtSlRoNHhVMT08R2o9RFlYJllndHs7PkpFS0QlcW9VZlpg
bXBqZVAtRUpWcTdLMFJidT1yVHdlYDgKelJzKiF2aTFEKnlUI2N6JHZ5THhXKmVXcnU2NX1je3tA
KzIyUzwofUcqUWA7RVQ9YCNzUlY4RnFFQmMkSWtGMlVgCnp0OXMrVjlLOS1sdTFkc1QhbmFpc2VZ
TVErTWViWkojSD8wXnt7ODJkKWpXU1MmO1F+bVJgZE1USnBiUHFhPHd3XwpmS1B5OFk2aVQrT2t3
fCN8KkQ3bSgqViZVN1BFO0piX1ZmUCZIen4keAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lk
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rp
b24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAxNGM2ZmIwLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lk
ZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1FRElUSU5HIERF
TEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJh
bmdlIGZyb20gMCBvZiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9m
IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9u
QWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRF
OiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50Ci1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldl
YlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlv
bgotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCi1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyQmxvY2sge0hU
TUx9IGF0ICgwLDApIHNpemUgODAweDYwMAotICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgp
IHNpemUgNzg0eDU3NgotICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA0MjV4
NzUgW2JnY29sb3I9I0ZGRkYwMF0KLSAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDI1LDI1
KSBzaXplIDEwMHgyMCBbYmdjb2xvcj0jRkZGRkZGXQotICAgICAgUmVuZGVyQmxvY2sge1B9IGF0
ICgwLDkxKSBzaXplIDc4NHgzNgotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSA3NTl4MzYKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NTk6ICJUaGlz
IHRlc3QgY2xpY2tzIG91dHNpZGUgYW4gZWRpdGFibGUgZGl2IGVsZW1lbnQsIGFuZCBtdXN0IG5v
dCByZXN1bHQgaW4gdGhlIGVsZW1lbnQgcmVjZWl2aW5nIGZvY3VzLiBJZiB0aGUgdGVzdCBzdWNj
ZWVkcyB0aGUiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDIzNTogImVsZW1l
bnQgc2hvdWxkIG5vdCBoYXZlIGEgZm9jdXMgcmluZy4iCi1jYXJldDogcG9zaXRpb24gMCBvZiBj
aGlsZCAwIHtESVZ9IG9mIGNoaWxkIDAge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQg
MCB7SFRNTH0gb2YgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFsbC1pZnJhbWUt
ZXhwZWN0ZWQudHh0CmluZGV4IDg0MmMyYTMuLmI0MDVkZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9u
L3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDkgQEAKIEVESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5E
T01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNCBvZiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2lu
RWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVH
QVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6
RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFu
Z2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDUgb2YgI3RleHQg
PiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA1IG9mICN0ZXh0ID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJl
YW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElO
RyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDExIG9m
ICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQgPiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAj
dGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURv
d25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGlu
ZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiBzaG91
bGREZWxldGVET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtZnJvbS10ZXh0ZmllbGQtb3V0d2Fy
ZHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0
aW9uL3NlbGVjdC1mcm9tLXRleHRmaWVsZC1vdXR3YXJkcy1leHBlY3RlZC50eHQKaW5kZXggMThj
MzdhNi4uYjA2NDc0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvc2VsZWN0aW9uL3NlbGVjdC1mcm9tLXRleHRmaWVsZC1vdXR3YXJkcy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1m
cm9tLXRleHRmaWVsZC1vdXR3YXJkcy1leHBlY3RlZC50eHQKQEAgLTgsMTAgKzgsMTAgQEAgRURJ
VElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAg
b2YgI3RleHQgPiBESVYgdG8gMTIKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBE
RUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDExIG9mICN0
ZXh0ID4gRElWIHRvIDE3IG9mICN0ZXh0ID4gRElWIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9m
ICN0ZXh0ID4gRElWIHRvIDEyIG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZm
aW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmlj
YXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFu
Z2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWIHRvIDEyIG9mICN0ZXh0ID4gRElWIHRvRE9NUmFuZ2U6
cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWIHRvIDEyIG9mICN0ZXh0ID4gRElWIGFmZmluaXR5
Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElU
SU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBv
ZiAjdGV4dCA+IERJViB0byAxMiBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20g
MTEgb2YgI3RleHQgPiBESVYgdG8gMTcgb2YgI3RleHQgPiBESVYgYWZmaW5pdHk6TlNTZWxlY3Rp
b25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5v
dGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5n
ZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0ID4gRElWIHRvIDE3IG9mICN0ZXh0ID4gRElWIHRvRE9N
UmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViB0byAxNyBvZiAjdGV4dCA+IERJViBh
ZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxT
RQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBm
cm9tIDExIG9mICN0ZXh0ID4gRElWIHRvIDE3IG9mICN0ZXh0ID4gRElWIHRvRE9NUmFuZ2U6cmFu
Z2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViB0byAxNyBvZiAjdGV4dCA+IERJViBhZmZpbml0eTpO
U1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9u
L2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYjMxZmEyNy4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1DT05TT0xFIE1FU1NB
R0U6IGxpbmUgOTogVHlwZUVycm9yOiBWYWx1ZSB1bmRlZmluZWQgKHJlc3VsdCBvZiBleHByZXNz
aW9uIGV2ZW50U2VuZGVyLm1vdmVUbykgaXMgbm90IG9iamVjdC4KLWxheWVyIGF0ICgwLDApIHNp
emUgODAweDYwMAotICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAotbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKLSAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzgKLSAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNDI1eDc1IFtiZ2NvbG9yPSNGRkZGMDBd
Ci0gICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyNSwyNSkgc2l6ZSAxMDB4MjAgW2JnY29s
b3I9I0ZGRkZGRl0KLSAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw4OSkgc2l6ZSA3ODR4MzgK
LSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzcxeDM4Ci0gICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzcxOiAiVGhpcyB0ZXN0IGNsaWNrcyBvdXRzaWRl
IGFuIGVkaXRhYmxlIGRpdiBlbGVtZW50LCBhbmQgbXVzdCBub3QgcmVzdWx0IGluIHRoZSBlbGVt
ZW50IHJlY2VpdmluZyBmb2N1cy4gSWYgdGhlIHRlc3Qgc3VjY2VlZHMgdGhlIgotICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDE5KSB3aWR0aCAyMzg6ICJlbGVtZW50IHNob3VsZCBub3QgaGF2ZSBh
IGZvY3VzIHJpbmcuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGlu
Zy9zZWxlY3Rpb24vc2VsZWN0LWFsbC1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFsbC1pZnJhbWUtZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTIyMzFjLi4wMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZy
YW1lLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUVESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5E
T01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNCBvZiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudAotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2lu
RWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVH
QVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6
RkFMU0UKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxk
Q2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0ID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxl
Y3Rpbmc6RkFMU0UKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246
V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTog
c2hvdWxkRGVsZXRlRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudAotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91
bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBv
ZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxs
U2VsZWN0aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgotbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
Ci1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgw
LDApIHNpemUgODAweDYwMAotICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0
eDU3OAotICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA3ODR4MTcz
Ci0gICAgICAgIFJlbmRlclBhcnRPYmplY3Qge0lGUkFNRX0gYXQgKDAsMCkgc2l6ZSAzMDR4MTU0
IFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCi0gICAgICAgICAgbGF5ZXIgYXQgKDAsMCkg
c2l6ZSAzMDB4MTUwCi0gICAgICAgICAgICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgMzAweDE1
MAotICAgICAgICAgIGxheWVyIGF0ICgwLDApIHNpemUgMzAweDE1MAotICAgICAgICAgICAgUmVu
ZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgMzAweDE1MAotICAgICAgICAgICAgICBSZW5k
ZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDI4NHgxMzQgW2JnY29sb3I9I0ZGRkZFMF0KLSAg
ICAgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDI4NHgxOQotICAg
ICAgICAgICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MTkKLSAgICAgICAg
UmVuZGVyQlIge0JSfSBhdCAoMzA0LDE1NCkgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVyQlIge0JS
fSBhdCAoMCwxNTQpIHNpemUgMHgxOQotICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDE4Nykg
c2l6ZSA3ODR4MzkKLSAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDY4M3gy
MAotICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDY4M3gyMAotICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTE0OiAiVGhpcyB0ZXN0IHVzZXMgdGhl
IGV2ZW50U2VuZGVyIHRvIGRvIGEgbW91c2UgY2xpY2sgdG8gZm9jdXMgdGhlIHN1YmZyYW1lLiAi
Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNTE0LDApIHdpZHRoIDE2OTogIkl0IHdvbid0IHJ1
biBpbnRlcmFjdGl2ZWx5LiIKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg2ODMsMCkg
c2l6ZSA3NDB4MzkKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoNjgzLDApIHdpZHRoIDQ6ICIgIgot
ICAgICAgICAgIHRleHQgcnVuIGF0ICg2ODcsMCkgd2lkdGggNTM6ICJUbyBydW4gaXQiCi0gICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMjApIHdpZHRoIDM0ODogIm1hbnVhbGx5LCBjbGljayBvbiB0
aGUgaWZyYW1lLCBTZWxlY3QgQWxsLCB0aGVuIGhpdCBkZWxldGUuIgotICAgICAgUmVuZGVyQmxv
Y2sgKGFub255bW91cykgYXQgKDAsMjQwKSBzaXplIDc4NHg1NwotICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NzZ4NTcKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA3NzY6ICJTZWxlY3RpbmcgYWxsIHRoZSBjb250ZW50IGluIGEgY29udGVudGVkaXRh
YmxlIGlmcmFtZSBzaG91bGQgc2VsZWN0IHRoZSBpZnJhbWUgaXRzZWxmICh0byBoZWxwIHRoZSB1
c2VyIGRlbGV0ZSB0aGUgaWZyYW1lKSBvbmx5IGlmIgotICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDE5KSB3aWR0aCAyMTk6ICJ0aGUgaWZyYW1lIGlzIGluIGFuIGVkaXRhYmxlIHJlZ2lvbi4gIgot
ICAgICAgICAgIHRleHQgcnVuIGF0ICgyMTksMTkpIHdpZHRoIDQzMDogIlRoaXMgdGVzdCBsb2Fk
cyAuLi9yZXNvdXJjZXMvc2VsZWN0LWFsbC1pZnJhbWUtc3JjLmh0bWwgaW50byBhbiBpZnJhbWUu
ICIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoNjQ5LDE5KSB3aWR0aCA5ODogIlRoYXQgZmlsZSBk
b2VzIGEiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMzgpIHdpZHRoIDEyMzogIlNlbGVjdCBB
bGwgKyBEZWxldGUuICIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTIzLDM4KSB3aWR0aCAxNzE6
ICJUd28gdGhpbmdzIHNob3VsZCBoYXBwZW46IgotICAgICAgUmVuZGVyQmxvY2sge1VMfSBhdCAo
MCwzMTEpIHNpemUgNzg0eDU3Ci0gICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDQwLDAp
IHNpemUgNzQ0eDM4Ci0gICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoLTE3LDApIHNpemUg
N3gxOTogYnVsbGV0Ci0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
NzI4eDM4Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0NTE6ICJUaGUgU2Vs
ZWN0IEFsbCBvcGVyYXRpb24gc2hvdWxkIG5vdCBzZWxlY3QgdGhlIGlmcmFtZSwgb25seSBpdCdz
IGNvbnRlbnRzLiAiCi0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNDUxLDApIHdpZHRoIDI3Nzog
IlRoZSByZXN1bHRzIG9mIHRoZSBTZWxlY3QgQWxsIHdpbGwgYmUgYXBwYXJlbnQiCi0gICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwxOSkgd2lkdGggNDY0OiAiZnJvbSB0aGUgZGVsZWdhdGUgbWVz
c2FnZXMgdGhhdCBEdW1wUmVuZGVyVHJlZSByZWNlaXZlcyBhbmQgZHVtcHMuIgotICAgICAgICBS
ZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwzOCkgc2l6ZSA3NDR4MTkKLSAgICAgICAgICBSZW5k
ZXJMaXN0TWFya2VyIGF0ICgtMTcsMCkgc2l6ZSA3eDE5OiBidWxsZXQKLSAgICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzNDJ4MTkKLSAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDM0MjogIlRoZSBjb250ZW50cyBvZiB0aGUgZWRpdGFibGUgaWZyYW1l
IHNob3VsZCBiZSBkZWxldGVkLiIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggZmYzYmU4My4uY2Q5MTJmOSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAw
OS0wMS0zMCAgT2phbiBWYWZhaSA8b2phbkBjaHJvbWl1bS5vcmc+IGFuZCBFcmljIFNlaWRlbCA8
ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1ha2UgY3Vyc29yIHBvc2l0aW9ucyBtYXRjaCBJRTYvSUU3L0ZGMyB3aGVuIGNs
aWNraW5nIGluIG1hcmdpbnMvcGFkZGluZworICAgICAgICBhcm91bmQgZGl2cyBpbnNpZGUgZWRp
dGFibGUgcmVnaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNjA1CisKKyAgICAgICAgRml4IGNsaWNrcyBvdXRzaWRlIGVkaXRhYmxlIHJlZ2lv
bnMgZnJvbSBmb2N1c2luZyB0aGUgZWRpdGFibGUgcmVnaW9uLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MDcKKworICAgICAgICBSZW1vdmVkIGVk
aXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLmh0bWwgYXMgaXQn
cworICAgICAgICBub3QgYXMgdXNlZnVsIGFzIG91ciBuZXcgdGVzdHMuCisKKyAgICAgICAgQ2xl
YW4gdXAgUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMgdG8gcmVtb3ZlIGRlYWQg
Y29kZSwKKyAgICAgICAgZHVwbGljYXRlIGNvZGUsIGFuZCBnZW5lcmFsbHkgbWFrZSBpdCBtb3Jl
IHJlYWRhYmxlLgorCisgICAgICAgIEFkZGVkIHRlc3RzOgorICAgICAgICAqIGVkaXRpbmcvc2Vs
ZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1vdXRzaWRlLWVkaXRhYmxlLWRpdi5o
dG1sOiBBZGRlZC4KKworICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbjo6Y2Fub25pY2FsUG9zaXRpb24pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3Np
dGlvbkZvckNvb3JkaW5hdGVzSW5DaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6cG9zaXRpb25Gb3JDb29yZGluYXRlcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNv
bnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb250YWluZXI6OnBvc2l0aW9u
Rm9yQ29vcmRpbmF0ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKToK
KwogMjAwOS0wMi0wMiAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAg
TWFrZSBjYWxjUHJlZldpZHRocyBub24tYWJzdHJhY3Qgb24gUmVuZGVyQm94IGFuZCBqdXN0IGdp
dmUgaXQgUmVuZGVyQ29udGFpbmVyJ3MgaW1wbGVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
UG9zaXRpb24uY3BwCmluZGV4IDNkNzcxYzYuLmMzNTBiYmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
UG9zaXRpb24uY3BwCkBAIC00OTIsMTAgKzQ5MiwxMCBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRp
b246OmNhbm9uaWNhbFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKICAgICBib29s
IG5leHRJc0luU2FtZUVkaXRhYmxlRWxlbWVudCA9IG5leHROb2RlICYmIGVkaXRhYmxlUm9vdEZv
clBvc2l0aW9uKG5leHQpID09IGVkaXRpbmdSb290OwogICAgIGlmIChwcmV2SXNJblNhbWVFZGl0
YWJsZUVsZW1lbnQgJiYgIW5leHRJc0luU2FtZUVkaXRhYmxlRWxlbWVudCkKICAgICAgICAgcmV0
dXJuIHByZXY7Ci0gICAgICAgIAorCiAgICAgaWYgKG5leHRJc0luU2FtZUVkaXRhYmxlRWxlbWVu
dCAmJiAhcHJldklzSW5TYW1lRWRpdGFibGVFbGVtZW50KQogICAgICAgICByZXR1cm4gbmV4dDsK
LSAgICAgICAgCisKICAgICBpZiAoIW5leHRJc0luU2FtZUVkaXRhYmxlRWxlbWVudCAmJiAhcHJl
dklzSW5TYW1lRWRpdGFibGVFbGVtZW50KQogICAgICAgICByZXR1cm4gUG9zaXRpb24oKTsKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDdlZWUzYTAuLmI2NDBkOWIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTMzNjYsMTE4ICszMzY2LDEwNiBAQCBQb3NpdGlvbiBS
ZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBi
b29sIHN0YXJ0KSBjbwogICAgIHJldHVybiBQb3NpdGlvbihub2RlLCBvZmZzZXQpOwogfQogCisv
LyBGSVhNRTogVGhpcyBmdW5jdGlvbiBzaG91bGQgY291bGQgZ28gb24gUmVuZGVyT2JqZWN0IGFu
IGluc3RhbmNlIG1ldGhvZCB0aGVuCisvLyBhbGwgY2FzZXMgaW4gd2hpY2ggcG9zaXRpb25Gb3JD
b29yZGluYXRlcyByZWN1cnNlcyBjb3VsZCBjYWxsIHRoaXMgaW5zdGVhZCB0bworLy8gcHJldmVu
dCBjcm9zc2luZyBlZGl0YWJsZSBib3VuZGFyaWVzLiAgVGhpcyB3b3VsZCByZXF1aXJlIG1hbnkg
dGVzdHMhCitzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnRSZXNwZWN0aW5n
RWRpdGluZ0JvdW5kYXJpZXMoUmVuZGVyQm94KiBwYXJlbnQsIFJlbmRlckJveCogY2hpbGQsIGNv
bnN0IEludFBvaW50JiBwYXJlbnRDb29yZHMpCit7CisgICAgaW50IHhJbkNoaWxkQ29vcmRzID0g
cGFyZW50Q29vcmRzLngoKSAtIGNoaWxkLT54KCk7CisgICAgaW50IHlJbkNoaWxkQ29vcmRzID0g
cGFyZW50Q29vcmRzLnkoKSAtIGNoaWxkLT55KCk7CisKKyAgICAvLyBJZiB0aGlzIGlzIGFuIGFu
b255bW91cyByZW5kZXJlciwgd2UganVzdCByZWN1cnNlIG5vcm1hbGx5CisgICAgTm9kZSogY2hp
bGROb2RlID0gY2hpbGQtPmVsZW1lbnQoKTsKKyAgICBpZiAoIWNoaWxkTm9kZSkKKyAgICAgICAg
cmV0dXJuIGNoaWxkLT5wb3NpdGlvbkZvckNvb3JkaW5hdGVzKHhJbkNoaWxkQ29vcmRzLCB5SW5D
aGlsZENvb3Jkcyk7CisKKyAgICAvLyBPdGhlcndpc2UsIGZpcnN0IG1ha2Ugc3VyZSB0aGF0IHRo
ZSBlZGl0YWJpbGl0eSBvZiB0aGUgcGFyZW50IGFuZCBjaGlsZCBhZ3JlZSEKKyAgICAvLyBJZiB0
aGV5IGRvbid0IGFncmVlLCB0aGVuIHdlIHJldHVybiBhIHZpc2libGUgcG9zaXRpb24ganVzdCBi
ZWZvcmUgb3IgYWZ0ZXIgdGhlIGNoaWxkCisgICAgUmVuZGVyT2JqZWN0KiBhbmNlc3RvciA9IHBh
cmVudDsKKyAgICB3aGlsZSAoYW5jZXN0b3IgJiYgIWFuY2VzdG9yLT5lbGVtZW50KCkpCisgICAg
ICAgIGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudCgpOworICAgIAorICAgIC8vIElmIHdlIGNh
bid0IGZpbmQgYW4gYW5jZXN0b3IgdG8gY2hlY2sgZWRpdGFiaWxpdHkgb24sIG9yIGVkaXRpYmls
aXR5IGlzIHVuY2hhbmdlZCwgd2UgcmVjdXJzZSBsaWtlIG5vcm1hbAorICAgIGlmICghYW5jZXN0
b3IgfHwgYW5jZXN0b3ItPmVsZW1lbnQoKS0+aXNDb250ZW50RWRpdGFibGUoKSA9PSBjaGlsZE5v
ZGUtPmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgIHJldHVybiBjaGlsZC0+cG9zaXRpb25G
b3JDb29yZGluYXRlcyh4SW5DaGlsZENvb3JkcywgeUluQ2hpbGRDb29yZHMpOworCisgICAgLy8g
T3RoZXJ3aXNlIHJldHVybiBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGNoaWxkLCBkZXBlbmRpbmcgb24g
aWYgdGhlIGNsaWNrIHdhcyBsZWZ0IG9yIHJpZ2h0IG9mIHRoZSBjaGlsZAorICAgIGludCBjaGls
ZE1pZFggPSBjaGlsZC0+d2lkdGgoKSAvIDI7CisgICAgaWYgKHhJbkNoaWxkQ29vcmRzIDwgY2hp
bGRNaWRYKQorICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGFuY2VzdG9yLT5lbGVtZW50
KCksIGNoaWxkTm9kZS0+bm9kZUluZGV4KCksIERPV05TVFJFQU0pOworICAgIHJldHVybiBWaXNp
YmxlUG9zaXRpb24oYW5jZXN0b3ItPmVsZW1lbnQoKSwgY2hpbGROb2RlLT5ub2RlSW5kZXgoKSAr
IDEsIFVQU1RSRUFNKTsKK30KKworVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnRXaXRo
SW5saW5lQ2hpbGRyZW4oUmVuZGVyQmxvY2sqIGJsb2NrLCBjb25zdCBJbnRQb2ludCYgcG9pbnRJ
bkNvbnRlbnRzLCBpbnQgeEluUGFyZW50Q29vcmRzKQoreworICAgIEFTU0VSVChibG9jay0+Y2hp
bGRyZW5JbmxpbmUoKSk7CisKKyAgICBpZiAoIWJsb2NrLT5maXJzdFJvb3RCb3goKSkKKyAgICAg
ICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihibG9jay0+ZWxlbWVudCgpLCAwLCBET1dOU1RSRUFN
KTsKKworICAgIC8vIGxvb2sgZm9yIHRoZSBjbG9zZXN0IGxpbmUgYm94IGluIHRoZSByb290IGJv
eCB3aGljaCBpcyBhdCB0aGUgcGFzc2VkLWluIHkgY29vcmRpbmF0ZQorICAgIGZvciAoUm9vdElu
bGluZUJveCogcm9vdCA9IGJsb2NrLT5maXJzdFJvb3RCb3goKTsgcm9vdDsgcm9vdCA9IHJvb3Qt
Pm5leHRSb290Qm94KCkpIHsKKyAgICAgICAgaW50IGJvdHRvbTsKKyAgICAgICAgLy8gc2V0IHRo
ZSBib3R0b20gYmFzZWQgb24gd2hldGhlciB0aGVyZSBpcyBhIG5leHQgcm9vdCBib3gKKyAgICAg
ICAgaWYgKHJvb3QtPm5leHRSb290Qm94KCkpCisgICAgICAgICAgICAvLyBGSVhNRTogbWFrZSB0
aGUgYnJlYWsgcG9pbnQgaGFsZndheSBiZXR3ZWVuIHRoZSBib3R0b20gb2YgdGhlIHByZXZpb3Vz
IHJvb3QgYm94IGFuZCB0aGUgdG9wIG9mIHRoZSBuZXh0IHJvb3QgYm94CisgICAgICAgICAgICBi
b3R0b20gPSByb290LT5uZXh0Um9vdEJveCgpLT50b3BPdmVyZmxvdygpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBib3R0b20gPSByb290LT5ib3R0b21PdmVyZmxvdygpICsgdmVydGljYWxM
aW5lQ2xpY2tGdWRnZUZhY3RvcjsKKyAgICAgICAgLy8gY2hlY2sgaWYgdGhpcyByb290IGxpbmUg
Ym94IGlzIGxvY2F0ZWQgYXQgdGhpcyB5IGNvb3JkaW5hdGUKKyAgICAgICAgaWYgKHBvaW50SW5D
b250ZW50cy55KCkgPCBib3R0b20gJiYgcm9vdC0+Zmlyc3RDaGlsZCgpKSB7CisgICAgICAgICAg
ICAvLyBGSVhNRTogSXQgc2VlbXMgbGlrZSBhIGJ1ZyB0aGF0IHRoaXMgZnVuY3Rpb24gbmVlZHMg
eEluUGFyZW50Q29vcmRzCisgICAgICAgICAgICBJbmxpbmVCb3gqIGNsb3Nlc3RCb3ggPSByb290
LT5jbG9zZXN0TGVhZkNoaWxkRm9yWFBvcyh4SW5QYXJlbnRDb29yZHMpOworICAgICAgICAgICAg
aWYgKGNsb3Nlc3RCb3gpCisgICAgICAgICAgICAgICAgLy8gcGFzcyB0aGUgYm94IGEgeSBwb3Np
dGlvbiB0aGF0IGlzIGluc2lkZSBpdAorICAgICAgICAgICAgICAgIHJldHVybiBjbG9zZXN0Qm94
LT5vYmplY3QoKS0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyhwb2ludEluQ29udGVudHMueCgpLCBj
bG9zZXN0Qm94LT5tX3kpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8geSBjb29yZGluYXRl
IGlzIGJlbG93IGxhc3Qgcm9vdCBsaW5lIGJveCwgcHJldGVuZCB3ZSBoaXQgaXQKKyAgICBJbmxp
bmVCb3gqIGxhc3RSb290TGluZUJveCA9IGJsb2NrLT5sYXN0Um9vdEJveCgpOworICAgIHJldHVy
biBsYXN0Um9vdExpbmVCb3gtPm9iamVjdCgpLT5wb3NpdGlvbkZvckNvb3JkaW5hdGVzKHBvaW50
SW5Db250ZW50cy54KCksIGxhc3RSb290TGluZUJveC0+bV95KTsKK30KKwogVmlzaWJsZVBvc2l0
aW9uIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKGludCB4LCBpbnQgeSkKIHsK
ICAgICBpZiAoaXNUYWJsZSgpKQogICAgICAgICByZXR1cm4gUmVuZGVyQ29udGFpbmVyOjpwb3Np
dGlvbkZvckNvb3JkaW5hdGVzKHgsIHkpOyAKIAotICAgIGludCB0b3AgPSBib3JkZXJUb3AoKTsK
LSAgICBpbnQgYm90dG9tID0gdG9wICsgcGFkZGluZ1RvcCgpICsgY29udGVudEhlaWdodCgpICsg
cGFkZGluZ0JvdHRvbSgpOwotCi0gICAgaW50IGxlZnQgPSBib3JkZXJMZWZ0KCk7Ci0gICAgaW50
IHJpZ2h0ID0gbGVmdCArIHBhZGRpbmdMZWZ0KCkgKyBjb250ZW50V2lkdGgoKSArIHBhZGRpbmdS
aWdodCgpOwotCi0gICAgTm9kZSogbiA9IGVsZW1lbnQoKTsKLSAgICAKICAgICBpbnQgY29udGVu
dHNYID0geDsKICAgICBpbnQgY29udGVudHNZID0geTsKICAgICBvZmZzZXRGb3JDb250ZW50cyhj
b250ZW50c1gsIGNvbnRlbnRzWSk7CisgICAgSW50UG9pbnQgcG9pbnRJbkNvbnRlbnRzKGNvbnRl
bnRzWCwgY29udGVudHNZKTsKIAogICAgIGlmIChpc1JlcGxhY2VkKCkpIHsKICAgICAgICAgaWYg
KHkgPCAwIHx8IHkgPCBoZWlnaHQoKSAmJiB4IDwgMCkKLSAgICAgICAgICAgIHJldHVybiBWaXNp
YmxlUG9zaXRpb24obiwgY2FyZXRNaW5PZmZzZXQoKSwgRE9XTlNUUkVBTSk7CisgICAgICAgICAg
ICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGVsZW1lbnQoKSwgY2FyZXRNaW5PZmZzZXQoKSwgRE9X
TlNUUkVBTSk7CiAgICAgICAgIGlmICh5ID49IGhlaWdodCgpIHx8IHkgPj0gMCAmJiB4ID49IHdp
ZHRoKCkpCi0gICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG4sIGNhcmV0TWF4T2Zm
c2V0KCksIERPV05TVFJFQU0pOworICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihl
bGVtZW50KCksIGNhcmV0TWF4T2Zmc2V0KCksIERPV05TVFJFQU0pOwogICAgIH0gCiAKLSAgICAv
LyBJZiB3ZSBzdGFydCBpbnNpZGUgdGhlIHNoYWRvdyB0cmVlLCB3ZSB3aWxsIHN0YXkgaW5zaWRl
IChldmVuIGlmIHRoZSBwb2ludCBpcyBhYm92ZSBvciBiZWxvdykuCi0gICAgaWYgKCEobiAmJiBu
LT5pc1NoYWRvd05vZGUoKSkgJiYgIWNoaWxkcmVuSW5saW5lKCkpIHsKLSAgICAgICAgLy8gRG9u
J3QgcmV0dXJuIHBvc2l0aW9ucyBpbnNpZGUgZWRpdGFibGUgcm9vdHMgZm9yIGNvb3JkaW5hdGVz
IG91dHNpZGUgdGhvc2Ugcm9vdHMsIGV4Y2VwdCBmb3IgY29vcmRpbmF0ZXMgb3V0c2lkZQotICAg
ICAgICAvLyBhIGRvY3VtZW50IHRoYXQgaXMgZW50aXJlbHkgZWRpdGFibGUuCi0gICAgICAgIGJv
b2wgaXNFZGl0YWJsZVJvb3QgPSBuICYmIG4tPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSA9PSBuICYm
ICFuLT5oYXNUYWdOYW1lKGJvZHlUYWcpICYmICFuLT5oYXNUYWdOYW1lKGh0bWxUYWcpOwotCi0g
ICAgICAgIGlmICh5IDwgdG9wIHx8IChpc0VkaXRhYmxlUm9vdCAmJiAoeSA8IGJvdHRvbSAmJiB4
IDwgbGVmdCkpKSB7Ci0gICAgICAgICAgICBpZiAoIWlzRWRpdGFibGVSb290KQotICAgICAgICAg
ICAgICAgIGlmIChSZW5kZXJCb3gqIGMgPSBmaXJzdENoaWxkQm94KCkpIHsgLy8gRklYTUU6IFRo
aXMgY29kZSBkb2Vzbid0IG1ha2UgYW55IHNlbnNlLiAgVGhpcyBjaGlsZCBjb3VsZCBiZSBhbiBp
bmxpbmUgb3IgYSBwb3NpdGlvbmVkIGVsZW1lbnQgb3IgYSBmbG9hdCwgZXRjLgotICAgICAgICAg
ICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gcCA9IGMtPnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMo
Y29udGVudHNYIC0gYy0+eCgpLCBjb250ZW50c1kgLSBjLT55KCkpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAocC5pc05vdE51bGwoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBw
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChuKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKE5vZGUqIHNwID0gbi0+c2hhZG93UGFyZW50Tm9kZSgpKQotICAgICAgICAgICAgICAg
ICAgICBuID0gc3A7Ci0gICAgICAgICAgICAgICAgaWYgKE5vZGUqIHAgPSBuLT5wYXJlbnQoKSkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihwLCBuLT5ub2RlSW5k
ZXgoKSwgRE9XTlNUUkVBTSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKG4sIDAsIERPV05TVFJFQU0pOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KHkgPj0gYm90dG9tIHx8IChpc0VkaXRhYmxlUm9vdCAmJiAoeSA+PSB0b3AgJiYgeCA+PSByaWdo
dCkpKSB7Ci0gICAgICAgICAgICBpZiAoIWlzRWRpdGFibGVSb290KQotICAgICAgICAgICAgICAg
IGlmIChSZW5kZXJCb3gqIGMgPSBsYXN0Q2hpbGRCb3goKSkgeyAvLyBGSVhNRTogVGhpcyBjb2Rl
IGRvZXNuJ3QgbWFrZSBhbnkgc2Vuc2UuICBUaGlzIGNoaWxkIGNvdWxkIGJlIGFuIGlubGluZSBv
ciBhIHBvc2l0aW9uZWQgZWxlbWVudCBvciBhIGZsb2F0LCBldGMuCi0gICAgICAgICAgICAgICAg
ICAgIFZpc2libGVQb3NpdGlvbiBwID0gYy0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyhjb250ZW50
c1ggLSBjLT54KCksIGNvbnRlbnRzWSAtIGMtPnkoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChwLmlzTm90TnVsbCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHA7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG4pIHsKLSAgICAgICAgICAgICAgICBpZiAo
Tm9kZSogc3AgPSBuLT5zaGFkb3dQYXJlbnROb2RlKCkpCi0gICAgICAgICAgICAgICAgICAgIG4g
PSBzcDsKLSAgICAgICAgICAgICAgICBpZiAoTm9kZSogcCA9IG4tPnBhcmVudCgpKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKHAsIG4tPm5vZGVJbmRleCgpICsg
MSwgRE9XTlNUUkVBTSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKG4sIDAsIERPV05TVFJFQU0pOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgaWYg
KGNoaWxkcmVuSW5saW5lKCkpIHsKLSAgICAgICAgaWYgKCFmaXJzdFJvb3RCb3goKSkKLSAgICAg
ICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obiwgMCwgRE9XTlNUUkVBTSk7Ci0KLSAgICAg
ICAgaWYgKGNvbnRlbnRzWSA8IGZpcnN0Um9vdEJveCgpLT50b3BPdmVyZmxvdygpIC0gdmVydGlj
YWxMaW5lQ2xpY2tGdWRnZUZhY3RvcikKLSAgICAgICAgICAgIC8vIHkgY29vcmRpbmF0ZSBpcyBh
Ym92ZSBmaXJzdCByb290IGxpbmUgYm94Ci0gICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0
aW9uKHBvc2l0aW9uRm9yQm94KGZpcnN0Um9vdEJveCgpLT5maXJzdExlYWZDaGlsZCgpLCB0cnVl
KSwgRE9XTlNUUkVBTSk7Ci0gICAgICAgIAotICAgICAgICAvLyBsb29rIGZvciB0aGUgY2xvc2Vz
dCBsaW5lIGJveCBpbiB0aGUgcm9vdCBib3ggd2hpY2ggaXMgYXQgdGhlIHBhc3NlZC1pbiB5IGNv
b3JkaW5hdGUKLSAgICAgICAgZm9yIChSb290SW5saW5lQm94KiByb290ID0gZmlyc3RSb290Qm94
KCk7IHJvb3Q7IHJvb3QgPSByb290LT5uZXh0Um9vdEJveCgpKSB7Ci0gICAgICAgICAgICAvLyBz
ZXQgdGhlIGJvdHRvbSBiYXNlZCBvbiB3aGV0aGVyIHRoZXJlIGlzIGEgbmV4dCByb290IGJveAot
ICAgICAgICAgICAgaWYgKHJvb3QtPm5leHRSb290Qm94KCkpCi0gICAgICAgICAgICAgICAgLy8g
RklYTUU6IG1ha2UgdGhlIGJyZWFrIHBvaW50IGhhbGZ3YXkgYmV0d2VlbiB0aGUgYm90dG9tIG9m
IHRoZSBwcmV2aW91cyByb290IGJveCBhbmQgdGhlIHRvcCBvZiB0aGUgbmV4dCByb290IGJveAot
ICAgICAgICAgICAgICAgIGJvdHRvbSA9IHJvb3QtPm5leHRSb290Qm94KCktPnRvcE92ZXJmbG93
KCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYm90dG9tID0gcm9vdC0+Ym90
dG9tT3ZlcmZsb3coKSArIHZlcnRpY2FsTGluZUNsaWNrRnVkZ2VGYWN0b3I7Ci0gICAgICAgICAg
ICAvLyBjaGVjayBpZiB0aGlzIHJvb3QgbGluZSBib3ggaXMgbG9jYXRlZCBhdCB0aGlzIHkgY29v
cmRpbmF0ZQotICAgICAgICAgICAgaWYgKGNvbnRlbnRzWSA8IGJvdHRvbSAmJiByb290LT5maXJz
dENoaWxkKCkpIHsKLSAgICAgICAgICAgICAgICBJbmxpbmVCb3gqIGNsb3Nlc3RCb3ggPSByb290
LT5jbG9zZXN0TGVhZkNoaWxkRm9yWFBvcyh4KTsKLSAgICAgICAgICAgICAgICBpZiAoY2xvc2Vz
dEJveCkKLSAgICAgICAgICAgICAgICAgICAgLy8gcGFzcyB0aGUgYm94IGEgeSBwb3NpdGlvbiB0
aGF0IGlzIGluc2lkZSBpdAotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdEJveC0+
b2JqZWN0KCktPnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoY29udGVudHNYLCBjbG9zZXN0Qm94LT5t
X3kpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGxhc3RSb290Qm94
KCkpCi0gICAgICAgICAgICAvLyB5IGNvb3JkaW5hdGUgaXMgYmVsb3cgbGFzdCByb290IGxpbmUg
Ym94Ci0gICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uRm9yQm94KGxh
c3RSb290Qm94KCktPmxhc3RMZWFmQ2hpbGQoKSwgZmFsc2UpLCBET1dOU1RSRUFNKTsKLQotICAg
ICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG4sIDAsIERPV05TVFJFQU0pOworICAgICAgICAv
LyBGSVhNRTogY2xvc2VzdExlYWZDaGlsZEZvclhQb3Mgc2VlbXMgdG8gdXNlIHggaW5zZWFkIG9m
IGNvbnRlbnRYLCB3aGljaCBzZWVtcyB3cm9uZyE/CisgICAgICAgIHJldHVybiBwb3NpdGlvbkZv
clBvaW50V2l0aElubGluZUNoaWxkcmVuKHRoaXMsIHBvaW50SW5Db250ZW50cywgeCk7CiAgICAg
fQotICAgIAotICAgIC8vIFNlZSBpZiBhbnkgY2hpbGQgYmxvY2tzIGV4aXN0IGF0IHRoaXMgeSBj
b29yZGluYXRlLgorCisgICAgLy8gQ2hlY2sgdG9wL2JvdHRvbSBjaGlsZC1tYXJnaW4vcGFyZW50
LXBhZGRpbmcgZm9yIGNsaWNrcyBhbmQgcGxhY2UgdGhlbSBpbiB0aGUgZmlyc3QvbGFzdCBjaGls
ZAorICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgbm90IGNvcnJlY3RseSBoYW5kbGUgZmlyc3Qgb3Ig
bGFzdCBjaGlsZHJlbiBiZWluZyBwb3NpdGlvbmVkIG9yIG5vbi12aXNpYmxlCiAgICAgaWYgKGZp
cnN0Q2hpbGRCb3goKSAmJiBjb250ZW50c1kgPCBmaXJzdENoaWxkQm94KCktPnkoKSkKLSAgICAg
ICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihuLCAwLCBET1dOU1RSRUFNKTsKLSAgICBmb3IgKFJl
bmRlckJveCogcmVuZGVyZXIgPSBmaXJzdENoaWxkQm94KCk7IHJlbmRlcmVyOyByZW5kZXJlciA9
IHJlbmRlcmVyLT5uZXh0U2libGluZ0JveCgpKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlci0+aGVp
Z2h0KCkgPT0gMCB8fCByZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUg
fHwgcmVuZGVyZXItPmlzRmxvYXRpbmdPclBvc2l0aW9uZWQoKSkKKyAgICAgICAgcmV0dXJuIHBv
c2l0aW9uRm9yUG9pbnRSZXNwZWN0aW5nRWRpdGluZ0JvdW5kYXJpZXModGhpcywgZmlyc3RDaGls
ZEJveCgpLCBwb2ludEluQ29udGVudHMpOworICAgIGlmIChsYXN0Q2hpbGRCb3goKSAmJiBjb250
ZW50c1kgPiBsYXN0Q2hpbGRCb3goKS0+eSgpKQorICAgICAgICByZXR1cm4gcG9zaXRpb25Gb3JQ
b2ludFJlc3BlY3RpbmdFZGl0aW5nQm91bmRhcmllcyh0aGlzLCBsYXN0Q2hpbGRCb3goKSwgcG9p
bnRJbkNvbnRlbnRzKTsKKworICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZEJveCA9IGZpcnN0Q2hp
bGRCb3goKTsgY2hpbGRCb3g7IGNoaWxkQm94ID0gY2hpbGRCb3gtPm5leHRTaWJsaW5nQm94KCkp
IHsKKyAgICAgICAgaWYgKGNoaWxkQm94LT5oZWlnaHQoKSA9PSAwIHx8IGNoaWxkQm94LT5zdHls
ZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBjaGlsZEJveC0+aXNGbG9hdGluZ09yUG9z
aXRpb25lZCgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFJlbmRlckJveCogbmV4
dCA9IHJlbmRlcmVyLT5uZXh0U2libGluZ0JveCgpOwotICAgICAgICB3aGlsZSAobmV4dCAmJiBu
ZXh0LT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICBuZXh0ID0gbmV4dC0+
bmV4dFNpYmxpbmdCb3goKTsKLSAgICAgICAgaWYgKG5leHQpIAotICAgICAgICAgICAgYm90dG9t
ID0gbmV4dC0+eSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBib3R0b20gPSB0b3AgKyBz
Y3JvbGxIZWlnaHQoKTsKLSAgICAgICAgaWYgKGNvbnRlbnRzWSA+PSByZW5kZXJlci0+eSgpICYm
IGNvbnRlbnRzWSA8IGJvdHRvbSkKLSAgICAgICAgICAgIHJldHVybiByZW5kZXJlci0+cG9zaXRp
b25Gb3JDb29yZGluYXRlcyhjb250ZW50c1ggLSByZW5kZXJlci0+eCgpLCBjb250ZW50c1kgLSBy
ZW5kZXJlci0+eSgpKTsKKyAgICAgICAgLy8gV2UgaGl0IHRoaXMgY2hpbGQgaWYgb3VyIGNsaWNr
IHdhcyBhYm92ZSB0aGUgYm90dG9tIG9mIGl0cyBwYWRkaW5nIGJveCAobGlrZSBJRTYvNyBhbmQg
RkYzKQorICAgICAgICBpZiAoY29udGVudHNZIDwgY2hpbGRCb3gtPnkoKSArIGNoaWxkQm94LT5o
ZWlnaHQoKSkKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkZvclBvaW50UmVzcGVjdGluZ0Vk
aXRpbmdCb3VuZGFyaWVzKHRoaXMsIGNoaWxkQm94LCBwb2ludEluQ29udGVudHMpOwogICAgIH0K
LSAgICAKKworICAgIC8vIFdlIG9ubHkgZ2V0IGhlcmUgaWYgdGhlcmUgYXJlIG5vLCBvciBvbmx5
IGZsb2F0ZWQvcG9zaXRpb25lZCwgb3Igb25seQorICAgIC8vIG5vbi12aXNpYmxlIGJsb2NrIGNo
aWxkcmVuIGJlbG93IHRoZSBjbGljay4KICAgICByZXR1cm4gUmVuZGVyQ29udGFpbmVyOjpwb3Np
dGlvbkZvckNvb3JkaW5hdGVzKHgsIHkpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJDb250YWluZXIuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29udGFp
bmVyLmNwcAppbmRleCA2NTIyZGI4Li5jMDQ2NTQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJDb250YWluZXIuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNv
bnRhaW5lci5jcHAKQEAgLTUwNiw4ICs1MDYsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQ29u
dGFpbmVyOjpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKGludCB4UG9zLCBpbnQgeVBvcykKICAgICAg
ICAgaWYgKHhQb3MgPCAwIHx8IHhQb3MgPiByaWdodCB8fCB5UG9zIDwgMCB8fCB5UG9zID4gYm90
dG9tKSB7CiAgICAgICAgICAgICBpZiAoeFBvcyA8PSByaWdodCAvIDIpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihQb3NpdGlvbihlbGVtZW50KCksIDApKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKFBvc2l0
aW9uKGVsZW1lbnQoKSwgbWF4RGVlcE9mZnNldChlbGVtZW50KCkpKSk7CisgICAgICAgICAgICBy
ZXR1cm4gVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKGVsZW1lbnQoKSwgbWF4RGVlcE9mZnNldChl
bGVtZW50KCkpKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwCmluZGV4IDkyMGIxMmIuLmE3Nzk3MDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNw
cApAQCAtNDg0LDYgKzQ4NCw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJJbmxpbmU6OnBvc2l0
aW9uRm9yQ29vcmRpbmF0ZXMoaW50IHgsIGludCB5KQogICAgIHdoaWxlIChjKSB7CiAgICAgICAg
IFJlbmRlckJveCogY29udEJsb2NrID0gYzsKICAgICAgICAgaWYgKGMtPmlzSW5saW5lKCkgfHwg
Yy0+Zmlyc3RDaGlsZCgpKQorICAgICAgICAgICAgLy8gVGhlIGNvbnRpbnVhdGlvbnMgKGFub255
bW91cyBibG9ja3MpIHdpbGwgbmV2ZXIgYmUgZWRpdGFibGUsIHNvIHdlIGRvbid0IG5lZWQgdG8g
d29ycnkgYWJvdXQgY3Jvc3NpbmcgZWRpdGFibGUgYm91bmRhcmllcyBoZXJlLgogICAgICAgICAg
ICAgcmV0dXJuIGMtPnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMocGFyZW50QmxvY2tYIC0gY29udEJs
b2NrLT54KCksIHBhcmVudEJsb2NrWSAtIGNvbnRCbG9jay0+eSgpKTsKICAgICAgICAgYyA9IHRv
UmVuZGVyQmxvY2soYyktPmlubGluZUNvbnRpbnVhdGlvbigpOwogICAgIH0KLS0gCjEuNi4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27371</attachid>
            <date>2009-02-05 17:42:18 -0800</date>
            <delta_ts>2009-02-12 16:02:47 -0800</delta_ts>
            <desc>Fix positionForCoordinates now with an added fix for clicking in the margins of the body.</desc>
            <filename>Fix-positionForCoordinates-now-with-an-added-fix-for-clicking-in-the-margins-of-the-body..patch</filename>
            <type>text/plain</type>
            <size>42532</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">NTQyYjdmZTlmMzYwNjQyMTMwM2UzNDc5MDYyODNkNTMzMmJhZmViYwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU4MTMxOGMu
LjhjMTc1ZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAwOS0wMi0wNSBPamFuIFZhZmFpIDxv
amFuQGNocm9taXVtLm9yZz4gYW5kIEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBjdXJzb3Ig
cG9zaXRpb25zIG1hdGNoIElFNi9JRTcvRkYzIHdoZW4gY2xpY2tpbmcgaW4gbWFyZ2lucy9wYWRk
aW5nCisgICAgICAgIGFyb3VuZCBkaXZzIGluc2lkZSBlZGl0YWJsZSByZWdpb25zLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MDUKKworICAgICAg
ICBGaXggY2xpY2tzIG91dHNpZGUgZWRpdGFibGUgcmVnaW9ucyBmcm9tIGZvY3VzaW5nIHRoZSBl
ZGl0YWJsZSByZWdpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzYwNworCisgICAgICAgIFJlbW92ZWQgZWRpdGluZy9zZWxlY3Rpb24vY29udGVu
dGVkaXRhYmxlLWNsaWNrLW91dHNpZGUuaHRtbCBhcyBpdCdzCisgICAgICAgIG5vdCBhcyB1c2Vm
dWwgYXMgb3VyIG5ldyB0ZXN0cy4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNr
LWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxl
LWRpdi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1vdXRz
aWRlLWVkaXRhYmxlLWRpdi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcv
c2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL1RFTVBMQVRF
Lmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVzb3Vy
Y2VzL1RFTVBMQVRFLmh0bWwuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2Vz
L2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5qczogQWRkZWQuCisgICAgICAg
ICogZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtbWlzc2luZy1p
bWFnZS5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250
ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1leHBlY3RlZC5jaGVja3N1bTogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNs
aWNrLW91dHNpZGUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1mcm9tLXRleHRmaWVs
ZC1vdXR3YXJkcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcv
c2VsZWN0aW9uL3NlbGVjdC1taXNzaW5nLWltYWdlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lk
ZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvZWRpdGluZy9z
ZWxlY3Rpb24vc2VsZWN0LWFsbC1pZnJhbWUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorCiAyMDA5
LTAyLTA0ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0
YWJsZS1kaXYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmE5ZjNkMTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0YWJsZS1kaXYtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjMgQEAKK0Vuc3VyZSBjdXJzb3IgcGxhY2VtZW50IG1hdGNoZXMgSUU2L0lFNy9GRjMg
d2hlbiBjbGlja2luZyBhYm92ZS9iZWxvdyBsaW5lcyBpbiBwYWRkaW5nLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBU
ZXh0XSBvZmZzZXQ6IDAKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0g
b2Zmc2V0OiAxCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNl
dDogMgorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDAK
K1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAyCitQQVNT
IFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMAorUEFTUyBTZWxl
Y3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDEKK1BBU1MgU2VsZWN0aW9u
IGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAyCitQQVNTIFNlbGVjdGlvbiBpcyBh
dCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMAorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9k
ZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDEKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtv
YmplY3QgVGV4dF0gb2Zmc2V0OiAyCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0
IFRleHRdIG9mZnNldDogMAorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0
XSBvZmZzZXQ6IDEKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zm
c2V0OiAyCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFy
Z2lucy1pbnNpZGUtZWRpdGFibGUtZGl2Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0YWJsZS1kaXYuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODQ2NzMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFi
bGUtZGl2Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2xpY2staW4tbWFyZ2lucy1p
bnNpZGUtZWRpdGFibGUtZGl2LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stb3V0c2lk
ZS1lZGl0YWJsZS1kaXYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vY2xpY2stb3V0c2lkZS1lZGl0YWJsZS1kaXYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYzU2ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1vdXRzaWRlLWVkaXRhYmxlLWRpdi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwyMCBAQAorRW5zdXJlIHRoYXQgY2xpY2tpbmcgaW4gdGhlIG1hcmdp
bnMgYXJvdW5kIGVkaXRhYmxlIGRpdnMgZG9lcyBub3QgZ3JhbnQgZm9jdXMuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIENsaWNrIEAgMTAsIDEwIGRpZCBub3QgY2F1c2Ug
Zm9jdXMuCitQQVNTIENsaWNrIEAgMTcwLCAxMCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBD
bGljayBAIDEwLCAxNzAgZGlkIG5vdCBjYXVzZSBmb2N1cy4KK1BBU1MgQ2xpY2sgQCA3MCwgNzAg
ZGlkIG5vdCBjYXVzZSBmb2N1cy4KK1BBU1MgQ2xpY2sgQCAxNzAsIDcwIGRpZCBub3QgY2F1c2Ug
Zm9jdXMuCitQQVNTIENsaWNrIEAgMjcwLCA3MCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBD
bGljayBAIDcwLCAxNzAgZGlkIG5vdCBjYXVzZSBmb2N1cy4KK1BBU1MgQ2xpY2sgQCAyNzAsIDE3
MCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBDbGljayBAIDcwLCAyNzAgZGlkIG5vdCBjYXVz
ZSBmb2N1cy4KK1BBU1MgQ2xpY2sgQCAxNzAsIDI3MCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFT
UyBDbGljayBAIDI3MCwgMjcwIGRpZCBub3QgY2F1c2UgZm9jdXMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stb3V0c2lkZS1lZGl0YWJsZS1kaXYuaHRtbCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ1NTlhMAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRp
dGFibGUtZGl2Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2xpY2stb3V0c2lkZS1l
ZGl0YWJsZS1kaXYuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xp
Y2stb3V0c2lkZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVk
aXRhYmxlLWNsaWNrLW91dHNpZGUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTBkOGVhZS4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jb250
ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAs
MCBAQAotPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7Ci08L3NjcmlwdD4KLTxk
aXYgc3R5bGU9IndpZHRoOiA0MDBweDsgaGVpZ2h0OiA1MHB4OyBwYWRkaW5nOiAyNXB4IDAgMCAy
NXB4OyBiYWNrZ3JvdW5kOiB5ZWxsb3c7Ij48ZGl2IGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgc3R5
bGU9ImJhY2tncm91bmQ6IHdoaXRlOyBoZWlnaHQ6MjBweDsgd2lkdGg6MTAwcHgiPjwvZGl2Pjwv
ZGl2PgotPHA+VGhpcyB0ZXN0IGNsaWNrcyBvdXRzaWRlIGFuIGVkaXRhYmxlIGRpdiBlbGVtZW50
LCBhbmQgbXVzdCBub3QgcmVzdWx0IGluIHRoZSBlbGVtZW50IHJlY2VpdmluZyBmb2N1cy4gSWYg
dGhlIHRlc3Qgc3VjY2VlZHMgdGhlIGVsZW1lbnQgc2hvdWxkIG5vdCBoYXZlIGEgZm9jdXMgcmlu
Zy48L3A+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewotICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKDIyNSwgNDUpOwotICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwot
ICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKLX0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGNlNTZjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwKQEAg
LTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQgc3JjPSJZT1VSX0pTX0ZJTEVfSEVSRSI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jl
c291cmNlcy9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0YWJsZS1kaXYuanMgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2staW4tbWFyZ2lucy1pbnNpZGUt
ZWRpdGFibGUtZGl2LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkODc1
MjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNv
dXJjZXMvY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2LmpzCkBAIC0wLDAgKzEs
MTM4IEBACitkZXNjcmlwdGlvbigiRW5zdXJlIGN1cnNvciBwbGFjZW1lbnQgbWF0Y2hlcyBJRTYv
SUU3L0ZGMyB3aGVuIGNsaWNraW5nIGFib3ZlL2JlbG93IGxpbmVzIGluIHBhZGRpbmcuIikKKwor
ZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW4gPSAwOworCit2YXIgZGl2ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CitkaXYuc3R5bGUuY3NzVGV4dCA9ICJmb250LWZhbWlseTogYWhl
bTsgZm9udC1zaXplOiAyMHB4OyAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogeWVsbG93OyB3aWR0
aDogNDBweDsgaGVpZ2h0OiA4MHB4OyBwYWRkaW5nOiAyMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBn
cmVlbjsiOworZGl2LmNvbnRlbnRFZGl0YWJsZSA9IHRydWU7CisKK3ZhciBmaXJzdFRleHQgPSBk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiWFgiKTsKK3ZhciBmaXJzdERpdiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworZmlyc3REaXYuYXBwZW5kQ2hpbGQoZmlyc3RUZXh0KTsKK2Zp
cnN0RGl2LnN0eWxlLmNzc1RleHQgPSAicGFkZGluZy1ib3R0b206IDE5cHg7IGJvcmRlci1ib3R0
b206IDFweCBzb2xpZCBwaW5rOyBtYXJnaW4tYm90dG9tOiAyMHB4IjsKK2Rpdi5hcHBlbmRDaGls
ZChmaXJzdERpdik7CisKK3ZhciBzZWNvbmRUZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
IllZIik7Cit2YXIgc2Vjb25kRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citz
ZWNvbmREaXYuYXBwZW5kQ2hpbGQoc2Vjb25kVGV4dCk7CitkaXYuYXBwZW5kQ2hpbGQoc2Vjb25k
RGl2KTsKKworZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZGl2LCBkb2N1bWVudC5ib2R5LmZp
cnN0Q2hpbGQpOworCitmdW5jdGlvbiBvYmplY3RBc1N0cmluZyhvYmplY3QsIHByb3BlcnRpZXMp
IHsKKyAgICB2YXIgcmVzdWx0ID0gIlsiOworICAgIGZvciAodmFyIHggPSAwOyB4IDwgcHJvcGVy
dGllcy5sZW5ndGg7IHgrKykgeworICAgICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW3hd
OworICAgICAgICBpZiAoeCAhPSAwKQorICAgICAgICAgICAgcmVzdWx0ICs9ICIgIjsKKworICAg
ICAgICB2YXIgdmFsdWUgPSBvYmplY3RbcHJvcGVydHldOworICAgICAgICBpZiAodmFsdWUgJiYg
dmFsdWUubm9kZVR5cGUpIC8vIHRleHROb2RlCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlICsg
IiggIiArIHZhbHVlLm5vZGVWYWx1ZSArICIgKSI7CisKKyAgICAgICAgcmVzdWx0ICs9IHByb3Bl
cnR5ICsgIjogIiArIHZhbHVlOworICAgIH0KKyAgICByZXN1bHQgKz0gJ10nOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIHNlbGVjdGlvbkFzU3RyaW5nKHNlbCkKK3sKKyAgICB2
YXIgcHJvcGVydGllcyA9IFsnYW5jaG9yTm9kZScsICdhbmNob3JPZmZzZXQnLCAnZm9jdXNOb2Rl
JywgJ2ZvY3VzT2Zmc2V0JywgJ2lzQ29sbGFwc2VkJ107CisgICAgcmV0dXJuIG9iamVjdEFzU3Ry
aW5nKHNlbCwgcHJvcGVydGllcyk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydFJhbmdlKG5vZGUsIG9m
ZnNldCkgeworICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgaWYgKHNl
bC5hbmNob3JOb2RlID09IG5vZGUKKyAgICAgICAgJiYgc2VsLmZvY3VzTm9kZSA9PSBub2RlCisg
ICAgICAgICYmIHNlbC5hbmNob3JPZmZzZXQgPT0gb2Zmc2V0CisgICAgICAgICYmIHNlbC5mb2N1
c09mZnNldCA9PSBvZmZzZXQKKyAgICAgICAgJiYgc2VsLmlzQ29sbGFwc2VkKSB7CisgICAgICAg
IHRlc3RQYXNzZWQoIlNlbGVjdGlvbiBpcyBhdCBub2RlOiAiICsgbm9kZSArICIgb2Zmc2V0OiAi
ICsgb2Zmc2V0KTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJTZWxlY3Rpb24g
aXMgIiArIHNlbGVjdGlvbkFzU3RyaW5nKHNlbCkgKyAiIHNob3VsZCBiZSBhdCBub2RlOiAiICsg
bm9kZSArICIgb2Zmc2V0OiAiICsgb2Zmc2V0KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNsaWNr
KHgsIHkpIHsKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsK
KyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIGNsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSh4LCB5LCBub2RlLCBv
ZmZzZXQpIHsKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGNsaWNrKHgs
IHkpOworICAgICAgICBhc3NlcnRSYW5nZShub2RlLCBvZmZzZXQpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIHRlc3RzLnB1c2goeworICAgICAgICAgICAgdGVzdEZ1bmN0aW9uOiBmdW5jdGlvbigp
IHsgYXNzZXJ0UmFuZ2Uobm9kZSwgb2Zmc2V0KTsgfSwKKyAgICAgICAgICAgIGNsaWNrU3RyaW5n
OiAiICIgKyB4ICsgIiwgIiArIHkgfQorICAgICAgICApCisgICAgfQorfQorCitmdW5jdGlvbiBw
cmludENsaWNrU3RyaW5nRm9yV2FpdGluZ1Rlc3QoKQoreworICAgIGlmICghdGVzdHNbdGVzdElu
ZGV4XSkKKyAgICAgICAgcmV0dXJuOworICAgIGRlYnVnKCJXYWl0aW5nIGZvciBjbGljayBAICIg
KyB0ZXN0c1t0ZXN0SW5kZXhdLmNsaWNrU3RyaW5nKTsKK30KKwordmFyIHRlc3RJbmRleCA9IDA7
Cit2YXIgdGVzdHMgPSBbXTsKK2Z1bmN0aW9uIHJ1bkludGVyYWN0aXZlVGVzdHMoKQoreworICAg
IHRlc3RJbmRleCA9IDA7CisgICAgcHJpbnRDbGlja1N0cmluZ0ZvcldhaXRpbmdUZXN0KCk7Cisg
ICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgZnVuY3Rpb24oKSB7
CisgICAgICAgIGRlYnVnKCJHb3QgY2xpY2sgQCAiICsgZXZlbnQuY2xpZW50WCArICIsICIgKyBl
dmVudC5jbGllbnRZKTsKKyAgICAgICAgdmFyIHRlc3QgPSB0ZXN0c1t0ZXN0SW5kZXhdOworICAg
ICAgICBpZiAodGVzdCkgeworICAgICAgICAgICAgdGVzdC50ZXN0RnVuY3Rpb24oKTsKKyAgICAg
ICAgICAgIHRlc3RJbmRleCsrOworICAgICAgICAgICAgcHJpbnRDbGlja1N0cmluZ0ZvcldhaXRp
bmdUZXN0KCk7CisgICAgICAgIH0KKyAgICB9LCBmYWxzZSk7Cit9CisKKy8vIFdoZW4gY2xpY2tp
bmcgYmV0d2VlbiBkaXZzIHNlcGFyYXRlZCBieSBtYXJnaW5zIGluIGFuIGVkaXRhYmxlCisvLyB0
ZXh0IHJlZ2lvbiwgdGhlIGJyb3dzZXJzIGRpZmZlciBpbiBiZWhhdmlvcjoKKy8vIEZGMzogdmVy
dGljYWwgcGFkZGluZyBib3ggKyBzb21lIHNvcnQgb2Ygb3ZlcmhhbmcgZGVjZW50PworLy8gSUU2
L0lFNzogdmVydGljYWwgcGFkZGluZyBib3gKKy8vIElFOCBiMjogbWFyZ2luIGJveAorLy8gU2Fm
YXJpMzogbWFyZ2luIGJveCAoYnV0IGN1cnNvciBnb2VzIGF0IGVuZCBvZiBsaW5lKQorCitjbGlj
a1Nob3VsZFJlc3VsdEluUmFuZ2UoMTAsIDEwLCBmaXJzdFRleHQsIDApOworY2xpY2tTaG91bGRS
ZXN1bHRJblJhbmdlKDQwLCAxMCwgZmlyc3RUZXh0LCAxKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5S
YW5nZSg3MCwgMTAsIGZpcnN0VGV4dCwgMik7CisKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSgx
MCwgMzAsIGZpcnN0VGV4dCwgMCk7CitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNzAsIDMwLCBm
aXJzdFRleHQsIDIpOworCitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoMTAsIDUwLCBmaXJzdFRl
eHQsIDApOworY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKDQwLCA1MCwgZmlyc3RUZXh0LCAxKTsK
K2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSg3MCwgNTAsIGZpcnN0VGV4dCwgMik7CisKKy8vIFdl
J3JlIGdvaW5nIHRvIGZvbGxvdyBJRSA3J3MgYmVoYXZpb3IgYW5kIHVzZSB0aGUgcGFkZGluZyBi
b3ggaGVpZ2h0CisvLyBmb3IgZGV0ZXJtaW5pbmcgaWYgdGhlIGNsaWNrIGJlbG93IGEgZGl2IChp
biB0aGUgcGFkZGluZy9tYXJnaW4gcmVnaW9uKQorY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKDEw
LCA3MCwgc2Vjb25kVGV4dCwgMCk7CitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNDAsIDcwLCBz
ZWNvbmRUZXh0LCAxKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSg3MCwgNzAsIHNlY29uZFRl
eHQsIDIpOworCitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoMTAsIDExMCwgc2Vjb25kVGV4dCwg
MCk7CitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNDAsIDExMCwgc2Vjb25kVGV4dCwgMSk7Citj
bGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNzAsIDExMCwgc2Vjb25kVGV4dCwgMik7CisKKy8vIENs
ZWFuIHVwIGFmdGVyIG91cnNlbHZlcyBpZiB3ZSdyZSBub3QgYmVpbmcgcnVuIGluIHRoZSBicm93
c2VyCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVD
aGlsZChkaXYpOworfSBlbHNlIHsKKyAgICBydW5JbnRlcmFjdGl2ZVRlc3RzKCk7Cit9CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LmpzIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLW91dHNpZGUtZWRp
dGFibGUtZGl2LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1NWJlNTcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJj
ZXMvY2xpY2stb3V0c2lkZS1lZGl0YWJsZS1kaXYuanMKQEAgLTAsMCArMSw1NSBAQAorZGVzY3Jp
cHRpb24oIkVuc3VyZSB0aGF0IGNsaWNraW5nIGluIHRoZSBtYXJnaW5zIGFyb3VuZCBlZGl0YWJs
ZSBkaXZzIGRvZXMgbm90IGdyYW50IGZvY3VzLiIpCisKK2RvY3VtZW50LmJvZHkuc3R5bGUubWFy
Z2luID0gIjIwcHgiOworCit2YXIgb3V0ZXJEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKK291dGVyRGl2LnN0eWxlLmNzc1RleHQgPSAid2lkdGg6IDEwMHB4OyBwYWRkaW5nOiAx
MDBweDsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsiOwordmFyIGlubmVyRGl2ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Citpbm5lckRpdi5zdHlsZS5jc3NUZXh0ID0gImhlaWdodDog
MTAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIHBpbms7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI7
Citpbm5lckRpdi5jb250ZW50RWRpdGFibGUgPSB0cnVlOworb3V0ZXJEaXYuYXBwZW5kQ2hpbGQo
aW5uZXJEaXYpOworZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUob3V0ZXJEaXYsIGRvY3VtZW50
LmJvZHkuZmlyc3RDaGlsZCk7CisKK3ZhciBsYXN0Q2xpY2tDYXVzZWRGb2N1cyA9IGZhbHNlOwor
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBmdW5j
dGlvbihlKSB7CisgICAgdmFyIGxhc3RDbGljayA9IGUgfHwgd2luZG93LmV2ZW50OworICAgIGlm
IChsYXN0Q2xpY2tDYXVzZWRGb2N1cykgeworICAgICAgICB0ZXN0RmFpbGVkKCJDbGljayBAICIg
KyBsYXN0Q2xpY2suY2xpZW50WCArICIsICIgKyBsYXN0Q2xpY2suY2xpZW50WSArICIgY2F1c2Vk
IGlubmVyZGl2IHRvIGZvY3VzISIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RQYXNzZWQo
IkNsaWNrIEAgIiArIGxhc3RDbGljay5jbGllbnRYICsgIiwgIiArIGxhc3RDbGljay5jbGllbnRZ
ICsgIiBkaWQgbm90IGNhdXNlIGZvY3VzLiIpOworICAgIH0KKyAgICBpbm5lckRpdi5ibHVyKCk7
CisgICAgbGFzdENsaWNrQ2F1c2VkRm9jdXMgPSBmYWxzZTsKK30sIGZhbHNlKTsKKworaW5uZXJE
aXYuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCBmdW5jdGlvbigpIHsKKyAgICBsYXN0Q2xpY2tD
YXVzZWRGb2N1cyA9IHRydWU7Cit9LCBmYWxzZSk7CisKK2Z1bmN0aW9uIGNsaWNrQXQoeCwgeSkg
eworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgIGNsaWNrQXQoMTAsIDEwKTsKKyAgICBjbGlja0F0KDE3MCwgMTAp
OworICAgIGNsaWNrQXQoMTAsIDE3MCk7CisgICAgCisgICAgY2xpY2tBdCg3MCwgNzApOworICAg
IGNsaWNrQXQoMTcwLCA3MCk7CisgICAgY2xpY2tBdCgyNzAsIDcwKTsKKworICAgIGNsaWNrQXQo
NzAsIDE3MCk7CisgICAgY2xpY2tBdCgyNzAsIDE3MCk7CisKKyAgICBjbGlja0F0KDcwLCAyNzAp
OworICAgIGNsaWNrQXQoMTcwLCAyNzApOworICAgIGNsaWNrQXQoMjcwLCAyNzApOworfSBlbHNl
IHsKKyAgICBkZWJ1ZygiVG8gdGVzdCwgY2ljayBhYm92ZSBhbmQgdG8gdGhlIGxlZnQgb2YgdGhl
IGJsdWUgYm94LCB0aGVuIGFib3ZlIGl0LCB0aGVuIHRvIHRoZSBsZWZ0ICIgKworICAgICAgICAg
ICJvZiBpdCBhbmQgZmluYWxseSwgY2xpY2sgaW4gYWxsIDggcmVnaW9ucyBhcm91bmQgdGhlIGdy
ZWVuIGRpdi4iKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtbWlzc2luZy1pbWFnZS5o
dG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LW1pc3NpbmctaW1hZ2Uu
aHRtbAppbmRleCBiNzM3NmRhLi41MDQ2MGVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9zZWxlY3QtbWlzc2luZy1pbWFnZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1taXNzaW5nLWltYWdlLmh0bWwKQEAgLTIxLDcgKzIx
LDcgQEAgZnVuY3Rpb24gZWRpdGluZ1Rlc3QoKSB7CiA8dGl0bGU+RWRpdGluZyBUZXN0PC90aXRs
ZT4gCiA8L2hlYWQ+IAogPGJvZHk+Ci08ZGl2IGNvbnRlbnRlZGl0YWJsZSBpZD0icm9vdCIgY2xh
c3M9ImVkaXRpbmciPgorPGRpdiBjb250ZW50ZWRpdGFibGUgaWQ9InRlc3QiIGNsYXNzPSJlZGl0
aW5nIj4KIDxpbWcgdGl0bGU9IlNob3VsZCBzZWUgc2VsZWN0aW9uIHRpbnQgb3ZlciB0aGlzIG1p
c3NpbmcgaW1hZ2UuIiBzcmM9Ii4uL25vbmVTdWNoLmpwZyIgaGVpZ2h0PSIxMDAiIHdpZHRoPSI1
NTAiPiAKIDwvZGl2PgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRp
dGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQuY2hl
Y2tzdW0gYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVu
dGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQuY2hlY2tzdW0KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGM1OTE3ZjEuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4
cGVjdGVkLmNoZWNrc3VtCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotMTY1MmZkODFiNmM4
N2I5ODhhMDAzMzE4Zjk4MTkzNzgKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVk
aXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRjNmZiMC4uMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVk
aXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTYg
KzAsMCBAQAotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToo
bnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBh
ZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxT
RQotRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBm
cm9tIDAgb2YgRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYg
PiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAotRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCi1FRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb25Ob3RpZmljYXRpb24KLWxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5k
ZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
Ci0gIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgICBSZW5kZXJC
b2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKLSAgICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDApIHNpemUgNDI1eDc1IFtiZ2NvbG9yPSNGRkZGMDBdCi0gICAgICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgyNSwyNSkgc2l6ZSAxMDB4MjAgW2JnY29sb3I9I0ZGRkZGRl0KLSAgICAg
IFJlbmRlckJsb2NrIHtQfSBhdCAoMCw5MSkgc2l6ZSA3ODR4MzYKLSAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzU5eDM2Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggNzU5OiAiVGhpcyB0ZXN0IGNsaWNrcyBvdXRzaWRlIGFuIGVkaXRhYmxlIGRpdiBl
bGVtZW50LCBhbmQgbXVzdCBub3QgcmVzdWx0IGluIHRoZSBlbGVtZW50IHJlY2VpdmluZyBmb2N1
cy4gSWYgdGhlIHRlc3Qgc3VjY2VlZHMgdGhlIgotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4
KSB3aWR0aCAyMzU6ICJlbGVtZW50IHNob3VsZCBub3QgaGF2ZSBhIGZvY3VzIHJpbmcuIgotY2Fy
ZXQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7RElWfSBvZiBjaGlsZCAwIHtESVZ9IG9mIGNoaWxk
IDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFsbC1pZnJhbWUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9u
L3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVjdGVkLnR4dAppbmRleCA4NDJjMmEzLi5iNDA1ZGViIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2Vs
ZWN0LWFsbC1pZnJhbWUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTEs
OSArMSw5IEBACiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHNo
b3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDQgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKIEVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNh
dGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5n
ZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2YgI3RleHQg
PiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3Ry
ZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VT
ZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0byAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFu
Z2UgZnJvbSA1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBv
ZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0
aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25O
b3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFu
Z2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5n
ZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
byAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5T
U2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5H
IERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAj
dGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4
dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25z
dHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJ
VElORyBERUxFR0FURTogc2hvdWxkRGVsZXRlRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWZy
b20tdGV4dGZpZWxkLW91dHdhcmRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtZnJvbS10ZXh0ZmllbGQtb3V0d2FyZHMtZXhw
ZWN0ZWQudHh0CmluZGV4IDE4YzM3YTYuLmIwNjQ3NDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtZnJvbS10ZXh0ZmllbGQtb3V0
d2FyZHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L3NlbGVjdGlvbi9zZWxlY3QtZnJvbS10ZXh0ZmllbGQtb3V0d2FyZHMtZXhwZWN0ZWQudHh0CkBA
IC04LDEwICs4LDEwIEBAIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9N
UmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWIHRvIDEyCiBFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3Rp
ZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6
cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViB0byAxNyBvZiAjdGV4dCA+IERJViB0b0RPTVJh
bmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViB0byAxMiBvZiAjdGV4dCA+IERJViBhZmZp
bml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQog
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VT
ZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViB0byAxMiBvZiAjdGV4
dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViB0byAxMiBvZiAj
dGV4dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNl
bGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01S
YW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgdG8gMTIgb2YgI3RleHQgPiBESVYgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0ID4gRElWIHRvIDE3IG9mICN0ZXh0ID4gRElW
IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZB
TFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViB0byAxNyBv
ZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2YgI3RleHQgPiBESVYgdG8g
MTcgb2YgI3RleHQgPiBESVYgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0g
c3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVj
dGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViB0byAxNyBvZiAjdGV4dCA+
IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2YgI3RleHQgPiBESVYgdG8gMTcgb2YgI3Rl
eHQgPiBESVYgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxl
Y3Rpbmc6RkFMU0UKIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICBSZW5kZXJWaWV3IGF0
ICgwLDApIHNpemUgODAweDYwMAogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LW1p
c3NpbmctaW1hZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvc2VsZWN0aW9uL3NlbGVjdC1taXNzaW5nLWltYWdlLWV4cGVjdGVkLnR4dAppbmRleCA5MDc0
YzI2Li43YjlkZThkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGlu
Zy9zZWxlY3Rpb24vc2VsZWN0LW1pc3NpbmctaW1hZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtbWlzc2luZy1pbWFn
ZS1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw4IEBACi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRD
aGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAyIG9mIERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2Vs
ZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJh
bmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9m
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KIEVESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZy
b20gMSBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAyIG9mIERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFt
IHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIGxheWVyIGF0
ICgwLDApIHNpemUgODAweDYwMAogICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAog
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9j
b250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGIzMWZhMjcuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDk6IFR5cGVFcnJvcjogVmFsdWUgdW5kZWZpbmVkIChyZXN1bHQgb2YgZXhwcmVzc2lv
biBldmVudFNlbmRlci5tb3ZlVG8pIGlzIG5vdCBvYmplY3QuCi1sYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKLSAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLWxheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAotICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCi0gICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc4Ci0gICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDQyNXg3NSBbYmdjb2xvcj0jRkZGRjAwXQot
ICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMjUsMjUpIHNpemUgMTAweDIwIFtiZ2NvbG9y
PSNGRkZGRkZdCi0gICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsODkpIHNpemUgNzg0eDM4Ci0g
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc3MXgzOAotICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc3MTogIlRoaXMgdGVzdCBjbGlja3Mgb3V0c2lkZSBh
biBlZGl0YWJsZSBkaXYgZWxlbWVudCwgYW5kIG11c3Qgbm90IHJlc3VsdCBpbiB0aGUgZWxlbWVu
dCByZWNlaXZpbmcgZm9jdXMuIElmIHRoZSB0ZXN0IHN1Y2NlZWRzIHRoZSIKLSAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwxOSkgd2lkdGggMjM4OiAiZWxlbWVudCBzaG91bGQgbm90IGhhdmUgYSBm
b2N1cyByaW5nLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcv
c2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEyMjMxYy4uMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFt
ZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1FRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9N
UmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDQgb2YgQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVk
aXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FU
RTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZB
TFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0
aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNo
b3VsZERlbGV0ZURPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxk
Q2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2Yg
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNl
bGVjdGluZzpGQUxTRQotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KLWxheWVyIGF0
ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAot
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCww
KSBzaXplIDgwMHg2MDAKLSAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1
NzgKLSAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgNzg0eDE3Mwot
ICAgICAgICBSZW5kZXJQYXJ0T2JqZWN0IHtJRlJBTUV9IGF0ICgwLDApIHNpemUgMzA0eDE1NCBb
Ym9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQotICAgICAgICAgIGxheWVyIGF0ICgwLDApIHNp
emUgMzAweDE1MAotICAgICAgICAgICAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDMwMHgxNTAK
LSAgICAgICAgICBsYXllciBhdCAoMCwwKSBzaXplIDMwMHgxNTAKLSAgICAgICAgICAgIFJlbmRl
ckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDMwMHgxNTAKLSAgICAgICAgICAgICAgUmVuZGVy
Qm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSAyODR4MTM0IFtiZ2NvbG9yPSNGRkZGRTBdCi0gICAg
ICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSAyODR4MTkKLSAgICAg
ICAgICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDE5Ci0gICAgICAgIFJl
bmRlckJSIHtCUn0gYXQgKDMwNCwxNTQpIHNpemUgMHgwCi0gICAgICAgIFJlbmRlckJSIHtCUn0g
YXQgKDAsMTU0KSBzaXplIDB4MTkKLSAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwxODcpIHNp
emUgNzg0eDM5Ci0gICAgICAgIFJlbmRlcklubGluZSB7Qn0gYXQgKDAsMCkgc2l6ZSA2ODN4MjAK
LSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA2ODN4MjAKLSAgICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDUxNDogIlRoaXMgdGVzdCB1c2VzIHRoZSBl
dmVudFNlbmRlciB0byBkbyBhIG1vdXNlIGNsaWNrIHRvIGZvY3VzIHRoZSBzdWJmcmFtZS4gIgot
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDUxNCwwKSB3aWR0aCAxNjk6ICJJdCB3b24ndCBydW4g
aW50ZXJhY3RpdmVseS4iCi0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNjgzLDApIHNp
emUgNzQweDM5Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDY4MywwKSB3aWR0aCA0OiAiICIKLSAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoNjg3LDApIHdpZHRoIDUzOiAiVG8gcnVuIGl0IgotICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDIwKSB3aWR0aCAzNDg6ICJtYW51YWxseSwgY2xpY2sgb24gdGhl
IGlmcmFtZSwgU2VsZWN0IEFsbCwgdGhlbiBoaXQgZGVsZXRlLiIKLSAgICAgIFJlbmRlckJsb2Nr
IChhbm9ueW1vdXMpIGF0ICgwLDI0MCkgc2l6ZSA3ODR4NTcKLSAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgNzc2eDU3Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggNzc2OiAiU2VsZWN0aW5nIGFsbCB0aGUgY29udGVudCBpbiBhIGNvbnRlbnRlZGl0YWJs
ZSBpZnJhbWUgc2hvdWxkIHNlbGVjdCB0aGUgaWZyYW1lIGl0c2VsZiAodG8gaGVscCB0aGUgdXNl
ciBkZWxldGUgdGhlIGlmcmFtZSkgb25seSBpZiIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
OSkgd2lkdGggMjE5OiAidGhlIGlmcmFtZSBpcyBpbiBhbiBlZGl0YWJsZSByZWdpb24uICIKLSAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMjE5LDE5KSB3aWR0aCA0MzA6ICJUaGlzIHRlc3QgbG9hZHMg
Li4vcmVzb3VyY2VzL3NlbGVjdC1hbGwtaWZyYW1lLXNyYy5odG1sIGludG8gYW4gaWZyYW1lLiAi
Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDY0OSwxOSkgd2lkdGggOTg6ICJUaGF0IGZpbGUgZG9l
cyBhIgotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDM4KSB3aWR0aCAxMjM6ICJTZWxlY3QgQWxs
ICsgRGVsZXRlLiAiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDEyMywzOCkgd2lkdGggMTcxOiAi
VHdvIHRoaW5ncyBzaG91bGQgaGFwcGVuOiIKLSAgICAgIFJlbmRlckJsb2NrIHtVTH0gYXQgKDAs
MzExKSBzaXplIDc4NHg1NwotICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwwKSBz
aXplIDc0NHgzOAotICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKC0xNywwKSBzaXplIDd4
MTk6IGJ1bGxldAotICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDcy
OHgzOAotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDUxOiAiVGhlIFNlbGVj
dCBBbGwgb3BlcmF0aW9uIHNob3VsZCBub3Qgc2VsZWN0IHRoZSBpZnJhbWUsIG9ubHkgaXQncyBj
b250ZW50cy4gIgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDQ1MSwwKSB3aWR0aCAyNzc6ICJU
aGUgcmVzdWx0cyBvZiB0aGUgU2VsZWN0IEFsbCB3aWxsIGJlIGFwcGFyZW50IgotICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMTkpIHdpZHRoIDQ2NDogImZyb20gdGhlIGRlbGVnYXRlIG1lc3Nh
Z2VzIHRoYXQgRHVtcFJlbmRlclRyZWUgcmVjZWl2ZXMgYW5kIGR1bXBzLiIKLSAgICAgICAgUmVu
ZGVyTGlzdEl0ZW0ge0xJfSBhdCAoNDAsMzgpIHNpemUgNzQ0eDE5Ci0gICAgICAgICAgUmVuZGVy
TGlzdE1hcmtlciBhdCAoLTE3LDApIHNpemUgN3gxOTogYnVsbGV0Ci0gICAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzQyeDE5Ci0gICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCAzNDI6ICJUaGUgY29udGVudHMgb2YgdGhlIGVkaXRhYmxlIGlmcmFtZSBz
aG91bGQgYmUgZGVsZXRlZC4iCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGRhYjBmNWIuLmE4NDE4MWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMDkt
MDItMDUgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4gYW5kIEVyaWMgU2VpZGVsIDxl
cmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFrZSBjdXJzb3IgcG9zaXRpb25zIG1hdGNoIElFNi9JRTcvRkYzIHdoZW4gY2xp
Y2tpbmcgaW4gbWFyZ2lucy9wYWRkaW5nCisgICAgICAgIGFyb3VuZCBkaXZzIGluc2lkZSBlZGl0
YWJsZSByZWdpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM2MDUKKworICAgICAgICBGaXggY2xpY2tzIG91dHNpZGUgZWRpdGFibGUgcmVnaW9u
cyBmcm9tIGZvY3VzaW5nIHRoZSBlZGl0YWJsZSByZWdpb24uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwNworCisgICAgICAgIFJlbW92ZWQgZWRp
dGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUuaHRtbCBhcyBpdCdz
CisgICAgICAgIG5vdCBhcyB1c2VmdWwgYXMgb3VyIG5ldyB0ZXN0cy4KKworICAgICAgICBDbGVh
biB1cCBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JDb29yZGluYXRlcyB0byByZW1vdmUgZGVhZCBj
b2RlLAorICAgICAgICBkdXBsaWNhdGUgY29kZSwgYW5kIGdlbmVyYWxseSBtYWtlIGl0IG1vcmUg
cmVhZGFibGUuCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLW1h
cmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3Nl
bGVjdGlvbi9jbGljay1vdXRzaWRlLWVkaXRhYmxlLWRpdi5odG1sCisKKyAgICAgICAgKiBlZGl0
aW5nL1Zpc2libGVQb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRp
b246OmNhbm9uaWNhbFBvc2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9zaXRpb25Gb3JQb2ludFJlc3BlY3RpbmdFZGl0aW5n
Qm91bmRhcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpwb3NpdGlvbkZvclBvaW50V2l0aElubGlu
ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwb3NpdGlvbkZvckNv
b3JkaW5hdGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6cG9zaXRpb25Gb3JDb29yZGluYXRlcyk6CisKIDIw
MDktMDItMDQgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIENvbnZl
cnQgUmVuZGVyTGF5ZXIgZnJvbSBoYXZpbmcgYSBSZW5kZXJCb3gqIG1fcmVuZGVyZXIgdG8gaGF2
aW5nIGEgUmVuZGVyQm94TW9kZWxPYmplY3QqLiAgVGhlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRp
b24uY3BwCmluZGV4IDNkNzcxYzYuLjU1OGE0NWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlUG9zaXRpb24uY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRp
b24uY3BwCkBAIC00NzgsNyArNDc4LDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpjYW5v
bmljYWxQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiAKICAgICAvLyBUaGUgbmV3
IHBvc2l0aW9uIG11c3QgYmUgaW4gdGhlIHNhbWUgZWRpdGFibGUgZWxlbWVudC4gRW5mb3JjZSB0
aGF0IGZpcnN0LgogICAgIC8vIFVubGVzcyB0aGUgZGVzY2VudCBpcyBmcm9tIGEgbm9uLWVkaXRh
YmxlIGh0bWwgZWxlbWVudCB0byBhbiBlZGl0YWJsZSBib2R5LgotICAgIGlmIChub2RlLT5oYXNU
YWdOYW1lKGh0bWxUYWcpICYmICFub2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAgIGlmIChu
b2RlLT5oYXNUYWdOYW1lKGh0bWxUYWcpICYmICFub2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpICYm
IG5vZGUtPm93bmVyRG9jdW1lbnQoKS0+Ym9keSgpLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQogICAg
ICAgICByZXR1cm4gbmV4dC5pc05vdE51bGwoKSA/IG5leHQgOiBwcmV2OwogCiAgICAgTm9kZSog
ZWRpdGluZ1Jvb3QgPSBlZGl0YWJsZVJvb3RGb3JQb3NpdGlvbihwb3NpdGlvbik7CkBAIC00OTIs
MTAgKzQ5MiwxMCBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmNhbm9uaWNhbFBvc2l0aW9u
KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKICAgICBib29sIG5leHRJc0luU2FtZUVkaXRhYmxl
RWxlbWVudCA9IG5leHROb2RlICYmIGVkaXRhYmxlUm9vdEZvclBvc2l0aW9uKG5leHQpID09IGVk
aXRpbmdSb290OwogICAgIGlmIChwcmV2SXNJblNhbWVFZGl0YWJsZUVsZW1lbnQgJiYgIW5leHRJ
c0luU2FtZUVkaXRhYmxlRWxlbWVudCkKICAgICAgICAgcmV0dXJuIHByZXY7Ci0gICAgICAgIAor
CiAgICAgaWYgKG5leHRJc0luU2FtZUVkaXRhYmxlRWxlbWVudCAmJiAhcHJldklzSW5TYW1lRWRp
dGFibGVFbGVtZW50KQogICAgICAgICByZXR1cm4gbmV4dDsKLSAgICAgICAgCisKICAgICBpZiAo
IW5leHRJc0luU2FtZUVkaXRhYmxlRWxlbWVudCAmJiAhcHJldklzSW5TYW1lRWRpdGFibGVFbGVt
ZW50KQogICAgICAgICByZXR1cm4gUG9zaXRpb24oKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCmluZGV4IDM1YzRmYzIuLmY1ODVhMGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
QEAgLTMzODUsMTE4ICszMzg1LDEwNiBAQCBQb3NpdGlvbiBSZW5kZXJCbG9jazo6cG9zaXRpb25G
b3JSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBib29sIHN0YXJ0KSBjbwogICAgIHJl
dHVybiBQb3NpdGlvbihub2RlLCBvZmZzZXQpOwogfQogCisvLyBGSVhNRTogVGhpcyBmdW5jdGlv
biBzaG91bGQgY291bGQgZ28gb24gUmVuZGVyT2JqZWN0IGFuIGluc3RhbmNlIG1ldGhvZCB0aGVu
CisvLyBhbGwgY2FzZXMgaW4gd2hpY2ggcG9zaXRpb25Gb3JDb29yZGluYXRlcyByZWN1cnNlcyBj
b3VsZCBjYWxsIHRoaXMgaW5zdGVhZCB0bworLy8gcHJldmVudCBjcm9zc2luZyBlZGl0YWJsZSBi
b3VuZGFyaWVzLiAgVGhpcyB3b3VsZCByZXF1aXJlIG1hbnkgdGVzdHMhCitzdGF0aWMgVmlzaWJs
ZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnRSZXNwZWN0aW5nRWRpdGluZ0JvdW5kYXJpZXMoUmVu
ZGVyQm94KiBwYXJlbnQsIFJlbmRlckJveCogY2hpbGQsIGNvbnN0IEludFBvaW50JiBwYXJlbnRD
b29yZHMpCit7CisgICAgaW50IHhJbkNoaWxkQ29vcmRzID0gcGFyZW50Q29vcmRzLngoKSAtIGNo
aWxkLT54KCk7CisgICAgaW50IHlJbkNoaWxkQ29vcmRzID0gcGFyZW50Q29vcmRzLnkoKSAtIGNo
aWxkLT55KCk7CisKKyAgICAvLyBJZiB0aGlzIGlzIGFuIGFub255bW91cyByZW5kZXJlciwgd2Ug
anVzdCByZWN1cnNlIG5vcm1hbGx5CisgICAgTm9kZSogY2hpbGROb2RlID0gY2hpbGQtPmVsZW1l
bnQoKTsKKyAgICBpZiAoIWNoaWxkTm9kZSkKKyAgICAgICAgcmV0dXJuIGNoaWxkLT5wb3NpdGlv
bkZvckNvb3JkaW5hdGVzKHhJbkNoaWxkQ29vcmRzLCB5SW5DaGlsZENvb3Jkcyk7CisKKyAgICAv
LyBPdGhlcndpc2UsIGZpcnN0IG1ha2Ugc3VyZSB0aGF0IHRoZSBlZGl0YWJpbGl0eSBvZiB0aGUg
cGFyZW50IGFuZCBjaGlsZCBhZ3JlZSEKKyAgICAvLyBJZiB0aGV5IGRvbid0IGFncmVlLCB0aGVu
IHdlIHJldHVybiBhIHZpc2libGUgcG9zaXRpb24ganVzdCBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGNo
aWxkCisgICAgUmVuZGVyT2JqZWN0KiBhbmNlc3RvciA9IHBhcmVudDsKKyAgICB3aGlsZSAoYW5j
ZXN0b3IgJiYgIWFuY2VzdG9yLT5lbGVtZW50KCkpCisgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0
b3ItPnBhcmVudCgpOworICAgIAorICAgIC8vIElmIHdlIGNhbid0IGZpbmQgYW4gYW5jZXN0b3Ig
dG8gY2hlY2sgZWRpdGFiaWxpdHkgb24sIG9yIGVkaXRpYmlsaXR5IGlzIHVuY2hhbmdlZCwgd2Ug
cmVjdXJzZSBsaWtlIG5vcm1hbAorICAgIGlmICghYW5jZXN0b3IgfHwgYW5jZXN0b3ItPmVsZW1l
bnQoKS0+aXNDb250ZW50RWRpdGFibGUoKSA9PSBjaGlsZE5vZGUtPmlzQ29udGVudEVkaXRhYmxl
KCkpCisgICAgICAgIHJldHVybiBjaGlsZC0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyh4SW5DaGls
ZENvb3JkcywgeUluQ2hpbGRDb29yZHMpOworCisgICAgLy8gT3RoZXJ3aXNlIHJldHVybiBiZWZv
cmUgb3IgYWZ0ZXIgdGhlIGNoaWxkLCBkZXBlbmRpbmcgb24gaWYgdGhlIGNsaWNrIHdhcyBsZWZ0
IG9yIHJpZ2h0IG9mIHRoZSBjaGlsZAorICAgIGludCBjaGlsZE1pZFggPSBjaGlsZC0+d2lkdGgo
KSAvIDI7CisgICAgaWYgKHhJbkNoaWxkQ29vcmRzIDwgY2hpbGRNaWRYKQorICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKGFuY2VzdG9yLT5lbGVtZW50KCksIGNoaWxkTm9kZS0+bm9kZUlu
ZGV4KCksIERPV05TVFJFQU0pOworICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oYW5jZXN0b3It
PmVsZW1lbnQoKSwgY2hpbGROb2RlLT5ub2RlSW5kZXgoKSArIDEsIFVQU1RSRUFNKTsKK30KKwor
VmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oUmVuZGVy
QmxvY2sqIGJsb2NrLCBjb25zdCBJbnRQb2ludCYgcG9pbnRJbkNvbnRlbnRzLCBpbnQgeEluUGFy
ZW50Q29vcmRzKQoreworICAgIEFTU0VSVChibG9jay0+Y2hpbGRyZW5JbmxpbmUoKSk7CisKKyAg
ICBpZiAoIWJsb2NrLT5maXJzdFJvb3RCb3goKSkKKyAgICAgICAgcmV0dXJuIFZpc2libGVQb3Np
dGlvbihibG9jay0+ZWxlbWVudCgpLCAwLCBET1dOU1RSRUFNKTsKKworICAgIC8vIGxvb2sgZm9y
IHRoZSBjbG9zZXN0IGxpbmUgYm94IGluIHRoZSByb290IGJveCB3aGljaCBpcyBhdCB0aGUgcGFz
c2VkLWluIHkgY29vcmRpbmF0ZQorICAgIGZvciAoUm9vdElubGluZUJveCogcm9vdCA9IGJsb2Nr
LT5maXJzdFJvb3RCb3goKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm5leHRSb290Qm94KCkpIHsKKyAg
ICAgICAgaW50IGJvdHRvbTsKKyAgICAgICAgLy8gc2V0IHRoZSBib3R0b20gYmFzZWQgb24gd2hl
dGhlciB0aGVyZSBpcyBhIG5leHQgcm9vdCBib3gKKyAgICAgICAgaWYgKHJvb3QtPm5leHRSb290
Qm94KCkpCisgICAgICAgICAgICAvLyBGSVhNRTogbWFrZSB0aGUgYnJlYWsgcG9pbnQgaGFsZndh
eSBiZXR3ZWVuIHRoZSBib3R0b20gb2YgdGhlIHByZXZpb3VzIHJvb3QgYm94IGFuZCB0aGUgdG9w
IG9mIHRoZSBuZXh0IHJvb3QgYm94CisgICAgICAgICAgICBib3R0b20gPSByb290LT5uZXh0Um9v
dEJveCgpLT50b3BPdmVyZmxvdygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBib3R0b20g
PSByb290LT5ib3R0b21PdmVyZmxvdygpICsgdmVydGljYWxMaW5lQ2xpY2tGdWRnZUZhY3RvcjsK
KyAgICAgICAgLy8gY2hlY2sgaWYgdGhpcyByb290IGxpbmUgYm94IGlzIGxvY2F0ZWQgYXQgdGhp
cyB5IGNvb3JkaW5hdGUKKyAgICAgICAgaWYgKHBvaW50SW5Db250ZW50cy55KCkgPCBib3R0b20g
JiYgcm9vdC0+Zmlyc3RDaGlsZCgpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogSXQgc2VlbXMg
bGlrZSBhIGJ1ZyB0aGF0IHRoaXMgZnVuY3Rpb24gbmVlZHMgeEluUGFyZW50Q29vcmRzCisgICAg
ICAgICAgICBJbmxpbmVCb3gqIGNsb3Nlc3RCb3ggPSByb290LT5jbG9zZXN0TGVhZkNoaWxkRm9y
WFBvcyh4SW5QYXJlbnRDb29yZHMpOworICAgICAgICAgICAgaWYgKGNsb3Nlc3RCb3gpCisgICAg
ICAgICAgICAgICAgLy8gcGFzcyB0aGUgYm94IGEgeSBwb3NpdGlvbiB0aGF0IGlzIGluc2lkZSBp
dAorICAgICAgICAgICAgICAgIHJldHVybiBjbG9zZXN0Qm94LT5vYmplY3QoKS0+cG9zaXRpb25G
b3JDb29yZGluYXRlcyhwb2ludEluQ29udGVudHMueCgpLCBjbG9zZXN0Qm94LT5tX3kpOworICAg
ICAgICB9CisgICAgfQorCisgICAgLy8geSBjb29yZGluYXRlIGlzIGJlbG93IGxhc3Qgcm9vdCBs
aW5lIGJveCwgcHJldGVuZCB3ZSBoaXQgaXQKKyAgICBJbmxpbmVCb3gqIGxhc3RSb290TGluZUJv
eCA9IGJsb2NrLT5sYXN0Um9vdEJveCgpOworICAgIHJldHVybiBsYXN0Um9vdExpbmVCb3gtPm9i
amVjdCgpLT5wb3NpdGlvbkZvckNvb3JkaW5hdGVzKHBvaW50SW5Db250ZW50cy54KCksIGxhc3RS
b290TGluZUJveC0+bV95KTsKK30KKwogVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJsb2NrOjpwb3Np
dGlvbkZvckNvb3JkaW5hdGVzKGludCB4LCBpbnQgeSkKIHsKICAgICBpZiAoaXNUYWJsZSgpKQog
ICAgICAgICByZXR1cm4gUmVuZGVyQm94Ojpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKHgsIHkpOyAK
IAotICAgIGludCB0b3AgPSBib3JkZXJUb3AoKTsKLSAgICBpbnQgYm90dG9tID0gdG9wICsgcGFk
ZGluZ1RvcCgpICsgY29udGVudEhlaWdodCgpICsgcGFkZGluZ0JvdHRvbSgpOwotCi0gICAgaW50
IGxlZnQgPSBib3JkZXJMZWZ0KCk7Ci0gICAgaW50IHJpZ2h0ID0gbGVmdCArIHBhZGRpbmdMZWZ0
KCkgKyBjb250ZW50V2lkdGgoKSArIHBhZGRpbmdSaWdodCgpOwotCi0gICAgTm9kZSogbiA9IGVs
ZW1lbnQoKTsKLSAgICAKICAgICBpbnQgY29udGVudHNYID0geDsKICAgICBpbnQgY29udGVudHNZ
ID0geTsKICAgICBvZmZzZXRGb3JDb250ZW50cyhjb250ZW50c1gsIGNvbnRlbnRzWSk7CisgICAg
SW50UG9pbnQgcG9pbnRJbkNvbnRlbnRzKGNvbnRlbnRzWCwgY29udGVudHNZKTsKIAogICAgIGlm
IChpc1JlcGxhY2VkKCkpIHsKICAgICAgICAgaWYgKHkgPCAwIHx8IHkgPCBoZWlnaHQoKSAmJiB4
IDwgMCkKLSAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obiwgY2FyZXRNaW5PZmZz
ZXQoKSwgRE9XTlNUUkVBTSk7CisgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGVs
ZW1lbnQoKSwgY2FyZXRNaW5PZmZzZXQoKSwgRE9XTlNUUkVBTSk7CiAgICAgICAgIGlmICh5ID49
IGhlaWdodCgpIHx8IHkgPj0gMCAmJiB4ID49IHdpZHRoKCkpCi0gICAgICAgICAgICByZXR1cm4g
VmlzaWJsZVBvc2l0aW9uKG4sIGNhcmV0TWF4T2Zmc2V0KCksIERPV05TVFJFQU0pOworICAgICAg
ICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihlbGVtZW50KCksIGNhcmV0TWF4T2Zmc2V0KCks
IERPV05TVFJFQU0pOwogICAgIH0gCiAKLSAgICAvLyBJZiB3ZSBzdGFydCBpbnNpZGUgdGhlIHNo
YWRvdyB0cmVlLCB3ZSB3aWxsIHN0YXkgaW5zaWRlIChldmVuIGlmIHRoZSBwb2ludCBpcyBhYm92
ZSBvciBiZWxvdykuCi0gICAgaWYgKCEobiAmJiBuLT5pc1NoYWRvd05vZGUoKSkgJiYgIWNoaWxk
cmVuSW5saW5lKCkpIHsKLSAgICAgICAgLy8gRG9uJ3QgcmV0dXJuIHBvc2l0aW9ucyBpbnNpZGUg
ZWRpdGFibGUgcm9vdHMgZm9yIGNvb3JkaW5hdGVzIG91dHNpZGUgdGhvc2Ugcm9vdHMsIGV4Y2Vw
dCBmb3IgY29vcmRpbmF0ZXMgb3V0c2lkZQotICAgICAgICAvLyBhIGRvY3VtZW50IHRoYXQgaXMg
ZW50aXJlbHkgZWRpdGFibGUuCi0gICAgICAgIGJvb2wgaXNFZGl0YWJsZVJvb3QgPSBuICYmIG4t
PnJvb3RFZGl0YWJsZUVsZW1lbnQoKSA9PSBuICYmICFuLT5oYXNUYWdOYW1lKGJvZHlUYWcpICYm
ICFuLT5oYXNUYWdOYW1lKGh0bWxUYWcpOwotCi0gICAgICAgIGlmICh5IDwgdG9wIHx8IChpc0Vk
aXRhYmxlUm9vdCAmJiAoeSA8IGJvdHRvbSAmJiB4IDwgbGVmdCkpKSB7Ci0gICAgICAgICAgICBp
ZiAoIWlzRWRpdGFibGVSb290KQotICAgICAgICAgICAgICAgIGlmIChSZW5kZXJCb3gqIGMgPSBm
aXJzdENoaWxkQm94KCkpIHsgLy8gRklYTUU6IFRoaXMgY29kZSBkb2Vzbid0IG1ha2UgYW55IHNl
bnNlLiAgVGhpcyBjaGlsZCBjb3VsZCBiZSBhbiBpbmxpbmUgb3IgYSBwb3NpdGlvbmVkIGVsZW1l
bnQgb3IgYSBmbG9hdCwgZXRjLgotICAgICAgICAgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24g
cCA9IGMtPnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoY29udGVudHNYIC0gYy0+eCgpLCBjb250ZW50
c1kgLSBjLT55KCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAocC5pc05vdE51bGwoKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmIChuKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE5vZGUqIHNwID0gbi0+c2hhZG93
UGFyZW50Tm9kZSgpKQotICAgICAgICAgICAgICAgICAgICBuID0gc3A7Ci0gICAgICAgICAgICAg
ICAgaWYgKE5vZGUqIHAgPSBuLT5wYXJlbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFZpc2libGVQb3NpdGlvbihwLCBuLT5ub2RlSW5kZXgoKSwgRE9XTlNUUkVBTSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG4sIDAsIERPV05TVFJF
QU0pOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHkgPj0gYm90dG9tIHx8IChpc0VkaXRhYmxl
Um9vdCAmJiAoeSA+PSB0b3AgJiYgeCA+PSByaWdodCkpKSB7Ci0gICAgICAgICAgICBpZiAoIWlz
RWRpdGFibGVSb290KQotICAgICAgICAgICAgICAgIGlmIChSZW5kZXJCb3gqIGMgPSBsYXN0Q2hp
bGRCb3goKSkgeyAvLyBGSVhNRTogVGhpcyBjb2RlIGRvZXNuJ3QgbWFrZSBhbnkgc2Vuc2UuICBU
aGlzIGNoaWxkIGNvdWxkIGJlIGFuIGlubGluZSBvciBhIHBvc2l0aW9uZWQgZWxlbWVudCBvciBh
IGZsb2F0LCBldGMuCi0gICAgICAgICAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwID0gYy0+
cG9zaXRpb25Gb3JDb29yZGluYXRlcyhjb250ZW50c1ggLSBjLT54KCksIGNvbnRlbnRzWSAtIGMt
PnkoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwLmlzTm90TnVsbCgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKG4pIHsKLSAgICAgICAgICAgICAgICBpZiAoTm9kZSogc3AgPSBuLT5zaGFkb3dQYXJlbnRO
b2RlKCkpCi0gICAgICAgICAgICAgICAgICAgIG4gPSBzcDsKLSAgICAgICAgICAgICAgICBpZiAo
Tm9kZSogcCA9IG4tPnBhcmVudCgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKHAsIG4tPm5vZGVJbmRleCgpICsgMSwgRE9XTlNUUkVBTSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG4sIDAsIERPV05TVFJFQU0p
OwotICAgICAgICB9Ci0gICAgfQotCiAgICAgaWYgKGNoaWxkcmVuSW5saW5lKCkpIHsKLSAgICAg
ICAgaWYgKCFmaXJzdFJvb3RCb3goKSkKLSAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRp
b24obiwgMCwgRE9XTlNUUkVBTSk7Ci0KLSAgICAgICAgaWYgKGNvbnRlbnRzWSA8IGZpcnN0Um9v
dEJveCgpLT50b3BPdmVyZmxvdygpIC0gdmVydGljYWxMaW5lQ2xpY2tGdWRnZUZhY3RvcikKLSAg
ICAgICAgICAgIC8vIHkgY29vcmRpbmF0ZSBpcyBhYm92ZSBmaXJzdCByb290IGxpbmUgYm94Ci0g
ICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uRm9yQm94KGZpcnN0Um9v
dEJveCgpLT5maXJzdExlYWZDaGlsZCgpLCB0cnVlKSwgRE9XTlNUUkVBTSk7Ci0gICAgICAgIAot
ICAgICAgICAvLyBsb29rIGZvciB0aGUgY2xvc2VzdCBsaW5lIGJveCBpbiB0aGUgcm9vdCBib3gg
d2hpY2ggaXMgYXQgdGhlIHBhc3NlZC1pbiB5IGNvb3JkaW5hdGUKLSAgICAgICAgZm9yIChSb290
SW5saW5lQm94KiByb290ID0gZmlyc3RSb290Qm94KCk7IHJvb3Q7IHJvb3QgPSByb290LT5uZXh0
Um9vdEJveCgpKSB7Ci0gICAgICAgICAgICAvLyBzZXQgdGhlIGJvdHRvbSBiYXNlZCBvbiB3aGV0
aGVyIHRoZXJlIGlzIGEgbmV4dCByb290IGJveAotICAgICAgICAgICAgaWYgKHJvb3QtPm5leHRS
b290Qm94KCkpCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IG1ha2UgdGhlIGJyZWFrIHBvaW50
IGhhbGZ3YXkgYmV0d2VlbiB0aGUgYm90dG9tIG9mIHRoZSBwcmV2aW91cyByb290IGJveCBhbmQg
dGhlIHRvcCBvZiB0aGUgbmV4dCByb290IGJveAotICAgICAgICAgICAgICAgIGJvdHRvbSA9IHJv
b3QtPm5leHRSb290Qm94KCktPnRvcE92ZXJmbG93KCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgYm90dG9tID0gcm9vdC0+Ym90dG9tT3ZlcmZsb3coKSArIHZlcnRpY2FsTGlu
ZUNsaWNrRnVkZ2VGYWN0b3I7Ci0gICAgICAgICAgICAvLyBjaGVjayBpZiB0aGlzIHJvb3QgbGlu
ZSBib3ggaXMgbG9jYXRlZCBhdCB0aGlzIHkgY29vcmRpbmF0ZQotICAgICAgICAgICAgaWYgKGNv
bnRlbnRzWSA8IGJvdHRvbSAmJiByb290LT5maXJzdENoaWxkKCkpIHsKLSAgICAgICAgICAgICAg
ICBJbmxpbmVCb3gqIGNsb3Nlc3RCb3ggPSByb290LT5jbG9zZXN0TGVhZkNoaWxkRm9yWFBvcyh4
KTsKLSAgICAgICAgICAgICAgICBpZiAoY2xvc2VzdEJveCkKLSAgICAgICAgICAgICAgICAgICAg
Ly8gcGFzcyB0aGUgYm94IGEgeSBwb3NpdGlvbiB0aGF0IGlzIGluc2lkZSBpdAotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gY2xvc2VzdEJveC0+b2JqZWN0KCktPnBvc2l0aW9uRm9yQ29vcmRp
bmF0ZXMoY29udGVudHNYLCBjbG9zZXN0Qm94LT5tX3kpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKGxhc3RSb290Qm94KCkpCi0gICAgICAgICAgICAvLyB5IGNvb3Jk
aW5hdGUgaXMgYmVsb3cgbGFzdCByb290IGxpbmUgYm94Ci0gICAgICAgICAgICByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKHBvc2l0aW9uRm9yQm94KGxhc3RSb290Qm94KCktPmxhc3RMZWFmQ2hpbGQo
KSwgZmFsc2UpLCBET1dOU1RSRUFNKTsKLQotICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
KG4sIDAsIERPV05TVFJFQU0pOworICAgICAgICAvLyBGSVhNRTogY2xvc2VzdExlYWZDaGlsZEZv
clhQb3Mgc2VlbXMgdG8gdXNlIHggaW5zZWFkIG9mIGNvbnRlbnRYLCB3aGljaCBzZWVtcyB3cm9u
ZyE/CisgICAgICAgIHJldHVybiBwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKHRo
aXMsIHBvaW50SW5Db250ZW50cywgeCk7CiAgICAgfQotICAgIAotICAgIC8vIFNlZSBpZiBhbnkg
Y2hpbGQgYmxvY2tzIGV4aXN0IGF0IHRoaXMgeSBjb29yZGluYXRlLgorCisgICAgLy8gQ2hlY2sg
dG9wL2JvdHRvbSBjaGlsZC1tYXJnaW4vcGFyZW50LXBhZGRpbmcgZm9yIGNsaWNrcyBhbmQgcGxh
Y2UgdGhlbSBpbiB0aGUgZmlyc3QvbGFzdCBjaGlsZAorICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwg
bm90IGNvcnJlY3RseSBoYW5kbGUgZmlyc3Qgb3IgbGFzdCBjaGlsZHJlbiBiZWluZyBwb3NpdGlv
bmVkIG9yIG5vbi12aXNpYmxlCiAgICAgaWYgKGZpcnN0Q2hpbGRCb3goKSAmJiBjb250ZW50c1kg
PCBmaXJzdENoaWxkQm94KCktPnkoKSkKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihu
LCAwLCBET1dOU1RSRUFNKTsKLSAgICBmb3IgKFJlbmRlckJveCogcmVuZGVyZXIgPSBmaXJzdENo
aWxkQm94KCk7IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5uZXh0U2libGluZ0JveCgp
KSB7Ci0gICAgICAgIGlmIChyZW5kZXJlci0+aGVpZ2h0KCkgPT0gMCB8fCByZW5kZXJlci0+c3R5
bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcmVuZGVyZXItPmlzRmxvYXRpbmdPclBv
c2l0aW9uZWQoKSkKKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uRm9yUG9pbnRSZXNwZWN0aW5nRWRp
dGluZ0JvdW5kYXJpZXModGhpcywgZmlyc3RDaGlsZEJveCgpLCBwb2ludEluQ29udGVudHMpOwor
ICAgIGlmIChsYXN0Q2hpbGRCb3goKSAmJiBjb250ZW50c1kgPiBsYXN0Q2hpbGRCb3goKS0+eSgp
KQorICAgICAgICByZXR1cm4gcG9zaXRpb25Gb3JQb2ludFJlc3BlY3RpbmdFZGl0aW5nQm91bmRh
cmllcyh0aGlzLCBsYXN0Q2hpbGRCb3goKSwgcG9pbnRJbkNvbnRlbnRzKTsKKworICAgIGZvciAo
UmVuZGVyQm94KiBjaGlsZEJveCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGRCb3g7IGNoaWxkQm94
ID0gY2hpbGRCb3gtPm5leHRTaWJsaW5nQm94KCkpIHsKKyAgICAgICAgaWYgKGNoaWxkQm94LT5o
ZWlnaHQoKSA9PSAwIHx8IGNoaWxkQm94LT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJM
RSB8fCBjaGlsZEJveC0+aXNGbG9hdGluZ09yUG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIFJlbmRlckJveCogbmV4dCA9IHJlbmRlcmVyLT5uZXh0U2libGluZ0Jv
eCgpOwotICAgICAgICB3aGlsZSAobmV4dCAmJiBuZXh0LT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVk
KCkpCi0gICAgICAgICAgICBuZXh0ID0gbmV4dC0+bmV4dFNpYmxpbmdCb3goKTsKLSAgICAgICAg
aWYgKG5leHQpIAotICAgICAgICAgICAgYm90dG9tID0gbmV4dC0+eSgpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBib3R0b20gPSB0b3AgKyBzY3JvbGxIZWlnaHQoKTsKLSAgICAgICAgaWYg
KGNvbnRlbnRzWSA+PSByZW5kZXJlci0+eSgpICYmIGNvbnRlbnRzWSA8IGJvdHRvbSkKLSAgICAg
ICAgICAgIHJldHVybiByZW5kZXJlci0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyhjb250ZW50c1gg
LSByZW5kZXJlci0+eCgpLCBjb250ZW50c1kgLSByZW5kZXJlci0+eSgpKTsKKyAgICAgICAgLy8g
V2UgaGl0IHRoaXMgY2hpbGQgaWYgb3VyIGNsaWNrIHdhcyBhYm92ZSB0aGUgYm90dG9tIG9mIGl0
cyBwYWRkaW5nIGJveCAobGlrZSBJRTYvNyBhbmQgRkYzKQorICAgICAgICBpZiAoY29udGVudHNZ
IDwgY2hpbGRCb3gtPnkoKSArIGNoaWxkQm94LT5oZWlnaHQoKSkKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbkZvclBvaW50UmVzcGVjdGluZ0VkaXRpbmdCb3VuZGFyaWVzKHRoaXMsIGNoaWxk
Qm94LCBwb2ludEluQ29udGVudHMpOwogICAgIH0KLSAgICAKKworICAgIC8vIFdlIG9ubHkgZ2V0
IGhlcmUgaWYgdGhlcmUgYXJlIG5vLCBvciBvbmx5IGZsb2F0ZWQvcG9zaXRpb25lZCwgb3Igb25s
eQorICAgIC8vIG5vbi12aXNpYmxlIGJsb2NrIGNoaWxkcmVuIGJlbG93IHRoZSBjbGljay4KICAg
ICByZXR1cm4gUmVuZGVyQm94Ojpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKHgsIHkpOwogfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCA4ZjA5ZmM3Li5lOGVlNTVkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTQ4NSw2ICs0ODUsNyBAQCBWaXNpYmxlUG9zaXRp
b24gUmVuZGVySW5saW5lOjpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKGludCB4LCBpbnQgeSkKICAg
ICB3aGlsZSAoYykgewogICAgICAgICBSZW5kZXJCb3gqIGNvbnRCbG9jayA9IGM7CiAgICAgICAg
IGlmIChjLT5pc0lubGluZSgpIHx8IGMtPmZpcnN0Q2hpbGQoKSkKKyAgICAgICAgICAgIC8vIFRo
ZSBjb250aW51YXRpb25zIChhbm9ueW1vdXMgYmxvY2tzKSB3aWxsIG5ldmVyIGJlIGVkaXRhYmxl
LCBzbyB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGNyb3NzaW5nIGVkaXRhYmxlIGJvdW5k
YXJpZXMgaGVyZS4KICAgICAgICAgICAgIHJldHVybiBjLT5wb3NpdGlvbkZvckNvb3JkaW5hdGVz
KHBhcmVudEJsb2NrWCAtIGNvbnRCbG9jay0+eCgpLCBwYXJlbnRCbG9ja1kgLSBjb250QmxvY2st
PnkoKSk7CiAgICAgICAgIGMgPSB0b1JlbmRlckJsb2NrKGMpLT5pbmxpbmVDb250aW51YXRpb24o
KTsKICAgICB9Cg==
</data>
<flag name="review"
          id="13220"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27626</attachid>
            <date>2009-02-12 16:02:03 -0800</date>
            <delta_ts>2009-02-17 14:48:22 -0800</delta_ts>
            <desc>Fix for clicking below the last root line box with multiple line boxes.</desc>
            <filename>Fix-for-clicking-below-the-last-root-line-box-with-multiple-line-boxes..patch</filename>
            <type>text/plain</type>
            <size>46932</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">OGZjY2ZhYjczN2E4NjU4MTljNjA2NjkzODdmZDRhMDVmMDM3ODBmNgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIzZTc0YzIu
LjFhZTNkODggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAwOS0wMi0wNSBPamFuIFZhZmFpIDxv
amFuQGNocm9taXVtLm9yZz4gYW5kIEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBjdXJzb3Ig
cG9zaXRpb25zIG1hdGNoIElFNi9JRTcvRkYzIHdoZW4gY2xpY2tpbmcgaW4gbWFyZ2lucy9wYWRk
aW5nCisgICAgICAgIGFyb3VuZCBkaXZzIGluc2lkZSBlZGl0YWJsZSByZWdpb25zLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MDUKKworICAgICAg
ICBGaXggY2xpY2tzIG91dHNpZGUgZWRpdGFibGUgcmVnaW9ucyBmcm9tIGZvY3VzaW5nIHRoZSBl
ZGl0YWJsZSByZWdpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzYwNworCisgICAgICAgIFJlbW92ZWQgZWRpdGluZy9zZWxlY3Rpb24vY29udGVu
dGVkaXRhYmxlLWNsaWNrLW91dHNpZGUuaHRtbCBhcyBpdCdzCisgICAgICAgIG5vdCBhcyB1c2Vm
dWwgYXMgb3VyIG5ldyB0ZXN0cy4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNr
LWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxl
LWRpdi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1w
YWRkaW5nLXdpdGgtbXVsdGlwbGUtbGluZS1ib3hlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLXBhZGRpbmctd2l0aC1tdWx0aXBsZS1s
aW5lLWJveGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNr
LW91dHNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRp
dGluZy9zZWxlY3Rpb24vY2xpY2stb3V0c2lkZS1lZGl0YWJsZS1kaXYuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvVEVN
UExBVEUuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2Vz
L2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5qczogQWRkZWQuCisgICAgICAg
ICogZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLWluLXBhZGRpbmctd2l0aC1tdWx0
aXBsZS1saW5lLWJveGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9y
ZXNvdXJjZXMvY2xpY2stb3V0c2lkZS1lZGl0YWJsZS1kaXYuanM6IEFkZGVkLgorICAgICAgICAq
IGVkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9qcy10ZXN0LXNlbGVjdGlvbi1zaGFyZWQuanM6
IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1taXNzaW5nLWltYWdl
Lmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRl
ZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLmNoZWNrc3VtOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2st
b3V0c2lkZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWZyb20tdGV4dGZpZWxkLW91
dHdhcmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxl
Y3Rpb24vc2VsZWN0LW1pc3NpbmctaW1hZ2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRm
b3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVj
dGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisKIDIwMDktMDIt
MTIgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRyeSB0byBmaXgg
ZGFzaGJvYXJkLXJlZ2lvbi1wYXJzZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1tYXJnaW5zLWluc2lk
ZS1lZGl0YWJsZS1kaXYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmE5ZjNkMTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0YWJsZS1kaXYtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMjMgQEAKK0Vuc3VyZSBjdXJzb3IgcGxhY2VtZW50IG1hdGNoZXMgSUU2L0lF
Ny9GRjMgd2hlbiBjbGlja2luZyBhYm92ZS9iZWxvdyBsaW5lcyBpbiBwYWRkaW5nLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29i
amVjdCBUZXh0XSBvZmZzZXQ6IDAKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3Qg
VGV4dF0gb2Zmc2V0OiAxCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRd
IG9mZnNldDogMgorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZz
ZXQ6IDAKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAy
CitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMAorUEFT
UyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDEKK1BBU1MgU2Vs
ZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAyCitQQVNTIFNlbGVjdGlv
biBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMAorUEFTUyBTZWxlY3Rpb24gaXMg
YXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDEKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5v
ZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAyCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBb
b2JqZWN0IFRleHRdIG9mZnNldDogMAorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVj
dCBUZXh0XSBvZmZzZXQ6IDEKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4
dF0gb2Zmc2V0OiAyCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2st
aW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0YWJsZS1kaXYuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2Y3NTkxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUt
ZWRpdGFibGUtZGl2Lmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1zZWxlY3Rpb24tc2hhcmVk
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2xpY2st
aW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
Y2xpY2staW4tcGFkZGluZy13aXRoLW11bHRpcGxlLWxpbmUtYm94ZXMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tcGFkZGluZy13aXRoLW11bHRp
cGxlLWxpbmUtYm94ZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjhkYzdjMDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9jbGljay1pbi1wYWRkaW5nLXdpdGgtbXVsdGlwbGUtbGluZS1ib3hlcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMSBAQAorQ2xpY2sgYWJvdmUvYmVuZWF0aCB0aGUgd29yZCBGT08u
IE5vdGljZSBob3cgdGhlIGN1cnNvciBnb2VzIGluIHRoZSByaWdodCBwbGFjZSAoYWZ0ZXIgdGhl
IGxldHRlciBGKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgU2VsZWN0
aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAxCitQQVNTIFNlbGVjdGlvbiBp
cyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLXBhZGRpbmctd2l0aC1tdWx0aXBsZS1saW5lLWJveGVz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1wYWRkaW5nLXdp
dGgtbXVsdGlwbGUtbGluZS1ib3hlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjcxNGM0NzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9jbGljay1pbi1wYWRkaW5nLXdpdGgtbXVsdGlwbGUtbGluZS1ib3hlcy5odG1sCkBA
IC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2pzLXRlc3Qtc2VsZWN0aW9uLXNoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NsaWNrLWluLXBhZGRpbmctd2l0aC1tdWx0
aXBsZS1saW5lLWJveGVzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stb3V0c2lkZS1l
ZGl0YWJsZS1kaXYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
Y2xpY2stb3V0c2lkZS1lZGl0YWJsZS1kaXYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjNmYzU2ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1vdXRzaWRlLWVkaXRhYmxlLWRpdi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwyMCBAQAorRW5zdXJlIHRoYXQgY2xpY2tpbmcgaW4gdGhlIG1hcmdpbnMg
YXJvdW5kIGVkaXRhYmxlIGRpdnMgZG9lcyBub3QgZ3JhbnQgZm9jdXMuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIENsaWNrIEAgMTAsIDEwIGRpZCBub3QgY2F1c2UgZm9j
dXMuCitQQVNTIENsaWNrIEAgMTcwLCAxMCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBDbGlj
ayBAIDEwLCAxNzAgZGlkIG5vdCBjYXVzZSBmb2N1cy4KK1BBU1MgQ2xpY2sgQCA3MCwgNzAgZGlk
IG5vdCBjYXVzZSBmb2N1cy4KK1BBU1MgQ2xpY2sgQCAxNzAsIDcwIGRpZCBub3QgY2F1c2UgZm9j
dXMuCitQQVNTIENsaWNrIEAgMjcwLCA3MCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBDbGlj
ayBAIDcwLCAxNzAgZGlkIG5vdCBjYXVzZSBmb2N1cy4KK1BBU1MgQ2xpY2sgQCAyNzAsIDE3MCBk
aWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBDbGljayBAIDcwLCAyNzAgZGlkIG5vdCBjYXVzZSBm
b2N1cy4KK1BBU1MgQ2xpY2sgQCAxNzAsIDI3MCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBD
bGljayBAIDI3MCwgMjcwIGRpZCBub3QgY2F1c2UgZm9jdXMuCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stb3V0c2lkZS1lZGl0YWJsZS1kaXYuaHRtbCBiL0xheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMwODY3MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFi
bGUtZGl2Lmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1zZWxlY3Rpb24tc2hhcmVkLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2xpY2stb3V0c2lk
ZS1lZGl0YWJsZS1kaXYuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUt
Y2xpY2stb3V0c2lkZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVu
dGVkaXRhYmxlLWNsaWNrLW91dHNpZGUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOTBkOGVhZS4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9j
b250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMg
KzAsMCBAQAotPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7Ci08L3NjcmlwdD4K
LTxkaXYgc3R5bGU9IndpZHRoOiA0MDBweDsgaGVpZ2h0OiA1MHB4OyBwYWRkaW5nOiAyNXB4IDAg
MCAyNXB4OyBiYWNrZ3JvdW5kOiB5ZWxsb3c7Ij48ZGl2IGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIg
c3R5bGU9ImJhY2tncm91bmQ6IHdoaXRlOyBoZWlnaHQ6MjBweDsgd2lkdGg6MTAwcHgiPjwvZGl2
PjwvZGl2PgotPHA+VGhpcyB0ZXN0IGNsaWNrcyBvdXRzaWRlIGFuIGVkaXRhYmxlIGRpdiBlbGVt
ZW50LCBhbmQgbXVzdCBub3QgcmVzdWx0IGluIHRoZSBlbGVtZW50IHJlY2VpdmluZyBmb2N1cy4g
SWYgdGhlIHRlc3Qgc3VjY2VlZHMgdGhlIGVsZW1lbnQgc2hvdWxkIG5vdCBoYXZlIGEgZm9jdXMg
cmluZy48L3A+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewotICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKDIyNSwgNDUpOwotICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigp
OwotICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKLX0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTZlNTBmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwK
QEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvanMtdGVzdC1zZWxlY3Rpb24tc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQgc3JjPSJZT1VSX0pTX0ZJTEVfSEVSRSI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL3Jlc291cmNlcy9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0YWJsZS1kaXYuanMg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2staW4tbWFyZ2lu
cy1pbnNpZGUtZWRpdGFibGUtZGl2LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmM1NDEzNTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9yZXNvdXJjZXMvY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2LmpzCkBA
IC0wLDAgKzEsOTMgQEAKK2Rlc2NyaXB0aW9uKCJFbnN1cmUgY3Vyc29yIHBsYWNlbWVudCBtYXRj
aGVzIElFNi9JRTcvRkYzIHdoZW4gY2xpY2tpbmcgYWJvdmUvYmVsb3cgbGluZXMgaW4gcGFkZGlu
Zy4iKQorCitkb2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpbiA9IDA7CisKK3ZhciBkaXYgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5zdHlsZS5jc3NUZXh0ID0gImZvbnQtZmFt
aWx5OiBhaGVtOyBmb250LXNpemU6IDIwcHg7IC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB5ZWxs
b3c7IHdpZHRoOiA0MHB4OyBoZWlnaHQ6IDgwcHg7IHBhZGRpbmc6IDIwcHg7IGJhY2tncm91bmQt
Y29sb3I6IGdyZWVuOyI7CitkaXYuY29udGVudEVkaXRhYmxlID0gdHJ1ZTsKKwordmFyIGZpcnN0
VGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJYWCIpOwordmFyIGZpcnN0RGl2ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitmaXJzdERpdi5hcHBlbmRDaGlsZChmaXJzdFRl
eHQpOworZmlyc3REaXYuc3R5bGUuY3NzVGV4dCA9ICJwYWRkaW5nLWJvdHRvbTogMTlweDsgYm9y
ZGVyLWJvdHRvbTogMXB4IHNvbGlkIHBpbms7IG1hcmdpbi1ib3R0b206IDIwcHgiOworZGl2LmFw
cGVuZENoaWxkKGZpcnN0RGl2KTsKKwordmFyIHNlY29uZFRleHQgPSBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgiWVkiKTsKK3ZhciBzZWNvbmREaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKK3NlY29uZERpdi5hcHBlbmRDaGlsZChzZWNvbmRUZXh0KTsKK2Rpdi5hcHBlbmRDaGls
ZChzZWNvbmREaXYpOworCitkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShkaXYsIGRvY3VtZW50
LmJvZHkuZmlyc3RDaGlsZCk7CisKK2Z1bmN0aW9uIGNsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSh4
LCB5LCBub2RlLCBvZmZzZXQpIHsKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgIGNsaWNrQXQoeCwgeSk7CisgICAgICAgIGFzc2VydFNlbGVjdGlvbkF0KG5vZGUsIG9mZnNl
dCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdHMucHVzaCh7CisgICAgICAgICAgICB0ZXN0
RnVuY3Rpb246IGZ1bmN0aW9uKCkgeyBhc3NlcnRSYW5nZShub2RlLCBvZmZzZXQpOyB9LAorICAg
ICAgICAgICAgY2xpY2tTdHJpbmc6ICIgIiArIHggKyAiLCAiICsgeSB9CisgICAgICAgICkKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHByaW50Q2xpY2tTdHJpbmdGb3JXYWl0aW5nVGVzdCgpCit7Cisg
ICAgaWYgKCF0ZXN0c1t0ZXN0SW5kZXhdKQorICAgICAgICByZXR1cm47CisgICAgZGVidWcoIldh
aXRpbmcgZm9yIGNsaWNrIEAgIiArIHRlc3RzW3Rlc3RJbmRleF0uY2xpY2tTdHJpbmcpOworfQor
Cit2YXIgdGVzdEluZGV4ID0gMDsKK3ZhciB0ZXN0cyA9IFtdOworZnVuY3Rpb24gcnVuSW50ZXJh
Y3RpdmVUZXN0cygpCit7CisgICAgdGVzdEluZGV4ID0gMDsKKyAgICBwcmludENsaWNrU3RyaW5n
Rm9yV2FpdGluZ1Rlc3QoKTsKKyAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNldXAiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoIkdvdCBjbGljayBAICIgKyBldmVu
dC5jbGllbnRYICsgIiwgIiArIGV2ZW50LmNsaWVudFkpOworICAgICAgICB2YXIgdGVzdCA9IHRl
c3RzW3Rlc3RJbmRleF07CisgICAgICAgIGlmICh0ZXN0KSB7CisgICAgICAgICAgICB0ZXN0LnRl
c3RGdW5jdGlvbigpOworICAgICAgICAgICAgdGVzdEluZGV4Kys7CisgICAgICAgICAgICBwcmlu
dENsaWNrU3RyaW5nRm9yV2FpdGluZ1Rlc3QoKTsKKyAgICAgICAgfQorICAgIH0sIGZhbHNlKTsK
K30KKworLy8gV2hlbiBjbGlja2luZyBiZXR3ZWVuIGRpdnMgc2VwYXJhdGVkIGJ5IG1hcmdpbnMg
aW4gYW4gZWRpdGFibGUKKy8vIHRleHQgcmVnaW9uLCB0aGUgYnJvd3NlcnMgZGlmZmVyIGluIGJl
aGF2aW9yOgorLy8gRkYzOiB2ZXJ0aWNhbCBwYWRkaW5nIGJveCArIHNvbWUgc29ydCBvZiBvdmVy
aGFuZyBkZWNlbnQ/CisvLyBJRTYvSUU3OiB2ZXJ0aWNhbCBwYWRkaW5nIGJveAorLy8gSUU4IGIy
OiBtYXJnaW4gYm94CisvLyBTYWZhcmkzOiBtYXJnaW4gYm94IChidXQgY3Vyc29yIGdvZXMgYXQg
ZW5kIG9mIGxpbmUpCisKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSgxMCwgMTAsIGZpcnN0VGV4
dCwgMCk7CitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNDAsIDEwLCBmaXJzdFRleHQsIDEpOwor
Y2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKDcwLCAxMCwgZmlyc3RUZXh0LCAyKTsKKworY2xpY2tT
aG91bGRSZXN1bHRJblJhbmdlKDEwLCAzMCwgZmlyc3RUZXh0LCAwKTsKK2NsaWNrU2hvdWxkUmVz
dWx0SW5SYW5nZSg3MCwgMzAsIGZpcnN0VGV4dCwgMik7CisKK2NsaWNrU2hvdWxkUmVzdWx0SW5S
YW5nZSgxMCwgNTAsIGZpcnN0VGV4dCwgMCk7CitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNDAs
IDUwLCBmaXJzdFRleHQsIDEpOworY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKDcwLCA1MCwgZmly
c3RUZXh0LCAyKTsKKworLy8gV2UncmUgZ29pbmcgdG8gZm9sbG93IElFIDcncyBiZWhhdmlvciBh
bmQgdXNlIHRoZSBwYWRkaW5nIGJveCBoZWlnaHQKKy8vIGZvciBkZXRlcm1pbmluZyBpZiB0aGUg
Y2xpY2sgYmVsb3cgYSBkaXYgKGluIHRoZSBwYWRkaW5nL21hcmdpbiByZWdpb24pCitjbGlja1No
b3VsZFJlc3VsdEluUmFuZ2UoMTAsIDcwLCBzZWNvbmRUZXh0LCAwKTsKK2NsaWNrU2hvdWxkUmVz
dWx0SW5SYW5nZSg0MCwgNzAsIHNlY29uZFRleHQsIDEpOworY2xpY2tTaG91bGRSZXN1bHRJblJh
bmdlKDcwLCA3MCwgc2Vjb25kVGV4dCwgMik7CisKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSgx
MCwgMTEwLCBzZWNvbmRUZXh0LCAwKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSg0MCwgMTEw
LCBzZWNvbmRUZXh0LCAxKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSg3MCwgMTEwLCBzZWNv
bmRUZXh0LCAyKTsKKworLy8gQ2xlYW4gdXAgYWZ0ZXIgb3Vyc2VsdmVzIGlmIHdlJ3JlIG5vdCBi
ZWluZyBydW4gaW4gdGhlIGJyb3dzZXIKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBk
b2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7Cit9IGVsc2UgeworICAgIHJ1bkludGVyYWN0
aXZlVGVzdHMoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2staW4tcGFk
ZGluZy13aXRoLW11bHRpcGxlLWxpbmUtYm94ZXMuanMgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9yZXNvdXJjZXMvY2xpY2staW4tcGFkZGluZy13aXRoLW11bHRpcGxlLWxpbmUtYm94
ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA4ZWE2MQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9jbGlj
ay1pbi1wYWRkaW5nLXdpdGgtbXVsdGlwbGUtbGluZS1ib3hlcy5qcwpAQCAtMCwwICsxLDYyIEBA
CitkZXNjcmlwdGlvbigiQ2xpY2sgYWJvdmUvYmVuZWF0aCB0aGUgd29yZCBGT08uIE5vdGljZSBo
b3cgdGhlIGN1cnNvciBnb2VzIGluIHRoZSByaWdodCBwbGFjZSAoYWZ0ZXIgdGhlIGxldHRlciBG
KS4iKQorCitkb2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpbiA9IDA7CisKK3ZhciBkaXYgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2Rpdi5zdHlsZS5jc3NUZXh0ID0gImZvbnQtZmFt
aWx5OmFoZW07IHdpZHRoOjUwcHg7IGhlaWdodDo2MHB4OyBib3JkZXI6MXB4IHNvbGlkIGJsdWU7
IHdoaXRlLXNwYWNlOm5vd3JhcDsgb3ZlcmZsb3c6c2Nyb2xsOyBwYWRkaW5nOjUwcHg7IjsKK2Rp
di5jb250ZW50RWRpdGFibGUgPSB0cnVlOworZGl2LmlubmVySFRNTCA9ICIxMjM0NTxzcGFuIGlk
PSdmb28nPkZPTzwvc3Bhbj42Nzg5PHNwYW4+QkFSPC9zcGFuPiI7Citkb2N1bWVudC5ib2R5Lmlu
c2VydEJlZm9yZShkaXYsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisKK2Rpdi5zY3JvbGxM
ZWZ0ID0gNTA7CisKK2Z1bmN0aW9uIGNsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSh4LCB5LCBub2Rl
LCBvZmZzZXQpIHsKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGNsaWNr
QXQoeCwgeSk7CisgICAgICAgIGFzc2VydFNlbGVjdGlvbkF0KG5vZGUsIG9mZnNldCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgdGVzdHMucHVzaCh7CisgICAgICAgICAgICB0ZXN0RnVuY3Rpb246
IGZ1bmN0aW9uKCkgeyBhc3NlcnRSYW5nZShub2RlLCBvZmZzZXQpOyB9LAorICAgICAgICAgICAg
Y2xpY2tTdHJpbmc6ICIgIiArIHggKyAiLCAiICsgeSB9CisgICAgICAgICkKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIHByaW50Q2xpY2tTdHJpbmdGb3JXYWl0aW5nVGVzdCgpCit7CisgICAgaWYgKCF0
ZXN0c1t0ZXN0SW5kZXhdKQorICAgICAgICByZXR1cm47CisgICAgZGVidWcoIldhaXRpbmcgZm9y
IGNsaWNrIEAgIiArIHRlc3RzW3Rlc3RJbmRleF0uY2xpY2tTdHJpbmcpOworfQorCit2YXIgdGVz
dEluZGV4ID0gMDsKK3ZhciB0ZXN0cyA9IFtdOworZnVuY3Rpb24gcnVuSW50ZXJhY3RpdmVUZXN0
cygpCit7CisgICAgdGVzdEluZGV4ID0gMDsKKyAgICBwcmludENsaWNrU3RyaW5nRm9yV2FpdGlu
Z1Rlc3QoKTsKKyAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoIkdvdCBjbGljayBAICIgKyBldmVudC5jbGllbnRY
ICsgIiwgIiArIGV2ZW50LmNsaWVudFkpOworICAgICAgICB2YXIgdGVzdCA9IHRlc3RzW3Rlc3RJ
bmRleF07CisgICAgICAgIGlmICh0ZXN0KSB7CisgICAgICAgICAgICB0ZXN0LnRlc3RGdW5jdGlv
bigpOworICAgICAgICAgICAgdGVzdEluZGV4Kys7CisgICAgICAgICAgICBwcmludENsaWNrU3Ry
aW5nRm9yV2FpdGluZ1Rlc3QoKTsKKyAgICAgICAgfQorICAgIH0sIGZhbHNlKTsKK30KKwordmFy
IGZvbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb28nKTsKK3ZhciB4ID0gZm9vLm9mZnNl
dExlZnQgLSBkaXYuc2Nyb2xsTGVmdCArIDEwOworLy8gQ2xpY2sgMTBweCBhZnRlciB0aGUgc3Rh
cnQgb2YgdGhlIHNwYW4gc2hvdWxkIHB1dCB0aGUgY3Vyc29yIHJpZ2h0IGFmdGVyIHRoZSBsZXR0
ZXIgRi4KK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSh4LCBmb28ub2Zmc2V0VG9wIC0gMjAsIGZv
by5maXJzdENoaWxkLCAxKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSh4LCBmb28ub2Zmc2V0
VG9wICsgMjAsIGZvby5maXJzdENoaWxkLCAxKTsKKworLy8gQ2xlYW4gdXAgYWZ0ZXIgb3Vyc2Vs
dmVzIGlmIHdlJ3JlIG5vdCBiZWluZyBydW4gaW4gdGhlIGJyb3dzZXIKK2lmICh3aW5kb3cuZXZl
bnRTZW5kZXIpIHsKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7Cit9IGVsc2Ug
eworICAgIHJ1bkludGVyYWN0aXZlVGVzdHMoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNv
dXJjZXMvY2xpY2stb3V0c2lkZS1lZGl0YWJsZS1kaXYuanMgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2stb3V0c2lkZS1lZGl0YWJsZS1kaXYuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNmYmQ3OQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9jbGljay1vdXRzaWRlLWVk
aXRhYmxlLWRpdi5qcwpAQCAtMCwwICsxLDQ5IEBACitkZXNjcmlwdGlvbigiRW5zdXJlIHRoYXQg
Y2xpY2tpbmcgaW4gdGhlIG1hcmdpbnMgYXJvdW5kIGVkaXRhYmxlIGRpdnMgZG9lcyBub3QgZ3Jh
bnQgZm9jdXMuIikKKworZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW4gPSAiMjBweCI7CisKK3Zh
ciBvdXRlckRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworb3V0ZXJEaXYuc3R5
bGUuY3NzVGV4dCA9ICJ3aWR0aDogMTAwcHg7IHBhZGRpbmc6IDEwMHB4OyBiYWNrZ3JvdW5kLWNv
bG9yOiBibHVlOyI7Cit2YXIgaW5uZXJEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKK2lubmVyRGl2LnN0eWxlLmNzc1RleHQgPSAiaGVpZ2h0OiAxMDBweDsgYm9yZGVyOiAxcHgg
c29saWQgcGluazsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IjsKK2lubmVyRGl2LmNvbnRlbnRF
ZGl0YWJsZSA9IHRydWU7CitvdXRlckRpdi5hcHBlbmRDaGlsZChpbm5lckRpdik7Citkb2N1bWVu
dC5ib2R5Lmluc2VydEJlZm9yZShvdXRlckRpdiwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsK
KwordmFyIGxhc3RDbGlja0NhdXNlZEZvY3VzID0gZmFsc2U7Citkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIGZ1bmN0aW9uKGUpIHsKKyAgICB2YXIg
bGFzdENsaWNrID0gZSB8fCB3aW5kb3cuZXZlbnQ7CisgICAgaWYgKGxhc3RDbGlja0NhdXNlZEZv
Y3VzKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNsaWNrIEAgIiArIGxhc3RDbGljay5jbGllbnRY
ICsgIiwgIiArIGxhc3RDbGljay5jbGllbnRZICsgIiBjYXVzZWQgaW5uZXJkaXYgdG8gZm9jdXMh
Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiQ2xpY2sgQCAiICsgbGFzdENs
aWNrLmNsaWVudFggKyAiLCAiICsgbGFzdENsaWNrLmNsaWVudFkgKyAiIGRpZCBub3QgY2F1c2Ug
Zm9jdXMuIik7CisgICAgfQorICAgIGlubmVyRGl2LmJsdXIoKTsKKyAgICBsYXN0Q2xpY2tDYXVz
ZWRGb2N1cyA9IGZhbHNlOworfSwgZmFsc2UpOworCitpbm5lckRpdi5hZGRFdmVudExpc3RlbmVy
KCJmb2N1cyIsIGZ1bmN0aW9uKCkgeworICAgIGxhc3RDbGlja0NhdXNlZEZvY3VzID0gdHJ1ZTsK
K30sIGZhbHNlKTsKKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIGNsaWNrQXQoMTAs
IDEwKTsKKyAgICBjbGlja0F0KDE3MCwgMTApOworICAgIGNsaWNrQXQoMTAsIDE3MCk7CisKKyAg
ICBjbGlja0F0KDcwLCA3MCk7CisgICAgY2xpY2tBdCgxNzAsIDcwKTsKKyAgICBjbGlja0F0KDI3
MCwgNzApOworCisgICAgY2xpY2tBdCg3MCwgMTcwKTsKKyAgICBjbGlja0F0KDI3MCwgMTcwKTsK
KworICAgIGNsaWNrQXQoNzAsIDI3MCk7CisgICAgY2xpY2tBdCgxNzAsIDI3MCk7CisgICAgY2xp
Y2tBdCgyNzAsIDI3MCk7Cit9IGVsc2UgeworICAgIGRlYnVnKCJUbyB0ZXN0LCBjaWNrIGFib3Zl
IGFuZCB0byB0aGUgbGVmdCBvZiB0aGUgYmx1ZSBib3gsIHRoZW4gYWJvdmUgaXQsIHRoZW4gdG8g
dGhlIGxlZnQgIiArCisgICAgICAgICAgIm9mIGl0IGFuZCBmaW5hbGx5LCBjbGljayBpbiBhbGwg
OCByZWdpb25zIGFyb3VuZCB0aGUgZ3JlZW4gZGl2LiIpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L3Jlc291cmNlcy9qcy10ZXN0LXNlbGVjdGlvbi1zaGFyZWQuanMgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvanMtdGVzdC1zZWxlY3Rpb24tc2hhcmVkLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMDY0ZWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvanMtdGVzdC1zZWxlY3Rp
b24tc2hhcmVkLmpzCkBAIC0wLDAgKzEsNDQgQEAKK2Z1bmN0aW9uIG9iamVjdEFzU3RyaW5nKG9i
amVjdCwgcHJvcGVydGllcykgeworICAgIHZhciByZXN1bHQgPSAiWyI7CisgICAgZm9yICh2YXIg
eCA9IDA7IHggPCBwcm9wZXJ0aWVzLmxlbmd0aDsgeCsrKSB7CisgICAgICAgIHZhciBwcm9wZXJ0
eSA9IHByb3BlcnRpZXNbeF07CisgICAgICAgIGlmICh4ICE9IDApCisgICAgICAgICAgICByZXN1
bHQgKz0gIiAiOworCisgICAgICAgIHZhciB2YWx1ZSA9IG9iamVjdFtwcm9wZXJ0eV07CisgICAg
ICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5ub2RlVHlwZSkgLy8gdGV4dE5vZGUKKyAgICAgICAgICAg
IHZhbHVlID0gdmFsdWUgKyAiKCAiICsgdmFsdWUubm9kZVZhbHVlICsgIiApIjsKKworICAgICAg
ICByZXN1bHQgKz0gcHJvcGVydHkgKyAiOiAiICsgdmFsdWU7CisgICAgfQorICAgIHJlc3VsdCAr
PSAnXSc7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gc2VsZWN0aW9uQXNTdHJp
bmcoc2VsKQoreworICAgIHZhciBwcm9wZXJ0aWVzID0gWydhbmNob3JOb2RlJywgJ2FuY2hvck9m
ZnNldCcsICdmb2N1c05vZGUnLCAnZm9jdXNPZmZzZXQnLCAnaXNDb2xsYXBzZWQnXTsKKyAgICBy
ZXR1cm4gb2JqZWN0QXNTdHJpbmcoc2VsLCBwcm9wZXJ0aWVzKTsKK30KKworZnVuY3Rpb24gYXNz
ZXJ0U2VsZWN0aW9uQXQobm9kZSwgb2Zmc2V0KSB7CisgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKTsKKyAgICBpZiAoc2VsLmFuY2hvck5vZGUgPT0gbm9kZQorICAgICAgICAmJiBz
ZWwuZm9jdXNOb2RlID09IG5vZGUKKyAgICAgICAgJiYgc2VsLmFuY2hvck9mZnNldCA9PSBvZmZz
ZXQKKyAgICAgICAgJiYgc2VsLmZvY3VzT2Zmc2V0ID09IG9mZnNldAorICAgICAgICAmJiBzZWwu
aXNDb2xsYXBzZWQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiU2VsZWN0aW9uIGlzIGF0IG5vZGU6
ICIgKyBub2RlICsgIiBvZmZzZXQ6ICIgKyBvZmZzZXQpOworICAgIH0gZWxzZSB7CisgICAgICAg
IHRlc3RGYWlsZWQoIlNlbGVjdGlvbiBpcyAiICsgc2VsZWN0aW9uQXNTdHJpbmcoc2VsKSArICIg
c2hvdWxkIGJlIGF0IG5vZGU6ICIgKyBub2RlICsgIiBvZmZzZXQ6ICIgKyBvZmZzZXQpOworICAg
IH0KK30KKworZnVuY3Rpb24gY2xpY2tBdCh4LCB5KSB7CisgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1taXNz
aW5nLWltYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtbWlz
c2luZy1pbWFnZS5odG1sCmluZGV4IGI3Mzc2ZGEuLjUwNDYwZWQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1taXNzaW5nLWltYWdlLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LW1pc3NpbmctaW1hZ2UuaHRtbApA
QCAtMjEsNyArMjEsNyBAQCBmdW5jdGlvbiBlZGl0aW5nVGVzdCgpIHsKIDx0aXRsZT5FZGl0aW5n
IFRlc3Q8L3RpdGxlPiAKIDwvaGVhZD4gCiA8Ym9keT4KLTxkaXYgY29udGVudGVkaXRhYmxlIGlk
PSJyb290IiBjbGFzcz0iZWRpdGluZyI+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZSBpZD0idGVzdCIg
Y2xhc3M9ImVkaXRpbmciPgogPGltZyB0aXRsZT0iU2hvdWxkIHNlZSBzZWxlY3Rpb24gdGludCBv
dmVyIHRoaXMgbWlzc2luZyBpbWFnZS4iIHNyYz0iLi4vbm9uZVN1Y2guanBnIiBoZWlnaHQ9IjEw
MCIgd2lkdGg9IjU1MCI+IAogPC9kaXY+CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1l
eHBlY3RlZC5jaGVja3N1bSBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVj
dGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1leHBlY3RlZC5jaGVja3N1bQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU5MTdmMS4uMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNr
LW91dHNpZGUtZXhwZWN0ZWQuY2hlY2tzdW0KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0x
NjUyZmQ4MWI2Yzg3Yjk4OGEwMDMzMThmOTgxOTM3OApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlv
bi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91
dHNpZGUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGM2ZmIw
Li4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlv
bi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSwxNiArMCwwIEBACi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3Rl
ZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2Vs
ZWN0aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJh
bmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
byAwIG9mIERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50Ci1FRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmlj
YXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCi0gIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi1sYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKLSAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAot
ICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgotICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA0MjV4NzUgW2JnY29sb3I9I0ZGRkYwMF0KLSAgICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDI1LDI1KSBzaXplIDEwMHgyMCBbYmdjb2xvcj0jRkZG
RkZGXQotICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDkxKSBzaXplIDc4NHgzNgotICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NTl4MzYKLSAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCA3NTk6ICJUaGlzIHRlc3QgY2xpY2tzIG91dHNpZGUgYW4gZWRp
dGFibGUgZGl2IGVsZW1lbnQsIGFuZCBtdXN0IG5vdCByZXN1bHQgaW4gdGhlIGVsZW1lbnQgcmVj
ZWl2aW5nIGZvY3VzLiBJZiB0aGUgdGVzdCBzdWNjZWVkcyB0aGUiCi0gICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMTgpIHdpZHRoIDIzNTogImVsZW1lbnQgc2hvdWxkIG5vdCBoYXZlIGEgZm9jdXMg
cmluZy4iCi1jYXJldDogcG9zaXRpb24gMCBvZiBjaGlsZCAwIHtESVZ9IG9mIGNoaWxkIDAge0RJ
Vn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3Qt
YWxsLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGlu
Zy9zZWxlY3Rpb24vc2VsZWN0LWFsbC1pZnJhbWUtZXhwZWN0ZWQudHh0CmluZGV4IDg0MmMyYTMu
LmI0MDVkZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Nl
bGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVjdGVk
LnR4dApAQCAtMSw5ICsxLDkgQEAKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBE
RUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAogRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0
aW5nTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERP
TVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAw
IG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAx
MSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDExIG9mICN0ZXh0
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZp
bml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNo
b3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDUgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0byA1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5p
dHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
YWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFM
U0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSA1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAj
dGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTEgb2YgI3Rl
eHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFm
ZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZp
Y2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxldGVET01SYW5nZTpyYW5nZSBmcm9t
IDAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxMSBvZiAjdGV4
dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRp
b24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlv
bi9zZWxlY3QtZnJvbS10ZXh0ZmllbGQtb3V0d2FyZHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1mcm9tLXRleHRmaWVsZC1v
dXR3YXJkcy1leHBlY3RlZC50eHQKaW5kZXggMThjMzdhNi4uYjA2NDc0OCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1mcm9tLXRl
eHRmaWVsZC1vdXR3YXJkcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1mcm9tLXRleHRmaWVsZC1vdXR3YXJkcy1leHBl
Y3RlZC50eHQKQEAgLTgsMTAgKzgsMTAgQEAgRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdl
U2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgdG8gMTIKIEVESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRET01SYW5nZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0ID4gRElWIHRvIDE3IG9mICN0ZXh0ID4g
RElWIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWIHRvIDEyIG9mICN0ZXh0
ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0
aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNo
b3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWIHRv
IDEyIG9mICN0ZXh0ID4gRElWIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElW
IHRvIDEyIG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3Ry
ZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VT
ZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViB0byAxMiBvZiAjdGV4
dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2YgI3RleHQgPiBESVYgdG8gMTcgb2Yg
I3RleHQgPiBESVYgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxT
ZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FU
RTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0ID4g
RElWIHRvIDE3IG9mICN0ZXh0ID4gRElWIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4
dCA+IERJViB0byAxNyBvZiAjdGV4dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5
RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxk
Q2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0ID4gRElWIHRvIDE3
IG9mICN0ZXh0ID4gRElWIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViB0
byAxNyBvZiAjdGV4dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVh
bSBzdGlsbFNlbGVjdGluZzpGQUxTRQogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgIFJl
bmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlv
bi9zZWxlY3QtbWlzc2luZy1pbWFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LW1pc3NpbmctaW1hZ2UtZXhwZWN0ZWQudHh0
CmluZGV4IDkwNzRjMjYuLjdiOWRlOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtbWlzc2luZy1pbWFnZS1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1t
aXNzaW5nLWltYWdlLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDggQEAKLUVESVRJTkcgREVMRUdB
VEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAxIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDIgb2YgRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJl
YW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRp
dGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IHRvIDMgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKIEVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNh
dGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRD
aGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFu
Z2U6cmFuZ2UgZnJvbSAxIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDIgb2Yg
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0
eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlv
bgogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGlj
ay1vdXRzaWRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcv
c2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjMxZmEyNy4uMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2st
b3V0c2lkZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1DT05T
T0xFIE1FU1NBR0U6IGxpbmUgOTogVHlwZUVycm9yOiBWYWx1ZSB1bmRlZmluZWQgKHJlc3VsdCBv
ZiBleHByZXNzaW9uIGV2ZW50U2VuZGVyLm1vdmVUbykgaXMgbm90IG9iamVjdC4KLWxheWVyIGF0
ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAot
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCww
KSBzaXplIDgwMHg2MDAKLSAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1
NzgKLSAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNDI1eDc1IFtiZ2NvbG9y
PSNGRkZGMDBdCi0gICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyNSwyNSkgc2l6ZSAxMDB4
MjAgW2JnY29sb3I9I0ZGRkZGRl0KLSAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw4OSkgc2l6
ZSA3ODR4MzgKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzcxeDM4
Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzcxOiAiVGhpcyB0ZXN0IGNsaWNr
cyBvdXRzaWRlIGFuIGVkaXRhYmxlIGRpdiBlbGVtZW50LCBhbmQgbXVzdCBub3QgcmVzdWx0IGlu
IHRoZSBlbGVtZW50IHJlY2VpdmluZyBmb2N1cy4gSWYgdGhlIHRlc3Qgc3VjY2VlZHMgdGhlIgot
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE5KSB3aWR0aCAyMzg6ICJlbGVtZW50IHNob3VsZCBu
b3QgaGF2ZSBhIGZvY3VzIHJpbmcuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFsbC1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFsbC1pZnJhbWUt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTIyMzFjLi4wMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVj
dC1hbGwtaWZyYW1lLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAK
LUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5F
ZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gNCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAotRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCi1FRElU
SU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBv
ZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxT
ZWxlY3Rpbmc6RkFMU0UKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FU
RTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0ID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0g
c3RpbGxTZWxlY3Rpbmc6RkFMU0UKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBE
RUxFR0FURTogc2hvdWxkRGVsZXRlRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudAotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVH
QVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdl
IGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3Ry
ZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlv
bgotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCi1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyQmxvY2sge0hU
TUx9IGF0ICgwLDApIHNpemUgODAweDYwMAotICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgp
IHNpemUgNzg0eDU3OAotICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6
ZSA3ODR4MTczCi0gICAgICAgIFJlbmRlclBhcnRPYmplY3Qge0lGUkFNRX0gYXQgKDAsMCkgc2l6
ZSAzMDR4MTU0IFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCi0gICAgICAgICAgbGF5ZXIg
YXQgKDAsMCkgc2l6ZSAzMDB4MTUwCi0gICAgICAgICAgICBSZW5kZXJWaWV3IGF0ICgwLDApIHNp
emUgMzAweDE1MAotICAgICAgICAgIGxheWVyIGF0ICgwLDApIHNpemUgMzAweDE1MAotICAgICAg
ICAgICAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgMzAweDE1MAotICAgICAgICAg
ICAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDI4NHgxMzQgW2JnY29sb3I9I0ZG
RkZFMF0KLSAgICAgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDI4
NHgxOQotICAgICAgICAgICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MTkK
LSAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMzA0LDE1NCkgc2l6ZSAweDAKLSAgICAgICAgUmVu
ZGVyQlIge0JSfSBhdCAoMCwxNTQpIHNpemUgMHgxOQotICAgICAgUmVuZGVyQmxvY2sge1B9IGF0
ICgwLDE4Nykgc2l6ZSA3ODR4MzkKLSAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBz
aXplIDY4M3gyMAotICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDY4
M3gyMAotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTE0OiAiVGhpcyB0ZXN0
IHVzZXMgdGhlIGV2ZW50U2VuZGVyIHRvIGRvIGEgbW91c2UgY2xpY2sgdG8gZm9jdXMgdGhlIHN1
YmZyYW1lLiAiCi0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNTE0LDApIHdpZHRoIDE2OTogIkl0
IHdvbid0IHJ1biBpbnRlcmFjdGl2ZWx5LiIKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICg2ODMsMCkgc2l6ZSA3NDB4MzkKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoNjgzLDApIHdpZHRo
IDQ6ICIgIgotICAgICAgICAgIHRleHQgcnVuIGF0ICg2ODcsMCkgd2lkdGggNTM6ICJUbyBydW4g
aXQiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMjApIHdpZHRoIDM0ODogIm1hbnVhbGx5LCBj
bGljayBvbiB0aGUgaWZyYW1lLCBTZWxlY3QgQWxsLCB0aGVuIGhpdCBkZWxldGUuIgotICAgICAg
UmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMjQwKSBzaXplIDc4NHg1NwotICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NzZ4NTcKLSAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCA3NzY6ICJTZWxlY3RpbmcgYWxsIHRoZSBjb250ZW50IGluIGEgY29u
dGVudGVkaXRhYmxlIGlmcmFtZSBzaG91bGQgc2VsZWN0IHRoZSBpZnJhbWUgaXRzZWxmICh0byBo
ZWxwIHRoZSB1c2VyIGRlbGV0ZSB0aGUgaWZyYW1lKSBvbmx5IGlmIgotICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDE5KSB3aWR0aCAyMTk6ICJ0aGUgaWZyYW1lIGlzIGluIGFuIGVkaXRhYmxlIHJl
Z2lvbi4gIgotICAgICAgICAgIHRleHQgcnVuIGF0ICgyMTksMTkpIHdpZHRoIDQzMDogIlRoaXMg
dGVzdCBsb2FkcyAuLi9yZXNvdXJjZXMvc2VsZWN0LWFsbC1pZnJhbWUtc3JjLmh0bWwgaW50byBh
biBpZnJhbWUuICIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoNjQ5LDE5KSB3aWR0aCA5ODogIlRo
YXQgZmlsZSBkb2VzIGEiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMzgpIHdpZHRoIDEyMzog
IlNlbGVjdCBBbGwgKyBEZWxldGUuICIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTIzLDM4KSB3
aWR0aCAxNzE6ICJUd28gdGhpbmdzIHNob3VsZCBoYXBwZW46IgotICAgICAgUmVuZGVyQmxvY2sg
e1VMfSBhdCAoMCwzMTEpIHNpemUgNzg0eDU3Ci0gICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0g
YXQgKDQwLDApIHNpemUgNzQ0eDM4Ci0gICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoLTE3
LDApIHNpemUgN3gxOTogYnVsbGV0Ci0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgNzI4eDM4Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0NTE6
ICJUaGUgU2VsZWN0IEFsbCBvcGVyYXRpb24gc2hvdWxkIG5vdCBzZWxlY3QgdGhlIGlmcmFtZSwg
b25seSBpdCdzIGNvbnRlbnRzLiAiCi0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNDUxLDApIHdp
ZHRoIDI3NzogIlRoZSByZXN1bHRzIG9mIHRoZSBTZWxlY3QgQWxsIHdpbGwgYmUgYXBwYXJlbnQi
Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOSkgd2lkdGggNDY0OiAiZnJvbSB0aGUgZGVs
ZWdhdGUgbWVzc2FnZXMgdGhhdCBEdW1wUmVuZGVyVHJlZSByZWNlaXZlcyBhbmQgZHVtcHMuIgot
ICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwzOCkgc2l6ZSA3NDR4MTkKLSAgICAg
ICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgtMTcsMCkgc2l6ZSA3eDE5OiBidWxsZXQKLSAgICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzNDJ4MTkKLSAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDM0MjogIlRoZSBjb250ZW50cyBvZiB0aGUgZWRpdGFi
bGUgaWZyYW1lIHNob3VsZCBiZSBkZWxldGVkLiIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU2NDZiNS4uYzUwZDU2OCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MiBAQAorMjAwOS0wMi0wNSAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPiBhbmQgRXJp
YyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNYWtlIGN1cnNvciBwb3NpdGlvbnMgbWF0Y2ggSUU2L0lFNy9G
RjMgd2hlbiBjbGlja2luZyBpbiBtYXJnaW5zL3BhZGRpbmcKKyAgICAgICAgYXJvdW5kIGRpdnMg
aW5zaWRlIGVkaXRhYmxlIHJlZ2lvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzYwNQorCisgICAgICAgIEZpeCBjbGlja3Mgb3V0c2lkZSBlZGl0
YWJsZSByZWdpb25zIGZyb20gZm9jdXNpbmcgdGhlIGVkaXRhYmxlIHJlZ2lvbi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjA3CisKKyAgICAgICAg
UmVtb3ZlZCBlZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS5o
dG1sIGFzIGl0J3MKKyAgICAgICAgbm90IGFzIHVzZWZ1bCBhcyBvdXIgbmV3IHRlc3RzLgorCisg
ICAgICAgIENsZWFuIHVwIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvckNvb3JkaW5hdGVzIHRvIHJl
bW92ZSBkZWFkIGNvZGUsCisgICAgICAgIGR1cGxpY2F0ZSBjb2RlLCBhbmQgZ2VuZXJhbGx5IG1h
a2UgaXQgbW9yZSByZWFkYWJsZS4KKworICAgICAgICBUZXN0czogZWRpdGluZy9zZWxlY3Rpb24v
Y2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2Lmh0bWwKKyAgICAgICAgICAgICAg
IGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLXBhZGRpbmctd2l0aC1tdWx0aXBsZS1saW5lLWJv
eGVzLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUt
ZWRpdGFibGUtZGl2Lmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbjo6Y2Fub25pY2FsUG9zaXRpb24p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpwb3NpdGlvbkZvclBvaW50UmVzcGVjdGluZ0VkaXRpbmdCb3VuZGFyaWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyKToKKwogMjAwOS0wMi0xMiAg
RGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSB0aGUgZnVuY3Rp
b25zIHRoYXQgcGFpbnQgYm9yZGVycywgYm94IHNoYWRvd3MgYW5kIGJvcmRlciBpbWFnZXMgaW50
byBSZW5kZXJCb3hNb2RlbE9iamVjdC4gIGRyYXdCb3JkZXIgYW5kIGRyYXdCb3JkZXJBcmMsIGJl
Y2F1c2UgdGhleSBhcmUgdXNlZApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQ
b3NpdGlvbi5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAppbmRleCBl
ZmNkNTBkLi41MjhmMzM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0
aW9uLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcApAQCAtNDc2
LDkgKzQ3NiwxMyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmNhbm9uaWNhbFBvc2l0aW9u
KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKICAgICBOb2RlKiBuZXh0Tm9kZSA9IG5leHQubm9k
ZSgpOwogICAgIE5vZGUqIHByZXZOb2RlID0gcHJldi5ub2RlKCk7CiAKKyAgICAvLyBJZiB0aGUg
Ym9keSBpcyBudWxsLCB0aGVyZSBpcyBubyB2aXNpYmxlIHBvc2l0aW9uLgorICAgIGlmICghbm9k
ZS0+b3duZXJEb2N1bWVudCgpLT5ib2R5KCkpCisgICAgICAgIHJldHVybiBQb3NpdGlvbigpOwor
CiAgICAgLy8gVGhlIG5ldyBwb3NpdGlvbiBtdXN0IGJlIGluIHRoZSBzYW1lIGVkaXRhYmxlIGVs
ZW1lbnQuIEVuZm9yY2UgdGhhdCBmaXJzdC4KICAgICAvLyBVbmxlc3MgdGhlIGRlc2NlbnQgaXMg
ZnJvbSBhIG5vbi1lZGl0YWJsZSBodG1sIGVsZW1lbnQgdG8gYW4gZWRpdGFibGUgYm9keS4KLSAg
ICBpZiAobm9kZS0+aGFzVGFnTmFtZShodG1sVGFnKSAmJiAhbm9kZS0+aXNDb250ZW50RWRpdGFi
bGUoKSkKKyAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShodG1sVGFnKSAmJiAhbm9kZS0+aXNDb250
ZW50RWRpdGFibGUoKSAmJiBub2RlLT5vd25lckRvY3VtZW50KCktPmJvZHkoKS0+aXNDb250ZW50
RWRpdGFibGUoKSkKICAgICAgICAgcmV0dXJuIG5leHQuaXNOb3ROdWxsKCkgPyBuZXh0IDogcHJl
djsKIAogICAgIE5vZGUqIGVkaXRpbmdSb290ID0gZWRpdGFibGVSb290Rm9yUG9zaXRpb24ocG9z
aXRpb24pOwpAQCAtNDkyLDEwICs0OTYsMTAgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpj
YW5vbmljYWxQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiAgICAgYm9vbCBuZXh0
SXNJblNhbWVFZGl0YWJsZUVsZW1lbnQgPSBuZXh0Tm9kZSAmJiBlZGl0YWJsZVJvb3RGb3JQb3Np
dGlvbihuZXh0KSA9PSBlZGl0aW5nUm9vdDsKICAgICBpZiAocHJldklzSW5TYW1lRWRpdGFibGVF
bGVtZW50ICYmICFuZXh0SXNJblNhbWVFZGl0YWJsZUVsZW1lbnQpCiAgICAgICAgIHJldHVybiBw
cmV2OwotICAgICAgICAKKwogICAgIGlmIChuZXh0SXNJblNhbWVFZGl0YWJsZUVsZW1lbnQgJiYg
IXByZXZJc0luU2FtZUVkaXRhYmxlRWxlbWVudCkKICAgICAgICAgcmV0dXJuIG5leHQ7Ci0gICAg
ICAgIAorCiAgICAgaWYgKCFuZXh0SXNJblNhbWVFZGl0YWJsZUVsZW1lbnQgJiYgIXByZXZJc0lu
U2FtZUVkaXRhYmxlRWxlbWVudCkKICAgICAgICAgcmV0dXJuIFBvc2l0aW9uKCk7CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA0ZGM1YjQyLi5iYjY2YWI5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCkBAIC0zMzgyLDExOCArMzM4MiwxMTQgQEAgUG9zaXRpb24gUmVuZGVy
QmxvY2s6OnBvc2l0aW9uRm9yUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgYm9vbCBz
dGFydCkgY28KICAgICByZXR1cm4gUG9zaXRpb24obiwgb2Zmc2V0KTsKIH0KIAorLy8gRklYTUU6
IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGdvIG9uIFJlbmRlck9iamVjdCBhcyBhbiBpbnN0YW5jZSBt
ZXRob2QuIFRoZW4KKy8vIGFsbCBjYXNlcyBpbiB3aGljaCBwb3NpdGlvbkZvckNvb3JkaW5hdGVz
IHJlY3VycyBjb3VsZCBjYWxsIHRoaXMgaW5zdGVhZCB0bworLy8gcHJldmVudCBjcm9zc2luZyBl
ZGl0YWJsZSBib3VuZGFyaWVzLiBUaGlzIHdvdWxkIHJlcXVpcmUgbWFueSB0ZXN0cy4KK3N0YXRp
YyBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludFJlc3BlY3RpbmdFZGl0aW5nQm91bmRh
cmllcyhSZW5kZXJCb3gqIHBhcmVudCwgUmVuZGVyQm94KiBjaGlsZCwgY29uc3QgSW50UG9pbnQm
IHBhcmVudENvb3JkcykKK3sKKyAgICBpbnQgeEluQ2hpbGRDb29yZHMgPSBwYXJlbnRDb29yZHMu
eCgpIC0gY2hpbGQtPngoKTsKKyAgICBpbnQgeUluQ2hpbGRDb29yZHMgPSBwYXJlbnRDb29yZHMu
eSgpIC0gY2hpbGQtPnkoKTsKKworICAgIC8vIElmIHRoaXMgaXMgYW4gYW5vbnltb3VzIHJlbmRl
cmVyLCB3ZSBqdXN0IHJlY3VyIG5vcm1hbGx5CisgICAgTm9kZSogY2hpbGROb2RlID0gY2hpbGQt
Pm5vZGUoKTsKKyAgICBpZiAoIWNoaWxkTm9kZSkKKyAgICAgICAgcmV0dXJuIGNoaWxkLT5wb3Np
dGlvbkZvckNvb3JkaW5hdGVzKHhJbkNoaWxkQ29vcmRzLCB5SW5DaGlsZENvb3Jkcyk7CisKKyAg
ICAvLyBPdGhlcndpc2UsIGZpcnN0IG1ha2Ugc3VyZSB0aGF0IHRoZSBlZGl0YWJpbGl0eSBvZiB0
aGUgcGFyZW50IGFuZCBjaGlsZCBhZ3JlZS4KKyAgICAvLyBJZiB0aGV5IGRvbid0IGFncmVlLCB0
aGVuIHdlIHJldHVybiBhIHZpc2libGUgcG9zaXRpb24ganVzdCBiZWZvcmUgb3IgYWZ0ZXIgdGhl
IGNoaWxkCisgICAgUmVuZGVyT2JqZWN0KiBhbmNlc3RvciA9IHBhcmVudDsKKyAgICB3aGlsZSAo
YW5jZXN0b3IgJiYgIWFuY2VzdG9yLT5ub2RlKCkpCisgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0
b3ItPnBhcmVudCgpOworCisgICAgLy8gSWYgd2UgY2FuJ3QgZmluZCBhbiBhbmNlc3RvciB0byBj
aGVjayBlZGl0YWJpbGl0eSBvbiwgb3IgZWRpdGFiaWxpdHkgaXMgdW5jaGFuZ2VkLCB3ZSByZWN1
ciBsaWtlIG5vcm1hbAorICAgIGlmICghYW5jZXN0b3IgfHwgYW5jZXN0b3ItPm5vZGUoKS0+aXND
b250ZW50RWRpdGFibGUoKSA9PSBjaGlsZE5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAg
ICAgIHJldHVybiBjaGlsZC0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyh4SW5DaGlsZENvb3Jkcywg
eUluQ2hpbGRDb29yZHMpOworCisgICAgLy8gT3RoZXJ3aXNlIHJldHVybiBiZWZvcmUgb3IgYWZ0
ZXIgdGhlIGNoaWxkLCBkZXBlbmRpbmcgb24gaWYgdGhlIGNsaWNrIHdhcyBsZWZ0IG9yIHJpZ2h0
IG9mIHRoZSBjaGlsZAorICAgIGludCBjaGlsZE1pZFggPSBjaGlsZC0+d2lkdGgoKSAvIDI7Cisg
ICAgaWYgKHhJbkNoaWxkQ29vcmRzIDwgY2hpbGRNaWRYKQorICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKGFuY2VzdG9yLT5ub2RlKCksIGNoaWxkTm9kZS0+bm9kZUluZGV4KCksIERPV05T
VFJFQU0pOworICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oYW5jZXN0b3ItPm5vZGUoKSwgY2hp
bGROb2RlLT5ub2RlSW5kZXgoKSArIDEsIFVQU1RSRUFNKTsKK30KKworc3RhdGljIFZpc2libGVQ
b3NpdGlvbiBwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKFJlbmRlckJsb2NrKiBi
bG9jaywgY29uc3QgSW50UG9pbnQmIHBvaW50SW5Db250ZW50cykKK3sKKyAgICBBU1NFUlQoYmxv
Y2stPmNoaWxkcmVuSW5saW5lKCkpOworCisgICAgaWYgKCFibG9jay0+Zmlyc3RSb290Qm94KCkp
CisgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oYmxvY2stPm5vZGUoKSwgMCwgRE9XTlNU
UkVBTSk7CisKKyAgICBJbmxpbmVCb3gqIGNsb3Nlc3RCb3ggPSAwOworICAgIC8vIGxvb2sgZm9y
IHRoZSBjbG9zZXN0IGxpbmUgYm94IGluIHRoZSByb290IGJveCB3aGljaCBpcyBhdCB0aGUgcGFz
c2VkLWluIHkgY29vcmRpbmF0ZQorICAgIGZvciAoUm9vdElubGluZUJveCogcm9vdCA9IGJsb2Nr
LT5maXJzdFJvb3RCb3goKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm5leHRSb290Qm94KCkpIHsKKyAg
ICAgICAgaW50IGJvdHRvbTsKKyAgICAgICAgLy8gc2V0IHRoZSBib3R0b20gYmFzZWQgb24gd2hl
dGhlciB0aGVyZSBpcyBhIG5leHQgcm9vdCBib3gKKyAgICAgICAgaWYgKHJvb3QtPm5leHRSb290
Qm94KCkpCisgICAgICAgICAgICAvLyBGSVhNRTogbWFrZSB0aGUgYnJlYWsgcG9pbnQgaGFsZndh
eSBiZXR3ZWVuIHRoZSBib3R0b20gb2YgdGhlIHByZXZpb3VzIHJvb3QgYm94IGFuZCB0aGUgdG9w
IG9mIHRoZSBuZXh0IHJvb3QgYm94CisgICAgICAgICAgICBib3R0b20gPSByb290LT5uZXh0Um9v
dEJveCgpLT50b3BPdmVyZmxvdygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBib3R0b20g
PSByb290LT5ib3R0b21PdmVyZmxvdygpICsgdmVydGljYWxMaW5lQ2xpY2tGdWRnZUZhY3RvcjsK
KyAgICAgICAgLy8gY2hlY2sgaWYgdGhpcyByb290IGxpbmUgYm94IGlzIGxvY2F0ZWQgYXQgdGhp
cyB5IGNvb3JkaW5hdGUKKyAgICAgICAgaWYgKHBvaW50SW5Db250ZW50cy55KCkgPCBib3R0b20g
JiYgcm9vdC0+Zmlyc3RDaGlsZCgpKSB7CisgICAgICAgICAgICBjbG9zZXN0Qm94ID0gcm9vdC0+
Y2xvc2VzdExlYWZDaGlsZEZvclhQb3MocG9pbnRJbkNvbnRlbnRzLngoKSk7CisgICAgICAgICAg
ICBpZiAoY2xvc2VzdEJveCkKKyAgICAgICAgICAgICAgICAvLyBwYXNzIHRoZSBib3ggYSB5IHBv
c2l0aW9uIHRoYXQgaXMgaW5zaWRlIGl0CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyB5IGNvb3JkaW5hdGUgaXMgYmVsb3cgbGFzdCByb290IGxpbmUg
Ym94LCBwcmV0ZW5kIHdlIGhpdCBpdAorICAgIGlmICghY2xvc2VzdEJveCkKKyAgICAgICAgY2xv
c2VzdEJveCA9IGJsb2NrLT5sYXN0Um9vdEJveCgpLT5jbG9zZXN0TGVhZkNoaWxkRm9yWFBvcyhw
b2ludEluQ29udGVudHMueCgpKTsKKworICAgIGlmIChjbG9zZXN0Qm94KSB7CisgICAgICAgIC8v
IHBhc3MgdGhlIGJveCBhIHkgcG9zaXRpb24gdGhhdCBpcyBpbnNpZGUgaXQKKyAgICAgICAgcmV0
dXJuIGNsb3Nlc3RCb3gtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMocG9pbnRJ
bkNvbnRlbnRzLngoKSwgY2xvc2VzdEJveC0+bV95KTsKKyAgICB9CisKKyAgICAvLyBDYW4ndCBy
ZWFjaCB0aGlzLiAgV2UgaGF2ZSBhIHJvb3QgbGluZSBib3gsIGJ1dCBpdCBoYXMgbm8ga2lkcy4K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGJs
b2NrLT5ub2RlKCksIDAsIERPV05TVFJFQU0pOworfQorCiBWaXNpYmxlUG9zaXRpb24gUmVuZGVy
QmxvY2s6OnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoaW50IHgsIGludCB5KQogewogICAgIGlmIChp
c1RhYmxlKCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJCb3g6OnBvc2l0aW9uRm9yQ29vcmRpbmF0
ZXMoeCwgeSk7IAogCi0gICAgaW50IHRvcCA9IGJvcmRlclRvcCgpOwotICAgIGludCBib3R0b20g
PSB0b3AgKyBwYWRkaW5nVG9wKCkgKyBjb250ZW50SGVpZ2h0KCkgKyBwYWRkaW5nQm90dG9tKCk7
Ci0KLSAgICBpbnQgbGVmdCA9IGJvcmRlckxlZnQoKTsKLSAgICBpbnQgcmlnaHQgPSBsZWZ0ICsg
cGFkZGluZ0xlZnQoKSArIGNvbnRlbnRXaWR0aCgpICsgcGFkZGluZ1JpZ2h0KCk7Ci0KLSAgICBO
b2RlKiBuID0gbm9kZSgpOwotICAgIAogICAgIGludCBjb250ZW50c1ggPSB4OwogICAgIGludCBj
b250ZW50c1kgPSB5OwogICAgIG9mZnNldEZvckNvbnRlbnRzKGNvbnRlbnRzWCwgY29udGVudHNZ
KTsKKyAgICBJbnRQb2ludCBwb2ludEluQ29udGVudHMoY29udGVudHNYLCBjb250ZW50c1kpOwog
CiAgICAgaWYgKGlzUmVwbGFjZWQoKSkgewogICAgICAgICBpZiAoeSA8IDAgfHwgeSA8IGhlaWdo
dCgpICYmIHggPCAwKQotICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihuLCBjYXJl
dE1pbk9mZnNldCgpLCBET1dOU1RSRUFNKTsKKyAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9z
aXRpb24obm9kZSgpLCBjYXJldE1pbk9mZnNldCgpLCBET1dOU1RSRUFNKTsKICAgICAgICAgaWYg
KHkgPj0gaGVpZ2h0KCkgfHwgeSA+PSAwICYmIHggPj0gd2lkdGgoKSkKLSAgICAgICAgICAgIHJl
dHVybiBWaXNpYmxlUG9zaXRpb24obiwgY2FyZXRNYXhPZmZzZXQoKSwgRE9XTlNUUkVBTSk7Cisg
ICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG5vZGUoKSwgY2FyZXRNYXhPZmZzZXQo
KSwgRE9XTlNUUkVBTSk7CiAgICAgfSAKIAotICAgIC8vIElmIHdlIHN0YXJ0IGluc2lkZSB0aGUg
c2hhZG93IHRyZWUsIHdlIHdpbGwgc3RheSBpbnNpZGUgKGV2ZW4gaWYgdGhlIHBvaW50IGlzIGFi
b3ZlIG9yIGJlbG93KS4KLSAgICBpZiAoIShuICYmIG4tPmlzU2hhZG93Tm9kZSgpKSAmJiAhY2hp
bGRyZW5JbmxpbmUoKSkgewotICAgICAgICAvLyBEb24ndCByZXR1cm4gcG9zaXRpb25zIGluc2lk
ZSBlZGl0YWJsZSByb290cyBmb3IgY29vcmRpbmF0ZXMgb3V0c2lkZSB0aG9zZSByb290cywgZXhj
ZXB0IGZvciBjb29yZGluYXRlcyBvdXRzaWRlCi0gICAgICAgIC8vIGEgZG9jdW1lbnQgdGhhdCBp
cyBlbnRpcmVseSBlZGl0YWJsZS4KLSAgICAgICAgYm9vbCBpc0VkaXRhYmxlUm9vdCA9IG4gJiYg
bi0+cm9vdEVkaXRhYmxlRWxlbWVudCgpID09IG4gJiYgIW4tPmhhc1RhZ05hbWUoYm9keVRhZykg
JiYgIW4tPmhhc1RhZ05hbWUoaHRtbFRhZyk7Ci0KLSAgICAgICAgaWYgKHkgPCB0b3AgfHwgKGlz
RWRpdGFibGVSb290ICYmICh5IDwgYm90dG9tICYmIHggPCBsZWZ0KSkpIHsKLSAgICAgICAgICAg
IGlmICghaXNFZGl0YWJsZVJvb3QpCi0gICAgICAgICAgICAgICAgaWYgKFJlbmRlckJveCogYyA9
IGZpcnN0Q2hpbGRCb3goKSkgeyAvLyBGSVhNRTogVGhpcyBjb2RlIGRvZXNuJ3QgbWFrZSBhbnkg
c2Vuc2UuICBUaGlzIGNoaWxkIGNvdWxkIGJlIGFuIGlubGluZSBvciBhIHBvc2l0aW9uZWQgZWxl
bWVudCBvciBhIGZsb2F0LCBldGMuCi0gICAgICAgICAgICAgICAgICAgIFZpc2libGVQb3NpdGlv
biBwID0gYy0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyhjb250ZW50c1ggLSBjLT54KCksIGNvbnRl
bnRzWSAtIGMtPnkoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwLmlzTm90TnVsbCgpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHA7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKG4pIHsKLSAgICAgICAgICAgICAgICBpZiAoTm9kZSogc3AgPSBuLT5zaGFk
b3dQYXJlbnROb2RlKCkpCi0gICAgICAgICAgICAgICAgICAgIG4gPSBzcDsKLSAgICAgICAgICAg
ICAgICBpZiAoTm9kZSogcCA9IG4tPnBhcmVudCgpKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKHAsIG4tPm5vZGVJbmRleCgpLCBET1dOU1RSRUFNKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obiwgMCwgRE9XTlNU
UkVBTSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoeSA+PSBib3R0b20gfHwgKGlzRWRpdGFi
bGVSb290ICYmICh5ID49IHRvcCAmJiB4ID49IHJpZ2h0KSkpIHsKLSAgICAgICAgICAgIGlmICgh
aXNFZGl0YWJsZVJvb3QpCi0gICAgICAgICAgICAgICAgaWYgKFJlbmRlckJveCogYyA9IGxhc3RD
aGlsZEJveCgpKSB7IC8vIEZJWE1FOiBUaGlzIGNvZGUgZG9lc24ndCBtYWtlIGFueSBzZW5zZS4g
IFRoaXMgY2hpbGQgY291bGQgYmUgYW4gaW5saW5lIG9yIGEgcG9zaXRpb25lZCBlbGVtZW50IG9y
IGEgZmxvYXQsIGV0Yy4KLSAgICAgICAgICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAgPSBj
LT5wb3NpdGlvbkZvckNvb3JkaW5hdGVzKGNvbnRlbnRzWCAtIGMtPngoKSwgY29udGVudHNZIC0g
Yy0+eSgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHAuaXNOb3ROdWxsKCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAobikgewotICAgICAgICAgICAgICAgIGlmIChOb2RlKiBzcCA9IG4tPnNoYWRvd1BhcmVu
dE5vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgbiA9IHNwOwotICAgICAgICAgICAgICAgIGlm
IChOb2RlKiBwID0gbi0+cGFyZW50KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNp
YmxlUG9zaXRpb24ocCwgbi0+bm9kZUluZGV4KCkgKyAxLCBET1dOU1RSRUFNKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obiwgMCwgRE9XTlNUUkVB
TSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkgewotICAg
ICAgICBpZiAoIWZpcnN0Um9vdEJveCgpKQotICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3Np
dGlvbihuLCAwLCBET1dOU1RSRUFNKTsKLQotICAgICAgICBpZiAoY29udGVudHNZIDwgZmlyc3RS
b290Qm94KCktPnRvcE92ZXJmbG93KCkgLSB2ZXJ0aWNhbExpbmVDbGlja0Z1ZGdlRmFjdG9yKQot
ICAgICAgICAgICAgLy8geSBjb29yZGluYXRlIGlzIGFib3ZlIGZpcnN0IHJvb3QgbGluZSBib3gK
LSAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24ocG9zaXRpb25Gb3JCb3goZmlyc3RS
b290Qm94KCktPmZpcnN0TGVhZkNoaWxkKCksIHRydWUpLCBET1dOU1RSRUFNKTsKLSAgICAgICAg
Ci0gICAgICAgIC8vIGxvb2sgZm9yIHRoZSBjbG9zZXN0IGxpbmUgYm94IGluIHRoZSByb290IGJv
eCB3aGljaCBpcyBhdCB0aGUgcGFzc2VkLWluIHkgY29vcmRpbmF0ZQotICAgICAgICBmb3IgKFJv
b3RJbmxpbmVCb3gqIHJvb3QgPSBmaXJzdFJvb3RCb3goKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm5l
eHRSb290Qm94KCkpIHsKLSAgICAgICAgICAgIC8vIHNldCB0aGUgYm90dG9tIGJhc2VkIG9uIHdo
ZXRoZXIgdGhlcmUgaXMgYSBuZXh0IHJvb3QgYm94Ci0gICAgICAgICAgICBpZiAocm9vdC0+bmV4
dFJvb3RCb3goKSkKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogbWFrZSB0aGUgYnJlYWsgcG9p
bnQgaGFsZndheSBiZXR3ZWVuIHRoZSBib3R0b20gb2YgdGhlIHByZXZpb3VzIHJvb3QgYm94IGFu
ZCB0aGUgdG9wIG9mIHRoZSBuZXh0IHJvb3QgYm94Ci0gICAgICAgICAgICAgICAgYm90dG9tID0g
cm9vdC0+bmV4dFJvb3RCb3goKS0+dG9wT3ZlcmZsb3coKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBib3R0b20gPSByb290LT5ib3R0b21PdmVyZmxvdygpICsgdmVydGljYWxM
aW5lQ2xpY2tGdWRnZUZhY3RvcjsKLSAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoaXMgcm9vdCBs
aW5lIGJveCBpcyBsb2NhdGVkIGF0IHRoaXMgeSBjb29yZGluYXRlCi0gICAgICAgICAgICBpZiAo
Y29udGVudHNZIDwgYm90dG9tICYmIHJvb3QtPmZpcnN0Q2hpbGQoKSkgewotICAgICAgICAgICAg
ICAgIElubGluZUJveCogY2xvc2VzdEJveCA9IHJvb3QtPmNsb3Nlc3RMZWFmQ2hpbGRGb3JYUG9z
KHgpOwotICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0Qm94KQotICAgICAgICAgICAgICAgICAg
ICAvLyBwYXNzIHRoZSBib3ggYSB5IHBvc2l0aW9uIHRoYXQgaXMgaW5zaWRlIGl0Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjbG9zZXN0Qm94LT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvckNv
b3JkaW5hdGVzKGNvbnRlbnRzWCwgY2xvc2VzdEJveC0+bV95KTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgICAgIGlmIChsYXN0Um9vdEJveCgpKQotICAgICAgICAgICAgLy8geSBj
b29yZGluYXRlIGlzIGJlbG93IGxhc3Qgcm9vdCBsaW5lIGJveAotICAgICAgICAgICAgcmV0dXJu
IFZpc2libGVQb3NpdGlvbihwb3NpdGlvbkZvckJveChsYXN0Um9vdEJveCgpLT5sYXN0TGVhZkNo
aWxkKCksIGZhbHNlKSwgRE9XTlNUUkVBTSk7Ci0KLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3Np
dGlvbihuLCAwLCBET1dOU1RSRUFNKTsKKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uRm9yUG9pbnRX
aXRoSW5saW5lQ2hpbGRyZW4odGhpcywgcG9pbnRJbkNvbnRlbnRzKTsKICAgICB9Ci0gICAgCi0g
ICAgLy8gU2VlIGlmIGFueSBjaGlsZCBibG9ja3MgZXhpc3QgYXQgdGhpcyB5IGNvb3JkaW5hdGUu
CisKKyAgICAvLyBDaGVjayB0b3AvYm90dG9tIGNoaWxkLW1hcmdpbi9wYXJlbnQtcGFkZGluZyBm
b3IgY2xpY2tzIGFuZCBwbGFjZSB0aGVtIGluIHRoZSBmaXJzdC9sYXN0IGNoaWxkCisgICAgLy8g
RklYTUU6IFRoaXMgd2lsbCBub3QgY29ycmVjdGx5IGhhbmRsZSBmaXJzdCBvciBsYXN0IGNoaWxk
cmVuIGJlaW5nIHBvc2l0aW9uZWQgb3Igbm9uLXZpc2libGUKICAgICBpZiAoZmlyc3RDaGlsZEJv
eCgpICYmIGNvbnRlbnRzWSA8IGZpcnN0Q2hpbGRCb3goKS0+eSgpKQotICAgICAgICByZXR1cm4g
VmlzaWJsZVBvc2l0aW9uKG4sIDAsIERPV05TVFJFQU0pOwotICAgIGZvciAoUmVuZGVyQm94KiBy
ZW5kZXJlciA9IGZpcnN0Q2hpbGRCb3goKTsgcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXIt
Pm5leHRTaWJsaW5nQm94KCkpIHsKLSAgICAgICAgaWYgKHJlbmRlcmVyLT5oZWlnaHQoKSA9PSAw
IHx8IHJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCByZW5kZXJl
ci0+aXNGbG9hdGluZ09yUG9zaXRpb25lZCgpKQorICAgICAgICByZXR1cm4gcG9zaXRpb25Gb3JQ
b2ludFJlc3BlY3RpbmdFZGl0aW5nQm91bmRhcmllcyh0aGlzLCBmaXJzdENoaWxkQm94KCksIHBv
aW50SW5Db250ZW50cyk7CisgICAgaWYgKGxhc3RDaGlsZEJveCgpICYmIGNvbnRlbnRzWSA+IGxh
c3RDaGlsZEJveCgpLT55KCkpCisgICAgICAgIHJldHVybiBwb3NpdGlvbkZvclBvaW50UmVzcGVj
dGluZ0VkaXRpbmdCb3VuZGFyaWVzKHRoaXMsIGxhc3RDaGlsZEJveCgpLCBwb2ludEluQ29udGVu
dHMpOworCisgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkQm94ID0gZmlyc3RDaGlsZEJveCgpOyBj
aGlsZEJveDsgY2hpbGRCb3ggPSBjaGlsZEJveC0+bmV4dFNpYmxpbmdCb3goKSkgeworICAgICAg
ICBpZiAoY2hpbGRCb3gtPmhlaWdodCgpID09IDAgfHwgY2hpbGRCb3gtPnN0eWxlKCktPnZpc2li
aWxpdHkoKSAhPSBWSVNJQkxFIHx8IGNoaWxkQm94LT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgUmVuZGVyQm94KiBuZXh0ID0gcmVuZGVy
ZXItPm5leHRTaWJsaW5nQm94KCk7Ci0gICAgICAgIHdoaWxlIChuZXh0ICYmIG5leHQtPmlzRmxv
YXRpbmdPclBvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIG5leHQgPSBuZXh0LT5uZXh0U2libGlu
Z0JveCgpOwotICAgICAgICBpZiAobmV4dCkgCi0gICAgICAgICAgICBib3R0b20gPSBuZXh0LT55
KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJvdHRvbSA9IHRvcCArIHNjcm9sbEhlaWdo
dCgpOwotICAgICAgICBpZiAoY29udGVudHNZID49IHJlbmRlcmVyLT55KCkgJiYgY29udGVudHNZ
IDwgYm90dG9tKQotICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5wb3NpdGlvbkZvckNvb3Jk
aW5hdGVzKGNvbnRlbnRzWCAtIHJlbmRlcmVyLT54KCksIGNvbnRlbnRzWSAtIHJlbmRlcmVyLT55
KCkpOworICAgICAgICAvLyBXZSBoaXQgdGhpcyBjaGlsZCBpZiBvdXIgY2xpY2sgd2FzIGFib3Zl
IHRoZSBib3R0b20gb2YgaXRzIHBhZGRpbmcgYm94IChsaWtlIElFNi83IGFuZCBGRjMpCisgICAg
ICAgIGlmIChjb250ZW50c1kgPCBjaGlsZEJveC0+eSgpICsgY2hpbGRCb3gtPmhlaWdodCgpKQor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uRm9yUG9pbnRSZXNwZWN0aW5nRWRpdGluZ0JvdW5k
YXJpZXModGhpcywgY2hpbGRCb3gsIHBvaW50SW5Db250ZW50cyk7CiAgICAgfQotICAgIAorCisg
ICAgLy8gV2Ugb25seSBnZXQgaGVyZSBpZiB0aGVyZSBhcmUgbm8sIG9yIG9ubHkgZmxvYXRlZC9w
b3NpdGlvbmVkLCBvciBvbmx5CisgICAgLy8gbm9uLXZpc2libGUgYmxvY2sgY2hpbGRyZW4gYmVs
b3cgdGhlIGNsaWNrLgogICAgIHJldHVybiBSZW5kZXJCb3g6OnBvc2l0aW9uRm9yQ29vcmRpbmF0
ZXMoeCwgeSk7CiB9CiAKQEAgLTQ0NTEsNyArNDQ0Nyw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnVw
ZGF0ZUZpcnN0TGV0dGVyKCkKIHsKICAgICBpZiAoIWRvY3VtZW50KCktPnVzZXNGaXJzdExldHRl
clJ1bGVzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAvLyBEb24ndCByZWN1cnNlCisgICAgLy8g
RG9uJ3QgcmVjdXIKICAgICBpZiAoc3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVS
KQogICAgICAgICByZXR1cm47CiAK
</data>
<flag name="review"
          id="13409"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27927</attachid>
            <date>2009-02-24 13:25:45 -0800</date>
            <delta_ts>2009-02-24 13:32:51 -0800</delta_ts>
            <desc>Same patch, but synced to trunk for easier landing by eseidel.</desc>
            <filename>Fix-for-clicking-below-the-last-root-line-box-with-multiple-line-boxes..patch</filename>
            <type>text/plain</type>
            <size>46819</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">NGJiYTdkODE5NzRiM2VmNTdiOTk1OTA3YTNjNjQ2NGE1Yjk3MDE4MQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDYzODkyNDcu
LjhkZmM4M2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAwOS0wMi0wNSBPamFuIFZhZmFpIDxv
amFuQGNocm9taXVtLm9yZz4gYW5kIEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBjdXJzb3Ig
cG9zaXRpb25zIG1hdGNoIElFNi9JRTcvRkYzIHdoZW4gY2xpY2tpbmcgaW4gbWFyZ2lucy9wYWRk
aW5nCisgICAgICAgIGFyb3VuZCBkaXZzIGluc2lkZSBlZGl0YWJsZSByZWdpb25zLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MDUKKworICAgICAg
ICBGaXggY2xpY2tzIG91dHNpZGUgZWRpdGFibGUgcmVnaW9ucyBmcm9tIGZvY3VzaW5nIHRoZSBl
ZGl0YWJsZSByZWdpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzYwNworCisgICAgICAgIFJlbW92ZWQgZWRpdGluZy9zZWxlY3Rpb24vY29udGVu
dGVkaXRhYmxlLWNsaWNrLW91dHNpZGUuaHRtbCBhcyBpdCdzCisgICAgICAgIG5vdCBhcyB1c2Vm
dWwgYXMgb3VyIG5ldyB0ZXN0cy4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNr
LWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxl
LWRpdi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1w
YWRkaW5nLXdpdGgtbXVsdGlwbGUtbGluZS1ib3hlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLXBhZGRpbmctd2l0aC1tdWx0aXBsZS1s
aW5lLWJveGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNr
LW91dHNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRp
dGluZy9zZWxlY3Rpb24vY2xpY2stb3V0c2lkZS1lZGl0YWJsZS1kaXYuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvVEVN
UExBVEUuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2Vz
L2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5qczogQWRkZWQuCisgICAgICAg
ICogZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLWluLXBhZGRpbmctd2l0aC1tdWx0
aXBsZS1saW5lLWJveGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9y
ZXNvdXJjZXMvY2xpY2stb3V0c2lkZS1lZGl0YWJsZS1kaXYuanM6IEFkZGVkLgorICAgICAgICAq
IGVkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9qcy10ZXN0LXNlbGVjdGlvbi1zaGFyZWQuanM6
IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1taXNzaW5nLWltYWdl
Lmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRl
ZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLmNoZWNrc3VtOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2st
b3V0c2lkZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWZyb20tdGV4dGZpZWxkLW91
dHdhcmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxl
Y3Rpb24vc2VsZWN0LW1pc3NpbmctaW1hZ2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRm
b3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVj
dGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisKIDIwMDktMDIt
MjQgIEFkYW0gVHJlYXQgIDxhZGFtLnRyZWF0QHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0YWJsZS1kaXYtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNp
ZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5hOWYzZDExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDIzIEBACitFbnN1cmUgY3Vyc29yIHBsYWNlbWVudCBtYXRjaGVzIElFNi9J
RTcvRkYzIHdoZW4gY2xpY2tpbmcgYWJvdmUvYmVsb3cgbGluZXMgaW4gcGFkZGluZy4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtv
YmplY3QgVGV4dF0gb2Zmc2V0OiAwCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0
IFRleHRdIG9mZnNldDogMQorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0
XSBvZmZzZXQ6IDIKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zm
c2V0OiAwCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDog
MgorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDAKK1BB
U1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAxCitQQVNTIFNl
bGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMgorUEFTUyBTZWxlY3Rp
b24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDAKK1BBU1MgU2VsZWN0aW9uIGlz
IGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAxCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBu
b2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMgorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTog
W29iamVjdCBUZXh0XSBvZmZzZXQ6IDAKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmpl
Y3QgVGV4dF0gb2Zmc2V0OiAxCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRl
eHRdIG9mZnNldDogMgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNr
LWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdmNzU5MQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRl
LWVkaXRhYmxlLWRpdi5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qtc2VsZWN0aW9uLXNoYXJl
ZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NsaWNr
LWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2NsaWNrLWluLXBhZGRpbmctd2l0aC1tdWx0aXBsZS1saW5lLWJveGVzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLXBhZGRpbmctd2l0aC1tdWx0
aXBsZS1saW5lLWJveGVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi44ZGM3YzA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vY2xpY2staW4tcGFkZGluZy13aXRoLW11bHRpcGxlLWxpbmUtYm94ZXMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK0NsaWNrIGFib3ZlL2JlbmVhdGggdGhlIHdvcmQgRk9P
LiBOb3RpY2UgaG93IHRoZSBjdXJzb3IgZ29lcyBpbiB0aGUgcmlnaHQgcGxhY2UgKGFmdGVyIHRo
ZSBsZXR0ZXIgRikuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIFNlbGVj
dGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMQorUEFTUyBTZWxlY3Rpb24g
aXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1wYWRkaW5nLXdpdGgtbXVsdGlwbGUtbGluZS1ib3hl
cy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tcGFkZGluZy13
aXRoLW11bHRpcGxlLWxpbmUtYm94ZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43MTRjNDc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vY2xpY2staW4tcGFkZGluZy13aXRoLW11bHRpcGxlLWxpbmUtYm94ZXMuaHRtbApA
QCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9qcy10ZXN0LXNlbGVjdGlvbi1zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jbGljay1pbi1wYWRkaW5nLXdpdGgtbXVs
dGlwbGUtbGluZS1ib3hlcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUt
ZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4zZmM1NmY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stb3V0c2lkZS1lZGl0YWJsZS1kaXYtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMjAgQEAKK0Vuc3VyZSB0aGF0IGNsaWNraW5nIGluIHRoZSBtYXJnaW5z
IGFyb3VuZCBlZGl0YWJsZSBkaXZzIGRvZXMgbm90IGdyYW50IGZvY3VzLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDbGljayBAIDEwLCAxMCBkaWQgbm90IGNhdXNlIGZv
Y3VzLgorUEFTUyBDbGljayBAIDE3MCwgMTAgZGlkIG5vdCBjYXVzZSBmb2N1cy4KK1BBU1MgQ2xp
Y2sgQCAxMCwgMTcwIGRpZCBub3QgY2F1c2UgZm9jdXMuCitQQVNTIENsaWNrIEAgNzAsIDcwIGRp
ZCBub3QgY2F1c2UgZm9jdXMuCitQQVNTIENsaWNrIEAgMTcwLCA3MCBkaWQgbm90IGNhdXNlIGZv
Y3VzLgorUEFTUyBDbGljayBAIDI3MCwgNzAgZGlkIG5vdCBjYXVzZSBmb2N1cy4KK1BBU1MgQ2xp
Y2sgQCA3MCwgMTcwIGRpZCBub3QgY2F1c2UgZm9jdXMuCitQQVNTIENsaWNrIEAgMjcwLCAxNzAg
ZGlkIG5vdCBjYXVzZSBmb2N1cy4KK1BBU1MgQ2xpY2sgQCA3MCwgMjcwIGRpZCBub3QgY2F1c2Ug
Zm9jdXMuCitQQVNTIENsaWNrIEAgMTcwLCAyNzAgZGlkIG5vdCBjYXVzZSBmb2N1cy4KK1BBU1Mg
Q2xpY2sgQCAyNzAsIDI3MCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2Lmh0bWwgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1vdXRzaWRlLWVkaXRhYmxlLWRpdi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzMDg2NzAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1vdXRzaWRlLWVkaXRh
YmxlLWRpdi5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qtc2VsZWN0aW9uLXNoYXJlZC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NsaWNrLW91dHNp
ZGUtZWRpdGFibGUtZGl2LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxl
LWNsaWNrLW91dHNpZGUuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRl
bnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDkwZDhlYWUuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
Y29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEz
ICswLDAgQEAKLTxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRWRpdGluZ0NhbGxiYWNrcygpOwotPC9zY3JpcHQ+
Ci08ZGl2IHN0eWxlPSJ3aWR0aDogNDAwcHg7IGhlaWdodDogNTBweDsgcGFkZGluZzogMjVweCAw
IDAgMjVweDsgYmFja2dyb3VuZDogeWVsbG93OyI+PGRpdiBjb250ZW50ZWRpdGFibGU9InRydWUi
IHN0eWxlPSJiYWNrZ3JvdW5kOiB3aGl0ZTsgaGVpZ2h0OjIwcHg7IHdpZHRoOjEwMHB4Ij48L2Rp
dj48L2Rpdj4KLTxwPlRoaXMgdGVzdCBjbGlja3Mgb3V0c2lkZSBhbiBlZGl0YWJsZSBkaXYgZWxl
bWVudCwgYW5kIG11c3Qgbm90IHJlc3VsdCBpbiB0aGUgZWxlbWVudCByZWNlaXZpbmcgZm9jdXMu
IElmIHRoZSB0ZXN0IHN1Y2NlZWRzIHRoZSBlbGVtZW50IHNob3VsZCBub3QgaGF2ZSBhIGZvY3Vz
IHJpbmcuPC9wPgotPHNjcmlwdD4KLWlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbygyMjUsIDQ1KTsKLSAgICBldmVudFNlbmRlci5tb3VzZURvd24o
KTsKLSAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Ci19Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9URU1QTEFURS5odG1sIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU2ZTUwZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9URU1QTEFURS5odG1s
CkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qtc2VsZWN0aW9uLXNoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iWU9VUl9KU19GSUxFX0hFUkUiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9yZXNvdXJjZXMvY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2Lmpz
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLWluLW1hcmdp
bnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5jNTQxMzU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vcmVzb3VyY2VzL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5qcwpA
QCAtMCwwICsxLDkzIEBACitkZXNjcmlwdGlvbigiRW5zdXJlIGN1cnNvciBwbGFjZW1lbnQgbWF0
Y2hlcyBJRTYvSUU3L0ZGMyB3aGVuIGNsaWNraW5nIGFib3ZlL2JlbG93IGxpbmVzIGluIHBhZGRp
bmcuIikKKworZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW4gPSAwOworCit2YXIgZGl2ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitkaXYuc3R5bGUuY3NzVGV4dCA9ICJmb250LWZh
bWlseTogYWhlbTsgZm9udC1zaXplOiAyMHB4OyAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogeWVs
bG93OyB3aWR0aDogNDBweDsgaGVpZ2h0OiA4MHB4OyBwYWRkaW5nOiAyMHB4OyBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsiOworZGl2LmNvbnRlbnRFZGl0YWJsZSA9IHRydWU7CisKK3ZhciBmaXJz
dFRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiWFgiKTsKK3ZhciBmaXJzdERpdiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworZmlyc3REaXYuYXBwZW5kQ2hpbGQoZmlyc3RU
ZXh0KTsKK2ZpcnN0RGl2LnN0eWxlLmNzc1RleHQgPSAicGFkZGluZy1ib3R0b206IDE5cHg7IGJv
cmRlci1ib3R0b206IDFweCBzb2xpZCBwaW5rOyBtYXJnaW4tYm90dG9tOiAyMHB4IjsKK2Rpdi5h
cHBlbmRDaGlsZChmaXJzdERpdik7CisKK3ZhciBzZWNvbmRUZXh0ID0gZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoIllZIik7Cit2YXIgc2Vjb25kRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CitzZWNvbmREaXYuYXBwZW5kQ2hpbGQoc2Vjb25kVGV4dCk7CitkaXYuYXBwZW5kQ2hp
bGQoc2Vjb25kRGl2KTsKKworZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZGl2LCBkb2N1bWVu
dC5ib2R5LmZpcnN0Q2hpbGQpOworCitmdW5jdGlvbiBjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2Uo
eCwgeSwgbm9kZSwgb2Zmc2V0KSB7CisgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICBjbGlja0F0KHgsIHkpOworICAgICAgICBhc3NlcnRTZWxlY3Rpb25BdChub2RlLCBvZmZz
ZXQpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RzLnB1c2goeworICAgICAgICAgICAgdGVz
dEZ1bmN0aW9uOiBmdW5jdGlvbigpIHsgYXNzZXJ0UmFuZ2Uobm9kZSwgb2Zmc2V0KTsgfSwKKyAg
ICAgICAgICAgIGNsaWNrU3RyaW5nOiAiICIgKyB4ICsgIiwgIiArIHkgfQorICAgICAgICApCisg
ICAgfQorfQorCitmdW5jdGlvbiBwcmludENsaWNrU3RyaW5nRm9yV2FpdGluZ1Rlc3QoKQorewor
ICAgIGlmICghdGVzdHNbdGVzdEluZGV4XSkKKyAgICAgICAgcmV0dXJuOworICAgIGRlYnVnKCJX
YWl0aW5nIGZvciBjbGljayBAICIgKyB0ZXN0c1t0ZXN0SW5kZXhdLmNsaWNrU3RyaW5nKTsKK30K
KwordmFyIHRlc3RJbmRleCA9IDA7Cit2YXIgdGVzdHMgPSBbXTsKK2Z1bmN0aW9uIHJ1bkludGVy
YWN0aXZlVGVzdHMoKQoreworICAgIHRlc3RJbmRleCA9IDA7CisgICAgcHJpbnRDbGlja1N0cmlu
Z0ZvcldhaXRpbmdUZXN0KCk7CisgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZXVwIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGRlYnVnKCJHb3QgY2xpY2sgQCAiICsgZXZl
bnQuY2xpZW50WCArICIsICIgKyBldmVudC5jbGllbnRZKTsKKyAgICAgICAgdmFyIHRlc3QgPSB0
ZXN0c1t0ZXN0SW5kZXhdOworICAgICAgICBpZiAodGVzdCkgeworICAgICAgICAgICAgdGVzdC50
ZXN0RnVuY3Rpb24oKTsKKyAgICAgICAgICAgIHRlc3RJbmRleCsrOworICAgICAgICAgICAgcHJp
bnRDbGlja1N0cmluZ0ZvcldhaXRpbmdUZXN0KCk7CisgICAgICAgIH0KKyAgICB9LCBmYWxzZSk7
Cit9CisKKy8vIFdoZW4gY2xpY2tpbmcgYmV0d2VlbiBkaXZzIHNlcGFyYXRlZCBieSBtYXJnaW5z
IGluIGFuIGVkaXRhYmxlCisvLyB0ZXh0IHJlZ2lvbiwgdGhlIGJyb3dzZXJzIGRpZmZlciBpbiBi
ZWhhdmlvcjoKKy8vIEZGMzogdmVydGljYWwgcGFkZGluZyBib3ggKyBzb21lIHNvcnQgb2Ygb3Zl
cmhhbmcgZGVjZW50PworLy8gSUU2L0lFNzogdmVydGljYWwgcGFkZGluZyBib3gKKy8vIElFOCBi
MjogbWFyZ2luIGJveAorLy8gU2FmYXJpMzogbWFyZ2luIGJveCAoYnV0IGN1cnNvciBnb2VzIGF0
IGVuZCBvZiBsaW5lKQorCitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoMTAsIDEwLCBmaXJzdFRl
eHQsIDApOworY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKDQwLCAxMCwgZmlyc3RUZXh0LCAxKTsK
K2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSg3MCwgMTAsIGZpcnN0VGV4dCwgMik7CisKK2NsaWNr
U2hvdWxkUmVzdWx0SW5SYW5nZSgxMCwgMzAsIGZpcnN0VGV4dCwgMCk7CitjbGlja1Nob3VsZFJl
c3VsdEluUmFuZ2UoNzAsIDMwLCBmaXJzdFRleHQsIDIpOworCitjbGlja1Nob3VsZFJlc3VsdElu
UmFuZ2UoMTAsIDUwLCBmaXJzdFRleHQsIDApOworY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKDQw
LCA1MCwgZmlyc3RUZXh0LCAxKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSg3MCwgNTAsIGZp
cnN0VGV4dCwgMik7CisKKy8vIFdlJ3JlIGdvaW5nIHRvIGZvbGxvdyBJRSA3J3MgYmVoYXZpb3Ig
YW5kIHVzZSB0aGUgcGFkZGluZyBib3ggaGVpZ2h0CisvLyBmb3IgZGV0ZXJtaW5pbmcgaWYgdGhl
IGNsaWNrIGJlbG93IGEgZGl2IChpbiB0aGUgcGFkZGluZy9tYXJnaW4gcmVnaW9uKQorY2xpY2tT
aG91bGRSZXN1bHRJblJhbmdlKDEwLCA3MCwgc2Vjb25kVGV4dCwgMCk7CitjbGlja1Nob3VsZFJl
c3VsdEluUmFuZ2UoNDAsIDcwLCBzZWNvbmRUZXh0LCAxKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5S
YW5nZSg3MCwgNzAsIHNlY29uZFRleHQsIDIpOworCitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2Uo
MTAsIDExMCwgc2Vjb25kVGV4dCwgMCk7CitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNDAsIDEx
MCwgc2Vjb25kVGV4dCwgMSk7CitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNzAsIDExMCwgc2Vj
b25kVGV4dCwgMik7CisKKy8vIENsZWFuIHVwIGFmdGVyIG91cnNlbHZlcyBpZiB3ZSdyZSBub3Qg
YmVpbmcgcnVuIGluIHRoZSBicm93c2VyCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpOworfSBlbHNlIHsKKyAgICBydW5JbnRlcmFj
dGl2ZVRlc3RzKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLWluLXBh
ZGRpbmctd2l0aC1tdWx0aXBsZS1saW5lLWJveGVzLmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLWluLXBhZGRpbmctd2l0aC1tdWx0aXBsZS1saW5lLWJv
eGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwOGVhNjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xp
Y2staW4tcGFkZGluZy13aXRoLW11bHRpcGxlLWxpbmUtYm94ZXMuanMKQEAgLTAsMCArMSw2MiBA
QAorZGVzY3JpcHRpb24oIkNsaWNrIGFib3ZlL2JlbmVhdGggdGhlIHdvcmQgRk9PLiBOb3RpY2Ug
aG93IHRoZSBjdXJzb3IgZ29lcyBpbiB0aGUgcmlnaHQgcGxhY2UgKGFmdGVyIHRoZSBsZXR0ZXIg
RikuIikKKworZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW4gPSAwOworCit2YXIgZGl2ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CitkaXYuc3R5bGUuY3NzVGV4dCA9ICJmb250LWZh
bWlseTphaGVtOyB3aWR0aDo1MHB4OyBoZWlnaHQ6NjBweDsgYm9yZGVyOjFweCBzb2xpZCBibHVl
OyB3aGl0ZS1zcGFjZTpub3dyYXA7IG92ZXJmbG93OnNjcm9sbDsgcGFkZGluZzo1MHB4OyI7Citk
aXYuY29udGVudEVkaXRhYmxlID0gdHJ1ZTsKK2Rpdi5pbm5lckhUTUwgPSAiMTIzNDU8c3BhbiBp
ZD0nZm9vJz5GT088L3NwYW4+Njc4OTxzcGFuPkJBUjwvc3Bhbj4iOworZG9jdW1lbnQuYm9keS5p
bnNlcnRCZWZvcmUoZGl2LCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOworCitkaXYuc2Nyb2xs
TGVmdCA9IDUwOworCitmdW5jdGlvbiBjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoeCwgeSwgbm9k
ZSwgb2Zmc2V0KSB7CisgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBjbGlj
a0F0KHgsIHkpOworICAgICAgICBhc3NlcnRTZWxlY3Rpb25BdChub2RlLCBvZmZzZXQpOworICAg
IH0gZWxzZSB7CisgICAgICAgIHRlc3RzLnB1c2goeworICAgICAgICAgICAgdGVzdEZ1bmN0aW9u
OiBmdW5jdGlvbigpIHsgYXNzZXJ0UmFuZ2Uobm9kZSwgb2Zmc2V0KTsgfSwKKyAgICAgICAgICAg
IGNsaWNrU3RyaW5nOiAiICIgKyB4ICsgIiwgIiArIHkgfQorICAgICAgICApCisgICAgfQorfQor
CitmdW5jdGlvbiBwcmludENsaWNrU3RyaW5nRm9yV2FpdGluZ1Rlc3QoKQoreworICAgIGlmICgh
dGVzdHNbdGVzdEluZGV4XSkKKyAgICAgICAgcmV0dXJuOworICAgIGRlYnVnKCJXYWl0aW5nIGZv
ciBjbGljayBAICIgKyB0ZXN0c1t0ZXN0SW5kZXhdLmNsaWNrU3RyaW5nKTsKK30KKwordmFyIHRl
c3RJbmRleCA9IDA7Cit2YXIgdGVzdHMgPSBbXTsKK2Z1bmN0aW9uIHJ1bkludGVyYWN0aXZlVGVz
dHMoKQoreworICAgIHRlc3RJbmRleCA9IDA7CisgICAgcHJpbnRDbGlja1N0cmluZ0ZvcldhaXRp
bmdUZXN0KCk7CisgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwg
ZnVuY3Rpb24oKSB7CisgICAgICAgIGRlYnVnKCJHb3QgY2xpY2sgQCAiICsgZXZlbnQuY2xpZW50
WCArICIsICIgKyBldmVudC5jbGllbnRZKTsKKyAgICAgICAgdmFyIHRlc3QgPSB0ZXN0c1t0ZXN0
SW5kZXhdOworICAgICAgICBpZiAodGVzdCkgeworICAgICAgICAgICAgdGVzdC50ZXN0RnVuY3Rp
b24oKTsKKyAgICAgICAgICAgIHRlc3RJbmRleCsrOworICAgICAgICAgICAgcHJpbnRDbGlja1N0
cmluZ0ZvcldhaXRpbmdUZXN0KCk7CisgICAgICAgIH0KKyAgICB9LCBmYWxzZSk7Cit9CisKK3Zh
ciBmb28gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9vJyk7Cit2YXIgeCA9IGZvby5vZmZz
ZXRMZWZ0IC0gZGl2LnNjcm9sbExlZnQgKyAxMDsKKy8vIENsaWNrIDEwcHggYWZ0ZXIgdGhlIHN0
YXJ0IG9mIHRoZSBzcGFuIHNob3VsZCBwdXQgdGhlIGN1cnNvciByaWdodCBhZnRlciB0aGUgbGV0
dGVyIEYuCitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoeCwgZm9vLm9mZnNldFRvcCAtIDIwLCBm
b28uZmlyc3RDaGlsZCwgMSk7CitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoeCwgZm9vLm9mZnNl
dFRvcCArIDIwLCBmb28uZmlyc3RDaGlsZCwgMSk7CisKKy8vIENsZWFuIHVwIGFmdGVyIG91cnNl
bHZlcyBpZiB3ZSdyZSBub3QgYmVpbmcgcnVuIGluIHRoZSBicm93c2VyCitpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpOworfSBlbHNl
IHsKKyAgICBydW5JbnRlcmFjdGl2ZVRlc3RzKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVz
b3VyY2VzL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LmpzIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZmJkNzkKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2stb3V0c2lkZS1l
ZGl0YWJsZS1kaXYuanMKQEAgLTAsMCArMSw0OSBAQAorZGVzY3JpcHRpb24oIkVuc3VyZSB0aGF0
IGNsaWNraW5nIGluIHRoZSBtYXJnaW5zIGFyb3VuZCBlZGl0YWJsZSBkaXZzIGRvZXMgbm90IGdy
YW50IGZvY3VzLiIpCisKK2RvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luID0gIjIwcHgiOworCit2
YXIgb3V0ZXJEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK291dGVyRGl2LnN0
eWxlLmNzc1RleHQgPSAid2lkdGg6IDEwMHB4OyBwYWRkaW5nOiAxMDBweDsgYmFja2dyb3VuZC1j
b2xvcjogYmx1ZTsiOwordmFyIGlubmVyRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7Citpbm5lckRpdi5zdHlsZS5jc3NUZXh0ID0gImhlaWdodDogMTAwcHg7IGJvcmRlcjogMXB4
IHNvbGlkIHBpbms7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI7Citpbm5lckRpdi5jb250ZW50
RWRpdGFibGUgPSB0cnVlOworb3V0ZXJEaXYuYXBwZW5kQ2hpbGQoaW5uZXJEaXYpOworZG9jdW1l
bnQuYm9keS5pbnNlcnRCZWZvcmUob3V0ZXJEaXYsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7
CisKK3ZhciBsYXN0Q2xpY2tDYXVzZWRGb2N1cyA9IGZhbHNlOworZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBmdW5jdGlvbihlKSB7CisgICAgdmFy
IGxhc3RDbGljayA9IGUgfHwgd2luZG93LmV2ZW50OworICAgIGlmIChsYXN0Q2xpY2tDYXVzZWRG
b2N1cykgeworICAgICAgICB0ZXN0RmFpbGVkKCJDbGljayBAICIgKyBsYXN0Q2xpY2suY2xpZW50
WCArICIsICIgKyBsYXN0Q2xpY2suY2xpZW50WSArICIgY2F1c2VkIGlubmVyZGl2IHRvIGZvY3Vz
ISIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNsaWNrIEAgIiArIGxhc3RD
bGljay5jbGllbnRYICsgIiwgIiArIGxhc3RDbGljay5jbGllbnRZICsgIiBkaWQgbm90IGNhdXNl
IGZvY3VzLiIpOworICAgIH0KKyAgICBpbm5lckRpdi5ibHVyKCk7CisgICAgbGFzdENsaWNrQ2F1
c2VkRm9jdXMgPSBmYWxzZTsKK30sIGZhbHNlKTsKKworaW5uZXJEaXYuYWRkRXZlbnRMaXN0ZW5l
cigiZm9jdXMiLCBmdW5jdGlvbigpIHsKKyAgICBsYXN0Q2xpY2tDYXVzZWRGb2N1cyA9IHRydWU7
Cit9LCBmYWxzZSk7CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBjbGlja0F0KDEw
LCAxMCk7CisgICAgY2xpY2tBdCgxNzAsIDEwKTsKKyAgICBjbGlja0F0KDEwLCAxNzApOworCisg
ICAgY2xpY2tBdCg3MCwgNzApOworICAgIGNsaWNrQXQoMTcwLCA3MCk7CisgICAgY2xpY2tBdCgy
NzAsIDcwKTsKKworICAgIGNsaWNrQXQoNzAsIDE3MCk7CisgICAgY2xpY2tBdCgyNzAsIDE3MCk7
CisKKyAgICBjbGlja0F0KDcwLCAyNzApOworICAgIGNsaWNrQXQoMTcwLCAyNzApOworICAgIGNs
aWNrQXQoMjcwLCAyNzApOworfSBlbHNlIHsKKyAgICBkZWJ1ZygiVG8gdGVzdCwgY2ljayBhYm92
ZSBhbmQgdG8gdGhlIGxlZnQgb2YgdGhlIGJsdWUgYm94LCB0aGVuIGFib3ZlIGl0LCB0aGVuIHRv
IHRoZSBsZWZ0ICIgKworICAgICAgICAgICJvZiBpdCBhbmQgZmluYWxseSwgY2xpY2sgaW4gYWxs
IDggcmVnaW9ucyBhcm91bmQgdGhlIGdyZWVuIGRpdi4iKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9yZXNvdXJjZXMvanMtdGVzdC1zZWxlY3Rpb24tc2hhcmVkLmpzIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2pzLXRlc3Qtc2VsZWN0aW9uLXNoYXJlZC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTA2NGVkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2pzLXRlc3Qtc2VsZWN0
aW9uLXNoYXJlZC5qcwpAQCAtMCwwICsxLDQ0IEBACitmdW5jdGlvbiBvYmplY3RBc1N0cmluZyhv
YmplY3QsIHByb3BlcnRpZXMpIHsKKyAgICB2YXIgcmVzdWx0ID0gIlsiOworICAgIGZvciAodmFy
IHggPSAwOyB4IDwgcHJvcGVydGllcy5sZW5ndGg7IHgrKykgeworICAgICAgICB2YXIgcHJvcGVy
dHkgPSBwcm9wZXJ0aWVzW3hdOworICAgICAgICBpZiAoeCAhPSAwKQorICAgICAgICAgICAgcmVz
dWx0ICs9ICIgIjsKKworICAgICAgICB2YXIgdmFsdWUgPSBvYmplY3RbcHJvcGVydHldOworICAg
ICAgICBpZiAodmFsdWUgJiYgdmFsdWUubm9kZVR5cGUpIC8vIHRleHROb2RlCisgICAgICAgICAg
ICB2YWx1ZSA9IHZhbHVlICsgIiggIiArIHZhbHVlLm5vZGVWYWx1ZSArICIgKSI7CisKKyAgICAg
ICAgcmVzdWx0ICs9IHByb3BlcnR5ICsgIjogIiArIHZhbHVlOworICAgIH0KKyAgICByZXN1bHQg
Kz0gJ10nOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIHNlbGVjdGlvbkFzU3Ry
aW5nKHNlbCkKK3sKKyAgICB2YXIgcHJvcGVydGllcyA9IFsnYW5jaG9yTm9kZScsICdhbmNob3JP
ZmZzZXQnLCAnZm9jdXNOb2RlJywgJ2ZvY3VzT2Zmc2V0JywgJ2lzQ29sbGFwc2VkJ107CisgICAg
cmV0dXJuIG9iamVjdEFzU3RyaW5nKHNlbCwgcHJvcGVydGllcyk7Cit9CisKK2Z1bmN0aW9uIGFz
c2VydFNlbGVjdGlvbkF0KG5vZGUsIG9mZnNldCkgeworICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCk7CisgICAgaWYgKHNlbC5hbmNob3JOb2RlID09IG5vZGUKKyAgICAgICAgJiYg
c2VsLmZvY3VzTm9kZSA9PSBub2RlCisgICAgICAgICYmIHNlbC5hbmNob3JPZmZzZXQgPT0gb2Zm
c2V0CisgICAgICAgICYmIHNlbC5mb2N1c09mZnNldCA9PSBvZmZzZXQKKyAgICAgICAgJiYgc2Vs
LmlzQ29sbGFwc2VkKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIlNlbGVjdGlvbiBpcyBhdCBub2Rl
OiAiICsgbm9kZSArICIgb2Zmc2V0OiAiICsgb2Zmc2V0KTsKKyAgICB9IGVsc2UgeworICAgICAg
ICB0ZXN0RmFpbGVkKCJTZWxlY3Rpb24gaXMgIiArIHNlbGVjdGlvbkFzU3RyaW5nKHNlbCkgKyAi
IHNob3VsZCBiZSBhdCBub2RlOiAiICsgbm9kZSArICIgb2Zmc2V0OiAiICsgb2Zmc2V0KTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIGNsaWNrQXQoeCwgeSkgeworICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtbWlz
c2luZy1pbWFnZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LW1p
c3NpbmctaW1hZ2UuaHRtbAppbmRleCBiNzM3NmRhLi41MDQ2MGVkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtbWlzc2luZy1pbWFnZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1taXNzaW5nLWltYWdlLmh0bWwK
QEAgLTIxLDcgKzIxLDcgQEAgZnVuY3Rpb24gZWRpdGluZ1Rlc3QoKSB7CiA8dGl0bGU+RWRpdGlu
ZyBUZXN0PC90aXRsZT4gCiA8L2hlYWQ+IAogPGJvZHk+Ci08ZGl2IGNvbnRlbnRlZGl0YWJsZSBp
ZD0icm9vdCIgY2xhc3M9ImVkaXRpbmciPgorPGRpdiBjb250ZW50ZWRpdGFibGUgaWQ9InRlc3Qi
IGNsYXNzPSJlZGl0aW5nIj4KIDxpbWcgdGl0bGU9IlNob3VsZCBzZWUgc2VsZWN0aW9uIHRpbnQg
b3ZlciB0aGlzIG1pc3NpbmcgaW1hZ2UuIiBzcmM9Ii4uL25vbmVTdWNoLmpwZyIgaGVpZ2h0PSIx
MDAiIHdpZHRoPSI1NTAiPiAKIDwvZGl2PgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUt
ZXhwZWN0ZWQuY2hlY2tzdW0gYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxl
Y3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQuY2hlY2tzdW0KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1OTE3ZjEuLjAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGlj
ay1vdXRzaWRlLWV4cGVjdGVkLmNoZWNrc3VtCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAot
MTY1MmZkODFiNmM4N2I5ODhhMDAzMzE4Zjk4MTkzNzgKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rp
b24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1v
dXRzaWRlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRjNmZi
MC4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rp
b24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMTYgKzAsMCBAQAotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNl
bGVjdGluZzpGQUxTRQotRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01S
YW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gMCBvZiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAotRURJVElORyBERUxF
R0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZp
Y2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLWxheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAotICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAotbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCi0gIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
LSAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKLSAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNDI1eDc1IFtiZ2NvbG9yPSNGRkZGMDBdCi0gICAg
ICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyNSwyNSkgc2l6ZSAxMDB4MjAgW2JnY29sb3I9I0ZG
RkZGRl0KLSAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw5MSkgc2l6ZSA3ODR4MzYKLSAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzU5eDM2Ci0gICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggNzU5OiAiVGhpcyB0ZXN0IGNsaWNrcyBvdXRzaWRlIGFuIGVk
aXRhYmxlIGRpdiBlbGVtZW50LCBhbmQgbXVzdCBub3QgcmVzdWx0IGluIHRoZSBlbGVtZW50IHJl
Y2VpdmluZyBmb2N1cy4gSWYgdGhlIHRlc3Qgc3VjY2VlZHMgdGhlIgotICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDE4KSB3aWR0aCAyMzU6ICJlbGVtZW50IHNob3VsZCBub3QgaGF2ZSBhIGZvY3Vz
IHJpbmcuIgotY2FyZXQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7RElWfSBvZiBjaGlsZCAwIHtE
SVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0
LWFsbC1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVjdGVkLnR4dAppbmRleCA4NDJjMmEz
Li5iNDA1ZGViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9z
ZWxlY3Rpb24vc2VsZWN0LWFsbC1pZnJhbWUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3Rl
ZC50eHQKQEAgLTEsOSArMSw5IEBACiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcg
REVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDQgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKIEVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRp
dGluZ05vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRE
T01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
MCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20g
MTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxMSBvZiAjdGV4
dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZm
aW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBz
aG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRv
RE9NUmFuZ2U6cmFuZ2UgZnJvbSA1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gNSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmlu
aXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNl
bGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZB
TFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdl
IGZyb20gNSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2Yg
I3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZy
b20gMCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDExIG9mICN0
ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25B
ZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlm
aWNhdGlvbgogRURJVElORyBERUxFR0FURTogc2hvdWxkRGVsZXRlRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTEgb2YgI3Rl
eHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAogRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rp
b24vc2VsZWN0LWZyb20tdGV4dGZpZWxkLW91dHdhcmRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtZnJvbS10ZXh0ZmllbGQt
b3V0d2FyZHMtZXhwZWN0ZWQudHh0CmluZGV4IDE4YzM3YTYuLmIwNjQ3NDggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtZnJvbS10
ZXh0ZmllbGQtb3V0d2FyZHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtZnJvbS10ZXh0ZmllbGQtb3V0d2FyZHMtZXhw
ZWN0ZWQudHh0CkBAIC04LDEwICs4LDEwIEBAIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5n
ZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWIHRvIDEyCiBFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVj
dGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViB0byAxNyBvZiAjdGV4dCA+
IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViB0byAxMiBvZiAjdGV4
dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVj
dGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpX
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBz
aG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViB0
byAxMiBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJ
ViB0byAxMiBvZiAjdGV4dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0
cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdl
U2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgdG8gMTIgb2YgI3Rl
eHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0ID4gRElWIHRvIDE3IG9m
ICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxs
U2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdB
VEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+
IERJViB0byAxNyBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2YgI3Rl
eHQgPiBESVYgdG8gMTcgb2YgI3RleHQgPiBESVYgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0
eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3Vs
ZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViB0byAx
NyBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2YgI3RleHQgPiBESVYg
dG8gMTcgb2YgI3RleHQgPiBESVYgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJl
YW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICBS
ZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rp
b24vc2VsZWN0LW1pc3NpbmctaW1hZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1taXNzaW5nLWltYWdlLWV4cGVjdGVkLnR4
dAppbmRleCA5MDc0YzI2Li43YjlkZThkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LW1pc3NpbmctaW1hZ2UtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3Qt
bWlzc2luZy1pbWFnZS1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw4IEBACi1FRElUSU5HIERFTEVH
QVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdl
IGZyb20gMSBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAyIG9mIERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3Ry
ZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVk
aXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0byAzIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CiBFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmlj
YXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxk
Q2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJh
bmdlOnJhbmdlIGZyb20gMSBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAyIG9m
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5p
dHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRp
b24KIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICBSZW5kZXJWaWV3IGF0ICgwLDApIHNp
emUgODAweDYwMAogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xp
Y2stb3V0c2lkZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5n
L3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzMWZhMjcuLjAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNr
LW91dHNpZGUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDk6IFR5cGVFcnJvcjogVmFsdWUgdW5kZWZpbmVkIChyZXN1bHQg
b2YgZXhwcmVzc2lvbiBldmVudFNlbmRlci5tb3ZlVG8pIGlzIG5vdCBvYmplY3QuCi1sYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
LWxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCi0gICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4
NTc4Ci0gICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDQyNXg3NSBbYmdjb2xv
cj0jRkZGRjAwXQotICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMjUsMjUpIHNpemUgMTAw
eDIwIFtiZ2NvbG9yPSNGRkZGRkZdCi0gICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsODkpIHNp
emUgNzg0eDM4Ci0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc3MXgz
OAotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc3MTogIlRoaXMgdGVzdCBjbGlj
a3Mgb3V0c2lkZSBhbiBlZGl0YWJsZSBkaXYgZWxlbWVudCwgYW5kIG11c3Qgbm90IHJlc3VsdCBp
biB0aGUgZWxlbWVudCByZWNlaXZpbmcgZm9jdXMuIElmIHRoZSB0ZXN0IHN1Y2NlZWRzIHRoZSIK
LSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOSkgd2lkdGggMjM4OiAiZWxlbWVudCBzaG91bGQg
bm90IGhhdmUgYSBmb2N1cyByaW5nLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1l
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEyMjMxYy4uMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9zZWxl
Y3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBA
Ci1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2lu
RWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDQgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgotRURJ
VElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAg
b2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2YgI3RleHQgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxs
U2VsZWN0aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdB
VEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFt
IHN0aWxsU2VsZWN0aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcg
REVMRUdBVEU6IHNob3VsZERlbGV0ZURPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxF
R0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5n
ZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0
cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRp
b24KLWxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJWaWV3IGF0ICgwLDApIHNp
emUgODAweDYwMAotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlckJsb2NrIHtI
VE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4
KSBzaXplIDc4NHg1NzgKLSAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNp
emUgNzg0eDE3MwotICAgICAgICBSZW5kZXJQYXJ0T2JqZWN0IHtJRlJBTUV9IGF0ICgwLDApIHNp
emUgMzA0eDE1NCBbYm9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQotICAgICAgICAgIGxheWVy
IGF0ICgwLDApIHNpemUgMzAweDE1MAotICAgICAgICAgICAgUmVuZGVyVmlldyBhdCAoMCwwKSBz
aXplIDMwMHgxNTAKLSAgICAgICAgICBsYXllciBhdCAoMCwwKSBzaXplIDMwMHgxNTAKLSAgICAg
ICAgICAgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDMwMHgxNTAKLSAgICAgICAg
ICAgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSAyODR4MTM0IFtiZ2NvbG9yPSNG
RkZGRTBdCi0gICAgICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSAy
ODR4MTkKLSAgICAgICAgICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDE5
Ci0gICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDMwNCwxNTQpIHNpemUgMHgwCi0gICAgICAgIFJl
bmRlckJSIHtCUn0gYXQgKDAsMTU0KSBzaXplIDB4MTkKLSAgICAgIFJlbmRlckJsb2NrIHtQfSBh
dCAoMCwxODcpIHNpemUgNzg0eDM5Ci0gICAgICAgIFJlbmRlcklubGluZSB7Qn0gYXQgKDAsMCkg
c2l6ZSA2ODN4MjAKLSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA2
ODN4MjAKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDUxNDogIlRoaXMgdGVz
dCB1c2VzIHRoZSBldmVudFNlbmRlciB0byBkbyBhIG1vdXNlIGNsaWNrIHRvIGZvY3VzIHRoZSBz
dWJmcmFtZS4gIgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDUxNCwwKSB3aWR0aCAxNjk6ICJJ
dCB3b24ndCBydW4gaW50ZXJhY3RpdmVseS4iCi0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoNjgzLDApIHNpemUgNzQweDM5Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDY4MywwKSB3aWR0
aCA0OiAiICIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoNjg3LDApIHdpZHRoIDUzOiAiVG8gcnVu
IGl0IgotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDIwKSB3aWR0aCAzNDg6ICJtYW51YWxseSwg
Y2xpY2sgb24gdGhlIGlmcmFtZSwgU2VsZWN0IEFsbCwgdGhlbiBoaXQgZGVsZXRlLiIKLSAgICAg
IFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDI0MCkgc2l6ZSA3ODR4NTcKLSAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzc2eDU3Ci0gICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggNzc2OiAiU2VsZWN0aW5nIGFsbCB0aGUgY29udGVudCBpbiBhIGNv
bnRlbnRlZGl0YWJsZSBpZnJhbWUgc2hvdWxkIHNlbGVjdCB0aGUgaWZyYW1lIGl0c2VsZiAodG8g
aGVscCB0aGUgdXNlciBkZWxldGUgdGhlIGlmcmFtZSkgb25seSBpZiIKLSAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwxOSkgd2lkdGggMjE5OiAidGhlIGlmcmFtZSBpcyBpbiBhbiBlZGl0YWJsZSBy
ZWdpb24uICIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjE5LDE5KSB3aWR0aCA0MzA6ICJUaGlz
IHRlc3QgbG9hZHMgLi4vcmVzb3VyY2VzL3NlbGVjdC1hbGwtaWZyYW1lLXNyYy5odG1sIGludG8g
YW4gaWZyYW1lLiAiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDY0OSwxOSkgd2lkdGggOTg6ICJU
aGF0IGZpbGUgZG9lcyBhIgotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDM4KSB3aWR0aCAxMjM6
ICJTZWxlY3QgQWxsICsgRGVsZXRlLiAiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDEyMywzOCkg
d2lkdGggMTcxOiAiVHdvIHRoaW5ncyBzaG91bGQgaGFwcGVuOiIKLSAgICAgIFJlbmRlckJsb2Nr
IHtVTH0gYXQgKDAsMzExKSBzaXplIDc4NHg1NwotICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9
IGF0ICg0MCwwKSBzaXplIDc0NHgzOAotICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKC0x
NywwKSBzaXplIDd4MTk6IGJ1bGxldAotICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDcyOHgzOAotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDUx
OiAiVGhlIFNlbGVjdCBBbGwgb3BlcmF0aW9uIHNob3VsZCBub3Qgc2VsZWN0IHRoZSBpZnJhbWUs
IG9ubHkgaXQncyBjb250ZW50cy4gIgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDQ1MSwwKSB3
aWR0aCAyNzc6ICJUaGUgcmVzdWx0cyBvZiB0aGUgU2VsZWN0IEFsbCB3aWxsIGJlIGFwcGFyZW50
IgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTkpIHdpZHRoIDQ2NDogImZyb20gdGhlIGRl
bGVnYXRlIG1lc3NhZ2VzIHRoYXQgRHVtcFJlbmRlclRyZWUgcmVjZWl2ZXMgYW5kIGR1bXBzLiIK
LSAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoNDAsMzgpIHNpemUgNzQ0eDE5Ci0gICAg
ICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoLTE3LDApIHNpemUgN3gxOTogYnVsbGV0Ci0gICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzQyeDE5Ci0gICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzNDI6ICJUaGUgY29udGVudHMgb2YgdGhlIGVkaXRh
YmxlIGlmcmFtZSBzaG91bGQgYmUgZGVsZXRlZC4iCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNhNmVhMTYuLjNiYzc0N2UgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzIgQEAKKzIwMDktMDItMDUgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4gYW5kIEVy
aWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTWFrZSBjdXJzb3IgcG9zaXRpb25zIG1hdGNoIElFNi9JRTcv
RkYzIHdoZW4gY2xpY2tpbmcgaW4gbWFyZ2lucy9wYWRkaW5nCisgICAgICAgIGFyb3VuZCBkaXZz
IGluc2lkZSBlZGl0YWJsZSByZWdpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MDUKKworICAgICAgICBGaXggY2xpY2tzIG91dHNpZGUgZWRp
dGFibGUgcmVnaW9ucyBmcm9tIGZvY3VzaW5nIHRoZSBlZGl0YWJsZSByZWdpb24uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwNworCisgICAgICAg
IFJlbW92ZWQgZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUu
aHRtbCBhcyBpdCdzCisgICAgICAgIG5vdCBhcyB1c2VmdWwgYXMgb3VyIG5ldyB0ZXN0cy4KKwor
ICAgICAgICBDbGVhbiB1cCBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JDb29yZGluYXRlcyB0byBy
ZW1vdmUgZGVhZCBjb2RlLAorICAgICAgICBkdXBsaWNhdGUgY29kZSwgYW5kIGdlbmVyYWxseSBt
YWtlIGl0IG1vcmUgcmVhZGFibGUuCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvc2VsZWN0aW9u
L2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5odG1sCisgICAgICAgICAgICAg
ICBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1wYWRkaW5nLXdpdGgtbXVsdGlwbGUtbGluZS1i
b3hlcy5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1vdXRzaWRl
LWVkaXRhYmxlLWRpdi5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OmNhbm9uaWNhbFBvc2l0aW9u
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cG9zaXRpb25Gb3JQb2ludFJlc3BlY3RpbmdFZGl0aW5nQm91bmRhcmllcyk6CisgICAgICAg
IChXZWJDb3JlOjpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlcik6CisKIDIwMDktMDItMjQg
IERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
UG9zaXRpb24uY3BwIGIvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKaW5kZXgg
ZWZjZDUwZC4uNTI4ZjMzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3Np
dGlvbi5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKQEAgLTQ3
Niw5ICs0NzYsMTMgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpjYW5vbmljYWxQb3NpdGlv
bihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiAgICAgTm9kZSogbmV4dE5vZGUgPSBuZXh0Lm5v
ZGUoKTsKICAgICBOb2RlKiBwcmV2Tm9kZSA9IHByZXYubm9kZSgpOwogCisgICAgLy8gSWYgdGhl
IGJvZHkgaXMgbnVsbCwgdGhlcmUgaXMgbm8gdmlzaWJsZSBwb3NpdGlvbi4KKyAgICBpZiAoIW5v
ZGUtPm93bmVyRG9jdW1lbnQoKS0+Ym9keSgpKQorICAgICAgICByZXR1cm4gUG9zaXRpb24oKTsK
KwogICAgIC8vIFRoZSBuZXcgcG9zaXRpb24gbXVzdCBiZSBpbiB0aGUgc2FtZSBlZGl0YWJsZSBl
bGVtZW50LiBFbmZvcmNlIHRoYXQgZmlyc3QuCiAgICAgLy8gVW5sZXNzIHRoZSBkZXNjZW50IGlz
IGZyb20gYSBub24tZWRpdGFibGUgaHRtbCBlbGVtZW50IHRvIGFuIGVkaXRhYmxlIGJvZHkuCi0g
ICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoaHRtbFRhZykgJiYgIW5vZGUtPmlzQ29udGVudEVkaXRh
YmxlKCkpCisgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoaHRtbFRhZykgJiYgIW5vZGUtPmlzQ29u
dGVudEVkaXRhYmxlKCkgJiYgbm9kZS0+b3duZXJEb2N1bWVudCgpLT5ib2R5KCktPmlzQ29udGVu
dEVkaXRhYmxlKCkpCiAgICAgICAgIHJldHVybiBuZXh0LmlzTm90TnVsbCgpID8gbmV4dCA6IHBy
ZXY7CiAKICAgICBOb2RlKiBlZGl0aW5nUm9vdCA9IGVkaXRhYmxlUm9vdEZvclBvc2l0aW9uKHBv
c2l0aW9uKTsKQEAgLTQ5MiwxMCArNDk2LDEwIEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6
Y2Fub25pY2FsUG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQogICAgIGJvb2wgbmV4
dElzSW5TYW1lRWRpdGFibGVFbGVtZW50ID0gbmV4dE5vZGUgJiYgZWRpdGFibGVSb290Rm9yUG9z
aXRpb24obmV4dCkgPT0gZWRpdGluZ1Jvb3Q7CiAgICAgaWYgKHByZXZJc0luU2FtZUVkaXRhYmxl
RWxlbWVudCAmJiAhbmV4dElzSW5TYW1lRWRpdGFibGVFbGVtZW50KQogICAgICAgICByZXR1cm4g
cHJldjsKLSAgICAgICAgCisKICAgICBpZiAobmV4dElzSW5TYW1lRWRpdGFibGVFbGVtZW50ICYm
ICFwcmV2SXNJblNhbWVFZGl0YWJsZUVsZW1lbnQpCiAgICAgICAgIHJldHVybiBuZXh0OwotICAg
ICAgICAKKwogICAgIGlmICghbmV4dElzSW5TYW1lRWRpdGFibGVFbGVtZW50ICYmICFwcmV2SXNJ
blNhbWVFZGl0YWJsZUVsZW1lbnQpCiAgICAgICAgIHJldHVybiBQb3NpdGlvbigpOwogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggMmEwYjY4Ni4uOTdjNjhkZCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcApAQCAtMzQxNiwxMTggKzM0MTYsMTE0IEBAIFBvc2l0aW9uIFJlbmRl
ckJsb2NrOjpwb3NpdGlvbkZvclJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGJvb2wg
c3RhcnQpIGNvCiAgICAgcmV0dXJuIFBvc2l0aW9uKG4sIG9mZnNldCk7CiB9CiAKKy8vIEZJWE1F
OiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBnbyBvbiBSZW5kZXJPYmplY3QgYXMgYW4gaW5zdGFuY2Ug
bWV0aG9kLiBUaGVuCisvLyBhbGwgY2FzZXMgaW4gd2hpY2ggcG9zaXRpb25Gb3JDb29yZGluYXRl
cyByZWN1cnMgY291bGQgY2FsbCB0aGlzIGluc3RlYWQgdG8KKy8vIHByZXZlbnQgY3Jvc3Npbmcg
ZWRpdGFibGUgYm91bmRhcmllcy4gVGhpcyB3b3VsZCByZXF1aXJlIG1hbnkgdGVzdHMuCitzdGF0
aWMgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnRSZXNwZWN0aW5nRWRpdGluZ0JvdW5k
YXJpZXMoUmVuZGVyQm94KiBwYXJlbnQsIFJlbmRlckJveCogY2hpbGQsIGNvbnN0IEludFBvaW50
JiBwYXJlbnRDb29yZHMpCit7CisgICAgaW50IHhJbkNoaWxkQ29vcmRzID0gcGFyZW50Q29vcmRz
LngoKSAtIGNoaWxkLT54KCk7CisgICAgaW50IHlJbkNoaWxkQ29vcmRzID0gcGFyZW50Q29vcmRz
LnkoKSAtIGNoaWxkLT55KCk7CisKKyAgICAvLyBJZiB0aGlzIGlzIGFuIGFub255bW91cyByZW5k
ZXJlciwgd2UganVzdCByZWN1ciBub3JtYWxseQorICAgIE5vZGUqIGNoaWxkTm9kZSA9IGNoaWxk
LT5ub2RlKCk7CisgICAgaWYgKCFjaGlsZE5vZGUpCisgICAgICAgIHJldHVybiBjaGlsZC0+cG9z
aXRpb25Gb3JDb29yZGluYXRlcyh4SW5DaGlsZENvb3JkcywgeUluQ2hpbGRDb29yZHMpOworCisg
ICAgLy8gT3RoZXJ3aXNlLCBmaXJzdCBtYWtlIHN1cmUgdGhhdCB0aGUgZWRpdGFiaWxpdHkgb2Yg
dGhlIHBhcmVudCBhbmQgY2hpbGQgYWdyZWUuCisgICAgLy8gSWYgdGhleSBkb24ndCBhZ3JlZSwg
dGhlbiB3ZSByZXR1cm4gYSB2aXNpYmxlIHBvc2l0aW9uIGp1c3QgYmVmb3JlIG9yIGFmdGVyIHRo
ZSBjaGlsZAorICAgIFJlbmRlck9iamVjdCogYW5jZXN0b3IgPSBwYXJlbnQ7CisgICAgd2hpbGUg
KGFuY2VzdG9yICYmICFhbmNlc3Rvci0+bm9kZSgpKQorICAgICAgICBhbmNlc3RvciA9IGFuY2Vz
dG9yLT5wYXJlbnQoKTsKKworICAgIC8vIElmIHdlIGNhbid0IGZpbmQgYW4gYW5jZXN0b3IgdG8g
Y2hlY2sgZWRpdGFiaWxpdHkgb24sIG9yIGVkaXRhYmlsaXR5IGlzIHVuY2hhbmdlZCwgd2UgcmVj
dXIgbGlrZSBub3JtYWwKKyAgICBpZiAoIWFuY2VzdG9yIHx8IGFuY2VzdG9yLT5ub2RlKCktPmlz
Q29udGVudEVkaXRhYmxlKCkgPT0gY2hpbGROb2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAg
ICAgICByZXR1cm4gY2hpbGQtPnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoeEluQ2hpbGRDb29yZHMs
IHlJbkNoaWxkQ29vcmRzKTsKKworICAgIC8vIE90aGVyd2lzZSByZXR1cm4gYmVmb3JlIG9yIGFm
dGVyIHRoZSBjaGlsZCwgZGVwZW5kaW5nIG9uIGlmIHRoZSBjbGljayB3YXMgbGVmdCBvciByaWdo
dCBvZiB0aGUgY2hpbGQKKyAgICBpbnQgY2hpbGRNaWRYID0gY2hpbGQtPndpZHRoKCkgLyAyOwor
ICAgIGlmICh4SW5DaGlsZENvb3JkcyA8IGNoaWxkTWlkWCkKKyAgICAgICAgcmV0dXJuIFZpc2li
bGVQb3NpdGlvbihhbmNlc3Rvci0+bm9kZSgpLCBjaGlsZE5vZGUtPm5vZGVJbmRleCgpLCBET1dO
U1RSRUFNKTsKKyAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGFuY2VzdG9yLT5ub2RlKCksIGNo
aWxkTm9kZS0+bm9kZUluZGV4KCkgKyAxLCBVUFNUUkVBTSk7Cit9CisKK3N0YXRpYyBWaXNpYmxl
UG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbihSZW5kZXJCbG9jayog
YmxvY2ssIGNvbnN0IEludFBvaW50JiBwb2ludEluQ29udGVudHMpCit7CisgICAgQVNTRVJUKGJs
b2NrLT5jaGlsZHJlbklubGluZSgpKTsKKworICAgIGlmICghYmxvY2stPmZpcnN0Um9vdEJveCgp
KQorICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGJsb2NrLT5ub2RlKCksIDAsIERPV05T
VFJFQU0pOworCisgICAgSW5saW5lQm94KiBjbG9zZXN0Qm94ID0gMDsKKyAgICAvLyBsb29rIGZv
ciB0aGUgY2xvc2VzdCBsaW5lIGJveCBpbiB0aGUgcm9vdCBib3ggd2hpY2ggaXMgYXQgdGhlIHBh
c3NlZC1pbiB5IGNvb3JkaW5hdGUKKyAgICBmb3IgKFJvb3RJbmxpbmVCb3gqIHJvb3QgPSBibG9j
ay0+Zmlyc3RSb290Qm94KCk7IHJvb3Q7IHJvb3QgPSByb290LT5uZXh0Um9vdEJveCgpKSB7Cisg
ICAgICAgIGludCBib3R0b207CisgICAgICAgIC8vIHNldCB0aGUgYm90dG9tIGJhc2VkIG9uIHdo
ZXRoZXIgdGhlcmUgaXMgYSBuZXh0IHJvb3QgYm94CisgICAgICAgIGlmIChyb290LT5uZXh0Um9v
dEJveCgpKQorICAgICAgICAgICAgLy8gRklYTUU6IG1ha2UgdGhlIGJyZWFrIHBvaW50IGhhbGZ3
YXkgYmV0d2VlbiB0aGUgYm90dG9tIG9mIHRoZSBwcmV2aW91cyByb290IGJveCBhbmQgdGhlIHRv
cCBvZiB0aGUgbmV4dCByb290IGJveAorICAgICAgICAgICAgYm90dG9tID0gcm9vdC0+bmV4dFJv
b3RCb3goKS0+dG9wT3ZlcmZsb3coKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYm90dG9t
ID0gcm9vdC0+Ym90dG9tT3ZlcmZsb3coKSArIHZlcnRpY2FsTGluZUNsaWNrRnVkZ2VGYWN0b3I7
CisgICAgICAgIC8vIGNoZWNrIGlmIHRoaXMgcm9vdCBsaW5lIGJveCBpcyBsb2NhdGVkIGF0IHRo
aXMgeSBjb29yZGluYXRlCisgICAgICAgIGlmIChwb2ludEluQ29udGVudHMueSgpIDwgYm90dG9t
ICYmIHJvb3QtPmZpcnN0Q2hpbGQoKSkgeworICAgICAgICAgICAgY2xvc2VzdEJveCA9IHJvb3Qt
PmNsb3Nlc3RMZWFmQ2hpbGRGb3JYUG9zKHBvaW50SW5Db250ZW50cy54KCkpOworICAgICAgICAg
ICAgaWYgKGNsb3Nlc3RCb3gpCisgICAgICAgICAgICAgICAgLy8gcGFzcyB0aGUgYm94IGEgeSBw
b3NpdGlvbiB0aGF0IGlzIGluc2lkZSBpdAorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfQorCisgICAgLy8geSBjb29yZGluYXRlIGlzIGJlbG93IGxhc3Qgcm9vdCBsaW5l
IGJveCwgcHJldGVuZCB3ZSBoaXQgaXQKKyAgICBpZiAoIWNsb3Nlc3RCb3gpCisgICAgICAgIGNs
b3Nlc3RCb3ggPSBibG9jay0+bGFzdFJvb3RCb3goKS0+Y2xvc2VzdExlYWZDaGlsZEZvclhQb3Mo
cG9pbnRJbkNvbnRlbnRzLngoKSk7CisKKyAgICBpZiAoY2xvc2VzdEJveCkgeworICAgICAgICAv
LyBwYXNzIHRoZSBib3ggYSB5IHBvc2l0aW9uIHRoYXQgaXMgaW5zaWRlIGl0CisgICAgICAgIHJl
dHVybiBjbG9zZXN0Qm94LT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvckNvb3JkaW5hdGVzKHBvaW50
SW5Db250ZW50cy54KCksIGNsb3Nlc3RCb3gtPm1feSk7CisgICAgfQorCisgICAgLy8gQ2FuJ3Qg
cmVhY2ggdGhpcy4gIFdlIGhhdmUgYSByb290IGxpbmUgYm94LCBidXQgaXQgaGFzIG5vIGtpZHMu
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihi
bG9jay0+bm9kZSgpLCAwLCBET1dOU1RSRUFNKTsKK30KKwogVmlzaWJsZVBvc2l0aW9uIFJlbmRl
ckJsb2NrOjpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKGludCB4LCBpbnQgeSkKIHsKICAgICBpZiAo
aXNUYWJsZSgpKQogICAgICAgICByZXR1cm4gUmVuZGVyQm94Ojpwb3NpdGlvbkZvckNvb3JkaW5h
dGVzKHgsIHkpOyAKIAotICAgIGludCB0b3AgPSBib3JkZXJUb3AoKTsKLSAgICBpbnQgYm90dG9t
ID0gdG9wICsgcGFkZGluZ1RvcCgpICsgY29udGVudEhlaWdodCgpICsgcGFkZGluZ0JvdHRvbSgp
OwotCi0gICAgaW50IGxlZnQgPSBib3JkZXJMZWZ0KCk7Ci0gICAgaW50IHJpZ2h0ID0gbGVmdCAr
IHBhZGRpbmdMZWZ0KCkgKyBjb250ZW50V2lkdGgoKSArIHBhZGRpbmdSaWdodCgpOwotCi0gICAg
Tm9kZSogbiA9IG5vZGUoKTsKLSAgICAKICAgICBpbnQgY29udGVudHNYID0geDsKICAgICBpbnQg
Y29udGVudHNZID0geTsKICAgICBvZmZzZXRGb3JDb250ZW50cyhjb250ZW50c1gsIGNvbnRlbnRz
WSk7CisgICAgSW50UG9pbnQgcG9pbnRJbkNvbnRlbnRzKGNvbnRlbnRzWCwgY29udGVudHNZKTsK
IAogICAgIGlmIChpc1JlcGxhY2VkKCkpIHsKICAgICAgICAgaWYgKHkgPCAwIHx8IHkgPCBoZWln
aHQoKSAmJiB4IDwgMCkKLSAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obiwgY2Fy
ZXRNaW5PZmZzZXQoKSwgRE9XTlNUUkVBTSk7CisgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uKG5vZGUoKSwgY2FyZXRNaW5PZmZzZXQoKSwgRE9XTlNUUkVBTSk7CiAgICAgICAgIGlm
ICh5ID49IGhlaWdodCgpIHx8IHkgPj0gMCAmJiB4ID49IHdpZHRoKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG4sIGNhcmV0TWF4T2Zmc2V0KCksIERPV05TVFJFQU0pOwor
ICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihub2RlKCksIGNhcmV0TWF4T2Zmc2V0
KCksIERPV05TVFJFQU0pOwogICAgIH0gCiAKLSAgICAvLyBJZiB3ZSBzdGFydCBpbnNpZGUgdGhl
IHNoYWRvdyB0cmVlLCB3ZSB3aWxsIHN0YXkgaW5zaWRlIChldmVuIGlmIHRoZSBwb2ludCBpcyBh
Ym92ZSBvciBiZWxvdykuCi0gICAgaWYgKCEobiAmJiBuLT5pc1NoYWRvd05vZGUoKSkgJiYgIWNo
aWxkcmVuSW5saW5lKCkpIHsKLSAgICAgICAgLy8gRG9uJ3QgcmV0dXJuIHBvc2l0aW9ucyBpbnNp
ZGUgZWRpdGFibGUgcm9vdHMgZm9yIGNvb3JkaW5hdGVzIG91dHNpZGUgdGhvc2Ugcm9vdHMsIGV4
Y2VwdCBmb3IgY29vcmRpbmF0ZXMgb3V0c2lkZQotICAgICAgICAvLyBhIGRvY3VtZW50IHRoYXQg
aXMgZW50aXJlbHkgZWRpdGFibGUuCi0gICAgICAgIGJvb2wgaXNFZGl0YWJsZVJvb3QgPSBuICYm
IG4tPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSA9PSBuICYmICFuLT5oYXNUYWdOYW1lKGJvZHlUYWcp
ICYmICFuLT5oYXNUYWdOYW1lKGh0bWxUYWcpOwotCi0gICAgICAgIGlmICh5IDwgdG9wIHx8IChp
c0VkaXRhYmxlUm9vdCAmJiAoeSA8IGJvdHRvbSAmJiB4IDwgbGVmdCkpKSB7Ci0gICAgICAgICAg
ICBpZiAoIWlzRWRpdGFibGVSb290KQotICAgICAgICAgICAgICAgIGlmIChSZW5kZXJCb3gqIGMg
PSBmaXJzdENoaWxkQm94KCkpIHsgLy8gRklYTUU6IFRoaXMgY29kZSBkb2Vzbid0IG1ha2UgYW55
IHNlbnNlLiAgVGhpcyBjaGlsZCBjb3VsZCBiZSBhbiBpbmxpbmUgb3IgYSBwb3NpdGlvbmVkIGVs
ZW1lbnQgb3IgYSBmbG9hdCwgZXRjLgotICAgICAgICAgICAgICAgICAgICBWaXNpYmxlUG9zaXRp
b24gcCA9IGMtPnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoY29udGVudHNYIC0gYy0+eCgpLCBjb250
ZW50c1kgLSBjLT55KCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAocC5pc05vdE51bGwoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmIChuKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE5vZGUqIHNwID0gbi0+c2hh
ZG93UGFyZW50Tm9kZSgpKQotICAgICAgICAgICAgICAgICAgICBuID0gc3A7Ci0gICAgICAgICAg
ICAgICAgaWYgKE5vZGUqIHAgPSBuLT5wYXJlbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFZpc2libGVQb3NpdGlvbihwLCBuLT5ub2RlSW5kZXgoKSwgRE9XTlNUUkVBTSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG4sIDAsIERPV05T
VFJFQU0pOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHkgPj0gYm90dG9tIHx8IChpc0VkaXRh
YmxlUm9vdCAmJiAoeSA+PSB0b3AgJiYgeCA+PSByaWdodCkpKSB7Ci0gICAgICAgICAgICBpZiAo
IWlzRWRpdGFibGVSb290KQotICAgICAgICAgICAgICAgIGlmIChSZW5kZXJCb3gqIGMgPSBsYXN0
Q2hpbGRCb3goKSkgeyAvLyBGSVhNRTogVGhpcyBjb2RlIGRvZXNuJ3QgbWFrZSBhbnkgc2Vuc2Uu
ICBUaGlzIGNoaWxkIGNvdWxkIGJlIGFuIGlubGluZSBvciBhIHBvc2l0aW9uZWQgZWxlbWVudCBv
ciBhIGZsb2F0LCBldGMuCi0gICAgICAgICAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwID0g
Yy0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyhjb250ZW50c1ggLSBjLT54KCksIGNvbnRlbnRzWSAt
IGMtPnkoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwLmlzTm90TnVsbCgpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKG4pIHsKLSAgICAgICAgICAgICAgICBpZiAoTm9kZSogc3AgPSBuLT5zaGFkb3dQYXJl
bnROb2RlKCkpCi0gICAgICAgICAgICAgICAgICAgIG4gPSBzcDsKLSAgICAgICAgICAgICAgICBp
ZiAoTm9kZSogcCA9IG4tPnBhcmVudCgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKHAsIG4tPm5vZGVJbmRleCgpICsgMSwgRE9XTlNUUkVBTSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG4sIDAsIERPV05TVFJF
QU0pOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgaWYgKGNoaWxkcmVuSW5saW5lKCkpIHsKLSAg
ICAgICAgaWYgKCFmaXJzdFJvb3RCb3goKSkKLSAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9z
aXRpb24obiwgMCwgRE9XTlNUUkVBTSk7Ci0KLSAgICAgICAgaWYgKGNvbnRlbnRzWSA8IGZpcnN0
Um9vdEJveCgpLT50b3BPdmVyZmxvdygpIC0gdmVydGljYWxMaW5lQ2xpY2tGdWRnZUZhY3RvcikK
LSAgICAgICAgICAgIC8vIHkgY29vcmRpbmF0ZSBpcyBhYm92ZSBmaXJzdCByb290IGxpbmUgYm94
Ci0gICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uRm9yQm94KGZpcnN0
Um9vdEJveCgpLT5maXJzdExlYWZDaGlsZCgpLCB0cnVlKSwgRE9XTlNUUkVBTSk7Ci0gICAgICAg
IAotICAgICAgICAvLyBsb29rIGZvciB0aGUgY2xvc2VzdCBsaW5lIGJveCBpbiB0aGUgcm9vdCBi
b3ggd2hpY2ggaXMgYXQgdGhlIHBhc3NlZC1pbiB5IGNvb3JkaW5hdGUKLSAgICAgICAgZm9yIChS
b290SW5saW5lQm94KiByb290ID0gZmlyc3RSb290Qm94KCk7IHJvb3Q7IHJvb3QgPSByb290LT5u
ZXh0Um9vdEJveCgpKSB7Ci0gICAgICAgICAgICAvLyBzZXQgdGhlIGJvdHRvbSBiYXNlZCBvbiB3
aGV0aGVyIHRoZXJlIGlzIGEgbmV4dCByb290IGJveAotICAgICAgICAgICAgaWYgKHJvb3QtPm5l
eHRSb290Qm94KCkpCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IG1ha2UgdGhlIGJyZWFrIHBv
aW50IGhhbGZ3YXkgYmV0d2VlbiB0aGUgYm90dG9tIG9mIHRoZSBwcmV2aW91cyByb290IGJveCBh
bmQgdGhlIHRvcCBvZiB0aGUgbmV4dCByb290IGJveAotICAgICAgICAgICAgICAgIGJvdHRvbSA9
IHJvb3QtPm5leHRSb290Qm94KCktPnRvcE92ZXJmbG93KCk7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgYm90dG9tID0gcm9vdC0+Ym90dG9tT3ZlcmZsb3coKSArIHZlcnRpY2Fs
TGluZUNsaWNrRnVkZ2VGYWN0b3I7Ci0gICAgICAgICAgICAvLyBjaGVjayBpZiB0aGlzIHJvb3Qg
bGluZSBib3ggaXMgbG9jYXRlZCBhdCB0aGlzIHkgY29vcmRpbmF0ZQotICAgICAgICAgICAgaWYg
KGNvbnRlbnRzWSA8IGJvdHRvbSAmJiByb290LT5maXJzdENoaWxkKCkpIHsKLSAgICAgICAgICAg
ICAgICBJbmxpbmVCb3gqIGNsb3Nlc3RCb3ggPSByb290LT5jbG9zZXN0TGVhZkNoaWxkRm9yWFBv
cyh4KTsKLSAgICAgICAgICAgICAgICBpZiAoY2xvc2VzdEJveCkKLSAgICAgICAgICAgICAgICAg
ICAgLy8gcGFzcyB0aGUgYm94IGEgeSBwb3NpdGlvbiB0aGF0IGlzIGluc2lkZSBpdAotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdEJveC0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JD
b29yZGluYXRlcyhjb250ZW50c1gsIGNsb3Nlc3RCb3gtPm1feSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAobGFzdFJvb3RCb3goKSkKLSAgICAgICAgICAgIC8vIHkg
Y29vcmRpbmF0ZSBpcyBiZWxvdyBsYXN0IHJvb3QgbGluZSBib3gKLSAgICAgICAgICAgIHJldHVy
biBWaXNpYmxlUG9zaXRpb24ocG9zaXRpb25Gb3JCb3gobGFzdFJvb3RCb3goKS0+bGFzdExlYWZD
aGlsZCgpLCBmYWxzZSksIERPV05TVFJFQU0pOwotCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9z
aXRpb24obiwgMCwgRE9XTlNUUkVBTSk7CisgICAgICAgIHJldHVybiBwb3NpdGlvbkZvclBvaW50
V2l0aElubGluZUNoaWxkcmVuKHRoaXMsIHBvaW50SW5Db250ZW50cyk7CiAgICAgfQotICAgIAot
ICAgIC8vIFNlZSBpZiBhbnkgY2hpbGQgYmxvY2tzIGV4aXN0IGF0IHRoaXMgeSBjb29yZGluYXRl
LgorCisgICAgLy8gQ2hlY2sgdG9wL2JvdHRvbSBjaGlsZC1tYXJnaW4vcGFyZW50LXBhZGRpbmcg
Zm9yIGNsaWNrcyBhbmQgcGxhY2UgdGhlbSBpbiB0aGUgZmlyc3QvbGFzdCBjaGlsZAorICAgIC8v
IEZJWE1FOiBUaGlzIHdpbGwgbm90IGNvcnJlY3RseSBoYW5kbGUgZmlyc3Qgb3IgbGFzdCBjaGls
ZHJlbiBiZWluZyBwb3NpdGlvbmVkIG9yIG5vbi12aXNpYmxlCiAgICAgaWYgKGZpcnN0Q2hpbGRC
b3goKSAmJiBjb250ZW50c1kgPCBmaXJzdENoaWxkQm94KCktPnkoKSkKLSAgICAgICAgcmV0dXJu
IFZpc2libGVQb3NpdGlvbihuLCAwLCBET1dOU1RSRUFNKTsKLSAgICBmb3IgKFJlbmRlckJveCog
cmVuZGVyZXIgPSBmaXJzdENoaWxkQm94KCk7IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVy
LT5uZXh0U2libGluZ0JveCgpKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlci0+aGVpZ2h0KCkgPT0g
MCB8fCByZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcmVuZGVy
ZXItPmlzRmxvYXRpbmdPclBvc2l0aW9uZWQoKSkKKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uRm9y
UG9pbnRSZXNwZWN0aW5nRWRpdGluZ0JvdW5kYXJpZXModGhpcywgZmlyc3RDaGlsZEJveCgpLCBw
b2ludEluQ29udGVudHMpOworICAgIGlmIChsYXN0Q2hpbGRCb3goKSAmJiBjb250ZW50c1kgPiBs
YXN0Q2hpbGRCb3goKS0+eSgpKQorICAgICAgICByZXR1cm4gcG9zaXRpb25Gb3JQb2ludFJlc3Bl
Y3RpbmdFZGl0aW5nQm91bmRhcmllcyh0aGlzLCBsYXN0Q2hpbGRCb3goKSwgcG9pbnRJbkNvbnRl
bnRzKTsKKworICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZEJveCA9IGZpcnN0Q2hpbGRCb3goKTsg
Y2hpbGRCb3g7IGNoaWxkQm94ID0gY2hpbGRCb3gtPm5leHRTaWJsaW5nQm94KCkpIHsKKyAgICAg
ICAgaWYgKGNoaWxkQm94LT5oZWlnaHQoKSA9PSAwIHx8IGNoaWxkQm94LT5zdHlsZSgpLT52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSB8fCBjaGlsZEJveC0+aXNGbG9hdGluZ09yUG9zaXRpb25lZCgp
KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFJlbmRlckJveCogbmV4dCA9IHJlbmRl
cmVyLT5uZXh0U2libGluZ0JveCgpOwotICAgICAgICB3aGlsZSAobmV4dCAmJiBuZXh0LT5pc0Zs
b2F0aW5nT3JQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICBuZXh0ID0gbmV4dC0+bmV4dFNpYmxp
bmdCb3goKTsKLSAgICAgICAgaWYgKG5leHQpIAotICAgICAgICAgICAgYm90dG9tID0gbmV4dC0+
eSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBib3R0b20gPSB0b3AgKyBzY3JvbGxIZWln
aHQoKTsKLSAgICAgICAgaWYgKGNvbnRlbnRzWSA+PSByZW5kZXJlci0+eSgpICYmIGNvbnRlbnRz
WSA8IGJvdHRvbSkKLSAgICAgICAgICAgIHJldHVybiByZW5kZXJlci0+cG9zaXRpb25Gb3JDb29y
ZGluYXRlcyhjb250ZW50c1ggLSByZW5kZXJlci0+eCgpLCBjb250ZW50c1kgLSByZW5kZXJlci0+
eSgpKTsKKyAgICAgICAgLy8gV2UgaGl0IHRoaXMgY2hpbGQgaWYgb3VyIGNsaWNrIHdhcyBhYm92
ZSB0aGUgYm90dG9tIG9mIGl0cyBwYWRkaW5nIGJveCAobGlrZSBJRTYvNyBhbmQgRkYzKQorICAg
ICAgICBpZiAoY29udGVudHNZIDwgY2hpbGRCb3gtPnkoKSArIGNoaWxkQm94LT5oZWlnaHQoKSkK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkZvclBvaW50UmVzcGVjdGluZ0VkaXRpbmdCb3Vu
ZGFyaWVzKHRoaXMsIGNoaWxkQm94LCBwb2ludEluQ29udGVudHMpOwogICAgIH0KLSAgICAKKwor
ICAgIC8vIFdlIG9ubHkgZ2V0IGhlcmUgaWYgdGhlcmUgYXJlIG5vLCBvciBvbmx5IGZsb2F0ZWQv
cG9zaXRpb25lZCwgb3Igb25seQorICAgIC8vIG5vbi12aXNpYmxlIGJsb2NrIGNoaWxkcmVuIGJl
bG93IHRoZSBjbGljay4KICAgICByZXR1cm4gUmVuZGVyQm94Ojpwb3NpdGlvbkZvckNvb3JkaW5h
dGVzKHgsIHkpOwogfQogCkBAIC00NDg1LDcgKzQ0ODEsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjp1
cGRhdGVGaXJzdExldHRlcigpCiB7CiAgICAgaWYgKCFkb2N1bWVudCgpLT51c2VzRmlyc3RMZXR0
ZXJSdWxlcygpKQogICAgICAgICByZXR1cm47Ci0gICAgLy8gRG9uJ3QgcmVjdXJzZQorICAgIC8v
IERvbid0IHJlY3VyCiAgICAgaWYgKHN0eWxlKCktPnN0eWxlVHlwZSgpID09IEZJUlNUX0xFVFRF
UikKICAgICAgICAgcmV0dXJuOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>27929</attachid>
            <date>2009-02-24 13:32:51 -0800</date>
            <delta_ts>2009-02-24 13:32:51 -0800</delta_ts>
            <desc>patch made with git format-patch for even easier patching by eseidel. :)</desc>
            <filename>0001-Fix-for-clicking-below-the-last-root-line-box-with-m.patch</filename>
            <type>text/plain</type>
            <size>50166</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">RnJvbSA0YmJhN2Q4MTk3NGIzZWY1N2I5OTU5MDdhM2M2NDY0YTViOTcwMTgxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBPamFuIFZhZmFpIDxvamFuQGRoY3AtMTcyLTMxLTEzNC0yMTQu
c2ZvLmNvcnAuZ29vZ2xlLmNvbT4KRGF0ZTogVGh1LCA1IEZlYiAyMDA5IDE3OjQwOjU0IC0wODAw
ClN1YmplY3Q6IFtQQVRDSF0gRml4IGZvciBjbGlja2luZyBiZWxvdyB0aGUgbGFzdCByb290IGxp
bmUgYm94IHdpdGggbXVsdGlwbGUgbGluZSBib3hlcy4KCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDM1ICsrKysKIC4uLmljay1pbi1t
YXJnaW5zLWluc2lkZS1lZGl0YWJsZS1kaXYtZXhwZWN0ZWQudHh0IHwgICAyMyArKysKIC4uLi9j
bGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0YWJsZS1kaXYuaHRtbCAgICAgIHwgICAxNCArKwog
Li4ubi1wYWRkaW5nLXdpdGgtbXVsdGlwbGUtbGluZS1ib3hlcy1leHBlY3RlZC50eHQgfCAgIDEx
ICsrCiAuLi4vY2xpY2staW4tcGFkZGluZy13aXRoLW11bHRpcGxlLWxpbmUtYm94ZXMuaHRtbCB8
ICAgMTQgKysKIC4uLi9jbGljay1vdXRzaWRlLWVkaXRhYmxlLWRpdi1leHBlY3RlZC50eHQgICAg
ICAgIHwgICAyMCArKwogLi4uL3NlbGVjdGlvbi9jbGljay1vdXRzaWRlLWVkaXRhYmxlLWRpdi5o
dG1sICAgICAgfCAgIDE0ICsrCiAuLi4vc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1v
dXRzaWRlLmh0bWwgICB8ICAgMTMgLS0KIC4uLi9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMv
VEVNUExBVEUuaHRtbCAgICAgIHwgICAxNCArKwogLi4uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRl
LWVkaXRhYmxlLWRpdi5qcyAgICAgICAgfCAgIDkzICsrKysrKysrKysKIC4uLi9jbGljay1pbi1w
YWRkaW5nLXdpdGgtbXVsdGlwbGUtbGluZS1ib3hlcy5qcyAgIHwgICA2MiArKysrKysrCiAuLi4v
cmVzb3VyY2VzL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LmpzICAgICAgICB8ICAgNDkgKysr
KysKIC4uLi9yZXNvdXJjZXMvanMtdGVzdC1zZWxlY3Rpb24tc2hhcmVkLmpzICAgICAgICAgIHwg
ICA0NCArKysrKwogLi4uL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1taXNzaW5nLWltYWdlLmh0
bWwgICAgfCAgICAyICstCiAuLi5jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1leHBlY3Rl
ZC5jaGVja3N1bSB8ICAgIDEgLQogLi4uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4
cGVjdGVkLnR4dCAgICAgfCAgIDE2IC0tCiAuLi4vc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1l
LWV4cGVjdGVkLnR4dCAgICAgICB8ICAgIDQgKy0KIC4uLi9zZWxlY3QtZnJvbS10ZXh0ZmllbGQt
b3V0d2FyZHMtZXhwZWN0ZWQudHh0ICAgIHwgICAgMiArLQogLi4uL3NlbGVjdGlvbi9zZWxlY3Qt
bWlzc2luZy1pbWFnZS1leHBlY3RlZC50eHQgICAgfCAgICAzICstCiAuLi4vY29udGVudGVkaXRh
YmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQudHh0ICAgICB8ICAgMTIgLS0KIC4uLi9zZWxlY3Rp
b24vc2VsZWN0LWFsbC1pZnJhbWUtZXhwZWN0ZWQudHh0ICAgICAgIHwgICA1NiAtLS0tLS0KIFdl
YkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyOSAr
KysKIFdlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwICAgICAgICAgICAgICAgIHwg
ICAxMCArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwICAgICAgICAgICAgICAg
ICAgfCAgMTg0ICsrKysrKysrKystLS0tLS0tLS0tCiAyNCBmaWxlcyBjaGFuZ2VkLCA1MjUgaW5z
ZXJ0aW9ucygrKSwgMjAwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRp
di1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0YWJsZS1kaXYuaHRtbAogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLXBhZGRp
bmctd2l0aC1tdWx0aXBsZS1saW5lLWJveGVzLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLXBhZGRpbmctd2l0aC1t
dWx0aXBsZS1saW5lLWJveGVzLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9jbGljay1vdXRzaWRlLWVkaXRhYmxlLWRpdi1leHBlY3RlZC50eHQK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1v
dXRzaWRlLWVkaXRhYmxlLWRpdi5odG1sCiBkZWxldGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUuaHRtbAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9U
RU1QTEFURS5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vcmVzb3VyY2VzL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5qcwog
Y3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNl
cy9jbGljay1pbi1wYWRkaW5nLXdpdGgtbXVsdGlwbGUtbGluZS1ib3hlcy5qcwogY3JlYXRlIG1v
ZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9jbGljay1v
dXRzaWRlLWVkaXRhYmxlLWRpdi5qcwogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9qcy10ZXN0LXNlbGVjdGlvbi1zaGFyZWQuanMKIGRl
bGV0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rp
b24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQuY2hlY2tzdW0KIGRlbGV0
ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24v
Y29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQudHh0CiBkZWxldGUgbW9kZSAx
MDA2NDQgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVk
aXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQudHh0CiBkZWxldGUgbW9kZSAxMDA2NDQgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFsbC1pZnJhbWUt
ZXhwZWN0ZWQudHh0CgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDYzODkyNDcuLjhkZmM4M2MgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
OCBAQAorMjAwOS0wMi0wNSBPamFuIFZhZmFpIDxvamFuQGNocm9taXVtLm9yZz4gYW5kIEVyaWMg
U2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTWFrZSBjdXJzb3IgcG9zaXRpb25zIG1hdGNoIElFNi9JRTcvRkYz
IHdoZW4gY2xpY2tpbmcgaW4gbWFyZ2lucy9wYWRkaW5nCisgICAgICAgIGFyb3VuZCBkaXZzIGlu
c2lkZSBlZGl0YWJsZSByZWdpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2MDUKKworICAgICAgICBGaXggY2xpY2tzIG91dHNpZGUgZWRpdGFi
bGUgcmVnaW9ucyBmcm9tIGZvY3VzaW5nIHRoZSBlZGl0YWJsZSByZWdpb24uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwNworCisgICAgICAgIFJl
bW92ZWQgZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUuaHRt
bCBhcyBpdCdzCisgICAgICAgIG5vdCBhcyB1c2VmdWwgYXMgb3VyIG5ldyB0ZXN0cy4KKworICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxl
LWRpdi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2Ns
aWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1wYWRkaW5nLXdpdGgtbXVsdGlwbGUtbGluZS1i
b3hlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2Ns
aWNrLWluLXBhZGRpbmctd2l0aC1tdWx0aXBsZS1saW5lLWJveGVzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stb3V0c2lk
ZS1lZGl0YWJsZS1kaXYuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24v
Y29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBl
ZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVk
aXRhYmxlLWRpdi5qczogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vcmVzb3Vy
Y2VzL2NsaWNrLWluLXBhZGRpbmctd2l0aC1tdWx0aXBsZS1saW5lLWJveGVzLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2stb3V0c2lkZS1lZGl0
YWJsZS1kaXYuanM6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNl
cy9qcy10ZXN0LXNlbGVjdGlvbi1zaGFyZWQuanM6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcv
c2VsZWN0aW9uL3NlbGVjdC1taXNzaW5nLWltYWdlLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVj
dGVkLmNoZWNrc3VtOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Nl
bGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwt
aWZyYW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxl
Y3Rpb24vc2VsZWN0LWZyb20tdGV4dGZpZWxkLW91dHdhcmRzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LW1pc3NpbmctaW1hZ2Ut
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uL2Nv
bnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisKIDIwMDktMDItMjQgIEFkYW0gVHJlYXQgIDxhZGFtLnRyZWF0
QHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1tYXJnaW5z
LWluc2lkZS1lZGl0YWJsZS1kaXYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWYzZDExCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1p
bnNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIzIEBACitFbnN1cmUg
Y3Vyc29yIHBsYWNlbWVudCBtYXRjaGVzIElFNi9JRTcvRkYzIHdoZW4gY2xpY2tpbmcgYWJvdmUv
YmVsb3cgbGluZXMgaW4gcGFkZGluZy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAwCitQQVNT
IFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMQorUEFTUyBTZWxl
Y3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDIKK1BBU1MgU2VsZWN0aW9u
IGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAwCitQQVNTIFNlbGVjdGlvbiBpcyBh
dCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMgorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9k
ZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDAKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtv
YmplY3QgVGV4dF0gb2Zmc2V0OiAxCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0
IFRleHRdIG9mZnNldDogMgorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0
XSBvZmZzZXQ6IDAKK1BBU1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zm
c2V0OiAxCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDog
MgorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBvZmZzZXQ6IDAKK1BB
U1MgU2VsZWN0aW9uIGlzIGF0IG5vZGU6IFtvYmplY3QgVGV4dF0gb2Zmc2V0OiAxCitQQVNTIFNl
bGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRleHRdIG9mZnNldDogMgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxl
LWRpdi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lu
cy1pbnNpZGUtZWRpdGFibGUtZGl2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMTdmNzU5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5odG1sCkBAIC0wLDAg
KzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2pzLXRlc3Qtc2VsZWN0aW9uLXNoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxl
LWRpdi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLXBhZGRpbmctd2l0aC1tdWx0
aXBsZS1saW5lLWJveGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2NsaWNrLWluLXBhZGRpbmctd2l0aC1tdWx0aXBsZS1saW5lLWJveGVzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGM3YzA3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tcGFkZGluZy13
aXRoLW11bHRpcGxlLWxpbmUtYm94ZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK0Ns
aWNrIGFib3ZlL2JlbmVhdGggdGhlIHdvcmQgRk9PLiBOb3RpY2UgaG93IHRoZSBjdXJzb3IgZ29l
cyBpbiB0aGUgcmlnaHQgcGxhY2UgKGFmdGVyIHRoZSBsZXR0ZXIgRikuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIFNlbGVjdGlvbiBpcyBhdCBub2RlOiBbb2JqZWN0IFRl
eHRdIG9mZnNldDogMQorUEFTUyBTZWxlY3Rpb24gaXMgYXQgbm9kZTogW29iamVjdCBUZXh0XSBv
ZmZzZXQ6IDEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1w
YWRkaW5nLXdpdGgtbXVsdGlwbGUtbGluZS1ib3hlcy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zZWxlY3Rpb24vY2xpY2staW4tcGFkZGluZy13aXRoLW11bHRpcGxlLWxpbmUtYm94ZXMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTRjNDc2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tcGFkZGluZy13
aXRoLW11bHRpcGxlLWxpbmUtYm94ZXMuaHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXNlbGVj
dGlvbi1zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9jbGljay1pbi1wYWRkaW5nLXdpdGgtbXVsdGlwbGUtbGluZS1ib3hlcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmM1NmY3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2st
b3V0c2lkZS1lZGl0YWJsZS1kaXYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKK0Vuc3Vy
ZSB0aGF0IGNsaWNraW5nIGluIHRoZSBtYXJnaW5zIGFyb3VuZCBlZGl0YWJsZSBkaXZzIGRvZXMg
bm90IGdyYW50IGZvY3VzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBD
bGljayBAIDEwLCAxMCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBDbGljayBAIDE3MCwgMTAg
ZGlkIG5vdCBjYXVzZSBmb2N1cy4KK1BBU1MgQ2xpY2sgQCAxMCwgMTcwIGRpZCBub3QgY2F1c2Ug
Zm9jdXMuCitQQVNTIENsaWNrIEAgNzAsIDcwIGRpZCBub3QgY2F1c2UgZm9jdXMuCitQQVNTIENs
aWNrIEAgMTcwLCA3MCBkaWQgbm90IGNhdXNlIGZvY3VzLgorUEFTUyBDbGljayBAIDI3MCwgNzAg
ZGlkIG5vdCBjYXVzZSBmb2N1cy4KK1BBU1MgQ2xpY2sgQCA3MCwgMTcwIGRpZCBub3QgY2F1c2Ug
Zm9jdXMuCitQQVNTIENsaWNrIEAgMjcwLCAxNzAgZGlkIG5vdCBjYXVzZSBmb2N1cy4KK1BBU1Mg
Q2xpY2sgQCA3MCwgMjcwIGRpZCBub3QgY2F1c2UgZm9jdXMuCitQQVNTIENsaWNrIEAgMTcwLCAy
NzAgZGlkIG5vdCBjYXVzZSBmb2N1cy4KK1BBU1MgQ2xpY2sgQCAyNzAsIDI3MCBkaWQgbm90IGNh
dXNlIGZvY3VzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLW91
dHNpZGUtZWRpdGFibGUtZGl2Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9j
bGljay1vdXRzaWRlLWVkaXRhYmxlLWRpdi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjkzMDg2NzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9jbGljay1vdXRzaWRlLWVkaXRhYmxlLWRpdi5odG1sCkBAIC0wLDAgKzEsMTQg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2pzLXRlc3Qtc2VsZWN0aW9uLXNoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2NsaWNrLW91dHNpZGUtZWRpdGFibGUtZGl2LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUuaHRtbCBiL0xheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwZDhlYWUuLjAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNp
ZGUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTxzY3JpcHQ+Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
RWRpdGluZ0NhbGxiYWNrcygpOwotPC9zY3JpcHQ+Ci08ZGl2IHN0eWxlPSJ3aWR0aDogNDAwcHg7
IGhlaWdodDogNTBweDsgcGFkZGluZzogMjVweCAwIDAgMjVweDsgYmFja2dyb3VuZDogeWVsbG93
OyI+PGRpdiBjb250ZW50ZWRpdGFibGU9InRydWUiIHN0eWxlPSJiYWNrZ3JvdW5kOiB3aGl0ZTsg
aGVpZ2h0OjIwcHg7IHdpZHRoOjEwMHB4Ij48L2Rpdj48L2Rpdj4KLTxwPlRoaXMgdGVzdCBjbGlj
a3Mgb3V0c2lkZSBhbiBlZGl0YWJsZSBkaXYgZWxlbWVudCwgYW5kIG11c3Qgbm90IHJlc3VsdCBp
biB0aGUgZWxlbWVudCByZWNlaXZpbmcgZm9jdXMuIElmIHRoZSB0ZXN0IHN1Y2NlZWRzIHRoZSBl
bGVtZW50IHNob3VsZCBub3QgaGF2ZSBhIGZvY3VzIHJpbmcuPC9wPgotPHNjcmlwdD4KLWlmICh3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygyMjUsIDQ1
KTsKLSAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKLSAgICBldmVudFNlbmRlci5tb3VzZVVw
KCk7Ci19Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL3Jlc291cmNlcy9URU1QTEFURS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZmU2ZTUwZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL3Jlc291cmNlcy9URU1QTEFURS5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qtc2Vs
ZWN0aW9uLXNoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iWU9V
Ul9KU19GSUxFX0hFUkUiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2staW4t
bWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2LmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vcmVzb3VyY2VzL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTQxMzU3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLWluLW1h
cmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5qcwpAQCAtMCwwICsxLDkzIEBACitkZXNjcmlwdGlv
bigiRW5zdXJlIGN1cnNvciBwbGFjZW1lbnQgbWF0Y2hlcyBJRTYvSUU3L0ZGMyB3aGVuIGNsaWNr
aW5nIGFib3ZlL2JlbG93IGxpbmVzIGluIHBhZGRpbmcuIikKKworZG9jdW1lbnQuYm9keS5zdHls
ZS5tYXJnaW4gPSAwOworCit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CitkaXYuc3R5bGUuY3NzVGV4dCA9ICJmb250LWZhbWlseTogYWhlbTsgZm9udC1zaXplOiAyMHB4
OyAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogeWVsbG93OyB3aWR0aDogNDBweDsgaGVpZ2h0OiA4
MHB4OyBwYWRkaW5nOiAyMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiOworZGl2LmNvbnRl
bnRFZGl0YWJsZSA9IHRydWU7CisKK3ZhciBmaXJzdFRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgiWFgiKTsKK3ZhciBmaXJzdERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworZmlyc3REaXYuYXBwZW5kQ2hpbGQoZmlyc3RUZXh0KTsKK2ZpcnN0RGl2LnN0eWxlLmNzc1Rl
eHQgPSAicGFkZGluZy1ib3R0b206IDE5cHg7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBwaW5r
OyBtYXJnaW4tYm90dG9tOiAyMHB4IjsKK2Rpdi5hcHBlbmRDaGlsZChmaXJzdERpdik7CisKK3Zh
ciBzZWNvbmRUZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIllZIik7Cit2YXIgc2Vjb25k
RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitzZWNvbmREaXYuYXBwZW5kQ2hp
bGQoc2Vjb25kVGV4dCk7CitkaXYuYXBwZW5kQ2hpbGQoc2Vjb25kRGl2KTsKKworZG9jdW1lbnQu
Ym9keS5pbnNlcnRCZWZvcmUoZGl2LCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOworCitmdW5j
dGlvbiBjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoeCwgeSwgbm9kZSwgb2Zmc2V0KSB7CisgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBjbGlja0F0KHgsIHkpOworICAgICAg
ICBhc3NlcnRTZWxlY3Rpb25BdChub2RlLCBvZmZzZXQpOworICAgIH0gZWxzZSB7CisgICAgICAg
IHRlc3RzLnB1c2goeworICAgICAgICAgICAgdGVzdEZ1bmN0aW9uOiBmdW5jdGlvbigpIHsgYXNz
ZXJ0UmFuZ2Uobm9kZSwgb2Zmc2V0KTsgfSwKKyAgICAgICAgICAgIGNsaWNrU3RyaW5nOiAiICIg
KyB4ICsgIiwgIiArIHkgfQorICAgICAgICApCisgICAgfQorfQorCitmdW5jdGlvbiBwcmludENs
aWNrU3RyaW5nRm9yV2FpdGluZ1Rlc3QoKQoreworICAgIGlmICghdGVzdHNbdGVzdEluZGV4XSkK
KyAgICAgICAgcmV0dXJuOworICAgIGRlYnVnKCJXYWl0aW5nIGZvciBjbGljayBAICIgKyB0ZXN0
c1t0ZXN0SW5kZXhdLmNsaWNrU3RyaW5nKTsKK30KKwordmFyIHRlc3RJbmRleCA9IDA7Cit2YXIg
dGVzdHMgPSBbXTsKK2Z1bmN0aW9uIHJ1bkludGVyYWN0aXZlVGVzdHMoKQoreworICAgIHRlc3RJ
bmRleCA9IDA7CisgICAgcHJpbnRDbGlja1N0cmluZ0ZvcldhaXRpbmdUZXN0KCk7CisgICAgZG9j
dW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgZnVuY3Rpb24oKSB7CisgICAg
ICAgIGRlYnVnKCJHb3QgY2xpY2sgQCAiICsgZXZlbnQuY2xpZW50WCArICIsICIgKyBldmVudC5j
bGllbnRZKTsKKyAgICAgICAgdmFyIHRlc3QgPSB0ZXN0c1t0ZXN0SW5kZXhdOworICAgICAgICBp
ZiAodGVzdCkgeworICAgICAgICAgICAgdGVzdC50ZXN0RnVuY3Rpb24oKTsKKyAgICAgICAgICAg
IHRlc3RJbmRleCsrOworICAgICAgICAgICAgcHJpbnRDbGlja1N0cmluZ0ZvcldhaXRpbmdUZXN0
KCk7CisgICAgICAgIH0KKyAgICB9LCBmYWxzZSk7Cit9CisKKy8vIFdoZW4gY2xpY2tpbmcgYmV0
d2VlbiBkaXZzIHNlcGFyYXRlZCBieSBtYXJnaW5zIGluIGFuIGVkaXRhYmxlCisvLyB0ZXh0IHJl
Z2lvbiwgdGhlIGJyb3dzZXJzIGRpZmZlciBpbiBiZWhhdmlvcjoKKy8vIEZGMzogdmVydGljYWwg
cGFkZGluZyBib3ggKyBzb21lIHNvcnQgb2Ygb3ZlcmhhbmcgZGVjZW50PworLy8gSUU2L0lFNzog
dmVydGljYWwgcGFkZGluZyBib3gKKy8vIElFOCBiMjogbWFyZ2luIGJveAorLy8gU2FmYXJpMzog
bWFyZ2luIGJveCAoYnV0IGN1cnNvciBnb2VzIGF0IGVuZCBvZiBsaW5lKQorCitjbGlja1Nob3Vs
ZFJlc3VsdEluUmFuZ2UoMTAsIDEwLCBmaXJzdFRleHQsIDApOworY2xpY2tTaG91bGRSZXN1bHRJ
blJhbmdlKDQwLCAxMCwgZmlyc3RUZXh0LCAxKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSg3
MCwgMTAsIGZpcnN0VGV4dCwgMik7CisKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSgxMCwgMzAs
IGZpcnN0VGV4dCwgMCk7CitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNzAsIDMwLCBmaXJzdFRl
eHQsIDIpOworCitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoMTAsIDUwLCBmaXJzdFRleHQsIDAp
OworY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKDQwLCA1MCwgZmlyc3RUZXh0LCAxKTsKK2NsaWNr
U2hvdWxkUmVzdWx0SW5SYW5nZSg3MCwgNTAsIGZpcnN0VGV4dCwgMik7CisKKy8vIFdlJ3JlIGdv
aW5nIHRvIGZvbGxvdyBJRSA3J3MgYmVoYXZpb3IgYW5kIHVzZSB0aGUgcGFkZGluZyBib3ggaGVp
Z2h0CisvLyBmb3IgZGV0ZXJtaW5pbmcgaWYgdGhlIGNsaWNrIGJlbG93IGEgZGl2IChpbiB0aGUg
cGFkZGluZy9tYXJnaW4gcmVnaW9uKQorY2xpY2tTaG91bGRSZXN1bHRJblJhbmdlKDEwLCA3MCwg
c2Vjb25kVGV4dCwgMCk7CitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNDAsIDcwLCBzZWNvbmRU
ZXh0LCAxKTsKK2NsaWNrU2hvdWxkUmVzdWx0SW5SYW5nZSg3MCwgNzAsIHNlY29uZFRleHQsIDIp
OworCitjbGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoMTAsIDExMCwgc2Vjb25kVGV4dCwgMCk7Citj
bGlja1Nob3VsZFJlc3VsdEluUmFuZ2UoNDAsIDExMCwgc2Vjb25kVGV4dCwgMSk7CitjbGlja1No
b3VsZFJlc3VsdEluUmFuZ2UoNzAsIDExMCwgc2Vjb25kVGV4dCwgMik7CisKKy8vIENsZWFuIHVw
IGFmdGVyIG91cnNlbHZlcyBpZiB3ZSdyZSBub3QgYmVpbmcgcnVuIGluIHRoZSBicm93c2VyCitp
ZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChk
aXYpOworfSBlbHNlIHsKKyAgICBydW5JbnRlcmFjdGl2ZVRlc3RzKCk7Cit9CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLWluLXBhZGRpbmctd2l0aC1tdWx0aXBsZS1saW5lLWJv
eGVzLmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLWlu
LXBhZGRpbmctd2l0aC1tdWx0aXBsZS1saW5lLWJveGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjcwOGVhNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2xpY2staW4tcGFkZGluZy13aXRoLW11bHRpcGxl
LWxpbmUtYm94ZXMuanMKQEAgLTAsMCArMSw2MiBAQAorZGVzY3JpcHRpb24oIkNsaWNrIGFib3Zl
L2JlbmVhdGggdGhlIHdvcmQgRk9PLiBOb3RpY2UgaG93IHRoZSBjdXJzb3IgZ29lcyBpbiB0aGUg
cmlnaHQgcGxhY2UgKGFmdGVyIHRoZSBsZXR0ZXIgRikuIikKKworZG9jdW1lbnQuYm9keS5zdHls
ZS5tYXJnaW4gPSAwOworCit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CitkaXYuc3R5bGUuY3NzVGV4dCA9ICJmb250LWZhbWlseTphaGVtOyB3aWR0aDo1MHB4OyBoZWln
aHQ6NjBweDsgYm9yZGVyOjFweCBzb2xpZCBibHVlOyB3aGl0ZS1zcGFjZTpub3dyYXA7IG92ZXJm
bG93OnNjcm9sbDsgcGFkZGluZzo1MHB4OyI7CitkaXYuY29udGVudEVkaXRhYmxlID0gdHJ1ZTsK
K2Rpdi5pbm5lckhUTUwgPSAiMTIzNDU8c3BhbiBpZD0nZm9vJz5GT088L3NwYW4+Njc4OTxzcGFu
PkJBUjwvc3Bhbj4iOworZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZGl2LCBkb2N1bWVudC5i
b2R5LmZpcnN0Q2hpbGQpOworCitkaXYuc2Nyb2xsTGVmdCA9IDUwOworCitmdW5jdGlvbiBjbGlj
a1Nob3VsZFJlc3VsdEluUmFuZ2UoeCwgeSwgbm9kZSwgb2Zmc2V0KSB7CisgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICBjbGlja0F0KHgsIHkpOworICAgICAgICBhc3NlcnRT
ZWxlY3Rpb25BdChub2RlLCBvZmZzZXQpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RzLnB1
c2goeworICAgICAgICAgICAgdGVzdEZ1bmN0aW9uOiBmdW5jdGlvbigpIHsgYXNzZXJ0UmFuZ2Uo
bm9kZSwgb2Zmc2V0KTsgfSwKKyAgICAgICAgICAgIGNsaWNrU3RyaW5nOiAiICIgKyB4ICsgIiwg
IiArIHkgfQorICAgICAgICApCisgICAgfQorfQorCitmdW5jdGlvbiBwcmludENsaWNrU3RyaW5n
Rm9yV2FpdGluZ1Rlc3QoKQoreworICAgIGlmICghdGVzdHNbdGVzdEluZGV4XSkKKyAgICAgICAg
cmV0dXJuOworICAgIGRlYnVnKCJXYWl0aW5nIGZvciBjbGljayBAICIgKyB0ZXN0c1t0ZXN0SW5k
ZXhdLmNsaWNrU3RyaW5nKTsKK30KKwordmFyIHRlc3RJbmRleCA9IDA7Cit2YXIgdGVzdHMgPSBb
XTsKK2Z1bmN0aW9uIHJ1bkludGVyYWN0aXZlVGVzdHMoKQoreworICAgIHRlc3RJbmRleCA9IDA7
CisgICAgcHJpbnRDbGlja1N0cmluZ0ZvcldhaXRpbmdUZXN0KCk7CisgICAgZG9jdW1lbnQuYm9k
eS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGRlYnVn
KCJHb3QgY2xpY2sgQCAiICsgZXZlbnQuY2xpZW50WCArICIsICIgKyBldmVudC5jbGllbnRZKTsK
KyAgICAgICAgdmFyIHRlc3QgPSB0ZXN0c1t0ZXN0SW5kZXhdOworICAgICAgICBpZiAodGVzdCkg
eworICAgICAgICAgICAgdGVzdC50ZXN0RnVuY3Rpb24oKTsKKyAgICAgICAgICAgIHRlc3RJbmRl
eCsrOworICAgICAgICAgICAgcHJpbnRDbGlja1N0cmluZ0ZvcldhaXRpbmdUZXN0KCk7CisgICAg
ICAgIH0KKyAgICB9LCBmYWxzZSk7Cit9CisKK3ZhciBmb28gPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZm9vJyk7Cit2YXIgeCA9IGZvby5vZmZzZXRMZWZ0IC0gZGl2LnNjcm9sbExlZnQgKyAx
MDsKKy8vIENsaWNrIDEwcHggYWZ0ZXIgdGhlIHN0YXJ0IG9mIHRoZSBzcGFuIHNob3VsZCBwdXQg
dGhlIGN1cnNvciByaWdodCBhZnRlciB0aGUgbGV0dGVyIEYuCitjbGlja1Nob3VsZFJlc3VsdElu
UmFuZ2UoeCwgZm9vLm9mZnNldFRvcCAtIDIwLCBmb28uZmlyc3RDaGlsZCwgMSk7CitjbGlja1No
b3VsZFJlc3VsdEluUmFuZ2UoeCwgZm9vLm9mZnNldFRvcCArIDIwLCBmb28uZmlyc3RDaGlsZCwg
MSk7CisKKy8vIENsZWFuIHVwIGFmdGVyIG91cnNlbHZlcyBpZiB3ZSdyZSBub3QgYmVpbmcgcnVu
IGluIHRoZSBicm93c2VyCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgZG9jdW1lbnQu
Ym9keS5yZW1vdmVDaGlsZChkaXYpOworfSBlbHNlIHsKKyAgICBydW5JbnRlcmFjdGl2ZVRlc3Rz
KCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNrLW91dHNpZGUtZWRpdGFi
bGUtZGl2LmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NsaWNr
LW91dHNpZGUtZWRpdGFibGUtZGl2LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjRjZmJkNzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9yZXNvdXJjZXMvY2xpY2stb3V0c2lkZS1lZGl0YWJsZS1kaXYuanMKQEAgLTAsMCArMSw0
OSBAQAorZGVzY3JpcHRpb24oIkVuc3VyZSB0aGF0IGNsaWNraW5nIGluIHRoZSBtYXJnaW5zIGFy
b3VuZCBlZGl0YWJsZSBkaXZzIGRvZXMgbm90IGdyYW50IGZvY3VzLiIpCisKK2RvY3VtZW50LmJv
ZHkuc3R5bGUubWFyZ2luID0gIjIwcHgiOworCit2YXIgb3V0ZXJEaXYgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKK291dGVyRGl2LnN0eWxlLmNzc1RleHQgPSAid2lkdGg6IDEwMHB4
OyBwYWRkaW5nOiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsiOwordmFyIGlubmVyRGl2
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citpbm5lckRpdi5zdHlsZS5jc3NUZXh0
ID0gImhlaWdodDogMTAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIHBpbms7IGJhY2tncm91bmQtY29s
b3I6IGdyZWVuOyI7Citpbm5lckRpdi5jb250ZW50RWRpdGFibGUgPSB0cnVlOworb3V0ZXJEaXYu
YXBwZW5kQ2hpbGQoaW5uZXJEaXYpOworZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUob3V0ZXJE
aXYsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisKK3ZhciBsYXN0Q2xpY2tDYXVzZWRGb2N1
cyA9IGZhbHNlOworZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNldXAiLCBmdW5jdGlvbihlKSB7CisgICAgdmFyIGxhc3RDbGljayA9IGUgfHwgd2luZG93LmV2
ZW50OworICAgIGlmIChsYXN0Q2xpY2tDYXVzZWRGb2N1cykgeworICAgICAgICB0ZXN0RmFpbGVk
KCJDbGljayBAICIgKyBsYXN0Q2xpY2suY2xpZW50WCArICIsICIgKyBsYXN0Q2xpY2suY2xpZW50
WSArICIgY2F1c2VkIGlubmVyZGl2IHRvIGZvY3VzISIpOworICAgIH0gZWxzZSB7CisgICAgICAg
IHRlc3RQYXNzZWQoIkNsaWNrIEAgIiArIGxhc3RDbGljay5jbGllbnRYICsgIiwgIiArIGxhc3RD
bGljay5jbGllbnRZICsgIiBkaWQgbm90IGNhdXNlIGZvY3VzLiIpOworICAgIH0KKyAgICBpbm5l
ckRpdi5ibHVyKCk7CisgICAgbGFzdENsaWNrQ2F1c2VkRm9jdXMgPSBmYWxzZTsKK30sIGZhbHNl
KTsKKworaW5uZXJEaXYuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCBmdW5jdGlvbigpIHsKKyAg
ICBsYXN0Q2xpY2tDYXVzZWRGb2N1cyA9IHRydWU7Cit9LCBmYWxzZSk7CisKK2lmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICBjbGlja0F0KDEwLCAxMCk7CisgICAgY2xpY2tBdCgxNzAsIDEw
KTsKKyAgICBjbGlja0F0KDEwLCAxNzApOworCisgICAgY2xpY2tBdCg3MCwgNzApOworICAgIGNs
aWNrQXQoMTcwLCA3MCk7CisgICAgY2xpY2tBdCgyNzAsIDcwKTsKKworICAgIGNsaWNrQXQoNzAs
IDE3MCk7CisgICAgY2xpY2tBdCgyNzAsIDE3MCk7CisKKyAgICBjbGlja0F0KDcwLCAyNzApOwor
ICAgIGNsaWNrQXQoMTcwLCAyNzApOworICAgIGNsaWNrQXQoMjcwLCAyNzApOworfSBlbHNlIHsK
KyAgICBkZWJ1ZygiVG8gdGVzdCwgY2ljayBhYm92ZSBhbmQgdG8gdGhlIGxlZnQgb2YgdGhlIGJs
dWUgYm94LCB0aGVuIGFib3ZlIGl0LCB0aGVuIHRvIHRoZSBsZWZ0ICIgKworICAgICAgICAgICJv
ZiBpdCBhbmQgZmluYWxseSwgY2xpY2sgaW4gYWxsIDggcmVnaW9ucyBhcm91bmQgdGhlIGdyZWVu
IGRpdi4iKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvanMtdGVzdC1zZWxlY3Rp
b24tc2hhcmVkLmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2pz
LXRlc3Qtc2VsZWN0aW9uLXNoYXJlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4wYTA2NGVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vcmVzb3VyY2VzL2pzLXRlc3Qtc2VsZWN0aW9uLXNoYXJlZC5qcwpAQCAtMCwwICsxLDQ0
IEBACitmdW5jdGlvbiBvYmplY3RBc1N0cmluZyhvYmplY3QsIHByb3BlcnRpZXMpIHsKKyAgICB2
YXIgcmVzdWx0ID0gIlsiOworICAgIGZvciAodmFyIHggPSAwOyB4IDwgcHJvcGVydGllcy5sZW5n
dGg7IHgrKykgeworICAgICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW3hdOworICAgICAg
ICBpZiAoeCAhPSAwKQorICAgICAgICAgICAgcmVzdWx0ICs9ICIgIjsKKworICAgICAgICB2YXIg
dmFsdWUgPSBvYmplY3RbcHJvcGVydHldOworICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUubm9k
ZVR5cGUpIC8vIHRleHROb2RlCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlICsgIiggIiArIHZh
bHVlLm5vZGVWYWx1ZSArICIgKSI7CisKKyAgICAgICAgcmVzdWx0ICs9IHByb3BlcnR5ICsgIjog
IiArIHZhbHVlOworICAgIH0KKyAgICByZXN1bHQgKz0gJ10nOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK2Z1bmN0aW9uIHNlbGVjdGlvbkFzU3RyaW5nKHNlbCkKK3sKKyAgICB2YXIgcHJvcGVy
dGllcyA9IFsnYW5jaG9yTm9kZScsICdhbmNob3JPZmZzZXQnLCAnZm9jdXNOb2RlJywgJ2ZvY3Vz
T2Zmc2V0JywgJ2lzQ29sbGFwc2VkJ107CisgICAgcmV0dXJuIG9iamVjdEFzU3RyaW5nKHNlbCwg
cHJvcGVydGllcyk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydFNlbGVjdGlvbkF0KG5vZGUsIG9mZnNl
dCkgeworICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgaWYgKHNlbC5h
bmNob3JOb2RlID09IG5vZGUKKyAgICAgICAgJiYgc2VsLmZvY3VzTm9kZSA9PSBub2RlCisgICAg
ICAgICYmIHNlbC5hbmNob3JPZmZzZXQgPT0gb2Zmc2V0CisgICAgICAgICYmIHNlbC5mb2N1c09m
ZnNldCA9PSBvZmZzZXQKKyAgICAgICAgJiYgc2VsLmlzQ29sbGFwc2VkKSB7CisgICAgICAgIHRl
c3RQYXNzZWQoIlNlbGVjdGlvbiBpcyBhdCBub2RlOiAiICsgbm9kZSArICIgb2Zmc2V0OiAiICsg
b2Zmc2V0KTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJTZWxlY3Rpb24gaXMg
IiArIHNlbGVjdGlvbkFzU3RyaW5nKHNlbCkgKyAiIHNob3VsZCBiZSBhdCBub2RlOiAiICsgbm9k
ZSArICIgb2Zmc2V0OiAiICsgb2Zmc2V0KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNsaWNrQXQo
eCwgeSkgeworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwor
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtbWlzc2luZy1pbWFnZS5odG1sIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LW1pc3NpbmctaW1hZ2UuaHRtbAppbmRleCBiNzM3
NmRhLi41MDQ2MGVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9z
ZWxlY3QtbWlzc2luZy1pbWFnZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL3NlbGVjdC1taXNzaW5nLWltYWdlLmh0bWwKQEAgLTIxLDcgKzIxLDcgQEAgZnVuY3Rpb24g
ZWRpdGluZ1Rlc3QoKSB7CiA8dGl0bGU+RWRpdGluZyBUZXN0PC90aXRsZT4gCiA8L2hlYWQ+IAog
PGJvZHk+Ci08ZGl2IGNvbnRlbnRlZGl0YWJsZSBpZD0icm9vdCIgY2xhc3M9ImVkaXRpbmciPgor
PGRpdiBjb250ZW50ZWRpdGFibGUgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4KIDxpbWcgdGl0
bGU9IlNob3VsZCBzZWUgc2VsZWN0aW9uIHRpbnQgb3ZlciB0aGlzIG1pc3NpbmcgaW1hZ2UuIiBz
cmM9Ii4uL25vbmVTdWNoLmpwZyIgaGVpZ2h0PSIxMDAiIHdpZHRoPSI1NTAiPiAKIDwvZGl2Pgog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24v
Y29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQuY2hlY2tzdW0gYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNr
LW91dHNpZGUtZXhwZWN0ZWQuY2hlY2tzdW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGM1OTE3ZjEuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
c2VsZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLmNoZWNrc3Vt
CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotMTY1MmZkODFiNmM4N2I5ODhhMDAzMzE4Zjk4
MTkzNzgKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91
dHNpZGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NvbnRlbnRlZGl0YWJsZS1jbGljay1vdXRzaWRlLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRjNmZiMC4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91
dHNpZGUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotRURJVElO
RyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5n
ZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
MCBvZiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVj
dGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQotRURJVElORyBERUxF
R0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudAotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGlu
ZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmlj
YXRpb24KLWxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJWaWV3IGF0ICgwLDAp
IHNpemUgODAweDYwMAotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlckJsb2Nr
IHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAo
OCw4KSBzaXplIDc4NHg1NzYKLSAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUg
NDI1eDc1IFtiZ2NvbG9yPSNGRkZGMDBdCi0gICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgy
NSwyNSkgc2l6ZSAxMDB4MjAgW2JnY29sb3I9I0ZGRkZGRl0KLSAgICAgIFJlbmRlckJsb2NrIHtQ
fSBhdCAoMCw5MSkgc2l6ZSA3ODR4MzYKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgNzU5eDM2Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzU5OiAi
VGhpcyB0ZXN0IGNsaWNrcyBvdXRzaWRlIGFuIGVkaXRhYmxlIGRpdiBlbGVtZW50LCBhbmQgbXVz
dCBub3QgcmVzdWx0IGluIHRoZSBlbGVtZW50IHJlY2VpdmluZyBmb2N1cy4gSWYgdGhlIHRlc3Qg
c3VjY2VlZHMgdGhlIgotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCAyMzU6ICJl
bGVtZW50IHNob3VsZCBub3QgaGF2ZSBhIGZvY3VzIHJpbmcuIgotY2FyZXQ6IHBvc2l0aW9uIDAg
b2YgY2hpbGQgMCB7RElWfSBvZiBjaGlsZCAwIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNo
aWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFsbC1pZnJhbWUtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZy
YW1lLWV4cGVjdGVkLnR4dAppbmRleCA4NDJjMmEzLi5iNDA1ZGViIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFsbC1pZnJhbWUt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVj
dGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTEsOSArMSw5IEBACiBFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGlu
Z0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDQg
b2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRC
ZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgotRURJVElORyBE
RUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0
aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdl
OnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA1IG9mICN0
ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3du
c3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVE
SVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAx
MSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDExIG9mICN0ZXh0
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAg
b2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxMSBvZiAjdGV4dCA+
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5p
dHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91
bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxl
Y3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246
V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTog
c2hvdWxkRGVsZXRlRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWZyb20tdGV4dGZpZWxkLW91
dHdhcmRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Nl
bGVjdGlvbi9zZWxlY3QtZnJvbS10ZXh0ZmllbGQtb3V0d2FyZHMtZXhwZWN0ZWQudHh0CmluZGV4
IDE4YzM3YTYuLmIwNjQ3NDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtZnJvbS10ZXh0ZmllbGQtb3V0d2FyZHMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxl
Y3QtZnJvbS10ZXh0ZmllbGQtb3V0d2FyZHMtZXhwZWN0ZWQudHh0CkBAIC04LDEwICs4LDEwIEBA
IEVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAwIG9mICN0ZXh0ID4gRElWIHRvIDEyCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJ
TkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBv
ZiAjdGV4dCA+IERJViB0byAxNyBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20g
MCBvZiAjdGV4dCA+IERJViB0byAxMiBvZiAjdGV4dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlv
bkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdl
OnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViB0byAxMiBvZiAjdGV4dCA+IERJViB0b0RPTVJh
bmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViB0byAxMiBvZiAjdGV4dCA+IERJViBhZmZp
bml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQog
RURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9t
IDAgb2YgI3RleHQgPiBESVYgdG8gMTIgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBm
cm9tIDExIG9mICN0ZXh0ID4gRElWIHRvIDE3IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2Vs
ZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9N
UmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViB0byAxNyBvZiAjdGV4dCA+IERJViB0
b0RPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2YgI3RleHQgPiBESVYgdG8gMTcgb2YgI3RleHQgPiBE
SVYgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6
RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFu
Z2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViB0byAxNyBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdl
OnJhbmdlIGZyb20gMTEgb2YgI3RleHQgPiBESVYgdG8gMTcgb2YgI3RleHQgPiBESVYgYWZmaW5p
dHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIGxh
eWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAw
eDYwMAogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LW1pc3NpbmctaW1hZ2UtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3Nl
bGVjdC1taXNzaW5nLWltYWdlLWV4cGVjdGVkLnR4dAppbmRleCA5MDc0YzI2Li43YjlkZThkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vc2Vs
ZWN0LW1pc3NpbmctaW1hZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtbWlzc2luZy1pbWFnZS1leHBlY3RlZC50eHQK
QEAgLTEsNyArMSw4IEBACi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERP
TVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCB0byAyIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmlu
aXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20g
MCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mIERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5n
OldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNh
dGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5n
ZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAyIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5n
OkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIGxheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAogICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAogbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5n
L3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUtY2xpY2stb3V0c2lkZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9jb250ZW50ZWRpdGFibGUt
Y2xpY2stb3V0c2lkZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGIzMWZhMjcuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9z
ZWxlY3Rpb24vY29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDk6IFR5cGVF
cnJvcjogVmFsdWUgdW5kZWZpbmVkIChyZXN1bHQgb2YgZXhwcmVzc2lvbiBldmVudFNlbmRlci5t
b3ZlVG8pIGlzIG5vdCBvYmplY3QuCi1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVu
ZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLWxheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAotICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gICAgUmVuZGVy
Qm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc4Ci0gICAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoMCwwKSBzaXplIDQyNXg3NSBbYmdjb2xvcj0jRkZGRjAwXQotICAgICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMjUsMjUpIHNpemUgMTAweDIwIFtiZ2NvbG9yPSNGRkZGRkZdCi0gICAg
ICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsODkpIHNpemUgNzg0eDM4Ci0gICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc3MXgzOAotICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDApIHdpZHRoIDc3MTogIlRoaXMgdGVzdCBjbGlja3Mgb3V0c2lkZSBhbiBlZGl0YWJsZSBkaXYg
ZWxlbWVudCwgYW5kIG11c3Qgbm90IHJlc3VsdCBpbiB0aGUgZWxlbWVudCByZWNlaXZpbmcgZm9j
dXMuIElmIHRoZSB0ZXN0IHN1Y2NlZWRzIHRoZSIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
OSkgd2lkdGggMjM4OiAiZWxlbWVudCBzaG91bGQgbm90IGhhdmUgYSBmb2N1cyByaW5nLiIKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVj
dC1hbGwtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRp
bmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtaWZyYW1lLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMzEyMjMxYy4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLWlmcmFtZS1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
LUVESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAwIG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDQgb2YgQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0Rp
ZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdl
U2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJh
bmdlIGZyb20gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAx
MSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2Vs
ZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCi1FRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9N
UmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01S
YW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0byAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5
Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCi1FRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZERlbGV0ZURPTVJh
bmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKLUVESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRE
T01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZp
bml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQot
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KLWxheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAotICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAotbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCi0gIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
LSAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzgKLSAgICAgIFJlbmRl
ckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgNzg0eDE3MwotICAgICAgICBSZW5kZXJQ
YXJ0T2JqZWN0IHtJRlJBTUV9IGF0ICgwLDApIHNpemUgMzA0eDE1NCBbYm9yZGVyOiAoMnB4IGlu
c2V0ICMwMDAwMDApXQotICAgICAgICAgIGxheWVyIGF0ICgwLDApIHNpemUgMzAweDE1MAotICAg
ICAgICAgICAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDMwMHgxNTAKLSAgICAgICAgICBsYXll
ciBhdCAoMCwwKSBzaXplIDMwMHgxNTAKLSAgICAgICAgICAgIFJlbmRlckJsb2NrIHtIVE1MfSBh
dCAoMCwwKSBzaXplIDMwMHgxNTAKLSAgICAgICAgICAgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQg
KDgsOCkgc2l6ZSAyODR4MTM0IFtiZ2NvbG9yPSNGRkZGRTBdCi0gICAgICAgICAgICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSAyODR4MTkKLSAgICAgICAgICAgICAgICAgIFJl
bmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDE5Ci0gICAgICAgIFJlbmRlckJSIHtCUn0gYXQg
KDMwNCwxNTQpIHNpemUgMHgwCi0gICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMTU0KSBzaXpl
IDB4MTkKLSAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwxODcpIHNpemUgNzg0eDM5Ci0gICAg
ICAgIFJlbmRlcklubGluZSB7Qn0gYXQgKDAsMCkgc2l6ZSA2ODN4MjAKLSAgICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA2ODN4MjAKLSAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDUxNDogIlRoaXMgdGVzdCB1c2VzIHRoZSBldmVudFNlbmRlciB0byBk
byBhIG1vdXNlIGNsaWNrIHRvIGZvY3VzIHRoZSBzdWJmcmFtZS4gIgotICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDUxNCwwKSB3aWR0aCAxNjk6ICJJdCB3b24ndCBydW4gaW50ZXJhY3RpdmVseS4i
Ci0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNjgzLDApIHNpemUgNzQweDM5Ci0gICAg
ICAgICAgdGV4dCBydW4gYXQgKDY4MywwKSB3aWR0aCA0OiAiICIKLSAgICAgICAgICB0ZXh0IHJ1
biBhdCAoNjg3LDApIHdpZHRoIDUzOiAiVG8gcnVuIGl0IgotICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDIwKSB3aWR0aCAzNDg6ICJtYW51YWxseSwgY2xpY2sgb24gdGhlIGlmcmFtZSwgU2VsZWN0
IEFsbCwgdGhlbiBoaXQgZGVsZXRlLiIKLSAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0
ICgwLDI0MCkgc2l6ZSA3ODR4NTcKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgNzc2eDU3Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzc2OiAiU2Vs
ZWN0aW5nIGFsbCB0aGUgY29udGVudCBpbiBhIGNvbnRlbnRlZGl0YWJsZSBpZnJhbWUgc2hvdWxk
IHNlbGVjdCB0aGUgaWZyYW1lIGl0c2VsZiAodG8gaGVscCB0aGUgdXNlciBkZWxldGUgdGhlIGlm
cmFtZSkgb25seSBpZiIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOSkgd2lkdGggMjE5OiAi
dGhlIGlmcmFtZSBpcyBpbiBhbiBlZGl0YWJsZSByZWdpb24uICIKLSAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMjE5LDE5KSB3aWR0aCA0MzA6ICJUaGlzIHRlc3QgbG9hZHMgLi4vcmVzb3VyY2VzL3Nl
bGVjdC1hbGwtaWZyYW1lLXNyYy5odG1sIGludG8gYW4gaWZyYW1lLiAiCi0gICAgICAgICAgdGV4
dCBydW4gYXQgKDY0OSwxOSkgd2lkdGggOTg6ICJUaGF0IGZpbGUgZG9lcyBhIgotICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDM4KSB3aWR0aCAxMjM6ICJTZWxlY3QgQWxsICsgRGVsZXRlLiAiCi0g
ICAgICAgICAgdGV4dCBydW4gYXQgKDEyMywzOCkgd2lkdGggMTcxOiAiVHdvIHRoaW5ncyBzaG91
bGQgaGFwcGVuOiIKLSAgICAgIFJlbmRlckJsb2NrIHtVTH0gYXQgKDAsMzExKSBzaXplIDc4NHg1
NwotICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwwKSBzaXplIDc0NHgzOAotICAg
ICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKC0xNywwKSBzaXplIDd4MTk6IGJ1bGxldAotICAg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDcyOHgzOAotICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDUxOiAiVGhlIFNlbGVjdCBBbGwgb3BlcmF0aW9u
IHNob3VsZCBub3Qgc2VsZWN0IHRoZSBpZnJhbWUsIG9ubHkgaXQncyBjb250ZW50cy4gIgotICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDQ1MSwwKSB3aWR0aCAyNzc6ICJUaGUgcmVzdWx0cyBvZiB0
aGUgU2VsZWN0IEFsbCB3aWxsIGJlIGFwcGFyZW50IgotICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMTkpIHdpZHRoIDQ2NDogImZyb20gdGhlIGRlbGVnYXRlIG1lc3NhZ2VzIHRoYXQgRHVtcFJl
bmRlclRyZWUgcmVjZWl2ZXMgYW5kIGR1bXBzLiIKLSAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJ
fSBhdCAoNDAsMzgpIHNpemUgNzQ0eDE5Ci0gICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAo
LTE3LDApIHNpemUgN3gxOTogYnVsbGV0Ci0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgMzQyeDE5Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAz
NDI6ICJUaGUgY29udGVudHMgb2YgdGhlIGVkaXRhYmxlIGlmcmFtZSBzaG91bGQgYmUgZGVsZXRl
ZC4iCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGNhNmVhMTYuLjNiYzc0N2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMDktMDItMDUgIE9qYW4gVmFm
YWkgIDxvamFuQGNocm9taXVtLm9yZz4gYW5kIEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBj
dXJzb3IgcG9zaXRpb25zIG1hdGNoIElFNi9JRTcvRkYzIHdoZW4gY2xpY2tpbmcgaW4gbWFyZ2lu
cy9wYWRkaW5nCisgICAgICAgIGFyb3VuZCBkaXZzIGluc2lkZSBlZGl0YWJsZSByZWdpb25zLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MDUKKwor
ICAgICAgICBGaXggY2xpY2tzIG91dHNpZGUgZWRpdGFibGUgcmVnaW9ucyBmcm9tIGZvY3VzaW5n
IHRoZSBlZGl0YWJsZSByZWdpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzYwNworCisgICAgICAgIFJlbW92ZWQgZWRpdGluZy9zZWxlY3Rpb24v
Y29udGVudGVkaXRhYmxlLWNsaWNrLW91dHNpZGUuaHRtbCBhcyBpdCdzCisgICAgICAgIG5vdCBh
cyB1c2VmdWwgYXMgb3VyIG5ldyB0ZXN0cy4KKworICAgICAgICBDbGVhbiB1cCBSZW5kZXJCbG9j
azo6cG9zaXRpb25Gb3JDb29yZGluYXRlcyB0byByZW1vdmUgZGVhZCBjb2RlLAorICAgICAgICBk
dXBsaWNhdGUgY29kZSwgYW5kIGdlbmVyYWxseSBtYWtlIGl0IG1vcmUgcmVhZGFibGUuCisKKyAg
ICAgICAgVGVzdHM6IGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVk
aXRhYmxlLWRpdi5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1p
bi1wYWRkaW5nLXdpdGgtbXVsdGlwbGUtbGluZS1ib3hlcy5odG1sCisgICAgICAgICAgICAgICBl
ZGl0aW5nL3NlbGVjdGlvbi9jbGljay1vdXRzaWRlLWVkaXRhYmxlLWRpdi5odG1sCisKKyAgICAg
ICAgKiBlZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNp
YmxlUG9zaXRpb246OmNhbm9uaWNhbFBvc2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9zaXRpb25Gb3JQb2ludFJlc3BlY3Rp
bmdFZGl0aW5nQm91bmRhcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpwb3NpdGlvbkZvclBvaW50
V2l0aElubGluZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwb3Np
dGlvbkZvckNvb3JkaW5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjp1cGRh
dGVGaXJzdExldHRlcik6CisKIDIwMDktMDItMjQgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwIGIvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKaW5kZXggZWZjZDUwZC4uNTI4ZjMzNCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKQEAgLTQ3Niw5ICs0NzYsMTMgQEAgUG9zaXRpb24gVmlz
aWJsZVBvc2l0aW9uOjpjYW5vbmljYWxQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24p
CiAgICAgTm9kZSogbmV4dE5vZGUgPSBuZXh0Lm5vZGUoKTsKICAgICBOb2RlKiBwcmV2Tm9kZSA9
IHByZXYubm9kZSgpOwogCisgICAgLy8gSWYgdGhlIGJvZHkgaXMgbnVsbCwgdGhlcmUgaXMgbm8g
dmlzaWJsZSBwb3NpdGlvbi4KKyAgICBpZiAoIW5vZGUtPm93bmVyRG9jdW1lbnQoKS0+Ym9keSgp
KQorICAgICAgICByZXR1cm4gUG9zaXRpb24oKTsKKwogICAgIC8vIFRoZSBuZXcgcG9zaXRpb24g
bXVzdCBiZSBpbiB0aGUgc2FtZSBlZGl0YWJsZSBlbGVtZW50LiBFbmZvcmNlIHRoYXQgZmlyc3Qu
CiAgICAgLy8gVW5sZXNzIHRoZSBkZXNjZW50IGlzIGZyb20gYSBub24tZWRpdGFibGUgaHRtbCBl
bGVtZW50IHRvIGFuIGVkaXRhYmxlIGJvZHkuCi0gICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoaHRt
bFRhZykgJiYgIW5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgaWYgKG5vZGUtPmhhc1Rh
Z05hbWUoaHRtbFRhZykgJiYgIW5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkgJiYgbm9kZS0+b3du
ZXJEb2N1bWVudCgpLT5ib2R5KCktPmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAgICAgIHJldHVy
biBuZXh0LmlzTm90TnVsbCgpID8gbmV4dCA6IHByZXY7CiAKICAgICBOb2RlKiBlZGl0aW5nUm9v
dCA9IGVkaXRhYmxlUm9vdEZvclBvc2l0aW9uKHBvc2l0aW9uKTsKQEAgLTQ5MiwxMCArNDk2LDEw
IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6Y2Fub25pY2FsUG9zaXRpb24oY29uc3QgUG9z
aXRpb24mIHBvc2l0aW9uKQogICAgIGJvb2wgbmV4dElzSW5TYW1lRWRpdGFibGVFbGVtZW50ID0g
bmV4dE5vZGUgJiYgZWRpdGFibGVSb290Rm9yUG9zaXRpb24obmV4dCkgPT0gZWRpdGluZ1Jvb3Q7
CiAgICAgaWYgKHByZXZJc0luU2FtZUVkaXRhYmxlRWxlbWVudCAmJiAhbmV4dElzSW5TYW1lRWRp
dGFibGVFbGVtZW50KQogICAgICAgICByZXR1cm4gcHJldjsKLSAgICAgICAgCisKICAgICBpZiAo
bmV4dElzSW5TYW1lRWRpdGFibGVFbGVtZW50ICYmICFwcmV2SXNJblNhbWVFZGl0YWJsZUVsZW1l
bnQpCiAgICAgICAgIHJldHVybiBuZXh0OwotICAgICAgICAKKwogICAgIGlmICghbmV4dElzSW5T
YW1lRWRpdGFibGVFbGVtZW50ICYmICFwcmV2SXNJblNhbWVFZGl0YWJsZUVsZW1lbnQpCiAgICAg
ICAgIHJldHVybiBQb3NpdGlvbigpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXgg
MmEwYjY4Ni4uOTdjNjhkZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzQxNiwx
MTggKzM0MTYsMTE0IEBAIFBvc2l0aW9uIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvclJlbmRlcmVy
KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGJvb2wgc3RhcnQpIGNvCiAgICAgcmV0dXJuIFBvc2l0
aW9uKG4sIG9mZnNldCk7CiB9CiAKKy8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBnbyBv
biBSZW5kZXJPYmplY3QgYXMgYW4gaW5zdGFuY2UgbWV0aG9kLiBUaGVuCisvLyBhbGwgY2FzZXMg
aW4gd2hpY2ggcG9zaXRpb25Gb3JDb29yZGluYXRlcyByZWN1cnMgY291bGQgY2FsbCB0aGlzIGlu
c3RlYWQgdG8KKy8vIHByZXZlbnQgY3Jvc3NpbmcgZWRpdGFibGUgYm91bmRhcmllcy4gVGhpcyB3
b3VsZCByZXF1aXJlIG1hbnkgdGVzdHMuCitzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9u
Rm9yUG9pbnRSZXNwZWN0aW5nRWRpdGluZ0JvdW5kYXJpZXMoUmVuZGVyQm94KiBwYXJlbnQsIFJl
bmRlckJveCogY2hpbGQsIGNvbnN0IEludFBvaW50JiBwYXJlbnRDb29yZHMpCit7CisgICAgaW50
IHhJbkNoaWxkQ29vcmRzID0gcGFyZW50Q29vcmRzLngoKSAtIGNoaWxkLT54KCk7CisgICAgaW50
IHlJbkNoaWxkQ29vcmRzID0gcGFyZW50Q29vcmRzLnkoKSAtIGNoaWxkLT55KCk7CisKKyAgICAv
LyBJZiB0aGlzIGlzIGFuIGFub255bW91cyByZW5kZXJlciwgd2UganVzdCByZWN1ciBub3JtYWxs
eQorICAgIE5vZGUqIGNoaWxkTm9kZSA9IGNoaWxkLT5ub2RlKCk7CisgICAgaWYgKCFjaGlsZE5v
ZGUpCisgICAgICAgIHJldHVybiBjaGlsZC0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyh4SW5DaGls
ZENvb3JkcywgeUluQ2hpbGRDb29yZHMpOworCisgICAgLy8gT3RoZXJ3aXNlLCBmaXJzdCBtYWtl
IHN1cmUgdGhhdCB0aGUgZWRpdGFiaWxpdHkgb2YgdGhlIHBhcmVudCBhbmQgY2hpbGQgYWdyZWUu
CisgICAgLy8gSWYgdGhleSBkb24ndCBhZ3JlZSwgdGhlbiB3ZSByZXR1cm4gYSB2aXNpYmxlIHBv
c2l0aW9uIGp1c3QgYmVmb3JlIG9yIGFmdGVyIHRoZSBjaGlsZAorICAgIFJlbmRlck9iamVjdCog
YW5jZXN0b3IgPSBwYXJlbnQ7CisgICAgd2hpbGUgKGFuY2VzdG9yICYmICFhbmNlc3Rvci0+bm9k
ZSgpKQorICAgICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnQoKTsKKworICAgIC8vIElm
IHdlIGNhbid0IGZpbmQgYW4gYW5jZXN0b3IgdG8gY2hlY2sgZWRpdGFiaWxpdHkgb24sIG9yIGVk
aXRhYmlsaXR5IGlzIHVuY2hhbmdlZCwgd2UgcmVjdXIgbGlrZSBub3JtYWwKKyAgICBpZiAoIWFu
Y2VzdG9yIHx8IGFuY2VzdG9yLT5ub2RlKCktPmlzQ29udGVudEVkaXRhYmxlKCkgPT0gY2hpbGRO
b2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAgICAgICByZXR1cm4gY2hpbGQtPnBvc2l0aW9u
Rm9yQ29vcmRpbmF0ZXMoeEluQ2hpbGRDb29yZHMsIHlJbkNoaWxkQ29vcmRzKTsKKworICAgIC8v
IE90aGVyd2lzZSByZXR1cm4gYmVmb3JlIG9yIGFmdGVyIHRoZSBjaGlsZCwgZGVwZW5kaW5nIG9u
IGlmIHRoZSBjbGljayB3YXMgbGVmdCBvciByaWdodCBvZiB0aGUgY2hpbGQKKyAgICBpbnQgY2hp
bGRNaWRYID0gY2hpbGQtPndpZHRoKCkgLyAyOworICAgIGlmICh4SW5DaGlsZENvb3JkcyA8IGNo
aWxkTWlkWCkKKyAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihhbmNlc3Rvci0+bm9kZSgp
LCBjaGlsZE5vZGUtPm5vZGVJbmRleCgpLCBET1dOU1RSRUFNKTsKKyAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKGFuY2VzdG9yLT5ub2RlKCksIGNoaWxkTm9kZS0+bm9kZUluZGV4KCkgKyAxLCBV
UFNUUkVBTSk7Cit9CisKK3N0YXRpYyBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludFdp
dGhJbmxpbmVDaGlsZHJlbihSZW5kZXJCbG9jayogYmxvY2ssIGNvbnN0IEludFBvaW50JiBwb2lu
dEluQ29udGVudHMpCit7CisgICAgQVNTRVJUKGJsb2NrLT5jaGlsZHJlbklubGluZSgpKTsKKwor
ICAgIGlmICghYmxvY2stPmZpcnN0Um9vdEJveCgpKQorICAgICAgICByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uKGJsb2NrLT5ub2RlKCksIDAsIERPV05TVFJFQU0pOworCisgICAgSW5saW5lQm94KiBj
bG9zZXN0Qm94ID0gMDsKKyAgICAvLyBsb29rIGZvciB0aGUgY2xvc2VzdCBsaW5lIGJveCBpbiB0
aGUgcm9vdCBib3ggd2hpY2ggaXMgYXQgdGhlIHBhc3NlZC1pbiB5IGNvb3JkaW5hdGUKKyAgICBm
b3IgKFJvb3RJbmxpbmVCb3gqIHJvb3QgPSBibG9jay0+Zmlyc3RSb290Qm94KCk7IHJvb3Q7IHJv
b3QgPSByb290LT5uZXh0Um9vdEJveCgpKSB7CisgICAgICAgIGludCBib3R0b207CisgICAgICAg
IC8vIHNldCB0aGUgYm90dG9tIGJhc2VkIG9uIHdoZXRoZXIgdGhlcmUgaXMgYSBuZXh0IHJvb3Qg
Ym94CisgICAgICAgIGlmIChyb290LT5uZXh0Um9vdEJveCgpKQorICAgICAgICAgICAgLy8gRklY
TUU6IG1ha2UgdGhlIGJyZWFrIHBvaW50IGhhbGZ3YXkgYmV0d2VlbiB0aGUgYm90dG9tIG9mIHRo
ZSBwcmV2aW91cyByb290IGJveCBhbmQgdGhlIHRvcCBvZiB0aGUgbmV4dCByb290IGJveAorICAg
ICAgICAgICAgYm90dG9tID0gcm9vdC0+bmV4dFJvb3RCb3goKS0+dG9wT3ZlcmZsb3coKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgYm90dG9tID0gcm9vdC0+Ym90dG9tT3ZlcmZsb3coKSAr
IHZlcnRpY2FsTGluZUNsaWNrRnVkZ2VGYWN0b3I7CisgICAgICAgIC8vIGNoZWNrIGlmIHRoaXMg
cm9vdCBsaW5lIGJveCBpcyBsb2NhdGVkIGF0IHRoaXMgeSBjb29yZGluYXRlCisgICAgICAgIGlm
IChwb2ludEluQ29udGVudHMueSgpIDwgYm90dG9tICYmIHJvb3QtPmZpcnN0Q2hpbGQoKSkgewor
ICAgICAgICAgICAgY2xvc2VzdEJveCA9IHJvb3QtPmNsb3Nlc3RMZWFmQ2hpbGRGb3JYUG9zKHBv
aW50SW5Db250ZW50cy54KCkpOworICAgICAgICAgICAgaWYgKGNsb3Nlc3RCb3gpCisgICAgICAg
ICAgICAgICAgLy8gcGFzcyB0aGUgYm94IGEgeSBwb3NpdGlvbiB0aGF0IGlzIGluc2lkZSBpdAor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgLy8geSBjb29y
ZGluYXRlIGlzIGJlbG93IGxhc3Qgcm9vdCBsaW5lIGJveCwgcHJldGVuZCB3ZSBoaXQgaXQKKyAg
ICBpZiAoIWNsb3Nlc3RCb3gpCisgICAgICAgIGNsb3Nlc3RCb3ggPSBibG9jay0+bGFzdFJvb3RC
b3goKS0+Y2xvc2VzdExlYWZDaGlsZEZvclhQb3MocG9pbnRJbkNvbnRlbnRzLngoKSk7CisKKyAg
ICBpZiAoY2xvc2VzdEJveCkgeworICAgICAgICAvLyBwYXNzIHRoZSBib3ggYSB5IHBvc2l0aW9u
IHRoYXQgaXMgaW5zaWRlIGl0CisgICAgICAgIHJldHVybiBjbG9zZXN0Qm94LT5yZW5kZXJlcigp
LT5wb3NpdGlvbkZvckNvb3JkaW5hdGVzKHBvaW50SW5Db250ZW50cy54KCksIGNsb3Nlc3RCb3gt
Pm1feSk7CisgICAgfQorCisgICAgLy8gQ2FuJ3QgcmVhY2ggdGhpcy4gIFdlIGhhdmUgYSByb290
IGxpbmUgYm94LCBidXQgaXQgaGFzIG5vIGtpZHMuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihibG9jay0+bm9kZSgpLCAwLCBET1dOU1RSRUFN
KTsKK30KKwogVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvckNvb3JkaW5h
dGVzKGludCB4LCBpbnQgeSkKIHsKICAgICBpZiAoaXNUYWJsZSgpKQogICAgICAgICByZXR1cm4g
UmVuZGVyQm94Ojpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKHgsIHkpOyAKIAotICAgIGludCB0b3Ag
PSBib3JkZXJUb3AoKTsKLSAgICBpbnQgYm90dG9tID0gdG9wICsgcGFkZGluZ1RvcCgpICsgY29u
dGVudEhlaWdodCgpICsgcGFkZGluZ0JvdHRvbSgpOwotCi0gICAgaW50IGxlZnQgPSBib3JkZXJM
ZWZ0KCk7Ci0gICAgaW50IHJpZ2h0ID0gbGVmdCArIHBhZGRpbmdMZWZ0KCkgKyBjb250ZW50V2lk
dGgoKSArIHBhZGRpbmdSaWdodCgpOwotCi0gICAgTm9kZSogbiA9IG5vZGUoKTsKLSAgICAKICAg
ICBpbnQgY29udGVudHNYID0geDsKICAgICBpbnQgY29udGVudHNZID0geTsKICAgICBvZmZzZXRG
b3JDb250ZW50cyhjb250ZW50c1gsIGNvbnRlbnRzWSk7CisgICAgSW50UG9pbnQgcG9pbnRJbkNv
bnRlbnRzKGNvbnRlbnRzWCwgY29udGVudHNZKTsKIAogICAgIGlmIChpc1JlcGxhY2VkKCkpIHsK
ICAgICAgICAgaWYgKHkgPCAwIHx8IHkgPCBoZWlnaHQoKSAmJiB4IDwgMCkKLSAgICAgICAgICAg
IHJldHVybiBWaXNpYmxlUG9zaXRpb24obiwgY2FyZXRNaW5PZmZzZXQoKSwgRE9XTlNUUkVBTSk7
CisgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG5vZGUoKSwgY2FyZXRNaW5PZmZz
ZXQoKSwgRE9XTlNUUkVBTSk7CiAgICAgICAgIGlmICh5ID49IGhlaWdodCgpIHx8IHkgPj0gMCAm
JiB4ID49IHdpZHRoKCkpCi0gICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG4sIGNh
cmV0TWF4T2Zmc2V0KCksIERPV05TVFJFQU0pOworICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQ
b3NpdGlvbihub2RlKCksIGNhcmV0TWF4T2Zmc2V0KCksIERPV05TVFJFQU0pOwogICAgIH0gCiAK
LSAgICAvLyBJZiB3ZSBzdGFydCBpbnNpZGUgdGhlIHNoYWRvdyB0cmVlLCB3ZSB3aWxsIHN0YXkg
aW5zaWRlIChldmVuIGlmIHRoZSBwb2ludCBpcyBhYm92ZSBvciBiZWxvdykuCi0gICAgaWYgKCEo
biAmJiBuLT5pc1NoYWRvd05vZGUoKSkgJiYgIWNoaWxkcmVuSW5saW5lKCkpIHsKLSAgICAgICAg
Ly8gRG9uJ3QgcmV0dXJuIHBvc2l0aW9ucyBpbnNpZGUgZWRpdGFibGUgcm9vdHMgZm9yIGNvb3Jk
aW5hdGVzIG91dHNpZGUgdGhvc2Ugcm9vdHMsIGV4Y2VwdCBmb3IgY29vcmRpbmF0ZXMgb3V0c2lk
ZQotICAgICAgICAvLyBhIGRvY3VtZW50IHRoYXQgaXMgZW50aXJlbHkgZWRpdGFibGUuCi0gICAg
ICAgIGJvb2wgaXNFZGl0YWJsZVJvb3QgPSBuICYmIG4tPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSA9
PSBuICYmICFuLT5oYXNUYWdOYW1lKGJvZHlUYWcpICYmICFuLT5oYXNUYWdOYW1lKGh0bWxUYWcp
OwotCi0gICAgICAgIGlmICh5IDwgdG9wIHx8IChpc0VkaXRhYmxlUm9vdCAmJiAoeSA8IGJvdHRv
bSAmJiB4IDwgbGVmdCkpKSB7Ci0gICAgICAgICAgICBpZiAoIWlzRWRpdGFibGVSb290KQotICAg
ICAgICAgICAgICAgIGlmIChSZW5kZXJCb3gqIGMgPSBmaXJzdENoaWxkQm94KCkpIHsgLy8gRklY
TUU6IFRoaXMgY29kZSBkb2Vzbid0IG1ha2UgYW55IHNlbnNlLiAgVGhpcyBjaGlsZCBjb3VsZCBi
ZSBhbiBpbmxpbmUgb3IgYSBwb3NpdGlvbmVkIGVsZW1lbnQgb3IgYSBmbG9hdCwgZXRjLgotICAg
ICAgICAgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gcCA9IGMtPnBvc2l0aW9uRm9yQ29vcmRp
bmF0ZXMoY29udGVudHNYIC0gYy0+eCgpLCBjb250ZW50c1kgLSBjLT55KCkpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAocC5pc05vdE51bGwoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChuKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKE5vZGUqIHNwID0gbi0+c2hhZG93UGFyZW50Tm9kZSgpKQotICAgICAgICAg
ICAgICAgICAgICBuID0gc3A7Ci0gICAgICAgICAgICAgICAgaWYgKE5vZGUqIHAgPSBuLT5wYXJl
bnQoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihwLCBuLT5u
b2RlSW5kZXgoKSwgRE9XTlNUUkVBTSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKG4sIDAsIERPV05TVFJFQU0pOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKHkgPj0gYm90dG9tIHx8IChpc0VkaXRhYmxlUm9vdCAmJiAoeSA+PSB0b3AgJiYgeCA+
PSByaWdodCkpKSB7Ci0gICAgICAgICAgICBpZiAoIWlzRWRpdGFibGVSb290KQotICAgICAgICAg
ICAgICAgIGlmIChSZW5kZXJCb3gqIGMgPSBsYXN0Q2hpbGRCb3goKSkgeyAvLyBGSVhNRTogVGhp
cyBjb2RlIGRvZXNuJ3QgbWFrZSBhbnkgc2Vuc2UuICBUaGlzIGNoaWxkIGNvdWxkIGJlIGFuIGlu
bGluZSBvciBhIHBvc2l0aW9uZWQgZWxlbWVudCBvciBhIGZsb2F0LCBldGMuCi0gICAgICAgICAg
ICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwID0gYy0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyhj
b250ZW50c1ggLSBjLT54KCksIGNvbnRlbnRzWSAtIGMtPnkoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChwLmlzTm90TnVsbCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHA7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG4pIHsKLSAgICAgICAgICAgICAg
ICBpZiAoTm9kZSogc3AgPSBuLT5zaGFkb3dQYXJlbnROb2RlKCkpCi0gICAgICAgICAgICAgICAg
ICAgIG4gPSBzcDsKLSAgICAgICAgICAgICAgICBpZiAoTm9kZSogcCA9IG4tPnBhcmVudCgpKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKHAsIG4tPm5vZGVJbmRl
eCgpICsgMSwgRE9XTlNUUkVBTSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4g
VmlzaWJsZVBvc2l0aW9uKG4sIDAsIERPV05TVFJFQU0pOwotICAgICAgICB9Ci0gICAgfQotCiAg
ICAgaWYgKGNoaWxkcmVuSW5saW5lKCkpIHsKLSAgICAgICAgaWYgKCFmaXJzdFJvb3RCb3goKSkK
LSAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obiwgMCwgRE9XTlNUUkVBTSk7Ci0K
LSAgICAgICAgaWYgKGNvbnRlbnRzWSA8IGZpcnN0Um9vdEJveCgpLT50b3BPdmVyZmxvdygpIC0g
dmVydGljYWxMaW5lQ2xpY2tGdWRnZUZhY3RvcikKLSAgICAgICAgICAgIC8vIHkgY29vcmRpbmF0
ZSBpcyBhYm92ZSBmaXJzdCByb290IGxpbmUgYm94Ci0gICAgICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKHBvc2l0aW9uRm9yQm94KGZpcnN0Um9vdEJveCgpLT5maXJzdExlYWZDaGlsZCgp
LCB0cnVlKSwgRE9XTlNUUkVBTSk7Ci0gICAgICAgIAotICAgICAgICAvLyBsb29rIGZvciB0aGUg
Y2xvc2VzdCBsaW5lIGJveCBpbiB0aGUgcm9vdCBib3ggd2hpY2ggaXMgYXQgdGhlIHBhc3NlZC1p
biB5IGNvb3JkaW5hdGUKLSAgICAgICAgZm9yIChSb290SW5saW5lQm94KiByb290ID0gZmlyc3RS
b290Qm94KCk7IHJvb3Q7IHJvb3QgPSByb290LT5uZXh0Um9vdEJveCgpKSB7Ci0gICAgICAgICAg
ICAvLyBzZXQgdGhlIGJvdHRvbSBiYXNlZCBvbiB3aGV0aGVyIHRoZXJlIGlzIGEgbmV4dCByb290
IGJveAotICAgICAgICAgICAgaWYgKHJvb3QtPm5leHRSb290Qm94KCkpCi0gICAgICAgICAgICAg
ICAgLy8gRklYTUU6IG1ha2UgdGhlIGJyZWFrIHBvaW50IGhhbGZ3YXkgYmV0d2VlbiB0aGUgYm90
dG9tIG9mIHRoZSBwcmV2aW91cyByb290IGJveCBhbmQgdGhlIHRvcCBvZiB0aGUgbmV4dCByb290
IGJveAotICAgICAgICAgICAgICAgIGJvdHRvbSA9IHJvb3QtPm5leHRSb290Qm94KCktPnRvcE92
ZXJmbG93KCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYm90dG9tID0gcm9v
dC0+Ym90dG9tT3ZlcmZsb3coKSArIHZlcnRpY2FsTGluZUNsaWNrRnVkZ2VGYWN0b3I7Ci0gICAg
ICAgICAgICAvLyBjaGVjayBpZiB0aGlzIHJvb3QgbGluZSBib3ggaXMgbG9jYXRlZCBhdCB0aGlz
IHkgY29vcmRpbmF0ZQotICAgICAgICAgICAgaWYgKGNvbnRlbnRzWSA8IGJvdHRvbSAmJiByb290
LT5maXJzdENoaWxkKCkpIHsKLSAgICAgICAgICAgICAgICBJbmxpbmVCb3gqIGNsb3Nlc3RCb3gg
PSByb290LT5jbG9zZXN0TGVhZkNoaWxkRm9yWFBvcyh4KTsKLSAgICAgICAgICAgICAgICBpZiAo
Y2xvc2VzdEJveCkKLSAgICAgICAgICAgICAgICAgICAgLy8gcGFzcyB0aGUgYm94IGEgeSBwb3Np
dGlvbiB0aGF0IGlzIGluc2lkZSBpdAotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2Vz
dEJveC0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyhjb250ZW50c1gsIGNsb3Nl
c3RCb3gtPm1feSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobGFz
dFJvb3RCb3goKSkKLSAgICAgICAgICAgIC8vIHkgY29vcmRpbmF0ZSBpcyBiZWxvdyBsYXN0IHJv
b3QgbGluZSBib3gKLSAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24ocG9zaXRpb25G
b3JCb3gobGFzdFJvb3RCb3goKS0+bGFzdExlYWZDaGlsZCgpLCBmYWxzZSksIERPV05TVFJFQU0p
OwotCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obiwgMCwgRE9XTlNUUkVBTSk7Cisg
ICAgICAgIHJldHVybiBwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKHRoaXMsIHBv
aW50SW5Db250ZW50cyk7CiAgICAgfQotICAgIAotICAgIC8vIFNlZSBpZiBhbnkgY2hpbGQgYmxv
Y2tzIGV4aXN0IGF0IHRoaXMgeSBjb29yZGluYXRlLgorCisgICAgLy8gQ2hlY2sgdG9wL2JvdHRv
bSBjaGlsZC1tYXJnaW4vcGFyZW50LXBhZGRpbmcgZm9yIGNsaWNrcyBhbmQgcGxhY2UgdGhlbSBp
biB0aGUgZmlyc3QvbGFzdCBjaGlsZAorICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgbm90IGNvcnJl
Y3RseSBoYW5kbGUgZmlyc3Qgb3IgbGFzdCBjaGlsZHJlbiBiZWluZyBwb3NpdGlvbmVkIG9yIG5v
bi12aXNpYmxlCiAgICAgaWYgKGZpcnN0Q2hpbGRCb3goKSAmJiBjb250ZW50c1kgPCBmaXJzdENo
aWxkQm94KCktPnkoKSkKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihuLCAwLCBET1dO
U1RSRUFNKTsKLSAgICBmb3IgKFJlbmRlckJveCogcmVuZGVyZXIgPSBmaXJzdENoaWxkQm94KCk7
IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5uZXh0U2libGluZ0JveCgpKSB7Ci0gICAg
ICAgIGlmIChyZW5kZXJlci0+aGVpZ2h0KCkgPT0gMCB8fCByZW5kZXJlci0+c3R5bGUoKS0+dmlz
aWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcmVuZGVyZXItPmlzRmxvYXRpbmdPclBvc2l0aW9uZWQo
KSkKKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uRm9yUG9pbnRSZXNwZWN0aW5nRWRpdGluZ0JvdW5k
YXJpZXModGhpcywgZmlyc3RDaGlsZEJveCgpLCBwb2ludEluQ29udGVudHMpOworICAgIGlmIChs
YXN0Q2hpbGRCb3goKSAmJiBjb250ZW50c1kgPiBsYXN0Q2hpbGRCb3goKS0+eSgpKQorICAgICAg
ICByZXR1cm4gcG9zaXRpb25Gb3JQb2ludFJlc3BlY3RpbmdFZGl0aW5nQm91bmRhcmllcyh0aGlz
LCBsYXN0Q2hpbGRCb3goKSwgcG9pbnRJbkNvbnRlbnRzKTsKKworICAgIGZvciAoUmVuZGVyQm94
KiBjaGlsZEJveCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGRCb3g7IGNoaWxkQm94ID0gY2hpbGRC
b3gtPm5leHRTaWJsaW5nQm94KCkpIHsKKyAgICAgICAgaWYgKGNoaWxkQm94LT5oZWlnaHQoKSA9
PSAwIHx8IGNoaWxkQm94LT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBjaGls
ZEJveC0+aXNGbG9hdGluZ09yUG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIFJlbmRlckJveCogbmV4dCA9IHJlbmRlcmVyLT5uZXh0U2libGluZ0JveCgpOwotICAg
ICAgICB3aGlsZSAobmV4dCAmJiBuZXh0LT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkpCi0gICAg
ICAgICAgICBuZXh0ID0gbmV4dC0+bmV4dFNpYmxpbmdCb3goKTsKLSAgICAgICAgaWYgKG5leHQp
IAotICAgICAgICAgICAgYm90dG9tID0gbmV4dC0+eSgpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBib3R0b20gPSB0b3AgKyBzY3JvbGxIZWlnaHQoKTsKLSAgICAgICAgaWYgKGNvbnRlbnRz
WSA+PSByZW5kZXJlci0+eSgpICYmIGNvbnRlbnRzWSA8IGJvdHRvbSkKLSAgICAgICAgICAgIHJl
dHVybiByZW5kZXJlci0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyhjb250ZW50c1ggLSByZW5kZXJl
ci0+eCgpLCBjb250ZW50c1kgLSByZW5kZXJlci0+eSgpKTsKKyAgICAgICAgLy8gV2UgaGl0IHRo
aXMgY2hpbGQgaWYgb3VyIGNsaWNrIHdhcyBhYm92ZSB0aGUgYm90dG9tIG9mIGl0cyBwYWRkaW5n
IGJveCAobGlrZSBJRTYvNyBhbmQgRkYzKQorICAgICAgICBpZiAoY29udGVudHNZIDwgY2hpbGRC
b3gtPnkoKSArIGNoaWxkQm94LT5oZWlnaHQoKSkKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bkZvclBvaW50UmVzcGVjdGluZ0VkaXRpbmdCb3VuZGFyaWVzKHRoaXMsIGNoaWxkQm94LCBwb2lu
dEluQ29udGVudHMpOwogICAgIH0KLSAgICAKKworICAgIC8vIFdlIG9ubHkgZ2V0IGhlcmUgaWYg
dGhlcmUgYXJlIG5vLCBvciBvbmx5IGZsb2F0ZWQvcG9zaXRpb25lZCwgb3Igb25seQorICAgIC8v
IG5vbi12aXNpYmxlIGJsb2NrIGNoaWxkcmVuIGJlbG93IHRoZSBjbGljay4KICAgICByZXR1cm4g
UmVuZGVyQm94Ojpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKHgsIHkpOwogfQogCkBAIC00NDg1LDcg
KzQ0ODEsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlcigpCiB7CiAgICAg
aWYgKCFkb2N1bWVudCgpLT51c2VzRmlyc3RMZXR0ZXJSdWxlcygpKQogICAgICAgICByZXR1cm47
Ci0gICAgLy8gRG9uJ3QgcmVjdXJzZQorICAgIC8vIERvbid0IHJlY3VyCiAgICAgaWYgKHN0eWxl
KCktPnN0eWxlVHlwZSgpID09IEZJUlNUX0xFVFRFUikKICAgICAgICAgcmV0dXJuOwogCi0tIAox
LjYuMQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>