<?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>25057</bug_id>
          
          <creation_ts>2009-04-06 02:22:54 -0700</creation_ts>
          <short_desc>remove rangeCompliantEquivalent and replace it with Position methods</short_desc>
          <delta_ts>2011-01-19 01:32:36 -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>All</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>leviw</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>116600</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-04-06 02:22:54 -0700</bug_when>
    <thetext>remove rangeCompliantEquivalent and replace it with Position methods

As part of fixing bug 24763 Position now up-front knows if it&apos;s a neighbor anchored or parent-anchored and we don&apos;t need (or want) rangeCompliantEquivalent to do a &quot;just in case&quot; conversion any more.  We can either use a Position::toParentAnchoredEquivalent function or just computeOffsetInContainerNode() and containerNode() directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116603</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-04-06 02:26:23 -0700</bug_when>
    <thetext>*** Bug 24045 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318524</commentid>
    <comment_count>2</comment_count>
      <attachid>75855</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2010-12-07 18:05:56 -0800</bug_when>
    <thetext>Created attachment 75855
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318526</commentid>
    <comment_count>3</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2010-12-07 18:08:39 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=75855) [details]
&gt; Patch

Proposed patch that simplifies the logic by which parent anchored editing positions (DOM/range compliant) are created and changes to function to be a method of Position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318644</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 22:00:06 -0800</bug_when>
    <thetext>Attachment 75855 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/update-webkit&apos;]&quot; exit_code: 2
Updating OpenSource
Incomplete data: Delta source ended unexpectedly at /usr/lib/git-core/git-svn line 5061

Died at WebKitTools/Scripts/update-webkit line 132.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318656</commentid>
    <comment_count>5</comment_count>
      <attachid>75855</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-07 22:26:40 -0800</bug_when>
    <thetext>Comment on attachment 75855
Patch

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

Thank you for taking this bug.  The patch looks good to me assuming that we still pass all the layout tests with your patch and the ordering in exp.in file is fixed.

&gt; WebCore/WebCore.exp.in:519
&gt; -__ZN7WebCore24rangeCompliantEquivalentERKNS_8PositionE
&gt; +__ZNK7WebCore8Position24parentAnchoredEquivalentEv

I don&apos;t think this is the right place to put this.  Please lexicologically sort it.

&gt; WebCore/dom/Position.cpp:167
&gt; +    if (!m_anchorNode)
&gt; +        return Position();
&gt; +    
&gt; +    // Handle quirks with tables and legacy positions offsets
&gt; +    if (m_offset &lt;= 0) {
&gt; +        if (m_anchorNode-&gt;parentNode() &amp;&amp; (editingIgnoresContent(m_anchorNode.get()) || isTableElement(m_anchorNode.get())))
&gt; +            return positionInParentBeforeNode(m_anchorNode.get());
&gt; +        return Position(m_anchorNode, 0);
&gt; +    }
&gt; +    if (!m_anchorNode-&gt;offsetInCharacters() &amp;&amp; static_cast&lt;unsigned&gt;(m_offset) == m_anchorNode-&gt;childNodeCount()
&gt; +        &amp;&amp; (editingIgnoresContent(m_anchorNode.get()) || isTableElement(m_anchorNode.get()))) {
&gt; +        return positionInParentAfterNode(m_anchorNode.get());
&gt; +    }
&gt; +
&gt; +    return Position(containerNode(), computeOffsetInContainerNode());

This looks much simpler than rangeCompliantEquivalent.  Do we still pass all the layout tests with this new implementation?

&gt; WebCore/dom/Position.h:83
&gt; +    Position parentAnchoredEquivalent() const; // Convenience method for

Nit: Convenience method for what?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318847</commentid>
    <comment_count>6</comment_count>
      <attachid>75917</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2010-12-08 10:01:31 -0800</bug_when>
    <thetext>Created attachment 75917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318851</commentid>
    <comment_count>7</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2010-12-08 10:04:06 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=75917) [details]
&gt; Patch

Thanks Ryosuke!

I fixed the ordering problem in WebCore.exp.in and the comment in Position.h, now:

Position parentAnchoredEquivalent() const; // Convenience method for DOM positions that also fixes up some positions for editing

I&apos;ve validated we still pass all the layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318859</commentid>
    <comment_count>8</comment_count>
      <attachid>75917</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-08 10:12:30 -0800</bug_when>
    <thetext>Comment on attachment 75917
Patch

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

&gt; WebCore/dom/Position.cpp:160
&gt; +        return Position(m_anchorNode, 0);

Oops, this would create a legacy Position object.  You need to explicitly pass PositionIsOffsetInAnchor as in Position(m_anchorNode, 0, PositionIsOffsetInAnchor); to create a non-legacy Position object.

&gt; WebCore/dom/Position.cpp:167
&gt; +    return Position(containerNode(), computeOffsetInContainerNode());

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318866</commentid>
    <comment_count>9</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2010-12-08 10:28:04 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 75917 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=75917&amp;action=review
&gt; 
&gt; &gt; WebCore/dom/Position.cpp:160
&gt; &gt; +        return Position(m_anchorNode, 0);
&gt; 
&gt; Oops, this would create a legacy Position object.  You need to explicitly pass PositionIsOffsetInAnchor as in Position(m_anchorNode, 0, PositionIsOffsetInAnchor); to create a non-legacy Position object.
&gt; 
&gt; &gt; WebCore/dom/Position.cpp:167
&gt; &gt; +    return Position(containerNode(), computeOffsetInContainerNode());
&gt; 
&gt; Ditto.

You&apos;re right, missed that somehow. Trying again :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318899</commentid>
    <comment_count>10</comment_count>
      <attachid>75931</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2010-12-08 11:09:28 -0800</bug_when>
    <thetext>Created attachment 75931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318912</commentid>
    <comment_count>11</comment_count>
      <attachid>75931</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-08 11:31:25 -0800</bug_when>
    <thetext>Comment on attachment 75931
Patch

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

Sorry, I keep noticing something new.

&gt; WebCore/dom/Position.cpp:157
&gt; +    // Handle quirks with tables and legacy positions offsets
&gt; +    if (m_offset &lt;= 0) {

On my second thought, shouldn&apos;t we also check that it&apos;s a legacy position?  m_offset &lt;= 0 is also true when m_anchorType != PositionIsOffsetInAnchor, no?

&gt; WebCore/dom/Position.cpp:162
&gt; +    if (!m_anchorNode-&gt;offsetInCharacters() &amp;&amp; static_cast&lt;unsigned&gt;(m_offset) == m_anchorNode-&gt;childNodeCount()

Ditto here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326659</commentid>
    <comment_count>12</comment_count>
      <attachid>75931</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-24 10:21:07 -0800</bug_when>
    <thetext>Comment on attachment 75931
Patch

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

&gt; WebCore/dom/Position.cpp:151
&gt; +Position Position::parentAnchoredEquivalent() const

When I started with Position re-writes of yore, Darin Adler raised the concern that every time we return a Posiion object we do a ref-thrash to the underlying node, since we don&apos;t have any PassPosition concept.  Obviously PassPosition is a separate patch, but you should be aware, there may be ref-thrash when returning Position objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326702</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-24 11:46:19 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 75931 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=75931&amp;action=review
&gt; 
&gt; &gt; WebCore/dom/Position.cpp:151
&gt; &gt; +Position Position::parentAnchoredEquivalent() const
&gt; 
&gt; When I started with Position re-writes of yore, Darin Adler raised the concern that every time we return a Posiion object we do a ref-thrash to the underlying node, since we don&apos;t have any PassPosition concept.  Obviously PassPosition is a separate patch, but you should be aware, there may be ref-thrash when returning Position objects.

This patch wouldn&apos;t regress the performance though because the function we&apos;re replacing also returns Position.  Ideally, we can remove this function entirely once we cleaned up other editing code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329575</commentid>
    <comment_count>14</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-01-05 08:28:43 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 75931 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=75931&amp;action=review
&gt; 
&gt; Sorry, I keep noticing something new.
&gt; 
&gt; &gt; WebCore/dom/Position.cpp:157
&gt; &gt; +    // Handle quirks with tables and legacy positions offsets
&gt; &gt; +    if (m_offset &lt;= 0) {
&gt; 
&gt; On my second thought, shouldn&apos;t we also check that it&apos;s a legacy position?  m_offset &lt;= 0 is also true when m_anchorType != PositionIsOffsetInAnchor, no?
&gt; 
&gt; &gt; WebCore/dom/Position.cpp:162
&gt; &gt; +    if (!m_anchorNode-&gt;offsetInCharacters() &amp;&amp; static_cast&lt;unsigned&gt;(m_offset) == m_anchorNode-&gt;childNodeCount()
&gt; 
&gt; Ditto here.

We also need to go through this code path for positions before and after Tables, which aren&apos;t legacy positions. I could use the following instead:

    if (m_isLegacyEditingPosition || isTableElement(m_anchorNode.get())) {
        if (m_offset &lt;= 0) {
            if (m_anchorNode-&gt;parentNode() &amp;&amp; (editingIgnoresContent(m_anchorNode.get()) || isTableElement(m_anchorNode.get())))
                return positionInParentBeforeNode(m_anchorNode.get());
            return Position(m_anchorNode, 0);
        }
        if (!m_anchorNode-&gt;offsetInCharacters() &amp;&amp; static_cast&lt;unsigned&gt;(m_offset) == m_anchorNode-&gt;childNodeCount() &amp;&amp;
            (editingIgnoresContent(m_anchorNode.get()) || isTableElement(m_anchorNode.get()))) {
            return positionInParentAfterNode(m_anchorNode.get());
        }
    }


if (!m_anchorNode-&gt;offsetInCharacters() &amp;&amp; static_cast&lt;unsigned&gt;(m_offset) == m_anchorNode-&gt;childNodeCount()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329833</commentid>
    <comment_count>15</comment_count>
      <attachid>78056</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-01-05 15:28:39 -0800</bug_when>
    <thetext>Created attachment 78056
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329834</commentid>
    <comment_count>16</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-01-05 15:29:14 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=78056) [details]
&gt; Patch

Adding a FIXME as per a conversation with Ryosuke.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329836</commentid>
    <comment_count>17</comment_count>
      <attachid>78056</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-05 15:35:41 -0800</bug_when>
    <thetext>Comment on attachment 78056
Patch

LGTM but I&apos;d like eseidel, darin, or justining take a look at the patch before r+ing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329837</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-05 15:36:22 -0800</bug_when>
    <thetext>Oops, s/justining/justing/.  Sorry Justin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330012</commentid>
    <comment_count>19</comment_count>
      <attachid>78056</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-05 21:15:55 -0800</bug_when>
    <thetext>Comment on attachment 78056
Patch

So two things here are 1) a rename and 2) change to a member function because you like that better than a non-member function. Neither of those seems all that great to me.

But maybe the real point here is that we can do a more efficient implementation inside Position because of how Position works now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330015</commentid>
    <comment_count>20</comment_count>
      <attachid>78056</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-05 21:17:12 -0800</bug_when>
    <thetext>Comment on attachment 78056
Patch

I think it’s lame that both the old function and new function are named as if they did something mechanical but instead are full of editing magic. We should choose a name and perhaps even a location in the source code that acknowledges the editing magic. Or factor out the editing magic into a separate function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330018</commentid>
    <comment_count>21</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-05 21:30:30 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 78056 [details])
&gt; I think it’s lame that both the old function and new function are named as if they did something mechanical but instead are full of editing magic. We should choose a name and perhaps even a location in the source code that acknowledges the editing magic. Or factor out the editing magic into a separate function.

This function should be solely mechanical once we eliminated:
1. Legacy editing positions
2. [table, 0]

I&apos;m sure we have a bug for 1 but we should probably be filing a bug for 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330206</commentid>
    <comment_count>22</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-01-06 10:27:17 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 78056 [details])
&gt; So two things here are 1) a rename and 2) change to a member function because you like that better than a non-member function. Neither of those seems all that great to me.
&gt; 
&gt; But maybe the real point here is that we can do a more efficient implementation inside Position because of how Position works now?

There&apos;s also reduction and code cleanup (35 lines down to 16). Part of the purpose of this is to call out the editing magic currently happening with the intention of making it go away once we&apos;ve done away with the cases Ryosuke called out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335855</commentid>
    <comment_count>23</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-18 09:15:53 -0800</bug_when>
    <thetext>Darin, are you opposed to this change?  If not, I&apos;m inclined to give r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335863</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-18 09:25:27 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; Darin, are you opposed to this change?  If not, I&apos;m inclined to give r+.

I don’t love it, but it seems OK. Maybe I’ll appreciate this more when we take the next steps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335864</commentid>
    <comment_count>25</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-18 09:29:01 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; Darin, are you opposed to this change?  If not, I&apos;m inclined to give r+.
&gt; 
&gt; I don’t love it, but it seems OK. Maybe I’ll appreciate this more when we take the next steps.

Ok, I&apos;m aggressively removing legacy editing positions so hopefully we&apos;ll have a good news for you within the next couple of months.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335865</commentid>
    <comment_count>26</comment_count>
      <attachid>78056</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-18 09:36:43 -0800</bug_when>
    <thetext>Comment on attachment 78056
Patch

Rejecting attachment 78056 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-4&apos;, &apos;apply-...&quot; exit_code: 2

Last 500 characters of output:
 Source/WebCore/editing/htmlediting.cpp
patching file Source/WebCore/editing/htmlediting.h
patching file Source/WebCore/editing/visible_units.cpp
patching file Source/WebCore/page/DOMSelection.cpp
patching file Source/WebKit/mac/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebKit/mac/WebView/WebFrame.mm
Hunk #1 succeeded at 802 (offset 1 line).

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Ryosuke Niwa&apos;, u&apos;--for...&quot; exit_code: 1

Full output: http://queues.webkit.org/results/7626149</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335910</commentid>
    <comment_count>27</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-01-18 10:23:32 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 78056 [details])
&gt; Rejecting attachment 78056 [details] from commit-queue.

Looks like this needs to be updated for ToT. I&apos;ll get on that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335949</commentid>
    <comment_count>28</comment_count>
      <attachid>79298</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-01-18 11:17:44 -0800</bug_when>
    <thetext>Created attachment 79298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336068</commentid>
    <comment_count>29</comment_count>
      <attachid>79298</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-18 13:48:26 -0800</bug_when>
    <thetext>Comment on attachment 79298
Patch

Rejecting attachment 79298 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-sf-cq&apos;, &apos;ap...&quot; exit_code: 2

Last 500 characters of output:
 Source/WebCore/editing/htmlediting.cpp.rej
patching file Source/WebCore/editing/htmlediting.h
patching file Source/WebCore/editing/visible_units.cpp
Hunk #2 succeeded at 138 (offset -4 lines).
patching file Source/WebCore/page/DOMSelection.cpp
patching file Source/WebKit/mac/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebKit/mac/WebView/WebFrame.mm

Failed to run &quot;[u&apos;/Projects/CommitQueue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Ryosuke Niwa&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/7523203</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336080</commentid>
    <comment_count>30</comment_count>
      <attachid>79327</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-01-18 14:09:30 -0800</bug_when>
    <thetext>Created attachment 79327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336082</commentid>
    <comment_count>31</comment_count>
      <attachid>79327</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-01-18 14:11:16 -0800</bug_when>
    <thetext>Comment on attachment 79327
Patch

Updating again to fix merge issues with ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336239</commentid>
    <comment_count>32</comment_count>
      <attachid>79327</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-18 17:24:13 -0800</bug_when>
    <thetext>Comment on attachment 79327
Patch

Rejecting attachment 79327 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-sf-cq&apos;, &apos;bu...&quot; exit_code: 2

Last 500 characters of output:
.........................................................
fast/box-shadow ......
fast/box-sizing ....
fast/canvas ..........................................................................................................................................
fast/canvas/webgl ............
fast/canvas/webgl/constants.html -&gt; crashed

Exiting early after 1 failures. 6247 tests run.
250.27s total testing time

6246 test cases (99%) succeeded
1 test case (&lt;1%) crashed
3 test cases (&lt;1%) had stderr output

Full output: http://queues.webkit.org/results/7550177</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336241</commentid>
    <comment_count>33</comment_count>
      <attachid>79365</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-18 17:27:09 -0800</bug_when>
    <thetext>Created attachment 79365
Here is the crash log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336393</commentid>
    <comment_count>34</comment_count>
      <attachid>79327</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-19 01:32:29 -0800</bug_when>
    <thetext>Comment on attachment 79327
Patch

Clearing flags on attachment: 79327

Committed r76107: &lt;http://trac.webkit.org/changeset/76107&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336394</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-19 01:32:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75855</attachid>
            <date>2010-12-07 18:05:56 -0800</date>
            <delta_ts>2010-12-08 10:01:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-25057-20101207180551.patch</filename>
            <type>text/plain</type>
            <size>27771</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzQ1OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTkgQEAKKzIwMTAtMTItMDcgIExldmkgV2VpbnRyYXViICA8bGV2aXdAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZXBsYWNlZCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQgd2l0aCBQb3NpdGlvbjo6cGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50CisgICAgICAgIGFuZCBzaW1wbGlmaWVkIHRoZSBsb2dpYyBhIGJpdC4g
VW5mb3J0dW5hdGVseSwgVGFibGVzIGFuZCBzb21lIGxlZ2FjeQorICAgICAgICBlZGl0aW5nIHBv
c2l0aW9ucyBzdGlsbCBuZWVkIHRvIGJlIGhhbmRsZWQgc3BlY2lmaWNhbGx5LgorCisgICAgICAg
IHJlbW92ZSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQgYW5kIHJlcGxhY2UgaXQgd2l0aCBQb3Np
dGlvbiBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNTA1NworCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcyB0aGlzIGlzIGEgcmVmYWN0b3Ig
dGhhdCBkb2Vzbid0IGNoYW5nZSBiZWhhdmlvci4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6Y2FyZXRSYW5nZUZyb21Qb2ludCk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQpOgorICAg
ICAgICAqIGRvbS9Qb3NpdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tT
dHlsZSk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5zZXJ0Tm9kZUF0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyk6CisgICAg
ICAgICogZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmluaXRpYWxpemVQb3NpdGlvbkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VQYXJhZ3JhcGhzKToK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OnRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjph
ZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGluZUJy
ZWFrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaW5lQnJlYWtDb21tYW5k
OjpzaG91bGRVc2VCcmVha0VsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRQYXJhZ3Jh
cGhTZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVN0eWxlU3BhbnNC
ZWZvcmVJbnNlcnRpb24pOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om1ha2VSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRTdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRFbmQpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJs
ZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpmaXJz
dFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OnRvTm9ybWFsaXpl
ZFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VTZWFyY2hSYW5nZSk6CisgICAgICAgICog
ZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbmRleEZvclZpc2li
bGVQb3NpdGlvbik6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5oOgorICAgICAgICAq
IGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0Jv
dW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRCb3VuZGFyeSk6CisgICAgICAgICogcGFn
ZS9ET01TZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YW5jaG9yUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Zm9jdXNQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpiYXNl
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXh0ZW50UG9zaXRpb24pOgorCiAyMDEwLTEy
LTA3ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNzI4MzkpCisrKyBXZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC01MTYsNyArNTE2LDcgQEAgX19aTjdX
ZWJDb3JlMjRjcmVhdGVGcmFnbWVudEZyb21NYXJrdXBFUAogX19aTjdXZWJDb3JlMjRkZWNvZGVV
UkxFc2NhcGVTZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbkVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTI0bm90aWZ5SGlz
dG9yeUl0ZW1DaGFuZ2VkRQotX19aTjdXZWJDb3JlMjRyYW5nZUNvbXBsaWFudEVxdWl2YWxlbnRF
UktOU184UG9zaXRpb25FCitfX1pOSzdXZWJDb3JlOFBvc2l0aW9uMjRwYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnRFdgogX19aTjdXZWJDb3JlMjVIaXN0b3J5UHJvcGVydHlMaXN0V3JpdGVyMTFyZWxl
YXNlRGF0YUV2CiBfX1pON1dlYkNvcmUyNUhpc3RvcnlQcm9wZXJ0eUxpc3RXcml0ZXIxMndyaXRl
T2JqZWN0c0VSTlNfMzBCaW5hcnlQcm9wZXJ0eUxpc3RPYmplY3RTdHJlYW1FCiBfX1pON1dlYkNv
cmUyNUhpc3RvcnlQcm9wZXJ0eUxpc3RXcml0ZXIxNndyaXRlSGlzdG9yeUl0ZW1FUk5TXzMwQmlu
YXJ5UHJvcGVydHlMaXN0T2JqZWN0U3RyZWFtRVBOU18xMUhpc3RvcnlJdGVtRQpJbmRleDogV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkocmV2aXNpb24gNzI4MzkpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyNzgsNyArMTI3OCw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IERvY3VtZW50
OjpjYXJldFJhbmdlRnIKICAgICBpZiAodmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIFBvc2l0aW9uIHJhbmdlQ29tcGxpYW50UG9zaXRpb24gPSByYW5n
ZUNvbXBsaWFudEVxdWl2YWxlbnQodmlzaWJsZVBvc2l0aW9uKTsKKyAgICBQb3NpdGlvbiByYW5n
ZUNvbXBsaWFudFBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFy
ZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiAgICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUodGhpcywg
cmFuZ2VDb21wbGlhbnRQb3NpdGlvbiwgcmFuZ2VDb21wbGlhbnRQb3NpdGlvbik7CiB9CiAKSW5k
ZXg6IFdlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Q
b3NpdGlvbi5jcHAJKHJldmlzaW9uIDcyODM5KQorKysgV2ViQ29yZS9kb20vUG9zaXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNiArMTQ2LDI3IEBAIGludCBQb3NpdGlvbjo6Y29tcHV0
ZU9mZnNldEluQ29udGFpbmVyTm8KICAgICByZXR1cm4gMDsKIH0KIAorLy8gTmVpZ2hib3ItYW5j
aG9yZWQgcG9zaXRpb25zIGFyZSBpbnZhbGlkIERPTSBwb3NpdGlvbnMsIHNvIHRoZXkgbmVlZCB0
byBiZQorLy8gZml4ZWQgdXAgYmVmb3JlIGhhbmRpbmcgdGhlbSBvZmYgdG8gdGhlIFJhbmdlIG9i
amVjdC4KK1Bvc2l0aW9uIFBvc2l0aW9uOjpwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSBjb25z
dAoreworICAgIGlmICghbV9hbmNob3JOb2RlKQorICAgICAgICByZXR1cm4gUG9zaXRpb24oKTsK
KyAgICAKKyAgICAvLyBIYW5kbGUgcXVpcmtzIHdpdGggdGFibGVzIGFuZCBsZWdhY3kgcG9zaXRp
b25zIG9mZnNldHMKKyAgICBpZiAobV9vZmZzZXQgPD0gMCkgeworICAgICAgICBpZiAobV9hbmNo
b3JOb2RlLT5wYXJlbnROb2RlKCkgJiYgKGVkaXRpbmdJZ25vcmVzQ29udGVudChtX2FuY2hvck5v
ZGUuZ2V0KCkpIHx8IGlzVGFibGVFbGVtZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkpKQorICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG1fYW5jaG9yTm9kZS5nZXQo
KSk7CisgICAgICAgIHJldHVybiBQb3NpdGlvbihtX2FuY2hvck5vZGUsIDApOworICAgIH0KKyAg
ICBpZiAoIW1fYW5jaG9yTm9kZS0+b2Zmc2V0SW5DaGFyYWN0ZXJzKCkgJiYgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fb2Zmc2V0KSA9PSBtX2FuY2hvck5vZGUtPmNoaWxkTm9kZUNvdW50KCkKKyAg
ICAgICAgJiYgKGVkaXRpbmdJZ25vcmVzQ29udGVudChtX2FuY2hvck5vZGUuZ2V0KCkpIHx8IGlz
VGFibGVFbGVtZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkpKSB7CisgICAgICAgIHJldHVybiBwb3Np
dGlvbkluUGFyZW50QWZ0ZXJOb2RlKG1fYW5jaG9yTm9kZS5nZXQoKSk7CisgICAgfQorCisgICAg
cmV0dXJuIFBvc2l0aW9uKGNvbnRhaW5lck5vZGUoKSwgY29tcHV0ZU9mZnNldEluQ29udGFpbmVy
Tm9kZSgpKTsKK30KKwogTm9kZSogUG9zaXRpb246OmNvbXB1dGVOb2RlQmVmb3JlUG9zaXRpb24o
KSBjb25zdAogewogICAgIGlmICghbV9hbmNob3JOb2RlKQpJbmRleDogV2ViQ29yZS9kb20vUG9z
aXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCShyZXZpc2lvbiA3
MjgzOSkKKysrIFdlYkNvcmUvZG9tL1Bvc2l0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYg
KzgwLDcgQEAgcHVibGljOgogICAgIC8vIHdpbGwgcmV0dXJuIGltZy0+cGFyZW50Tm9kZSgpIGFu
ZCBpbWctPm5vZGVJbmRleCgpIGZyb20gdGhlc2UgZnVuY3Rpb25zLgogICAgIE5vZGUqIGNvbnRh
aW5lck5vZGUoKSBjb25zdDsgLy8gTlVMTCBmb3IgYSBiZWZvcmUvYWZ0ZXIgcG9zaXRpb24gYW5j
aG9yZWQgdG8gYSBub2RlIHdpdGggbm8gcGFyZW50CiAgICAgaW50IGNvbXB1dGVPZmZzZXRJbkNv
bnRhaW5lck5vZGUoKSBjb25zdDsgIC8vIE8obikgZm9yIGJlZm9yZS9hZnRlci1hbmNob3JlZCBw
b3NpdGlvbnMsIE8oMSkgZm9yIHBhcmVudC1hbmNob3JlZCBwb3NpdGlvbnMKKyAgICBQb3NpdGlv
biBwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSBjb25zdDsgLy8gQ29udmVuaWVuY2UgbWV0aG9k
IGZvcgogCiAgICAgLy8gSW5saW5lIE8oMSkgYWNjZXNzIGZvciBQb3NpdGlvbnMgd2hpY2ggY2Fs
bGVycyBrbm93IHRvIGJlIHBhcmVudC1hbmNob3JlZAogICAgIGludCBvZmZzZXRJbkNvbnRhaW5l
ck5vZGUoKSBjb25zdApAQCAtMTc5LDcgKzE4MCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE5v
ZGU+IG1fYW5jaG9yTm9kZTsKICAgICAvLyBtX29mZnNldCBjYW4gYmUgdGhlIG9mZnNldCBpbnNp
ZGUgbV9hbmNob3JOb2RlLCBvciBpZiBlZGl0aW5nSWdub3Jlc0NvbnRlbnQobV9hbmNob3JOb2Rl
KQogICAgIC8vIHJldHVybnMgdHJ1ZSwgdGhlbiBvdGhlciBwbGFjZXMgaW4gZWRpdGluZyB3aWxs
IHRyZWF0IG1fb2Zmc2V0ID09IDAgYXMgImJlZm9yZSB0aGUgYW5jaG9yIgotICAgIC8vIGFuZCBt
X29mZnNldCA+IDAgYXMgImFmdGVyIHRoZSBhbmNob3Igbm9kZSIuICBTZWUgcmFuZ2VDb21wbGlh
bnRFcXVpdmFsZW50IGZvciBtb3JlIGluZm8uCisgICAgLy8gYW5kIG1fb2Zmc2V0ID4gMCBhcyAi
YWZ0ZXIgdGhlIGFuY2hvciBub2RlIi4gIFNlZSBwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQgZm9y
IG1vcmUgaW5mby4KICAgICBpbnQgbV9vZmZzZXQ7CiAgICAgdW5zaWduZWQgbV9hbmNob3JUeXBl
IDogMjsKICAgICBib29sIG1faXNMZWdhY3lFZGl0aW5nUG9zaXRpb24gOiAxOwpJbmRleDogV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCShyZXZpc2lvbiA3MjgzOSkKKysrIFdlYkNv
cmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3MCw4
ICs1NzAsOCBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUoCiAgICAg
Ly8gQ2FsY3VsYXRlIHN0YXJ0IGFuZCBlbmQgaW5kaWNlcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUg
dHJlZSB0aGF0IHRoZXkncmUgaW4uCiAgICAgTm9kZSogc2NvcGUgPSBoaWdoZXN0QW5jZXN0b3Io
dmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKTsKICAgICBQb3NpdGlvbiByYW5n
ZVN0YXJ0KHNjb3BlLCAwKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKGRvY3VtZW50KCksIHJhbmdlU3RhcnQsIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudCh2
aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKSkpOwotICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHJhbmdlU3RhcnQsIHJhbmdlQ29tcGxpYW50
RXF1aXZhbGVudCh2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkpKTsKKyAgICBSZWZQdHI8UmFu
Z2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHJhbmdlU3RhcnQsIHZp
c2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsK
KyAgICBSZWZQdHI8UmFuZ2U+IGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBy
YW5nZVN0YXJ0LCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCkpOwogICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0
aChzdGFydFJhbmdlLmdldCgpLCB0cnVlKTsKICAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0
b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLmdldCgpLCB0cnVlKTsKICAgICAKSW5kZXg6IFdlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gNzI4MzkpCisrKyBX
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjEsNyArMTYxLDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5zZXJ0Tm9kZUF0
KAogICAgIEFTU0VSVChpc0VkaXRhYmxlUG9zaXRpb24oZWRpdGluZ1Bvc2l0aW9uKSk7CiAgICAg
Ly8gRm9yIGVkaXRpbmcgcG9zaXRpb25zIGxpa2UgW3RhYmxlLCAwXSwgaW5zZXJ0IGJlZm9yZSB0
aGUgdGFibGUsCiAgICAgLy8gbGlrZXdpc2UgZm9yIHJlcGxhY2VkIGVsZW1lbnRzLCBicnMsIGV0
Yy4KLSAgICBQb3NpdGlvbiBwID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGVkaXRpbmdQb3Np
dGlvbik7CisgICAgUG9zaXRpb24gcCA9IGVkaXRpbmdQb3NpdGlvbi5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKTsKICAgICBOb2RlKiByZWZDaGlsZCA9IHAubm9kZSgpOwogICAgIGludCBvZmZz
ZXQgPSBwLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAgICAgCkBAIC05MDIsMTMgKzkwMiwx
MyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKHN0YXJ0SW5Q
YXJhZ3JhcGgpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChzdGFydE9m
UGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkpLCByYW5nZUNvbXBsaWFudEVxdWl2YWxl
bnQodmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkpKTsKKyAgICAgICAgICAgICAgICBSZWZQ
dHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQ
YXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQo
KSwgdmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCkpOwogICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVu
Z3RoKHN0YXJ0UmFuZ2UuZ2V0KCksIHRydWUpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBlbmRJbmRleCA9IDA7CiAgICAgICAgICAgICBpZiAoZW5kSW5QYXJhZ3JhcGgpIHsKLSAgICAg
ICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVu
dCgpLCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVw
RXF1aXZhbGVudCgpKSwgcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHZpc2libGVFbmQuZGVlcEVx
dWl2YWxlbnQoKSkpOworICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2
YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZh
bGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKICAgICAgICAgICAgICAgICBlbmRJ
bmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UuZ2V0KCksIHRydWUpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05MjMsOCArOTIzLDggQEAgdm9pZCBDb21wb3Np
dGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaAogICAgIFBvc2l0aW9uIGVuZCA9IGVuZE9mUGFy
YWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkudXBzdHJlYW0oKTsKICAgICAKICAgICAvLyBz
dGFydCBhbmQgZW5kIGNhbid0IGJlIHVzZWQgZGlyZWN0bHkgdG8gY3JlYXRlIGEgUmFuZ2U7IHRo
ZXkgYXJlICJlZGl0aW5nIHBvc2l0aW9ucyIKLSAgICBQb3NpdGlvbiBzdGFydFJhbmdlQ29tcGxp
YW50ID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHN0YXJ0KTsKLSAgICBQb3NpdGlvbiBlbmRS
YW5nZUNvbXBsaWFudCA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChlbmQpOworICAgIFBvc2l0
aW9uIHN0YXJ0UmFuZ2VDb21wbGlhbnQgPSBzdGFydC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQo
KTsKKyAgICBQb3NpdGlvbiBlbmRSYW5nZUNvbXBsaWFudCA9IGVuZC5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKTsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1
bWVudCgpLCBzdGFydFJhbmdlQ29tcGxpYW50Lm5vZGUoKSwgc3RhcnRSYW5nZUNvbXBsaWFudC5k
ZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlbmRSYW5nZUNvbXBsaWFudC5ub2RlKCksIGVuZFJh
bmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwogCiAgICAgLy8gRklYTUU6
IFRoaXMgaXMgYW4gaW5lZmZpY2llbnQgd2F5IHRvIHByZXNlcnZlIHN0eWxlIG9uIG5vZGVzIGlu
IHRoZSBwYXJhZ3JhcGggdG8gbW92ZS4gSXQKQEAgLTk3MSw3ICs5NzEsNyBAQCB2b2lkIENvbXBv
c2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAgICAgICAgIHVwZGF0ZUxheW91dCgpOwog
ICAgIH0KICAgICAgICAgCi0gICAgUmVmUHRyPFJhbmdlPiBzdGFydFRvRGVzdGluYXRpb25SYW5n
ZShSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIFBvc2l0aW9uKGRvY3VtZW50KCksIDApLCByYW5n
ZUNvbXBsaWFudEVxdWl2YWxlbnQoZGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKSkpKTsKKyAg
ICBSZWZQdHI8UmFuZ2U+IHN0YXJ0VG9EZXN0aW5hdGlvblJhbmdlKFJhbmdlOjpjcmVhdGUoZG9j
dW1lbnQoKSwgUG9zaXRpb24oZG9jdW1lbnQoKSwgMCksIGRlc3RpbmF0aW9uLmRlZXBFcXVpdmFs
ZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpKTsKICAgICBkZXN0aW5hdGlvbkluZGV4
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFRvRGVzdGluYXRpb25SYW5nZS5nZXQo
KSwgdHJ1ZSk7CiAgICAgCiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKGRlc3RpbmF0aW9uKTsKSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9u
IDcyODM5KQorKysgV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTYsMTQgKzI1NiwxNCBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNv
bW1hbmQ6OmluaXRpYWxpemVQCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgLy8gV2UgbXVz
dCBwYXNzIHRoZSBwb3NpdGlvbnMgdGhyb3VnaCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQsIHNp
bmNlIHNvbWUgZWRpdGluZyBwb3NpdGlvbnMKKyAgICAvLyBXZSBtdXN0IHBhc3MgY2FsbCBwYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQgb24gdGhlIHBvc2l0aW9ucyBzaW5jZSBzb21lIGVkaXRpbmcg
cG9zaXRpb25zCiAgICAgLy8gdGhhdCBhcHBlYXIgaW5zaWRlIHRoZWlyIG5vZGVzIGFyZW4ndCBy
ZWFsbHkgaW5zaWRlIHRoZW0uICBbaHIsIDBdIGlzIG9uZSBleGFtcGxlLgotICAgIC8vIEZJWE1F
OiByYW5nZUNvbXBsYWludEVxdWl2YWxlbnQgc2hvdWxkIGV2ZW50dWFsbHkgYmUgbW92ZWQgaW50
byBlbmNsb3NpbmcgZWxlbWVudCBnZXR0ZXJzCisgICAgLy8gRklYTUU6IHBhcmVudEFuY2hvcmVk
RXF1aXZhbGVudCBzaG91bGQgZXZlbnR1YWxseSBiZSBtb3ZlZCBpbnRvIGVuY2xvc2luZyBlbGVt
ZW50IGdldHRlcnMKICAgICAvLyBsaWtlIHRoZSBvbmUgYmVsb3csIHNpbmNlIGVkaXRpbmcgZnVu
Y3Rpb25zIHNob3VsZCBvYnZpb3VzbHkgYWNjZXB0IGVkaXRpbmcgcG9zaXRpb25zLgogICAgIC8v
IEZJWE1FOiBQYXNzaW5nIGZhbHNlIHRvIGVuY2xvc2luZ05vZGVPZlR5cGUgdGVsbHMgaXQgdGhh
dCBpdCdzIE9LIHRvIHJldHVybiBhIG5vbi1lZGl0YWJsZQogICAgIC8vIG5vZGUuICBUaGlzIHdh
cyBkb25lIHRvIG1hdGNoIGV4aXN0aW5nIGJlaGF2aW9yLCBidXQgaXQgc2VlbXMgd3JvbmcuCi0g
ICAgbV9zdGFydEJsb2NrID0gZW5jbG9zaW5nTm9kZU9mVHlwZShyYW5nZUNvbXBsaWFudEVxdWl2
YWxlbnQobV9kb3duc3RyZWFtU3RhcnQpLCAmaXNCbG9jaywgZmFsc2UpOwotICAgIG1fZW5kQmxv
Y2sgPSBlbmNsb3NpbmdOb2RlT2ZUeXBlKHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChtX3Vwc3Ry
ZWFtRW5kKSwgJmlzQmxvY2ssIGZhbHNlKTsKKyAgICBtX3N0YXJ0QmxvY2sgPSBlbmNsb3NpbmdO
b2RlT2ZUeXBlKG1fZG93bnN0cmVhbVN0YXJ0LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCAm
aXNCbG9jaywgZmFsc2UpOworICAgIG1fZW5kQmxvY2sgPSBlbmNsb3NpbmdOb2RlT2ZUeXBlKG1f
dXBzdHJlYW1FbmQucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksICZpc0Jsb2NrLCBmYWxzZSk7
CiB9CiAKIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6c2F2ZVR5cGluZ1N0eWxlU3RhdGUo
KQpAQCAtNjA5LDggKzYwOSw4IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VQ
YXJhZ3IKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQo
c3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpKSwgcmFuZ2VDb21wbGlhbnRF
cXVpdmFsZW50KGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkpKTsKLSAgICBS
ZWZQdHI8UmFuZ2U+IHJhbmdlVG9CZVJlcGxhY2VkID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgp
LCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQobWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVu
dCgpKSwgcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2
YWxlbnQoKSkpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3Vt
ZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNo
b3JlZEVxdWl2YWxlbnQoKSwgZW5kT2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5w
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZVRvQmVS
ZXBsYWNlZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVw
RXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBtZXJnZURlc3RpbmF0aW9u
LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwogICAgIGlmICgh
ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmNsaWVudCgpLT5zaG91bGRNb3ZlUmFuZ2VB
ZnRlckRlbGV0ZShyYW5nZS5nZXQoKSwgcmFuZ2VUb0JlUmVwbGFjZWQuZ2V0KCkpKQogICAgICAg
ICByZXR1cm47CiAgICAgCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gNzI4MzkpCisrKyBX
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk4LDcgKzU5OCw3
IEBAIFdyaXRpbmdEaXJlY3Rpb24gRWRpdG9yOjp0ZXh0RGlyZWN0aW9uRm8KICAgICBpZiAobV9m
cmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkgewogICAgICAgICBlbmQgPSBtX2ZyYW1lLT5z
ZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuZW5kKCkudXBzdHJlYW0oKTsKIAotICAgICAgICBOb2Rl
KiBwYXN0TGFzdCA9IFJhbmdlOjpjcmVhdGUobV9mcmFtZS0+ZG9jdW1lbnQoKSwgcmFuZ2VDb21w
bGlhbnRFcXVpdmFsZW50KHBvc2l0aW9uKSwgcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGVuZCkp
LT5wYXN0TGFzdE5vZGUoKTsKKyAgICAgICAgTm9kZSogcGFzdExhc3QgPSBSYW5nZTo6Y3JlYXRl
KG1fZnJhbWUtPmRvY3VtZW50KCksIHBvc2l0aW9uLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgp
LCBlbmQucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpLT5wYXN0TGFzdE5vZGUoKTsKICAgICAg
ICAgZm9yIChOb2RlKiBuID0gbm9kZTsgbiAmJiBuICE9IHBhc3RMYXN0OyBuID0gbi0+dHJhdmVy
c2VOZXh0Tm9kZSgpKSB7CiAgICAgICAgICAgICBpZiAoIW4tPmlzU3R5bGVkRWxlbWVudCgpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTczNyw3ICsxNzM3LDcgQEAgdm9pZCBFZGl0
b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhibwogICAgICAgICBpZiAocG9zaXRpb24uaXNO
dWxsKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBQb3NpdGlvbiBy
YW5nZUNvbXBsaWFudFBvc2l0aW9uID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHBvc2l0aW9u
KTsKKyAgICAgICAgUG9zaXRpb24gcmFuZ2VDb21wbGlhbnRQb3NpdGlvbiA9IHBvc2l0aW9uLnBh
cmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgICAgICBzcGVsbGluZ1NlYXJjaFJhbmdlLT5z
ZXRTdGFydChyYW5nZUNvbXBsaWFudFBvc2l0aW9uLm5vZGUoKSwgcmFuZ2VDb21wbGlhbnRQb3Np
dGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlYyk7CiAgICAgICAgIHN0YXJ0ZWRXaXRo
U2VsZWN0aW9uID0gZmFsc2U7IC8vIHdvbid0IG5lZWQgdG8gd3JhcAogICAgIH0KSW5kZXg6IFdl
YkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAJKHJldmlzaW9uIDcyODM5
KQorKysgV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIGJvb2wgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6c2hv
dWxkVXNlQnIKICAgICAvLyBBbiBlZGl0aW5nIHBvc2l0aW9uIGxpa2UgW2lucHV0LCAwXSBhY3R1
YWxseSByZWZlcnMgdG8gdGhlIHBvc2l0aW9uIGJlZm9yZQogICAgIC8vIHRoZSBpbnB1dCBlbGVt
ZW50LCBhbmQgaW4gdGhhdCBjYXNlIHdlIG5lZWQgdG8gY2hlY2sgdGhlIGlucHV0IGVsZW1lbnQn
cwogICAgIC8vIHBhcmVudCdzIHJlbmRlcmVyLgotICAgIFBvc2l0aW9uIHAocmFuZ2VDb21wbGlh
bnRFcXVpdmFsZW50KGluc2VydGlvblBvcykpOworICAgIFBvc2l0aW9uIHAoaW5zZXJ0aW9uUG9z
LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKICAgICByZXR1cm4gcC5ub2RlKCktPnJlbmRl
cmVyKCkgJiYgIXAubm9kZSgpLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUo
KTsKIH0KIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNv
bW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhT
ZXBhcmF0b3JDb21tYW5kLmNwcAkocmV2aXNpb24gNzI4MzkpCisrKyBXZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
OSw4ICsxNTksOCBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvCiAg
ICAgICAgIGFmZmluaXR5ID0gZW5kaW5nU2VsZWN0aW9uKCkuYWZmaW5pdHkoKTsKICAgICB9CiAg
ICAgCi0gICAgLy8gRklYTUU6IFRoZSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQgY29udmVyc2lv
biBuZWVkcyB0byBiZSBtb3ZlZCBpbnRvIGVuY2xvc2luZ0Jsb2NrLgotICAgIE5vZGUqIHN0YXJ0
QmxvY2tOb2RlID0gZW5jbG9zaW5nQmxvY2socmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGluc2Vy
dGlvblBvc2l0aW9uKS5ub2RlKCkpOworICAgIC8vIEZJWE1FOiBUaGUgcGFyZW50QW5jaG9yZWRF
cXVpdmFsZW50IGNvbnZlcnNpb24gbmVlZHMgdG8gYmUgbW92ZWQgaW50byBlbmNsb3NpbmdCbG9j
ay4KKyAgICBOb2RlKiBzdGFydEJsb2NrTm9kZSA9IGVuY2xvc2luZ0Jsb2NrKGluc2VydGlvblBv
c2l0aW9uLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLmNvbnRhaW5lck5vZGUoKSk7CiAgICAg
UG9zaXRpb24gY2Fub25pY2FsUG9zID0gVmlzaWJsZVBvc2l0aW9uKGluc2VydGlvblBvc2l0aW9u
KS5kZWVwRXF1aXZhbGVudCgpOwogICAgIEVsZW1lbnQqIHN0YXJ0QmxvY2sgPSBzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4oc3RhcnRCbG9ja05vZGUpOwogICAgIGlmICghc3RhcnRCbG9ja05vZGUKSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2aXNp
b24gNzI4MzkpCisrKyBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NjUsNyArNTY1LDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlU3R5
bGVTcGFuc0JlZm9yZUluc2VydAogICAgIE5vZGUqIHNvdXJjZURvY3VtZW50U3R5bGVTcGFuID0g
dG9wTm9kZTsKICAgICBSZWZQdHI8Tm9kZT4gY29waWVkUmFuZ2VTdHlsZVNwYW4gPSBzb3VyY2VE
b2N1bWVudFN0eWxlU3Bhbi0+Zmlyc3RDaGlsZCgpOwogCi0gICAgUmVmUHRyPEVkaXRpbmdTdHls
ZT4gc3R5bGVBdEluc2VydGlvblBvcyA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHJhbmdlQ29tcGxp
YW50RXF1aXZhbGVudChpbnNlcnRpb25Qb3MpKTsKKyAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBz
dHlsZUF0SW5zZXJ0aW9uUG9zID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5zZXJ0aW9uUG9zLnBh
cmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKICAgICBTdHJpbmcgc3R5bGVUZXh0ID0gc3R5bGVB
dEluc2VydGlvblBvcy0+c3R5bGUoKS0+Y3NzVGV4dCgpOwogCiAgICAgLy8gRklYTUU6IFRoaXMg
c3RyaW5nIGNvbXBhcmlzb24gaXMgYSBuYWl2ZSB3YXkgb2YgY29tcGFyaW5nIHR3byBzdHlsZXMu
CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAkocmV2aXNpb24gNzI4MzkpCisr
KyBXZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTk3LDggKzU5Nyw4IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IG1ha2VSYW5nZShjb25zdCBWaXNpYmwK
ICAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4g
MDsKICAgICAKLSAgICBQb3NpdGlvbiBzID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHN0YXJ0
KTsKLSAgICBQb3NpdGlvbiBlID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGVuZCk7CisgICAg
UG9zaXRpb24gcyA9IHN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFs
ZW50KCk7CisgICAgUG9zaXRpb24gZSA9IGVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpOwogICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKHMubm9kZSgpLT5kb2N1
bWVudCgpLCBzLm5vZGUoKSwgcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlLm5vZGUoKSwg
ZS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKIH0KIApAQCAtNjE4LDcgKzYxOCw3IEBAIGJv
b2wgc2V0U3RhcnQoUmFuZ2UgKnIsIGNvbnN0IFZpc2libGVQb3MKIHsKICAgICBpZiAoIXIpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBQb3NpdGlvbiBwID0gcmFuZ2VDb21wbGlhbnRFcXVp
dmFsZW50KHZpc2libGVQb3NpdGlvbik7CisgICAgUG9zaXRpb24gcCA9IHZpc2libGVQb3NpdGlv
bi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIGludCBj
b2RlID0gMDsKICAgICByLT5zZXRTdGFydChwLm5vZGUoKSwgcC5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpLCBjb2RlKTsKICAgICByZXR1cm4gY29kZSA9PSAwOwpAQCAtNjI4LDcgKzYyOCw3IEBA
IGJvb2wgc2V0RW5kKFJhbmdlICpyLCBjb25zdCBWaXNpYmxlUG9zaXQKIHsKICAgICBpZiAoIXIp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBQb3NpdGlvbiBwID0gcmFuZ2VDb21wbGlhbnRF
cXVpdmFsZW50KHZpc2libGVQb3NpdGlvbik7CisgICAgUG9zaXRpb24gcCA9IHZpc2libGVQb3Np
dGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIGlu
dCBjb2RlID0gMDsKICAgICByLT5zZXRFbmQocC5ub2RlKCksIHAuZGVwcmVjYXRlZEVkaXRpbmdP
ZmZzZXQoKSwgY29kZSk7CiAgICAgcmV0dXJuIGNvZGUgPT0gMDsKSW5kZXg6IFdlYkNvcmUvZWRp
dGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVNlbGVjdGlvbi5jcHAJKHJldmlzaW9uIDcyODM5KQorKysgV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVTZWxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsOCArMTIxLDggQEAg
UGFzc1JlZlB0cjxSYW5nZT4gVmlzaWJsZVNlbGVjdGlvbjo6ZmlycwogewogICAgIGlmIChpc05v
bmUoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgUG9zaXRpb24gc3RhcnQgPSByYW5nZUNvbXBs
aWFudEVxdWl2YWxlbnQobV9zdGFydCk7Ci0gICAgUG9zaXRpb24gZW5kID0gcmFuZ2VDb21wbGlh
bnRFcXVpdmFsZW50KG1fZW5kKTsKKyAgICBQb3NpdGlvbiBzdGFydCA9IG1fc3RhcnQucGFyZW50
QW5jaG9yZWRFcXVpdmFsZW50KCk7CisgICAgUG9zaXRpb24gZW5kID0gbV9lbmQucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCk7CiAgICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUoc3RhcnQubm9kZSgp
LT5kb2N1bWVudCgpLCBzdGFydCwgZW5kKTsKIH0KIApAQCAtMTQ2LDcgKzE0Niw3IEBAIFBhc3NS
ZWZQdHI8UmFuZ2U+IFZpc2libGVTZWxlY3Rpb246OnRvTm8KICAgICAgICAgLy8gSWYgdGhlIHNl
bGVjdGlvbiBpcyBhIGNhcmV0LCBtb3ZlIHRoZSByYW5nZSBzdGFydCB1cHN0cmVhbS4gVGhpcyBo
ZWxwcyB1cyBtYXRjaAogICAgICAgICAvLyB0aGUgY29udmVudGlvbnMgb2YgdGV4dCBlZGl0b3Jz
IHRlc3RlZCwgd2hpY2ggbWFrZSBzdHlsZSBkZXRlcm1pbmF0aW9ucyBiYXNlZAogICAgICAgICAv
LyBvbiB0aGUgY2hhcmFjdGVyIGJlZm9yZSB0aGUgY2FyZXQsIGlmIGFueS4gCi0gICAgICAgIHMg
PSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQobV9zdGFydC51cHN0cmVhbSgpKTsKKyAgICAgICAg
cyA9IG1fc3RhcnQudXBzdHJlYW0oKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICAg
ICAgZSA9IHM7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gSWYgdGhlIHNlbGVjdGlvbiBpcyBh
IHJhbmdlLCBzZWxlY3QgdGhlIG1pbmltdW0gcmFuZ2UgdGhhdCBlbmNvbXBhc3NlcyB0aGUgc2Vs
ZWN0aW9uLgpAQCAtMTcwLDggKzE3MCw4IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IFZpc2libGVTZWxl
Y3Rpb246OnRvTm8KICAgICAgICAgICAgIHMgPSBlOwogICAgICAgICAgICAgZSA9IHRtcDsKICAg
ICAgICAgfQotICAgICAgICBzID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHMpOwotICAgICAg
ICBlID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGUpOworICAgICAgICBzID0gcy5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKTsKKyAgICAgICAgZSA9IGUucGFyZW50QW5jaG9yZWRFcXVpdmFs
ZW50KCk7CiAgICAgfQogCiAgICAgLy8gVmlzaWJsZVNlbGVjdGlvbnMgYXJlIHN1cHBvc2VkIHRv
IGFsd2F5cyBiZSB2YWxpZC4gIFRoaXMgY29uc3RydWN0b3Igd2lsbCBBU1NFUlQKQEAgLTIwNCw3
ICsyMDQsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxSYW5nZT4gbWFrZVNlYXJjaFJhbmdlCiAgICAg
UmVmUHRyPFJhbmdlPiBzZWFyY2hSYW5nZShSYW5nZTo6Y3JlYXRlKGQpKTsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKIAotICAgIFBvc2l0aW9uIHN0YXJ0KHJhbmdlQ29tcGxpYW50RXF1aXZh
bGVudChwb3MpKTsKKyAgICBQb3NpdGlvbiBzdGFydChwb3MucGFyZW50QW5jaG9yZWRFcXVpdmFs
ZW50KCkpOwogICAgIHNlYXJjaFJhbmdlLT5zZWxlY3ROb2RlQ29udGVudHMoYm91bmRhcnksIGVj
KTsKICAgICBzZWFyY2hSYW5nZS0+c2V0U3RhcnQoc3RhcnQubm9kZSgpLCBzdGFydC5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpLCBlYyk7CiAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9odG1sZWRp
dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAko
cmV2aXNpb24gNzI4MzkpCisrKyBXZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzIsNTcgKzMzMiw5IEBAIE5vZGUqIGVuY2xvc2luZ0Jsb2NrKE5vZGUq
IG5vZGUpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQqPihlbmNsb3NpbmdOb2RlT2ZU
eXBlKFBvc2l0aW9uKG5vZGUsIDApLCBpc0Jsb2NrKSk7CiB9CiAKLS8vIEludGVybmFsbHkgZWRp
dGluZyB1c2VzICJpbnZhbGlkIiBwb3NpdGlvbnMgZm9yIGhpc3RvcmljYWwgcmVhc29ucy4gIEZv
cgotLy8gZXhhbXBsZSwgaW4gPGRpdj48aW1nIC8+PC9kaXY+LCBFZGl0aW5nIG1pZ2h0IHVzZSAo
aW1nLCAxKSBmb3IgdGhlIHBvc2l0aW9uCi0vLyBhZnRlciA8aW1nPiwgYnV0IHdlIGhhdmUgdG8g
Y29udmVydCB0aGF0IHRvIChkaXYsIDEpIGJlZm9yZSBoYW5kaW5nIHRoZQotLy8gcG9zaXRpb24g
dG8gYSBSYW5nZSBvYmplY3QuICBJZGVhbGx5IGFsbCBpbnRlcm5hbCBwb3NpdGlvbnMgc2hvdWxk
Ci0vLyBiZSAicmFuZ2UgY29tcGxpYW50IiBmb3Igc2ltcGxpY2l0eS4KLVBvc2l0aW9uIHJhbmdl
Q29tcGxpYW50RXF1aXZhbGVudChjb25zdCBQb3NpdGlvbiYgcG9zKQotewotICAgIGlmIChwb3Mu
aXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBQb3NpdGlvbigpOwotCi0gICAgTm9kZSogbm9kZSA9
IHBvcy5ub2RlKCk7Ci0KLSAgICBpZiAocG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPD0g
MCkgewotICAgICAgICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpICYmIChlZGl0aW5nSWdub3Jlc0Nv
bnRlbnQobm9kZSkgfHwgaXNUYWJsZUVsZW1lbnQobm9kZSkpKQotICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUpOwotICAgICAgICByZXR1cm4gUG9zaXRp
b24obm9kZSwgMCk7Ci0gICAgfQotCi0gICAgaWYgKG5vZGUtPm9mZnNldEluQ2hhcmFjdGVycygp
KQotICAgICAgICByZXR1cm4gUG9zaXRpb24obm9kZSwgbWluKG5vZGUtPm1heENoYXJhY3Rlck9m
ZnNldCgpLCBwb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSkpOwotCi0gICAgaW50IG1heENv
bXBsaWFudE9mZnNldCA9IG5vZGUtPmNoaWxkTm9kZUNvdW50KCk7Ci0gICAgaWYgKHBvcy5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpID4gbWF4Q29tcGxpYW50T2Zmc2V0KSB7Ci0gICAgICAgIGlm
IChub2RlLT5wYXJlbnROb2RlKCkpCi0gICAgICAgICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVu
dEFmdGVyTm9kZShub2RlKTsKLQotICAgICAgICAvLyB0aGVyZSBpcyBubyBvdGhlciBvcHRpb24g
YXQgdGhpcyBwb2ludCB0aGFuIHRvCi0gICAgICAgIC8vIHVzZSB0aGUgaGlnaGVzdCBhbGxvd2Vk
IHBvc2l0aW9uIGluIHRoZSBub2RlCi0gICAgICAgIHJldHVybiBQb3NpdGlvbihub2RlLCBtYXhD
b21wbGlhbnRPZmZzZXQpOwotICAgIH0gCi0KLSAgICAvLyBFZGl0aW5nIHNob3VsZCBuZXZlciBn
ZW5lcmF0ZSBwb3NpdGlvbnMgbGlrZSB0aGlzLgotICAgIGlmICgocG9zLmRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0KCkgPCBtYXhDb21wbGlhbnRPZmZzZXQpICYmIGVkaXRpbmdJZ25vcmVzQ29udGVu
dChub2RlKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IG5vZGUtPnBhcmVudE5vZGUoKSA/IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUpIDog
UG9zaXRpb24obm9kZSwgMCk7Ci0gICAgfQotICAgIAotICAgIGlmIChwb3MuZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKSA9PSBtYXhDb21wbGlhbnRPZmZzZXQgJiYgKGVkaXRpbmdJZ25vcmVzQ29u
dGVudChub2RlKSB8fCBpc1RhYmxlRWxlbWVudChub2RlKSkpCi0gICAgICAgIHJldHVybiBwb3Np
dGlvbkluUGFyZW50QWZ0ZXJOb2RlKG5vZGUpOwotICAgIAotICAgIHJldHVybiBQb3NpdGlvbihw
b3MpOwotfQotCi1Qb3NpdGlvbiByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB2cG9zKQotewotICAgIHJldHVybiByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQo
dnBvcy5kZWVwRXF1aXZhbGVudCgpKTsKLX0KLQogLy8gVGhpcyBtZXRob2QgaXMgdXNlZCB0byBj
cmVhdGUgcG9zaXRpb25zIGluIHRoZSBET00uIEl0IHJldHVybnMgdGhlIG1heGltdW0gdmFsaWQg
b2Zmc2V0CiAvLyBpbiBhIG5vZGUuICBJdCByZXR1cm5zIDEgZm9yIHNvbWUgZWxlbWVudHMgZXZl
biB0aG91Z2ggdGhleSBkbyBub3QgaGF2ZSBjaGlsZHJlbiwgd2hpY2gKLS8vIGNyZWF0ZXMgdGVj
aG5pY2FsbHkgaW52YWxpZCBET00gUG9zaXRpb25zLiAgQmUgc3VyZSB0byBjYWxsIHJhbmdlQ29t
cGxpYW50RXF1aXZhbGVudAorLy8gY3JlYXRlcyB0ZWNobmljYWxseSBpbnZhbGlkIERPTSBQb3Np
dGlvbnMuICBCZSBzdXJlIHRvIGNhbGwgcGFyZW50QW5jaG9yZWRFcXVpdmFsZW50CiAvLyBvbiBh
IFBvc2l0aW9uIGJlZm9yZSB1c2luZyBpdCB0byBjcmVhdGUgYSBET00gUmFuZ2UsIG9yIGFuIGV4
Y2VwdGlvbiB3aWxsIGJlIHRocm93bi4KIGludCBsYXN0T2Zmc2V0Rm9yRWRpdGluZyhjb25zdCBO
b2RlKiBub2RlKQogewpAQCAtMTA4MSw3ICsxMDMzLDcgQEAgaW50IGluZGV4Rm9yVmlzaWJsZVBv
c2l0aW9uKGNvbnN0IFZpc2libAogICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIFBvc2l0aW9uIHAodmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVp
dmFsZW50KCkpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHAubm9k
ZSgpLT5kb2N1bWVudCgpLCBQb3NpdGlvbihwLm5vZGUoKS0+ZG9jdW1lbnQoKSwgMCksIHJhbmdl
Q29tcGxpYW50RXF1aXZhbGVudChwKSk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdl
OjpjcmVhdGUocC5ub2RlKCktPmRvY3VtZW50KCksIFBvc2l0aW9uKHAubm9kZSgpLT5kb2N1bWVu
dCgpLCAwKSwgcC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiAgICAgcmV0dXJuIFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOwogfQogCkluZGV4OiBXZWJD
b3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
aHRtbGVkaXRpbmcuaAkocmV2aXNpb24gNzI4MzkpCisrKyBXZWJDb3JlL2VkaXRpbmcvaHRtbGVk
aXRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDkgKzEwMSw2IEBAIGJvb2wgaXNOb2RlSW5U
ZXh0Rm9ybUNvbnRyb2woTm9kZSogbm9kZSkKICAgICAKIC8vIEZ1bmN0aW9ucyByZXR1cm5pbmcg
UG9zaXRpb24KICAgICAKLVBvc2l0aW9uIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChjb25zdCBQ
b3NpdGlvbiYpOwotUG9zaXRpb24gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpOwotICAgIAogUG9zaXRpb24gbmV4dENhbmRpZGF0ZShjb25zdCBQb3NpdGlv
biYpOwogUG9zaXRpb24gcHJldmlvdXNDYW5kaWRhdGUoY29uc3QgUG9zaXRpb24mKTsKICAgICAK
SW5kZXg6IFdlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAJKHJldmlzaW9uIDcyODM5KQorKysgV2Vi
Q29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw4ICs4
MSw4IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNCb3VuZGFyeSgKICAgICAgICAg
cmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogCiAgICAgRG9jdW1lbnQqIGQgPSBib3VuZGFyeS0+
ZG9jdW1lbnQoKTsKLSAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVu
dChQb3NpdGlvbihib3VuZGFyeSwgMCkpOwotICAgIFBvc2l0aW9uIGVuZCA9IHJhbmdlQ29tcGxp
YW50RXF1aXZhbGVudChwb3MpOworICAgIFBvc2l0aW9uIHN0YXJ0ID0gUG9zaXRpb24oYm91bmRh
cnksIDApLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOworICAgIFBvc2l0aW9uIGVuZCA9IHBv
cy5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICBSZWZQdHI8UmFuZ2U+IHNlYXJjaFJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShkKTsKICAgICAKICAgICBWZWN0b3I8VUNoYXIsIDEwMjQ+IHN0
cmluZzsKQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3Vu
ZGFyeShjb25zCiAKICAgICBEb2N1bWVudCogZCA9IGJvdW5kYXJ5LT5kb2N1bWVudCgpOwogICAg
IFJlZlB0cjxSYW5nZT4gc2VhcmNoUmFuZ2UoZC0+Y3JlYXRlUmFuZ2UoKSk7Ci0gICAgUG9zaXRp
b24gc3RhcnQocmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHBvcykpOworICAgIFBvc2l0aW9uIHN0
YXJ0KHBvcy5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiAKICAgICBWZWN0b3I8VUNoYXIs
IDEwMjQ+IHN0cmluZzsKICAgICB1bnNpZ25lZCBwcmVmaXhMZW5ndGggPSAwOwpJbmRleDogV2Vi
Q29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RP
TVNlbGVjdGlvbi5jcHAJKHJldmlzaW9uIDcyODM5KQorKysgV2ViQ29yZS9wYWdlL0RPTVNlbGVj
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDIzICs3NiwyMyBAQCBjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiBET01TZWxlY3Rpb246OnZpCiBzdGF0aWMgUG9zaXRpb24gYW5jaG9yUG9zaXRp
b24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewogICAgIFBvc2l0aW9uIGFu
Y2hvciA9IHNlbGVjdGlvbi5pc0Jhc2VGaXJzdCgpID8gc2VsZWN0aW9uLnN0YXJ0KCkgOiBzZWxl
Y3Rpb24uZW5kKCk7Ci0gICAgcmV0dXJuIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChhbmNob3Ip
OworICAgIHJldHVybiBhbmNob3IucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiB9CiAKIHN0
YXRpYyBQb3NpdGlvbiBmb2N1c1Bvc2l0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVj
dGlvbikKIHsKICAgICBQb3NpdGlvbiBmb2N1cyA9IHNlbGVjdGlvbi5pc0Jhc2VGaXJzdCgpID8g
c2VsZWN0aW9uLmVuZCgpIDogc2VsZWN0aW9uLnN0YXJ0KCk7Ci0gICAgcmV0dXJuIHJhbmdlQ29t
cGxpYW50RXF1aXZhbGVudChmb2N1cyk7CisgICAgcmV0dXJuIGZvY3VzLnBhcmVudEFuY2hvcmVk
RXF1aXZhbGVudCgpOwogfQogCiBzdGF0aWMgUG9zaXRpb24gYmFzZVBvc2l0aW9uKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKIHsKLSAgICByZXR1cm4gcmFuZ2VDb21wbGlhbnRF
cXVpdmFsZW50KHNlbGVjdGlvbi5iYXNlKCkpOworICAgIHJldHVybiBzZWxlY3Rpb24uYmFzZSgp
LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogfQogCiBzdGF0aWMgUG9zaXRpb24gZXh0ZW50
UG9zaXRpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewotICAgIHJldHVy
biByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoc2VsZWN0aW9uLmV4dGVudCgpKTsKKyAgICByZXR1
cm4gc2VsZWN0aW9uLmV4dGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogfQogCiBO
b2RlKiBET01TZWxlY3Rpb246OmFuY2hvck5vZGUoKSBjb25zdApJbmRleDogV2ViS2l0L21hYy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDcz
NDU4KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NiBAQAorMjAxMC0xMi0wNyAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0Bnb29nbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0aW5nIHRv
IHVzZSBQb3NpdGlvbjo6cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50IGluc3RlYWQgb2YKKyAgICAg
ICAgdGhlIG9sZCBodG1sZWRpdGluZyByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQuCisKKyAgICAg
ICAgcmVtb3ZlIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudCBhbmQgcmVwbGFjZSBpdCB3aXRoIFBv
c2l0aW9uIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI1MDU3CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAo
LVtXZWJGcmFtZSBfc21hcnREZWxldGVSYW5nZUZvclByb3Bvc2VkUmFuZ2U6XSk6CisKIDIwMTAt
MTItMDYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNhbSBXZWluaWcuCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiA3Mjgz
OSkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
ODIwLDggKzgyMCw4IEBAIC0gKERPTVJhbmdlICopX3NtYXJ0RGVsZXRlUmFuZ2VGb3JQcm9wb3MK
ICAgICBpZiAobmV3RW5kLmlzTnVsbCgpKQogICAgICAgICBuZXdFbmQgPSBlbmQ7CiAKLSAgICBu
ZXdTdGFydCA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChuZXdTdGFydCk7Ci0gICAgbmV3RW5k
ID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KG5ld0VuZCk7CisgICAgbmV3U3RhcnQgPSBuZXdT
dGFydC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKKyAgICBuZXdFbmQgPSBuZXdFbmQucGFy
ZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiAKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gX3By
aXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+Y3JlYXRlUmFuZ2UoKTsKICAgICBpbnQgZXhj
ZXB0aW9uID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75917</attachid>
            <date>2010-12-08 10:01:31 -0800</date>
            <delta_ts>2010-12-08 11:09:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-25057-20101208100129.patch</filename>
            <type>text/plain</type>
            <size>28244</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzUyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTkgQEAKKzIwMTAtMTItMDggIExldmkgV2VpbnRyYXViICA8bGV2aXdAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZXBsYWNlZCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQgd2l0aCBQb3NpdGlvbjo6cGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50CisgICAgICAgIGFuZCBzaW1wbGlmaWVkIHRoZSBsb2dpYyBhIGJpdC4g
VW5mb3J0dW5hdGVseSwgVGFibGVzIGFuZCBzb21lIGxlZ2FjeQorICAgICAgICBlZGl0aW5nIHBv
c2l0aW9ucyBzdGlsbCBuZWVkIHRvIGJlIGhhbmRsZWQgc3BlY2lmaWNhbGx5LgorCisgICAgICAg
IHJlbW92ZSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQgYW5kIHJlcGxhY2UgaXQgd2l0aCBQb3Np
dGlvbiBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNTA1NworCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcyB0aGlzIGlzIGEgcmVmYWN0b3Ig
dGhhdCBkb2Vzbid0IGNoYW5nZSBiZWhhdmlvci4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6Y2FyZXRSYW5nZUZyb21Qb2ludCk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQpOgorICAg
ICAgICAqIGRvbS9Qb3NpdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tT
dHlsZSk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5zZXJ0Tm9kZUF0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyk6CisgICAg
ICAgICogZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmluaXRpYWxpemVQb3NpdGlvbkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VQYXJhZ3JhcGhzKToK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OnRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjph
ZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGluZUJy
ZWFrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaW5lQnJlYWtDb21tYW5k
OjpzaG91bGRVc2VCcmVha0VsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRQYXJhZ3Jh
cGhTZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVN0eWxlU3BhbnNC
ZWZvcmVJbnNlcnRpb24pOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om1ha2VSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRTdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRFbmQpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJs
ZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpmaXJz
dFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OnRvTm9ybWFsaXpl
ZFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VTZWFyY2hSYW5nZSk6CisgICAgICAgICog
ZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbmRleEZvclZpc2li
bGVQb3NpdGlvbik6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5oOgorICAgICAgICAq
IGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0Jv
dW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRCb3VuZGFyeSk6CisgICAgICAgICogcGFn
ZS9ET01TZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YW5jaG9yUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Zm9jdXNQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpiYXNl
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXh0ZW50UG9zaXRpb24pOgorCiAyMDEwLTEy
LTA4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDczNTI3KQorKysg
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNTIwLDcgKzUyMCw2IEBA
IF9fWk43V2ViQ29yZTI0Y3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwRVAKIF9fWk43V2ViQ29yZTI0
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjRm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb25FUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNG5v
dGlmeUhpc3RvcnlJdGVtQ2hhbmdlZEUKLV9fWk43V2ViQ29yZTI0cmFuZ2VDb21wbGlhbnRFcXVp
dmFsZW50RVJLTlNfOFBvc2l0aW9uRQogX19aTjdXZWJDb3JlMjVIaXN0b3J5UHJvcGVydHlMaXN0
V3JpdGVyMTFyZWxlYXNlRGF0YUV2CiBfX1pON1dlYkNvcmUyNUhpc3RvcnlQcm9wZXJ0eUxpc3RX
cml0ZXIxMndyaXRlT2JqZWN0c0VSTlNfMzBCaW5hcnlQcm9wZXJ0eUxpc3RPYmplY3RTdHJlYW1F
CiBfX1pON1dlYkNvcmUyNUhpc3RvcnlQcm9wZXJ0eUxpc3RXcml0ZXIxNndyaXRlSGlzdG9yeUl0
ZW1FUk5TXzMwQmluYXJ5UHJvcGVydHlMaXN0T2JqZWN0U3RyZWFtRVBOU18xMUhpc3RvcnlJdGVt
RQpAQCAtMTEzOCw2ICsxMTM3LDcgQEAgX19aTks3V2ViQ29yZThEb2N1bWVudDRib2R5RXYKIF9f
Wk5LN1dlYkNvcmU4RG9jdW1lbnQ2ZG9tYWluRXYKIF9fWk5LN1dlYkNvcmU4SW50UG9pbnRjdjhf
TlNQb2ludEV2CiBfX1pOSzdXZWJDb3JlOFBvc2l0aW9uMTBkb3duc3RyZWFtRU5TXzI3RWRpdGlu
Z0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlRQorX19aTks3V2ViQ29yZThQb3NpdGlvbjI0cGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50RXYKIF9fWk5LN1dlYkNvcmU4UG9zaXRpb24yNWxlYWRpbmdXaGl0ZXNw
YWNlUG9zaXRpb25FTlNfOUVBZmZpbml0eUViCiBfX1pOSzdXZWJDb3JlOFBvc2l0aW9uMjZ0cmFp
bGluZ1doaXRlc3BhY2VQb3NpdGlvbkVOU185RUFmZmluaXR5RWIKIF9fWk5LN1dlYkNvcmU4UG9z
aXRpb244dXBzdHJlYW1FTlNfMjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCkluZGV4OiBX
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCShyZXZpc2lvbiA3MzUyNykKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI3OSw3ICsxMjc5LDcgQEAgUGFzc1JlZlB0cjxSYW5nZT4gRG9jdW1l
bnQ6OmNhcmV0UmFuZ2VGcgogICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgUG9zaXRpb24gcmFuZ2VDb21wbGlhbnRQb3NpdGlvbiA9IHJh
bmdlQ29tcGxpYW50RXF1aXZhbGVudCh2aXNpYmxlUG9zaXRpb24pOworICAgIFBvc2l0aW9uIHJh
bmdlQ29tcGxpYW50UG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5w
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZSh0aGlz
LCByYW5nZUNvbXBsaWFudFBvc2l0aW9uLCByYW5nZUNvbXBsaWFudFBvc2l0aW9uKTsKIH0KIApJ
bmRleDogV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L1Bvc2l0aW9uLmNwcAkocmV2aXNpb24gNzM1MjcpCisrKyBXZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw2ICsxNDYsMjcgQEAgaW50IFBvc2l0aW9uOjpjb21w
dXRlT2Zmc2V0SW5Db250YWluZXJObwogICAgIHJldHVybiAwOwogfQogCisvLyBOZWlnaGJvci1h
bmNob3JlZCBwb3NpdGlvbnMgYXJlIGludmFsaWQgRE9NIHBvc2l0aW9ucywgc28gdGhleSBuZWVk
IHRvIGJlCisvLyBmaXhlZCB1cCBiZWZvcmUgaGFuZGluZyB0aGVtIG9mZiB0byB0aGUgUmFuZ2Ug
b2JqZWN0LgorUG9zaXRpb24gUG9zaXRpb246OnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpIGNv
bnN0Cit7CisgICAgaWYgKCFtX2FuY2hvck5vZGUpCisgICAgICAgIHJldHVybiBQb3NpdGlvbigp
OworICAgIAorICAgIC8vIEhhbmRsZSBxdWlya3Mgd2l0aCB0YWJsZXMgYW5kIGxlZ2FjeSBwb3Np
dGlvbnMgb2Zmc2V0cworICAgIGlmIChtX29mZnNldCA8PSAwKSB7CisgICAgICAgIGlmIChtX2Fu
Y2hvck5vZGUtPnBhcmVudE5vZGUoKSAmJiAoZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9y
Tm9kZS5nZXQoKSkgfHwgaXNUYWJsZUVsZW1lbnQobV9hbmNob3JOb2RlLmdldCgpKSkpCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobV9hbmNob3JOb2RlLmdl
dCgpKTsKKyAgICAgICAgcmV0dXJuIFBvc2l0aW9uKG1fYW5jaG9yTm9kZSwgMCk7CisgICAgfQor
ICAgIGlmICghbV9hbmNob3JOb2RlLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSAmJiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obV9vZmZzZXQpID09IG1fYW5jaG9yTm9kZS0+Y2hpbGROb2RlQ291bnQoKQor
ICAgICAgICAmJiAoZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkgfHwg
aXNUYWJsZUVsZW1lbnQobV9hbmNob3JOb2RlLmdldCgpKSkpIHsKKyAgICAgICAgcmV0dXJuIHBv
c2l0aW9uSW5QYXJlbnRBZnRlck5vZGUobV9hbmNob3JOb2RlLmdldCgpKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gUG9zaXRpb24oY29udGFpbmVyTm9kZSgpLCBjb21wdXRlT2Zmc2V0SW5Db250YWlu
ZXJOb2RlKCkpOworfQorCiBOb2RlKiBQb3NpdGlvbjo6Y29tcHV0ZU5vZGVCZWZvcmVQb3NpdGlv
bigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2FuY2hvck5vZGUpCkluZGV4OiBXZWJDb3JlL2RvbS9Q
b3NpdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1Bvc2l0aW9uLmgJKHJldmlzaW9u
IDczNTI3KQorKysgV2ViQ29yZS9kb20vUG9zaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtODAs
NiArODAsNyBAQCBwdWJsaWM6CiAgICAgLy8gd2lsbCByZXR1cm4gaW1nLT5wYXJlbnROb2RlKCkg
YW5kIGltZy0+bm9kZUluZGV4KCkgZnJvbSB0aGVzZSBmdW5jdGlvbnMuCiAgICAgTm9kZSogY29u
dGFpbmVyTm9kZSgpIGNvbnN0OyAvLyBOVUxMIGZvciBhIGJlZm9yZS9hZnRlciBwb3NpdGlvbiBh
bmNob3JlZCB0byBhIG5vZGUgd2l0aCBubyBwYXJlbnQKICAgICBpbnQgY29tcHV0ZU9mZnNldElu
Q29udGFpbmVyTm9kZSgpIGNvbnN0OyAgLy8gTyhuKSBmb3IgYmVmb3JlL2FmdGVyLWFuY2hvcmVk
IHBvc2l0aW9ucywgTygxKSBmb3IgcGFyZW50LWFuY2hvcmVkIHBvc2l0aW9ucworICAgIFBvc2l0
aW9uIHBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpIGNvbnN0OyAvLyBDb252ZW5pZW5jZSBtZXRo
b2QgZm9yIERPTSBwb3NpdGlvbnMgdGhhdCBhbHNvIGZpeGVzIHVwIHNvbWUgcG9zaXRpb25zIGZv
ciBlZGl0aW5nCiAKICAgICAvLyBJbmxpbmUgTygxKSBhY2Nlc3MgZm9yIFBvc2l0aW9ucyB3aGlj
aCBjYWxsZXJzIGtub3cgdG8gYmUgcGFyZW50LWFuY2hvcmVkCiAgICAgaW50IG9mZnNldEluQ29u
dGFpbmVyTm9kZSgpIGNvbnN0CkBAIC0xNzksNyArMTgwLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8Tm9kZT4gbV9hbmNob3JOb2RlOwogICAgIC8vIG1fb2Zmc2V0IGNhbiBiZSB0aGUgb2Zmc2V0
IGluc2lkZSBtX2FuY2hvck5vZGUsIG9yIGlmIGVkaXRpbmdJZ25vcmVzQ29udGVudChtX2FuY2hv
ck5vZGUpCiAgICAgLy8gcmV0dXJucyB0cnVlLCB0aGVuIG90aGVyIHBsYWNlcyBpbiBlZGl0aW5n
IHdpbGwgdHJlYXQgbV9vZmZzZXQgPT0gMCBhcyAiYmVmb3JlIHRoZSBhbmNob3IiCi0gICAgLy8g
YW5kIG1fb2Zmc2V0ID4gMCBhcyAiYWZ0ZXIgdGhlIGFuY2hvciBub2RlIi4gIFNlZSByYW5nZUNv
bXBsaWFudEVxdWl2YWxlbnQgZm9yIG1vcmUgaW5mby4KKyAgICAvLyBhbmQgbV9vZmZzZXQgPiAw
IGFzICJhZnRlciB0aGUgYW5jaG9yIG5vZGUiLiAgU2VlIHBhcmVudEFuY2hvcmVkRXF1aXZhbGVu
dCBmb3IgbW9yZSBpbmZvLgogICAgIGludCBtX29mZnNldDsKICAgICB1bnNpZ25lZCBtX2FuY2hv
clR5cGUgOiAyOwogICAgIGJvb2wgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbiA6IDE7CkluZGV4
OiBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDczNTI3KQorKysg
V2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTY5LDggKzU2OSw4IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSgK
ICAgICAvLyBDYWxjdWxhdGUgc3RhcnQgYW5kIGVuZCBpbmRpY2VzIGZyb20gdGhlIHN0YXJ0IG9m
IHRoZSB0cmVlIHRoYXQgdGhleSdyZSBpbi4KICAgICBOb2RlKiBzY29wZSA9IGhpZ2hlc3RBbmNl
c3Rvcih2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkpOwogICAgIFBvc2l0aW9u
IHJhbmdlU3RhcnQoc2NvcGUsIDApOwotICAgIFJlZlB0cjxSYW5nZT4gc3RhcnRSYW5nZSA9IFJh
bmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgcmFuZ2VTdGFydCwgcmFuZ2VDb21wbGlhbnRFcXVpdmFs
ZW50KHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiBl
bmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgcmFuZ2VTdGFydCwgcmFuZ2VDb21w
bGlhbnRFcXVpdmFsZW50KHZpc2libGVFbmQuZGVlcEVxdWl2YWxlbnQoKSkpOworICAgIFJlZlB0
cjxSYW5nZT4gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgcmFuZ2VTdGFy
dCwgdmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCkpOworICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50
KCksIHJhbmdlU3RhcnQsIHZpc2libGVFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3Jl
ZEVxdWl2YWxlbnQoKSk7CiAgICAgaW50IHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKHN0YXJ0UmFuZ2UuZ2V0KCksIHRydWUpOwogICAgIGludCBlbmRJbmRleCA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UuZ2V0KCksIHRydWUpOwogICAgIApJbmRleDog
V2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCShyZXZpc2lvbiA3MzUyNykK
KysrIFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNlcnRO
b2RlQXQoCiAgICAgQVNTRVJUKGlzRWRpdGFibGVQb3NpdGlvbihlZGl0aW5nUG9zaXRpb24pKTsK
ICAgICAvLyBGb3IgZWRpdGluZyBwb3NpdGlvbnMgbGlrZSBbdGFibGUsIDBdLCBpbnNlcnQgYmVm
b3JlIHRoZSB0YWJsZSwKICAgICAvLyBsaWtld2lzZSBmb3IgcmVwbGFjZWQgZWxlbWVudHMsIGJy
cywgZXRjLgotICAgIFBvc2l0aW9uIHAgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoZWRpdGlu
Z1Bvc2l0aW9uKTsKKyAgICBQb3NpdGlvbiBwID0gZWRpdGluZ1Bvc2l0aW9uLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpOwogICAgIE5vZGUqIHJlZkNoaWxkID0gcC5ub2RlKCk7CiAgICAgaW50
IG9mZnNldCA9IHAuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICAKQEAgLTkwMCwxMyAr
OTAwLDEzIEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGgKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgc3RhcnRJbmRleCA9IDA7CiAgICAgICAgICAgICBpZiAoc3Rh
cnRJblBhcmFncmFwaCkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc3RhcnRSYW5n
ZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHN0
YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKSksIHJhbmdlQ29tcGxpYW50RXF1
aXZhbGVudCh2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKSkpOworICAgICAgICAgICAgICAg
IFJlZlB0cjxSYW5nZT4gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3Rh
cnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZh
bGVudCgpLCB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2
YWxlbnQoKSk7CiAgICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgoc3RhcnRSYW5nZS5nZXQoKSwgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGVuZEluZGV4ID0gMDsKICAgICAgICAgICAgIGlmIChlbmRJblBhcmFncmFwaCkgewot
ICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRv
Y3VtZW50KCksIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChzdGFydE9mUGFyYWdyYXBoVG9Nb3Zl
LmRlZXBFcXVpdmFsZW50KCkpLCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQodmlzaWJsZUVuZC5k
ZWVwRXF1aXZhbGVudCgpKSk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBlbmRSYW5n
ZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVw
RXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2aXNpYmxlRW5kLmRlZXBF
cXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwogICAgICAgICAgICAgICAg
IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRSYW5nZS5nZXQoKSwgdHJ1
ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTkyMSw4ICs5MjEsOCBAQCB2b2lkIENv
bXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAgICAgUG9zaXRpb24gZW5kID0gZW5k
T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS51cHN0cmVhbSgpOwogICAgIAogICAg
IC8vIHN0YXJ0IGFuZCBlbmQgY2FuJ3QgYmUgdXNlZCBkaXJlY3RseSB0byBjcmVhdGUgYSBSYW5n
ZTsgdGhleSBhcmUgImVkaXRpbmcgcG9zaXRpb25zIgotICAgIFBvc2l0aW9uIHN0YXJ0UmFuZ2VD
b21wbGlhbnQgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoc3RhcnQpOwotICAgIFBvc2l0aW9u
IGVuZFJhbmdlQ29tcGxpYW50ID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGVuZCk7CisgICAg
UG9zaXRpb24gc3RhcnRSYW5nZUNvbXBsaWFudCA9IHN0YXJ0LnBhcmVudEFuY2hvcmVkRXF1aXZh
bGVudCgpOworICAgIFBvc2l0aW9uIGVuZFJhbmdlQ29tcGxpYW50ID0gZW5kLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQubm9kZSgpLCBzdGFydFJhbmdlQ29tcGxp
YW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJhbmdlQ29tcGxpYW50Lm5vZGUoKSwg
ZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CiAKICAgICAvLyBG
SVhNRTogVGhpcyBpcyBhbiBpbmVmZmljaWVudCB3YXkgdG8gcHJlc2VydmUgc3R5bGUgb24gbm9k
ZXMgaW4gdGhlIHBhcmFncmFwaCB0byBtb3ZlLiBJdApAQCAtOTY5LDcgKzk2OSw3IEBAIHZvaWQg
Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGgKICAgICAgICAgdXBkYXRlTGF5b3V0
KCk7CiAgICAgfQogICAgICAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0VG9EZXN0aW5hdGlv
blJhbmdlKFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgUG9zaXRpb24oZG9jdW1lbnQoKSwgMCks
IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChkZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpKSkp
OworICAgIFJlZlB0cjxSYW5nZT4gc3RhcnRUb0Rlc3RpbmF0aW9uUmFuZ2UoUmFuZ2U6OmNyZWF0
ZShkb2N1bWVudCgpLCBQb3NpdGlvbihkb2N1bWVudCgpLCAwKSwgZGVzdGluYXRpb24uZGVlcEVx
dWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSkpOwogICAgIGRlc3RpbmF0aW9u
SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0VG9EZXN0aW5hdGlvblJhbmdl
LmdldCgpLCB0cnVlKTsKICAgICAKICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oZGVzdGluYXRpb24p
OwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2
aXNpb24gNzM1MjcpCisrKyBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NiwxNCArMjU2LDE0IEBAIHZvaWQgRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZDo6aW5pdGlhbGl6ZVAKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICAvLyBX
ZSBtdXN0IHBhc3MgdGhlIHBvc2l0aW9ucyB0aHJvdWdoIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVu
dCwgc2luY2Ugc29tZSBlZGl0aW5nIHBvc2l0aW9ucworICAgIC8vIFdlIG11c3QgcGFzcyBjYWxs
IHBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCBvbiB0aGUgcG9zaXRpb25zIHNpbmNlIHNvbWUgZWRp
dGluZyBwb3NpdGlvbnMKICAgICAvLyB0aGF0IGFwcGVhciBpbnNpZGUgdGhlaXIgbm9kZXMgYXJl
bid0IHJlYWxseSBpbnNpZGUgdGhlbS4gIFtociwgMF0gaXMgb25lIGV4YW1wbGUuCi0gICAgLy8g
RklYTUU6IHJhbmdlQ29tcGxhaW50RXF1aXZhbGVudCBzaG91bGQgZXZlbnR1YWxseSBiZSBtb3Zl
ZCBpbnRvIGVuY2xvc2luZyBlbGVtZW50IGdldHRlcnMKKyAgICAvLyBGSVhNRTogcGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50IHNob3VsZCBldmVudHVhbGx5IGJlIG1vdmVkIGludG8gZW5jbG9zaW5n
IGVsZW1lbnQgZ2V0dGVycwogICAgIC8vIGxpa2UgdGhlIG9uZSBiZWxvdywgc2luY2UgZWRpdGlu
ZyBmdW5jdGlvbnMgc2hvdWxkIG9idmlvdXNseSBhY2NlcHQgZWRpdGluZyBwb3NpdGlvbnMuCiAg
ICAgLy8gRklYTUU6IFBhc3NpbmcgZmFsc2UgdG8gZW5jbG9zaW5nTm9kZU9mVHlwZSB0ZWxscyBp
dCB0aGF0IGl0J3MgT0sgdG8gcmV0dXJuIGEgbm9uLWVkaXRhYmxlCiAgICAgLy8gbm9kZS4gIFRo
aXMgd2FzIGRvbmUgdG8gbWF0Y2ggZXhpc3RpbmcgYmVoYXZpb3IsIGJ1dCBpdCBzZWVtcyB3cm9u
Zy4KLSAgICBtX3N0YXJ0QmxvY2sgPSBlbmNsb3NpbmdOb2RlT2ZUeXBlKHJhbmdlQ29tcGxpYW50
RXF1aXZhbGVudChtX2Rvd25zdHJlYW1TdGFydCksICZpc0Jsb2NrLCBmYWxzZSk7Ci0gICAgbV9l
bmRCbG9jayA9IGVuY2xvc2luZ05vZGVPZlR5cGUocmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KG1f
dXBzdHJlYW1FbmQpLCAmaXNCbG9jaywgZmFsc2UpOworICAgIG1fc3RhcnRCbG9jayA9IGVuY2xv
c2luZ05vZGVPZlR5cGUobV9kb3duc3RyZWFtU3RhcnQucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCksICZpc0Jsb2NrLCBmYWxzZSk7CisgICAgbV9lbmRCbG9jayA9IGVuY2xvc2luZ05vZGVPZlR5
cGUobV91cHN0cmVhbUVuZC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgJmlzQmxvY2ssIGZh
bHNlKTsKIH0KIAogdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpzYXZlVHlwaW5nU3R5bGVT
dGF0ZSgpCkBAIC02MDksOCArNjA5LDggQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpt
ZXJnZVBhcmFncgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxSYW5n
ZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHJhbmdlQ29tcGxpYW50RXF1aXZh
bGVudChzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkpLCByYW5nZUNvbXBs
aWFudEVxdWl2YWxlbnQoZW5kT2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKSkpOwot
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VUb0JlUmVwbGFjZWQgPSBSYW5nZTo6Y3JlYXRlKGRvY3Vt
ZW50KCksIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVp
dmFsZW50KCkpLCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQobWVyZ2VEZXN0aW5hdGlvbi5kZWVw
RXF1aXZhbGVudCgpKSk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
ZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpLCBlbmRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVu
dCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
VG9CZVJlcGxhY2VkID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBtZXJnZURlc3RpbmF0aW9u
LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIG1lcmdlRGVzdGlu
YXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiAgICAg
aWYgKCFkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y2xpZW50KCktPnNob3VsZE1vdmVS
YW5nZUFmdGVyRGVsZXRlKHJhbmdlLmdldCgpLCByYW5nZVRvQmVSZXBsYWNlZC5nZXQoKSkpCiAg
ICAgICAgIHJldHVybjsKICAgICAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiA3MzUyNykK
KysrIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzUsNyAr
NjM1LDcgQEAgV3JpdGluZ0RpcmVjdGlvbiBFZGl0b3I6OnRleHREaXJlY3Rpb25GbwogICAgIGlm
IChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpKSB7CiAgICAgICAgIGVuZCA9IG1fZnJh
bWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5lbmQoKS51cHN0cmVhbSgpOwogCi0gICAgICAg
IE5vZGUqIHBhc3RMYXN0ID0gUmFuZ2U6OmNyZWF0ZShtX2ZyYW1lLT5kb2N1bWVudCgpLCByYW5n
ZUNvbXBsaWFudEVxdWl2YWxlbnQocG9zaXRpb24pLCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQo
ZW5kKSktPnBhc3RMYXN0Tm9kZSgpOworICAgICAgICBOb2RlKiBwYXN0TGFzdCA9IFJhbmdlOjpj
cmVhdGUobV9mcmFtZS0+ZG9jdW1lbnQoKSwgcG9zaXRpb24ucGFyZW50QW5jaG9yZWRFcXVpdmFs
ZW50KCksIGVuZC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSktPnBhc3RMYXN0Tm9kZSgpOwog
ICAgICAgICBmb3IgKE5vZGUqIG4gPSBub2RlOyBuICYmIG4gIT0gcGFzdExhc3Q7IG4gPSBuLT50
cmF2ZXJzZU5leHROb2RlKCkpIHsKICAgICAgICAgICAgIGlmICghbi0+aXNTdHlsZWRFbGVtZW50
KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xNzc0LDcgKzE3NzQsNyBAQCB2b2lk
IEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvCiAgICAgICAgIGlmIChwb3NpdGlv
bi5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIFBvc2l0
aW9uIHJhbmdlQ29tcGxpYW50UG9zaXRpb24gPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQocG9z
aXRpb24pOworICAgICAgICBQb3NpdGlvbiByYW5nZUNvbXBsaWFudFBvc2l0aW9uID0gcG9zaXRp
b24ucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiAgICAgICAgIHNwZWxsaW5nU2VhcmNoUmFu
Z2UtPnNldFN0YXJ0KHJhbmdlQ29tcGxpYW50UG9zaXRpb24ubm9kZSgpLCByYW5nZUNvbXBsaWFu
dFBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVjKTsKICAgICAgICAgc3RhcnRl
ZFdpdGhTZWxlY3Rpb24gPSBmYWxzZTsgLy8gd29uJ3QgbmVlZCB0byB3cmFwCiAgICAgfQpJbmRl
eDogV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAkocmV2aXNpb24g
NzM1MjcpCisrKyBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBJbnNlcnRMaW5lQnJlYWtDb21tYW5k
OjpzaG91bGRVc2VCcgogICAgIC8vIEFuIGVkaXRpbmcgcG9zaXRpb24gbGlrZSBbaW5wdXQsIDBd
IGFjdHVhbGx5IHJlZmVycyB0byB0aGUgcG9zaXRpb24gYmVmb3JlCiAgICAgLy8gdGhlIGlucHV0
IGVsZW1lbnQsIGFuZCBpbiB0aGF0IGNhc2Ugd2UgbmVlZCB0byBjaGVjayB0aGUgaW5wdXQgZWxl
bWVudCdzCiAgICAgLy8gcGFyZW50J3MgcmVuZGVyZXIuCi0gICAgUG9zaXRpb24gcChyYW5nZUNv
bXBsaWFudEVxdWl2YWxlbnQoaW5zZXJ0aW9uUG9zKSk7CisgICAgUG9zaXRpb24gcChpbnNlcnRp
b25Qb3MucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwogICAgIHJldHVybiBwLm5vZGUoKS0+
cmVuZGVyZXIoKSAmJiAhcC5ub2RlKCktPnJlbmRlcmVyKCktPnN0eWxlKCktPnByZXNlcnZlTmV3
bGluZSgpOwogfQogCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJh
dG9yQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFn
cmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCShyZXZpc2lvbiA3MzUyNykKKysrIFdlYkNvcmUvZWRp
dGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU5LDggKzE1OSw4IEBAIHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6
ZG8KICAgICAgICAgYWZmaW5pdHkgPSBlbmRpbmdTZWxlY3Rpb24oKS5hZmZpbml0eSgpOwogICAg
IH0KICAgICAKLSAgICAvLyBGSVhNRTogVGhlIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudCBjb252
ZXJzaW9uIG5lZWRzIHRvIGJlIG1vdmVkIGludG8gZW5jbG9zaW5nQmxvY2suCi0gICAgTm9kZSog
c3RhcnRCbG9ja05vZGUgPSBlbmNsb3NpbmdCbG9jayhyYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQo
aW5zZXJ0aW9uUG9zaXRpb24pLm5vZGUoKSk7CisgICAgLy8gRklYTUU6IFRoZSBwYXJlbnRBbmNo
b3JlZEVxdWl2YWxlbnQgY29udmVyc2lvbiBuZWVkcyB0byBiZSBtb3ZlZCBpbnRvIGVuY2xvc2lu
Z0Jsb2NrLgorICAgIE5vZGUqIHN0YXJ0QmxvY2tOb2RlID0gZW5jbG9zaW5nQmxvY2soaW5zZXJ0
aW9uUG9zaXRpb24ucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkuY29udGFpbmVyTm9kZSgpKTsK
ICAgICBQb3NpdGlvbiBjYW5vbmljYWxQb3MgPSBWaXNpYmxlUG9zaXRpb24oaW5zZXJ0aW9uUG9z
aXRpb24pLmRlZXBFcXVpdmFsZW50KCk7CiAgICAgRWxlbWVudCogc3RhcnRCbG9jayA9IHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihzdGFydEJsb2NrTm9kZSk7CiAgICAgaWYgKCFzdGFydEJsb2NrTm9k
ZQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShy
ZXZpc2lvbiA3MzUyNykKKysrIFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2NSw3ICs1NjUsNyBAQCBzdGF0aWMgYm9vbCBoYW5k
bGVTdHlsZVNwYW5zQmVmb3JlSW5zZXJ0CiAgICAgTm9kZSogc291cmNlRG9jdW1lbnRTdHlsZVNw
YW4gPSB0b3BOb2RlOwogICAgIFJlZlB0cjxOb2RlPiBjb3BpZWRSYW5nZVN0eWxlU3BhbiA9IHNv
dXJjZURvY3VtZW50U3R5bGVTcGFuLT5maXJzdENoaWxkKCk7CiAKLSAgICBSZWZQdHI8RWRpdGlu
Z1N0eWxlPiBzdHlsZUF0SW5zZXJ0aW9uUG9zID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocmFuZ2VD
b21wbGlhbnRFcXVpdmFsZW50KGluc2VydGlvblBvcykpOworICAgIFJlZlB0cjxFZGl0aW5nU3R5
bGU+IHN0eWxlQXRJbnNlcnRpb25Qb3MgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShpbnNlcnRpb25Q
b3MucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwogICAgIFN0cmluZyBzdHlsZVRleHQgPSBz
dHlsZUF0SW5zZXJ0aW9uUG9zLT5zdHlsZSgpLT5jc3NUZXh0KCk7CiAKICAgICAvLyBGSVhNRTog
VGhpcyBzdHJpbmcgY29tcGFyaXNvbiBpcyBhIG5haXZlIHdheSBvZiBjb21wYXJpbmcgdHdvIHN0
eWxlcy4KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCShyZXZpc2lvbiA3MzUy
NykKKysrIFdlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01OTcsOCArNTk3LDggQEAgUGFzc1JlZlB0cjxSYW5nZT4gbWFrZVJhbmdlKGNvbnN0IFZp
c2libAogICAgIGlmIChzdGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIAotICAgIFBvc2l0aW9uIHMgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQo
c3RhcnQpOwotICAgIFBvc2l0aW9uIGUgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoZW5kKTsK
KyAgICBQb3NpdGlvbiBzID0gc3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKTsKKyAgICBQb3NpdGlvbiBlID0gZW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50
QW5jaG9yZWRFcXVpdmFsZW50KCk7CiAgICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUocy5ub2RlKCkt
PmRvY3VtZW50KCksIHMubm9kZSgpLCBzLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGUubm9k
ZSgpLCBlLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwogfQogCkBAIC02MTgsNyArNjE4LDcg
QEAgYm9vbCBzZXRTdGFydChSYW5nZSAqciwgY29uc3QgVmlzaWJsZVBvcwogewogICAgIGlmICgh
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFBvc2l0aW9uIHAgPSByYW5nZUNvbXBsaWFu
dEVxdWl2YWxlbnQodmlzaWJsZVBvc2l0aW9uKTsKKyAgICBQb3NpdGlvbiBwID0gdmlzaWJsZVBv
c2l0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiAgICAg
aW50IGNvZGUgPSAwOwogICAgIHItPnNldFN0YXJ0KHAubm9kZSgpLCBwLmRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0KCksIGNvZGUpOwogICAgIHJldHVybiBjb2RlID09IDA7CkBAIC02MjgsNyArNjI4
LDcgQEAgYm9vbCBzZXRFbmQoUmFuZ2UgKnIsIGNvbnN0IFZpc2libGVQb3NpdAogewogICAgIGlm
ICghcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFBvc2l0aW9uIHAgPSByYW5nZUNvbXBs
aWFudEVxdWl2YWxlbnQodmlzaWJsZVBvc2l0aW9uKTsKKyAgICBQb3NpdGlvbiBwID0gdmlzaWJs
ZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiAg
ICAgaW50IGNvZGUgPSAwOwogICAgIHItPnNldEVuZChwLm5vZGUoKSwgcC5kZXByZWNhdGVkRWRp
dGluZ09mZnNldCgpLCBjb2RlKTsKICAgICByZXR1cm4gY29kZSA9PSAwOwpJbmRleDogV2ViQ29y
ZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRp
dGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAkocmV2aXNpb24gNzM1MjcpCisrKyBXZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw4ICsxMjEs
OCBAQCBQYXNzUmVmUHRyPFJhbmdlPiBWaXNpYmxlU2VsZWN0aW9uOjpmaXJzCiB7CiAgICAgaWYg
KGlzTm9uZSgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdl
Q29tcGxpYW50RXF1aXZhbGVudChtX3N0YXJ0KTsKLSAgICBQb3NpdGlvbiBlbmQgPSByYW5nZUNv
bXBsaWFudEVxdWl2YWxlbnQobV9lbmQpOworICAgIFBvc2l0aW9uIHN0YXJ0ID0gbV9zdGFydC5w
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKKyAgICBQb3NpdGlvbiBlbmQgPSBtX2VuZC5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZShzdGFydC5u
b2RlKCktPmRvY3VtZW50KCksIHN0YXJ0LCBlbmQpOwogfQogCkBAIC0xNDYsNyArMTQ2LDcgQEAg
UGFzc1JlZlB0cjxSYW5nZT4gVmlzaWJsZVNlbGVjdGlvbjo6dG9ObwogICAgICAgICAvLyBJZiB0
aGUgc2VsZWN0aW9uIGlzIGEgY2FyZXQsIG1vdmUgdGhlIHJhbmdlIHN0YXJ0IHVwc3RyZWFtLiBU
aGlzIGhlbHBzIHVzIG1hdGNoCiAgICAgICAgIC8vIHRoZSBjb252ZW50aW9ucyBvZiB0ZXh0IGVk
aXRvcnMgdGVzdGVkLCB3aGljaCBtYWtlIHN0eWxlIGRldGVybWluYXRpb25zIGJhc2VkCiAgICAg
ICAgIC8vIG9uIHRoZSBjaGFyYWN0ZXIgYmVmb3JlIHRoZSBjYXJldCwgaWYgYW55LiAKLSAgICAg
ICAgcyA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChtX3N0YXJ0LnVwc3RyZWFtKCkpOworICAg
ICAgICBzID0gbV9zdGFydC51cHN0cmVhbSgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwog
ICAgICAgICBlID0gczsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBJZiB0aGUgc2VsZWN0aW9u
IGlzIGEgcmFuZ2UsIHNlbGVjdCB0aGUgbWluaW11bSByYW5nZSB0aGF0IGVuY29tcGFzc2VzIHRo
ZSBzZWxlY3Rpb24uCkBAIC0xNzAsOCArMTcwLDggQEAgUGFzc1JlZlB0cjxSYW5nZT4gVmlzaWJs
ZVNlbGVjdGlvbjo6dG9ObwogICAgICAgICAgICAgcyA9IGU7CiAgICAgICAgICAgICBlID0gdG1w
OwogICAgICAgICB9Ci0gICAgICAgIHMgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQocyk7Ci0g
ICAgICAgIGUgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoZSk7CisgICAgICAgIHMgPSBzLnBh
cmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOworICAgICAgICBlID0gZS5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKTsKICAgICB9CiAKICAgICAvLyBWaXNpYmxlU2VsZWN0aW9ucyBhcmUgc3VwcG9z
ZWQgdG8gYWx3YXlzIGJlIHZhbGlkLiAgVGhpcyBjb25zdHJ1Y3RvciB3aWxsIEFTU0VSVApAQCAt
MjA0LDcgKzIwNCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiBtYWtlU2VhcmNoUmFuZ2UK
ICAgICBSZWZQdHI8UmFuZ2U+IHNlYXJjaFJhbmdlKFJhbmdlOjpjcmVhdGUoZCkpOwogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogCi0gICAgUG9zaXRpb24gc3RhcnQocmFuZ2VDb21wbGlhbnRF
cXVpdmFsZW50KHBvcykpOworICAgIFBvc2l0aW9uIHN0YXJ0KHBvcy5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKSk7CiAgICAgc2VhcmNoUmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cyhib3VuZGFy
eSwgZWMpOwogICAgIHNlYXJjaFJhbmdlLT5zZXRTdGFydChzdGFydC5ub2RlKCksIHN0YXJ0LmRl
cHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVjKTsKIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL2h0
bWxlZGl0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcu
Y3BwCShyZXZpc2lvbiA3MzUyNykKKysrIFdlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzMiw1NyArMzMyLDkgQEAgTm9kZSogZW5jbG9zaW5nQmxvY2so
Tm9kZSogbm9kZSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGVuY2xvc2luZ05v
ZGVPZlR5cGUoUG9zaXRpb24obm9kZSwgMCksIGlzQmxvY2spKTsKIH0KIAotLy8gSW50ZXJuYWxs
eSBlZGl0aW5nIHVzZXMgImludmFsaWQiIHBvc2l0aW9ucyBmb3IgaGlzdG9yaWNhbCByZWFzb25z
LiAgRm9yCi0vLyBleGFtcGxlLCBpbiA8ZGl2PjxpbWcgLz48L2Rpdj4sIEVkaXRpbmcgbWlnaHQg
dXNlIChpbWcsIDEpIGZvciB0aGUgcG9zaXRpb24KLS8vIGFmdGVyIDxpbWc+LCBidXQgd2UgaGF2
ZSB0byBjb252ZXJ0IHRoYXQgdG8gKGRpdiwgMSkgYmVmb3JlIGhhbmRpbmcgdGhlCi0vLyBwb3Np
dGlvbiB0byBhIFJhbmdlIG9iamVjdC4gIElkZWFsbHkgYWxsIGludGVybmFsIHBvc2l0aW9ucyBz
aG91bGQKLS8vIGJlICJyYW5nZSBjb21wbGlhbnQiIGZvciBzaW1wbGljaXR5LgotUG9zaXRpb24g
cmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGNvbnN0IFBvc2l0aW9uJiBwb3MpCi17Ci0gICAgaWYg
KHBvcy5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFBvc2l0aW9uKCk7Ci0KLSAgICBOb2RlKiBu
b2RlID0gcG9zLm5vZGUoKTsKLQotICAgIGlmIChwb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KSA8PSAwKSB7Ci0gICAgICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCkgJiYgKGVkaXRpbmdJZ25v
cmVzQ29udGVudChub2RlKSB8fCBpc1RhYmxlRWxlbWVudChub2RlKSkpCi0gICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobm9kZSk7Ci0gICAgICAgIHJldHVybiBQ
b3NpdGlvbihub2RlLCAwKTsKLSAgICB9Ci0KLSAgICBpZiAobm9kZS0+b2Zmc2V0SW5DaGFyYWN0
ZXJzKCkpCi0gICAgICAgIHJldHVybiBQb3NpdGlvbihub2RlLCBtaW4obm9kZS0+bWF4Q2hhcmFj
dGVyT2Zmc2V0KCksIHBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKSk7Ci0KLSAgICBpbnQg
bWF4Q29tcGxpYW50T2Zmc2V0ID0gbm9kZS0+Y2hpbGROb2RlQ291bnQoKTsKLSAgICBpZiAocG9z
LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPiBtYXhDb21wbGlhbnRPZmZzZXQpIHsKLSAgICAg
ICAgaWYgKG5vZGUtPnBhcmVudE5vZGUoKSkKLSAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbklu
UGFyZW50QWZ0ZXJOb2RlKG5vZGUpOwotCi0gICAgICAgIC8vIHRoZXJlIGlzIG5vIG90aGVyIG9w
dGlvbiBhdCB0aGlzIHBvaW50IHRoYW4gdG8KLSAgICAgICAgLy8gdXNlIHRoZSBoaWdoZXN0IGFs
bG93ZWQgcG9zaXRpb24gaW4gdGhlIG5vZGUKLSAgICAgICAgcmV0dXJuIFBvc2l0aW9uKG5vZGUs
IG1heENvbXBsaWFudE9mZnNldCk7Ci0gICAgfSAKLQotICAgIC8vIEVkaXRpbmcgc2hvdWxkIG5l
dmVyIGdlbmVyYXRlIHBvc2l0aW9ucyBsaWtlIHRoaXMuCi0gICAgaWYgKChwb3MuZGVwcmVjYXRl
ZEVkaXRpbmdPZmZzZXQoKSA8IG1heENvbXBsaWFudE9mZnNldCkgJiYgZWRpdGluZ0lnbm9yZXND
b250ZW50KG5vZGUpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gbm9kZS0+cGFyZW50Tm9kZSgpID8gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobm9k
ZSkgOiBQb3NpdGlvbihub2RlLCAwKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHBvcy5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpID09IG1heENvbXBsaWFudE9mZnNldCAmJiAoZWRpdGluZ0lnbm9y
ZXNDb250ZW50KG5vZGUpIHx8IGlzVGFibGVFbGVtZW50KG5vZGUpKSkKLSAgICAgICAgcmV0dXJu
IHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUobm9kZSk7Ci0gICAgCi0gICAgcmV0dXJuIFBvc2l0
aW9uKHBvcyk7Ci19Ci0KLVBvc2l0aW9uIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChjb25zdCBW
aXNpYmxlUG9zaXRpb24mIHZwb3MpCi17Ci0gICAgcmV0dXJuIHJhbmdlQ29tcGxpYW50RXF1aXZh
bGVudCh2cG9zLmRlZXBFcXVpdmFsZW50KCkpOwotfQotCiAvLyBUaGlzIG1ldGhvZCBpcyB1c2Vk
IHRvIGNyZWF0ZSBwb3NpdGlvbnMgaW4gdGhlIERPTS4gSXQgcmV0dXJucyB0aGUgbWF4aW11bSB2
YWxpZCBvZmZzZXQKIC8vIGluIGEgbm9kZS4gIEl0IHJldHVybnMgMSBmb3Igc29tZSBlbGVtZW50
cyBldmVuIHRob3VnaCB0aGV5IGRvIG5vdCBoYXZlIGNoaWxkcmVuLCB3aGljaAotLy8gY3JlYXRl
cyB0ZWNobmljYWxseSBpbnZhbGlkIERPTSBQb3NpdGlvbnMuICBCZSBzdXJlIHRvIGNhbGwgcmFu
Z2VDb21wbGlhbnRFcXVpdmFsZW50CisvLyBjcmVhdGVzIHRlY2huaWNhbGx5IGludmFsaWQgRE9N
IFBvc2l0aW9ucy4gIEJlIHN1cmUgdG8gY2FsbCBwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQKIC8v
IG9uIGEgUG9zaXRpb24gYmVmb3JlIHVzaW5nIGl0IHRvIGNyZWF0ZSBhIERPTSBSYW5nZSwgb3Ig
YW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duLgogaW50IGxhc3RPZmZzZXRGb3JFZGl0aW5nKGNv
bnN0IE5vZGUqIG5vZGUpCiB7CkBAIC0xMDgxLDcgKzEwMzMsNyBAQCBpbnQgaW5kZXhGb3JWaXNp
YmxlUG9zaXRpb24oY29uc3QgVmlzaWJsCiAgICAgaWYgKHZpc2libGVQb3NpdGlvbi5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgUG9zaXRpb24gcCh2aXNpYmxlUG9zaXRpb24uZGVl
cEVxdWl2YWxlbnQoKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
cC5ub2RlKCktPmRvY3VtZW50KCksIFBvc2l0aW9uKHAubm9kZSgpLT5kb2N1bWVudCgpLCAwKSwg
cmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHApKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
UmFuZ2U6OmNyZWF0ZShwLm5vZGUoKS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24ocC5ub2RlKCktPmRv
Y3VtZW50KCksIDApLCBwLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKICAgICByZXR1cm4g
VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7CiB9CiAKSW5kZXg6
IFdlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRp
dGluZy9odG1sZWRpdGluZy5oCShyZXZpc2lvbiA3MzUyNykKKysrIFdlYkNvcmUvZWRpdGluZy9o
dG1sZWRpdGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsOSArMTAxLDYgQEAgYm9vbCBpc05v
ZGVJblRleHRGb3JtQ29udHJvbChOb2RlKiBub2RlKQogICAgIAogLy8gRnVuY3Rpb25zIHJldHVy
bmluZyBQb3NpdGlvbgogICAgIAotUG9zaXRpb24gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGNv
bnN0IFBvc2l0aW9uJik7Ci1Qb3NpdGlvbiByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJik7Ci0gICAgCiBQb3NpdGlvbiBuZXh0Q2FuZGlkYXRlKGNvbnN0IFBv
c2l0aW9uJik7CiBQb3NpdGlvbiBwcmV2aW91c0NhbmRpZGF0ZShjb25zdCBQb3NpdGlvbiYpOwog
ICAgIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkocmV2aXNpb24gNzM1MjcpCisr
KyBXZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3
LDggKzU3LDggQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0JvdW5kYXJ5KAogICAg
ICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAKICAgICBEb2N1bWVudCogZCA9IGJvdW5k
YXJ5LT5kb2N1bWVudCgpOwotICAgIFBvc2l0aW9uIHN0YXJ0ID0gcmFuZ2VDb21wbGlhbnRFcXVp
dmFsZW50KFBvc2l0aW9uKGJvdW5kYXJ5LCAwKSk7Ci0gICAgUG9zaXRpb24gZW5kID0gcmFuZ2VD
b21wbGlhbnRFcXVpdmFsZW50KHBvcyk7CisgICAgUG9zaXRpb24gc3RhcnQgPSBQb3NpdGlvbihi
b3VuZGFyeSwgMCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CisgICAgUG9zaXRpb24gZW5k
ID0gcG9zLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIFJlZlB0cjxSYW5nZT4gc2Vh
cmNoUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGQpOwogICAgIAogICAgIFZlY3RvcjxVQ2hhciwgMTAy
ND4gc3RyaW5nOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4
dEJvdW5kYXJ5KGNvbnMKIAogICAgIERvY3VtZW50KiBkID0gYm91bmRhcnktPmRvY3VtZW50KCk7
CiAgICAgUmVmUHRyPFJhbmdlPiBzZWFyY2hSYW5nZShkLT5jcmVhdGVSYW5nZSgpKTsKLSAgICBQ
b3NpdGlvbiBzdGFydChyYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQocG9zKSk7CisgICAgUG9zaXRp
b24gc3RhcnQocG9zLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKIAogICAgIFZlY3RvcjxV
Q2hhciwgMTAyND4gc3RyaW5nOwogICAgIHVuc2lnbmVkIHByZWZpeExlbmd0aCA9IDA7CkluZGV4
OiBXZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvRE9NU2VsZWN0aW9uLmNwcAkocmV2aXNpb24gNzM1MjcpCisrKyBXZWJDb3JlL3BhZ2UvRE9N
U2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsMjMgKzc2LDIzIEBAIGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIERPTVNlbGVjdGlvbjo6dmkKIHN0YXRpYyBQb3NpdGlvbiBhbmNob3JQ
b3NpdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiB7CiAgICAgUG9zaXRp
b24gYW5jaG9yID0gc2VsZWN0aW9uLmlzQmFzZUZpcnN0KCkgPyBzZWxlY3Rpb24uc3RhcnQoKSA6
IHNlbGVjdGlvbi5lbmQoKTsKLSAgICByZXR1cm4gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGFu
Y2hvcik7CisgICAgcmV0dXJuIGFuY2hvci5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKIH0K
IAogc3RhdGljIFBvc2l0aW9uIGZvY3VzUG9zaXRpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
c2VsZWN0aW9uKQogewogICAgIFBvc2l0aW9uIGZvY3VzID0gc2VsZWN0aW9uLmlzQmFzZUZpcnN0
KCkgPyBzZWxlY3Rpb24uZW5kKCkgOiBzZWxlY3Rpb24uc3RhcnQoKTsKLSAgICByZXR1cm4gcmFu
Z2VDb21wbGlhbnRFcXVpdmFsZW50KGZvY3VzKTsKKyAgICByZXR1cm4gZm9jdXMucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCk7CiB9CiAKIHN0YXRpYyBQb3NpdGlvbiBiYXNlUG9zaXRpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewotICAgIHJldHVybiByYW5nZUNvbXBs
aWFudEVxdWl2YWxlbnQoc2VsZWN0aW9uLmJhc2UoKSk7CisgICAgcmV0dXJuIHNlbGVjdGlvbi5i
YXNlKCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiB9CiAKIHN0YXRpYyBQb3NpdGlvbiBl
eHRlbnRQb3NpdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiB7Ci0gICAg
cmV0dXJuIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChzZWxlY3Rpb24uZXh0ZW50KCkpOworICAg
IHJldHVybiBzZWxlY3Rpb24uZXh0ZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiB9
CiAKIE5vZGUqIERPTVNlbGVjdGlvbjo6YW5jaG9yTm9kZSgpIGNvbnN0CkluZGV4OiBXZWJLaXQv
bWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gNzM1MjcpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE2IEBACisyMDEwLTEyLTA4ICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRp
bmcgdG8gdXNlIFBvc2l0aW9uOjpwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQgaW5zdGVhZCBvZgor
ICAgICAgICB0aGUgb2xkIGh0bWxlZGl0aW5nIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudC4KKwor
ICAgICAgICByZW1vdmUgcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50IGFuZCByZXBsYWNlIGl0IHdp
dGggUG9zaXRpb24gbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjUwNTcKKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAg
ICAgICgtW1dlYkZyYW1lIF9zbWFydERlbGV0ZVJhbmdlRm9yUHJvcG9zZWRSYW5nZTpdKToKKwog
MjAxMC0xMi0wNyAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgSm9obiBTdWxsaXZhbi4KSW5kZXg6IFdlYktpdC9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0JKHJldmlzaW9uIDczNTI3KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC04MjAsOCArODIwLDggQEAgLSAoRE9NUmFuZ2UgKilfc21hcnREZWxl
dGVSYW5nZUZvclByb3BvcwogICAgIGlmIChuZXdFbmQuaXNOdWxsKCkpCiAgICAgICAgIG5ld0Vu
ZCA9IGVuZDsKIAotICAgIG5ld1N0YXJ0ID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KG5ld1N0
YXJ0KTsKLSAgICBuZXdFbmQgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQobmV3RW5kKTsKKyAg
ICBuZXdTdGFydCA9IG5ld1N0YXJ0LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOworICAgIG5l
d0VuZCA9IG5ld0VuZC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKIAogICAgIFJlZlB0cjxS
YW5nZT4gcmFuZ2UgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpLT5jcmVhdGVSYW5n
ZSgpOwogICAgIGludCBleGNlcHRpb24gPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75931</attachid>
            <date>2010-12-08 11:09:28 -0800</date>
            <delta_ts>2011-01-05 15:28:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-25057-20101208110926.patch</filename>
            <type>text/plain</type>
            <size>28296</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzUyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTkgQEAKKzIwMTAtMTItMDggIExldmkgV2VpbnRyYXViICA8bGV2aXdAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZXBsYWNlZCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQgd2l0aCBQb3NpdGlvbjo6cGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50CisgICAgICAgIGFuZCBzaW1wbGlmaWVkIHRoZSBsb2dpYyBhIGJpdC4g
VW5mb3J0dW5hdGVseSwgVGFibGVzIGFuZCBzb21lIGxlZ2FjeQorICAgICAgICBlZGl0aW5nIHBv
c2l0aW9ucyBzdGlsbCBuZWVkIHRvIGJlIGhhbmRsZWQgc3BlY2lmaWNhbGx5LgorCisgICAgICAg
IHJlbW92ZSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQgYW5kIHJlcGxhY2UgaXQgd2l0aCBQb3Np
dGlvbiBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNTA1NworCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcyB0aGlzIGlzIGEgcmVmYWN0b3Ig
dGhhdCBkb2Vzbid0IGNoYW5nZSBiZWhhdmlvci4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6Y2FyZXRSYW5nZUZyb21Qb2ludCk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQpOgorICAg
ICAgICAqIGRvbS9Qb3NpdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tT
dHlsZSk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5zZXJ0Tm9kZUF0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyk6CisgICAg
ICAgICogZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmluaXRpYWxpemVQb3NpdGlvbkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VQYXJhZ3JhcGhzKToK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OnRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjph
ZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGluZUJy
ZWFrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaW5lQnJlYWtDb21tYW5k
OjpzaG91bGRVc2VCcmVha0VsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRQYXJhZ3Jh
cGhTZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVN0eWxlU3BhbnNC
ZWZvcmVJbnNlcnRpb24pOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om1ha2VSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRTdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRFbmQpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJs
ZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpmaXJz
dFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OnRvTm9ybWFsaXpl
ZFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VTZWFyY2hSYW5nZSk6CisgICAgICAgICog
ZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbmRleEZvclZpc2li
bGVQb3NpdGlvbik6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5oOgorICAgICAgICAq
IGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0Jv
dW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRCb3VuZGFyeSk6CisgICAgICAgICogcGFn
ZS9ET01TZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YW5jaG9yUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Zm9jdXNQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpiYXNl
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXh0ZW50UG9zaXRpb24pOgorCiAyMDEwLTEy
LTA4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDczNTI3KQorKysg
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNTIwLDcgKzUyMCw2IEBA
IF9fWk43V2ViQ29yZTI0Y3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwRVAKIF9fWk43V2ViQ29yZTI0
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjRm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb25FUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNG5v
dGlmeUhpc3RvcnlJdGVtQ2hhbmdlZEUKLV9fWk43V2ViQ29yZTI0cmFuZ2VDb21wbGlhbnRFcXVp
dmFsZW50RVJLTlNfOFBvc2l0aW9uRQogX19aTjdXZWJDb3JlMjVIaXN0b3J5UHJvcGVydHlMaXN0
V3JpdGVyMTFyZWxlYXNlRGF0YUV2CiBfX1pON1dlYkNvcmUyNUhpc3RvcnlQcm9wZXJ0eUxpc3RX
cml0ZXIxMndyaXRlT2JqZWN0c0VSTlNfMzBCaW5hcnlQcm9wZXJ0eUxpc3RPYmplY3RTdHJlYW1F
CiBfX1pON1dlYkNvcmUyNUhpc3RvcnlQcm9wZXJ0eUxpc3RXcml0ZXIxNndyaXRlSGlzdG9yeUl0
ZW1FUk5TXzMwQmluYXJ5UHJvcGVydHlMaXN0T2JqZWN0U3RyZWFtRVBOU18xMUhpc3RvcnlJdGVt
RQpAQCAtMTEzOCw2ICsxMTM3LDcgQEAgX19aTks3V2ViQ29yZThEb2N1bWVudDRib2R5RXYKIF9f
Wk5LN1dlYkNvcmU4RG9jdW1lbnQ2ZG9tYWluRXYKIF9fWk5LN1dlYkNvcmU4SW50UG9pbnRjdjhf
TlNQb2ludEV2CiBfX1pOSzdXZWJDb3JlOFBvc2l0aW9uMTBkb3duc3RyZWFtRU5TXzI3RWRpdGlu
Z0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlRQorX19aTks3V2ViQ29yZThQb3NpdGlvbjI0cGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50RXYKIF9fWk5LN1dlYkNvcmU4UG9zaXRpb24yNWxlYWRpbmdXaGl0ZXNw
YWNlUG9zaXRpb25FTlNfOUVBZmZpbml0eUViCiBfX1pOSzdXZWJDb3JlOFBvc2l0aW9uMjZ0cmFp
bGluZ1doaXRlc3BhY2VQb3NpdGlvbkVOU185RUFmZmluaXR5RWIKIF9fWk5LN1dlYkNvcmU4UG9z
aXRpb244dXBzdHJlYW1FTlNfMjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCkluZGV4OiBX
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCShyZXZpc2lvbiA3MzUyNykKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI3OSw3ICsxMjc5LDcgQEAgUGFzc1JlZlB0cjxSYW5nZT4gRG9jdW1l
bnQ6OmNhcmV0UmFuZ2VGcgogICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgUG9zaXRpb24gcmFuZ2VDb21wbGlhbnRQb3NpdGlvbiA9IHJh
bmdlQ29tcGxpYW50RXF1aXZhbGVudCh2aXNpYmxlUG9zaXRpb24pOworICAgIFBvc2l0aW9uIHJh
bmdlQ29tcGxpYW50UG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5w
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZSh0aGlz
LCByYW5nZUNvbXBsaWFudFBvc2l0aW9uLCByYW5nZUNvbXBsaWFudFBvc2l0aW9uKTsKIH0KIApJ
bmRleDogV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L1Bvc2l0aW9uLmNwcAkocmV2aXNpb24gNzM1MjcpCisrKyBXZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw2ICsxNDYsMjcgQEAgaW50IFBvc2l0aW9uOjpjb21w
dXRlT2Zmc2V0SW5Db250YWluZXJObwogICAgIHJldHVybiAwOwogfQogCisvLyBOZWlnaGJvci1h
bmNob3JlZCBwb3NpdGlvbnMgYXJlIGludmFsaWQgRE9NIHBvc2l0aW9ucywgc28gdGhleSBuZWVk
IHRvIGJlCisvLyBmaXhlZCB1cCBiZWZvcmUgaGFuZGluZyB0aGVtIG9mZiB0byB0aGUgUmFuZ2Ug
b2JqZWN0LgorUG9zaXRpb24gUG9zaXRpb246OnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpIGNv
bnN0Cit7CisgICAgaWYgKCFtX2FuY2hvck5vZGUpCisgICAgICAgIHJldHVybiBQb3NpdGlvbigp
OworICAgIAorICAgIC8vIEhhbmRsZSBxdWlya3Mgd2l0aCB0YWJsZXMgYW5kIGxlZ2FjeSBwb3Np
dGlvbnMgb2Zmc2V0cworICAgIGlmIChtX29mZnNldCA8PSAwKSB7CisgICAgICAgIGlmIChtX2Fu
Y2hvck5vZGUtPnBhcmVudE5vZGUoKSAmJiAoZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9y
Tm9kZS5nZXQoKSkgfHwgaXNUYWJsZUVsZW1lbnQobV9hbmNob3JOb2RlLmdldCgpKSkpCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobV9hbmNob3JOb2RlLmdl
dCgpKTsKKyAgICAgICAgcmV0dXJuIFBvc2l0aW9uKG1fYW5jaG9yTm9kZSwgMCwgUG9zaXRpb25J
c09mZnNldEluQW5jaG9yKTsKKyAgICB9CisgICAgaWYgKCFtX2FuY2hvck5vZGUtPm9mZnNldElu
Q2hhcmFjdGVycygpICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCkgPT0gbV9hbmNo
b3JOb2RlLT5jaGlsZE5vZGVDb3VudCgpCisgICAgICAgICYmIChlZGl0aW5nSWdub3Jlc0NvbnRl
bnQobV9hbmNob3JOb2RlLmdldCgpKSB8fCBpc1RhYmxlRWxlbWVudChtX2FuY2hvck5vZGUuZ2V0
KCkpKSkgeworICAgICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShtX2FuY2hv
ck5vZGUuZ2V0KCkpOworICAgIH0KKworICAgIHJldHVybiBQb3NpdGlvbihjb250YWluZXJOb2Rl
KCksIGNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSwgUG9zaXRpb25Jc09mZnNldEluQW5j
aG9yKTsKK30KKwogTm9kZSogUG9zaXRpb246OmNvbXB1dGVOb2RlQmVmb3JlUG9zaXRpb24oKSBj
b25zdAogewogICAgIGlmICghbV9hbmNob3JOb2RlKQpJbmRleDogV2ViQ29yZS9kb20vUG9zaXRp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCShyZXZpc2lvbiA3MzUy
NykKKysrIFdlYkNvcmUvZG9tL1Bvc2l0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgw
LDcgQEAgcHVibGljOgogICAgIC8vIHdpbGwgcmV0dXJuIGltZy0+cGFyZW50Tm9kZSgpIGFuZCBp
bWctPm5vZGVJbmRleCgpIGZyb20gdGhlc2UgZnVuY3Rpb25zLgogICAgIE5vZGUqIGNvbnRhaW5l
ck5vZGUoKSBjb25zdDsgLy8gTlVMTCBmb3IgYSBiZWZvcmUvYWZ0ZXIgcG9zaXRpb24gYW5jaG9y
ZWQgdG8gYSBub2RlIHdpdGggbm8gcGFyZW50CiAgICAgaW50IGNvbXB1dGVPZmZzZXRJbkNvbnRh
aW5lck5vZGUoKSBjb25zdDsgIC8vIE8obikgZm9yIGJlZm9yZS9hZnRlci1hbmNob3JlZCBwb3Np
dGlvbnMsIE8oMSkgZm9yIHBhcmVudC1hbmNob3JlZCBwb3NpdGlvbnMKKyAgICBQb3NpdGlvbiBw
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSBjb25zdDsgLy8gQ29udmVuaWVuY2UgbWV0aG9kIGZv
ciBET00gcG9zaXRpb25zIHRoYXQgYWxzbyBmaXhlcyB1cCBzb21lIHBvc2l0aW9ucyBmb3IgZWRp
dGluZwogCiAgICAgLy8gSW5saW5lIE8oMSkgYWNjZXNzIGZvciBQb3NpdGlvbnMgd2hpY2ggY2Fs
bGVycyBrbm93IHRvIGJlIHBhcmVudC1hbmNob3JlZAogICAgIGludCBvZmZzZXRJbkNvbnRhaW5l
ck5vZGUoKSBjb25zdApAQCAtMTc5LDcgKzE4MCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE5v
ZGU+IG1fYW5jaG9yTm9kZTsKICAgICAvLyBtX29mZnNldCBjYW4gYmUgdGhlIG9mZnNldCBpbnNp
ZGUgbV9hbmNob3JOb2RlLCBvciBpZiBlZGl0aW5nSWdub3Jlc0NvbnRlbnQobV9hbmNob3JOb2Rl
KQogICAgIC8vIHJldHVybnMgdHJ1ZSwgdGhlbiBvdGhlciBwbGFjZXMgaW4gZWRpdGluZyB3aWxs
IHRyZWF0IG1fb2Zmc2V0ID09IDAgYXMgImJlZm9yZSB0aGUgYW5jaG9yIgotICAgIC8vIGFuZCBt
X29mZnNldCA+IDAgYXMgImFmdGVyIHRoZSBhbmNob3Igbm9kZSIuICBTZWUgcmFuZ2VDb21wbGlh
bnRFcXVpdmFsZW50IGZvciBtb3JlIGluZm8uCisgICAgLy8gYW5kIG1fb2Zmc2V0ID4gMCBhcyAi
YWZ0ZXIgdGhlIGFuY2hvciBub2RlIi4gIFNlZSBwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQgZm9y
IG1vcmUgaW5mby4KICAgICBpbnQgbV9vZmZzZXQ7CiAgICAgdW5zaWduZWQgbV9hbmNob3JUeXBl
IDogMjsKICAgICBib29sIG1faXNMZWdhY3lFZGl0aW5nUG9zaXRpb24gOiAxOwpJbmRleDogV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCShyZXZpc2lvbiA3MzUyNykKKysrIFdlYkNv
cmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2OSw4
ICs1NjksOCBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUoCiAgICAg
Ly8gQ2FsY3VsYXRlIHN0YXJ0IGFuZCBlbmQgaW5kaWNlcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUg
dHJlZSB0aGF0IHRoZXkncmUgaW4uCiAgICAgTm9kZSogc2NvcGUgPSBoaWdoZXN0QW5jZXN0b3Io
dmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKTsKICAgICBQb3NpdGlvbiByYW5n
ZVN0YXJ0KHNjb3BlLCAwKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKGRvY3VtZW50KCksIHJhbmdlU3RhcnQsIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudCh2
aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKSkpOwotICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHJhbmdlU3RhcnQsIHJhbmdlQ29tcGxpYW50
RXF1aXZhbGVudCh2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkpKTsKKyAgICBSZWZQdHI8UmFu
Z2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHJhbmdlU3RhcnQsIHZp
c2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsK
KyAgICBSZWZQdHI8UmFuZ2U+IGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBy
YW5nZVN0YXJ0LCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCkpOwogICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0
aChzdGFydFJhbmdlLmdldCgpLCB0cnVlKTsKICAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0
b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLmdldCgpLCB0cnVlKTsKICAgICAKSW5kZXg6IFdlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gNzM1MjcpCisrKyBX
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTksNyArMTU5LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5zZXJ0Tm9kZUF0
KAogICAgIEFTU0VSVChpc0VkaXRhYmxlUG9zaXRpb24oZWRpdGluZ1Bvc2l0aW9uKSk7CiAgICAg
Ly8gRm9yIGVkaXRpbmcgcG9zaXRpb25zIGxpa2UgW3RhYmxlLCAwXSwgaW5zZXJ0IGJlZm9yZSB0
aGUgdGFibGUsCiAgICAgLy8gbGlrZXdpc2UgZm9yIHJlcGxhY2VkIGVsZW1lbnRzLCBicnMsIGV0
Yy4KLSAgICBQb3NpdGlvbiBwID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGVkaXRpbmdQb3Np
dGlvbik7CisgICAgUG9zaXRpb24gcCA9IGVkaXRpbmdQb3NpdGlvbi5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKTsKICAgICBOb2RlKiByZWZDaGlsZCA9IHAubm9kZSgpOwogICAgIGludCBvZmZz
ZXQgPSBwLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAgICAgCkBAIC05MDAsMTMgKzkwMCwx
MyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKHN0YXJ0SW5Q
YXJhZ3JhcGgpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChzdGFydE9m
UGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkpLCByYW5nZUNvbXBsaWFudEVxdWl2YWxl
bnQodmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkpKTsKKyAgICAgICAgICAgICAgICBSZWZQ
dHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQ
YXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQo
KSwgdmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCkpOwogICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVu
Z3RoKHN0YXJ0UmFuZ2UuZ2V0KCksIHRydWUpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBlbmRJbmRleCA9IDA7CiAgICAgICAgICAgICBpZiAoZW5kSW5QYXJhZ3JhcGgpIHsKLSAgICAg
ICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVu
dCgpLCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVw
RXF1aXZhbGVudCgpKSwgcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHZpc2libGVFbmQuZGVlcEVx
dWl2YWxlbnQoKSkpOworICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2
YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZh
bGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKICAgICAgICAgICAgICAgICBlbmRJ
bmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UuZ2V0KCksIHRydWUpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05MjEsOCArOTIxLDggQEAgdm9pZCBDb21wb3Np
dGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaAogICAgIFBvc2l0aW9uIGVuZCA9IGVuZE9mUGFy
YWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkudXBzdHJlYW0oKTsKICAgICAKICAgICAvLyBz
dGFydCBhbmQgZW5kIGNhbid0IGJlIHVzZWQgZGlyZWN0bHkgdG8gY3JlYXRlIGEgUmFuZ2U7IHRo
ZXkgYXJlICJlZGl0aW5nIHBvc2l0aW9ucyIKLSAgICBQb3NpdGlvbiBzdGFydFJhbmdlQ29tcGxp
YW50ID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHN0YXJ0KTsKLSAgICBQb3NpdGlvbiBlbmRS
YW5nZUNvbXBsaWFudCA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChlbmQpOworICAgIFBvc2l0
aW9uIHN0YXJ0UmFuZ2VDb21wbGlhbnQgPSBzdGFydC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQo
KTsKKyAgICBQb3NpdGlvbiBlbmRSYW5nZUNvbXBsaWFudCA9IGVuZC5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKTsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1
bWVudCgpLCBzdGFydFJhbmdlQ29tcGxpYW50Lm5vZGUoKSwgc3RhcnRSYW5nZUNvbXBsaWFudC5k
ZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlbmRSYW5nZUNvbXBsaWFudC5ub2RlKCksIGVuZFJh
bmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwogCiAgICAgLy8gRklYTUU6
IFRoaXMgaXMgYW4gaW5lZmZpY2llbnQgd2F5IHRvIHByZXNlcnZlIHN0eWxlIG9uIG5vZGVzIGlu
IHRoZSBwYXJhZ3JhcGggdG8gbW92ZS4gSXQKQEAgLTk2OSw3ICs5NjksNyBAQCB2b2lkIENvbXBv
c2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAgICAgICAgIHVwZGF0ZUxheW91dCgpOwog
ICAgIH0KICAgICAgICAgCi0gICAgUmVmUHRyPFJhbmdlPiBzdGFydFRvRGVzdGluYXRpb25SYW5n
ZShSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIFBvc2l0aW9uKGRvY3VtZW50KCksIDApLCByYW5n
ZUNvbXBsaWFudEVxdWl2YWxlbnQoZGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKSkpKTsKKyAg
ICBSZWZQdHI8UmFuZ2U+IHN0YXJ0VG9EZXN0aW5hdGlvblJhbmdlKFJhbmdlOjpjcmVhdGUoZG9j
dW1lbnQoKSwgUG9zaXRpb24oZG9jdW1lbnQoKSwgMCksIGRlc3RpbmF0aW9uLmRlZXBFcXVpdmFs
ZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpKTsKICAgICBkZXN0aW5hdGlvbkluZGV4
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFRvRGVzdGluYXRpb25SYW5nZS5nZXQo
KSwgdHJ1ZSk7CiAgICAgCiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKGRlc3RpbmF0aW9uKTsKSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9u
IDczNTI3KQorKysgV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTYsMTQgKzI1NiwxNCBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNv
bW1hbmQ6OmluaXRpYWxpemVQCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgLy8gV2UgbXVz
dCBwYXNzIHRoZSBwb3NpdGlvbnMgdGhyb3VnaCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQsIHNp
bmNlIHNvbWUgZWRpdGluZyBwb3NpdGlvbnMKKyAgICAvLyBXZSBtdXN0IHBhc3MgY2FsbCBwYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQgb24gdGhlIHBvc2l0aW9ucyBzaW5jZSBzb21lIGVkaXRpbmcg
cG9zaXRpb25zCiAgICAgLy8gdGhhdCBhcHBlYXIgaW5zaWRlIHRoZWlyIG5vZGVzIGFyZW4ndCBy
ZWFsbHkgaW5zaWRlIHRoZW0uICBbaHIsIDBdIGlzIG9uZSBleGFtcGxlLgotICAgIC8vIEZJWE1F
OiByYW5nZUNvbXBsYWludEVxdWl2YWxlbnQgc2hvdWxkIGV2ZW50dWFsbHkgYmUgbW92ZWQgaW50
byBlbmNsb3NpbmcgZWxlbWVudCBnZXR0ZXJzCisgICAgLy8gRklYTUU6IHBhcmVudEFuY2hvcmVk
RXF1aXZhbGVudCBzaG91bGQgZXZlbnR1YWxseSBiZSBtb3ZlZCBpbnRvIGVuY2xvc2luZyBlbGVt
ZW50IGdldHRlcnMKICAgICAvLyBsaWtlIHRoZSBvbmUgYmVsb3csIHNpbmNlIGVkaXRpbmcgZnVu
Y3Rpb25zIHNob3VsZCBvYnZpb3VzbHkgYWNjZXB0IGVkaXRpbmcgcG9zaXRpb25zLgogICAgIC8v
IEZJWE1FOiBQYXNzaW5nIGZhbHNlIHRvIGVuY2xvc2luZ05vZGVPZlR5cGUgdGVsbHMgaXQgdGhh
dCBpdCdzIE9LIHRvIHJldHVybiBhIG5vbi1lZGl0YWJsZQogICAgIC8vIG5vZGUuICBUaGlzIHdh
cyBkb25lIHRvIG1hdGNoIGV4aXN0aW5nIGJlaGF2aW9yLCBidXQgaXQgc2VlbXMgd3JvbmcuCi0g
ICAgbV9zdGFydEJsb2NrID0gZW5jbG9zaW5nTm9kZU9mVHlwZShyYW5nZUNvbXBsaWFudEVxdWl2
YWxlbnQobV9kb3duc3RyZWFtU3RhcnQpLCAmaXNCbG9jaywgZmFsc2UpOwotICAgIG1fZW5kQmxv
Y2sgPSBlbmNsb3NpbmdOb2RlT2ZUeXBlKHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChtX3Vwc3Ry
ZWFtRW5kKSwgJmlzQmxvY2ssIGZhbHNlKTsKKyAgICBtX3N0YXJ0QmxvY2sgPSBlbmNsb3NpbmdO
b2RlT2ZUeXBlKG1fZG93bnN0cmVhbVN0YXJ0LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCAm
aXNCbG9jaywgZmFsc2UpOworICAgIG1fZW5kQmxvY2sgPSBlbmNsb3NpbmdOb2RlT2ZUeXBlKG1f
dXBzdHJlYW1FbmQucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksICZpc0Jsb2NrLCBmYWxzZSk7
CiB9CiAKIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6c2F2ZVR5cGluZ1N0eWxlU3RhdGUo
KQpAQCAtNjA5LDggKzYwOSw4IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VQ
YXJhZ3IKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQo
c3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpKSwgcmFuZ2VDb21wbGlhbnRF
cXVpdmFsZW50KGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkpKTsKLSAgICBS
ZWZQdHI8UmFuZ2U+IHJhbmdlVG9CZVJlcGxhY2VkID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgp
LCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQobWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVu
dCgpKSwgcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2
YWxlbnQoKSkpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3Vt
ZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNo
b3JlZEVxdWl2YWxlbnQoKSwgZW5kT2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5w
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZVRvQmVS
ZXBsYWNlZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVw
RXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBtZXJnZURlc3RpbmF0aW9u
LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwogICAgIGlmICgh
ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmNsaWVudCgpLT5zaG91bGRNb3ZlUmFuZ2VB
ZnRlckRlbGV0ZShyYW5nZS5nZXQoKSwgcmFuZ2VUb0JlUmVwbGFjZWQuZ2V0KCkpKQogICAgICAg
ICByZXR1cm47CiAgICAgCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gNzM1MjcpCisrKyBX
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM1LDcgKzYzNSw3
IEBAIFdyaXRpbmdEaXJlY3Rpb24gRWRpdG9yOjp0ZXh0RGlyZWN0aW9uRm8KICAgICBpZiAobV9m
cmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkgewogICAgICAgICBlbmQgPSBtX2ZyYW1lLT5z
ZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuZW5kKCkudXBzdHJlYW0oKTsKIAotICAgICAgICBOb2Rl
KiBwYXN0TGFzdCA9IFJhbmdlOjpjcmVhdGUobV9mcmFtZS0+ZG9jdW1lbnQoKSwgcmFuZ2VDb21w
bGlhbnRFcXVpdmFsZW50KHBvc2l0aW9uKSwgcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGVuZCkp
LT5wYXN0TGFzdE5vZGUoKTsKKyAgICAgICAgTm9kZSogcGFzdExhc3QgPSBSYW5nZTo6Y3JlYXRl
KG1fZnJhbWUtPmRvY3VtZW50KCksIHBvc2l0aW9uLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgp
LCBlbmQucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpLT5wYXN0TGFzdE5vZGUoKTsKICAgICAg
ICAgZm9yIChOb2RlKiBuID0gbm9kZTsgbiAmJiBuICE9IHBhc3RMYXN0OyBuID0gbi0+dHJhdmVy
c2VOZXh0Tm9kZSgpKSB7CiAgICAgICAgICAgICBpZiAoIW4tPmlzU3R5bGVkRWxlbWVudCgpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTc3NCw3ICsxNzc0LDcgQEAgdm9pZCBFZGl0
b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhibwogICAgICAgICBpZiAocG9zaXRpb24uaXNO
dWxsKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBQb3NpdGlvbiBy
YW5nZUNvbXBsaWFudFBvc2l0aW9uID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHBvc2l0aW9u
KTsKKyAgICAgICAgUG9zaXRpb24gcmFuZ2VDb21wbGlhbnRQb3NpdGlvbiA9IHBvc2l0aW9uLnBh
cmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgICAgICBzcGVsbGluZ1NlYXJjaFJhbmdlLT5z
ZXRTdGFydChyYW5nZUNvbXBsaWFudFBvc2l0aW9uLm5vZGUoKSwgcmFuZ2VDb21wbGlhbnRQb3Np
dGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlYyk7CiAgICAgICAgIHN0YXJ0ZWRXaXRo
U2VsZWN0aW9uID0gZmFsc2U7IC8vIHdvbid0IG5lZWQgdG8gd3JhcAogICAgIH0KSW5kZXg6IFdl
YkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAJKHJldmlzaW9uIDczNTI3
KQorKysgV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIGJvb2wgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6c2hv
dWxkVXNlQnIKICAgICAvLyBBbiBlZGl0aW5nIHBvc2l0aW9uIGxpa2UgW2lucHV0LCAwXSBhY3R1
YWxseSByZWZlcnMgdG8gdGhlIHBvc2l0aW9uIGJlZm9yZQogICAgIC8vIHRoZSBpbnB1dCBlbGVt
ZW50LCBhbmQgaW4gdGhhdCBjYXNlIHdlIG5lZWQgdG8gY2hlY2sgdGhlIGlucHV0IGVsZW1lbnQn
cwogICAgIC8vIHBhcmVudCdzIHJlbmRlcmVyLgotICAgIFBvc2l0aW9uIHAocmFuZ2VDb21wbGlh
bnRFcXVpdmFsZW50KGluc2VydGlvblBvcykpOworICAgIFBvc2l0aW9uIHAoaW5zZXJ0aW9uUG9z
LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKICAgICByZXR1cm4gcC5ub2RlKCktPnJlbmRl
cmVyKCkgJiYgIXAubm9kZSgpLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUo
KTsKIH0KIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNv
bW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhT
ZXBhcmF0b3JDb21tYW5kLmNwcAkocmV2aXNpb24gNzM1MjcpCisrKyBXZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
OSw4ICsxNTksOCBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvCiAg
ICAgICAgIGFmZmluaXR5ID0gZW5kaW5nU2VsZWN0aW9uKCkuYWZmaW5pdHkoKTsKICAgICB9CiAg
ICAgCi0gICAgLy8gRklYTUU6IFRoZSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQgY29udmVyc2lv
biBuZWVkcyB0byBiZSBtb3ZlZCBpbnRvIGVuY2xvc2luZ0Jsb2NrLgotICAgIE5vZGUqIHN0YXJ0
QmxvY2tOb2RlID0gZW5jbG9zaW5nQmxvY2socmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGluc2Vy
dGlvblBvc2l0aW9uKS5ub2RlKCkpOworICAgIC8vIEZJWE1FOiBUaGUgcGFyZW50QW5jaG9yZWRF
cXVpdmFsZW50IGNvbnZlcnNpb24gbmVlZHMgdG8gYmUgbW92ZWQgaW50byBlbmNsb3NpbmdCbG9j
ay4KKyAgICBOb2RlKiBzdGFydEJsb2NrTm9kZSA9IGVuY2xvc2luZ0Jsb2NrKGluc2VydGlvblBv
c2l0aW9uLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLmNvbnRhaW5lck5vZGUoKSk7CiAgICAg
UG9zaXRpb24gY2Fub25pY2FsUG9zID0gVmlzaWJsZVBvc2l0aW9uKGluc2VydGlvblBvc2l0aW9u
KS5kZWVwRXF1aXZhbGVudCgpOwogICAgIEVsZW1lbnQqIHN0YXJ0QmxvY2sgPSBzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4oc3RhcnRCbG9ja05vZGUpOwogICAgIGlmICghc3RhcnRCbG9ja05vZGUKSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2aXNp
b24gNzM1MjcpCisrKyBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NjUsNyArNTY1LDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlU3R5
bGVTcGFuc0JlZm9yZUluc2VydAogICAgIE5vZGUqIHNvdXJjZURvY3VtZW50U3R5bGVTcGFuID0g
dG9wTm9kZTsKICAgICBSZWZQdHI8Tm9kZT4gY29waWVkUmFuZ2VTdHlsZVNwYW4gPSBzb3VyY2VE
b2N1bWVudFN0eWxlU3Bhbi0+Zmlyc3RDaGlsZCgpOwogCi0gICAgUmVmUHRyPEVkaXRpbmdTdHls
ZT4gc3R5bGVBdEluc2VydGlvblBvcyA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHJhbmdlQ29tcGxp
YW50RXF1aXZhbGVudChpbnNlcnRpb25Qb3MpKTsKKyAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBz
dHlsZUF0SW5zZXJ0aW9uUG9zID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5zZXJ0aW9uUG9zLnBh
cmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKICAgICBTdHJpbmcgc3R5bGVUZXh0ID0gc3R5bGVB
dEluc2VydGlvblBvcy0+c3R5bGUoKS0+Y3NzVGV4dCgpOwogCiAgICAgLy8gRklYTUU6IFRoaXMg
c3RyaW5nIGNvbXBhcmlzb24gaXMgYSBuYWl2ZSB3YXkgb2YgY29tcGFyaW5nIHR3byBzdHlsZXMu
CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAkocmV2aXNpb24gNzM1MjcpCisr
KyBXZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTk3LDggKzU5Nyw4IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IG1ha2VSYW5nZShjb25zdCBWaXNpYmwK
ICAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4g
MDsKICAgICAKLSAgICBQb3NpdGlvbiBzID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHN0YXJ0
KTsKLSAgICBQb3NpdGlvbiBlID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGVuZCk7CisgICAg
UG9zaXRpb24gcyA9IHN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFs
ZW50KCk7CisgICAgUG9zaXRpb24gZSA9IGVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpOwogICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKHMubm9kZSgpLT5kb2N1
bWVudCgpLCBzLm5vZGUoKSwgcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlLm5vZGUoKSwg
ZS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKIH0KIApAQCAtNjE4LDcgKzYxOCw3IEBAIGJv
b2wgc2V0U3RhcnQoUmFuZ2UgKnIsIGNvbnN0IFZpc2libGVQb3MKIHsKICAgICBpZiAoIXIpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBQb3NpdGlvbiBwID0gcmFuZ2VDb21wbGlhbnRFcXVp
dmFsZW50KHZpc2libGVQb3NpdGlvbik7CisgICAgUG9zaXRpb24gcCA9IHZpc2libGVQb3NpdGlv
bi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIGludCBj
b2RlID0gMDsKICAgICByLT5zZXRTdGFydChwLm5vZGUoKSwgcC5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpLCBjb2RlKTsKICAgICByZXR1cm4gY29kZSA9PSAwOwpAQCAtNjI4LDcgKzYyOCw3IEBA
IGJvb2wgc2V0RW5kKFJhbmdlICpyLCBjb25zdCBWaXNpYmxlUG9zaXQKIHsKICAgICBpZiAoIXIp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBQb3NpdGlvbiBwID0gcmFuZ2VDb21wbGlhbnRF
cXVpdmFsZW50KHZpc2libGVQb3NpdGlvbik7CisgICAgUG9zaXRpb24gcCA9IHZpc2libGVQb3Np
dGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIGlu
dCBjb2RlID0gMDsKICAgICByLT5zZXRFbmQocC5ub2RlKCksIHAuZGVwcmVjYXRlZEVkaXRpbmdP
ZmZzZXQoKSwgY29kZSk7CiAgICAgcmV0dXJuIGNvZGUgPT0gMDsKSW5kZXg6IFdlYkNvcmUvZWRp
dGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVNlbGVjdGlvbi5jcHAJKHJldmlzaW9uIDczNTI3KQorKysgV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVTZWxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsOCArMTIxLDggQEAg
UGFzc1JlZlB0cjxSYW5nZT4gVmlzaWJsZVNlbGVjdGlvbjo6ZmlycwogewogICAgIGlmIChpc05v
bmUoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgUG9zaXRpb24gc3RhcnQgPSByYW5nZUNvbXBs
aWFudEVxdWl2YWxlbnQobV9zdGFydCk7Ci0gICAgUG9zaXRpb24gZW5kID0gcmFuZ2VDb21wbGlh
bnRFcXVpdmFsZW50KG1fZW5kKTsKKyAgICBQb3NpdGlvbiBzdGFydCA9IG1fc3RhcnQucGFyZW50
QW5jaG9yZWRFcXVpdmFsZW50KCk7CisgICAgUG9zaXRpb24gZW5kID0gbV9lbmQucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCk7CiAgICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUoc3RhcnQubm9kZSgp
LT5kb2N1bWVudCgpLCBzdGFydCwgZW5kKTsKIH0KIApAQCAtMTQ2LDcgKzE0Niw3IEBAIFBhc3NS
ZWZQdHI8UmFuZ2U+IFZpc2libGVTZWxlY3Rpb246OnRvTm8KICAgICAgICAgLy8gSWYgdGhlIHNl
bGVjdGlvbiBpcyBhIGNhcmV0LCBtb3ZlIHRoZSByYW5nZSBzdGFydCB1cHN0cmVhbS4gVGhpcyBo
ZWxwcyB1cyBtYXRjaAogICAgICAgICAvLyB0aGUgY29udmVudGlvbnMgb2YgdGV4dCBlZGl0b3Jz
IHRlc3RlZCwgd2hpY2ggbWFrZSBzdHlsZSBkZXRlcm1pbmF0aW9ucyBiYXNlZAogICAgICAgICAv
LyBvbiB0aGUgY2hhcmFjdGVyIGJlZm9yZSB0aGUgY2FyZXQsIGlmIGFueS4gCi0gICAgICAgIHMg
PSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQobV9zdGFydC51cHN0cmVhbSgpKTsKKyAgICAgICAg
cyA9IG1fc3RhcnQudXBzdHJlYW0oKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICAg
ICAgZSA9IHM7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gSWYgdGhlIHNlbGVjdGlvbiBpcyBh
IHJhbmdlLCBzZWxlY3QgdGhlIG1pbmltdW0gcmFuZ2UgdGhhdCBlbmNvbXBhc3NlcyB0aGUgc2Vs
ZWN0aW9uLgpAQCAtMTcwLDggKzE3MCw4IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IFZpc2libGVTZWxl
Y3Rpb246OnRvTm8KICAgICAgICAgICAgIHMgPSBlOwogICAgICAgICAgICAgZSA9IHRtcDsKICAg
ICAgICAgfQotICAgICAgICBzID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHMpOwotICAgICAg
ICBlID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGUpOworICAgICAgICBzID0gcy5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKTsKKyAgICAgICAgZSA9IGUucGFyZW50QW5jaG9yZWRFcXVpdmFs
ZW50KCk7CiAgICAgfQogCiAgICAgLy8gVmlzaWJsZVNlbGVjdGlvbnMgYXJlIHN1cHBvc2VkIHRv
IGFsd2F5cyBiZSB2YWxpZC4gIFRoaXMgY29uc3RydWN0b3Igd2lsbCBBU1NFUlQKQEAgLTIwNCw3
ICsyMDQsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxSYW5nZT4gbWFrZVNlYXJjaFJhbmdlCiAgICAg
UmVmUHRyPFJhbmdlPiBzZWFyY2hSYW5nZShSYW5nZTo6Y3JlYXRlKGQpKTsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKIAotICAgIFBvc2l0aW9uIHN0YXJ0KHJhbmdlQ29tcGxpYW50RXF1aXZh
bGVudChwb3MpKTsKKyAgICBQb3NpdGlvbiBzdGFydChwb3MucGFyZW50QW5jaG9yZWRFcXVpdmFs
ZW50KCkpOwogICAgIHNlYXJjaFJhbmdlLT5zZWxlY3ROb2RlQ29udGVudHMoYm91bmRhcnksIGVj
KTsKICAgICBzZWFyY2hSYW5nZS0+c2V0U3RhcnQoc3RhcnQubm9kZSgpLCBzdGFydC5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpLCBlYyk7CiAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9odG1sZWRp
dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAko
cmV2aXNpb24gNzM1MjcpCisrKyBXZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzIsNTcgKzMzMiw5IEBAIE5vZGUqIGVuY2xvc2luZ0Jsb2NrKE5vZGUq
IG5vZGUpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQqPihlbmNsb3NpbmdOb2RlT2ZU
eXBlKFBvc2l0aW9uKG5vZGUsIDApLCBpc0Jsb2NrKSk7CiB9CiAKLS8vIEludGVybmFsbHkgZWRp
dGluZyB1c2VzICJpbnZhbGlkIiBwb3NpdGlvbnMgZm9yIGhpc3RvcmljYWwgcmVhc29ucy4gIEZv
cgotLy8gZXhhbXBsZSwgaW4gPGRpdj48aW1nIC8+PC9kaXY+LCBFZGl0aW5nIG1pZ2h0IHVzZSAo
aW1nLCAxKSBmb3IgdGhlIHBvc2l0aW9uCi0vLyBhZnRlciA8aW1nPiwgYnV0IHdlIGhhdmUgdG8g
Y29udmVydCB0aGF0IHRvIChkaXYsIDEpIGJlZm9yZSBoYW5kaW5nIHRoZQotLy8gcG9zaXRpb24g
dG8gYSBSYW5nZSBvYmplY3QuICBJZGVhbGx5IGFsbCBpbnRlcm5hbCBwb3NpdGlvbnMgc2hvdWxk
Ci0vLyBiZSAicmFuZ2UgY29tcGxpYW50IiBmb3Igc2ltcGxpY2l0eS4KLVBvc2l0aW9uIHJhbmdl
Q29tcGxpYW50RXF1aXZhbGVudChjb25zdCBQb3NpdGlvbiYgcG9zKQotewotICAgIGlmIChwb3Mu
aXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBQb3NpdGlvbigpOwotCi0gICAgTm9kZSogbm9kZSA9
IHBvcy5ub2RlKCk7Ci0KLSAgICBpZiAocG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPD0g
MCkgewotICAgICAgICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpICYmIChlZGl0aW5nSWdub3Jlc0Nv
bnRlbnQobm9kZSkgfHwgaXNUYWJsZUVsZW1lbnQobm9kZSkpKQotICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUpOwotICAgICAgICByZXR1cm4gUG9zaXRp
b24obm9kZSwgMCk7Ci0gICAgfQotCi0gICAgaWYgKG5vZGUtPm9mZnNldEluQ2hhcmFjdGVycygp
KQotICAgICAgICByZXR1cm4gUG9zaXRpb24obm9kZSwgbWluKG5vZGUtPm1heENoYXJhY3Rlck9m
ZnNldCgpLCBwb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSkpOwotCi0gICAgaW50IG1heENv
bXBsaWFudE9mZnNldCA9IG5vZGUtPmNoaWxkTm9kZUNvdW50KCk7Ci0gICAgaWYgKHBvcy5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpID4gbWF4Q29tcGxpYW50T2Zmc2V0KSB7Ci0gICAgICAgIGlm
IChub2RlLT5wYXJlbnROb2RlKCkpCi0gICAgICAgICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVu
dEFmdGVyTm9kZShub2RlKTsKLQotICAgICAgICAvLyB0aGVyZSBpcyBubyBvdGhlciBvcHRpb24g
YXQgdGhpcyBwb2ludCB0aGFuIHRvCi0gICAgICAgIC8vIHVzZSB0aGUgaGlnaGVzdCBhbGxvd2Vk
IHBvc2l0aW9uIGluIHRoZSBub2RlCi0gICAgICAgIHJldHVybiBQb3NpdGlvbihub2RlLCBtYXhD
b21wbGlhbnRPZmZzZXQpOwotICAgIH0gCi0KLSAgICAvLyBFZGl0aW5nIHNob3VsZCBuZXZlciBn
ZW5lcmF0ZSBwb3NpdGlvbnMgbGlrZSB0aGlzLgotICAgIGlmICgocG9zLmRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0KCkgPCBtYXhDb21wbGlhbnRPZmZzZXQpICYmIGVkaXRpbmdJZ25vcmVzQ29udGVu
dChub2RlKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IG5vZGUtPnBhcmVudE5vZGUoKSA/IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUpIDog
UG9zaXRpb24obm9kZSwgMCk7Ci0gICAgfQotICAgIAotICAgIGlmIChwb3MuZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKSA9PSBtYXhDb21wbGlhbnRPZmZzZXQgJiYgKGVkaXRpbmdJZ25vcmVzQ29u
dGVudChub2RlKSB8fCBpc1RhYmxlRWxlbWVudChub2RlKSkpCi0gICAgICAgIHJldHVybiBwb3Np
dGlvbkluUGFyZW50QWZ0ZXJOb2RlKG5vZGUpOwotICAgIAotICAgIHJldHVybiBQb3NpdGlvbihw
b3MpOwotfQotCi1Qb3NpdGlvbiByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB2cG9zKQotewotICAgIHJldHVybiByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQo
dnBvcy5kZWVwRXF1aXZhbGVudCgpKTsKLX0KLQogLy8gVGhpcyBtZXRob2QgaXMgdXNlZCB0byBj
cmVhdGUgcG9zaXRpb25zIGluIHRoZSBET00uIEl0IHJldHVybnMgdGhlIG1heGltdW0gdmFsaWQg
b2Zmc2V0CiAvLyBpbiBhIG5vZGUuICBJdCByZXR1cm5zIDEgZm9yIHNvbWUgZWxlbWVudHMgZXZl
biB0aG91Z2ggdGhleSBkbyBub3QgaGF2ZSBjaGlsZHJlbiwgd2hpY2gKLS8vIGNyZWF0ZXMgdGVj
aG5pY2FsbHkgaW52YWxpZCBET00gUG9zaXRpb25zLiAgQmUgc3VyZSB0byBjYWxsIHJhbmdlQ29t
cGxpYW50RXF1aXZhbGVudAorLy8gY3JlYXRlcyB0ZWNobmljYWxseSBpbnZhbGlkIERPTSBQb3Np
dGlvbnMuICBCZSBzdXJlIHRvIGNhbGwgcGFyZW50QW5jaG9yZWRFcXVpdmFsZW50CiAvLyBvbiBh
IFBvc2l0aW9uIGJlZm9yZSB1c2luZyBpdCB0byBjcmVhdGUgYSBET00gUmFuZ2UsIG9yIGFuIGV4
Y2VwdGlvbiB3aWxsIGJlIHRocm93bi4KIGludCBsYXN0T2Zmc2V0Rm9yRWRpdGluZyhjb25zdCBO
b2RlKiBub2RlKQogewpAQCAtMTA4MSw3ICsxMDMzLDcgQEAgaW50IGluZGV4Rm9yVmlzaWJsZVBv
c2l0aW9uKGNvbnN0IFZpc2libAogICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIFBvc2l0aW9uIHAodmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVp
dmFsZW50KCkpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHAubm9k
ZSgpLT5kb2N1bWVudCgpLCBQb3NpdGlvbihwLm5vZGUoKS0+ZG9jdW1lbnQoKSwgMCksIHJhbmdl
Q29tcGxpYW50RXF1aXZhbGVudChwKSk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdl
OjpjcmVhdGUocC5ub2RlKCktPmRvY3VtZW50KCksIFBvc2l0aW9uKHAubm9kZSgpLT5kb2N1bWVu
dCgpLCAwKSwgcC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiAgICAgcmV0dXJuIFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOwogfQogCkluZGV4OiBXZWJD
b3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
aHRtbGVkaXRpbmcuaAkocmV2aXNpb24gNzM1MjcpCisrKyBXZWJDb3JlL2VkaXRpbmcvaHRtbGVk
aXRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDkgKzEwMSw2IEBAIGJvb2wgaXNOb2RlSW5U
ZXh0Rm9ybUNvbnRyb2woTm9kZSogbm9kZSkKICAgICAKIC8vIEZ1bmN0aW9ucyByZXR1cm5pbmcg
UG9zaXRpb24KICAgICAKLVBvc2l0aW9uIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChjb25zdCBQ
b3NpdGlvbiYpOwotUG9zaXRpb24gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpOwotICAgIAogUG9zaXRpb24gbmV4dENhbmRpZGF0ZShjb25zdCBQb3NpdGlv
biYpOwogUG9zaXRpb24gcHJldmlvdXNDYW5kaWRhdGUoY29uc3QgUG9zaXRpb24mKTsKICAgICAK
SW5kZXg6IFdlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAJKHJldmlzaW9uIDczNTI3KQorKysgV2Vi
Q29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw4ICs1
Nyw4IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNCb3VuZGFyeSgKICAgICAgICAg
cmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogCiAgICAgRG9jdW1lbnQqIGQgPSBib3VuZGFyeS0+
ZG9jdW1lbnQoKTsKLSAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVu
dChQb3NpdGlvbihib3VuZGFyeSwgMCkpOwotICAgIFBvc2l0aW9uIGVuZCA9IHJhbmdlQ29tcGxp
YW50RXF1aXZhbGVudChwb3MpOworICAgIFBvc2l0aW9uIHN0YXJ0ID0gUG9zaXRpb24oYm91bmRh
cnksIDApLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOworICAgIFBvc2l0aW9uIGVuZCA9IHBv
cy5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICBSZWZQdHI8UmFuZ2U+IHNlYXJjaFJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShkKTsKICAgICAKICAgICBWZWN0b3I8VUNoYXIsIDEwMjQ+IHN0
cmluZzsKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3Vu
ZGFyeShjb25zCiAKICAgICBEb2N1bWVudCogZCA9IGJvdW5kYXJ5LT5kb2N1bWVudCgpOwogICAg
IFJlZlB0cjxSYW5nZT4gc2VhcmNoUmFuZ2UoZC0+Y3JlYXRlUmFuZ2UoKSk7Ci0gICAgUG9zaXRp
b24gc3RhcnQocmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHBvcykpOworICAgIFBvc2l0aW9uIHN0
YXJ0KHBvcy5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiAKICAgICBWZWN0b3I8VUNoYXIs
IDEwMjQ+IHN0cmluZzsKICAgICB1bnNpZ25lZCBwcmVmaXhMZW5ndGggPSAwOwpJbmRleDogV2Vi
Q29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RP
TVNlbGVjdGlvbi5jcHAJKHJldmlzaW9uIDczNTI3KQorKysgV2ViQ29yZS9wYWdlL0RPTVNlbGVj
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDIzICs3NiwyMyBAQCBjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiBET01TZWxlY3Rpb246OnZpCiBzdGF0aWMgUG9zaXRpb24gYW5jaG9yUG9zaXRp
b24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewogICAgIFBvc2l0aW9uIGFu
Y2hvciA9IHNlbGVjdGlvbi5pc0Jhc2VGaXJzdCgpID8gc2VsZWN0aW9uLnN0YXJ0KCkgOiBzZWxl
Y3Rpb24uZW5kKCk7Ci0gICAgcmV0dXJuIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChhbmNob3Ip
OworICAgIHJldHVybiBhbmNob3IucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiB9CiAKIHN0
YXRpYyBQb3NpdGlvbiBmb2N1c1Bvc2l0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVj
dGlvbikKIHsKICAgICBQb3NpdGlvbiBmb2N1cyA9IHNlbGVjdGlvbi5pc0Jhc2VGaXJzdCgpID8g
c2VsZWN0aW9uLmVuZCgpIDogc2VsZWN0aW9uLnN0YXJ0KCk7Ci0gICAgcmV0dXJuIHJhbmdlQ29t
cGxpYW50RXF1aXZhbGVudChmb2N1cyk7CisgICAgcmV0dXJuIGZvY3VzLnBhcmVudEFuY2hvcmVk
RXF1aXZhbGVudCgpOwogfQogCiBzdGF0aWMgUG9zaXRpb24gYmFzZVBvc2l0aW9uKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKIHsKLSAgICByZXR1cm4gcmFuZ2VDb21wbGlhbnRF
cXVpdmFsZW50KHNlbGVjdGlvbi5iYXNlKCkpOworICAgIHJldHVybiBzZWxlY3Rpb24uYmFzZSgp
LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogfQogCiBzdGF0aWMgUG9zaXRpb24gZXh0ZW50
UG9zaXRpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewotICAgIHJldHVy
biByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoc2VsZWN0aW9uLmV4dGVudCgpKTsKKyAgICByZXR1
cm4gc2VsZWN0aW9uLmV4dGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogfQogCiBO
b2RlKiBET01TZWxlY3Rpb246OmFuY2hvck5vZGUoKSBjb25zdApJbmRleDogV2ViS2l0L21hYy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDcz
NTI3KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NiBAQAorMjAxMC0xMi0wOCAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0Bnb29nbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0aW5nIHRv
IHVzZSBQb3NpdGlvbjo6cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50IGluc3RlYWQgb2YKKyAgICAg
ICAgdGhlIG9sZCBodG1sZWRpdGluZyByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQuCisKKyAgICAg
ICAgcmVtb3ZlIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudCBhbmQgcmVwbGFjZSBpdCB3aXRoIFBv
c2l0aW9uIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI1MDU3CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAo
LVtXZWJGcmFtZSBfc21hcnREZWxldGVSYW5nZUZvclByb3Bvc2VkUmFuZ2U6XSk6CisKIDIwMTAt
MTItMDcgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShy
ZXZpc2lvbiA3MzUyNykKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtODIwLDggKzgyMCw4IEBAIC0gKERPTVJhbmdlICopX3NtYXJ0RGVsZXRlUmFu
Z2VGb3JQcm9wb3MKICAgICBpZiAobmV3RW5kLmlzTnVsbCgpKQogICAgICAgICBuZXdFbmQgPSBl
bmQ7CiAKLSAgICBuZXdTdGFydCA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChuZXdTdGFydCk7
Ci0gICAgbmV3RW5kID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KG5ld0VuZCk7CisgICAgbmV3
U3RhcnQgPSBuZXdTdGFydC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKKyAgICBuZXdFbmQg
PSBuZXdFbmQucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiAKICAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+Y3JlYXRlUmFuZ2UoKTsK
ICAgICBpbnQgZXhjZXB0aW9uID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78056</attachid>
            <date>2011-01-05 15:28:39 -0800</date>
            <delta_ts>2011-01-18 11:17:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-25057-20110105152837.patch</filename>
            <type>text/plain</type>
            <size>28348</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NTEwNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTkgQEAKKzIwMTEtMDEtMDUgIExldmkgV2VpbnRyYXViICA8bGV2aXdAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZXBsYWNlZCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQgd2l0aCBQb3NpdGlvbjo6cGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50CisgICAgICAgIGFuZCBzaW1wbGlmaWVkIHRoZSBsb2dpYyBhIGJpdC4g
VW5mb3J0dW5hdGVseSwgVGFibGVzIGFuZCBzb21lIGxlZ2FjeQorICAgICAgICBlZGl0aW5nIHBv
c2l0aW9ucyBzdGlsbCBuZWVkIHRvIGJlIGhhbmRsZWQgc3BlY2lmaWNhbGx5LgorCisgICAgICAg
IHJlbW92ZSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQgYW5kIHJlcGxhY2UgaXQgd2l0aCBQb3Np
dGlvbiBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNTA1NworCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcyB0aGlzIGlzIGEgcmVmYWN0b3Ig
dGhhdCBkb2Vzbid0IGNoYW5nZSBiZWhhdmlvci4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6Y2FyZXRSYW5nZUZyb21Qb2ludCk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQpOgorICAg
ICAgICAqIGRvbS9Qb3NpdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tT
dHlsZSk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5zZXJ0Tm9kZUF0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyk6CisgICAg
ICAgICogZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmluaXRpYWxpemVQb3NpdGlvbkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VQYXJhZ3JhcGhzKToK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OnRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjph
ZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGluZUJy
ZWFrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaW5lQnJlYWtDb21tYW5k
OjpzaG91bGRVc2VCcmVha0VsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRQYXJhZ3Jh
cGhTZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVN0eWxlU3BhbnNC
ZWZvcmVJbnNlcnRpb24pOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om1ha2VSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRTdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRFbmQpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJs
ZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpmaXJz
dFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OnRvTm9ybWFsaXpl
ZFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VTZWFyY2hSYW5nZSk6CisgICAgICAgICog
ZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbmRleEZvclZpc2li
bGVQb3NpdGlvbik6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5oOgorICAgICAgICAq
IGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0Jv
dW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRCb3VuZGFyeSk6CisgICAgICAgICogcGFn
ZS9ET01TZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YW5jaG9yUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Zm9jdXNQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpiYXNl
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXh0ZW50UG9zaXRpb24pOgorCiAyMDExLTAx
LTA1ICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNzUxMDcpCisrKyBXZWJD
b3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC01MzQsNyArNTM0LDYgQEAgX19a
TjdXZWJDb3JlMjRjcmVhdGVGcmFnbWVudEZyb21NYXJrdXBFUAogX19aTjdXZWJDb3JlMjRkZWNv
ZGVVUkxFc2NhcGVTZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbkVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTI0bm90aWZ5
SGlzdG9yeUl0ZW1DaGFuZ2VkRQotX19aTjdXZWJDb3JlMjRyYW5nZUNvbXBsaWFudEVxdWl2YWxl
bnRFUktOU184UG9zaXRpb25FCiBfX1pON1dlYkNvcmUyNUhpc3RvcnlQcm9wZXJ0eUxpc3RXcml0
ZXIxMXJlbGVhc2VEYXRhRXYKIF9fWk43V2ViQ29yZTI1SGlzdG9yeVByb3BlcnR5TGlzdFdyaXRl
cjEyd3JpdGVPYmplY3RzRVJOU18zMEJpbmFyeVByb3BlcnR5TGlzdE9iamVjdFN0cmVhbUUKIF9f
Wk43V2ViQ29yZTI1SGlzdG9yeVByb3BlcnR5TGlzdFdyaXRlcjE2d3JpdGVIaXN0b3J5SXRlbUVS
TlNfMzBCaW5hcnlQcm9wZXJ0eUxpc3RPYmplY3RTdHJlYW1FUE5TXzExSGlzdG9yeUl0ZW1FCkBA
IC0xMTgwLDYgKzExNzksNyBAQCBfX1pOSzdXZWJDb3JlOERvY3VtZW50NGJvZHlFdgogX19aTks3
V2ViQ29yZThEb2N1bWVudDZkb21haW5FdgogX19aTks3V2ViQ29yZThJbnRQb2ludGN2OF9OU1Bv
aW50RXYKIF9fWk5LN1dlYkNvcmU4UG9zaXRpb24xMGRvd25zdHJlYW1FTlNfMjdFZGl0aW5nQm91
bmRhcnlDcm9zc2luZ1J1bGVFCitfX1pOSzdXZWJDb3JlOFBvc2l0aW9uMjRwYXJlbnRBbmNob3Jl
ZEVxdWl2YWxlbnRFdgogX19aTks3V2ViQ29yZThQb3NpdGlvbjI1bGVhZGluZ1doaXRlc3BhY2VQ
b3NpdGlvbkVOU185RUFmZmluaXR5RWIKIF9fWk5LN1dlYkNvcmU4UG9zaXRpb24yNnRyYWlsaW5n
V2hpdGVzcGFjZVBvc2l0aW9uRU5TXzlFQWZmaW5pdHlFYgogX19aTks3V2ViQ29yZThQb3NpdGlv
bjh1cHN0cmVhbUVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZUUKSW5kZXg6IFdlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAJKHJldmlzaW9uIDc1MTA3KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjgxLDcgKzEyODEsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBEb2N1bWVudDo6
Y2FyZXRSYW5nZUZyCiAgICAgaWYgKHZpc2libGVQb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBQb3NpdGlvbiByYW5nZUNvbXBsaWFudFBvc2l0aW9uID0gcmFuZ2VD
b21wbGlhbnRFcXVpdmFsZW50KHZpc2libGVQb3NpdGlvbik7CisgICAgUG9zaXRpb24gcmFuZ2VD
b21wbGlhbnRQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKHRoaXMsIHJh
bmdlQ29tcGxpYW50UG9zaXRpb24sIHJhbmdlQ29tcGxpYW50UG9zaXRpb24pOwogfQogCkluZGV4
OiBXZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vUG9z
aXRpb24uY3BwCShyZXZpc2lvbiA3NTEwNykKKysrIFdlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ2LDYgKzE0NiwyNyBAQCBpbnQgUG9zaXRpb246OmNvbXB1dGVP
ZmZzZXRJbkNvbnRhaW5lck5vCiAgICAgcmV0dXJuIDA7CiB9CiAKKy8vIE5laWdoYm9yLWFuY2hv
cmVkIHBvc2l0aW9ucyBhcmUgaW52YWxpZCBET00gcG9zaXRpb25zLCBzbyB0aGV5IG5lZWQgdG8g
YmUKKy8vIGZpeGVkIHVwIGJlZm9yZSBoYW5kaW5nIHRoZW0gb2ZmIHRvIHRoZSBSYW5nZSBvYmpl
Y3QuCitQb3NpdGlvbiBQb3NpdGlvbjo6cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fYW5jaG9yTm9kZSkKKyAgICAgICAgcmV0dXJuIFBvc2l0aW9uKCk7Cisg
ICAgCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG9ubHkgYmUgbmVjZXNzYXJ5IGZvciBsZWdh
Y3kgcG9zaXRpb25zLCBidXQgaXMgYWxzbyBuZWVkZWQgZm9yIHBvc2l0aW9ucyBiZWZvcmUgYW5k
IGFmdGVyIFRhYmxlcworICAgIGlmIChtX29mZnNldCA8PSAwKSB7CisgICAgICAgIGlmIChtX2Fu
Y2hvck5vZGUtPnBhcmVudE5vZGUoKSAmJiAoZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9y
Tm9kZS5nZXQoKSkgfHwgaXNUYWJsZUVsZW1lbnQobV9hbmNob3JOb2RlLmdldCgpKSkpCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobV9hbmNob3JOb2RlLmdl
dCgpKTsKKyAgICAgICAgcmV0dXJuIFBvc2l0aW9uKG1fYW5jaG9yTm9kZSwgMCwgUG9zaXRpb25J
c09mZnNldEluQW5jaG9yKTsKKyAgICB9CisgICAgaWYgKCFtX2FuY2hvck5vZGUtPm9mZnNldElu
Q2hhcmFjdGVycygpICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCkgPT0gbV9hbmNo
b3JOb2RlLT5jaGlsZE5vZGVDb3VudCgpCisgICAgICAgICYmIChlZGl0aW5nSWdub3Jlc0NvbnRl
bnQobV9hbmNob3JOb2RlLmdldCgpKSB8fCBpc1RhYmxlRWxlbWVudChtX2FuY2hvck5vZGUuZ2V0
KCkpKSkgeworICAgICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShtX2FuY2hv
ck5vZGUuZ2V0KCkpOworICAgIH0KKworICAgIHJldHVybiBQb3NpdGlvbihjb250YWluZXJOb2Rl
KCksIGNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSwgUG9zaXRpb25Jc09mZnNldEluQW5j
aG9yKTsKK30KKwogTm9kZSogUG9zaXRpb246OmNvbXB1dGVOb2RlQmVmb3JlUG9zaXRpb24oKSBj
b25zdAogewogICAgIGlmICghbV9hbmNob3JOb2RlKQpJbmRleDogV2ViQ29yZS9kb20vUG9zaXRp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCShyZXZpc2lvbiA3NTEw
NykKKysrIFdlYkNvcmUvZG9tL1Bvc2l0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgw
LDcgQEAgcHVibGljOgogICAgIC8vIHdpbGwgcmV0dXJuIGltZy0+cGFyZW50Tm9kZSgpIGFuZCBp
bWctPm5vZGVJbmRleCgpIGZyb20gdGhlc2UgZnVuY3Rpb25zLgogICAgIE5vZGUqIGNvbnRhaW5l
ck5vZGUoKSBjb25zdDsgLy8gTlVMTCBmb3IgYSBiZWZvcmUvYWZ0ZXIgcG9zaXRpb24gYW5jaG9y
ZWQgdG8gYSBub2RlIHdpdGggbm8gcGFyZW50CiAgICAgaW50IGNvbXB1dGVPZmZzZXRJbkNvbnRh
aW5lck5vZGUoKSBjb25zdDsgIC8vIE8obikgZm9yIGJlZm9yZS9hZnRlci1hbmNob3JlZCBwb3Np
dGlvbnMsIE8oMSkgZm9yIHBhcmVudC1hbmNob3JlZCBwb3NpdGlvbnMKKyAgICBQb3NpdGlvbiBw
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSBjb25zdDsgLy8gQ29udmVuaWVuY2UgbWV0aG9kIGZv
ciBET00gcG9zaXRpb25zIHRoYXQgYWxzbyBmaXhlcyB1cCBzb21lIHBvc2l0aW9ucyBmb3IgZWRp
dGluZwogCiAgICAgLy8gSW5saW5lIE8oMSkgYWNjZXNzIGZvciBQb3NpdGlvbnMgd2hpY2ggY2Fs
bGVycyBrbm93IHRvIGJlIHBhcmVudC1hbmNob3JlZAogICAgIGludCBvZmZzZXRJbkNvbnRhaW5l
ck5vZGUoKSBjb25zdApAQCAtMTc5LDcgKzE4MCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE5v
ZGU+IG1fYW5jaG9yTm9kZTsKICAgICAvLyBtX29mZnNldCBjYW4gYmUgdGhlIG9mZnNldCBpbnNp
ZGUgbV9hbmNob3JOb2RlLCBvciBpZiBlZGl0aW5nSWdub3Jlc0NvbnRlbnQobV9hbmNob3JOb2Rl
KQogICAgIC8vIHJldHVybnMgdHJ1ZSwgdGhlbiBvdGhlciBwbGFjZXMgaW4gZWRpdGluZyB3aWxs
IHRyZWF0IG1fb2Zmc2V0ID09IDAgYXMgImJlZm9yZSB0aGUgYW5jaG9yIgotICAgIC8vIGFuZCBt
X29mZnNldCA+IDAgYXMgImFmdGVyIHRoZSBhbmNob3Igbm9kZSIuICBTZWUgcmFuZ2VDb21wbGlh
bnRFcXVpdmFsZW50IGZvciBtb3JlIGluZm8uCisgICAgLy8gYW5kIG1fb2Zmc2V0ID4gMCBhcyAi
YWZ0ZXIgdGhlIGFuY2hvciBub2RlIi4gIFNlZSBwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQgZm9y
IG1vcmUgaW5mby4KICAgICBpbnQgbV9vZmZzZXQ7CiAgICAgdW5zaWduZWQgbV9hbmNob3JUeXBl
IDogMjsKICAgICBib29sIG1faXNMZWdhY3lFZGl0aW5nUG9zaXRpb24gOiAxOwpJbmRleDogV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCShyZXZpc2lvbiA3NTEwNykKKysrIFdlYkNv
cmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2OSw4
ICs1NjksOCBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUoCiAgICAg
Ly8gQ2FsY3VsYXRlIHN0YXJ0IGFuZCBlbmQgaW5kaWNlcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUg
dHJlZSB0aGF0IHRoZXkncmUgaW4uCiAgICAgTm9kZSogc2NvcGUgPSBoaWdoZXN0QW5jZXN0b3Io
dmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKTsKICAgICBQb3NpdGlvbiByYW5n
ZVN0YXJ0KHNjb3BlLCAwKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKGRvY3VtZW50KCksIHJhbmdlU3RhcnQsIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudCh2
aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKSkpOwotICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHJhbmdlU3RhcnQsIHJhbmdlQ29tcGxpYW50
RXF1aXZhbGVudCh2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkpKTsKKyAgICBSZWZQdHI8UmFu
Z2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHJhbmdlU3RhcnQsIHZp
c2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsK
KyAgICBSZWZQdHI8UmFuZ2U+IGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBy
YW5nZVN0YXJ0LCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCkpOwogICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0
aChzdGFydFJhbmdlLmdldCgpLCB0cnVlKTsKICAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0
b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLmdldCgpLCB0cnVlKTsKICAgICAKSW5kZXg6IFdlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gNzUxMDcpCisrKyBX
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTksNyArMTU5LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5zZXJ0Tm9kZUF0
KAogICAgIEFTU0VSVChpc0VkaXRhYmxlUG9zaXRpb24oZWRpdGluZ1Bvc2l0aW9uKSk7CiAgICAg
Ly8gRm9yIGVkaXRpbmcgcG9zaXRpb25zIGxpa2UgW3RhYmxlLCAwXSwgaW5zZXJ0IGJlZm9yZSB0
aGUgdGFibGUsCiAgICAgLy8gbGlrZXdpc2UgZm9yIHJlcGxhY2VkIGVsZW1lbnRzLCBicnMsIGV0
Yy4KLSAgICBQb3NpdGlvbiBwID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGVkaXRpbmdQb3Np
dGlvbik7CisgICAgUG9zaXRpb24gcCA9IGVkaXRpbmdQb3NpdGlvbi5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKTsKICAgICBOb2RlKiByZWZDaGlsZCA9IHAubm9kZSgpOwogICAgIGludCBvZmZz
ZXQgPSBwLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAgICAgCkBAIC05MDUsMTMgKzkwNSwx
MyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKHN0YXJ0SW5Q
YXJhZ3JhcGgpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChzdGFydE9m
UGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkpLCByYW5nZUNvbXBsaWFudEVxdWl2YWxl
bnQodmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkpKTsKKyAgICAgICAgICAgICAgICBSZWZQ
dHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQ
YXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQo
KSwgdmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCkpOwogICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVu
Z3RoKHN0YXJ0UmFuZ2UuZ2V0KCksIHRydWUpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBlbmRJbmRleCA9IDA7CiAgICAgICAgICAgICBpZiAoZW5kSW5QYXJhZ3JhcGgpIHsKLSAgICAg
ICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVu
dCgpLCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVw
RXF1aXZhbGVudCgpKSwgcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHZpc2libGVFbmQuZGVlcEVx
dWl2YWxlbnQoKSkpOworICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2
YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZh
bGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKICAgICAgICAgICAgICAgICBlbmRJ
bmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UuZ2V0KCksIHRydWUpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05MjYsOCArOTI2LDggQEAgdm9pZCBDb21wb3Np
dGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaAogICAgIFBvc2l0aW9uIGVuZCA9IGVuZE9mUGFy
YWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkudXBzdHJlYW0oKTsKICAgICAKICAgICAvLyBz
dGFydCBhbmQgZW5kIGNhbid0IGJlIHVzZWQgZGlyZWN0bHkgdG8gY3JlYXRlIGEgUmFuZ2U7IHRo
ZXkgYXJlICJlZGl0aW5nIHBvc2l0aW9ucyIKLSAgICBQb3NpdGlvbiBzdGFydFJhbmdlQ29tcGxp
YW50ID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHN0YXJ0KTsKLSAgICBQb3NpdGlvbiBlbmRS
YW5nZUNvbXBsaWFudCA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChlbmQpOworICAgIFBvc2l0
aW9uIHN0YXJ0UmFuZ2VDb21wbGlhbnQgPSBzdGFydC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQo
KTsKKyAgICBQb3NpdGlvbiBlbmRSYW5nZUNvbXBsaWFudCA9IGVuZC5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKTsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1
bWVudCgpLCBzdGFydFJhbmdlQ29tcGxpYW50Lm5vZGUoKSwgc3RhcnRSYW5nZUNvbXBsaWFudC5k
ZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlbmRSYW5nZUNvbXBsaWFudC5ub2RlKCksIGVuZFJh
bmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwogCiAgICAgLy8gRklYTUU6
IFRoaXMgaXMgYW4gaW5lZmZpY2llbnQgd2F5IHRvIHByZXNlcnZlIHN0eWxlIG9uIG5vZGVzIGlu
IHRoZSBwYXJhZ3JhcGggdG8gbW92ZS4gSXQKQEAgLTk3NCw3ICs5NzQsNyBAQCB2b2lkIENvbXBv
c2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAgICAgICAgIHVwZGF0ZUxheW91dCgpOwog
ICAgIH0KICAgICAgICAgCi0gICAgUmVmUHRyPFJhbmdlPiBzdGFydFRvRGVzdGluYXRpb25SYW5n
ZShSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIFBvc2l0aW9uKGRvY3VtZW50KCksIDApLCByYW5n
ZUNvbXBsaWFudEVxdWl2YWxlbnQoZGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKSkpKTsKKyAg
ICBSZWZQdHI8UmFuZ2U+IHN0YXJ0VG9EZXN0aW5hdGlvblJhbmdlKFJhbmdlOjpjcmVhdGUoZG9j
dW1lbnQoKSwgUG9zaXRpb24oZG9jdW1lbnQoKSwgMCksIGRlc3RpbmF0aW9uLmRlZXBFcXVpdmFs
ZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpKTsKICAgICBkZXN0aW5hdGlvbkluZGV4
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFRvRGVzdGluYXRpb25SYW5nZS5nZXQo
KSwgdHJ1ZSk7CiAgICAgCiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKGRlc3RpbmF0aW9uKTsKSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9u
IDc1MTA3KQorKysgV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTYsMTQgKzI1NiwxNCBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNv
bW1hbmQ6OmluaXRpYWxpemVQCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgLy8gV2UgbXVz
dCBwYXNzIHRoZSBwb3NpdGlvbnMgdGhyb3VnaCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQsIHNp
bmNlIHNvbWUgZWRpdGluZyBwb3NpdGlvbnMKKyAgICAvLyBXZSBtdXN0IHBhc3MgY2FsbCBwYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQgb24gdGhlIHBvc2l0aW9ucyBzaW5jZSBzb21lIGVkaXRpbmcg
cG9zaXRpb25zCiAgICAgLy8gdGhhdCBhcHBlYXIgaW5zaWRlIHRoZWlyIG5vZGVzIGFyZW4ndCBy
ZWFsbHkgaW5zaWRlIHRoZW0uICBbaHIsIDBdIGlzIG9uZSBleGFtcGxlLgotICAgIC8vIEZJWE1F
OiByYW5nZUNvbXBsYWludEVxdWl2YWxlbnQgc2hvdWxkIGV2ZW50dWFsbHkgYmUgbW92ZWQgaW50
byBlbmNsb3NpbmcgZWxlbWVudCBnZXR0ZXJzCisgICAgLy8gRklYTUU6IHBhcmVudEFuY2hvcmVk
RXF1aXZhbGVudCBzaG91bGQgZXZlbnR1YWxseSBiZSBtb3ZlZCBpbnRvIGVuY2xvc2luZyBlbGVt
ZW50IGdldHRlcnMKICAgICAvLyBsaWtlIHRoZSBvbmUgYmVsb3csIHNpbmNlIGVkaXRpbmcgZnVu
Y3Rpb25zIHNob3VsZCBvYnZpb3VzbHkgYWNjZXB0IGVkaXRpbmcgcG9zaXRpb25zLgogICAgIC8v
IEZJWE1FOiBQYXNzaW5nIGZhbHNlIHRvIGVuY2xvc2luZ05vZGVPZlR5cGUgdGVsbHMgaXQgdGhh
dCBpdCdzIE9LIHRvIHJldHVybiBhIG5vbi1lZGl0YWJsZQogICAgIC8vIG5vZGUuICBUaGlzIHdh
cyBkb25lIHRvIG1hdGNoIGV4aXN0aW5nIGJlaGF2aW9yLCBidXQgaXQgc2VlbXMgd3JvbmcuCi0g
ICAgbV9zdGFydEJsb2NrID0gZW5jbG9zaW5nTm9kZU9mVHlwZShyYW5nZUNvbXBsaWFudEVxdWl2
YWxlbnQobV9kb3duc3RyZWFtU3RhcnQpLCAmaXNCbG9jaywgZmFsc2UpOwotICAgIG1fZW5kQmxv
Y2sgPSBlbmNsb3NpbmdOb2RlT2ZUeXBlKHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChtX3Vwc3Ry
ZWFtRW5kKSwgJmlzQmxvY2ssIGZhbHNlKTsKKyAgICBtX3N0YXJ0QmxvY2sgPSBlbmNsb3NpbmdO
b2RlT2ZUeXBlKG1fZG93bnN0cmVhbVN0YXJ0LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCAm
aXNCbG9jaywgZmFsc2UpOworICAgIG1fZW5kQmxvY2sgPSBlbmNsb3NpbmdOb2RlT2ZUeXBlKG1f
dXBzdHJlYW1FbmQucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksICZpc0Jsb2NrLCBmYWxzZSk7
CiB9CiAKIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6c2F2ZVR5cGluZ1N0eWxlU3RhdGUo
KQpAQCAtNjA5LDggKzYwOSw4IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VQ
YXJhZ3IKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQo
c3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpKSwgcmFuZ2VDb21wbGlhbnRF
cXVpdmFsZW50KGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkpKTsKLSAgICBS
ZWZQdHI8UmFuZ2U+IHJhbmdlVG9CZVJlcGxhY2VkID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgp
LCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQobWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVu
dCgpKSwgcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2
YWxlbnQoKSkpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3Vt
ZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNo
b3JlZEVxdWl2YWxlbnQoKSwgZW5kT2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5w
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZVRvQmVS
ZXBsYWNlZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVw
RXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBtZXJnZURlc3RpbmF0aW9u
LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwogICAgIGlmICgh
ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmNsaWVudCgpLT5zaG91bGRNb3ZlUmFuZ2VB
ZnRlckRlbGV0ZShyYW5nZS5nZXQoKSwgcmFuZ2VUb0JlUmVwbGFjZWQuZ2V0KCkpKQogICAgICAg
ICByZXR1cm47CiAgICAgCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gNzUxMDcpCisrKyBX
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQyLDcgKzY0Miw3
IEBAIFdyaXRpbmdEaXJlY3Rpb24gRWRpdG9yOjp0ZXh0RGlyZWN0aW9uRm8KICAgICBpZiAobV9m
cmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkgewogICAgICAgICBlbmQgPSBtX2ZyYW1lLT5z
ZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuZW5kKCkudXBzdHJlYW0oKTsKIAotICAgICAgICBOb2Rl
KiBwYXN0TGFzdCA9IFJhbmdlOjpjcmVhdGUobV9mcmFtZS0+ZG9jdW1lbnQoKSwgcmFuZ2VDb21w
bGlhbnRFcXVpdmFsZW50KHBvc2l0aW9uKSwgcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGVuZCkp
LT5wYXN0TGFzdE5vZGUoKTsKKyAgICAgICAgTm9kZSogcGFzdExhc3QgPSBSYW5nZTo6Y3JlYXRl
KG1fZnJhbWUtPmRvY3VtZW50KCksIHBvc2l0aW9uLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgp
LCBlbmQucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpLT5wYXN0TGFzdE5vZGUoKTsKICAgICAg
ICAgZm9yIChOb2RlKiBuID0gbm9kZTsgbiAmJiBuICE9IHBhc3RMYXN0OyBuID0gbi0+dHJhdmVy
c2VOZXh0Tm9kZSgpKSB7CiAgICAgICAgICAgICBpZiAoIW4tPmlzU3R5bGVkRWxlbWVudCgpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTc4Miw3ICsxNzgyLDcgQEAgdm9pZCBFZGl0
b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhibwogICAgICAgICBpZiAocG9zaXRpb24uaXNO
dWxsKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBQb3NpdGlvbiBy
YW5nZUNvbXBsaWFudFBvc2l0aW9uID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHBvc2l0aW9u
KTsKKyAgICAgICAgUG9zaXRpb24gcmFuZ2VDb21wbGlhbnRQb3NpdGlvbiA9IHBvc2l0aW9uLnBh
cmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgICAgICBzcGVsbGluZ1NlYXJjaFJhbmdlLT5z
ZXRTdGFydChyYW5nZUNvbXBsaWFudFBvc2l0aW9uLm5vZGUoKSwgcmFuZ2VDb21wbGlhbnRQb3Np
dGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlYyk7CiAgICAgICAgIHN0YXJ0ZWRXaXRo
U2VsZWN0aW9uID0gZmFsc2U7IC8vIHdvbid0IG5lZWQgdG8gd3JhcAogICAgIH0KSW5kZXg6IFdl
YkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAJKHJldmlzaW9uIDc1MTA3
KQorKysgV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIGJvb2wgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6c2hv
dWxkVXNlQnIKICAgICAvLyBBbiBlZGl0aW5nIHBvc2l0aW9uIGxpa2UgW2lucHV0LCAwXSBhY3R1
YWxseSByZWZlcnMgdG8gdGhlIHBvc2l0aW9uIGJlZm9yZQogICAgIC8vIHRoZSBpbnB1dCBlbGVt
ZW50LCBhbmQgaW4gdGhhdCBjYXNlIHdlIG5lZWQgdG8gY2hlY2sgdGhlIGlucHV0IGVsZW1lbnQn
cwogICAgIC8vIHBhcmVudCdzIHJlbmRlcmVyLgotICAgIFBvc2l0aW9uIHAocmFuZ2VDb21wbGlh
bnRFcXVpdmFsZW50KGluc2VydGlvblBvcykpOworICAgIFBvc2l0aW9uIHAoaW5zZXJ0aW9uUG9z
LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKICAgICByZXR1cm4gcC5ub2RlKCktPnJlbmRl
cmVyKCkgJiYgIXAubm9kZSgpLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUo
KTsKIH0KIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNv
bW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhT
ZXBhcmF0b3JDb21tYW5kLmNwcAkocmV2aXNpb24gNzUxMDcpCisrKyBXZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
OSw4ICsxNTksOCBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvCiAg
ICAgICAgIGFmZmluaXR5ID0gZW5kaW5nU2VsZWN0aW9uKCkuYWZmaW5pdHkoKTsKICAgICB9CiAg
ICAgCi0gICAgLy8gRklYTUU6IFRoZSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQgY29udmVyc2lv
biBuZWVkcyB0byBiZSBtb3ZlZCBpbnRvIGVuY2xvc2luZ0Jsb2NrLgotICAgIE5vZGUqIHN0YXJ0
QmxvY2tOb2RlID0gZW5jbG9zaW5nQmxvY2socmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGluc2Vy
dGlvblBvc2l0aW9uKS5ub2RlKCkpOworICAgIC8vIEZJWE1FOiBUaGUgcGFyZW50QW5jaG9yZWRF
cXVpdmFsZW50IGNvbnZlcnNpb24gbmVlZHMgdG8gYmUgbW92ZWQgaW50byBlbmNsb3NpbmdCbG9j
ay4KKyAgICBOb2RlKiBzdGFydEJsb2NrTm9kZSA9IGVuY2xvc2luZ0Jsb2NrKGluc2VydGlvblBv
c2l0aW9uLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLmNvbnRhaW5lck5vZGUoKSk7CiAgICAg
UG9zaXRpb24gY2Fub25pY2FsUG9zID0gVmlzaWJsZVBvc2l0aW9uKGluc2VydGlvblBvc2l0aW9u
KS5kZWVwRXF1aXZhbGVudCgpOwogICAgIEVsZW1lbnQqIHN0YXJ0QmxvY2sgPSBzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4oc3RhcnRCbG9ja05vZGUpOwogICAgIGlmICghc3RhcnRCbG9ja05vZGUKSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2aXNp
b24gNzUxMDcpCisrKyBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NjgsNyArNTY4LDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlU3R5
bGVTcGFuc0JlZm9yZUluc2VydAogICAgIE5vZGUqIHNvdXJjZURvY3VtZW50U3R5bGVTcGFuID0g
dG9wTm9kZTsKICAgICBSZWZQdHI8Tm9kZT4gY29waWVkUmFuZ2VTdHlsZVNwYW4gPSBzb3VyY2VE
b2N1bWVudFN0eWxlU3Bhbi0+Zmlyc3RDaGlsZCgpOwogCi0gICAgUmVmUHRyPEVkaXRpbmdTdHls
ZT4gc3R5bGVBdEluc2VydGlvblBvcyA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHJhbmdlQ29tcGxp
YW50RXF1aXZhbGVudChpbnNlcnRpb25Qb3MpKTsKKyAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBz
dHlsZUF0SW5zZXJ0aW9uUG9zID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5zZXJ0aW9uUG9zLnBh
cmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKICAgICBTdHJpbmcgc3R5bGVUZXh0ID0gc3R5bGVB
dEluc2VydGlvblBvcy0+c3R5bGUoKS0+Y3NzVGV4dCgpOwogCiAgICAgLy8gRklYTUU6IFRoaXMg
c3RyaW5nIGNvbXBhcmlzb24gaXMgYSBuYWl2ZSB3YXkgb2YgY29tcGFyaW5nIHR3byBzdHlsZXMu
CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAkocmV2aXNpb24gNzUxMDcpCisr
KyBXZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTk3LDggKzU5Nyw4IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IG1ha2VSYW5nZShjb25zdCBWaXNpYmwK
ICAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4g
MDsKICAgICAKLSAgICBQb3NpdGlvbiBzID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHN0YXJ0
KTsKLSAgICBQb3NpdGlvbiBlID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGVuZCk7CisgICAg
UG9zaXRpb24gcyA9IHN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFs
ZW50KCk7CisgICAgUG9zaXRpb24gZSA9IGVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpOwogICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKHMubm9kZSgpLT5kb2N1
bWVudCgpLCBzLm5vZGUoKSwgcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlLm5vZGUoKSwg
ZS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKIH0KIApAQCAtNjE4LDcgKzYxOCw3IEBAIGJv
b2wgc2V0U3RhcnQoUmFuZ2UgKnIsIGNvbnN0IFZpc2libGVQb3MKIHsKICAgICBpZiAoIXIpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBQb3NpdGlvbiBwID0gcmFuZ2VDb21wbGlhbnRFcXVp
dmFsZW50KHZpc2libGVQb3NpdGlvbik7CisgICAgUG9zaXRpb24gcCA9IHZpc2libGVQb3NpdGlv
bi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIGludCBj
b2RlID0gMDsKICAgICByLT5zZXRTdGFydChwLm5vZGUoKSwgcC5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpLCBjb2RlKTsKICAgICByZXR1cm4gY29kZSA9PSAwOwpAQCAtNjI4LDcgKzYyOCw3IEBA
IGJvb2wgc2V0RW5kKFJhbmdlICpyLCBjb25zdCBWaXNpYmxlUG9zaXQKIHsKICAgICBpZiAoIXIp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBQb3NpdGlvbiBwID0gcmFuZ2VDb21wbGlhbnRF
cXVpdmFsZW50KHZpc2libGVQb3NpdGlvbik7CisgICAgUG9zaXRpb24gcCA9IHZpc2libGVQb3Np
dGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIGlu
dCBjb2RlID0gMDsKICAgICByLT5zZXRFbmQocC5ub2RlKCksIHAuZGVwcmVjYXRlZEVkaXRpbmdP
ZmZzZXQoKSwgY29kZSk7CiAgICAgcmV0dXJuIGNvZGUgPT0gMDsKSW5kZXg6IFdlYkNvcmUvZWRp
dGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVNlbGVjdGlvbi5jcHAJKHJldmlzaW9uIDc1MTA3KQorKysgV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVTZWxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsOCArMTIxLDggQEAg
UGFzc1JlZlB0cjxSYW5nZT4gVmlzaWJsZVNlbGVjdGlvbjo6ZmlycwogewogICAgIGlmIChpc05v
bmUoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgUG9zaXRpb24gc3RhcnQgPSByYW5nZUNvbXBs
aWFudEVxdWl2YWxlbnQobV9zdGFydCk7Ci0gICAgUG9zaXRpb24gZW5kID0gcmFuZ2VDb21wbGlh
bnRFcXVpdmFsZW50KG1fZW5kKTsKKyAgICBQb3NpdGlvbiBzdGFydCA9IG1fc3RhcnQucGFyZW50
QW5jaG9yZWRFcXVpdmFsZW50KCk7CisgICAgUG9zaXRpb24gZW5kID0gbV9lbmQucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCk7CiAgICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUoc3RhcnQubm9kZSgp
LT5kb2N1bWVudCgpLCBzdGFydCwgZW5kKTsKIH0KIApAQCAtMTQ2LDcgKzE0Niw3IEBAIFBhc3NS
ZWZQdHI8UmFuZ2U+IFZpc2libGVTZWxlY3Rpb246OnRvTm8KICAgICAgICAgLy8gSWYgdGhlIHNl
bGVjdGlvbiBpcyBhIGNhcmV0LCBtb3ZlIHRoZSByYW5nZSBzdGFydCB1cHN0cmVhbS4gVGhpcyBo
ZWxwcyB1cyBtYXRjaAogICAgICAgICAvLyB0aGUgY29udmVudGlvbnMgb2YgdGV4dCBlZGl0b3Jz
IHRlc3RlZCwgd2hpY2ggbWFrZSBzdHlsZSBkZXRlcm1pbmF0aW9ucyBiYXNlZAogICAgICAgICAv
LyBvbiB0aGUgY2hhcmFjdGVyIGJlZm9yZSB0aGUgY2FyZXQsIGlmIGFueS4gCi0gICAgICAgIHMg
PSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQobV9zdGFydC51cHN0cmVhbSgpKTsKKyAgICAgICAg
cyA9IG1fc3RhcnQudXBzdHJlYW0oKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICAg
ICAgZSA9IHM7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gSWYgdGhlIHNlbGVjdGlvbiBpcyBh
IHJhbmdlLCBzZWxlY3QgdGhlIG1pbmltdW0gcmFuZ2UgdGhhdCBlbmNvbXBhc3NlcyB0aGUgc2Vs
ZWN0aW9uLgpAQCAtMTcwLDggKzE3MCw4IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IFZpc2libGVTZWxl
Y3Rpb246OnRvTm8KICAgICAgICAgICAgIHMgPSBlOwogICAgICAgICAgICAgZSA9IHRtcDsKICAg
ICAgICAgfQotICAgICAgICBzID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHMpOwotICAgICAg
ICBlID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGUpOworICAgICAgICBzID0gcy5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKTsKKyAgICAgICAgZSA9IGUucGFyZW50QW5jaG9yZWRFcXVpdmFs
ZW50KCk7CiAgICAgfQogCiAgICAgLy8gVmlzaWJsZVNlbGVjdGlvbnMgYXJlIHN1cHBvc2VkIHRv
IGFsd2F5cyBiZSB2YWxpZC4gIFRoaXMgY29uc3RydWN0b3Igd2lsbCBBU1NFUlQKQEAgLTIwNCw3
ICsyMDQsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxSYW5nZT4gbWFrZVNlYXJjaFJhbmdlCiAgICAg
UmVmUHRyPFJhbmdlPiBzZWFyY2hSYW5nZShSYW5nZTo6Y3JlYXRlKGQpKTsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKIAotICAgIFBvc2l0aW9uIHN0YXJ0KHJhbmdlQ29tcGxpYW50RXF1aXZh
bGVudChwb3MpKTsKKyAgICBQb3NpdGlvbiBzdGFydChwb3MucGFyZW50QW5jaG9yZWRFcXVpdmFs
ZW50KCkpOwogICAgIHNlYXJjaFJhbmdlLT5zZWxlY3ROb2RlQ29udGVudHMoYm91bmRhcnksIGVj
KTsKICAgICBzZWFyY2hSYW5nZS0+c2V0U3RhcnQoc3RhcnQubm9kZSgpLCBzdGFydC5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpLCBlYyk7CiAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9odG1sZWRp
dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAko
cmV2aXNpb24gNzUxMDcpCisrKyBXZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzIsNTcgKzMzMiw5IEBAIE5vZGUqIGVuY2xvc2luZ0Jsb2NrKE5vZGUq
IG5vZGUpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQqPihlbmNsb3NpbmdOb2RlT2ZU
eXBlKFBvc2l0aW9uKG5vZGUsIDApLCBpc0Jsb2NrKSk7CiB9CiAKLS8vIEludGVybmFsbHkgZWRp
dGluZyB1c2VzICJpbnZhbGlkIiBwb3NpdGlvbnMgZm9yIGhpc3RvcmljYWwgcmVhc29ucy4gIEZv
cgotLy8gZXhhbXBsZSwgaW4gPGRpdj48aW1nIC8+PC9kaXY+LCBFZGl0aW5nIG1pZ2h0IHVzZSAo
aW1nLCAxKSBmb3IgdGhlIHBvc2l0aW9uCi0vLyBhZnRlciA8aW1nPiwgYnV0IHdlIGhhdmUgdG8g
Y29udmVydCB0aGF0IHRvIChkaXYsIDEpIGJlZm9yZSBoYW5kaW5nIHRoZQotLy8gcG9zaXRpb24g
dG8gYSBSYW5nZSBvYmplY3QuICBJZGVhbGx5IGFsbCBpbnRlcm5hbCBwb3NpdGlvbnMgc2hvdWxk
Ci0vLyBiZSAicmFuZ2UgY29tcGxpYW50IiBmb3Igc2ltcGxpY2l0eS4KLVBvc2l0aW9uIHJhbmdl
Q29tcGxpYW50RXF1aXZhbGVudChjb25zdCBQb3NpdGlvbiYgcG9zKQotewotICAgIGlmIChwb3Mu
aXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBQb3NpdGlvbigpOwotCi0gICAgTm9kZSogbm9kZSA9
IHBvcy5ub2RlKCk7Ci0KLSAgICBpZiAocG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPD0g
MCkgewotICAgICAgICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpICYmIChlZGl0aW5nSWdub3Jlc0Nv
bnRlbnQobm9kZSkgfHwgaXNUYWJsZUVsZW1lbnQobm9kZSkpKQotICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUpOwotICAgICAgICByZXR1cm4gUG9zaXRp
b24obm9kZSwgMCk7Ci0gICAgfQotCi0gICAgaWYgKG5vZGUtPm9mZnNldEluQ2hhcmFjdGVycygp
KQotICAgICAgICByZXR1cm4gUG9zaXRpb24obm9kZSwgbWluKG5vZGUtPm1heENoYXJhY3Rlck9m
ZnNldCgpLCBwb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSkpOwotCi0gICAgaW50IG1heENv
bXBsaWFudE9mZnNldCA9IG5vZGUtPmNoaWxkTm9kZUNvdW50KCk7Ci0gICAgaWYgKHBvcy5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpID4gbWF4Q29tcGxpYW50T2Zmc2V0KSB7Ci0gICAgICAgIGlm
IChub2RlLT5wYXJlbnROb2RlKCkpCi0gICAgICAgICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVu
dEFmdGVyTm9kZShub2RlKTsKLQotICAgICAgICAvLyB0aGVyZSBpcyBubyBvdGhlciBvcHRpb24g
YXQgdGhpcyBwb2ludCB0aGFuIHRvCi0gICAgICAgIC8vIHVzZSB0aGUgaGlnaGVzdCBhbGxvd2Vk
IHBvc2l0aW9uIGluIHRoZSBub2RlCi0gICAgICAgIHJldHVybiBQb3NpdGlvbihub2RlLCBtYXhD
b21wbGlhbnRPZmZzZXQpOwotICAgIH0gCi0KLSAgICAvLyBFZGl0aW5nIHNob3VsZCBuZXZlciBn
ZW5lcmF0ZSBwb3NpdGlvbnMgbGlrZSB0aGlzLgotICAgIGlmICgocG9zLmRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0KCkgPCBtYXhDb21wbGlhbnRPZmZzZXQpICYmIGVkaXRpbmdJZ25vcmVzQ29udGVu
dChub2RlKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IG5vZGUtPnBhcmVudE5vZGUoKSA/IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUpIDog
UG9zaXRpb24obm9kZSwgMCk7Ci0gICAgfQotICAgIAotICAgIGlmIChwb3MuZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKSA9PSBtYXhDb21wbGlhbnRPZmZzZXQgJiYgKGVkaXRpbmdJZ25vcmVzQ29u
dGVudChub2RlKSB8fCBpc1RhYmxlRWxlbWVudChub2RlKSkpCi0gICAgICAgIHJldHVybiBwb3Np
dGlvbkluUGFyZW50QWZ0ZXJOb2RlKG5vZGUpOwotICAgIAotICAgIHJldHVybiBQb3NpdGlvbihw
b3MpOwotfQotCi1Qb3NpdGlvbiByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB2cG9zKQotewotICAgIHJldHVybiByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQo
dnBvcy5kZWVwRXF1aXZhbGVudCgpKTsKLX0KLQogLy8gVGhpcyBtZXRob2QgaXMgdXNlZCB0byBj
cmVhdGUgcG9zaXRpb25zIGluIHRoZSBET00uIEl0IHJldHVybnMgdGhlIG1heGltdW0gdmFsaWQg
b2Zmc2V0CiAvLyBpbiBhIG5vZGUuICBJdCByZXR1cm5zIDEgZm9yIHNvbWUgZWxlbWVudHMgZXZl
biB0aG91Z2ggdGhleSBkbyBub3QgaGF2ZSBjaGlsZHJlbiwgd2hpY2gKLS8vIGNyZWF0ZXMgdGVj
aG5pY2FsbHkgaW52YWxpZCBET00gUG9zaXRpb25zLiAgQmUgc3VyZSB0byBjYWxsIHJhbmdlQ29t
cGxpYW50RXF1aXZhbGVudAorLy8gY3JlYXRlcyB0ZWNobmljYWxseSBpbnZhbGlkIERPTSBQb3Np
dGlvbnMuICBCZSBzdXJlIHRvIGNhbGwgcGFyZW50QW5jaG9yZWRFcXVpdmFsZW50CiAvLyBvbiBh
IFBvc2l0aW9uIGJlZm9yZSB1c2luZyBpdCB0byBjcmVhdGUgYSBET00gUmFuZ2UsIG9yIGFuIGV4
Y2VwdGlvbiB3aWxsIGJlIHRocm93bi4KIGludCBsYXN0T2Zmc2V0Rm9yRWRpdGluZyhjb25zdCBO
b2RlKiBub2RlKQogewpAQCAtMTA4MSw3ICsxMDMzLDcgQEAgaW50IGluZGV4Rm9yVmlzaWJsZVBv
c2l0aW9uKGNvbnN0IFZpc2libAogICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIFBvc2l0aW9uIHAodmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVp
dmFsZW50KCkpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHAubm9k
ZSgpLT5kb2N1bWVudCgpLCBQb3NpdGlvbihwLm5vZGUoKS0+ZG9jdW1lbnQoKSwgMCksIHJhbmdl
Q29tcGxpYW50RXF1aXZhbGVudChwKSk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdl
OjpjcmVhdGUocC5ub2RlKCktPmRvY3VtZW50KCksIFBvc2l0aW9uKHAubm9kZSgpLT5kb2N1bWVu
dCgpLCAwKSwgcC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiAgICAgcmV0dXJuIFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOwogfQogCkluZGV4OiBXZWJD
b3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
aHRtbGVkaXRpbmcuaAkocmV2aXNpb24gNzUxMDcpCisrKyBXZWJDb3JlL2VkaXRpbmcvaHRtbGVk
aXRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDkgKzEwMSw2IEBAIGJvb2wgaXNOb2RlSW5U
ZXh0Rm9ybUNvbnRyb2woTm9kZSogbm9kZSkKICAgICAKIC8vIEZ1bmN0aW9ucyByZXR1cm5pbmcg
UG9zaXRpb24KICAgICAKLVBvc2l0aW9uIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChjb25zdCBQ
b3NpdGlvbiYpOwotUG9zaXRpb24gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpOwotICAgIAogUG9zaXRpb24gbmV4dENhbmRpZGF0ZShjb25zdCBQb3NpdGlv
biYpOwogUG9zaXRpb24gcHJldmlvdXNDYW5kaWRhdGUoY29uc3QgUG9zaXRpb24mKTsKICAgICAK
SW5kZXg6IFdlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAJKHJldmlzaW9uIDc1MTA3KQorKysgV2Vi
Q29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw4ICs1
Nyw4IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNCb3VuZGFyeSgKICAgICAgICAg
cmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogCiAgICAgRG9jdW1lbnQqIGQgPSBib3VuZGFyeS0+
ZG9jdW1lbnQoKTsKLSAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVu
dChQb3NpdGlvbihib3VuZGFyeSwgMCkpOwotICAgIFBvc2l0aW9uIGVuZCA9IHJhbmdlQ29tcGxp
YW50RXF1aXZhbGVudChwb3MpOworICAgIFBvc2l0aW9uIHN0YXJ0ID0gUG9zaXRpb24oYm91bmRh
cnksIDApLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOworICAgIFBvc2l0aW9uIGVuZCA9IHBv
cy5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICBSZWZQdHI8UmFuZ2U+IHNlYXJjaFJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShkKTsKICAgICAKICAgICBWZWN0b3I8VUNoYXIsIDEwMjQ+IHN0
cmluZzsKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3Vu
ZGFyeShjb25zCiAKICAgICBEb2N1bWVudCogZCA9IGJvdW5kYXJ5LT5kb2N1bWVudCgpOwogICAg
IFJlZlB0cjxSYW5nZT4gc2VhcmNoUmFuZ2UoZC0+Y3JlYXRlUmFuZ2UoKSk7Ci0gICAgUG9zaXRp
b24gc3RhcnQocmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHBvcykpOworICAgIFBvc2l0aW9uIHN0
YXJ0KHBvcy5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiAKICAgICBWZWN0b3I8VUNoYXIs
IDEwMjQ+IHN0cmluZzsKICAgICB1bnNpZ25lZCBwcmVmaXhMZW5ndGggPSAwOwpJbmRleDogV2Vi
Q29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RP
TVNlbGVjdGlvbi5jcHAJKHJldmlzaW9uIDc1MTA3KQorKysgV2ViQ29yZS9wYWdlL0RPTVNlbGVj
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDIzICs3NiwyMyBAQCBjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiBET01TZWxlY3Rpb246OnZpCiBzdGF0aWMgUG9zaXRpb24gYW5jaG9yUG9zaXRp
b24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewogICAgIFBvc2l0aW9uIGFu
Y2hvciA9IHNlbGVjdGlvbi5pc0Jhc2VGaXJzdCgpID8gc2VsZWN0aW9uLnN0YXJ0KCkgOiBzZWxl
Y3Rpb24uZW5kKCk7Ci0gICAgcmV0dXJuIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChhbmNob3Ip
OworICAgIHJldHVybiBhbmNob3IucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiB9CiAKIHN0
YXRpYyBQb3NpdGlvbiBmb2N1c1Bvc2l0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVj
dGlvbikKIHsKICAgICBQb3NpdGlvbiBmb2N1cyA9IHNlbGVjdGlvbi5pc0Jhc2VGaXJzdCgpID8g
c2VsZWN0aW9uLmVuZCgpIDogc2VsZWN0aW9uLnN0YXJ0KCk7Ci0gICAgcmV0dXJuIHJhbmdlQ29t
cGxpYW50RXF1aXZhbGVudChmb2N1cyk7CisgICAgcmV0dXJuIGZvY3VzLnBhcmVudEFuY2hvcmVk
RXF1aXZhbGVudCgpOwogfQogCiBzdGF0aWMgUG9zaXRpb24gYmFzZVBvc2l0aW9uKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKIHsKLSAgICByZXR1cm4gcmFuZ2VDb21wbGlhbnRF
cXVpdmFsZW50KHNlbGVjdGlvbi5iYXNlKCkpOworICAgIHJldHVybiBzZWxlY3Rpb24uYmFzZSgp
LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogfQogCiBzdGF0aWMgUG9zaXRpb24gZXh0ZW50
UG9zaXRpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewotICAgIHJldHVy
biByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoc2VsZWN0aW9uLmV4dGVudCgpKTsKKyAgICByZXR1
cm4gc2VsZWN0aW9uLmV4dGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogfQogCiBO
b2RlKiBET01TZWxlY3Rpb246OmFuY2hvck5vZGUoKSBjb25zdApJbmRleDogV2ViS2l0L21hYy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1
MTA3KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NiBAQAorMjAxMS0wMS0wNSAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0Bnb29nbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0aW5nIHRv
IHVzZSBQb3NpdGlvbjo6cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50IGluc3RlYWQgb2YKKyAgICAg
ICAgdGhlIG9sZCBodG1sZWRpdGluZyByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQuCisKKyAgICAg
ICAgcmVtb3ZlIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudCBhbmQgcmVwbGFjZSBpdCB3aXRoIFBv
c2l0aW9uIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI1MDU3CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAo
LVtXZWJGcmFtZSBfc21hcnREZWxldGVSYW5nZUZvclByb3Bvc2VkUmFuZ2U6XSk6CisKIDIwMTEt
MDEtMDQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNp
b24gNzUxMDcpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTgwMSw4ICs4MDEsOCBAQCAtIChET01SYW5nZSAqKV9zbWFydERlbGV0ZVJhbmdlRm9y
UHJvcG9zCiAgICAgaWYgKG5ld0VuZC5pc051bGwoKSkKICAgICAgICAgbmV3RW5kID0gZW5kOwog
Ci0gICAgbmV3U3RhcnQgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQobmV3U3RhcnQpOwotICAg
IG5ld0VuZCA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChuZXdFbmQpOworICAgIG5ld1N0YXJ0
ID0gbmV3U3RhcnQucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CisgICAgbmV3RW5kID0gbmV3
RW5kLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogCiAgICAgUmVmUHRyPFJhbmdlPiByYW5n
ZSA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCktPmNyZWF0ZVJhbmdlKCk7CiAgICAg
aW50IGV4Y2VwdGlvbiA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79298</attachid>
            <date>2011-01-18 11:17:44 -0800</date>
            <delta_ts>2011-01-18 14:09:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-25057-20110118111742.patch</filename>
            <type>text/plain</type>
            <size>29003</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2MDM4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTEtMDEtMTggIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtl
IE5pd2EuCisKKyAgICAgICAgUmVwbGFjZWQgcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50IHdpdGgg
UG9zaXRpb246OnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudAorICAgICAgICBhbmQgc2ltcGxpZmll
ZCB0aGUgbG9naWMgYSBiaXQuIFVuZm9ydHVuYXRlbHksIFRhYmxlcyBhbmQgc29tZSBsZWdhY3kK
KyAgICAgICAgZWRpdGluZyBwb3NpdGlvbnMgc3RpbGwgbmVlZCB0byBiZSBoYW5kbGVkIHNwZWNp
ZmljYWxseS4KKworICAgICAgICByZW1vdmUgcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50IGFuZCBy
ZXBsYWNlIGl0IHdpdGggUG9zaXRpb24gbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjUwNTcKKworICAgICAgICBObyBuZXcgdGVzdHMgYXMg
dGhpcyBpcyBhIHJlZmFjdG9yIHRoYXQgZG9lc24ndCBjaGFuZ2UgYmVoYXZpb3IuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQpOgorICAgICAgICAqIGRv
bS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6cGFyZW50QW5jaG9y
ZWRFcXVpdmFsZW50KToKKyAgICAgICAgKiBkb20vUG9zaXRpb24uaDoKKyAgICAgICAgKiBlZGl0
aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVD
b21tYW5kOjphcHBseUJsb2NrU3R5bGUpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Omlu
c2VydE5vZGVBdCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92
ZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjppbml0aWFsaXpl
UG9zaXRpb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6
Om1lcmdlUGFyYWdyYXBocyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjp0ZXh0RGlyZWN0aW9uRm9yU2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKToKKyAgICAgICAgKiBl
ZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
ZXJ0TGluZUJyZWFrQ29tbWFuZDo6c2hvdWxkVXNlQnJlYWtFbGVtZW50KToKKyAgICAgICAgKiBl
ZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAg
ICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpoYW5kbGVTdHlsZVNwYW5zQmVmb3JlSW5zZXJ0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL1Zp
c2libGVQb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlUmFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0RW5kKToKKyAgICAg
ICAgKiBlZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Vmlz
aWJsZVNlbGVjdGlvbjo6Zmlyc3RSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2Vs
ZWN0aW9uOjp0b05vcm1hbGl6ZWRSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjptYWtlU2VhcmNo
UmFuZ2UpOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24pOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVk
aXRpbmcuaDoKKyAgICAgICAgKiBlZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cHJldmlvdXNCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0Qm91bmRh
cnkpOgorICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmFuY2hvclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmZvY3VzUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6YmFzZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dGVudFBv
c2l0aW9uKToKKwogMjAxMS0wMS0xOCAgSGVsZGVyIENvcnJlaWEgIDxoZWxkZXJAc2VuY2hhLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA3NjAzOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC01NDUsNyArNTQ1LDYgQEAgX19aTjdX
ZWJDb3JlMjRjcmVhdGVGcmFnbWVudEZyb21NYXJrdXBFUAogX19aTjdXZWJDb3JlMjRkZWNvZGVV
UkxFc2NhcGVTZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbkVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTI0bm90aWZ5SGlz
dG9yeUl0ZW1DaGFuZ2VkRQotX19aTjdXZWJDb3JlMjRyYW5nZUNvbXBsaWFudEVxdWl2YWxlbnRF
UktOU184UG9zaXRpb25FCiBfX1pON1dlYkNvcmUyNUhpc3RvcnlQcm9wZXJ0eUxpc3RXcml0ZXIx
MXJlbGVhc2VEYXRhRXYKIF9fWk43V2ViQ29yZTI1SGlzdG9yeVByb3BlcnR5TGlzdFdyaXRlcjEy
d3JpdGVPYmplY3RzRVJOU18zMEJpbmFyeVByb3BlcnR5TGlzdE9iamVjdFN0cmVhbUUKIF9fWk43
V2ViQ29yZTI1SGlzdG9yeVByb3BlcnR5TGlzdFdyaXRlcjE2d3JpdGVIaXN0b3J5SXRlbUVSTlNf
MzBCaW5hcnlQcm9wZXJ0eUxpc3RPYmplY3RTdHJlYW1FUE5TXzExSGlzdG9yeUl0ZW1FCkBAIC0x
MTk1LDYgKzExOTQsNyBAQCBfX1pOSzdXZWJDb3JlOERvY3VtZW50NmRvbWFpbkV2CiBfX1pOSzdX
ZWJDb3JlOEludFBvaW50Y3Y3Q0dQb2ludEV2CiBfX1pOSzdXZWJDb3JlOEludFBvaW50Y3Y4X05T
UG9pbnRFdgogX19aTks3V2ViQ29yZThQb3NpdGlvbjEwZG93bnN0cmVhbUVOU18yN0VkaXRpbmdC
b3VuZGFyeUNyb3NzaW5nUnVsZUUKK19fWk5LN1dlYkNvcmU4UG9zaXRpb24yNHBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudEV2CiBfX1pOSzdXZWJDb3JlOFBvc2l0aW9uMjVsZWFkaW5nV2hpdGVzcGFj
ZVBvc2l0aW9uRU5TXzlFQWZmaW5pdHlFYgogX19aTks3V2ViQ29yZThQb3NpdGlvbjI2dHJhaWxp
bmdXaGl0ZXNwYWNlUG9zaXRpb25FTlNfOUVBZmZpbml0eUViCiBfX1pOSzdXZWJDb3JlOFBvc2l0
aW9uOHVwc3RyZWFtRU5TXzI3RWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlRQpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA3NjAzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMDEsNyArMTMwMSw3IEBAIFBhc3NS
ZWZQdHI8UmFuZ2U+IERvY3VtZW50OjpjYXJldFJhbmdlRnIKICAgICBpZiAodmlzaWJsZVBvc2l0
aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFBvc2l0aW9uIHJhbmdlQ29t
cGxpYW50UG9zaXRpb24gPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQodmlzaWJsZVBvc2l0aW9u
KTsKKyAgICBQb3NpdGlvbiByYW5nZUNvbXBsaWFudFBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9u
LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiAgICAgcmV0dXJu
IFJhbmdlOjpjcmVhdGUodGhpcywgcmFuZ2VDb21wbGlhbnRQb3NpdGlvbiwgcmFuZ2VDb21wbGlh
bnRQb3NpdGlvbik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAkocmV2aXNpb24g
NzYwMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDYsNiArMTQ2LDI3IEBAIGludCBQb3NpdGlvbjo6Y29tcHV0ZU9mZnNldEluQ29udGFp
bmVyTm8KICAgICByZXR1cm4gMDsKIH0KIAorLy8gTmVpZ2hib3ItYW5jaG9yZWQgcG9zaXRpb25z
IGFyZSBpbnZhbGlkIERPTSBwb3NpdGlvbnMsIHNvIHRoZXkgbmVlZCB0byBiZQorLy8gZml4ZWQg
dXAgYmVmb3JlIGhhbmRpbmcgdGhlbSBvZmYgdG8gdGhlIFJhbmdlIG9iamVjdC4KK1Bvc2l0aW9u
IFBvc2l0aW9uOjpwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSBjb25zdAoreworICAgIGlmICgh
bV9hbmNob3JOb2RlKQorICAgICAgICByZXR1cm4gUG9zaXRpb24oKTsKKyAgICAKKyAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgb25seSBiZSBuZWNlc3NhcnkgZm9yIGxlZ2FjeSBwb3NpdGlvbnMs
IGJ1dCBpcyBhbHNvIG5lZWRlZCBmb3IgcG9zaXRpb25zIGJlZm9yZSBhbmQgYWZ0ZXIgVGFibGVz
CisgICAgaWYgKG1fb2Zmc2V0IDw9IDApIHsKKyAgICAgICAgaWYgKG1fYW5jaG9yTm9kZS0+cGFy
ZW50Tm9kZSgpICYmIChlZGl0aW5nSWdub3Jlc0NvbnRlbnQobV9hbmNob3JOb2RlLmdldCgpKSB8
fCBpc1RhYmxlRWxlbWVudChtX2FuY2hvck5vZGUuZ2V0KCkpKSkKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShtX2FuY2hvck5vZGUuZ2V0KCkpOworICAgICAg
ICByZXR1cm4gUG9zaXRpb24obV9hbmNob3JOb2RlLCAwLCBQb3NpdGlvbklzT2Zmc2V0SW5BbmNo
b3IpOworICAgIH0KKyAgICBpZiAoIW1fYW5jaG9yTm9kZS0+b2Zmc2V0SW5DaGFyYWN0ZXJzKCkg
JiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0KSA9PSBtX2FuY2hvck5vZGUtPmNoaWxk
Tm9kZUNvdW50KCkKKyAgICAgICAgJiYgKGVkaXRpbmdJZ25vcmVzQ29udGVudChtX2FuY2hvck5v
ZGUuZ2V0KCkpIHx8IGlzVGFibGVFbGVtZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkpKSB7CisgICAg
ICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKG1fYW5jaG9yTm9kZS5nZXQoKSk7
CisgICAgfQorCisgICAgcmV0dXJuIFBvc2l0aW9uKGNvbnRhaW5lck5vZGUoKSwgY29tcHV0ZU9m
ZnNldEluQ29udGFpbmVyTm9kZSgpLCBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOworfQorCiBO
b2RlKiBQb3NpdGlvbjo6Y29tcHV0ZU5vZGVCZWZvcmVQb3NpdGlvbigpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2FuY2hvck5vZGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAkocmV2aXNpb24gNzYw
MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
ODAsNiArODAsNyBAQCBwdWJsaWM6CiAgICAgLy8gd2lsbCByZXR1cm4gaW1nLT5wYXJlbnROb2Rl
KCkgYW5kIGltZy0+bm9kZUluZGV4KCkgZnJvbSB0aGVzZSBmdW5jdGlvbnMuCiAgICAgTm9kZSog
Y29udGFpbmVyTm9kZSgpIGNvbnN0OyAvLyBOVUxMIGZvciBhIGJlZm9yZS9hZnRlciBwb3NpdGlv
biBhbmNob3JlZCB0byBhIG5vZGUgd2l0aCBubyBwYXJlbnQKICAgICBpbnQgY29tcHV0ZU9mZnNl
dEluQ29udGFpbmVyTm9kZSgpIGNvbnN0OyAgLy8gTyhuKSBmb3IgYmVmb3JlL2FmdGVyLWFuY2hv
cmVkIHBvc2l0aW9ucywgTygxKSBmb3IgcGFyZW50LWFuY2hvcmVkIHBvc2l0aW9ucworICAgIFBv
c2l0aW9uIHBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpIGNvbnN0OyAvLyBDb252ZW5pZW5jZSBt
ZXRob2QgZm9yIERPTSBwb3NpdGlvbnMgdGhhdCBhbHNvIGZpeGVzIHVwIHNvbWUgcG9zaXRpb25z
IGZvciBlZGl0aW5nCiAKICAgICAvLyBJbmxpbmUgTygxKSBhY2Nlc3MgZm9yIFBvc2l0aW9ucyB3
aGljaCBjYWxsZXJzIGtub3cgdG8gYmUgcGFyZW50LWFuY2hvcmVkCiAgICAgaW50IG9mZnNldElu
Q29udGFpbmVyTm9kZSgpIGNvbnN0CkBAIC0xNzksNyArMTgwLDcgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8Tm9kZT4gbV9hbmNob3JOb2RlOwogICAgIC8vIG1fb2Zmc2V0IGNhbiBiZSB0aGUgb2Zm
c2V0IGluc2lkZSBtX2FuY2hvck5vZGUsIG9yIGlmIGVkaXRpbmdJZ25vcmVzQ29udGVudChtX2Fu
Y2hvck5vZGUpCiAgICAgLy8gcmV0dXJucyB0cnVlLCB0aGVuIG90aGVyIHBsYWNlcyBpbiBlZGl0
aW5nIHdpbGwgdHJlYXQgbV9vZmZzZXQgPT0gMCBhcyAiYmVmb3JlIHRoZSBhbmNob3IiCi0gICAg
Ly8gYW5kIG1fb2Zmc2V0ID4gMCBhcyAiYWZ0ZXIgdGhlIGFuY2hvciBub2RlIi4gIFNlZSByYW5n
ZUNvbXBsaWFudEVxdWl2YWxlbnQgZm9yIG1vcmUgaW5mby4KKyAgICAvLyBhbmQgbV9vZmZzZXQg
PiAwIGFzICJhZnRlciB0aGUgYW5jaG9yIG5vZGUiLiAgU2VlIHBhcmVudEFuY2hvcmVkRXF1aXZh
bGVudCBmb3IgbW9yZSBpbmZvLgogICAgIGludCBtX29mZnNldDsKICAgICB1bnNpZ25lZCBtX2Fu
Y2hvclR5cGUgOiAyOwogICAgIGJvb2wgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbiA6IDE7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkocmV2
aXNpb24gNzYwMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5k
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTY5LDggKzU2OSw4IEBAIHZvaWQgQXBwbHlTdHlsZUNv
bW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSgKICAgICAvLyBhZGRCbG9ja1N0eWxlSWZOZWVkZWQgbWF5
IG1vdmVQYXJhZ3JhcGhzLCB3aGljaCBjYW4gcmVtb3ZlIHRoZXNlIGVuZHBvaW50cy4KICAgICAv
LyBDYWxjdWxhdGUgc3RhcnQgYW5kIGVuZCBpbmRpY2VzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSB0
cmVlIHRoYXQgdGhleSdyZSBpbi4KICAgICBOb2RlKiBzY29wZSA9IGhpZ2hlc3RBbmNlc3Rvcih2
aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkpOwotICAgIFJlZlB0cjxSYW5nZT4g
c3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluTm9k
ZShzY29wZSksIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudCh2aXNpYmxlU3RhcnQuZGVlcEVxdWl2
YWxlbnQoKSkpOwotICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRv
Y3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2NvcGUpLCByYW5nZUNvbXBsaWFudEVxdWl2
YWxlbnQodmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpKSk7CisgICAgUmVmUHRyPFJhbmdlPiBz
dGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2Rl
KHNjb3BlKSwgdmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCkpOworICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRv
Y3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2NvcGUpLCB2aXNpYmxlRW5kLmRlZXBFcXVp
dmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwogICAgIGludCBzdGFydEluZGV4
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFJhbmdlLmdldCgpLCB0cnVlKTsKICAg
ICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLmdldCgp
LCB0cnVlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDc2MDM4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTks
NyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNlcnROb2RlQXQoCiAgICAgQVNTRVJU
KGlzRWRpdGFibGVQb3NpdGlvbihlZGl0aW5nUG9zaXRpb24pKTsKICAgICAvLyBGb3IgZWRpdGlu
ZyBwb3NpdGlvbnMgbGlrZSBbdGFibGUsIDBdLCBpbnNlcnQgYmVmb3JlIHRoZSB0YWJsZSwKICAg
ICAvLyBsaWtld2lzZSBmb3IgcmVwbGFjZWQgZWxlbWVudHMsIGJycywgZXRjLgotICAgIFBvc2l0
aW9uIHAgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoZWRpdGluZ1Bvc2l0aW9uKTsKKyAgICBQ
b3NpdGlvbiBwID0gZWRpdGluZ1Bvc2l0aW9uLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwog
ICAgIE5vZGUqIHJlZkNoaWxkID0gcC5ub2RlKCk7CiAgICAgaW50IG9mZnNldCA9IHAuZGVwcmVj
YXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICAKQEAgLTkwNSwxMyArOTA1LDEzIEBAIHZvaWQgQ29t
cG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGgKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgc3RhcnRJbmRleCA9IDA7CiAgICAgICAgICAgICBpZiAoc3RhcnRJblBhcmFncmFwaCkgewot
ICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUo
ZG9jdW1lbnQoKSwgcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHN0YXJ0T2ZQYXJhZ3JhcGhUb01v
dmUuZGVlcEVxdWl2YWxlbnQoKSksIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudCh2aXNpYmxlU3Rh
cnQuZGVlcEVxdWl2YWxlbnQoKSkpOworICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc3Rh
cnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92
ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2aXNpYmxlU3Rh
cnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiAgICAgICAg
ICAgICAgICAgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5n
ZS5nZXQoKSwgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGVuZEluZGV4ID0g
MDsKICAgICAgICAgICAgIGlmIChlbmRJblBhcmFncmFwaCkgewotICAgICAgICAgICAgICAgIFJl
ZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHJhbmdlQ29t
cGxpYW50RXF1aXZhbGVudChzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkp
LCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQodmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpKSk7
CisgICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBlbmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUo
ZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50
QW5jaG9yZWRFcXVpdmFsZW50KCkpOwogICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRSYW5nZS5nZXQoKSwgdHJ1ZSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KQEAgLTkyNiw4ICs5MjYsOCBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5k
Ojptb3ZlUGFyYWdyYXBoCiAgICAgUG9zaXRpb24gZW5kID0gZW5kT2ZQYXJhZ3JhcGhUb01vdmUu
ZGVlcEVxdWl2YWxlbnQoKS51cHN0cmVhbSgpOwogICAgIAogICAgIC8vIHN0YXJ0IGFuZCBlbmQg
Y2FuJ3QgYmUgdXNlZCBkaXJlY3RseSB0byBjcmVhdGUgYSBSYW5nZTsgdGhleSBhcmUgImVkaXRp
bmcgcG9zaXRpb25zIgotICAgIFBvc2l0aW9uIHN0YXJ0UmFuZ2VDb21wbGlhbnQgPSByYW5nZUNv
bXBsaWFudEVxdWl2YWxlbnQoc3RhcnQpOwotICAgIFBvc2l0aW9uIGVuZFJhbmdlQ29tcGxpYW50
ID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGVuZCk7CisgICAgUG9zaXRpb24gc3RhcnRSYW5n
ZUNvbXBsaWFudCA9IHN0YXJ0LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOworICAgIFBvc2l0
aW9uIGVuZFJhbmdlQ29tcGxpYW50ID0gZW5kLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwog
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0
UmFuZ2VDb21wbGlhbnQubm9kZSgpLCBzdGFydFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0KCksIGVuZFJhbmdlQ29tcGxpYW50Lm5vZGUoKSwgZW5kUmFuZ2VDb21wbGlhbnQu
ZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhbiBp
bmVmZmljaWVudCB3YXkgdG8gcHJlc2VydmUgc3R5bGUgb24gbm9kZXMgaW4gdGhlIHBhcmFncmFw
aCB0byBtb3ZlLiBJdApAQCAtOTc0LDcgKzk3NCw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1h
bmQ6Om1vdmVQYXJhZ3JhcGgKICAgICAgICAgdXBkYXRlTGF5b3V0KCk7CiAgICAgfQogCi0gICAg
UmVmUHRyPFJhbmdlPiBzdGFydFRvRGVzdGluYXRpb25SYW5nZShSYW5nZTo6Y3JlYXRlKGRvY3Vt
ZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkp
LCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoZGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKSkp
KTsKKyAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0VG9EZXN0aW5hdGlvblJhbmdlKFJhbmdlOjpjcmVh
dGUoZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluTm9kZShkb2N1bWVudCgpLT5kb2N1bWVudEVs
ZW1lbnQoKSksIGRlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCkpKTsKICAgICBkZXN0aW5hdGlvbkluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChzdGFydFRvRGVzdGluYXRpb25SYW5nZS5nZXQoKSwgdHJ1ZSk7CiAKICAgICBzZXRFbmRp
bmdTZWxlY3Rpb24oZGVzdGluYXRpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9E
ZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiA3NjAzOCkKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI1NiwxNCArMjU2LDE0IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6
aW5pdGlhbGl6ZVAKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICAvLyBXZSBtdXN0IHBhc3Mg
dGhlIHBvc2l0aW9ucyB0aHJvdWdoIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudCwgc2luY2Ugc29t
ZSBlZGl0aW5nIHBvc2l0aW9ucworICAgIC8vIFdlIG11c3QgcGFzcyBjYWxsIHBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCBvbiB0aGUgcG9zaXRpb25zIHNpbmNlIHNvbWUgZWRpdGluZyBwb3NpdGlv
bnMKICAgICAvLyB0aGF0IGFwcGVhciBpbnNpZGUgdGhlaXIgbm9kZXMgYXJlbid0IHJlYWxseSBp
bnNpZGUgdGhlbS4gIFtociwgMF0gaXMgb25lIGV4YW1wbGUuCi0gICAgLy8gRklYTUU6IHJhbmdl
Q29tcGxhaW50RXF1aXZhbGVudCBzaG91bGQgZXZlbnR1YWxseSBiZSBtb3ZlZCBpbnRvIGVuY2xv
c2luZyBlbGVtZW50IGdldHRlcnMKKyAgICAvLyBGSVhNRTogcGFyZW50QW5jaG9yZWRFcXVpdmFs
ZW50IHNob3VsZCBldmVudHVhbGx5IGJlIG1vdmVkIGludG8gZW5jbG9zaW5nIGVsZW1lbnQgZ2V0
dGVycwogICAgIC8vIGxpa2UgdGhlIG9uZSBiZWxvdywgc2luY2UgZWRpdGluZyBmdW5jdGlvbnMg
c2hvdWxkIG9idmlvdXNseSBhY2NlcHQgZWRpdGluZyBwb3NpdGlvbnMuCiAgICAgLy8gRklYTUU6
IFBhc3NpbmcgZmFsc2UgdG8gZW5jbG9zaW5nTm9kZU9mVHlwZSB0ZWxscyBpdCB0aGF0IGl0J3Mg
T0sgdG8gcmV0dXJuIGEgbm9uLWVkaXRhYmxlCiAgICAgLy8gbm9kZS4gIFRoaXMgd2FzIGRvbmUg
dG8gbWF0Y2ggZXhpc3RpbmcgYmVoYXZpb3IsIGJ1dCBpdCBzZWVtcyB3cm9uZy4KLSAgICBtX3N0
YXJ0QmxvY2sgPSBlbmNsb3NpbmdOb2RlT2ZUeXBlKHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudCht
X2Rvd25zdHJlYW1TdGFydCksICZpc0Jsb2NrLCBmYWxzZSk7Ci0gICAgbV9lbmRCbG9jayA9IGVu
Y2xvc2luZ05vZGVPZlR5cGUocmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KG1fdXBzdHJlYW1FbmQp
LCAmaXNCbG9jaywgZmFsc2UpOworICAgIG1fc3RhcnRCbG9jayA9IGVuY2xvc2luZ05vZGVPZlR5
cGUobV9kb3duc3RyZWFtU3RhcnQucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksICZpc0Jsb2Nr
LCBmYWxzZSk7CisgICAgbV9lbmRCbG9jayA9IGVuY2xvc2luZ05vZGVPZlR5cGUobV91cHN0cmVh
bUVuZC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgJmlzQmxvY2ssIGZhbHNlKTsKIH0KIAog
dm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpzYXZlVHlwaW5nU3R5bGVTdGF0ZSgpCkBAIC02
MDksOCArNjA5LDggQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJnZVBhcmFncgog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChzdGFydE9m
UGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkpLCByYW5nZUNvbXBsaWFudEVxdWl2YWxl
bnQoZW5kT2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKSkpOwotICAgIFJlZlB0cjxS
YW5nZT4gcmFuZ2VUb0JlUmVwbGFjZWQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHJhbmdl
Q29tcGxpYW50RXF1aXZhbGVudChtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkpLCBy
YW5nZUNvbXBsaWFudEVxdWl2YWxlbnQobWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgp
KSk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwg
c3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1
aXZhbGVudCgpLCBlbmRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFu
Y2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9CZVJlcGxhY2Vk
ID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFs
ZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVx
dWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiAgICAgaWYgKCFkb2N1bWVu
dCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y2xpZW50KCktPnNob3VsZE1vdmVSYW5nZUFmdGVyRGVs
ZXRlKHJhbmdlLmdldCgpLCByYW5nZVRvQmVSZXBsYWNlZC5nZXQoKSkpCiAgICAgICAgIHJldHVy
bjsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDc2MDM4
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NDMsNyArNjQzLDcgQEAgV3JpdGluZ0RpcmVjdGlvbiBFZGl0b3I6OnRleHREaXJlY3Rpb25G
bwogICAgIGlmIChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpKSB7CiAgICAgICAgIGVu
ZCA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5lbmQoKS51cHN0cmVhbSgpOwog
Ci0gICAgICAgIE5vZGUqIHBhc3RMYXN0ID0gUmFuZ2U6OmNyZWF0ZShtX2ZyYW1lLT5kb2N1bWVu
dCgpLCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQocG9zaXRpb24pLCByYW5nZUNvbXBsaWFudEVx
dWl2YWxlbnQoZW5kKSktPnBhc3RMYXN0Tm9kZSgpOworICAgICAgICBOb2RlKiBwYXN0TGFzdCA9
IFJhbmdlOjpjcmVhdGUobV9mcmFtZS0+ZG9jdW1lbnQoKSwgcG9zaXRpb24ucGFyZW50QW5jaG9y
ZWRFcXVpdmFsZW50KCksIGVuZC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSktPnBhc3RMYXN0
Tm9kZSgpOwogICAgICAgICBmb3IgKE5vZGUqIG4gPSBub2RlOyBuICYmIG4gIT0gcGFzdExhc3Q7
IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKICAgICAgICAgICAgIGlmICghbi0+aXNTdHls
ZWRFbGVtZW50KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xNzgzLDcgKzE3ODMs
NyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvCiAgICAgICAgIGlm
IChwb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAg
ICAgIFBvc2l0aW9uIHJhbmdlQ29tcGxpYW50UG9zaXRpb24gPSByYW5nZUNvbXBsaWFudEVxdWl2
YWxlbnQocG9zaXRpb24pOworICAgICAgICBQb3NpdGlvbiByYW5nZUNvbXBsaWFudFBvc2l0aW9u
ID0gcG9zaXRpb24ucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiAgICAgICAgIHNwZWxsaW5n
U2VhcmNoUmFuZ2UtPnNldFN0YXJ0KHJhbmdlQ29tcGxpYW50UG9zaXRpb24ubm9kZSgpLCByYW5n
ZUNvbXBsaWFudFBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVjKTsKICAgICAg
ICAgc3RhcnRlZFdpdGhTZWxlY3Rpb24gPSBmYWxzZTsgLy8gd29uJ3QgbmVlZCB0byB3cmFwCiAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5k
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVh
a0NvbW1hbmQuY3BwCShyZXZpc2lvbiA3NjAzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcg
QEAgYm9vbCBJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpzaG91bGRVc2VCcgogICAgIC8vIEFuIGVk
aXRpbmcgcG9zaXRpb24gbGlrZSBbaW5wdXQsIDBdIGFjdHVhbGx5IHJlZmVycyB0byB0aGUgcG9z
aXRpb24gYmVmb3JlCiAgICAgLy8gdGhlIGlucHV0IGVsZW1lbnQsIGFuZCBpbiB0aGF0IGNhc2Ug
d2UgbmVlZCB0byBjaGVjayB0aGUgaW5wdXQgZWxlbWVudCdzCiAgICAgLy8gcGFyZW50J3MgcmVu
ZGVyZXIuCi0gICAgUG9zaXRpb24gcChyYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoaW5zZXJ0aW9u
UG9zKSk7CisgICAgUG9zaXRpb24gcChpbnNlcnRpb25Qb3MucGFyZW50QW5jaG9yZWRFcXVpdmFs
ZW50KCkpOwogICAgIHJldHVybiBwLm5vZGUoKS0+cmVuZGVyZXIoKSAmJiAhcC5ub2RlKCktPnJl
bmRlcmVyKCktPnN0eWxlKCktPnByZXNlcnZlTmV3bGluZSgpOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9y
Q29tbWFuZC5jcHAJKHJldmlzaW9uIDc2MDM4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9J
bnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5
LDggKzE1OSw4IEBAIHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG8KICAg
ICAgICAgYWZmaW5pdHkgPSBlbmRpbmdTZWxlY3Rpb24oKS5hZmZpbml0eSgpOwogICAgIH0KICAg
ICAKLSAgICAvLyBGSVhNRTogVGhlIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudCBjb252ZXJzaW9u
IG5lZWRzIHRvIGJlIG1vdmVkIGludG8gZW5jbG9zaW5nQmxvY2suCi0gICAgTm9kZSogc3RhcnRC
bG9ja05vZGUgPSBlbmNsb3NpbmdCbG9jayhyYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoaW5zZXJ0
aW9uUG9zaXRpb24pLm5vZGUoKSk7CisgICAgLy8gRklYTUU6IFRoZSBwYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQgY29udmVyc2lvbiBuZWVkcyB0byBiZSBtb3ZlZCBpbnRvIGVuY2xvc2luZ0Jsb2Nr
LgorICAgIE5vZGUqIHN0YXJ0QmxvY2tOb2RlID0gZW5jbG9zaW5nQmxvY2soaW5zZXJ0aW9uUG9z
aXRpb24ucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkuY29udGFpbmVyTm9kZSgpKTsKICAgICBQ
b3NpdGlvbiBjYW5vbmljYWxQb3MgPSBWaXNpYmxlUG9zaXRpb24oaW5zZXJ0aW9uUG9zaXRpb24p
LmRlZXBFcXVpdmFsZW50KCk7CiAgICAgRWxlbWVudCogc3RhcnRCbG9jayA9IHN0YXRpY19jYXN0
PEVsZW1lbnQqPihzdGFydEJsb2NrTm9kZSk7CiAgICAgaWYgKCFzdGFydEJsb2NrTm9kZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHAJKHJldmlzaW9uIDc2MDM4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2OCw3ICs1NjgsNyBAQCBz
dGF0aWMgYm9vbCBoYW5kbGVTdHlsZVNwYW5zQmVmb3JlSW5zZXJ0CiAgICAgTm9kZSogc291cmNl
RG9jdW1lbnRTdHlsZVNwYW4gPSB0b3BOb2RlOwogICAgIFJlZlB0cjxOb2RlPiBjb3BpZWRSYW5n
ZVN0eWxlU3BhbiA9IHNvdXJjZURvY3VtZW50U3R5bGVTcGFuLT5maXJzdENoaWxkKCk7CiAKLSAg
ICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZUF0SW5zZXJ0aW9uUG9zID0gRWRpdGluZ1N0eWxl
OjpjcmVhdGUocmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGluc2VydGlvblBvcykpOworICAgIFJl
ZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlQXRJbnNlcnRpb25Qb3MgPSBFZGl0aW5nU3R5bGU6OmNy
ZWF0ZShpbnNlcnRpb25Qb3MucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwogICAgIFN0cmlu
ZyBzdHlsZVRleHQgPSBzdHlsZUF0SW5zZXJ0aW9uUG9zLT5zdHlsZSgpLT5jc3NUZXh0KCk7CiAK
ICAgICAvLyBGSVhNRTogVGhpcyBzdHJpbmcgY29tcGFyaXNvbiBpcyBhIG5haXZlIHdheSBvZiBj
b21wYXJpbmcgdHdvIHN0eWxlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVBvc2l0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVQb3NpdGlvbi5jcHAJKHJldmlzaW9uIDc2MDM4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlUG9zaXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTcsOCArNTk3LDggQEAg
UGFzc1JlZlB0cjxSYW5nZT4gbWFrZVJhbmdlKGNvbnN0IFZpc2libAogICAgIGlmIChzdGFydC5p
c051bGwoKSB8fCBlbmQuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIFBv
c2l0aW9uIHMgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoc3RhcnQpOwotICAgIFBvc2l0aW9u
IGUgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoZW5kKTsKKyAgICBQb3NpdGlvbiBzID0gc3Rh
cnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKKyAgICBQb3Np
dGlvbiBlID0gZW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7
CiAgICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUocy5ub2RlKCktPmRvY3VtZW50KCksIHMubm9kZSgp
LCBzLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGUubm9kZSgpLCBlLmRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0KCkpOwogfQogCkBAIC02MTgsNyArNjE4LDcgQEAgYm9vbCBzZXRTdGFydChSYW5n
ZSAqciwgY29uc3QgVmlzaWJsZVBvcwogewogICAgIGlmICghcikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIFBvc2l0aW9uIHAgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQodmlzaWJsZVBv
c2l0aW9uKTsKKyAgICBQb3NpdGlvbiBwID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50
KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiAgICAgaW50IGNvZGUgPSAwOwogICAgIHIt
PnNldFN0YXJ0KHAubm9kZSgpLCBwLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGNvZGUpOwog
ICAgIHJldHVybiBjb2RlID09IDA7CkBAIC02MjgsNyArNjI4LDcgQEAgYm9vbCBzZXRFbmQoUmFu
Z2UgKnIsIGNvbnN0IFZpc2libGVQb3NpdAogewogICAgIGlmICghcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIFBvc2l0aW9uIHAgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQodmlzaWJs
ZVBvc2l0aW9uKTsKKyAgICBQb3NpdGlvbiBwID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFs
ZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiAgICAgaW50IGNvZGUgPSAwOwogICAg
IHItPnNldEVuZChwLm5vZGUoKSwgcC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBjb2RlKTsK
ICAgICByZXR1cm4gY29kZSA9PSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNp
YmxlU2VsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zp
c2libGVTZWxlY3Rpb24uY3BwCShyZXZpc2lvbiA3NjAzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw4ICsxMjEs
OCBAQCBQYXNzUmVmUHRyPFJhbmdlPiBWaXNpYmxlU2VsZWN0aW9uOjpmaXJzCiB7CiAgICAgaWYg
KGlzTm9uZSgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdl
Q29tcGxpYW50RXF1aXZhbGVudChtX3N0YXJ0KTsKLSAgICBQb3NpdGlvbiBlbmQgPSByYW5nZUNv
bXBsaWFudEVxdWl2YWxlbnQobV9lbmQpOworICAgIFBvc2l0aW9uIHN0YXJ0ID0gbV9zdGFydC5w
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKKyAgICBQb3NpdGlvbiBlbmQgPSBtX2VuZC5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZShzdGFydC5u
b2RlKCktPmRvY3VtZW50KCksIHN0YXJ0LCBlbmQpOwogfQogCkBAIC0xNDYsNyArMTQ2LDcgQEAg
UGFzc1JlZlB0cjxSYW5nZT4gVmlzaWJsZVNlbGVjdGlvbjo6dG9ObwogICAgICAgICAvLyBJZiB0
aGUgc2VsZWN0aW9uIGlzIGEgY2FyZXQsIG1vdmUgdGhlIHJhbmdlIHN0YXJ0IHVwc3RyZWFtLiBU
aGlzIGhlbHBzIHVzIG1hdGNoCiAgICAgICAgIC8vIHRoZSBjb252ZW50aW9ucyBvZiB0ZXh0IGVk
aXRvcnMgdGVzdGVkLCB3aGljaCBtYWtlIHN0eWxlIGRldGVybWluYXRpb25zIGJhc2VkCiAgICAg
ICAgIC8vIG9uIHRoZSBjaGFyYWN0ZXIgYmVmb3JlIHRoZSBjYXJldCwgaWYgYW55LiAKLSAgICAg
ICAgcyA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChtX3N0YXJ0LnVwc3RyZWFtKCkpOworICAg
ICAgICBzID0gbV9zdGFydC51cHN0cmVhbSgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwog
ICAgICAgICBlID0gczsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBJZiB0aGUgc2VsZWN0aW9u
IGlzIGEgcmFuZ2UsIHNlbGVjdCB0aGUgbWluaW11bSByYW5nZSB0aGF0IGVuY29tcGFzc2VzIHRo
ZSBzZWxlY3Rpb24uCkBAIC0xNzAsOCArMTcwLDggQEAgUGFzc1JlZlB0cjxSYW5nZT4gVmlzaWJs
ZVNlbGVjdGlvbjo6dG9ObwogICAgICAgICAgICAgcyA9IGU7CiAgICAgICAgICAgICBlID0gdG1w
OwogICAgICAgICB9Ci0gICAgICAgIHMgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQocyk7Ci0g
ICAgICAgIGUgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoZSk7CisgICAgICAgIHMgPSBzLnBh
cmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOworICAgICAgICBlID0gZS5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKTsKICAgICB9CiAKICAgICAvLyBWaXNpYmxlU2VsZWN0aW9ucyBhcmUgc3VwcG9z
ZWQgdG8gYWx3YXlzIGJlIHZhbGlkLiAgVGhpcyBjb25zdHJ1Y3RvciB3aWxsIEFTU0VSVApAQCAt
MjA0LDcgKzIwNCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiBtYWtlU2VhcmNoUmFuZ2UK
ICAgICBSZWZQdHI8UmFuZ2U+IHNlYXJjaFJhbmdlKFJhbmdlOjpjcmVhdGUoZCkpOwogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogCi0gICAgUG9zaXRpb24gc3RhcnQocmFuZ2VDb21wbGlhbnRF
cXVpdmFsZW50KHBvcykpOworICAgIFBvc2l0aW9uIHN0YXJ0KHBvcy5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKSk7CiAgICAgc2VhcmNoUmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cyhib3VuZGFy
eSwgZWMpOwogICAgIHNlYXJjaFJhbmdlLT5zZXRTdGFydChzdGFydC5ub2RlKCksIHN0YXJ0LmRl
cHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVjKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9odG1sZWRpdGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9odG1sZWRpdGluZy5jcHAJKHJldmlzaW9uIDc2MDM4KQorKysgU291cmNlL1dlYkNvcmUvZWRp
dGluZy9odG1sZWRpdGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMiw1NyArMzMyLDkgQEAg
Tm9kZSogZW5jbG9zaW5nQmxvY2soTm9kZSogbm9kZSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RWxlbWVudCo+KGVuY2xvc2luZ05vZGVPZlR5cGUoUG9zaXRpb24obm9kZSwgMCksIGlzQmxvY2sp
KTsKIH0KIAotLy8gSW50ZXJuYWxseSBlZGl0aW5nIHVzZXMgImludmFsaWQiIHBvc2l0aW9ucyBm
b3IgaGlzdG9yaWNhbCByZWFzb25zLiAgRm9yCi0vLyBleGFtcGxlLCBpbiA8ZGl2PjxpbWcgLz48
L2Rpdj4sIEVkaXRpbmcgbWlnaHQgdXNlIChpbWcsIDEpIGZvciB0aGUgcG9zaXRpb24KLS8vIGFm
dGVyIDxpbWc+LCBidXQgd2UgaGF2ZSB0byBjb252ZXJ0IHRoYXQgdG8gKGRpdiwgMSkgYmVmb3Jl
IGhhbmRpbmcgdGhlCi0vLyBwb3NpdGlvbiB0byBhIFJhbmdlIG9iamVjdC4gIElkZWFsbHkgYWxs
IGludGVybmFsIHBvc2l0aW9ucyBzaG91bGQKLS8vIGJlICJyYW5nZSBjb21wbGlhbnQiIGZvciBz
aW1wbGljaXR5LgotUG9zaXRpb24gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGNvbnN0IFBvc2l0
aW9uJiBwb3MpCi17Ci0gICAgaWYgKHBvcy5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFBvc2l0
aW9uKCk7Ci0KLSAgICBOb2RlKiBub2RlID0gcG9zLm5vZGUoKTsKLQotICAgIGlmIChwb3MuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA8PSAwKSB7Ci0gICAgICAgIGlmIChub2RlLT5wYXJlbnRO
b2RlKCkgJiYgKGVkaXRpbmdJZ25vcmVzQ29udGVudChub2RlKSB8fCBpc1RhYmxlRWxlbWVudChu
b2RlKSkpCi0gICAgICAgICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobm9k
ZSk7Ci0gICAgICAgIHJldHVybiBQb3NpdGlvbihub2RlLCAwKTsKLSAgICB9Ci0KLSAgICBpZiAo
bm9kZS0+b2Zmc2V0SW5DaGFyYWN0ZXJzKCkpCi0gICAgICAgIHJldHVybiBQb3NpdGlvbihub2Rl
LCBtaW4obm9kZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCksIHBvcy5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpKSk7Ci0KLSAgICBpbnQgbWF4Q29tcGxpYW50T2Zmc2V0ID0gbm9kZS0+Y2hpbGROb2Rl
Q291bnQoKTsKLSAgICBpZiAocG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPiBtYXhDb21w
bGlhbnRPZmZzZXQpIHsKLSAgICAgICAgaWYgKG5vZGUtPnBhcmVudE5vZGUoKSkKLSAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKG5vZGUpOwotCi0gICAgICAgIC8v
IHRoZXJlIGlzIG5vIG90aGVyIG9wdGlvbiBhdCB0aGlzIHBvaW50IHRoYW4gdG8KLSAgICAgICAg
Ly8gdXNlIHRoZSBoaWdoZXN0IGFsbG93ZWQgcG9zaXRpb24gaW4gdGhlIG5vZGUKLSAgICAgICAg
cmV0dXJuIFBvc2l0aW9uKG5vZGUsIG1heENvbXBsaWFudE9mZnNldCk7Ci0gICAgfSAKLQotICAg
IC8vIEVkaXRpbmcgc2hvdWxkIG5ldmVyIGdlbmVyYXRlIHBvc2l0aW9ucyBsaWtlIHRoaXMuCi0g
ICAgaWYgKChwb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA8IG1heENvbXBsaWFudE9mZnNl
dCkgJiYgZWRpdGluZ0lnbm9yZXNDb250ZW50KG5vZGUpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gbm9kZS0+cGFyZW50Tm9kZSgpID8gcG9zaXRpb25J
blBhcmVudEJlZm9yZU5vZGUobm9kZSkgOiBQb3NpdGlvbihub2RlLCAwKTsKLSAgICB9Ci0gICAg
Ci0gICAgaWYgKHBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID09IG1heENvbXBsaWFudE9m
ZnNldCAmJiAoZWRpdGluZ0lnbm9yZXNDb250ZW50KG5vZGUpIHx8IGlzVGFibGVFbGVtZW50KG5v
ZGUpKSkKLSAgICAgICAgcmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUobm9kZSk7Ci0g
ICAgCi0gICAgcmV0dXJuIFBvc2l0aW9uKHBvcyk7Ci19Ci0KLVBvc2l0aW9uIHJhbmdlQ29tcGxp
YW50RXF1aXZhbGVudChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZwb3MpCi17Ci0gICAgcmV0dXJu
IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudCh2cG9zLmRlZXBFcXVpdmFsZW50KCkpOwotfQotCiAv
LyBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGNyZWF0ZSBwb3NpdGlvbnMgaW4gdGhlIERPTS4gSXQg
cmV0dXJucyB0aGUgbWF4aW11bSB2YWxpZCBvZmZzZXQKIC8vIGluIGEgbm9kZS4gIEl0IHJldHVy
bnMgMSBmb3Igc29tZSBlbGVtZW50cyBldmVuIHRob3VnaCB0aGV5IGRvIG5vdCBoYXZlIGNoaWxk
cmVuLCB3aGljaAotLy8gY3JlYXRlcyB0ZWNobmljYWxseSBpbnZhbGlkIERPTSBQb3NpdGlvbnMu
ICBCZSBzdXJlIHRvIGNhbGwgcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50CisvLyBjcmVhdGVzIHRl
Y2huaWNhbGx5IGludmFsaWQgRE9NIFBvc2l0aW9ucy4gIEJlIHN1cmUgdG8gY2FsbCBwYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQKIC8vIG9uIGEgUG9zaXRpb24gYmVmb3JlIHVzaW5nIGl0IHRvIGNy
ZWF0ZSBhIERPTSBSYW5nZSwgb3IgYW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duLgogaW50IGxh
c3RPZmZzZXRGb3JFZGl0aW5nKGNvbnN0IE5vZGUqIG5vZGUpCiB7CkBAIC0xMDgxLDcgKzEwMzMs
NyBAQCBpbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsCiAgICAgaWYgKHZp
c2libGVQb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgUG9zaXRpb24g
cCh2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUocC5ub2RlKCktPmRvY3VtZW50KCksIFBvc2l0aW9uKHAubm9k
ZSgpLT5kb2N1bWVudCgpLCAwKSwgcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHApKTsKKyAgICBS
ZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShwLm5vZGUoKS0+ZG9jdW1lbnQoKSwg
UG9zaXRpb24ocC5ub2RlKCktPmRvY3VtZW50KCksIDApLCBwLnBhcmVudEFuY2hvcmVkRXF1aXZh
bGVudCgpKTsKICAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQo
KSwgdHJ1ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgJKHJl
dmlzaW9uIDc2MDM4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDEsOSArMTAxLDYgQEAgYm9vbCBpc05vZGVJblRleHRGb3JtQ29u
dHJvbChOb2RlKiBub2RlKQogICAgIAogLy8gRnVuY3Rpb25zIHJldHVybmluZyBQb3NpdGlvbgog
ICAgIAotUG9zaXRpb24gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGNvbnN0IFBvc2l0aW9uJik7
Ci1Qb3NpdGlvbiByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9u
Jik7Ci0gICAgCiBQb3NpdGlvbiBuZXh0Q2FuZGlkYXRlKGNvbnN0IFBvc2l0aW9uJik7CiBQb3Np
dGlvbiBwcmV2aW91c0NhbmRpZGF0ZShjb25zdCBQb3NpdGlvbiYpOwogICAgIApJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCShyZXZpc2lvbiA3NjAzOCkKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU3LDggKzU3LDggQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0JvdW5kYXJ5
KAogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAKICAgICBEb2N1bWVudCogZCA9
IGJvdW5kYXJ5LT5kb2N1bWVudCgpOwotICAgIFBvc2l0aW9uIHN0YXJ0ID0gcmFuZ2VDb21wbGlh
bnRFcXVpdmFsZW50KFBvc2l0aW9uKGJvdW5kYXJ5LCAwKSk7Ci0gICAgUG9zaXRpb24gZW5kID0g
cmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHBvcyk7CisgICAgUG9zaXRpb24gc3RhcnQgPSBQb3Np
dGlvbihib3VuZGFyeSwgMCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CisgICAgUG9zaXRp
b24gZW5kID0gcG9zLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIFJlZlB0cjxSYW5n
ZT4gc2VhcmNoUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGQpOwogICAgIAogICAgIFZlY3RvcjxVQ2hh
ciwgMTAyND4gc3RyaW5nOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRp
b24gbmV4dEJvdW5kYXJ5KGNvbnMKIAogICAgIERvY3VtZW50KiBkID0gYm91bmRhcnktPmRvY3Vt
ZW50KCk7CiAgICAgUmVmUHRyPFJhbmdlPiBzZWFyY2hSYW5nZShkLT5jcmVhdGVSYW5nZSgpKTsK
LSAgICBQb3NpdGlvbiBzdGFydChyYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQocG9zKSk7CisgICAg
UG9zaXRpb24gc3RhcnQocG9zLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKIAogICAgIFZl
Y3RvcjxVQ2hhciwgMTAyND4gc3RyaW5nOwogICAgIHVuc2lnbmVkIHByZWZpeExlbmd0aCA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCShyZXZpc2lvbiA3NjAzOCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzYsMjMgKzc2LDIzIEBAIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIERPTVNlbGVjdGlvbjo6
dmkKIHN0YXRpYyBQb3NpdGlvbiBhbmNob3JQb3NpdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBzZWxlY3Rpb24pCiB7CiAgICAgUG9zaXRpb24gYW5jaG9yID0gc2VsZWN0aW9uLmlzQmFzZUZp
cnN0KCkgPyBzZWxlY3Rpb24uc3RhcnQoKSA6IHNlbGVjdGlvbi5lbmQoKTsKLSAgICByZXR1cm4g
cmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGFuY2hvcik7CisgICAgcmV0dXJuIGFuY2hvci5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKIH0KIAogc3RhdGljIFBvc2l0aW9uIGZvY3VzUG9zaXRp
b24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewogICAgIFBvc2l0aW9uIGZv
Y3VzID0gc2VsZWN0aW9uLmlzQmFzZUZpcnN0KCkgPyBzZWxlY3Rpb24uZW5kKCkgOiBzZWxlY3Rp
b24uc3RhcnQoKTsKLSAgICByZXR1cm4gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGZvY3VzKTsK
KyAgICByZXR1cm4gZm9jdXMucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiB9CiAKIHN0YXRp
YyBQb3NpdGlvbiBiYXNlUG9zaXRpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9u
KQogewotICAgIHJldHVybiByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoc2VsZWN0aW9uLmJhc2Uo
KSk7CisgICAgcmV0dXJuIHNlbGVjdGlvbi5iYXNlKCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCk7CiB9CiAKIHN0YXRpYyBQb3NpdGlvbiBleHRlbnRQb3NpdGlvbihjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiBzZWxlY3Rpb24pCiB7Ci0gICAgcmV0dXJuIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVu
dChzZWxlY3Rpb24uZXh0ZW50KCkpOworICAgIHJldHVybiBzZWxlY3Rpb24uZXh0ZW50KCkucGFy
ZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiB9CiAKIE5vZGUqIERPTVNlbGVjdGlvbjo6YW5jaG9y
Tm9kZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NjAzOCkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDExLTAxLTE4ICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIFVwZGF0aW5nIHRvIHVzZSBQ
b3NpdGlvbjo6cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50IGluc3RlYWQgb2YKKyAgICAgICAgdGhl
IG9sZCBodG1sZWRpdGluZyByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQuCisKKyAgICAgICAgcmVt
b3ZlIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudCBhbmQgcmVwbGFjZSBpdCB3aXRoIFBvc2l0aW9u
IG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1MDU3CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJG
cmFtZSBfc21hcnREZWxldGVSYW5nZUZvclByb3Bvc2VkUmFuZ2U6XSk6CisKIDIwMTEtMDEtMTcg
IERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICA8aHR0cDovL3dl
YmtpdC5vcmcvYi81MjU5Nj4gQWRkIG1pc3NpbmcgRE9NRG9jdW1lbnQvRE9NRG9jdW1lbnRGcmFn
bWVudCBoZWFkZXJzIHRvIFhjb2RlIHByb2plY3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQkocmV2aXNpb24gNzYwMzgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04MDIsOCArODAyLDggQEAgLSAoRE9N
UmFuZ2UgKilfc21hcnREZWxldGVSYW5nZUZvclByb3BvcwogICAgIGlmIChuZXdFbmQuaXNOdWxs
KCkpCiAgICAgICAgIG5ld0VuZCA9IGVuZDsKIAotICAgIG5ld1N0YXJ0ID0gcmFuZ2VDb21wbGlh
bnRFcXVpdmFsZW50KG5ld1N0YXJ0KTsKLSAgICBuZXdFbmQgPSByYW5nZUNvbXBsaWFudEVxdWl2
YWxlbnQobmV3RW5kKTsKKyAgICBuZXdTdGFydCA9IG5ld1N0YXJ0LnBhcmVudEFuY2hvcmVkRXF1
aXZhbGVudCgpOworICAgIG5ld0VuZCA9IG5ld0VuZC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQo
KTsKIAogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1
bWVudCgpLT5jcmVhdGVSYW5nZSgpOwogICAgIGludCBleGNlcHRpb24gPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79327</attachid>
            <date>2011-01-18 14:09:30 -0800</date>
            <delta_ts>2011-01-19 01:32:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-25057-20110118140929.patch</filename>
            <type>text/plain</type>
            <size>28914</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2MDYwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTEtMDEtMTggIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtl
IE5pd2EuCisKKyAgICAgICAgUmVwbGFjZWQgcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50IHdpdGgg
UG9zaXRpb246OnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudAorICAgICAgICBhbmQgc2ltcGxpZmll
ZCB0aGUgbG9naWMgYSBiaXQuIFVuZm9ydHVuYXRlbHksIFRhYmxlcyBhbmQgc29tZSBsZWdhY3kK
KyAgICAgICAgZWRpdGluZyBwb3NpdGlvbnMgc3RpbGwgbmVlZCB0byBiZSBoYW5kbGVkIHNwZWNp
ZmljYWxseS4KKworICAgICAgICByZW1vdmUgcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50IGFuZCBy
ZXBsYWNlIGl0IHdpdGggUG9zaXRpb24gbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjUwNTcKKworICAgICAgICBObyBuZXcgdGVzdHMgYXMg
dGhpcyBpcyBhIHJlZmFjdG9yIHRoYXQgZG9lc24ndCBjaGFuZ2UgYmVoYXZpb3IuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQpOgorICAgICAgICAqIGRv
bS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6cGFyZW50QW5jaG9y
ZWRFcXVpdmFsZW50KToKKyAgICAgICAgKiBkb20vUG9zaXRpb24uaDoKKyAgICAgICAgKiBlZGl0
aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVD
b21tYW5kOjphcHBseUJsb2NrU3R5bGUpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Omlu
c2VydE5vZGVBdCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92
ZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjppbml0aWFsaXpl
UG9zaXRpb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6
Om1lcmdlUGFyYWdyYXBocyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjp0ZXh0RGlyZWN0aW9uRm9yU2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKToKKyAgICAgICAgKiBl
ZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
ZXJ0TGluZUJyZWFrQ29tbWFuZDo6c2hvdWxkVXNlQnJlYWtFbGVtZW50KToKKyAgICAgICAgKiBl
ZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAg
ICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpoYW5kbGVTdHlsZVNwYW5zQmVmb3JlSW5zZXJ0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL1Zp
c2libGVQb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlUmFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0RW5kKToKKyAgICAg
ICAgKiBlZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Vmlz
aWJsZVNlbGVjdGlvbjo6Zmlyc3RSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2Vs
ZWN0aW9uOjp0b05vcm1hbGl6ZWRSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjptYWtlU2VhcmNo
UmFuZ2UpOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24pOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVk
aXRpbmcuaDoKKyAgICAgICAgKiBlZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cHJldmlvdXNCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0Qm91bmRh
cnkpOgorICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmFuY2hvclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmZvY3VzUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6YmFzZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dGVudFBv
c2l0aW9uKToKKwogMjAxMS0wMS0xOCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCShyZXZpc2lvbiA3NjA2MCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3
b3JraW5nIGNvcHkpCkBAIC01NDUsNyArNTQ1LDYgQEAgX19aTjdXZWJDb3JlMjRjcmVhdGVGcmFn
bWVudEZyb21NYXJrdXBFUAogX19aTjdXZWJDb3JlMjRkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNF
UktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbkVS
S04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTI0bm90aWZ5SGlzdG9yeUl0ZW1DaGFuZ2VkRQot
X19aTjdXZWJDb3JlMjRyYW5nZUNvbXBsaWFudEVxdWl2YWxlbnRFUktOU184UG9zaXRpb25FCiBf
X1pON1dlYkNvcmUyNUhpc3RvcnlQcm9wZXJ0eUxpc3RXcml0ZXIxMXJlbGVhc2VEYXRhRXYKIF9f
Wk43V2ViQ29yZTI1SGlzdG9yeVByb3BlcnR5TGlzdFdyaXRlcjEyd3JpdGVPYmplY3RzRVJOU18z
MEJpbmFyeVByb3BlcnR5TGlzdE9iamVjdFN0cmVhbUUKIF9fWk43V2ViQ29yZTI1SGlzdG9yeVBy
b3BlcnR5TGlzdFdyaXRlcjE2d3JpdGVIaXN0b3J5SXRlbUVSTlNfMzBCaW5hcnlQcm9wZXJ0eUxp
c3RPYmplY3RTdHJlYW1FUE5TXzExSGlzdG9yeUl0ZW1FCkBAIC0xMTk1LDYgKzExOTQsNyBAQCBf
X1pOSzdXZWJDb3JlOERvY3VtZW50NmRvbWFpbkV2CiBfX1pOSzdXZWJDb3JlOEludFBvaW50Y3Y3
Q0dQb2ludEV2CiBfX1pOSzdXZWJDb3JlOEludFBvaW50Y3Y4X05TUG9pbnRFdgogX19aTks3V2Vi
Q29yZThQb3NpdGlvbjEwZG93bnN0cmVhbUVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVs
ZUUKK19fWk5LN1dlYkNvcmU4UG9zaXRpb24yNHBhcmVudEFuY2hvcmVkRXF1aXZhbGVudEV2CiBf
X1pOSzdXZWJDb3JlOFBvc2l0aW9uMjVsZWFkaW5nV2hpdGVzcGFjZVBvc2l0aW9uRU5TXzlFQWZm
aW5pdHlFYgogX19aTks3V2ViQ29yZThQb3NpdGlvbjI2dHJhaWxpbmdXaGl0ZXNwYWNlUG9zaXRp
b25FTlNfOUVBZmZpbml0eUViCiBfX1pOSzdXZWJDb3JlOFBvc2l0aW9uOHVwc3RyZWFtRU5TXzI3
RWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlRQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiA3NjA2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzMDEsNyArMTMwMSw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IERvY3Vt
ZW50OjpjYXJldFJhbmdlRnIKICAgICBpZiAodmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIFBvc2l0aW9uIHJhbmdlQ29tcGxpYW50UG9zaXRpb24gPSBy
YW5nZUNvbXBsaWFudEVxdWl2YWxlbnQodmlzaWJsZVBvc2l0aW9uKTsKKyAgICBQb3NpdGlvbiBy
YW5nZUNvbXBsaWFudFBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCku
cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiAgICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUodGhp
cywgcmFuZ2VDb21wbGlhbnRQb3NpdGlvbiwgcmFuZ2VDb21wbGlhbnRQb3NpdGlvbik7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAkocmV2aXNpb24gNzYwNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNiArMTQ2LDI3
IEBAIGludCBQb3NpdGlvbjo6Y29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm8KICAgICByZXR1cm4g
MDsKIH0KIAorLy8gTmVpZ2hib3ItYW5jaG9yZWQgcG9zaXRpb25zIGFyZSBpbnZhbGlkIERPTSBw
b3NpdGlvbnMsIHNvIHRoZXkgbmVlZCB0byBiZQorLy8gZml4ZWQgdXAgYmVmb3JlIGhhbmRpbmcg
dGhlbSBvZmYgdG8gdGhlIFJhbmdlIG9iamVjdC4KK1Bvc2l0aW9uIFBvc2l0aW9uOjpwYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKSBjb25zdAoreworICAgIGlmICghbV9hbmNob3JOb2RlKQorICAg
ICAgICByZXR1cm4gUG9zaXRpb24oKTsKKyAgICAKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
b25seSBiZSBuZWNlc3NhcnkgZm9yIGxlZ2FjeSBwb3NpdGlvbnMsIGJ1dCBpcyBhbHNvIG5lZWRl
ZCBmb3IgcG9zaXRpb25zIGJlZm9yZSBhbmQgYWZ0ZXIgVGFibGVzCisgICAgaWYgKG1fb2Zmc2V0
IDw9IDApIHsKKyAgICAgICAgaWYgKG1fYW5jaG9yTm9kZS0+cGFyZW50Tm9kZSgpICYmIChlZGl0
aW5nSWdub3Jlc0NvbnRlbnQobV9hbmNob3JOb2RlLmdldCgpKSB8fCBpc1RhYmxlRWxlbWVudCht
X2FuY2hvck5vZGUuZ2V0KCkpKSkKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50
QmVmb3JlTm9kZShtX2FuY2hvck5vZGUuZ2V0KCkpOworICAgICAgICByZXR1cm4gUG9zaXRpb24o
bV9hbmNob3JOb2RlLCAwLCBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOworICAgIH0KKyAgICBp
ZiAoIW1fYW5jaG9yTm9kZS0+b2Zmc2V0SW5DaGFyYWN0ZXJzKCkgJiYgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fb2Zmc2V0KSA9PSBtX2FuY2hvck5vZGUtPmNoaWxkTm9kZUNvdW50KCkKKyAgICAg
ICAgJiYgKGVkaXRpbmdJZ25vcmVzQ29udGVudChtX2FuY2hvck5vZGUuZ2V0KCkpIHx8IGlzVGFi
bGVFbGVtZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkpKSB7CisgICAgICAgIHJldHVybiBwb3NpdGlv
bkluUGFyZW50QWZ0ZXJOb2RlKG1fYW5jaG9yTm9kZS5nZXQoKSk7CisgICAgfQorCisgICAgcmV0
dXJuIFBvc2l0aW9uKGNvbnRhaW5lck5vZGUoKSwgY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9k
ZSgpLCBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOworfQorCiBOb2RlKiBQb3NpdGlvbjo6Y29t
cHV0ZU5vZGVCZWZvcmVQb3NpdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2FuY2hvck5vZGUp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAkocmV2aXNpb24gNzYwNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vUG9zaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsNyBAQCBwdWJs
aWM6CiAgICAgLy8gd2lsbCByZXR1cm4gaW1nLT5wYXJlbnROb2RlKCkgYW5kIGltZy0+bm9kZUlu
ZGV4KCkgZnJvbSB0aGVzZSBmdW5jdGlvbnMuCiAgICAgTm9kZSogY29udGFpbmVyTm9kZSgpIGNv
bnN0OyAvLyBOVUxMIGZvciBhIGJlZm9yZS9hZnRlciBwb3NpdGlvbiBhbmNob3JlZCB0byBhIG5v
ZGUgd2l0aCBubyBwYXJlbnQKICAgICBpbnQgY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgp
IGNvbnN0OyAgLy8gTyhuKSBmb3IgYmVmb3JlL2FmdGVyLWFuY2hvcmVkIHBvc2l0aW9ucywgTygx
KSBmb3IgcGFyZW50LWFuY2hvcmVkIHBvc2l0aW9ucworICAgIFBvc2l0aW9uIHBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpIGNvbnN0OyAvLyBDb252ZW5pZW5jZSBtZXRob2QgZm9yIERPTSBwb3Np
dGlvbnMgdGhhdCBhbHNvIGZpeGVzIHVwIHNvbWUgcG9zaXRpb25zIGZvciBlZGl0aW5nCiAKICAg
ICAvLyBJbmxpbmUgTygxKSBhY2Nlc3MgZm9yIFBvc2l0aW9ucyB3aGljaCBjYWxsZXJzIGtub3cg
dG8gYmUgcGFyZW50LWFuY2hvcmVkCiAgICAgaW50IG9mZnNldEluQ29udGFpbmVyTm9kZSgpIGNv
bnN0CkBAIC0xNzksNyArMTgwLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gbV9hbmNo
b3JOb2RlOwogICAgIC8vIG1fb2Zmc2V0IGNhbiBiZSB0aGUgb2Zmc2V0IGluc2lkZSBtX2FuY2hv
ck5vZGUsIG9yIGlmIGVkaXRpbmdJZ25vcmVzQ29udGVudChtX2FuY2hvck5vZGUpCiAgICAgLy8g
cmV0dXJucyB0cnVlLCB0aGVuIG90aGVyIHBsYWNlcyBpbiBlZGl0aW5nIHdpbGwgdHJlYXQgbV9v
ZmZzZXQgPT0gMCBhcyAiYmVmb3JlIHRoZSBhbmNob3IiCi0gICAgLy8gYW5kIG1fb2Zmc2V0ID4g
MCBhcyAiYWZ0ZXIgdGhlIGFuY2hvciBub2RlIi4gIFNlZSByYW5nZUNvbXBsaWFudEVxdWl2YWxl
bnQgZm9yIG1vcmUgaW5mby4KKyAgICAvLyBhbmQgbV9vZmZzZXQgPiAwIGFzICJhZnRlciB0aGUg
YW5jaG9yIG5vZGUiLiAgU2VlIHBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCBmb3IgbW9yZSBpbmZv
LgogICAgIGludCBtX29mZnNldDsKICAgICB1bnNpZ25lZCBtX2FuY2hvclR5cGUgOiAyOwogICAg
IGJvb2wgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbiA6IDE7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkocmV2aXNpb24gNzYwNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTY5LDggKzU2OSw4IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tT
dHlsZSgKICAgICAvLyBhZGRCbG9ja1N0eWxlSWZOZWVkZWQgbWF5IG1vdmVQYXJhZ3JhcGhzLCB3
aGljaCBjYW4gcmVtb3ZlIHRoZXNlIGVuZHBvaW50cy4KICAgICAvLyBDYWxjdWxhdGUgc3RhcnQg
YW5kIGVuZCBpbmRpY2VzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSB0cmVlIHRoYXQgdGhleSdyZSBp
bi4KICAgICBOb2RlKiBzY29wZSA9IGhpZ2hlc3RBbmNlc3Rvcih2aXNpYmxlU3RhcnQuZGVlcEVx
dWl2YWxlbnQoKS5ub2RlKCkpOwotICAgIFJlZlB0cjxSYW5nZT4gc3RhcnRSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluTm9kZShzY29wZSksIHJhbmdlQ29t
cGxpYW50RXF1aXZhbGVudCh2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKSkpOwotICAgIFJl
ZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9z
aXRpb25Jbk5vZGUoc2NvcGUpLCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQodmlzaWJsZUVuZC5k
ZWVwRXF1aXZhbGVudCgpKSk7CisgICAgUmVmUHRyPFJhbmdlPiBzdGFydFJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJsZVN0
YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIFJl
ZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9z
aXRpb25Jbk5vZGUoc2NvcGUpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCkpOwogICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChzdGFydFJhbmdlLmdldCgpLCB0cnVlKTsKICAgICBpbnQgZW5kSW5kZXggPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLmdldCgpLCB0cnVlKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHJl
dmlzaW9uIDc2MDYwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIENvbXBvc2l0
ZUVkaXRDb21tYW5kOjppbnNlcnROb2RlQXQoCiAgICAgQVNTRVJUKGlzRWRpdGFibGVQb3NpdGlv
bihlZGl0aW5nUG9zaXRpb24pKTsKICAgICAvLyBGb3IgZWRpdGluZyBwb3NpdGlvbnMgbGlrZSBb
dGFibGUsIDBdLCBpbnNlcnQgYmVmb3JlIHRoZSB0YWJsZSwKICAgICAvLyBsaWtld2lzZSBmb3Ig
cmVwbGFjZWQgZWxlbWVudHMsIGJycywgZXRjLgotICAgIFBvc2l0aW9uIHAgPSByYW5nZUNvbXBs
aWFudEVxdWl2YWxlbnQoZWRpdGluZ1Bvc2l0aW9uKTsKKyAgICBQb3NpdGlvbiBwID0gZWRpdGlu
Z1Bvc2l0aW9uLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIE5vZGUqIHJlZkNoaWxk
ID0gcC5ub2RlKCk7CiAgICAgaW50IG9mZnNldCA9IHAuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KTsKICAgICAKQEAgLTkwNSwxMyArOTA1LDEzIEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6
Om1vdmVQYXJhZ3JhcGgKICAgICAgICAgICAgIAogICAgICAgICAgICAgc3RhcnRJbmRleCA9IDA7
CiAgICAgICAgICAgICBpZiAoc3RhcnRJblBhcmFncmFwaCkgewotICAgICAgICAgICAgICAgIFJl
ZlB0cjxSYW5nZT4gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgcmFuZ2VD
b21wbGlhbnRFcXVpdmFsZW50KHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQo
KSksIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudCh2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQo
KSkpOworICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc3RhcnRSYW5nZSA9IFJhbmdlOjpj
cmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgp
LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQo
KS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiAgICAgICAgICAgICAgICAgc3RhcnRJbmRl
eCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5nZXQoKSwgdHJ1ZSk7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGVuZEluZGV4ID0gMDsKICAgICAgICAgICAgIGlm
IChlbmRJblBhcmFncmFwaCkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChz
dGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkpLCByYW5nZUNvbXBsaWFudEVx
dWl2YWxlbnQodmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpKSk7CisgICAgICAgICAgICAgICAg
UmVmUHRyPFJhbmdlPiBlbmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRP
ZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVu
dCgpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCkpOwogICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0
aChlbmRSYW5nZS5nZXQoKSwgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTky
Niw4ICs5MjYsOCBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAg
ICAgUG9zaXRpb24gZW5kID0gZW5kT2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS51
cHN0cmVhbSgpOwogICAgIAogICAgIC8vIHN0YXJ0IGFuZCBlbmQgY2FuJ3QgYmUgdXNlZCBkaXJl
Y3RseSB0byBjcmVhdGUgYSBSYW5nZTsgdGhleSBhcmUgImVkaXRpbmcgcG9zaXRpb25zIgotICAg
IFBvc2l0aW9uIHN0YXJ0UmFuZ2VDb21wbGlhbnQgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQo
c3RhcnQpOwotICAgIFBvc2l0aW9uIGVuZFJhbmdlQ29tcGxpYW50ID0gcmFuZ2VDb21wbGlhbnRF
cXVpdmFsZW50KGVuZCk7CisgICAgUG9zaXRpb24gc3RhcnRSYW5nZUNvbXBsaWFudCA9IHN0YXJ0
LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOworICAgIFBvc2l0aW9uIGVuZFJhbmdlQ29tcGxp
YW50ID0gZW5kLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQubm9k
ZSgpLCBzdGFydFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJh
bmdlQ29tcGxpYW50Lm5vZGUoKSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdP
ZmZzZXQoKSk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhbiBpbmVmZmljaWVudCB3YXkgdG8g
cHJlc2VydmUgc3R5bGUgb24gbm9kZXMgaW4gdGhlIHBhcmFncmFwaCB0byBtb3ZlLiBJdApAQCAt
OTc0LDcgKzk3NCw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGgK
ICAgICAgICAgdXBkYXRlTGF5b3V0KCk7CiAgICAgfQogCi0gICAgUmVmUHRyPFJhbmdlPiBzdGFy
dFRvRGVzdGluYXRpb25SYW5nZShSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRp
b25Jbk5vZGUoZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpLCByYW5nZUNvbXBsaWFudEVx
dWl2YWxlbnQoZGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKSkpKTsKKyAgICBSZWZQdHI8UmFu
Z2U+IHN0YXJ0VG9EZXN0aW5hdGlvblJhbmdlKFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmly
c3RQb3NpdGlvbkluTm9kZShkb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSksIGRlc3RpbmF0
aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpKTsKICAgICBk
ZXN0aW5hdGlvbkluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFRvRGVzdGlu
YXRpb25SYW5nZS5nZXQoKSwgdHJ1ZSk7CiAKICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oZGVzdGlu
YXRpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21t
YW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVj
dGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiA3NjA2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NiwxNCAr
MjU2LDE0IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6aW5pdGlhbGl6ZVAKICAgICAg
ICAgfQogICAgIH0KICAgICAKLSAgICAvLyBXZSBtdXN0IHBhc3MgdGhlIHBvc2l0aW9ucyB0aHJv
dWdoIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudCwgc2luY2Ugc29tZSBlZGl0aW5nIHBvc2l0aW9u
cworICAgIC8vIFdlIG11c3QgcGFzcyBjYWxsIHBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCBvbiB0
aGUgcG9zaXRpb25zIHNpbmNlIHNvbWUgZWRpdGluZyBwb3NpdGlvbnMKICAgICAvLyB0aGF0IGFw
cGVhciBpbnNpZGUgdGhlaXIgbm9kZXMgYXJlbid0IHJlYWxseSBpbnNpZGUgdGhlbS4gIFtociwg
MF0gaXMgb25lIGV4YW1wbGUuCi0gICAgLy8gRklYTUU6IHJhbmdlQ29tcGxhaW50RXF1aXZhbGVu
dCBzaG91bGQgZXZlbnR1YWxseSBiZSBtb3ZlZCBpbnRvIGVuY2xvc2luZyBlbGVtZW50IGdldHRl
cnMKKyAgICAvLyBGSVhNRTogcGFyZW50QW5jaG9yZWRFcXVpdmFsZW50IHNob3VsZCBldmVudHVh
bGx5IGJlIG1vdmVkIGludG8gZW5jbG9zaW5nIGVsZW1lbnQgZ2V0dGVycwogICAgIC8vIGxpa2Ug
dGhlIG9uZSBiZWxvdywgc2luY2UgZWRpdGluZyBmdW5jdGlvbnMgc2hvdWxkIG9idmlvdXNseSBh
Y2NlcHQgZWRpdGluZyBwb3NpdGlvbnMuCiAgICAgLy8gRklYTUU6IFBhc3NpbmcgZmFsc2UgdG8g
ZW5jbG9zaW5nTm9kZU9mVHlwZSB0ZWxscyBpdCB0aGF0IGl0J3MgT0sgdG8gcmV0dXJuIGEgbm9u
LWVkaXRhYmxlCiAgICAgLy8gbm9kZS4gIFRoaXMgd2FzIGRvbmUgdG8gbWF0Y2ggZXhpc3Rpbmcg
YmVoYXZpb3IsIGJ1dCBpdCBzZWVtcyB3cm9uZy4KLSAgICBtX3N0YXJ0QmxvY2sgPSBlbmNsb3Np
bmdOb2RlT2ZUeXBlKHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChtX2Rvd25zdHJlYW1TdGFydCks
ICZpc0Jsb2NrLCBmYWxzZSk7Ci0gICAgbV9lbmRCbG9jayA9IGVuY2xvc2luZ05vZGVPZlR5cGUo
cmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KG1fdXBzdHJlYW1FbmQpLCAmaXNCbG9jaywgZmFsc2Up
OworICAgIG1fc3RhcnRCbG9jayA9IGVuY2xvc2luZ05vZGVPZlR5cGUobV9kb3duc3RyZWFtU3Rh
cnQucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksICZpc0Jsb2NrLCBmYWxzZSk7CisgICAgbV9l
bmRCbG9jayA9IGVuY2xvc2luZ05vZGVPZlR5cGUobV91cHN0cmVhbUVuZC5wYXJlbnRBbmNob3Jl
ZEVxdWl2YWxlbnQoKSwgJmlzQmxvY2ssIGZhbHNlKTsKIH0KIAogdm9pZCBEZWxldGVTZWxlY3Rp
b25Db21tYW5kOjpzYXZlVHlwaW5nU3R5bGVTdGF0ZSgpCkBAIC02MjMsOCArNjIzLDggQEAgdm9p
ZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJnZVBhcmFncgogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3Vt
ZW50KCksIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRl
ZXBFcXVpdmFsZW50KCkpLCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoZW5kT2ZQYXJhZ3JhcGhU
b01vdmUuZGVlcEVxdWl2YWxlbnQoKSkpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VUb0JlUmVw
bGFjZWQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVu
dChtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkpLCByYW5nZUNvbXBsaWFudEVxdWl2
YWxlbnQobWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpKSk7CisgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRv
TW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBlbmRPZlBh
cmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgp
KTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9CZVJlcGxhY2VkID0gUmFuZ2U6OmNyZWF0ZShk
b2N1bWVudCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9y
ZWRFcXVpdmFsZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKSk7CiAgICAgaWYgKCFkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0
b3IoKS0+Y2xpZW50KCktPnNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKHJhbmdlLmdldCgpLCBy
YW5nZVRvQmVSZXBsYWNlZC5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKICAgICAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDc2MDYwKQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDMsNyArNjQzLDcgQEAg
V3JpdGluZ0RpcmVjdGlvbiBFZGl0b3I6OnRleHREaXJlY3Rpb25GbwogICAgIGlmIChtX2ZyYW1l
LT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpKSB7CiAgICAgICAgIGVuZCA9IG1fZnJhbWUtPnNlbGVj
dGlvbigpLT5zZWxlY3Rpb24oKS5lbmQoKS51cHN0cmVhbSgpOwogCi0gICAgICAgIE5vZGUqIHBh
c3RMYXN0ID0gUmFuZ2U6OmNyZWF0ZShtX2ZyYW1lLT5kb2N1bWVudCgpLCByYW5nZUNvbXBsaWFu
dEVxdWl2YWxlbnQocG9zaXRpb24pLCByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoZW5kKSktPnBh
c3RMYXN0Tm9kZSgpOworICAgICAgICBOb2RlKiBwYXN0TGFzdCA9IFJhbmdlOjpjcmVhdGUobV9m
cmFtZS0+ZG9jdW1lbnQoKSwgcG9zaXRpb24ucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIGVu
ZC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSktPnBhc3RMYXN0Tm9kZSgpOwogICAgICAgICBm
b3IgKE5vZGUqIG4gPSBub2RlOyBuICYmIG4gIT0gcGFzdExhc3Q7IG4gPSBuLT50cmF2ZXJzZU5l
eHROb2RlKCkpIHsKICAgICAgICAgICAgIGlmICghbi0+aXNTdHlsZWRFbGVtZW50KCkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CkBAIC0xNzgzLDcgKzE3ODMsNyBAQCB2b2lkIEVkaXRvcjo6
YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvCiAgICAgICAgIGlmIChwb3NpdGlvbi5pc051bGwo
KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIFBvc2l0aW9uIHJhbmdl
Q29tcGxpYW50UG9zaXRpb24gPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQocG9zaXRpb24pOwor
ICAgICAgICBQb3NpdGlvbiByYW5nZUNvbXBsaWFudFBvc2l0aW9uID0gcG9zaXRpb24ucGFyZW50
QW5jaG9yZWRFcXVpdmFsZW50KCk7CiAgICAgICAgIHNwZWxsaW5nU2VhcmNoUmFuZ2UtPnNldFN0
YXJ0KHJhbmdlQ29tcGxpYW50UG9zaXRpb24ubm9kZSgpLCByYW5nZUNvbXBsaWFudFBvc2l0aW9u
LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVjKTsKICAgICAgICAgc3RhcnRlZFdpdGhTZWxl
Y3Rpb24gPSBmYWxzZTsgLy8gd29uJ3QgbmVlZCB0byB3cmFwCiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCShyZXZp
c2lvbiA3NjA2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29t
bWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBJbnNlcnRMaW5l
QnJlYWtDb21tYW5kOjpzaG91bGRVc2VCcgogICAgIC8vIEFuIGVkaXRpbmcgcG9zaXRpb24gbGlr
ZSBbaW5wdXQsIDBdIGFjdHVhbGx5IHJlZmVycyB0byB0aGUgcG9zaXRpb24gYmVmb3JlCiAgICAg
Ly8gdGhlIGlucHV0IGVsZW1lbnQsIGFuZCBpbiB0aGF0IGNhc2Ugd2UgbmVlZCB0byBjaGVjayB0
aGUgaW5wdXQgZWxlbWVudCdzCiAgICAgLy8gcGFyZW50J3MgcmVuZGVyZXIuCi0gICAgUG9zaXRp
b24gcChyYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoaW5zZXJ0aW9uUG9zKSk7CisgICAgUG9zaXRp
b24gcChpbnNlcnRpb25Qb3MucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwogICAgIHJldHVy
biBwLm5vZGUoKS0+cmVuZGVyZXIoKSAmJiAhcC5ub2RlKCktPnJlbmRlcmVyKCktPnN0eWxlKCkt
PnByZXNlcnZlTmV3bGluZSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0lu
c2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAJKHJldmlz
aW9uIDc2MDYwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBh
cmF0b3JDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDggKzE1OSw4IEBAIHZvaWQg
SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG8KICAgICAgICAgYWZmaW5pdHkgPSBl
bmRpbmdTZWxlY3Rpb24oKS5hZmZpbml0eSgpOwogICAgIH0KICAgICAKLSAgICAvLyBGSVhNRTog
VGhlIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudCBjb252ZXJzaW9uIG5lZWRzIHRvIGJlIG1vdmVk
IGludG8gZW5jbG9zaW5nQmxvY2suCi0gICAgTm9kZSogc3RhcnRCbG9ja05vZGUgPSBlbmNsb3Np
bmdCbG9jayhyYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoaW5zZXJ0aW9uUG9zaXRpb24pLm5vZGUo
KSk7CisgICAgLy8gRklYTUU6IFRoZSBwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQgY29udmVyc2lv
biBuZWVkcyB0byBiZSBtb3ZlZCBpbnRvIGVuY2xvc2luZ0Jsb2NrLgorICAgIE5vZGUqIHN0YXJ0
QmxvY2tOb2RlID0gZW5jbG9zaW5nQmxvY2soaW5zZXJ0aW9uUG9zaXRpb24ucGFyZW50QW5jaG9y
ZWRFcXVpdmFsZW50KCkuY29udGFpbmVyTm9kZSgpKTsKICAgICBQb3NpdGlvbiBjYW5vbmljYWxQ
b3MgPSBWaXNpYmxlUG9zaXRpb24oaW5zZXJ0aW9uUG9zaXRpb24pLmRlZXBFcXVpdmFsZW50KCk7
CiAgICAgRWxlbWVudCogc3RhcnRCbG9jayA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihzdGFydEJs
b2NrTm9kZSk7CiAgICAgaWYgKCFzdGFydEJsb2NrTm9kZQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDc2
MDYwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2OCw3ICs1NjgsNyBAQCBzdGF0aWMgYm9vbCBoYW5kbGVT
dHlsZVNwYW5zQmVmb3JlSW5zZXJ0CiAgICAgTm9kZSogc291cmNlRG9jdW1lbnRTdHlsZVNwYW4g
PSB0b3BOb2RlOwogICAgIFJlZlB0cjxOb2RlPiBjb3BpZWRSYW5nZVN0eWxlU3BhbiA9IHNvdXJj
ZURvY3VtZW50U3R5bGVTcGFuLT5maXJzdENoaWxkKCk7CiAKLSAgICBSZWZQdHI8RWRpdGluZ1N0
eWxlPiBzdHlsZUF0SW5zZXJ0aW9uUG9zID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocmFuZ2VDb21w
bGlhbnRFcXVpdmFsZW50KGluc2VydGlvblBvcykpOworICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+
IHN0eWxlQXRJbnNlcnRpb25Qb3MgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShpbnNlcnRpb25Qb3Mu
cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwogICAgIFN0cmluZyBzdHlsZVRleHQgPSBzdHls
ZUF0SW5zZXJ0aW9uUG9zLT5zdHlsZSgpLT5jc3NUZXh0KCk7CiAKICAgICAvLyBGSVhNRTogVGhp
cyBzdHJpbmcgY29tcGFyaXNvbiBpcyBhIG5haXZlIHdheSBvZiBjb21wYXJpbmcgdHdvIHN0eWxl
cy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAJKHJl
dmlzaW9uIDc2MDYwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTcsOCArNTk3LDggQEAgUGFzc1JlZlB0cjxSYW5nZT4g
bWFrZVJhbmdlKGNvbnN0IFZpc2libAogICAgIGlmIChzdGFydC5pc051bGwoKSB8fCBlbmQuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIFBvc2l0aW9uIHMgPSByYW5nZUNv
bXBsaWFudEVxdWl2YWxlbnQoc3RhcnQpOwotICAgIFBvc2l0aW9uIGUgPSByYW5nZUNvbXBsaWFu
dEVxdWl2YWxlbnQoZW5kKTsKKyAgICBQb3NpdGlvbiBzID0gc3RhcnQuZGVlcEVxdWl2YWxlbnQo
KS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKKyAgICBQb3NpdGlvbiBlID0gZW5kLmRlZXBF
cXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiAgICAgcmV0dXJuIFJhbmdl
OjpjcmVhdGUocy5ub2RlKCktPmRvY3VtZW50KCksIHMubm9kZSgpLCBzLmRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0KCksIGUubm9kZSgpLCBlLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwogfQog
CkBAIC02MTgsNyArNjE4LDcgQEAgYm9vbCBzZXRTdGFydChSYW5nZSAqciwgY29uc3QgVmlzaWJs
ZVBvcwogewogICAgIGlmICghcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFBvc2l0aW9u
IHAgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQodmlzaWJsZVBvc2l0aW9uKTsKKyAgICBQb3Np
dGlvbiBwID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRF
cXVpdmFsZW50KCk7CiAgICAgaW50IGNvZGUgPSAwOwogICAgIHItPnNldFN0YXJ0KHAubm9kZSgp
LCBwLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGNvZGUpOwogICAgIHJldHVybiBjb2RlID09
IDA7CkBAIC02MjgsNyArNjI4LDcgQEAgYm9vbCBzZXRFbmQoUmFuZ2UgKnIsIGNvbnN0IFZpc2li
bGVQb3NpdAogewogICAgIGlmICghcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFBvc2l0
aW9uIHAgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQodmlzaWJsZVBvc2l0aW9uKTsKKyAgICBQ
b3NpdGlvbiBwID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9y
ZWRFcXVpdmFsZW50KCk7CiAgICAgaW50IGNvZGUgPSAwOwogICAgIHItPnNldEVuZChwLm5vZGUo
KSwgcC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBjb2RlKTsKICAgICByZXR1cm4gY29kZSA9
PSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3Bw
CShyZXZpc2lvbiA3NjA2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVj
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw4ICsxMjEsOCBAQCBQYXNzUmVmUHRyPFJh
bmdlPiBWaXNpYmxlU2VsZWN0aW9uOjpmaXJzCiB7CiAgICAgaWYgKGlzTm9uZSgpKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVu
dChtX3N0YXJ0KTsKLSAgICBQb3NpdGlvbiBlbmQgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQo
bV9lbmQpOworICAgIFBvc2l0aW9uIHN0YXJ0ID0gbV9zdGFydC5wYXJlbnRBbmNob3JlZEVxdWl2
YWxlbnQoKTsKKyAgICBQb3NpdGlvbiBlbmQgPSBtX2VuZC5wYXJlbnRBbmNob3JlZEVxdWl2YWxl
bnQoKTsKICAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZShzdGFydC5ub2RlKCktPmRvY3VtZW50KCks
IHN0YXJ0LCBlbmQpOwogfQogCkBAIC0xNDYsNyArMTQ2LDcgQEAgUGFzc1JlZlB0cjxSYW5nZT4g
VmlzaWJsZVNlbGVjdGlvbjo6dG9ObwogICAgICAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIGlzIGEg
Y2FyZXQsIG1vdmUgdGhlIHJhbmdlIHN0YXJ0IHVwc3RyZWFtLiBUaGlzIGhlbHBzIHVzIG1hdGNo
CiAgICAgICAgIC8vIHRoZSBjb252ZW50aW9ucyBvZiB0ZXh0IGVkaXRvcnMgdGVzdGVkLCB3aGlj
aCBtYWtlIHN0eWxlIGRldGVybWluYXRpb25zIGJhc2VkCiAgICAgICAgIC8vIG9uIHRoZSBjaGFy
YWN0ZXIgYmVmb3JlIHRoZSBjYXJldCwgaWYgYW55LiAKLSAgICAgICAgcyA9IHJhbmdlQ29tcGxp
YW50RXF1aXZhbGVudChtX3N0YXJ0LnVwc3RyZWFtKCkpOworICAgICAgICBzID0gbV9zdGFydC51
cHN0cmVhbSgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgICAgICBlID0gczsKICAg
ICB9IGVsc2UgewogICAgICAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIGlzIGEgcmFuZ2UsIHNlbGVj
dCB0aGUgbWluaW11bSByYW5nZSB0aGF0IGVuY29tcGFzc2VzIHRoZSBzZWxlY3Rpb24uCkBAIC0x
NzAsOCArMTcwLDggQEAgUGFzc1JlZlB0cjxSYW5nZT4gVmlzaWJsZVNlbGVjdGlvbjo6dG9Obwog
ICAgICAgICAgICAgcyA9IGU7CiAgICAgICAgICAgICBlID0gdG1wOwogICAgICAgICB9Ci0gICAg
ICAgIHMgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQocyk7Ci0gICAgICAgIGUgPSByYW5nZUNv
bXBsaWFudEVxdWl2YWxlbnQoZSk7CisgICAgICAgIHMgPSBzLnBhcmVudEFuY2hvcmVkRXF1aXZh
bGVudCgpOworICAgICAgICBlID0gZS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICB9
CiAKICAgICAvLyBWaXNpYmxlU2VsZWN0aW9ucyBhcmUgc3VwcG9zZWQgdG8gYWx3YXlzIGJlIHZh
bGlkLiAgVGhpcyBjb25zdHJ1Y3RvciB3aWxsIEFTU0VSVApAQCAtMjA0LDcgKzIwNCw3IEBAIHN0
YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiBtYWtlU2VhcmNoUmFuZ2UKICAgICBSZWZQdHI8UmFuZ2U+
IHNlYXJjaFJhbmdlKFJhbmdlOjpjcmVhdGUoZCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogCi0gICAgUG9zaXRpb24gc3RhcnQocmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHBvcykpOwor
ICAgIFBvc2l0aW9uIHN0YXJ0KHBvcy5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiAgICAg
c2VhcmNoUmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cyhib3VuZGFyeSwgZWMpOwogICAgIHNlYXJj
aFJhbmdlLT5zZXRTdGFydChzdGFydC5ub2RlKCksIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zm
c2V0KCksIGVjKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAJ
KHJldmlzaW9uIDc2MDYwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMiw1NyArMzMyLDkgQEAgTm9kZSogZW5jbG9zaW5nQmxv
Y2soTm9kZSogbm9kZSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGVuY2xvc2lu
Z05vZGVPZlR5cGUoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpLCBpc0Jsb2NrKSk7
CiB9CiAKLS8vIEludGVybmFsbHkgZWRpdGluZyB1c2VzICJpbnZhbGlkIiBwb3NpdGlvbnMgZm9y
IGhpc3RvcmljYWwgcmVhc29ucy4gIEZvcgotLy8gZXhhbXBsZSwgaW4gPGRpdj48aW1nIC8+PC9k
aXY+LCBFZGl0aW5nIG1pZ2h0IHVzZSAoaW1nLCAxKSBmb3IgdGhlIHBvc2l0aW9uCi0vLyBhZnRl
ciA8aW1nPiwgYnV0IHdlIGhhdmUgdG8gY29udmVydCB0aGF0IHRvIChkaXYsIDEpIGJlZm9yZSBo
YW5kaW5nIHRoZQotLy8gcG9zaXRpb24gdG8gYSBSYW5nZSBvYmplY3QuICBJZGVhbGx5IGFsbCBp
bnRlcm5hbCBwb3NpdGlvbnMgc2hvdWxkCi0vLyBiZSAicmFuZ2UgY29tcGxpYW50IiBmb3Igc2lt
cGxpY2l0eS4KLVBvc2l0aW9uIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChjb25zdCBQb3NpdGlv
biYgcG9zKQotewotICAgIGlmIChwb3MuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBQb3NpdGlv
bigpOwotCi0gICAgTm9kZSogbm9kZSA9IHBvcy5ub2RlKCk7Ci0KLSAgICBpZiAocG9zLmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPD0gMCkgewotICAgICAgICBpZiAobm9kZS0+cGFyZW50Tm9k
ZSgpICYmIChlZGl0aW5nSWdub3Jlc0NvbnRlbnQobm9kZSkgfHwgaXNUYWJsZUVsZW1lbnQobm9k
ZSkpKQotICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUp
OwotICAgICAgICByZXR1cm4gUG9zaXRpb24obm9kZSwgMCk7Ci0gICAgfQotCi0gICAgaWYgKG5v
ZGUtPm9mZnNldEluQ2hhcmFjdGVycygpKQotICAgICAgICByZXR1cm4gUG9zaXRpb24obm9kZSwg
bWluKG5vZGUtPm1heENoYXJhY3Rlck9mZnNldCgpLCBwb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZz
ZXQoKSkpOwotCi0gICAgaW50IG1heENvbXBsaWFudE9mZnNldCA9IG5vZGUtPmNoaWxkTm9kZUNv
dW50KCk7Ci0gICAgaWYgKHBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID4gbWF4Q29tcGxp
YW50T2Zmc2V0KSB7Ci0gICAgICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCkpCi0gICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShub2RlKTsKLQotICAgICAgICAvLyB0
aGVyZSBpcyBubyBvdGhlciBvcHRpb24gYXQgdGhpcyBwb2ludCB0aGFuIHRvCi0gICAgICAgIC8v
IHVzZSB0aGUgaGlnaGVzdCBhbGxvd2VkIHBvc2l0aW9uIGluIHRoZSBub2RlCi0gICAgICAgIHJl
dHVybiBQb3NpdGlvbihub2RlLCBtYXhDb21wbGlhbnRPZmZzZXQpOwotICAgIH0gCi0KLSAgICAv
LyBFZGl0aW5nIHNob3VsZCBuZXZlciBnZW5lcmF0ZSBwb3NpdGlvbnMgbGlrZSB0aGlzLgotICAg
IGlmICgocG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPCBtYXhDb21wbGlhbnRPZmZzZXQp
ICYmIGVkaXRpbmdJZ25vcmVzQ29udGVudChub2RlKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIG5vZGUtPnBhcmVudE5vZGUoKSA/IHBvc2l0aW9uSW5Q
YXJlbnRCZWZvcmVOb2RlKG5vZGUpIDogUG9zaXRpb24obm9kZSwgMCk7Ci0gICAgfQotICAgIAot
ICAgIGlmIChwb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA9PSBtYXhDb21wbGlhbnRPZmZz
ZXQgJiYgKGVkaXRpbmdJZ25vcmVzQ29udGVudChub2RlKSB8fCBpc1RhYmxlRWxlbWVudChub2Rl
KSkpCi0gICAgICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKG5vZGUpOwotICAg
IAotICAgIHJldHVybiBQb3NpdGlvbihwb3MpOwotfQotCi1Qb3NpdGlvbiByYW5nZUNvbXBsaWFu
dEVxdWl2YWxlbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cG9zKQotewotICAgIHJldHVybiBy
YW5nZUNvbXBsaWFudEVxdWl2YWxlbnQodnBvcy5kZWVwRXF1aXZhbGVudCgpKTsKLX0KLQogLy8g
VGhpcyBtZXRob2QgaXMgdXNlZCB0byBjcmVhdGUgcG9zaXRpb25zIGluIHRoZSBET00uIEl0IHJl
dHVybnMgdGhlIG1heGltdW0gdmFsaWQgb2Zmc2V0CiAvLyBpbiBhIG5vZGUuICBJdCByZXR1cm5z
IDEgZm9yIHNvbWUgZWxlbWVudHMgZXZlbiB0aG91Z2ggdGhleSBkbyBub3QgaGF2ZSBjaGlsZHJl
biwgd2hpY2gKLS8vIGNyZWF0ZXMgdGVjaG5pY2FsbHkgaW52YWxpZCBET00gUG9zaXRpb25zLiAg
QmUgc3VyZSB0byBjYWxsIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudAorLy8gY3JlYXRlcyB0ZWNo
bmljYWxseSBpbnZhbGlkIERPTSBQb3NpdGlvbnMuICBCZSBzdXJlIHRvIGNhbGwgcGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50CiAvLyBvbiBhIFBvc2l0aW9uIGJlZm9yZSB1c2luZyBpdCB0byBjcmVh
dGUgYSBET00gUmFuZ2UsIG9yIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi4KIGludCBsYXN0
T2Zmc2V0Rm9yRWRpdGluZyhjb25zdCBOb2RlKiBub2RlKQogewpAQCAtMTA4Miw3ICsxMDM0LDcg
QEAgaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libAogICAgICAgICByZXR1
cm4gMDsKICAgICBQb3NpdGlvbiBwKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKTsK
ICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShwLm5vZGUoKS0+ZG9jdW1l
bnQoKSwgZmlyc3RQb3NpdGlvbkluTm9kZShwLmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKS0+ZG9j
dW1lbnRFbGVtZW50KCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiAgICAgcmV0dXJu
IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCShyZXZpc2lvbiA3NjA2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTAx
LDkgKzEwMSw2IEBAIGJvb2wgaXNOb2RlSW5UZXh0Rm9ybUNvbnRyb2woTm9kZSogbm9kZSkKICAg
ICAKIC8vIEZ1bmN0aW9ucyByZXR1cm5pbmcgUG9zaXRpb24KICAgICAKLVBvc2l0aW9uIHJhbmdl
Q29tcGxpYW50RXF1aXZhbGVudChjb25zdCBQb3NpdGlvbiYpOwotUG9zaXRpb24gcmFuZ2VDb21w
bGlhbnRFcXVpdmFsZW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwotICAgIAogUG9zaXRpb24g
bmV4dENhbmRpZGF0ZShjb25zdCBQb3NpdGlvbiYpOwogUG9zaXRpb24gcHJldmlvdXNDYW5kaWRh
dGUoY29uc3QgUG9zaXRpb24mKTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
dmlzaWJsZV91bml0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy92
aXNpYmxlX3VuaXRzLmNwcAkocmV2aXNpb24gNzYwNjApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL3Zpc2libGVfdW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw4ICs1Nyw4IEBAIHN0
YXRpYyBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNCb3VuZGFyeSgKICAgICAgICAgcmV0dXJuIFZp
c2libGVQb3NpdGlvbigpOwogCiAgICAgRG9jdW1lbnQqIGQgPSBib3VuZGFyeS0+ZG9jdW1lbnQo
KTsKLSAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChQb3NpdGlv
bihib3VuZGFyeSwgMCkpOwotICAgIFBvc2l0aW9uIGVuZCA9IHJhbmdlQ29tcGxpYW50RXF1aXZh
bGVudChwb3MpOworICAgIFBvc2l0aW9uIHN0YXJ0ID0gUG9zaXRpb24oYm91bmRhcnksIDApLnBh
cmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOworICAgIFBvc2l0aW9uIGVuZCA9IHBvcy5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICBSZWZQdHI8UmFuZ2U+IHNlYXJjaFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShkKTsKICAgICAKICAgICBWZWN0b3I8VUNoYXIsIDEwMjQ+IHN0cmluZzsKQEAg
LTEzOCw3ICsxMzgsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3VuZGFyeShjb25z
CiAKICAgICBEb2N1bWVudCogZCA9IGJvdW5kYXJ5LT5kb2N1bWVudCgpOwogICAgIFJlZlB0cjxS
YW5nZT4gc2VhcmNoUmFuZ2UoZC0+Y3JlYXRlUmFuZ2UoKSk7Ci0gICAgUG9zaXRpb24gc3RhcnQo
cmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHBvcykpOworICAgIFBvc2l0aW9uIHN0YXJ0KHBvcy5w
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiAKICAgICBWZWN0b3I8VUNoYXIsIDEwMjQ+IHN0
cmluZzsKICAgICB1bnNpZ25lZCBwcmVmaXhMZW5ndGggPSAwOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NU2VsZWN0aW9uLmNwcAkocmV2aXNpb24gNzYwNjApCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVNlbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDIzICs3NiwyMyBAQCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBET01TZWxlY3Rpb246OnZpCiBzdGF0aWMgUG9zaXRpb24g
YW5jaG9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewogICAg
IFBvc2l0aW9uIGFuY2hvciA9IHNlbGVjdGlvbi5pc0Jhc2VGaXJzdCgpID8gc2VsZWN0aW9uLnN0
YXJ0KCkgOiBzZWxlY3Rpb24uZW5kKCk7Ci0gICAgcmV0dXJuIHJhbmdlQ29tcGxpYW50RXF1aXZh
bGVudChhbmNob3IpOworICAgIHJldHVybiBhbmNob3IucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCk7CiB9CiAKIHN0YXRpYyBQb3NpdGlvbiBmb2N1c1Bvc2l0aW9uKGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIHNlbGVjdGlvbikKIHsKICAgICBQb3NpdGlvbiBmb2N1cyA9IHNlbGVjdGlvbi5pc0Jh
c2VGaXJzdCgpID8gc2VsZWN0aW9uLmVuZCgpIDogc2VsZWN0aW9uLnN0YXJ0KCk7Ci0gICAgcmV0
dXJuIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChmb2N1cyk7CisgICAgcmV0dXJuIGZvY3VzLnBh
cmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogfQogCiBzdGF0aWMgUG9zaXRpb24gYmFzZVBvc2l0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKIHsKLSAgICByZXR1cm4gcmFu
Z2VDb21wbGlhbnRFcXVpdmFsZW50KHNlbGVjdGlvbi5iYXNlKCkpOworICAgIHJldHVybiBzZWxl
Y3Rpb24uYmFzZSgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogfQogCiBzdGF0aWMgUG9z
aXRpb24gZXh0ZW50UG9zaXRpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQog
ewotICAgIHJldHVybiByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoc2VsZWN0aW9uLmV4dGVudCgp
KTsKKyAgICByZXR1cm4gc2VsZWN0aW9uLmV4dGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVu
dCgpOwogfQogCiBOb2RlKiBET01TZWxlY3Rpb246OmFuY2hvck5vZGUoKSBjb25zdApJbmRleDog
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNzYwNjApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wMS0xOCAgTGV2aSBX
ZWludHJhdWIgIDxsZXZpd0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1
a2UgTml3YS4KKworICAgICAgICBVcGRhdGluZyB0byB1c2UgUG9zaXRpb246OnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCBpbnN0ZWFkIG9mCisgICAgICAgIHRoZSBvbGQgaHRtbGVkaXRpbmcgcmFu
Z2VDb21wbGlhbnRFcXVpdmFsZW50LgorCisgICAgICAgIHJlbW92ZSByYW5nZUNvbXBsaWFudEVx
dWl2YWxlbnQgYW5kIHJlcGxhY2UgaXQgd2l0aCBQb3NpdGlvbiBtZXRob2RzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTA1NworCisgICAgICAgICog
V2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3NtYXJ0RGVsZXRlUmFu
Z2VGb3JQcm9wb3NlZFJhbmdlOl0pOgorCiAyMDExLTAxLTE4ICBDaHJpcyBGbGVpemFjaCAgPGNm
bGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDc2MDYwKQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtODAyLDggKzgwMiw4IEBAIC0gKERPTVJhbmdlICopX3NtYXJ0RGVsZXRlUmFuZ2VGb3JQcm9w
b3MKICAgICBpZiAobmV3RW5kLmlzTnVsbCgpKQogICAgICAgICBuZXdFbmQgPSBlbmQ7CiAKLSAg
ICBuZXdTdGFydCA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChuZXdTdGFydCk7Ci0gICAgbmV3
RW5kID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KG5ld0VuZCk7CisgICAgbmV3U3RhcnQgPSBu
ZXdTdGFydC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKKyAgICBuZXdFbmQgPSBuZXdFbmQu
cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiAKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
X3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+Y3JlYXRlUmFuZ2UoKTsKICAgICBpbnQg
ZXhjZXB0aW9uID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>79365</attachid>
            <date>2011-01-18 17:27:09 -0800</date>
            <delta_ts>2011-01-18 17:27:09 -0800</delta_ts>
            <desc>Here is the crash log</desc>
            <filename>DumpRenderTree_2011-01-18-165635_eseidel-macpro.crash</filename>
            <type>text/plain</type>
            <size>36310</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">UHJvY2VzczogICAgICAgICBEdW1wUmVuZGVyVHJlZSBbNDM4ODJdClBhdGg6ICAgICAgICAgICAg
L1Byb2plY3RzL0NvbW1pdFF1ZXVlL1dlYktpdEJ1aWxkL1JlbGVhc2UvRHVtcFJlbmRlclRyZWUK
SWRlbnRpZmllcjogICAgICBEdW1wUmVuZGVyVHJlZQpWZXJzaW9uOiAgICAgICAgID8/PyAoPz8/
KQpDb2RlIFR5cGU6ICAgICAgIFg4Ni02NCAoTmF0aXZlKQpQYXJlbnQgUHJvY2VzczogIHBlcmw1
LjEwLjAgWzQzNzUwXQoKRGF0ZS9UaW1lOiAgICAgICAyMDExLTAxLTE4IDE2OjU0OjQ5Ljk4MSAt
MDgwMApPUyBWZXJzaW9uOiAgICAgIE1hYyBPUyBYIDEwLjYuNCAoMTBGNTY5KQpSZXBvcnQgVmVy
c2lvbjogIDYKCkV4Y2VwdGlvbiBUeXBlOiAgRVhDX0JBRF9BQ0NFU1MgKFNJR1NFR1YpCkV4Y2Vw
dGlvbiBDb2RlczogS0VSTl9JTlZBTElEX0FERFJFU1MgYXQgMHgwMDAwMDAwMDAwNmZmZGMwCkNy
YXNoZWQgVGhyZWFkOiAgMCAgRGlzcGF0Y2ggcXVldWU6IGNvbS5hcHBsZS5tYWluLXRocmVhZAoK
VGhyZWFkIDAgQ3Jhc2hlZDogIERpc3BhdGNoIHF1ZXVlOiBjb20uYXBwbGUubWFpbi10aHJlYWQK
MCAgIGNvbS5hcHBsZS5KYXZhU2NyaXB0Q29yZSAgICAgIAkweDAwMDAwMDAxMDAyMjRiNjEgSlND
OjpNYWNoaW5lU3RhY2tNYXJrZXI6Om1hcmtDdXJyZW50VGhyZWFkQ29uc2VydmF0aXZlbHlJbnRl
cm5hbChKU0M6Ok1hcmtTdGFjayYpICsgMjI1IChNYXJrZWRTcGFjZS5oOjE0NykKMSAgIGNvbS5h
cHBsZS5KYXZhU2NyaXB0Q29yZSAgICAgIAkweDAwMDAwMDAxMDAyMjRkOTggSlNDOjpNYWNoaW5l
U3RhY2tNYXJrZXI6Om1hcmtDdXJyZW50VGhyZWFkQ29uc2VydmF0aXZlbHkoSlNDOjpNYXJrU3Rh
Y2smKSArIDQwIChNYWNoaW5lU3RhY2tNYXJrZXIuY3BwOjIyMykKMiAgIGNvbS5hcHBsZS5KYXZh
U2NyaXB0Q29yZSAgICAgIAkweDAwMDAwMDAxMDAyMjUwZDUgSlNDOjpNYWNoaW5lU3RhY2tNYXJr
ZXI6Om1hcmtNYWNoaW5lU3RhY2tDb25zZXJ2YXRpdmVseShKU0M6Ok1hcmtTdGFjayYpICsgMjEg
KE1hY2hpbmVTdGFja01hcmtlci5jcHA6MzgwKQozICAgY29tLmFwcGxlLkphdmFTY3JpcHRDb3Jl
ICAgICAgCTB4MDAwMDAwMDEwMDE2NWM1ZiBKU0M6OkhlYXA6Om1hcmtSb290cygpICsgOTUgKEhl
YXAuY3BwOjI3MCkKNCAgIGNvbS5hcHBsZS5KYXZhU2NyaXB0Q29yZSAgICAgIAkweDAwMDAwMDAx
MDAxNjYwZGQgSlNDOjpIZWFwOjphbGxvY2F0ZSh1bnNpZ25lZCBsb25nKSArIDkzIChIZWFwLmNw
cDoxMzgpCjUgICBjb20uYXBwbGUuSmF2YVNjcmlwdENvcmUgICAgICAJMHgwMDAwMDAwMTAwMTI0
ZmViIEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkKEpTQzo6UmVnaXN0ZXJJRCosIEpT
Qzo6SWRlbnRpZmllciBjb25zdCYpICsgMTE2MyAoSlNDZWxsLmg6MTc4KQo2ICAgY29tLmFwcGxl
LkphdmFTY3JpcHRDb3JlICAgICAgCTB4MDAwMDAwMDEwMDI0OGIyZCBKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0Tm9kZShKU0M6OlJlZ2lzdGVySUQqLCBKU0M6Ok5vZGUqKSArIDIwNSAoQnl0
ZWNvZGVHZW5lcmF0b3IuaDoyMTQpCjcgICBjb20uYXBwbGUuSmF2YVNjcmlwdENvcmUgICAgICAJ
MHgwMDAwMDAwMTAwMjJkOThiIEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3ImLCBKU0M6OlJlZ2lzdGVySUQqKSArIDE1NSAoTm9kZXNDb2Rl
Z2VuLmNwcDoyNDQpCjggICBjb20uYXBwbGUuSmF2YVNjcmlwdENvcmUgICAgICAJMHgwMDAwMDAw
MTAwMjNkZTkwIEpTQzo6T2JqZWN0TGl0ZXJhbE5vZGU6OmVtaXRCeXRlY29kZShKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yJiwgSlNDOjpSZWdpc3RlcklEKikgKyAyODggKEJ5dGVjb2RlR2VuZXJhdG9y
Lmg6MjEzKQo5ICAgY29tLmFwcGxlLkphdmFTY3JpcHRDb3JlICAgICAgCTB4MDAwMDAwMDEwMDI0
OGIyZCBKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Tm9kZShKU0M6OlJlZ2lzdGVySUQqLCBK
U0M6Ok5vZGUqKSArIDIwNSAoQnl0ZWNvZGVHZW5lcmF0b3IuaDoyMTQpCjEwICBjb20uYXBwbGUu
SmF2YVNjcmlwdENvcmUgICAgICAJMHgwMDAwMDAwMTAwMjJmNjc1IEpTQzo6QXNzaWduUmVzb2x2
ZU5vZGU6OmVtaXRCeXRlY29kZShKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yJiwgSlNDOjpSZWdpc3Rl
cklEKikgKyAxMDEgKE5vZGVzQ29kZWdlbi5jcHA6MTE5NikKMTEgIGNvbS5hcHBsZS5KYXZhU2Ny
aXB0Q29yZSAgICAgIAkweDAwMDAwMDAxMDAyNDhiMmQgSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdE5vZGUoSlNDOjpSZWdpc3RlcklEKiwgSlNDOjpOb2RlKikgKyAyMDUgKEJ5dGVjb2RlR2Vu
ZXJhdG9yLmg6MjE0KQoxMiAgY29tLmFwcGxlLkphdmFTY3JpcHRDb3JlICAgICAgCTB4MDAwMDAw
MDEwMDI0OGIyZCBKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Tm9kZShKU0M6OlJlZ2lzdGVy
SUQqLCBKU0M6Ok5vZGUqKSArIDIwNSAoQnl0ZWNvZGVHZW5lcmF0b3IuaDoyMTQpCjEzICBjb20u
YXBwbGUuSmF2YVNjcmlwdENvcmUgICAgICAJMHgwMDAwMDAwMTAwMjJkMGIzIEpTQzo6UHJvZ3Jh
bU5vZGU6OmVtaXRCeXRlY29kZShKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yJiwgSlNDOjpSZWdpc3Rl
cklEKikgKyAxMzEgKE5vZGVzQ29kZWdlbi5jcHA6MTM0NykKMTQgIGNvbS5hcHBsZS5KYXZhU2Ny
aXB0Q29yZSAgICAgIAkweDAwMDAwMDAxMDAxMGIxZmUgSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGUoKSArIDYyIChCeXRlY29kZUdlbmVyYXRvci5jcHA6MTUzKQoxNSAgY29tLmFwcGxl
LkphdmFTY3JpcHRDb3JlICAgICAgCTB4MDAwMDAwMDEwMDE0ZWI1NSBKU0M6OlByb2dyYW1FeGVj
dXRhYmxlOjpjb21waWxlSW50ZXJuYWwoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlNjb3BlQ2hhaW5O
b2RlKikgKyA1OTcgKEV4ZWN1dGFibGUuY3BwOjE2NCkKMTYgIGNvbS5hcHBsZS5KYXZhU2NyaXB0
Q29yZSAgICAgIAkweDAwMDAwMDAxMDAxMzA5OGIgSlNDOjpldmFsdWF0ZShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6U2NvcGVDaGFpbiYsIEpTQzo6U291cmNlQ29kZSBjb25zdCYsIEpTQzo6SlNWYWx1
ZSkgKyA0MjcgKENvbXBsZXRpb24uY3BwOjU3KQoxNyAgY29tLmFwcGxlLldlYkNvcmUgICAgICAg
ICAgICAgCTB4MDAwMDAwMDEwMTE4NWU0MSBXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFs
dWF0ZUluV29ybGQoV2ViQ29yZTo6U2NyaXB0U291cmNlQ29kZSBjb25zdCYsIFdlYkNvcmU6OkRP
TVdyYXBwZXJXb3JsZCosIFdlYkNvcmU6OlNob3VsZEFsbG93WFNTKSArIDM4NSAoSlNNYWluVGhy
ZWFkRXhlY1N0YXRlLmg6NTQpCjE4ICBjb20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAgICAJMHgw
MDAwMDAwMTAxMTg2NmVjIFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKFdlYkNv
cmU6OlNjcmlwdFNvdXJjZUNvZGUgY29uc3QmLCBXZWJDb3JlOjpTaG91bGRBbGxvd1hTUykgKyA2
MCAoU2NyaXB0Q29udHJvbGxlci5jcHA6MTcyKQoxOSAgY29tLmFwcGxlLldlYkNvcmUgICAgICAg
ICAgICAgCTB4MDAwMDAwMDEwMTE4OGJlZSBXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVj
dXRlU2NyaXB0KFdlYkNvcmU6OlNjcmlwdFNvdXJjZUNvZGUgY29uc3QmLCBXZWJDb3JlOjpTaG91
bGRBbGxvd1hTUykgKyAxNDIgKFNjcmlwdENvbnRyb2xsZXJCYXNlLmNwcDo2MCkKMjAgIGNvbS5h
cHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAwMDAwMDAxMDExOGRlYmYgV2ViQ29yZTo6U2Ny
aXB0RWxlbWVudDo6ZXhlY3V0ZVNjcmlwdChXZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlIGNvbnN0
JikgKyAxMTEgKFByb3RlY3QuaDoxNjcpCjIxICBjb20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAg
ICAJMHgwMDAwMDAwMTAwYjBhOWJiIFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQ
ZW5kaW5nU2NyaXB0QW5kRGlzcGF0Y2hFdmVudChXZWJDb3JlOjpQZW5kaW5nU2NyaXB0JikgKyA1
MjMgKEhUTUxTY3JpcHRSdW5uZXIuY3BwOjE0NSkKMjIgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAg
ICAgICAgIAkweDAwMDAwMDAxMDBiMGIxNDQgV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6ZXhl
Y3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdCgpICsgNjQ0IChIVE1MSW5wdXRTdHJlYW0uaDoxNDkp
CjIzICBjb20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAgICAJMHgwMDAwMDAwMTAwYjBiNDc3IFdl
YkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHRzKCkg
KyAzOSAoSFRNTFNjcmlwdFJ1bm5lci5jcHA6MTkxKQoyNCAgY29tLmFwcGxlLldlYkNvcmUgICAg
ICAgICAgICAgCTB4MDAwMDAwMDEwMGIwYzJiOCBXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpl
eGVjdXRlKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiwgV1RGOjpUZXh0UG9zaXRp
b248V1RGOjpPbmVCYXNlZE51bWJlcj4gY29uc3QmKSArIDcyIChIVE1MU2NyaXB0UnVubmVyLmNw
cDoxNzgpCjI1ICBjb20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAgICAJMHgwMDAwMDAwMTAwYWMw
ZjcwIFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVC
dWlsZGVyKCkgKyAxNDQgKEhUTUxEb2N1bWVudFBhcnNlci5jcHA6MTk5KQoyNiAgY29tLmFwcGxl
LldlYkNvcmUgICAgICAgICAgICAgCTB4MDAwMDAwMDEwMGFjMTIwOCBXZWJDb3JlOjpIVE1MRG9j
dW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpT
eW5jaHJvbm91c01vZGUpICsgMzkyIChIVE1MRG9jdW1lbnRQYXJzZXIuY3BwOjI0NCkKMjcgIGNv
bS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAwMDAwMDAxMDBhYzIzYzUgV2ViQ29yZTo6
SFRNTERvY3VtZW50UGFyc2VyOjphcHBlbmQoV2ViQ29yZTo6U2VnbWVudGVkU3RyaW5nIGNvbnN0
JikgKyAxMzMgKE5lc3RpbmdMZXZlbEluY3JlbWVudGVyLmg6NDEpCjI4ICBjb20uYXBwbGUuV2Vi
Q29yZSAgICAgICAgICAgICAJMHgwMDAwMDAwMTAwOGE3Yjg3IFdlYkNvcmU6OkRlY29kZWREYXRh
RG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyKiwgY2hh
ciBjb25zdCosIGludCwgYm9vbCkgKyA1MzUgKERlcXVlLmg6MzQ0KQoyOSAgY29tLmFwcGxlLldl
YkNvcmUgICAgICAgICAgICAgCTB4MDAwMDAwMDEwMDhkODJjZSBXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6Y29tbWl0RGF0YShjaGFyIGNvbnN0KiwgaW50KSArIDExMCAoUmVmUHRyLmg6NTcpCjMw
ICBjb20uYXBwbGUuV2ViS2l0ICAgICAgICAgICAgICAJMHgwMDAwMDAwMTAwNDRlYTA3IC1bV2Vi
SFRNTFJlcHJlc2VudGF0aW9uIHJlY2VpdmVkRGF0YTp3aXRoRGF0YVNvdXJjZTpdICsgNTY3IChX
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW06MTczKQozMSAgY29tLmFwcGxlLldlYktpdCAgICAgICAg
ICAgICAgCTB4MDAwMDAwMDEwMDQxZDY1YiAtW1dlYkRhdGFTb3VyY2UoV2ViSW50ZXJuYWwpIF9y
ZWNlaXZlZERhdGE6XSArIDc1IChXZWJEYXRhU291cmNlLm1tOjI0MSkKMzIgIGNvbS5hcHBsZS5X
ZWJLaXQgICAgICAgICAgICAgIAkweDAwMDAwMDAxMDA0MzkxYmYgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjaGFyIGNvbnN0Kiwg
aW50KSArIDExMSAoV2ViRnJhbWVMb2FkZXJDbGllbnQubW06ODY2KQozMyAgY29tLmFwcGxlLldl
YkNvcmUgICAgICAgICAgICAgCTB4MDAwMDAwMDEwMDhkNmFmNiBXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6Y29tbWl0TG9hZChjaGFyIGNvbnN0KiwgaW50KSArIDIxNCAoUGFzc1JlZlB0ci5oOjU4
KQozNCAgY29tLmFwcGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4MDAwMDAwMDEwMTE2YWY4MiBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY2hhciBjb25zdCosIGludCwg
bG9uZyBsb25nLCBib29sKSArIDgyIChSZXNvdXJjZUxvYWRlci5jcHA6MjgxKQozNSAgY29tLmFw
cGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4MDAwMDAwMDEwMGZkMmQwOSBXZWJDb3JlOjpNYWlu
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNoYXIgY29uc3QqLCBpbnQsIGxvbmcgbG9u
ZywgYm9vbCkgKyAyNDQxIChSZWZDb3VudGVkLmg6ODQpCjM2ICBjb20uYXBwbGUuV2ViQ29yZSAg
ICAgICAgICAgICAJMHgwMDAwMDAwMTAxMTZhNDE0IFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNoYXIgY29uc3QqLCBpbnQs
IGludCkgKyAxNDggKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOjYyNikKMzcgIGNvbS5hcHBs
ZS5Gb3VuZGF0aW9uICAgICAgICAgIAkweDAwMDA3ZmZmODAxNDQ0YWYgX05TVVJMQ29ubmVjdGlv
bkRpZFJlY2VpdmVEYXRhICsgMTM3CjM4ICBjb20uYXBwbGUuQ0ZOZXR3b3JrICAgICAgICAgICAJ
MHgwMDAwN2ZmZjgxYjc4ZWY4IFVSTENvbm5lY3Rpb25DbGllbnQ6Ol9jbGllbnREaWRSZWNlaXZl
RGF0YShfX0NGRGF0YSBjb25zdCosIFVSTENvbm5lY3Rpb25DbGllbnQ6OkNsaWVudENvbm5lY3Rp
b25FdmVudFF1ZXVlKikgKyAyMzYKMzkgIGNvbS5hcHBsZS5DRk5ldHdvcmsgICAgICAgICAgIAkw
eDAwMDA3ZmZmODFiZTAzYmUgVVJMQ29ubmVjdGlvbkNsaWVudDo6Q2xpZW50Q29ubmVjdGlvbkV2
ZW50UXVldWU6OnByb2Nlc3NBbGxFdmVudHNBbmRDb25zdW1lUGF5bG9hZChYQ29ubmVjdGlvbkV2
ZW50SW5mbzxYQ2xpZW50RXZlbnQsIFhDbGllbnRFdmVudFBhcmFtcz4qLCBsb25nKSArIDIxOAo0
MCAgY29tLmFwcGxlLkNGTmV0d29yayAgICAgICAgICAgCTB4MDAwMDdmZmY4MWI2Nzc5ZiBVUkxD
b25uZWN0aW9uQ2xpZW50Ojpwcm9jZXNzRXZlbnRzKCkgKyAxMjEKNDEgIGNvbS5hcHBsZS5DRk5l
dHdvcmsgICAgICAgICAgIAkweDAwMDA3ZmZmODFiNjc1N2MgTXVsdGlwbGV4ZXJTb3VyY2U6OnBl
cmZvcm0oKSArIDE2MAo0MiAgY29tLmFwcGxlLkNvcmVGb3VuZGF0aW9uICAgICAgCTB4MDAwMDdm
ZmY4M2RiZmU5MSBfX0NGUnVuTG9vcERvU291cmNlczAgKyAxMzYxCjQzICBjb20uYXBwbGUuQ29y
ZUZvdW5kYXRpb24gICAgICAJMHgwMDAwN2ZmZjgzZGJlMDg5IF9fQ0ZSdW5Mb29wUnVuICsgODcz
CjQ0ICBjb20uYXBwbGUuQ29yZUZvdW5kYXRpb24gICAgICAJMHgwMDAwN2ZmZjgzZGJkODRmIENG
UnVuTG9vcFJ1blNwZWNpZmljICsgNTc1CjQ1ICBjb20uYXBwbGUuRm91bmRhdGlvbiAgICAgICAg
ICAJMHgwMDAwN2ZmZjgwMGZlYTE4IC1bTlNSdW5Mb29wKE5TUnVuTG9vcCkgcnVuTW9kZTpiZWZv
cmVEYXRlOl0gKyAyNzAKNDYgIER1bXBSZW5kZXJUcmVlICAgICAgICAgICAgICAgIAkweDAwMDAw
MDAxMDAwMGM1YWIgcnVuVGVzdChzdGQ6OnN0cmluZyBjb25zdCYpICsgMTQwOSAoRHVtcFJlbmRl
clRyZWUubW06MTExMSkKNDcgIER1bXBSZW5kZXJUcmVlICAgICAgICAgICAgICAgIAkweDAwMDAw
MDAxMDAwMGNlMzkgZHVtcFJlbmRlclRyZWUoaW50LCBjaGFyIGNvbnN0KiopICsgMTI1NCAoRHVt
cFJlbmRlclRyZWUubW06NjEzKQo0OCAgRHVtcFJlbmRlclRyZWUgICAgICAgICAgICAgICAgCTB4
MDAwMDAwMDEwMDAwZDE1YSBtYWluICsgOTQgKER1bXBSZW5kZXJUcmVlLm1tOjcxMSkKNDkgIER1
bXBSZW5kZXJUcmVlICAgICAgICAgICAgICAgIAkweDAwMDAwMDAxMDAwMDE0NmMgc3RhcnQgKyA1
MgoKVGhyZWFkIDE6ICBEaXNwYXRjaCBxdWV1ZTogY29tLmFwcGxlLmxpYmRpc3BhdGNoLW1hbmFn
ZXIKMCAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDAwMDA3ZmZmODdhNDIwOGEg
a2V2ZW50ICsgMTAKMSAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDAwMDA3ZmZm
ODdhNDNmNWQgX2Rpc3BhdGNoX21ncl9pbnZva2UgKyAxNTQKMiAgIGxpYlN5c3RlbS5CLmR5bGli
ICAgICAgICAgICAgIAkweDAwMDA3ZmZmODdhNDNjMzQgX2Rpc3BhdGNoX3F1ZXVlX2ludm9rZSAr
IDE4NQozICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4MDAwMDdmZmY4N2E0Mzc1
ZSBfZGlzcGF0Y2hfd29ya2VyX3RocmVhZDIgKyAyNTIKNCAgIGxpYlN5c3RlbS5CLmR5bGliICAg
ICAgICAgICAgIAkweDAwMDA3ZmZmODdhNDMwODggX3B0aHJlYWRfd3F0aHJlYWQgKyAzNTMKNSAg
IGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDAwMDA3ZmZmODdhNDJmMjUgc3RhcnRf
d3F0aHJlYWQgKyAxMwoKVGhyZWFkIDI6CjAgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAg
ICAJMHgwMDAwN2ZmZjg3YTQyZWFhIF9fd29ya3Ffa2VybnJldHVybiArIDEwCjEgICBsaWJTeXN0
ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHgwMDAwN2ZmZjg3YTQzMmJjIF9wdGhyZWFkX3dxdGhy
ZWFkICsgOTE3CjIgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHgwMDAwN2ZmZjg3
YTQyZjI1IHN0YXJ0X3dxdGhyZWFkICsgMTMKClRocmVhZCAzOgowICAgbGliU3lzdGVtLkIuZHls
aWIgICAgICAgICAgICAgCTB4MDAwMDdmZmY4N2EyOTJmYSBtYWNoX21zZ190cmFwICsgMTAKMSAg
IGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDAwMDA3ZmZmODdhMjk5NmQgbWFjaF9t
c2cgKyA1OQoyICAgY29tLmFwcGxlLkNvcmVGb3VuZGF0aW9uICAgICAgCTB4MDAwMDdmZmY4M2Ri
ZTNjMiBfX0NGUnVuTG9vcFJ1biArIDE2OTgKMyAgIGNvbS5hcHBsZS5Db3JlRm91bmRhdGlvbiAg
ICAgIAkweDAwMDA3ZmZmODNkYmQ4NGYgQ0ZSdW5Mb29wUnVuU3BlY2lmaWMgKyA1NzUKNCAgIGNv
bS5hcHBsZS5Gb3VuZGF0aW9uICAgICAgICAgIAkweDAwMDA3ZmZmODAxNDM0YzMgK1tOU1VSTENv
bm5lY3Rpb24oTlNVUkxDb25uZWN0aW9uUmVhbGx5SW50ZXJuYWwpIF9yZXNvdXJjZUxvYWRMb29w
Ol0gKyAyOTcKNSAgIGNvbS5hcHBsZS5Gb3VuZGF0aW9uICAgICAgICAgIAkweDAwMDA3ZmZmODAw
YzNlOGQgX19OU1RocmVhZF9fbWFpbl9fICsgMTQyOQo2ICAgbGliU3lzdGVtLkIuZHlsaWIgICAg
ICAgICAgICAgCTB4MDAwMDdmZmY4N2E2MjQ1NiBfcHRocmVhZF9zdGFydCArIDMzMQo3ICAgbGli
U3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4MDAwMDdmZmY4N2E2MjMwOSB0aHJlYWRfc3Rh
cnQgKyAxMwoKVGhyZWFkIDQ6ICBRVEtpdDogbGlzdGVuT25EZWxlZ2F0ZVBvcnQKMCAgIGxpYlN5
c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDAwMDA3ZmZmODdhMjkyZmEgbWFjaF9tc2dfdHJh
cCArIDEwCjEgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHgwMDAwN2ZmZjg3YTI5
OTZkIG1hY2hfbXNnICsgNTkKMiAgIGNvbS5hcHBsZS5Db3JlRm91bmRhdGlvbiAgICAgIAkweDAw
MDA3ZmZmODNkYmUzYzIgX19DRlJ1bkxvb3BSdW4gKyAxNjk4CjMgICBjb20uYXBwbGUuQ29yZUZv
dW5kYXRpb24gICAgICAJMHgwMDAwN2ZmZjgzZGJkODRmIENGUnVuTG9vcFJ1blNwZWNpZmljICsg
NTc1CjQgICBjb20uYXBwbGUuQ29yZUZvdW5kYXRpb24gICAgICAJMHgwMDAwN2ZmZjgzZGJkNWQ2
IENGUnVuTG9vcFJ1biArIDcwCjUgICBjb20uYXBwbGUuUVRLaXQgICAgICAgICAgICAgICAJMHgw
MDAwN2ZmZjgxNTY4MjE0IGxpc3Rlbk9uRGVsZWdhdGVQb3J0ICsgNDI1CjYgICBsaWJTeXN0ZW0u
Qi5keWxpYiAgICAgICAgICAgICAJMHgwMDAwN2ZmZjg3YTYyNDU2IF9wdGhyZWFkX3N0YXJ0ICsg
MzMxCjcgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHgwMDAwN2ZmZjg3YTYyMzA5
IHRocmVhZF9zdGFydCArIDEzCgpUaHJlYWQgNTogIFFUS2l0OiBsaXN0ZW5Pbk5vdGlmaWNhdGlv
blBvcnQKMCAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDAwMDA3ZmZmODdhMjky
ZmEgbWFjaF9tc2dfdHJhcCArIDEwCjEgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJ
MHgwMDAwN2ZmZjg3YTI5OTZkIG1hY2hfbXNnICsgNTkKMiAgIGNvbS5hcHBsZS5Db3JlRm91bmRh
dGlvbiAgICAgIAkweDAwMDA3ZmZmODNkYmUzYzIgX19DRlJ1bkxvb3BSdW4gKyAxNjk4CjMgICBj
b20uYXBwbGUuQ29yZUZvdW5kYXRpb24gICAgICAJMHgwMDAwN2ZmZjgzZGJkODRmIENGUnVuTG9v
cFJ1blNwZWNpZmljICsgNTc1CjQgICBjb20uYXBwbGUuQ29yZUZvdW5kYXRpb24gICAgICAJMHgw
MDAwN2ZmZjgzZGJkNWQ2IENGUnVuTG9vcFJ1biArIDcwCjUgICBjb20uYXBwbGUuUVRLaXQgICAg
ICAgICAgICAgICAJMHgwMDAwN2ZmZjgxNTY3NDJkIGxpc3Rlbk9uTm90aWZpY2F0aW9uUG9ydCAr
IDM4Mwo2ICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4MDAwMDdmZmY4N2E2MjQ1
NiBfcHRocmVhZF9zdGFydCArIDMzMQo3ICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAg
CTB4MDAwMDdmZmY4N2E2MjMwOSB0aHJlYWRfc3RhcnQgKyAxMwoKVGhyZWFkIDY6CjAgICBsaWJT
eXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHgwMDAwN2ZmZjg3YTZjZGNlIHNlbGVjdCREQVJX
SU5fRVhUU04gKyAxMAoxICAgY29tLmFwcGxlLkNvcmVGb3VuZGF0aW9uICAgICAgCTB4MDAwMDdm
ZmY4M2RkZmU5MiBfX0NGU29ja2V0TWFuYWdlciArIDgxOAoyICAgbGliU3lzdGVtLkIuZHlsaWIg
ICAgICAgICAgICAgCTB4MDAwMDdmZmY4N2E2MjQ1NiBfcHRocmVhZF9zdGFydCArIDMzMQozICAg
bGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4MDAwMDdmZmY4N2E2MjMwOSB0aHJlYWRf
c3RhcnQgKyAxMwoKVGhyZWFkIDc6CjAgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJ
MHgwMDAwN2ZmZjg3YTQyZWFhIF9fd29ya3Ffa2VybnJldHVybiArIDEwCjEgICBsaWJTeXN0ZW0u
Qi5keWxpYiAgICAgICAgICAgICAJMHgwMDAwN2ZmZjg3YTQzMmJjIF9wdGhyZWFkX3dxdGhyZWFk
ICsgOTE3CjIgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHgwMDAwN2ZmZjg3YTQy
ZjI1IHN0YXJ0X3dxdGhyZWFkICsgMTMKClRocmVhZCAwIGNyYXNoZWQgd2l0aCBYODYgVGhyZWFk
IFN0YXRlICg2NC1iaXQpOgogIHJheDogMHgwMDAwMDAwMDAwMDAwMDAwICByYng6IDB4MDAwMDAw
MDExOGIwY2ZjMCAgcmN4OiAweDAwMDAwMDAwMDAwMDAwMDEgIHJkeDogMHgwMDAwMDAwMDAwMDAw
MDAxCiAgcmRpOiAweDAwMDAwMDAwMDA2YzAwMDAgIHJzaTogMHgwMDAwMDAwMGZmZmZmZmZlICBy
YnA6IDB4MDAwMDAwMDAwMDAwMDAwMiAgcnNwOiAweDAwMDA3ZmZmNWZiZmQyMTAKICAgcjg6IDB4
MDAwMDAwMDExOGIwY2Y4OCAgIHI5OiAweDAwMDAwMDAxMThiMGNmODggIHIxMDogMHgwMDAwMDAw
MDAwNmMwMDYxICByMTE6IDB4MDAwMDAwMDExOGQxMzAxOAogIHIxMjogMHhmZmZmMDAwMDAwMDAw
MDAyICByMTM6IDB4MDAwMDAwMDEwNjdhNmE4MCAgcjE0OiAweDAwMDAwMDAwMDAwMDAwMDAgIHIx
NTogMHgwMDAwMDAwMDAwMDAwMDAyCiAgcmlwOiAweDAwMDAwMDAxMDAyMjRiNjEgIHJmbDogMHgw
MDAwMDAwMDAwMDEwMjQ2ICBjcjI6IDB4MDAwMDAwMDAwMDZmZmRjMAoKQmluYXJ5IEltYWdlczoK
ICAgICAgIDB4MTAwMDAwMDAwIC0gICAgICAgIDB4MTAwMDUwZmY3ICtEdW1wUmVuZGVyVHJlZSA/
Pz8gKD8/PykgPENGQjI4QkU5LUU3MTgtNzRGQi02NTI0LThFMTlCOEJGNDMwNT4gL1Byb2plY3Rz
L0NvbW1pdFF1ZXVlL1dlYktpdEJ1aWxkL1JlbGVhc2UvRHVtcFJlbmRlclRyZWUKICAgICAgIDB4
MTAwMGYyMDAwIC0gICAgICAgIDB4MTAwMzA4ZmZmICBjb20uYXBwbGUuSmF2YVNjcmlwdENvcmUg
NTM0KyAoNTM0LjE2KykgPEUwOUU3MjUzLTA5MkItQ0U1Qi1FNUY4LUZBQTVCOEE1MDRFRD4gL1By
b2plY3RzL0NvbW1pdFF1ZXVlL1dlYktpdEJ1aWxkL1JlbGVhc2UvSmF2YVNjcmlwdENvcmUuZnJh
bWV3b3JrL1ZlcnNpb25zL0EvSmF2YVNjcmlwdENvcmUKICAgICAgIDB4MTAwM2VkMDAwIC0gICAg
ICAgIDB4MTAwNTg3ZmU3ICBjb20uYXBwbGUuV2ViS2l0IDUzNCsgKDUzNC4xNispIDwyOEUwN0Y2
NC04NkM5LTNFRDAtNUQ5Ni01NTYxMDAzRDhBMDk+IC9Qcm9qZWN0cy9Db21taXRRdWV1ZS9XZWJL
aXRCdWlsZC9SZWxlYXNlL1dlYktpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9XZWJLaXQKICAgICAg
IDB4MTAwNzEwMDAwIC0gICAgICAgIDB4MTAxNmViZmY3ICBjb20uYXBwbGUuV2ViQ29yZSA1MzQr
ICg1MzQuMTYrKSA8MkNENTcwOTAtMEU1Ri1ERUE2LTUzMzktRTc0NjlGQjU5QzNGPiAvUHJvamVj
dHMvQ29tbWl0UXVldWUvV2ViS2l0QnVpbGQvUmVsZWFzZS9XZWJDb3JlLmZyYW1ld29yay9WZXJz
aW9ucy9BL1dlYkNvcmUKICAgICAgIDB4MTAzN2I0MDAwIC0gICAgICAgIDB4MTAzN2I0ZmZmICBj
b20uYXBwbGUuSmF2YVBsdWdpbkNvY29hIDEzLjMuMCAoMTMuMy4wKSA8RkUyOTdGNzMtOTA2My0z
NTA3LUJBNEQtQjAyMzA2RjRBM0MyPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9KYXZhVk0u
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvSmF2YVBsdWdpbkNvY29hLmJ1bmRsZS9Db250ZW50cy9NYWNP
Uy9KYXZhUGx1Z2luQ29jb2EKICAgICAgIDB4MTA2NTZkMDAwIC0gICAgICAgIDB4MTA2NTc2ZmZm
ICBjb20uYXBwbGUuSmF2YVZNIDEzLjMuMCAoMTMuMy4wKSA8MzZCQ0UzRTAtNjdFQi0xODRCLTM4
MzEtNzgyODdFOEM1OEExPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9KYXZhVk0uZnJhbWV3
b3JrL1ZlcnNpb25zL0EvSmF2YVZNCiAgICAgICAweDExOGFiMjAwMCAtICAgICAgICAweDExOGFk
NmZmNyAgbGliUERGUklQLkEuZHlsaWIgNTQzLjUwLjAgKGNvbXBhdGliaWxpdHkgNjQuMC4wKSA8
NkEyNDgxNTMtOEEyOC1GRkNBLTAxRjEtQzg1RDY1OTg3NkZDPiAvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29y
a3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9WZXJzaW9ucy9BL1Jlc291cmNlcy9saWJQREZSSVAu
QS5keWxpYgogICAgICAgMHgxM2RmYjcwMDAgLSAgICAgICAgMHgxM2UxNDRmZTcgIEdMRW5naW5l
ID8/PyAoPz8/KSA8NTdENzMzQzItRjdDQi0yQjhGLUNEMzQtQzg1QTE5MzE0NURFPiAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL1Jlc291cmNlcy9HTEVuZ2luZS5i
dW5kbGUvR0xFbmdpbmUKICAgICAgIDB4MTNlMTc1MDAwIC0gICAgICAgIDB4MTNlMTliZmZmICBH
TFJlbmRlcmVyRmxvYXQgPz8/ICg/Pz8pIDwxMEFGQzdFMC1BNUNFLThGMEUtNzA4NC00MzlCRTU5
RjdFOTU+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvUmVzb3Vy
Y2VzL0dMUmVuZGVyZXJGbG9hdC5idW5kbGUvR0xSZW5kZXJlckZsb2F0CiAgICAgICAweDIwMDAw
MDAwMCAtICAgICAgICAweDIwMDNkNmZmZiAgY29tLmFwcGxlLkdlRm9yY2U3eHh4R0xEcml2ZXIg
MS42LjE2ICg2LjEuNikgPDg5RjIzMkU1LTQ3OUQtNkREQy03OTg0LTgxNkQyMTM3RkEyRT4gL1N5
c3RlbS9MaWJyYXJ5L0V4dGVuc2lvbnMvR2VGb3JjZTd4eHhHTERyaXZlci5idW5kbGUvQ29udGVu
dHMvTWFjT1MvR2VGb3JjZTd4eHhHTERyaXZlcgogICAgMHg3ZmZmNWZjMDAwMDAgLSAgICAgMHg3
ZmZmNWZjM2JkZWYgIGR5bGQgMTMyLjEgKD8/PykgPEI1MzZGMkYxLTlERjEtM0I2Qy0xQzJDLTkw
NzVFQTIxOUEwNj4gL3Vzci9saWIvZHlsZAogICAgMHg3ZmZmODAwMDMwMDAgLSAgICAgMHg3ZmZm
ODAwMDNmZjcgIGNvbS5hcHBsZS5Db3JlU2VydmljZXMgNDQgKDQ0KSA8MjEwQTRDNTYtQkVDQi1F
M0U0LUI2RUUtN0VDNTNFMDIyNjVEPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ29yZVNlcnZpY2VzCiAgICAweDdmZmY4MDA3MTAw
MCAtICAgICAweDdmZmY4MDBiMmZmZiAgY29tLmFwcGxlLlN5c3RlbUNvbmZpZ3VyYXRpb24gMS4x
MC4yICgxLjEwLjIpIDxCQzI3QkRENC05Q0M4LTlBRjAtQjRDMi1ERDUwRkQ3NTFDQkY+IC9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1N5c3RlbUNvbmZpZ3VyYXRpb24uZnJhbWV3b3JrL1ZlcnNp
b25zL0EvU3lzdGVtQ29uZmlndXJhdGlvbgogICAgMHg3ZmZmODAwYjMwMDAgLSAgICAgMHg3ZmZm
ODAzMzRmZWYgIGNvbS5hcHBsZS5Gb3VuZGF0aW9uIDYuNi4zICg3NTEuMjkpIDxEQUVEQjU4OS05
RjU5LTk1NTYtQ0Y4RC0wNzU1NjMxNzkzN0I+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Zv
dW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0MvRm91bmRhdGlvbgogICAgMHg3ZmZmODAzMzUw
MDAgLSAgICAgMHg3ZmZmODA0NWRmZjcgIGNvbS5hcHBsZS5NZWRpYVRvb2xib3ggMC40ODQuMTEg
KDQ4NC4xMSkgPEY1MEI1NTUyLTg1MjctQzc1RC04NzNGLTY2QTYxRDA0RTMyQT4gL1N5c3RlbS9M
aWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL01lZGlhVG9vbGJveC5mcmFtZXdvcmsvVmVyc2lvbnMv
QS9NZWRpYVRvb2xib3gKICAgIDB4N2ZmZjgwNDVlMDAwIC0gICAgIDB4N2ZmZjgwNTZkZmU3ICBs
aWJjcnlwdG8uMC45LjguZHlsaWIgMC45LjggKGNvbXBhdGliaWxpdHkgMC45LjgpIDwzNkRBODlB
Ni0zQUY1LTg2RjItQkRENS1COTRDN0MwODQ0RDQ+IC91c3IvbGliL2xpYmNyeXB0by4wLjkuOC5k
eWxpYgogICAgMHg3ZmZmODA2YmQwMDAgLSAgICAgMHg3ZmZmODA2YzFmZjcgIGxpYm1hdGhDb21t
b24uQS5keWxpYiAzMTUuMC4wIChjb21wYXRpYmlsaXR5IDEuMC4wKSA8OTU3MTg2NzMtRkVFRS1C
NkVELUIxMjctQkNEQkRCNjBENEU1PiAvdXNyL2xpYi9zeXN0ZW0vbGlibWF0aENvbW1vbi5BLmR5
bGliCiAgICAweDdmZmY4MDczZjAwMCAtICAgICAweDdmZmY4MDc0MmZmNyAgY29tLmFwcGxlLnNl
Y3VyaXR5aGkgNC4wICgzNjYzOCkgPDM4OTM1ODUxLTA5RTQtRERBQi1EQjFELTMwQURDMzlGN0VE
MD4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9WZXJzaW9ucy9B
L0ZyYW1ld29ya3MvU2VjdXJpdHlISS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUhJCiAg
ICAweDdmZmY4MDkxZTAwMCAtICAgICAweDdmZmY4MDlhM2ZmZiAgY29tLmFwcGxlLnByaW50LmZy
YW1ld29yay5QcmludENvcmUgNi4yICgzMTIuNSkgPEMyMEY4N0NFLUFDQzEtNTUyQi04QTczLTJC
Mzg0NkEwMUQ4MD4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvVmVy
c2lvbnMvQS9QcmludENvcmUKICAgIDB4N2ZmZjgwOWE0MDAwIC0gICAgIDB4N2ZmZjgwYTUzZmZm
ICBlZHUubWl0LktlcmJlcm9zIDYuNS4xMCAoNi41LjEwKSA8RjNGNzZFREYtNTY2MC03OEYwLUZF
NkUtMzNCNjE3NEY1NUE0PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9LZXJiZXJvcy5mcmFt
ZXdvcmsvVmVyc2lvbnMvQS9LZXJiZXJvcwogICAgMHg3ZmZmODBhY2MwMDAgLSAgICAgMHg3ZmZm
ODBhZDlmZTcgIGxpYkNTeW5jLkEuZHlsaWIgNTQzLjUwLjAgKGNvbXBhdGliaWxpdHkgNjQuMC4w
KSA8N0I4OTFENEMtMUYxOS00REIwLUZEMTItN0E3RDVFOEY0N0FFPiAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1l
d29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9WZXJzaW9ucy9BL1Jlc291cmNlcy9saWJDU3lu
Yy5BLmR5bGliCiAgICAweDdmZmY4MGIxZTAwMCAtICAgICAweDdmZmY4MGIzZmZmZiAgbGlicmVz
b2x2LjkuZHlsaWIgNDEuMC4wIChjb21wYXRpYmlsaXR5IDEuMC4wKSA8Njk5M0YzNDgtNDI4Ri1D
OTdFLTdBODQtN0JEMkVEQzQ2QTYyPiAvdXNyL2xpYi9saWJyZXNvbHYuOS5keWxpYgogICAgMHg3
ZmZmODBiNzAwMDAgLSAgICAgMHg3ZmZmODBiZWRmZWYgIGxpYnN0ZGMrKy42LmR5bGliIDcuOS4w
IChjb21wYXRpYmlsaXR5IDcuMC4wKSA8MzVFQ0E0MTEtMkMwOC1GRDdELTExQjEtMUI3QTA0OTIx
QTVDPiAvdXNyL2xpYi9saWJzdGRjKysuNi5keWxpYgogICAgMHg3ZmZmODBiZWUwMDAgLSAgICAg
MHg3ZmZmODBjMzdmZWYgIGxpYkdMVS5keWxpYiA/Pz8gKD8/PykgPDM0RDExOENELUY5RUUtRDAy
My1GRUJGLTc0NTgxREVGMzFDRD4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZy
YW1ld29yay9WZXJzaW9ucy9BL0xpYnJhcmllcy9saWJHTFUuZHlsaWIKICAgIDB4N2ZmZjgwY2Y1
MDAwIC0gICAgIDB4N2ZmZjgwZjdiZmY3ICBjb20uYXBwbGUuc2VjdXJpdHkgNi4xLjEgKDM3NTk0
KSA8NUVEREMwOEMtQzk1Qi0yRDI0LUUxRDItRDMwRDIzM0FCMDY1PiAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eQogICAgMHg3
ZmZmODBmN2MwMDAgLSAgICAgMHg3ZmZmODBmYjdmZmYgIGNvbS5hcHBsZS5BRSA0OTYuNCAoNDk2
LjQpIDxDQkVEQjZBMS1GRDg1LUY4NDItNEVCOC1DQzI4OUZBRTBGMjQ+IC9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtz
L0FFLmZyYW1ld29yay9WZXJzaW9ucy9BL0FFCiAgICAweDdmZmY4MGZiODAwMCAtICAgICAweDdm
ZmY4MGZiZmZmZiAgY29tLmFwcGxlLk9wZW5EaXJlY3RvcnkgMTAuNiAoMTAuNikgPDcyQTY1RDc2
LTc4MzEtRDMxRS1GMUIzLTlFNDhCRjI2QTk4Qj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
T3BlbkRpcmVjdG9yeS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9PcGVuRGlyZWN0b3J5CiAgICAweDdm
ZmY4MGZjMDAwMCAtICAgICAweDdmZmY4MTM1OWZmNyAgY29tLmFwcGxlLlF1YXJ0ekNvcmUgMS42
LjIgKDIyNy4yMikgPDc2RUUwQTMyLUIyMEItRjMxNi1BRERELTQyMzAzMjkyNTNENT4gL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9RdWFy
dHpDb3JlCiAgICAweDdmZmY4MTQ4ZDAwMCAtICAgICAweDdmZmY4MTVmY2ZlNyAgY29tLmFwcGxl
LlFUS2l0IDcuNi42ICgxNzQyKSA8N0UyNTQxODQtNzU3RC1FODdDLTVCMkEtNzYxMkEyQzg1MjQz
PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9R
VEtpdAogICAgMHg3ZmZmODE1ZmQwMDAgLSAgICAgMHg3ZmZmODE2NGNmZWYgIGxpYlRJRkYuZHls
aWIgPz8/ICg/Pz8pIDxBNjZDQkE5Qy1BMzhELTVFREItQkZCNS1DQjM5OEYwMzNENkY+IC9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNp
b25zL0EvRnJhbWV3b3Jrcy9JbWFnZUlPLmZyYW1ld29yay9WZXJzaW9ucy9BL1Jlc291cmNlcy9s
aWJUSUZGLmR5bGliCiAgICAweDdmZmY4MTdlZDAwMCAtICAgICAweDdmZmY4MThkM2ZlNyAgY29t
LmFwcGxlLkRlc2t0b3BTZXJ2aWNlcyAxLjUuNyAoMS41LjcpIDw4QTY5NzEyOC1CNkNBLUU0QTgt
QzIwMC02NTIwRDVBMzVGQkU+IC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9EZXNr
dG9wU2VydmljZXNQcml2LmZyYW1ld29yay9WZXJzaW9ucy9BL0Rlc2t0b3BTZXJ2aWNlc1ByaXYK
ICAgIDB4N2ZmZjgxYjRhMDAwIC0gICAgIDB4N2ZmZjgxYjU1ZmY3ICBjb20uYXBwbGUuc3BlZWNo
LnJlY29nbml0aW9uLmZyYW1ld29yayAzLjExLjEgKDMuMTEuMSkgPEYwRERGMjdFLURCNTUtMDdD
RS1FNTQ4LUM2MjA5NUJFODE2Nz4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvU3BlZWNoUmVjb2duaXRpb24uZnJhbWV3b3Jr
L1ZlcnNpb25zL0EvU3BlZWNoUmVjb2duaXRpb24KICAgIDB4N2ZmZjgxYjU2MDAwIC0gICAgIDB4
N2ZmZjgxYzI2ZmY3ICBjb20uYXBwbGUuQ0ZOZXR3b3JrIDQ1NC45LjcgKDQ1NC45LjcpIDxBQTZF
QjY5MC02Q0NGLTYwM0QtQUFDMi0zNUI5RTA1RDE1OTM+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0NGTmV0d29y
ay5mcmFtZXdvcmsvVmVyc2lvbnMvQS9DRk5ldHdvcmsKICAgIDB4N2ZmZjgxYzcxMDAwIC0gICAg
IDB4N2ZmZjgxY2ZkZmVmICBTZWN1cml0eUZvdW5kYXRpb24gPz8/ICg/Pz8pIDw2ODYwREUyNi0w
RDQyLUQxRTgtQ0Q3Qy01QjQyRDc4QzFFMUQ+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1Nl
Y3VyaXR5Rm91bmRhdGlvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUZvdW5kYXRpb24K
ICAgIDB4N2ZmZjgxZDA2MDAwIC0gICAgIDB4N2ZmZjgxZDJjZmU3ICBsaWJKUEVHLmR5bGliID8/
PyAoPz8/KSA8NDA2MEYzRTItQkFEMy0yNDRGLUQ3NzctNTFCQTE2NTY5REE0PiAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9B
L0ZyYW1ld29ya3MvSW1hZ2VJTy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9SZXNvdXJjZXMvbGliSlBF
Ry5keWxpYgogICAgMHg3ZmZmODFkMmQwMDAgLSAgICAgMHg3ZmZmODFkNzVmZjcgIGxpYnZEU1Au
ZHlsaWIgMjY4LjAuMSAoY29tcGF0aWJpbGl0eSAxLjAuMCkgPDk4RkM0NDU3LUY0MDUtMDI2Mi0w
MEY3LTU2MTE5Q0ExMDdCNj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQWNjZWxlcmF0ZS5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL3ZlY0xpYi5mcmFtZXdvcmsvVmVyc2lvbnMv
QS9saWJ2RFNQLmR5bGliCiAgICAweDdmZmY4MWRmZTAwMCAtICAgICAweDdmZmY4MWVjOWZlNyAg
Q29sb3JTeW5jRGVwcmVjYXRlZC5keWxpYiA0LjYuMCAoY29tcGF0aWJpbGl0eSAxLjAuMCkgPDND
MjIzQTk0LUVGMTQtMjhDNS04NDRCLUMyNURGQzg3RkI0Mj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMu
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvUmVzb3VyY2VzL0NvbG9yU3luY0RlcHJlY2F0ZWQuZHlsaWIK
ICAgIDB4N2ZmZjgxZWNhMDAwIC0gICAgIDB4N2ZmZjgyMGFkZmVmICBsaWJUeXBlMVNjYWxlci5k
eWxpYiA/Pz8gKD8/PykgPDRDNURENjk5LUQzMjktQ0JDNC0wMThCLUQ5MDMzREI2QTNENj4gL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVy
c2lvbnMvQS9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9SZXNvdXJjZXMvbGli
VHlwZTFTY2FsZXIuZHlsaWIKICAgIDB4N2ZmZjgyMGFlMDAwIC0gICAgIDB4N2ZmZjgyMWVjZmZm
ICBjb20uYXBwbGUuQ29yZURhdGEgMTAyLjEgKDI1MSkgPDMyMjMzRDRELTAwQjctQ0UxNC1DODgx
LTZCRjE5RkQwNUEwMz4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3
b3JrL1ZlcnNpb25zL0EvQ29yZURhdGEKICAgIDB4N2ZmZjgyMWVkMDAwIC0gICAgIDB4N2ZmZjgy
MjAxZmY3ICBjb20uYXBwbGUuc3BlZWNoLnN5bnRoZXNpcy5mcmFtZXdvcmsgMy4xMC4zNSAoMy4x
MC4zNSkgPDYyMUI3NDE1LUEwQjktMDdBNy1GMzEzLTM2QkVFREQ3QjEzMj4gL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9G
cmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TcGVlY2hTeW50
aGVzaXMKICAgIDB4N2ZmZjgyMjQyMDAwIC0gICAgIDB4N2ZmZjgyMjQyZmY3ICBjb20uYXBwbGUu
dmVjTGliIDMuNiAodmVjTGliIDMuNikgPDk2RkI2QkFELTU1NjgtQzRFMC02RkE3LTAyNzkxQTU4
QjU4ND4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvdmVjTGliLmZyYW1ld29yay9WZXJzaW9u
cy9BL3ZlY0xpYgogICAgMHg3ZmZmODIyZDkwMDAgLSAgICAgMHg3ZmZmODIyZGRmZjcgIGxpYkNH
WFR5cGUuQS5keWxpYiA1NDMuNTAuMCAoY29tcGF0aWJpbGl0eSA2NC4wLjApIDxFNjY2RUJDNy0y
RDg3LUEzQzYtOTQ2MS1BNTk2QjRFNTM1OTM+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9Db3JlR3Jh
cGhpY3MuZnJhbWV3b3JrL1ZlcnNpb25zL0EvUmVzb3VyY2VzL2xpYkNHWFR5cGUuQS5keWxpYgog
ICAgMHg3ZmZmODI0MDYwMDAgLSAgICAgMHg3ZmZmODI0MGJmZjcgIGNvbS5hcHBsZS5Db21tb25Q
YW5lbHMgMS4yLjQgKDkxKSA8NEQ4NDgwM0ItQkQwNi1EODBFLTE1QUUtRUZCRTQzRjkzNjA1PiAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJh
bWV3b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ29tbW9uUGFuZWxzCiAg
ICAweDdmZmY4MjQwYzAwMCAtICAgICAweDdmZmY4MjQyMGZmZiAgbGliR0wuZHlsaWIgPz8/ICg/
Pz8pIDw1QUQ2OTU0NS1EMUEzLUMwMTctQzdBRi1CNEFGRDZGMDhGQTI+IC9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9MaWJyYXJpZXMvbGliR0wu
ZHlsaWIKICAgIDB4N2ZmZjgyNDJkMDAwIC0gICAgIDB4N2ZmZjgyNzJiZmU3ICBjb20uYXBwbGUu
SElUb29sYm94IDEuNi4zICg/Pz8pIDxDRjBDODUyNC1GQTgyLTM5MDgtQUNEMC1BOTE3NkM3MDRB
RUQ+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvVmVyc2lvbnMv
QS9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9ISVRvb2xib3gKICAg
IDB4N2ZmZjgyNzJjMDAwIC0gICAgIDB4N2ZmZjgyNzJjZmY3ICBjb20uYXBwbGUuQWNjZWxlcmF0
ZSAxLjYgKEFjY2VsZXJhdGUgMS42KSA8MTVERjhCNEEtOTZCMi1DQjRFLTM2OEQtREVDN0RGNkI2
MkJCPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BY2NlbGVyYXRlLmZyYW1ld29yay9WZXJz
aW9ucy9BL0FjY2VsZXJhdGUKICAgIDB4N2ZmZjgyNzJkMDAwIC0gICAgIDB4N2ZmZjgyNzU1ZmZm
ICBjb20uYXBwbGUuRGljdGlvbmFyeVNlcnZpY2VzIDEuMS4xICgxLjEuMSkgPDlGRDcwOUZDLTIz
RjAtRjI3MC1FQUMxLUM1OTBDRDUxNkEzNj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvRGljdGlvbmFyeVNlcnZp
Y2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0RpY3Rpb25hcnlTZXJ2aWNlcwogICAgMHg3ZmZmODI3
NmMwMDAgLSAgICAgMHg3ZmZmODI4MDZmZmYgIGNvbS5hcHBsZS5BcHBsaWNhdGlvblNlcnZpY2Vz
LkFUUyA0LjMgKD8/PykgPEE3Q0Q5RTFGLUM1NjMtRTk0MC0xMzBELUFBN0UwOEM1QTI5Rj4gL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVy
c2lvbnMvQS9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9BVFMKICAgIDB4N2Zm
ZjgyODRjMDAwIC0gICAgIDB4N2ZmZjgyODViZmY3ICBjb20uYXBwbGUub3BlbmdsIDEuNi44ICgx
LjYuOCkgPDBDREM0Rjk4LTc5ODEtQTExNC0xNzc4LUFGMTcxMDc1MTM4RT4gL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9WZXJzaW9ucy9BL09wZW5HTAogICAgMHg3
ZmZmODI5MjEwMDAgLSAgICAgMHg3ZmZmODI5MjZmZmYgIGxpYkdGWFNoYXJlZC5keWxpYiA/Pz8g
KD8/PykgPDEyNjVGQUVGLTFDOTctQjMzOS0yOEE0LTQ1MTA1ODlCMDY3Qj4gL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9WZXJzaW9ucy9BL0xpYnJhcmllcy9saWJH
RlhTaGFyZWQuZHlsaWIKICAgIDB4N2ZmZjgyOWNiMDAwIC0gICAgIDB4N2ZmZjgyYTViZmZmICBj
b20uYXBwbGUuU2VhcmNoS2l0IDEuMy4wICgxLjMuMCkgPDQxNzVEQzMxLTE1MDYtMjI4QS0wOEZE
LUM3MDRBQzlERjY0Mj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9WZXJzaW9u
cy9BL1NlYXJjaEtpdAogICAgMHg3ZmZmODJmOTMwMDAgLSAgICAgMHg3ZmZmODJmOTlmZjcgIElP
U3VyZmFjZSA/Pz8gKD8/PykgPEVCMjAxOUY2LTdDNUMtM0Q1OS1FMTFGLTYxMTk0NjZDMTJBOT4g
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9TdXJmYWNlLmZyYW1ld29yay9WZXJzaW9ucy9B
L0lPU3VyZmFjZQogICAgMHg3ZmZmODJmOWEwMDAgLSAgICAgMHg3ZmZmODMwMThmZmYgIGNvbS5h
cHBsZS5Db3JlVGV4dCAzLjEuMCAoPz8/KSA8Qjc0MERBMUQtRUZEMC1DQ0JGLUY4OTMtRTMwMDRG
RTU4QTk4PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL1ZlcnNpb25z
L0EvQ29yZVRleHQKICAgIDB4N2ZmZjgzMDE5MDAwIC0gICAgIDB4N2ZmZjgzMDVhZmVmICBjb20u
YXBwbGUuUUQgMy4zNSAoPz8/KSA8NzhDOUE1NjAtRTZGNy1EQzRGLUY4NUUtRTYzQ0Y4QTk4RjBC
PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvUUQKICAgIDB4
N2ZmZjgzMDViMDAwIC0gICAgIDB4N2ZmZjgzMDVlZmZmICBjb20uYXBwbGUuaGVscCAxLjMuMSAo
NDEpIDw1NEI3OUJBMi1CNzFCLTI2OEUtODc1Mi01QzhFRTAwRTQ5RTQ+IC9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0hlbHAu
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvSGVscAogICAgMHg3ZmZmODMwYTAwMDAgLSAgICAgMHg3ZmZm
ODMwYWZmZmYgIGNvbS5hcHBsZS5OZXRGUyAzLjIuMSAoMy4yLjEpIDwwMzU3QzM3MS0yRTJELTA2
OUMtMDhGQi0xMTgwNTEyQjg1MTY+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL05ldEZTLmZy
YW1ld29yay9WZXJzaW9ucy9BL05ldEZTCiAgICAweDdmZmY4M2QyMDAwMCAtICAgICAweDdmZmY4
M2Q3MWZlNyAgY29tLmFwcGxlLkhJU2VydmljZXMgMS44LjAgKD8/PykgPDFBQkE3ODAyLUMxRTQt
MDZBMC05MDM1LTI3OTJDQzkxNUJGNj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0hJU2VydmljZXMu
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvSElTZXJ2aWNlcwogICAgMHg3ZmZmODNkNzIwMDAgLSAgICAg
MHg3ZmZmODNlZTdmZjcgIGNvbS5hcHBsZS5Db3JlRm91bmRhdGlvbiA2LjYuMyAoNTUwLjI5KSA8
NDg4MTA2MDItNjNDMy05OTRELUU1NjMtREQwMkIxNkU3NkUxPiAvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9Db3JlRm91bmRhdGlv
bgogICAgMHg3ZmZmODNmMmEwMDAgLSAgICAgMHg3ZmZmODQ5MjBmZmYgIGNvbS5hcHBsZS5BcHBL
aXQgNi42LjYgKDEwMzguMjkpIDw3QkREMzM1RC01NDI1LTAzNTQtNUFENi00MUM0RjFCNEEyRjQ+
IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQy9B
cHBLaXQKICAgIDB4N2ZmZjg0OTIxMDAwIC0gICAgIDB4N2ZmZjg0YWQ3ZmVmICBjb20uYXBwbGUu
SW1hZ2VJTy5mcmFtZXdvcmsgMy4wLjMgKDMuMC4zKSA8QTMyRDBCNUEtNzE0OS03NzM5LTIyRDMt
ODREMzhCMDdFOUU1PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvSW1hZ2VJTy5mcmFtZXdvcmsvVmVy
c2lvbnMvQS9JbWFnZUlPCiAgICAweDdmZmY4NGIwOTAwMCAtICAgICAweDdmZmY4NGI0ZWZmZiAg
Y29tLmFwcGxlLkNvcmVNZWRpYUlPU2VydmljZXMgMTMwLjAgKDEwMzUpIDw1NjdENzk0OS0zMTE1
LTRFNzgtOEYyNy1CMjg5NjhDQzI1Rjc+IC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jr
cy9Db3JlTWVkaWFJT1NlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0NvcmVNZWRpYUlPU2Vy
dmljZXMKICAgIDB4N2ZmZjg0ZDRjMDAwIC0gICAgIDB4N2ZmZjg0ZDZmZmZmICBjb20uYXBwbGUu
b3BlbmNsIDEyLjEgKDEyLjEpIDw0MDNFOEYzNy00MzQ4LUI5QkMtMDhFNi03NjkzQTk5NUI3RUM+
IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5DTC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9P
cGVuQ0wKICAgIDB4N2ZmZjg0ZGJmMDAwIC0gICAgIDB4N2ZmZjg0ZTJkZmZmICBjb20uYXBwbGUu
QXBwbGVWQUZyYW1ld29yayA0LjkuMjAgKDQuOS4yMCkgPDc4NzI3MTY1LThENDQtMDM1NC02RjZD
LTY4RkQ3OThFMDRBMT4gL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0FwcGxlVkEu
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvQXBwbGVWQQogICAgMHg3ZmZmODRlMmUwMDAgLSAgICAgMHg3
ZmZmODRlNzhmZjcgIGNvbS5hcHBsZS5NZXRhZGF0YSAxMC42LjMgKDUwNy4xMCkgPDY0MTM5NUI3
LUZGMkMtQjk0Qy05NjVBLUNFNkEwODMwNjQ1Rj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJh
bWV3b3JrL1ZlcnNpb25zL0EvTWV0YWRhdGEKICAgIDB4N2ZmZjg0ZTc5MDAwIC0gICAgIDB4N2Zm
Zjg0ZTdmZmY3ICBjb20uYXBwbGUuRGlza0FyYml0cmF0aW9uIDIuMyAoMi4zKSA8ODU3RjZFNDMt
MUVGNC03RDUzLTM1MUItMTBERTBBOEY5OTJBPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9E
aXNrQXJiaXRyYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvRGlza0FyYml0cmF0aW9uCiAgICAw
eDdmZmY4NGU4MDAwMCAtICAgICAweDdmZmY4NGVmZmZlZiAgY29tLmFwcGxlLmF1ZGlvLkNvcmVB
dWRpbyAzLjIuMiAoMy4yLjIpIDwyNDNFNDU2RS03QTc0LUJFNzYtRkYxOC1FNTg5QkRDQUE3ODU+
IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVBdWRpby5mcmFtZXdvcmsvVmVyc2lvbnMv
QS9Db3JlQXVkaW8KICAgIDB4N2ZmZjg0ZjYzMDAwIC0gICAgIDB4N2ZmZjg1MDNkZmY3ICBjb20u
YXBwbGUudkltYWdlIDQuMCAoNC4wKSA8MzU0RjM0QkYtQjIyMS1BM0M5LTJDQTctOUJFNUUxNEFE
NUFEPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BY2NlbGVyYXRlLmZyYW1ld29yay9WZXJz
aW9ucy9BL0ZyYW1ld29ya3MvdkltYWdlLmZyYW1ld29yay9WZXJzaW9ucy9BL3ZJbWFnZQogICAg
MHg3ZmZmODUwNTAwMDAgLSAgICAgMHg3ZmZmODUwOWZmZjcgIGNvbS5hcHBsZS5EaXJlY3RvcnlT
ZXJ2aWNlLlBhc3N3b3JkU2VydmVyRnJhbWV3b3JrIDYuMCAoNi4wKSA8RTZBOTYyNkEtRTQyRC03
REIyLUZDMzctQ0Y5NUY3NTM0MkY3PiAvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3Mv
UGFzc3dvcmRTZXJ2ZXIuZnJhbWV3b3JrL1ZlcnNpb25zL0EvUGFzc3dvcmRTZXJ2ZXIKICAgIDB4
N2ZmZjg1MmRjMDAwIC0gICAgIDB4N2ZmZjg1MzkyZmZmICBsaWJvYmpjLkEuZHlsaWIgMjI3LjAu
MCAoY29tcGF0aWJpbGl0eSAxLjAuMCkgPEYyMDZCRTZELTg3NzctQUU2Qy1CMzY3LTdCRUE3NkMx
NDI0MT4gL3Vzci9saWIvbGlib2JqYy5BLmR5bGliCiAgICAweDdmZmY4NTNkNjAwMCAtICAgICAw
eDdmZmY4NTNkNmZmNyAgY29tLmFwcGxlLkFwcGxpY2F0aW9uU2VydmljZXMgMzggKDM4KSA8MTBB
MEI5RTktNDk4OC0wM0Q0LUZDNTYtRERFMjMxQTAyQzYzPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0FwcGxpY2F0aW9u
U2VydmljZXMKICAgIDB4N2ZmZjg1M2Q3MDAwIC0gICAgIDB4N2ZmZjg1M2Q5ZmZmICBjb20uYXBw
bGUucHJpbnQuZnJhbWV3b3JrLlByaW50IDYuMSAoMjM3LjEpIDw0NTEzREIyRi03MzdDLUI0M0Mt
MkQwRS0yM0NENkU4MzgwMTQ+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL1ByaW50LmZyYW1ld29yay9WZXJzaW9ucy9BL1By
aW50CiAgICAweDdmZmY4NTNkYTAwMCAtICAgICAweDdmZmY4NTcwZGZlNyAgY29tLmFwcGxlLkNv
cmVTZXJ2aWNlcy5DYXJib25Db3JlIDg2MS4xMyAoODYxLjEzKSA8QkMyRjlCNEUtRDMwNS1ENzE3
LUQ5N0UtRUM3OEM3REU5RUU5PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9W
ZXJzaW9ucy9BL0NhcmJvbkNvcmUKICAgIDB4N2ZmZjg1NzBlMDAwIC0gICAgIDB4N2ZmZjg1NzM5
ZmY3ICBsaWJ4c2x0LjEuZHlsaWIgMy4yNC4wIChjb21wYXRpYmlsaXR5IDMuMC4wKSA8ODdBMEIy
MjgtQjI0QS1DNDI2LUMzRkItQjQwRDcyNThERDQ5PiAvdXNyL2xpYi9saWJ4c2x0LjEuZHlsaWIK
ICAgIDB4N2ZmZjg1NzY3MDAwIC0gICAgIDB4N2ZmZjg1NzY3ZmY3ICBjb20uYXBwbGUuQWNjZWxl
cmF0ZS52ZWNMaWIgMy42ICh2ZWNMaWIgMy42KSA8NENDRTVENjktRjFCMy04RkQzLTE0ODMtRTAy
NzFEQjJDQ0YzPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BY2NlbGVyYXRlLmZyYW1ld29y
ay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvdmVjTGliLmZyYW1ld29yay9WZXJzaW9ucy9BL3ZlY0xp
YgogICAgMHg3ZmZmODU3NjgwMDAgLSAgICAgMHg3ZmZmODU3N2VmZjcgIGNvbS5hcHBsZS5NdWx0
aXRvdWNoU3VwcG9ydC5mcmFtZXdvcmsgMjA0LjEzICgyMDQuMTMpIDxCRkZFQzI1OS1GMTAzLUIy
NUEtQkI1Mi0xQUE3OTExNkREQkE+IC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9N
dWx0aXRvdWNoU3VwcG9ydC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9NdWx0aXRvdWNoU3VwcG9ydAog
ICAgMHg3ZmZmODU3N2YwMDAgLSAgICAgMHg3ZmZmODU4MWZmZmYgIGNvbS5hcHBsZS5MYXVuY2hT
ZXJ2aWNlcyAzNjIuMSAoMzYyLjEpIDwyNzQwMTAzQS02QzcxLUQ5OUYtOEM2Ri1GQTI2NDU0NkFE
OEY+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvVmVy
c2lvbnMvQS9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0xh
dW5jaFNlcnZpY2VzCiAgICAweDdmZmY4NTgyOTAwMCAtICAgICAweDdmZmY4NTgyYWZmNyAgY29t
LmFwcGxlLlRydXN0RXZhbHVhdGlvbkFnZW50IDEuMSAoMSkgPDc0ODAwRUU4LUMxNEMtMThDOS1D
MjA4LTIwQkJEQjk4MkQ0MD4gL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL1RydXN0
RXZhbHVhdGlvbkFnZW50LmZyYW1ld29yay9WZXJzaW9ucy9BL1RydXN0RXZhbHVhdGlvbkFnZW50
CiAgICAweDdmZmY4NTkwNDAwMCAtICAgICAweDdmZmY4NTkwOWZmZiAgbGliR0lGLmR5bGliID8/
PyAoPz8/KSA8MjFGQzZCMDItNkFDMy1DNERCLTBCNTAtOTgxNDQ4MDIyNzRDPiAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9B
L0ZyYW1ld29ya3MvSW1hZ2VJTy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9SZXNvdXJjZXMvbGliR0lG
LmR5bGliCiAgICAweDdmZmY4NWIzODAwMCAtICAgICAweDdmZmY4NWM1MWZlZiAgbGliR0xQcm9n
cmFtbWFiaWxpdHkuZHlsaWIgPz8/ICg/Pz8pIDxCMDU3RkM1Mi02QTk3LUY0NTAtNDhEOC0zMjVB
NzA0MjNBNTM+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvVmVy
c2lvbnMvQS9MaWJyYXJpZXMvbGliR0xQcm9ncmFtbWFiaWxpdHkuZHlsaWIKICAgIDB4N2ZmZjg1
YzUyMDAwIC0gICAgIDB4N2ZmZjg1YzUyZmY3ICBjb20uYXBwbGUuQ2FyYm9uIDE1MCAoMTUyKSA8
MTlCMzdCN0ItMTU5NC1BRDBBLTdGMTQtRkEyRjg1QUQ3MjQxPiAvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ2FyYm9uCiAgICAweDdmZmY4NWM1
MzAwMCAtICAgICAweDdmZmY4NWQ3OGZlZiAgY29tLmFwcGxlLmF1ZGlvLnRvb2xib3guQXVkaW9U
b29sYm94IDEuNi4zICgxLjYuMykgPDREQ0NEMDFGLTc1MTYtNDI0MC0wOURDLUVFNTUzMzE3RDM0
NT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXVkaW9Ub29sYm94LmZyYW1ld29yay9WZXJz
aW9ucy9BL0F1ZGlvVG9vbGJveAogICAgMHg3ZmZmODVkOWUwMDAgLSAgICAgMHg3ZmZmODYxZTFm
ZWYgIGxpYkxBUEFDSy5keWxpYiAyMTkuMC4wIChjb21wYXRpYmlsaXR5IDEuMC4wKSA8MENDNjFD
OTgtRkY1MS02N0IzLUYzRDgtQzVFNDMwQzIwMUE5PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BY2NlbGVyYXRlLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvdmVjTGliLmZyYW1l
d29yay9WZXJzaW9ucy9BL2xpYkxBUEFDSy5keWxpYgogICAgMHg3ZmZmODYyMjIwMDAgLSAgICAg
MHg3ZmZmODY1OTdmZTcgIGNvbS5hcHBsZS5SYXdDYW1lcmEuYnVuZGxlIDMuMC4zICg1MjkpIDwy
RTZCMjUxQS1DNUE1LUEzRjktODMyQi1CQjE5NThGOTM4RTk+IC9TeXN0ZW0vTGlicmFyeS9Db3Jl
U2VydmljZXMvUmF3Q2FtZXJhLmJ1bmRsZS9Db250ZW50cy9NYWNPUy9SYXdDYW1lcmEKICAgIDB4
N2ZmZjg2NjAxMDAwIC0gICAgIDB4N2ZmZjg2NjMyZmVmICBsaWJUcnVlVHlwZVNjYWxlci5keWxp
YiA/Pz8gKD8/PykgPDBBMzBDQTY4LTQ2QUYtM0U3NC1BRTlFLTY5M0RCNUE2ODBDQz4gL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9SZXNvdXJjZXMvbGliVHJ1
ZVR5cGVTY2FsZXIuZHlsaWIKICAgIDB4N2ZmZjg2NjMzMDAwIC0gICAgIDB4N2ZmZjg2NjRlZmY3
ICBjb20uYXBwbGUub3BlbnNjcmlwdGluZyAxLjMuMSAoPz8/KSA8RkQ0NkEwRkUtQUM3OS0zRUY3
LUFCNEYtMzk2RDM3NkRERTcxPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9WZXJz
aW9ucy9BL09wZW5TY3JpcHRpbmcKICAgIDB4N2ZmZjg2NjRmMDAwIC0gICAgIDB4N2ZmZjg2Njky
ZmY3ICBsaWJSSVAuQS5keWxpYiA1NDMuNTAuMCAoY29tcGF0aWJpbGl0eSA2NC4wLjApIDxERjQ1
N0NCMy1DRTYxLTBGRDQtMTQwMy1CQjY4QkMyQ0M5OTg+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9D
b3JlR3JhcGhpY3MuZnJhbWV3b3JrL1ZlcnNpb25zL0EvUmVzb3VyY2VzL2xpYlJJUC5BLmR5bGli
CiAgICAweDdmZmY4NjY5MzAwMCAtICAgICAweDdmZmY4Njc0Y2ZmZiAgbGlic3FsaXRlMy5keWxp
YiA5LjYuMCAoY29tcGF0aWJpbGl0eSA5LjAuMCkgPDVBMTVFMTJBLUFFOEYtMUEzNi1CQkM3LTU2
NEU3RDdBRDBGQj4gL3Vzci9saWIvbGlic3FsaXRlMy5keWxpYgogICAgMHg3ZmZmODY3NmUwMDAg
LSAgICAgMHg3ZmZmODZjNzJmZTcgIGNvbS5hcHBsZS5WaWRlb1Rvb2xib3ggMC40ODQuMTEgKDQ4
NC4xMSkgPDQ1NzdGRjE0LUU2QTctQUFEOC1FNkU2LUVDQTlDRkNDNjk4OT4gL1N5c3RlbS9MaWJy
YXJ5L1ByaXZhdGVGcmFtZXdvcmtzL1ZpZGVvVG9vbGJveC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9W
aWRlb1Rvb2xib3gKICAgIDB4N2ZmZjg2Y2VmMDAwIC0gICAgIDB4N2ZmZjg2Y2YwZmY3ICBjb20u
YXBwbGUuYXVkaW8udW5pdHMuQXVkaW9Vbml0IDEuNi4zICgxLjYuMykgPEQ0MTgzQUM0LThBNjUt
ODM2OC1BOUFGLUUyQTEzRDE4NTE5Qz4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXVkaW9V
bml0LmZyYW1ld29yay9WZXJzaW9ucy9BL0F1ZGlvVW5pdAogICAgMHg3ZmZmODZjZjEwMDAgLSAg
ICAgMHg3ZmZmODZkYTZmZTcgIGNvbS5hcHBsZS5pbmsuZnJhbWV3b3JrIDEuMy4zICgxMDcpIDxG
RkM0NkVFMC0zNTQ0LUE0NTktMkFCOS05NDc3OEE3NUUzRDQ+IC9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0luay5mcmFtZXdv
cmsvVmVyc2lvbnMvQS9JbmsKICAgIDB4N2ZmZjg2ZGMyMDAwIC0gICAgIDB4N2ZmZjg2ZGQ3ZmY3
ICBjb20uYXBwbGUuTGFuZ0FuYWx5c2lzIDEuNi42ICgxLjYuNikgPERDOTk5QjMyLUJGNDEtOTRD
OC0wNTgzLTI3RDlBQjQ2M0U4Qj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0xhbmdBbmFseXNpcy5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9MYW5nQW5hbHlzaXMKICAgIDB4N2ZmZjg2ZGYzMDAwIC0gICAg
IDB4N2ZmZjg2ZGY1ZmZmICBsaWJSYWRpYW5jZS5keWxpYiA/Pz8gKD8/PykgPEQ2N0MwOEI2LTRE
NEEtOTE2RC1FOTM2LTUyOEUxNDVBNTZFMj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0ltYWdlSU8u
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvUmVzb3VyY2VzL2xpYlJhZGlhbmNlLmR5bGliCiAgICAweDdm
ZmY4NmRmNjAwMCAtICAgICAweDdmZmY4NmUwY2ZlZiAgbGliYnNtLjAuZHlsaWIgPz8/ICg/Pz8p
IDw0MkQzMDIzQS1BMUY3LTQxMjEtNjQxNy1GQ0M2QjUxQjNFOTA+IC91c3IvbGliL2xpYmJzbS4w
LmR5bGliCiAgICAweDdmZmY4NmUwZDAwMCAtICAgICAweDdmZmY4NmUxZmZlNyAgbGlic2FzbDIu
Mi5keWxpYiAzLjE1LjAgKGNvbXBhdGliaWxpdHkgMy4wLjApIDw3NkI4M0M4RC04RUZFLTQ0Njct
MEY3NS0yNzU2NDhBRkVEOTc+IC91c3IvbGliL2xpYnNhc2wyLjIuZHlsaWIKICAgIDB4N2ZmZjg2
ZjhhMDAwIC0gICAgIDB4N2ZmZjg2ZmY0ZmU3ICBsaWJ2TWlzYy5keWxpYiAyNjguMC4xIChjb21w
YXRpYmlsaXR5IDEuMC4wKSA8NTE0RDQwMEMtNTBBNS1DMTk2LTgzQUEtMTAzNUREQzhGQkJFPiAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BY2NlbGVyYXRlLmZyYW1ld29yay9WZXJzaW9ucy9B
L0ZyYW1ld29ya3MvdmVjTGliLmZyYW1ld29yay9WZXJzaW9ucy9BL2xpYnZNaXNjLmR5bGliCiAg
ICAweDdmZmY4NzE2NDAwMCAtICAgICAweDdmZmY4NzE2NGZmNyAgY29tLmFwcGxlLkNvY29hIDYu
NiAoPz8/KSA8NjhCMEJFNDYtNkUyNC1DOTZGLUIzNDEtMDU0Q0Y5RThGM0I2PiAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db2NvYS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9Db2NvYQogICAgMHg3
ZmZmODcxNjUwMDAgLSAgICAgMHg3ZmZmODcyMWFmZTcgIGNvbS5hcHBsZS5Db2xvclN5bmMgNC42
LjMgKDQuNi4zKSA8QUE5M0FEOTYtNjk3NC05MTA0LUJGNTUtQUY3QTgxM0M4QTFCPiAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9u
cy9BL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9WZXJzaW9ucy9BL0NvbG9yU3luYwog
ICAgMHg3ZmZmODcyMWIwMDAgLSAgICAgMHg3ZmZmODcyMWNmZmYgIGxpYmxhbmdpZC5keWxpYiA/
Pz8gKD8/PykgPEVBNEQxNjA3LTJCRDUtMkVFMi0yQTNCLTYzMkVFRTVBNDQ0RD4gL3Vzci9saWIv
bGlibGFuZ2lkLmR5bGliCiAgICAweDdmZmY4NzI3YjAwMCAtICAgICAweDdmZmY4NzJiY2ZmNyAg
Y29tLmFwcGxlLkNvcmVNZWRpYSAwLjQ4NC4xMSAoNDg0LjExKSA8QUVFN0U5QzktOTYwNC1CMEE3
LTA1M0ItMjg5NTQ2NTlDRkUzPiAvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQ29y
ZU1lZGlhLmZyYW1ld29yay9WZXJzaW9ucy9BL0NvcmVNZWRpYQogICAgMHg3ZmZmODcyYmQwMDAg
LSAgICAgMHg3ZmZmODczN2RmZmYgIGxpYkZvbnRQYXJzZXIuZHlsaWIgPz8/ICg/Pz8pIDxBNEY4
MTg5RC0xRDVCLTJGOEQtRTc4RS02RDkzNEE4RTg0MDc+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9B
VFMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvUmVzb3VyY2VzL2xpYkZvbnRQYXJzZXIuZHlsaWIKICAg
IDB4N2ZmZjg3M2JhMDAwIC0gICAgIDB4N2ZmZjg3M2Q4ZmZmICBsaWJQbmcuZHlsaWIgPz8/ICg/
Pz8pIDxGNjkzMkM4RC1FNkIxLTA4NzEtQjY5OC0xNTE4MEFBOTQ4Rjc+IC9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJh
bWV3b3Jrcy9JbWFnZUlPLmZyYW1ld29yay9WZXJzaW9ucy9BL1Jlc291cmNlcy9saWJQbmcuZHls
aWIKICAgIDB4N2ZmZjg3M2ZjMDAwIC0gICAgIDB4N2ZmZjg3NDE1ZmZmICBjb20uYXBwbGUuQ0ZP
cGVuRGlyZWN0b3J5IDEwLjYgKDEwLjYpIDwwRjQ2RTEwMi04QjhFLTA5OTUtQkE4NS0zRDk2MDhG
MEEzMEM+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5EaXJlY3RvcnkuZnJhbWV3b3Jr
L1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9DRk9wZW5EaXJlY3RvcnkuZnJhbWV3b3JrL1ZlcnNpb25z
L0EvQ0ZPcGVuRGlyZWN0b3J5CiAgICAweDdmZmY4NzQxNjAwMCAtICAgICAweDdmZmY4NzQxOWZm
NyAgbGliQ29yZVZNQ2xpZW50LmR5bGliID8/PyAoPz8/KSA8REJCMkMwOUYtNEJGNC0zMjZDLUI3
NzUtQjdBMTI4QzUwMUUzPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3
b3JrL1ZlcnNpb25zL0EvTGlicmFyaWVzL2xpYkNvcmVWTUNsaWVudC5keWxpYgogICAgMHg3ZmZm
ODc0MWEwMDAgLSAgICAgMHg3ZmZmODc0M2ZmZjcgIGNvbS5hcHBsZS5Db3JlVmlkZW8gMS42LjEg
KDQ1LjUpIDwyOUYzOTA3MC01Q0VGLUIyODYtNjZFMy03Q0M5MDM1MTk0MDM+IC9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvVmVyc2lvbnMvQS9Db3JlVmlkZW8K
ICAgIDB4N2ZmZjg3NDhhMDAwIC0gICAgIDB4N2ZmZjg3NDliZmY3ICBsaWJ6LjEuZHlsaWIgMS4y
LjMgKGNvbXBhdGliaWxpdHkgMS4wLjApIDxGQjVFRTUzQS0wNTM0LTBGRkEtQjJFRC00ODY2MDk0
MzM3MTc+IC91c3IvbGliL2xpYnouMS5keWxpYgogICAgMHg3ZmZmODc0YWEwMDAgLSAgICAgMHg3
ZmZmODc1NjdmZjcgIGNvbS5hcHBsZS5Db3JlU2VydmljZXMuT1NTZXJ2aWNlcyAzNTcgKDM1Nykg
PDcxOEYwNzE5LURDOUYtRTM5Mi03QzY0LTlEN0RGRTNEMDJFMj4gL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvT1NT
ZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9PU1NlcnZpY2VzCiAgICAweDdmZmY4NzljOTAw
MCAtICAgICAweDdmZmY4N2EyN2ZmNyAgY29tLmFwcGxlLmZyYW1ld29yay5JT0tpdCAyLjAgKD8/
PykgPDAxMEMzMzk4LTczNjMtOEY0Qi03MTlDLTI2Mzg2N0YxNUY2Mz4gL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvSU9LaXQKICAgIDB4N2ZmZjg3
YTI4MDAwIC0gICAgIDB4N2ZmZjg3YmU4ZmVmICBsaWJTeXN0ZW0uQi5keWxpYiAxMjUuMi4wIChj
b21wYXRpYmlsaXR5IDEuMC4wKSA8OTVFMDJERDAtQURFQS03NDVCLUU3RkEtQUJBMDY0RTQ2NThD
PiAvdXNyL2xpYi9saWJTeXN0ZW0uQi5keWxpYgogICAgMHg3ZmZmODdiZTkwMDAgLSAgICAgMHg3
ZmZmODdjMWFmZmYgIGxpYkdMSW1hZ2UuZHlsaWIgPz8/ICg/Pz8pIDwyRjE4REI3Ny1DRjc3LTEz
MTEtOUUyMC1GRTQ2MDA5MEMxNjY+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9MaWJyYXJpZXMvbGliR0xJbWFnZS5keWxpYgogICAgMHg3ZmZm
ODdjMWIwMDAgLSAgICAgMHg3ZmZmODdjNzBmZWYgIGNvbS5hcHBsZS5mcmFtZXdvcmsuZmFtaWx5
Y29udHJvbHMgMi4wLjEgKDIwMTApIDwyMzk5NDBBQy0yNDI3LTQ0QzYtOUUyOS05OThEMEFCRUNE
RjM+IC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9GYW1pbHlDb250cm9scy5mcmFt
ZXdvcmsvVmVyc2lvbnMvQS9GYW1pbHlDb250cm9scwogICAgMHg3ZmZmODdjYzEwMDAgLSAgICAg
MHg3ZmZmODdjZjlmZWYgIGxpYmN1cHMuMi5keWxpYiAyLjguMCAoY29tcGF0aWJpbGl0eSAyLjAu
MCkgPDMxQTc4OTA0LUE1MDAtMERBOS0wNjA5LUYxRUI4MTM4MzMyNj4gL3Vzci9saWIvbGliY3Vw
cy4yLmR5bGliCiAgICAweDdmZmY4N2NmYTAwMCAtICAgICAweDdmZmY4N2QzN2ZmNyAgbGliRm9u
dFJlZ2lzdHJ5LmR5bGliID8/PyAoPz8/KSA8QjYzRkNDM0EtRjQ5RS1CNDJFLTZENTctNUY1OUUz
QThEOEI5PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9WZXJzaW9ucy9BL1Jl
c291cmNlcy9saWJGb250UmVnaXN0cnkuZHlsaWIKICAgIDB4N2ZmZjg3ZDM4MDAwIC0gICAgIDB4
N2ZmZjg3ZDg0ZmZmICBsaWJhdXRvLmR5bGliID8/PyAoPz8/KSA8MDcyODA0REYtMzZBRC0yREJF
LTdFRjgtNjM5Q0ZCNzkwNzdGPiAvdXNyL2xpYi9saWJhdXRvLmR5bGliCiAgICAweDdmZmY4N2Q4
NTAwMCAtICAgICAweDdmZmY4N2U5Y2ZlZiAgbGlieG1sMi4yLmR5bGliIDEwLjMuMCAoY29tcGF0
aWJpbGl0eSAxMC4wLjApIDxFRTA2N0Q3RS0xNUIzLUYwNDMtNkZCRC0xMEJBMzFGRTc2Qzc+IC91
c3IvbGliL2xpYnhtbDIuMi5keWxpYgogICAgMHg3ZmZmODdmMmQwMDAgLSAgICAgMHg3ZmZmODg3
MzdmZTcgIGxpYkJMQVMuZHlsaWIgMjE5LjAuMCAoY29tcGF0aWJpbGl0eSAxLjAuMCkgPEZDOTQx
RUNCLTcxRDAtRkFFMy1EQ0JGLUM1QTYxOUU1OTRCOD4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQWNjZWxlcmF0ZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL3ZlY0xpYi5mcmFt
ZXdvcmsvVmVyc2lvbnMvQS9saWJCTEFTLmR5bGliCiAgICAweDdmZmY4ODczODAwMCAtICAgICAw
eDdmZmY4OGUzNTA2NyAgY29tLmFwcGxlLkNvcmVHcmFwaGljcyAxLjU0My41MCAoPz8/KSA8NDZB
N0Q2MEMtMDUwMC1COTZDLUVDQUQtMUQ2NTg0ODdEMjEzPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3Mv
Q29yZUdyYXBoaWNzLmZyYW1ld29yay9WZXJzaW9ucy9BL0NvcmVHcmFwaGljcwogICAgMHg3ZmZm
ODhlMzYwMDAgLSAgICAgMHg3ZmZmODhmZjRmZmYgIGxpYmljdWNvcmUuQS5keWxpYiA0MC4wLjAg
KGNvbXBhdGliaWxpdHkgMS4wLjApIDwwRTUzQTRBNi1BQzA2LTFCNjEtMjI4NS0yNDhGNTM0RUUz
NTY+IC91c3IvbGliL2xpYmljdWNvcmUuQS5keWxpYgogICAgMHg3ZmZmODhmZjUwMDAgLSAgICAg
MHg3ZmZmODkwMGJmZmYgIGNvbS5hcHBsZS5JbWFnZUNhcHR1cmUgNi4wICg2LjApIDw1QjVBRjhG
Qi1DMTJBLUI1MUYtOTRGQy0zRUM0Njk4RTgxOEU+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0ltYWdlQ2FwdHVyZS5mcmFt
ZXdvcmsvVmVyc2lvbnMvQS9JbWFnZUNhcHR1cmUKICAgIDB4N2ZmZjg5MDBjMDAwIC0gICAgIDB4
N2ZmZjg5MDJjZmY3ICBjb20uYXBwbGUuRGlyZWN0b3J5U2VydmljZS5GcmFtZXdvcmsgMy42ICg2
MjEuNCkgPDk2OTczNEMzLUQyMUUtMkYzMC01Q0JCLUQ5RjIzRDEyMzY0Mz4gL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvRGlyZWN0b3J5U2VydmljZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9EaXJl
Y3RvcnlTZXJ2aWNlCiAgICAweDdmZmY4OTAyZDAwMCAtICAgICAweDdmZmY4OTAzYmZmNyAgbGli
a3hsZC5keWxpYiA/Pz8gKD8/PykgPEVFODQwMTY4LTFGNjctNjIxOS04QkEzLUM0NjAzOUJDQzhC
Mz4gL3Vzci9saWIvc3lzdGVtL2xpYmt4bGQuZHlsaWIKICAgIDB4N2ZmZjg5MDQ4MDAwIC0gICAg
IDB4N2ZmZjg5MDhmZmY3ICBjb20uYXBwbGUuY29yZXVpIDIgKDExNCkgPEQ3NjQ1QjU5LTA0MzEt
NjI4My03MzIyLTk1N0Q5NDREQUIyMT4gL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtz
L0NvcmVVSS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9Db3JlVUkKICAgIDB4N2ZmZmZmZTAwMDAwIC0g
ICAgIDB4N2ZmZmZmZTAxZmZmICBsaWJTeXN0ZW0uQi5keWxpYiA/Pz8gKD8/PykgPDk1RTAyREQw
LUFERUEtNzQ1Qi1FN0ZBLUFCQTA2NEU0NjU4Qz4gL3Vzci9saWIvbGliU3lzdGVtLkIuZHlsaWIK
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>