<?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>53409</bug_id>
          
          <creation_ts>2011-01-30 19:52:12 -0800</creation_ts>
          <short_desc>InsertUnorderedList over a non-editable region and multiple lines enters an infinite loop</short_desc>
          <delta_ts>2011-03-10 17:33:32 -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>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>56135</dependson>
          <blocked>52642</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin (Ben) Kalman">kalman</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>adele</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>leviw</cc>
    
    <cc>leviw</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>342433</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-01-30 19:52:12 -0800</bug_when>
    <thetext>See attachment - I suggest running in chrome because it will enter an infinite loop.  Or maybe safari handles that well, too?

This might be related to webkit.org/b/52846</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342434</commentid>
    <comment_count>1</comment_count>
      <attachid>80614</attachid>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-01-30 19:52:43 -0800</bug_when>
    <thetext>Created attachment 80614
Test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349514</commentid>
    <comment_count>2</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-02-10 17:03:08 -0800</bug_when>
    <thetext>Amongst potentially other problems, the visible_units function endOfParagraph is returning a position before the non-editable span, which is *not* the end of the paragraph. Also, this asserts within moveParagraphs in a debug build...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349548</commentid>
    <comment_count>3</comment_count>
      <attachid>82082</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-02-10 17:56:10 -0800</bug_when>
    <thetext>Created attachment 82082
Patch

Actually that seems to be the only problem, though I&apos;m running the layout tests to confirm. No more infinite loop :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350771</commentid>
    <comment_count>4</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-02-14 11:11:36 -0800</bug_when>
    <thetext>&gt;  though I&apos;m running the layout tests to confirm...

This breaks the layout test format-block-contenteditable-false. I&apos;ll come up with a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350819</commentid>
    <comment_count>5</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-02-14 12:16:51 -0800</bug_when>
    <thetext>Functions such as FormatBlock rely on start/endOfParagraph not traversing editable content when requested (makes sense, huh). With my fix, the non-editable content is still subject to block-level changes like putting things into a list.

I did a quick check to see how this works in FF and IE9, but found some strange results:

- IE9 seems to completely disrespect contentEditable=false in a contentEditable=true context.
- FF will apply a formatting like italic to a block that is fully selected, even if contains non-editable content, but the formatblock execCommand will pull out only the editable content to nest inside the created block.

The original code is more true to its name, as it bails immediately when a node changes editability and its set to CannotCrossEditingBoundary. I&apos;d love to have some consensus on how we expect non-editable content to be handled (e.g. move into lists and new blocks but always preserve style?), but in the meantime I don&apos;t think my original patch is the way to go. Instead, there&apos;s clearly a problem with the cleanupAfterDeletion function, as it is responsible in the assert that occurs when running this in debug builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351515</commentid>
    <comment_count>6</comment_count>
      <attachid>82512</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-02-15 13:07:25 -0800</bug_when>
    <thetext>Created attachment 82512
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351531</commentid>
    <comment_count>7</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-02-15 13:24:01 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=82512) [details]
&gt; Patch

There were actually a number of troublesome things going on, specifically dealing with InsertListCommand&apos;s destination placeholder being removed in moveParagraphs, and in the actual paragraph iteration code found in InsertListCommand::doApply().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361428</commentid>
    <comment_count>8</comment_count>
      <attachid>82512</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-03 00:59:10 -0800</bug_when>
    <thetext>Comment on attachment 82512
Patch

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

The change looks sane but I&apos;d like to see some brush ups.

&gt; Source/WebCore/editing/InsertListCommand.cpp:181
&gt; +                } while (nextStart.isNotNull() &amp;&amp; nextStart != startOfLastParagraph &amp;&amp; nextStart == nextEnd
&gt; +                         &amp;&amp; (endOfParagraph(nextEnd, CanCrossEditingBoundary) != startOfParagraph(nextStart, CanCrossEditingBoundary)

We should probably put all these condition into some inline function with a descriptive name.

&gt; Source/WebCore/editing/InsertListCommand.cpp:182
&gt; +                         || nextStart.deepEquivalent().anchorType() == Position::PositionIsOffsetInAnchor));

I don&apos;t understand why we need this condition.

&gt; Source/WebCore/editing/InsertListCommand.cpp:394
&gt; -    moveParagraph(start, end, positionBeforeNode(placeholder.get()), true);
&gt; +    bool preserveSelection = true;
&gt; +    moveParagraph(start, end, positionBeforeNode(placeholder.get()), preserveSelection);

left over?

&gt; Source/WebCore/editing/visible_units.cpp:762
&gt; +            while (n &amp;&amp; n-&gt;isContentEditable() != startNode-&gt;isContentEditable())
&gt; +                n = n-&gt;traversePreviousNodePostOrder(startBlock);

This can move from one editable region to another that don&apos;t share the highest editable root.  e.g. WebKit to hello in &lt;span contentditable&gt;hello&lt;/span&gt; world &lt;span contenteditale&gt;WebKit&lt;/span&gt;.  Is that intended behavior?  It seems odd that &quot;skip over&quot; means crossing arbitrary editing boundaries.

&gt; LayoutTests/editing/execCommand/insert-list-with-noneditable-content.html:1
&gt; +&lt;div contenteditable=&quot;true&quot; id=&quot;test&quot; style=&quot;padding: 1em;&quot;&gt;

You should put &lt;!DOCTYPE html&gt; here.

&gt; LayoutTests/editing/execCommand/insert-list-with-noneditable-content.html:3
&gt; +  Editable paragraph containing a &lt;span contenteditable=&quot;false&quot; style=&quot;background-color: LightGray;&quot;&gt;non-editable&lt;/span&gt; span.&lt;br /&gt;
&gt; +  Another editable paragraph.

xml style br?  Is that required?

&gt; LayoutTests/editing/execCommand/insert-list-with-noneditable-content.html:17
&gt; +  function insertList() {
&gt; +      document.execCommand(&apos;insertunorderedlist&apos;, false, &apos;&apos;);
&gt; +  }
&gt; +
&gt; +  var s = window.getSelection();
&gt; +  var div = document.getElementById(&quot;test&quot;);
&gt; +  s.setPosition(div.childNodes[0], 10);
&gt; +  s.modify(&quot;extend&quot;, &quot;forward&quot;, &quot;line&quot;);
&gt; +  
&gt; +  if (window.layoutTestController)
&gt; +      insertList();

Nit: We don&apos;t normally indent script like this.  Please outdent them.

I don&apos;t think you have enough descriptions on this test.  When I just look at this test, I don&apos;t know what is the correct behavior.  You should probably explain that.  And I highly doubt that this test requires pixel results.  You should probably call dumpAsText here so that we can share the expected results across platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362703</commentid>
    <comment_count>9</comment_count>
      <attachid>82512</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-04 14:35:40 -0800</bug_when>
    <thetext>Comment on attachment 82512
Patch

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

&gt;&gt; Source/WebCore/editing/InsertListCommand.cpp:181
&gt;&gt; +                         &amp;&amp; (endOfParagraph(nextEnd, CanCrossEditingBoundary) != startOfParagraph(nextStart, CanCrossEditingBoundary)
&gt; 
&gt; We should probably put all these condition into some inline function with a descriptive name.

Done!

&gt;&gt; Source/WebCore/editing/InsertListCommand.cpp:182
&gt;&gt; +                         || nextStart.deepEquivalent().anchorType() == Position::PositionIsOffsetInAnchor));
&gt; 
&gt; I don&apos;t understand why we need this condition.

I found a better way to represent this. I was trying to fix a case where we ended up with an extra list item due to how a position at the end of a root editable element directly following non-editable content was handled.

&gt;&gt; Source/WebCore/editing/InsertListCommand.cpp:394
&gt;&gt; +    moveParagraph(start, end, positionBeforeNode(placeholder.get()), preserveSelection);
&gt; 
&gt; left over?

This is a stylistic change away from magic boolean values. It&apos;s a pet peeve, but I can remove it.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:762
&gt;&gt; +                n = n-&gt;traversePreviousNodePostOrder(startBlock);
&gt; 
&gt; This can move from one editable region to another that don&apos;t share the highest editable root.  e.g. WebKit to hello in &lt;span contentditable&gt;hello&lt;/span&gt; world &lt;span contenteditale&gt;WebKit&lt;/span&gt;.  Is that intended behavior?  It seems odd that &quot;skip over&quot; means crossing arbitrary editing boundaries.

Good catch. I&apos;m now checking to make sure that doesn&apos;t happen!

&gt;&gt; LayoutTests/editing/execCommand/insert-list-with-noneditable-content.html:3
&gt;&gt; +  Another editable paragraph.
&gt; 
&gt; xml style br?  Is that required?

Nope :)

&gt;&gt; LayoutTests/editing/execCommand/insert-list-with-noneditable-content.html:17
&gt;&gt; +      insertList();
&gt; 
&gt; Nit: We don&apos;t normally indent script like this.  Please outdent them.
&gt; 
&gt; I don&apos;t think you have enough descriptions on this test.  When I just look at this test, I don&apos;t know what is the correct behavior.  You should probably explain that.  And I highly doubt that this test requires pixel results.  You should probably call dumpAsText here so that we can share the expected results across platforms.

No problem :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362762</commentid>
    <comment_count>10</comment_count>
      <attachid>84819</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-04 15:55:34 -0800</bug_when>
    <thetext>Created attachment 84819
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364194</commentid>
    <comment_count>11</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-08 15:37:47 -0800</bug_when>
    <thetext>Review please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364203</commentid>
    <comment_count>12</comment_count>
      <attachid>84819</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-08 15:47:00 -0800</bug_when>
    <thetext>Comment on attachment 84819
Patch

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

&gt; Source/WebCore/editing/InsertListCommand.cpp:175
&gt; +                VisiblePosition nextStart(startOfNextParagraph(endingSelection().visibleStart()));

I think we normally use operator= instead of copy constructor.

&gt; Source/WebCore/editing/InsertListCommand.cpp:393
&gt; -    moveParagraph(start, end, positionBeforeNode(placeholder.get()), true);
&gt; +    bool preserveSelection = true;
&gt; +    moveParagraph(start, end, positionBeforeNode(placeholder.get()), preserveSelection);

I don&apos;t like this change since we&apos;re not modifying this function call in any other way.  I&apos;d rather replace the boolean argument by an enum in a separate patch.

&gt; Source/WebCore/editing/htmlediting.h:176
&gt; +bool shouldSkipParagraphForIteration(const VisiblePosition&amp; paragraphStart);

Is there a plan to use this function in other places?  If not, I&apos;d prefer to put in InsertListCommand.cpp to avoid polluting the namespace.

&gt; Source/WebCore/editing/visible_units.cpp:883
&gt;  VisiblePosition startOfNextParagraph(const VisiblePosition&amp; visiblePosition)
&gt;  {
&gt; -    VisiblePosition paragraphEnd(endOfParagraph(visiblePosition));
&gt; +    VisiblePosition paragraphEnd(endOfParagraph(visiblePosition, CanSkipOverEditingBoundary));

Did you really check that all call sites expect this function to cross the editing boundary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364221</commentid>
    <comment_count>13</comment_count>
      <attachid>84819</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-08 16:25:21 -0800</bug_when>
    <thetext>Comment on attachment 84819
Patch

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

&gt;&gt; Source/WebCore/editing/InsertListCommand.cpp:393
&gt;&gt; +    moveParagraph(start, end, positionBeforeNode(placeholder.get()), preserveSelection);
&gt; 
&gt; I don&apos;t like this change since we&apos;re not modifying this function call in any other way.  I&apos;d rather replace the boolean argument by an enum in a separate patch.

Okay.

&gt;&gt; Source/WebCore/editing/htmlediting.h:176
&gt;&gt; +bool shouldSkipParagraphForIteration(const VisiblePosition&amp; paragraphStart);
&gt; 
&gt; Is there a plan to use this function in other places?  If not, I&apos;d prefer to put in InsertListCommand.cpp to avoid polluting the namespace.

We talked and agreed this needs a better name more than anything.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:883
&gt;&gt; +    VisiblePosition paragraphEnd(endOfParagraph(visiblePosition, CanSkipOverEditingBoundary));
&gt; 
&gt; Did you really check that all call sites expect this function to cross the editing boundary?

This function is only used in InsertListCommand and TextCheckingHelper, which we also wouldn&apos;t want to get caught up while iterating paragraphs by a non-editable node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364274</commentid>
    <comment_count>14</comment_count>
      <attachid>85120</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-08 18:13:17 -0800</bug_when>
    <thetext>Created attachment 85120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364702</commentid>
    <comment_count>15</comment_count>
      <attachid>85120</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-09 12:37:25 -0800</bug_when>
    <thetext>Comment on attachment 85120
Patch

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

&gt; Source/WebCore/editing/CompositeEditCommand.cpp:952
&gt; -    VisiblePosition beforeParagraph = startOfParagraphToMove.previous();
&gt; -    VisiblePosition afterParagraph(endOfParagraphToMove.next());
&gt; +    bool stayInEditableContent = true;
&gt; +    VisiblePosition beforeParagraph = startOfParagraphToMove.previous(stayInEditableContent);
&gt; +    VisiblePosition afterParagraph(endOfParagraphToMove.next(stayInEditableContent));

As I mentioned earlier, we should either change the argument type to enum or not do this change.

&gt; Source/WebCore/editing/InsertListCommand.cpp:69
&gt; +    return start == paragraphEnd &amp;&amp; (!start.deepEquivalent().upstream(CanCrossEditingBoundary).anchorNode()-&gt;isContentEditable()

Why are we comparing with the end of paragraph? I&apos;m also skeptical about the correctness of anchorNode() here.  Shouldn&apos;t it be containerNode?  Why do we care that node before/after the position is editable?

&gt; LayoutTests/editing/execCommand/insert-list-with-noneditable-content-expected.txt:5
&gt; +Editable paragraph containing aÂ 
&gt; +Â span in the middle.
&gt; +Â  Â Another editable paragraph.
&gt; +non-editable

Why do we have 4 paragraphs here?  Shouldn&apos;t we just have 2 paragraphs?  If we&apos;re only concerned with the crash and ignoring the correctness of output, then we should say that this test is testing that WebKit does not crash, and we should hide #test and print &quot;PASS&quot; indiscriminately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364815</commentid>
    <comment_count>16</comment_count>
      <attachid>85120</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-09 15:10:11 -0800</bug_when>
    <thetext>Comment on attachment 85120
Patch

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

&gt;&gt; Source/WebCore/editing/CompositeEditCommand.cpp:952
&gt;&gt; +    VisiblePosition afterParagraph(endOfParagraphToMove.next(stayInEditableContent));
&gt; 
&gt; As I mentioned earlier, we should either change the argument type to enum or not do this change.

This isn&apos;t the same change you mentioned earlier, I reverted that one. The default value for both of these is &quot;false&quot; not &quot;true&quot; (hence the change) and the added boolean is for readability. (See thread &quot;Bools are strictly worse than enums&quot; on WebKit Dev for my rationale). If you&apos;d rather see a magic value, I&apos;m not dogmatic about this.

&gt;&gt; Source/WebCore/editing/InsertListCommand.cpp:69
&gt;&gt; +    return start == paragraphEnd &amp;&amp; (!start.deepEquivalent().upstream(CanCrossEditingBoundary).anchorNode()-&gt;isContentEditable()
&gt; 
&gt; Why are we comparing with the end of paragraph? I&apos;m also skeptical about the correctness of anchorNode() here.  Shouldn&apos;t it be containerNode?  Why do we care that node before/after the position is editable?

If the start and end of the paragraph are the same when staying within editable boundaries, but not when skipping over them, we&apos;re at a caret position we wish to ignore.

Since we&apos;re looking at content with mixed editability, it would be feasible for containerNode&apos;s editability to differ from the anchorNode&apos;s for before/after positions.

&gt;&gt; LayoutTests/editing/execCommand/insert-list-with-noneditable-content-expected.txt:5
&gt;&gt; +non-editable
&gt; 
&gt; Why do we have 4 paragraphs here?  Shouldn&apos;t we just have 2 paragraphs?  If we&apos;re only concerned with the crash and ignoring the correctness of output, then we should say that this test is testing that WebKit does not crash, and we should hide #test and print &quot;PASS&quot; indiscriminately.

We&apos;re matching FFX by treating regions of editable content in the same logical paragraph with non-editable content as different paragraphs. With that in mind, we should care about the output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365447</commentid>
    <comment_count>17</comment_count>
      <attachid>85376</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-10 12:48:12 -0800</bug_when>
    <thetext>Created attachment 85376
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365514</commentid>
    <comment_count>18</comment_count>
      <attachid>85388</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-10 13:59:59 -0800</bug_when>
    <thetext>Created attachment 85388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365556</commentid>
    <comment_count>19</comment_count>
      <attachid>85388</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-10 14:55:48 -0800</bug_when>
    <thetext>Comment on attachment 85388
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Fixing broken handling of mixed-editability content for InsertListCommand.

More descriptions?

&gt; Source/WebCore/editing/visible_units.cpp:826
&gt;      Node *node = startNode;

Could you also fix this declaration?  (Node* instead of Node *)

&gt; Source/WebCore/editing/visible_units.cpp:884
&gt; +// FIXME: isStartOfParagraph(startOfNextParagraph(pos)) is not always true

Do we have a bug filed for this?  If not, please file one.

&gt; LayoutTests/editing/execCommand/insert-list-with-noneditable-content-expected.txt:4
&gt; +Editable paragraph containing a non-editable in the middle
&gt; +Another editable paragraph.
&gt; +Insert List

I think we want to use dump as markup here because we&apos;d certainly would like to see what kind of markup we&apos;re generating here, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365569</commentid>
    <comment_count>20</comment_count>
      <attachid>85394</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-10 15:13:55 -0800</bug_when>
    <thetext>Created attachment 85394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365574</commentid>
    <comment_count>21</comment_count>
      <attachid>85395</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-10 15:22:52 -0800</bug_when>
    <thetext>Created attachment 85395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365579</commentid>
    <comment_count>22</comment_count>
      <attachid>85395</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-10 15:26:16 -0800</bug_when>
    <thetext>Comment on attachment 85395
Patch

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

&gt; Source/WebCore/editing/InsertListCommand.cpp:379
&gt; +        // the insertion.

You should just put &quot;the insertion&quot; in the previous line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365600</commentid>
    <comment_count>23</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-10 15:54:15 -0800</bug_when>
    <thetext>Committed r80780: &lt;http://trac.webkit.org/changeset/80780&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365697</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-10 17:33:32 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80780 might have broken GTK Linux 32-bit Release</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>80614</attachid>
            <date>2011-01-30 19:52:43 -0800</date>
            <delta_ts>2011-01-30 19:52:43 -0800</delta_ts>
            <desc>Test case</desc>
            <filename>foo.html</filename>
            <type>text/html</type>
            <size>540</size>
            <attacher name="Benjamin (Ben) Kalman">kalman</attacher>
            
              <data encoding="base64">PGRpdiBjb250ZW50ZWRpdGFibGU9InRydWUiPgogIEVkaXRhYmxlIHBhcmFncmFwaCBjb250YWlu
aW5nIGEgPHNwYW4gY29udGVudGVkaXRhYmxlPSJmYWxzZSIgc3R5bGU9ImJhY2tncm91bmQtY29s
b3I6IExpZ2h0R3JheTsiPm5vbi1lZGl0YWJsZTwvc3Bhbj4gc3Bhbi48YnIvPgogIEFub3RoZXIg
ZWRpdGFibGUgcGFyYWdyYXBoLgo8L2Rpdj4KPGJ1dHRvbiBvbmNsaWNrPSJkb2N1bWVudC5leGVj
Q29tbWFuZCgnaW5zZXJ0dW5vcmRlcmVkbGlzdCcsIGZhbHNlLCAnJyk7Ij5jbGljayB0byBjbGFp
bSB5b3VyICQxLDAwMCwwMDA8L2J1dHRvbj4KPHNjcmlwdD4KICAoZnVuY3Rpb24oKSB7CiAgICB2
YXIgcyA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiZGl2IilbMF07CiAgICBzLnNldFBvc2l0aW9uKGRpdi5jaGlsZE5v
ZGVzWzBdLCAxMCk7CiAgICBzLm1vZGlmeSgiZXh0ZW5kIiwgImZvcndhcmQiLCAibGluZSIpOwog
IH0pKCk7Cjwvc2NyaXB0Pgo8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82082</attachid>
            <date>2011-02-10 17:56:10 -0800</date>
            <delta_ts>2011-02-15 13:07:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>714</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkocmV2aXNpb24g
Nzc5OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MTUsNyArODE1LDkgQEAKIAogICAgIE5vZGUgKm4gPSBzdGFydE5vZGU7
CiAgICAgd2hpbGUgKG4pIHsKLSAgICAgICAgaWYgKGJvdW5kYXJ5Q3Jvc3NpbmdSdWxlID09IENh
bm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5ICYmIG4tPmlzQ29udGVudEVkaXRhYmxlKCkgIT0gc3Rh
cnROb2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAgICAgICB3aGlsZSAobiAmJiBib3VuZGFy
eUNyb3NzaW5nUnVsZSA9PSBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSAmJiBuLT5pc0NvbnRl
bnRFZGl0YWJsZSgpICE9IHN0YXJ0Tm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSkKKyAgICAgICAg
ICAgIG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKHN0YXlJbnNpZGVCbG9jayk7CisgICAgICAgIGlm
ICghbikKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBSZW5kZXJPYmplY3QgKnIgPSBuLT5y
ZW5kZXJlcigpOwogICAgICAgICBpZiAoIXIpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82512</attachid>
            <date>2011-02-15 13:07:25 -0800</date>
            <delta_ts>2011-03-04 15:55:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53409-20110215130724.patch</filename>
            <type>text/plain</type>
            <size>46879</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTI3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDItMTQgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluc2VydFVub3JkZXJlZExpc3Qgb3ZlciBhIG5vbi1lZGl0
YWJsZSByZWdpb24gYW5kIG11bHRpcGxlIGxpbmVzIGVudGVycyBhbiBpbmZpbml0ZSBsb29wCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzQwOQorCisg
ICAgICAgIEZpeGluZyBicm9rZW4gaGFuZGxpbmcgb2YgbWl4ZWQtZWRpdGFiaWxpdHkgY29udGVu
dCBmb3IgSW5zZXJ0TGlzdENvbW1hbmQuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9leGVjQ29t
bWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQuaHRtbAorCisgICAgICAg
ICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6Y2xlYW51cEFmdGVyRGVsZXRpb24pOiBDaGFuZ2VkIHNpZ25h
dHVyZSB0byB0YWtlIHRoZSBkZXN0aW5hdGlvbgorICAgICAgICBwb3NpdGlvbiBmb3IgdGhlIGFj
dGl2ZSBlZGl0aW5nIGNvbW1hbmQuIFdpdGhvdXQgdGhpcywgdGhlcmUgYXJlIGNhc2VzIHdoZW4g
dGhlIGRlc3RpbmF0aW9uCisgICAgICAgIGlzIGEgbmVjZXNzYXJ5IHBsYWNlaG9sZGVyIHRoYXQg
d2UgZ28gb24gdG8gcmVtb3ZlLgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1h
bmQ6Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmg6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBseSk6IEFkZGVkIGxvZ2ljIHRvIHRo
ZSBsb29wIHBhcmFncmFwaCBpdGVyYXRpb24gbG9vcCB0bworICAgICAgICBoYW5kbGUgcG9ja2V0
cyBvZiBlZGl0YWJsZSBjb250ZW50IHdpdGhpbiBub24tZWRpdGFibGUgY29udGVudC4gUHJldmlv
dXNseSwgdGhpcyBjb3VsZCBnZXQKKyAgICAgICAgc3R1Y2sgaW4gYW4gaW5maW5pdGUgbG9vcC4K
KyAgICAgICAgKFdlYkNvcmU6Okluc2VydExpc3RDb21tYW5kOjpsaXN0aWZ5UGFyYWdyYXBoKTog
UmVtb3ZlZCBtYWdpYyB2YWx1ZSBmb3IgcHJlc2VydmVTZWxlY3Rpb24KKyAgICAgICAgd2l0aCBh
biBleHBsaWNpdCB2YXJpYWJsZS4KKyAgICAgICAgKiBlZGl0aW5nL3Zpc2libGVfdW5pdHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRPZlBhcmFncmFwaCk6IEFkZGVkIGEgbW9kZSBvZiBv
cGVyYXRpb24gd2hlcmUgd2UnbGwganVtcCBhY3Jvc3Mgbm9uLWVkaXRhYmxlCisgICAgICAgIGNv
bnRlbnQgaW4gdGhlIHNhbWUgcGFyYWdyYXBoIHRvIHJlYWNoIHRoZSBhY3R1YWwgZWRpdGFibGUg
cGFyYWdyYXBoIHN0YXJ0LgorICAgICAgICAoV2ViQ29yZTo6ZW5kT2ZQYXJhZ3JhcGgpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T2ZOZXh0UGFyYWdyYXBoKTogTm93IHVzZSB0aGUg
YWZvcmVtZW50aW9uZWQgbm9uLWVkaXRhYmxlIGNvbnRlbnQgc2tpcHBpbmcKKyAgICAgICAgbW9k
ZSBvZiBlbmRPZlBhcmFncmFwaC4KKwogMjAxMS0wMi0xNCAgSmVyZW15IE9ybG93ICA8am9ybG93
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBlZmwgYnVpbGQgZml4CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gNzg1
MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODI3LDEwICs4MjcsMTAgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29t
bWFuZDo6Y2xvbmVQYXJhZ3JhcAogLy8gRGVsZXRpbmcgYSBwYXJhZ3JhcGggd2lsbCBsZWF2ZSBh
IHBsYWNlaG9sZGVyLiBSZW1vdmUgaXQgKGFuZCBwcnVuZQogLy8gZW1wdHkgb3IgdW5yZW5kZXJl
ZCBwYXJlbnRzKS4KIAotdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6Y2xlYW51cEFmdGVyRGVs
ZXRpb24oKQordm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6Y2xlYW51cEFmdGVyRGVsZXRpb24o
VmlzaWJsZVBvc2l0aW9uIGRlc3RpbmF0aW9uKQogewogICAgIFZpc2libGVQb3NpdGlvbiBjYXJl
dEFmdGVyRGVsZXRlID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCk7Ci0gICAgaWYg
KGlzU3RhcnRPZlBhcmFncmFwaChjYXJldEFmdGVyRGVsZXRlKSAmJiBpc0VuZE9mUGFyYWdyYXBo
KGNhcmV0QWZ0ZXJEZWxldGUpKSB7CisgICAgaWYgKGNhcmV0QWZ0ZXJEZWxldGUgIT0gZGVzdGlu
YXRpb24gJiYgaXNTdGFydE9mUGFyYWdyYXBoKGNhcmV0QWZ0ZXJEZWxldGUpICYmIGlzRW5kT2ZQ
YXJhZ3JhcGgoY2FyZXRBZnRlckRlbGV0ZSkpIHsKICAgICAgICAgLy8gTm90ZTogV2Ugd2FudCB0
aGUgcmlnaHRtb3N0IGNhbmRpZGF0ZS4KICAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBjYXJl
dEFmdGVyRGVsZXRlLmRlZXBFcXVpdmFsZW50KCkuZG93bnN0cmVhbSgpOwogICAgICAgICBOb2Rl
KiBub2RlID0gcG9zaXRpb24ubm9kZSgpOwpAQCAtOTgxLDggKzk4MSw3IEBAIHZvaWQgQ29tcG9z
aXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGgKICAgICBkZWxldGVTZWxlY3Rpb24oZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UpOwogCiAgICAgQVNTRVJUKGRlc3RpbmF0aW9uLmRlZXBFcXVp
dmFsZW50KCkubm9kZSgpLT5pbkRvY3VtZW50KCkpOwotCi0gICAgY2xlYW51cEFmdGVyRGVsZXRp
b24oKTsKKyAgICBjbGVhbnVwQWZ0ZXJEZWxldGlvbihkZXN0aW5hdGlvbik7CiAgICAgQVNTRVJU
KGRlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpLT5pbkRvY3VtZW50KCkpOwogCiAg
ICAgLy8gQWRkIGEgYnIgaWYgcHJ1bmluZyBhbiBlbXB0eSBibG9jayBsZXZlbCBlbGVtZW50IGNh
dXNlZCBhIGNvbGxhcHNlLiBGb3IgZXhhbXBsZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgJKHJldmlzaW9uIDc4NTE0KQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTAsNyArMTEwLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgbW92ZVBhcmFncmFwaHMoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiwgYm9vbCBwcmVzZXJ2ZVNlbGVjdGlvbiA9IGZhbHNlLCBib29sIHByZXNlcnZl
U3R5bGUgPSB0cnVlKTsKICAgICB2b2lkIG1vdmVQYXJhZ3JhcGhXaXRoQ2xvbmVzKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwaFRvTW92ZSwgY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBlbmRPZlBhcmFncmFwaFRvTW92ZSwgRWxlbWVudCogYmxvY2tFbGVtZW50LCBOb2RlKiBv
dXRlck5vZGUpOwogICAgIHZvaWQgY2xvbmVQYXJhZ3JhcGhVbmRlck5ld0VsZW1lbnQoUG9zaXRp
b24mIHN0YXJ0LCBQb3NpdGlvbiYgZW5kLCBOb2RlKiBvdXRlck5vZGUsIEVsZW1lbnQqIGJsb2Nr
RWxlbWVudCk7Ci0gICAgdm9pZCBjbGVhbnVwQWZ0ZXJEZWxldGlvbigpOworICAgIHZvaWQgY2xl
YW51cEFmdGVyRGVsZXRpb24oVmlzaWJsZVBvc2l0aW9uIGRlc3RpbmF0aW9uID0gVmlzaWJsZVBv
c2l0aW9uKCkpOwogICAgIAogICAgIGJvb2wgYnJlYWtPdXRPZkVtcHR5TGlzdEl0ZW0oKTsKICAg
ICBib29sIGJyZWFrT3V0T2ZFbXB0eU1haWxCbG9ja3F1b3RlZFBhcmFncmFwaCgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAJKHJldmlzaW9u
IDc4NTE0KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3Miw3ICsxNzIsMTggQEAgdm9pZCBJbnNlcnRMaXN0Q29tbWFu
ZDo6ZG9BcHBseSgpCiAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBo
ID09IHN0YXJ0T2ZTZWxlY3Rpb24pCiAgICAgICAgICAgICAgICAgICAgIHN0YXJ0T2ZTZWxlY3Rp
b24gPSBlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsKIAotICAgICAgICAgICAgICAg
IHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBoID0gc3RhcnRPZk5leHRQYXJhZ3JhcGgoZW5kaW5nU2Vs
ZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpOworICAgICAgICAgICAgICAgIFZpc2libGVQb3NpdGlv
biBuZXh0U3RhcnQoZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpOworICAgICAgICAg
ICAgICAgIFZpc2libGVQb3NpdGlvbiBuZXh0RW5kOworICAgICAgICAgICAgICAgIGRvIHsKKyAg
ICAgICAgICAgICAgICAgICAgbmV4dFN0YXJ0ID0gc3RhcnRPZk5leHRQYXJhZ3JhcGgobmV4dFN0
YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgbmV4dEVuZCA9IGVuZE9mUGFyYWdyYXBoKG5leHRT
dGFydCk7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAobmV4dFN0YXJ0LmlzTm90TnVsbCgpICYm
IG5leHRTdGFydCAhPSBzdGFydE9mTGFzdFBhcmFncmFwaCAmJiBuZXh0U3RhcnQgPT0gbmV4dEVu
ZAorICAgICAgICAgICAgICAgICAgICAgICAgICYmIChlbmRPZlBhcmFncmFwaChuZXh0RW5kLCBD
YW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkgIT0gc3RhcnRPZlBhcmFncmFwaChuZXh0U3RhcnQsIENh
bkNyb3NzRWRpdGluZ0JvdW5kYXJ5KQorICAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5leHRT
dGFydC5kZWVwRXF1aXZhbGVudCgpLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlvbjo6UG9zaXRpb25J
c09mZnNldEluQW5jaG9yKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYg
KHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBoID09IG5leHRTdGFydCkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGggPSBuZXh0
U3RhcnQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oZW5k
T2ZTZWxlY3Rpb24pOwogICAgICAgICAgICAgZG9BcHBseUZvclNpbmdsZVBhcmFncmFwaChmb3Jj
ZUNyZWF0ZUxpc3QsIGxpc3RUYWcsIGN1cnJlbnRTZWxlY3Rpb24uZ2V0KCkpOwpAQCAtMzc5LDcg
KzM5MCw4IEBAIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEluc2VydExpc3RDb21tYW4KICAgICAg
ICAgICAgIHN0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChvcmlnaW5hbFN0YXJ0KTsKICAgICB9CiAK
LSAgICBtb3ZlUGFyYWdyYXBoKHN0YXJ0LCBlbmQsIHBvc2l0aW9uQmVmb3JlTm9kZShwbGFjZWhv
bGRlci5nZXQoKSksIHRydWUpOworICAgIGJvb2wgcHJlc2VydmVTZWxlY3Rpb24gPSB0cnVlOwor
ICAgIG1vdmVQYXJhZ3JhcGgoc3RhcnQsIGVuZCwgcG9zaXRpb25CZWZvcmVOb2RlKHBsYWNlaG9s
ZGVyLmdldCgpKSwgcHJlc2VydmVTZWxlY3Rpb24pOwogCiAgICAgaWYgKGxpc3RFbGVtZW50KQog
ICAgICAgICByZXR1cm4gbWVyZ2VXaXRoTmVpZ2hib3JpbmdMaXN0cyhsaXN0RWxlbWVudCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAJKHJldmlzaW9uIDc4
NTE0KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzU3LDYgKzc1NywxMiBAQCBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZlBhcmFn
cmFwaChjb25zdCBWCiAgICAgd2hpbGUgKG4pIHsKICAgICAgICAgaWYgKGJvdW5kYXJ5Q3Jvc3Np
bmdSdWxlID09IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5ICYmIG4tPmlzQ29udGVudEVkaXRh
YmxlKCkgIT0gc3RhcnROb2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGlmIChib3VuZGFyeUNyb3NzaW5nUnVsZSA9PSBDYW5Ta2lwT3ZlckVkaXRp
bmdCb3VuZGFyeSkgeworICAgICAgICAgICAgd2hpbGUgKG4gJiYgbi0+aXNDb250ZW50RWRpdGFi
bGUoKSAhPSBzdGFydE5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgICAgICAgICAg
biA9IG4tPnRyYXZlcnNlUHJldmlvdXNOb2RlUG9zdE9yZGVyKHN0YXJ0QmxvY2spOworICAgICAg
ICAgICAgaWYgKCFuKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAg
IFJlbmRlck9iamVjdCAqciA9IG4tPnJlbmRlcmVyKCk7CiAgICAgICAgIGlmICghcikgewogICAg
ICAgICAgICAgbiA9IG4tPnRyYXZlcnNlUHJldmlvdXNOb2RlUG9zdE9yZGVyKHN0YXJ0QmxvY2sp
OwpAQCAtODE3LDYgKzgyMywxMyBAQCBWaXNpYmxlUG9zaXRpb24gZW5kT2ZQYXJhZ3JhcGgoY29u
c3QgVmlzCiAgICAgd2hpbGUgKG4pIHsKICAgICAgICAgaWYgKGJvdW5kYXJ5Q3Jvc3NpbmdSdWxl
ID09IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5ICYmIG4tPmlzQ29udGVudEVkaXRhYmxlKCkg
IT0gc3RhcnROb2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGlmIChib3VuZGFyeUNyb3NzaW5nUnVsZSA9PSBDYW5Ta2lwT3ZlckVkaXRpbmdCb3Vu
ZGFyeSkgeworICAgICAgICAgICAgd2hpbGUgKG4gJiYgbi0+aXNDb250ZW50RWRpdGFibGUoKSAh
PSBzdGFydE5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgICAgICAgICAgbiA9IG4t
PnRyYXZlcnNlTmV4dE5vZGUoc3RheUluc2lkZUJsb2NrKTsKKyAgICAgICAgICAgIGlmICghbikK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIFJlbmRlck9iamVj
dCAqciA9IG4tPnJlbmRlcmVyKCk7CiAgICAgICAgIGlmICghcikgewogICAgICAgICAgICAgbiA9
IG4tPnRyYXZlcnNlTmV4dE5vZGUoc3RheUluc2lkZUJsb2NrKTsKQEAgLTg1Nyw3ICs4NzAsNyBA
QCBWaXNpYmxlUG9zaXRpb24gZW5kT2ZQYXJhZ3JhcGgoY29uc3QgVmlzCiAKIFZpc2libGVQb3Np
dGlvbiBzdGFydE9mTmV4dFBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQ
b3NpdGlvbikKIHsKLSAgICBWaXNpYmxlUG9zaXRpb24gcGFyYWdyYXBoRW5kKGVuZE9mUGFyYWdy
YXBoKHZpc2libGVQb3NpdGlvbikpOworICAgIFZpc2libGVQb3NpdGlvbiBwYXJhZ3JhcGhFbmQo
ZW5kT2ZQYXJhZ3JhcGgodmlzaWJsZVBvc2l0aW9uLCBDYW5Ta2lwT3ZlckVkaXRpbmdCb3VuZGFy
eSkpOwogICAgIFZpc2libGVQb3NpdGlvbiBhZnRlclBhcmFncmFwaEVuZChwYXJhZ3JhcGhFbmQu
bmV4dCh0cnVlKSk7CiAgICAgLy8gVGhlIHBvc2l0aW9uIGFmdGVyIHRoZSBsYXN0IHBvc2l0aW9u
IGluIHRoZSBsYXN0IGNlbGwgb2YgYSB0YWJsZQogICAgIC8vIGlzIG5vdCB0aGUgc3RhcnQgb2Yg
dGhlIG5leHQgcGFyYWdyYXBoLgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzg1MjcpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wMi0x
NCAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zZXJ0VW5vcmRlcmVkTGlzdCBvdmVy
IGEgbm9uLWVkaXRhYmxlIHJlZ2lvbiBhbmQgbXVsdGlwbGUgbGluZXMgZW50ZXJzIGFuIGluZmlu
aXRlIGxvb3AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUzNDA5CisKKyAgICAgICAgQXZvaWRpbmcgY3Jhc2hlcyBhbmQgaW5maW5pdGUgbG9vcHMgd2hl
biBsaXN0aWZ5aW5nIGNvbnRlbnQgd2l0aCBtaXhlZC1lZGl0YWJpbGl0eQorCisgICAgICAgICog
ZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQu
aHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQv
aW5zZXJ0LWxpc3Qtd2l0aC1ub25lZGl0YWJsZS1jb250ZW50LWV4cGVjdGVkLmNoZWNrc3VtOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQt
bGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13aXRoLW5v
bmVkaXRhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMS0wMi0xMSAgSmVy
ZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBO
YXRlIENoYXBpbi4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0
LWxpc3Qtd2l0aC1ub25lZGl0YWJsZS1jb250ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNv
bnRlbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1h
bmQvaW5zZXJ0LWxpc3Qtd2l0aC1ub25lZGl0YWJsZS1jb250ZW50Lmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTggQEAKKzxkaXYgY29udGVudGVkaXRhYmxlPSJ0cnVlIiBpZD0idGVzdCIg
c3R5bGU9InBhZGRpbmc6IDFlbTsiPgorICBFZGl0YWJsZSBwYXJhZ3JhcGggY29udGFpbmluZyBh
IDxzcGFuIGNvbnRlbnRlZGl0YWJsZT0iZmFsc2UiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBM
aWdodEdyYXk7Ij5ub24tZWRpdGFibGU8L3NwYW4+IHNwYW4uPGJyIC8+CisgIEFub3RoZXIgZWRp
dGFibGUgcGFyYWdyYXBoLgorPC9kaXY+Cis8YnV0dG9uIG9uY2xpY2s9Imluc2VydExpc3QoKTsi
Pkluc2VydCBMaXN0PC9idXR0b24+Cis8c2NyaXB0PgorICBmdW5jdGlvbiBpbnNlcnRMaXN0KCkg
eworICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydHVub3JkZXJlZGxpc3QnLCBmYWxz
ZSwgJycpOworICB9CisKKyAgdmFyIHMgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgIHZhciBk
aXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworICBzLnNldFBvc2l0aW9uKGRp
di5jaGlsZE5vZGVzWzBdLCAxMCk7CisgIHMubW9kaWZ5KCJleHRlbmQiLCAiZm9yd2FyZCIsICJs
aW5lIik7CisgIAorICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgaW5z
ZXJ0TGlzdCgpOworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRp
dGluZy9leGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQtZXhw
ZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qtd2l0aC1ub25lZGl0YWJsZS1jb250ZW50LWV4
cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qtd2l0aC1ub25lZGl0YWJsZS1jb250ZW50
LWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACis1N2FlMDg2YmJh
ZWEyMmU3NDdhZTFiMGE5MWJkMzdjZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0
LXdpdGgtbm9uZWRpdGFibGUtY29udGVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qtd2l0
aC1ub25lZGl0YWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgt
bm9uZWRpdGFibGUtY29udGVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzMgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDAp
IHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2Nr
IHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAo
OCw4KSBzaXplIDc4NHg1ODQKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUg
Nzg0eDEzNgorICAgICAgICBSZW5kZXJCbG9jayB7VUx9IGF0ICgxNiwzMikgc2l6ZSA3NTJ4NTQK
KyAgICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwwKSBzaXplIDcxMngxOAorICAg
ICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoLTE3LDApIHNpemUgN3gxODogYnVsbGV0Cisg
ICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMDR4MTgKKyAgICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjAwOiAiRWRpdGFibGUgcGFyYWdyYXBo
IGNvbnRhaW5pbmcgYSIKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDIwMCwwKSB3aWR0aCA0
OiAiICIKKyAgICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwxOCkgc2l6ZSA3MTJ4
MTgKKyAgICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKC0xNywwKSBzaXplIDd4MTg6IGJ1
bGxldAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzd4MTgK
KyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzc6ICIgc3Bhbi4iCisgICAg
ICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoNDAsMzYpIHNpemUgNzEyeDE4CisgICAgICAg
ICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgtMTcsMCkgc2l6ZSA3eDE4OiBidWxsZXQKKyAgICAg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE4OHgxOAorICAgICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxODg6ICIgICBBbm90aGVyIGVkaXRhYmxlIHBh
cmFncmFwaC4iCisgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgxNiwxMDIpIHNp
emUgNzUyeDE4CisgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDc4
eDE4IFtiZ2NvbG9yPSNEM0QzRDNdCisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSA3OHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3
ODogIm5vbi1lZGl0YWJsZSIKKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDEz
Nikgc2l6ZSA3ODR4MjIKKyAgICAgICAgUmVuZGVyQnV0dG9uIHtCVVRUT059IGF0ICgyLDIpIHNp
emUgNjl4MTggW2JnY29sb3I9I0MwQzBDMF0gW2JvcmRlcjogKDJweCBvdXRzZXQgI0MwQzBDMCkg
bm9uZSAoMnB4IG91dHNldCAjQzBDMEMwKV0KKyAgICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnlt
b3VzKSBhdCAoOCwyKSBzaXplIDUzeDEzCisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMCkgc2l6ZSA1M3gxMworICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCA1MzogIkluc2VydCBMaXN0IgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSAweDAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCitz
ZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDcgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDAg
e0xJfSBvZiBjaGlsZCAwIHtVTH0gb2YgY2hpbGQgMCB7RElWfSBvZiBib2R5CitzZWxlY3Rpb24g
ZW5kOiAgIHBvc2l0aW9uIDE5IG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAyIHtMSX0gb2Yg
Y2hpbGQgMCB7VUx9IG9mIGNoaWxkIDAge0RJVn0gb2YgYm9keQpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qtd2l0aC1ub25lZGl0
YWJsZS1jb250ZW50LWV4cGVjdGVkLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxl
IG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0
ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQt
ZXhwZWN0ZWQucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNh
dGlvbi9vY3RldC1zdHJlYW0KCgppVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBeUFBQUFKWUNBWUFB
QUNhZG9Kd0FBQUM3bWxEUTFCSlEwTWdVSEp2Wm1sc1pRQUFlQUdGClZNOXJFMEVVL2padXFkQWlD
RnByRHJKNGtDSkpXYXRvUmRRMi9SRmlhd3piSDdaRmtHUXpTZFp1TnV2dUpyV2xpT1RpMFNyZVJl
MmgKQi8rQUhucndaQzlLaFZwRktONnJLR0toRnkzeHpXNU10cVhxd001Kzg5NDM3MzF2ZHQ4QURY
TFNOUFdBQk9RTngxS2lFV2xzZkVKcQovSWdBanFJSlFUUWxWZHZzVGlRR1FZTnorWHZuMkhvUGdW
dFd3M3Y3ZDdKM3JaclN0cG9IaFAxQTRFZWEyU3F3N3hkeENsa1NBb2c4CjM2RXB4M1FJMytQWTh1
eVBPVTU1ZU1HMUR5czl4RmtpZkVBMUxjNS9UYmhUelNYVFFJTklPSlQxY1ZJK25OZUxsTmNkQjJs
dVpzYkkKRUwxUGtLYTd6TzZyWXFHY1R2WU9rTDJkOUg1T3M5NCt3aUhDQ3htdFAwYTRqWjcxak5V
LzRtSGhwT2JFaGowY0dEWDArR0FWdHhxcAorRFhDRkY4UVRTZWlWSEhaTGczeG1LNzlWdkpLZ25D
UU9NcGtZWUJ6V2toUDEweHUrTHFIQlgwbTF4T3Y0bmRXVWVGNWp4Tm4zdFRkCjcwWGFBcTh3RGgw
TUdneWFEVWhRRUVVRVlaaXdVRUNHUEJveE5MSnlQeU9yQmh1VGV6SjFKR3E3ZEdKRXNVRjdOdHc5
dDFHazNUeisKS0NKeGxFTzFDSkw4UWY0cXI4bFA1WG41eTF5dzJGYjNsSzJibXJyeTREdkY1Wm01
R2g3WDA4ampjMDFlZkpYVWRwTlhSNWFzZVhxOAptdXdhUCt4WGx6SG1naldQeEhPdysvRXRYNVhN
bHltTUZNWGpWZlBxUzRSMVdqRTMzNTlzZnpzOTRpN1BMclhXYzYySml6ZFdtNWRuCi9XcEkrKzZx
dkpQbVZmbFBYdlh4L0dmTnhHUGlLVEVtZG9ybklZbVh4Uzd4a3RoTHF3dmlZRzNIQ0oyVmhpblNi
Wkg2Sk5WZ1lKcTgKOVM5ZFAxdDR2VVovRFBWUmxCbk0wbFNKOTMvQ0ttUTBuYmtPYi9xUDI4ZjhG
K1QzaXVlZktBSXZiT0RJbWJwdFUzSHZFS0ZscFc1egpyZ0lYdjlGOThMWnVhNk4rT1B3RVdEeXJG
cTFTTlo4Z3ZBRWNkb2Q2SHVncG1OT1dsczA1VW9jc241TzY2Y3BpVXN4UTIwTlNVdGNsCjEyVkxG
ck9aVldMcGR0aVoweDF1SEtFNVF2ZkVwMHBsay9xdjhSR3cvYkJTK2Ztc1V0bCtUaHJXZ1pmNmI4
QzgvVVhBZUl1SkFBQWcKQUVsRVFWUjRBZTNkQjdnZFZiay80SlZHSUFHU2tBUUNoTjU3azlDcmdB
MGJLSXB5VlN4WDVTSlgvU3RYTElESUJWRVFMZ0xTUmVsQgpSYVNLR0lwSWI5S2xCQ0dVMEFPRTlN
Qi92b2x6T0RrNVp5ZUJFMWhadk9PejJXWEtYdXY5NHZQczMxbXpabnE4WGkzSlFvQUFBUUlFCkNC
QWdRSUFBZ2JkQm9PZmI4QjIrZ2dBQkFnUUlFQ0JBZ0FBQkFyV0FBT0lmQWdFQ0JBZ1FJRUNBQUFF
Q2I1dEE3NDdmTkczNjYybnkKdE5mUytFblRxdWZYMDlUcHIzWGN4SHNDQkFnUUlFQ0FBQUVDQkFo
MEt0Q25WOC9VdDNlUHRQQ0N2YXZubnFsM3J4NHpiVGRUQUludwpNWDd5dFBUOCtLbjFJMExJOU5k
TUVabEp6QnNDQkFnUUlFQ0FBQUVDQkxvVTZOVnpSdmdZdkhDZkZJK0YrL2FlS1lUTUZFQmk1Q1BD
CngraG5KcVN4TDAxT3IwNmUzdVdCclNCQWdBQUJBZ1FJRUNCQWdFQm5BdjM3OWtyREJ2U3RWdlZM
TVNMU3UxZXZ0czFtQ2lBeDRoRUIKSk1KSExJTVhYaUFON0RmVEptMDdla0dBQUFFQ0JBZ1FJRUNB
QUlHT0F1TW1URXVUcGs2dk04V0FmakVDMGl0RklHbVdtZEpGelBtSQpFQklqSHhFK2hnM3NtNWFx
SGhZQ0JBZ1FJRUNBQUFFQ0JBak1pY0NUNHlhbnNkWGorZkZUMnVhVnQ5OXZwZ0FTRTg2Yk9SOHg4
aEhoClk2WEYrN1hmM21zQ0JBZ1FJRUNBQUFFQ0JBaTBGSmcwWlhvZFFDSmJkTHlvbGN2d3RxU3pr
Z0FCQWdRSUVDQkFnQUNCN2hRUVFMcFQKMDdFSUVDQkFnQUFCQWdRSUVHZ3BJSUMwNUxHU0FBRUNC
QWdRSUVDQUFJSHVGQkJBdWxQVHNRZ1FJRUNBQUFFQ0JBZ1FhQ2tnZ0xUawpzWklBQVFJRUNCQWdR
SUFBZ2U0VUVFQzZVOU94Q0JBZ1FJQUFBUUlFQ0JCb0tTQ0F0T1N4a2dBQkFnUUlFQ0JBZ0FDQjdo
UVFRTHBUCjA3RUlFQ0JBZ0FBQkFnUUlFR2dwSUlDMDVMR1NBQUVDQkFnUUlFQ0FBSUh1RkJCQXVs
UFRzUWdRSUVDQUFBRUNCQWdRYUNrZ2dMVGsKc1pJQUFRSUVDQkFnUUlBQWdlNFVFRUM2VTlPeENC
QWdRSUFBQVFJRUNCQm9LU0NBdE9TeGtnQUJBZ1FJRUNCQWdBQ0I3aFFRUUxwVAowN0VJRUNCQWdB
QUJBZ1FJRUdncElJQzA1TEdTQUFFQ0JBZ1FJRUNBQUlIdUZCQkF1bFBUc1FnUUlFQ0FBQUVDQkFn
UWFDa2dnTFRrCnNaSUFBUUlFQ0JBZ1FJQUFnZTRVRUVDNlU5T3hDQkFnUUlBQUFRSUVDQkJvS1ND
QXRPU3hrZ0FCQWdRSUVDQkFnQUNCN2hRUVFMcFQKMDdFSUVDQkFnQUFCQWdRSUVHZ3BJSUMwNUxH
U0FBRUNCQWdRSUVDQUFJSHVGQkJBdWxQVHNRZ1FJRUNBQUFFQ0JBZ1FhQ2tnZ0xUawpzWklBQVFJ
RUNCQWdRSUFBZ2U0VUVFQzZVOU94Q0JBZ1FJQUFBUUlFQ0JCb0tTQ0F0T1N4a2dBQkFnUUlFQ0JB
Z0FDQjdoUVFRTHBUCjA3RUlFQ0JBZ0FBQkFnUUlFR2dwSUlDMDVMR1NBQUVDQkFnUUlFQ0FBSUh1
RkJCQXVsUFRzUWdRSUVDQUFBRUNCQWdRYUNrZ2dMVGsKc1pJQUFRSUVDQkFnUUlBQWdlNFVFRUM2
VTlPeENCQWdRSUFBQVFJRUNCQm9LU0NBdE9TeGtnQUJBZ1FJRUNCQWdBQ0I3aFRvM1owSApjNnkz
UitEaWUxOS9lNzdJdHhBZ1FJQUFBUUlFQ0x6ckJENjBabzk1Mm1jaklQT1UxOEVKRUNCQWdBQUJB
Z1FJRUdndklJQzAxNWpMCjE5T25UMC8zMzM5LzIxN1BQLzk4ZXZEQkI5dmV6ODJMOGVQSHB5ZWVl
S0xMWFNaUG5weXV1KzY2THRlL1cxZE1mSFY4ZXZhcE1mTmQKOTE4ZTkzeDY0dEU1LzdjeXQ5dlBk
eUFhVElBQUFRSUVDTHhyQk43MUFXVGt5SkZwalRYV1NEMTY5RWpiYjc5OStzcFh2cEsrL09Vdgpw
ODk4NWpOcHRkVldTeC85NkVjNy9jZHc4ODAzcC9YWFh6Lzk1My8rWjl2Ni9mZmZQMzNzWXg5cmV6
K25MMDQ0NFlRMGVQRGdkTjU1CjUzVzZ5NDAzM3BqZTg1NzNwRjEyMmFYVDllL1dENis2Nkt5MHg5
WkxwRkVYbmo3ZkVaenh5LzNUd2QrWTgzOHJjN3Y5ZkFlaXdRUUkKRUNCQWdNQzdSdUJkSDBCMjIy
MjM5TG5QZmE0dStDR0hISkpPT3Vta2RQTEpKNmV6empvcjNYVFRUV21oaFJicTlCL0R4aHR2bkxi
ZApkdHZVcDArZnR2VUhIWFJRK3VNZi85ajJQa1l0cnJ6eXlyYjNYYjM0NmxlL21nWU5HdFRWNnJU
SkpwdWtMM3poQzEydWY3ZXUySGJuCno2U2hTeTJYVGZlblRwbWM3cnh4OXZXT0J1L3hqWVBTRDMv
NXhyK1YyWFZpYnJlZjNmR3NKMENBQUFFQ0JBaThVd0x2K2dBUzhBTUgKRHF6OVl4U2svUkxoNCtp
amoyNy9VZjM2dGRkZXE1OTc5KzZkZXZaOGd6QkdNVlpaWlpWNjNkU3BVOU4vL01kL3BMLzk3Vyt6
N0Q5dAoyclJaUG9zZzAvSDcyMiswd0FJTHRGemZmdHRXcjE5L3Zlc0o3Tk03YVZlclk3WGF2dFgz
ZEhYTVZzZUxmVG83WnUvZWxWdjF2M2Q2Cm1WYlYrNGp2L1VlNjU5Wlo2OTFadnhZZE9EZ3R2ZHlN
Znl0ejB2YTUzYjQ1Wm1kbXpick9uanRyYTJmYitZd0FBUUlFQ0JBZzhHWUYKaXJnSzFqbm5uRlBQ
eFloVHBuYmZmZmMzYXpITGZ2dnV1Mjg2NnFpajJqNmZNR0ZDK3M1M3ZwT0dEUnVXbm56eXlYVFBQ
ZmVrQlJkYwpzRjcvMUZOUHBkTlBQejJkZi83NTZmcnJyNi8zKzlPZi9wUWVldWloOVBEREQ2Zmpq
anN1M1hERERlbVdXMjZwZzhRRkYxeVE0dFNyCnRkZGVlNWJqeDNHR0R4K2V6ampqalByMHNMWU4y
cjE0OGJtbjArOU9PU3c5ZE0rdGFkS0U4ZW5yUHpvMnJiN2VwdTIybVBIeWp1dXYKU0pmLy9wUzA1
TElycCtuVHBxWXIvbmhhNnQxbmdmVE5nMDlONjIrMlE3M1JIVGY4TlQxMDl5MnBhbGk2WWRRRmFl
OERUMGpMcjdKMgpldWplMjlKbEkwOUlpdzRhbXZvdXVGQzY0TGRIcFFOK2RYR2FPT0dWVHJlUGcw
MmFPQ0g5K29oOTA4REZGay8zM0hadFdtVEFZbW1sCk5UWklxMit3ZVZwd29mNXpkYnc1YVh0ODUr
dXZ2NWJpRktYb1c3LytpNmI5ajdzd0RSdStRcXlhWlprOGFXSTY5L2lEVTcrRkY2MzcKdCtvNkc2
ZGQ5dnhPdlYzTUp6bnR5TytsUGd2MFRVODk5bkExdXJKczJ2UGJoOVY5ajVHTlN5dUxJY09HcDJW
V1hDT05QUEdRMUtzSwpQejgrNGRMNnV5NDQvYWpLN2svcHlVY2ZTaytOZVRqdDlhUGowdjEzM3RD
cDB3dlBQcFZHL2VuMGRQMFY1NmNqenI2K0hqVnBkZXk1CjNUNDYwNm9PYTIrMDFTd3VYZjBibUdW
REh4QWdRSUFBQVFJRTNxTEFHMysrZjRzSGVxZDIzMnFycmVyVGszN3lrNS9VOHpiaS9adGQKTHJu
a2tqcEUvUHJYdjA1Nzc3MzNMS01YY2JyV050dHNrMkt1UndTSzBhTkh0NDFLeEdqSUk0ODhVZ2VP
K1A3dmZ2ZTdhY2tsbDB5ZgovT1FuMDI5Kzg1djZWSzNQZi83emFjU0lFU21DelU0NzdaUU9QUERB
bVpwNjVwbG4xc2VQUVBYQ0N5K2tuWGZlT1hVMldoS1QzNC82CndaN3BzM3YvT0IxNjJwVnBsZXBI
OUVILzlaRTAvdVZ4TXgwdjNrVHcrTWVObzlKVkY1MlpOdDVtNS9TOVg0eXNROEZSUC94aXZlM1UK
S1ZQU2tmdDlQcTI2em9qMGlTL3RtemJjZktkMDFyRUgxdXVtVFoyU3J2M3plZW5tYXk1T3cxZFlQ
VzIrMDY1cHdYNzl1OXcrZHZyTApIMDVOQy9SZE1PMisxLzdweS8vemkvUzN5MGJXd1dieEpaZE5j
M3U4MmJXOWJtVDFuMmpqMmh0dmt3NC84N3IwMm12VDYzRFFyT3Y0Ci9MLy92VXNhc2QySDB5ZSsv
RDkxZjA4OWZOODZpTVIyQjM3OVEybTFkVGRKWDk3M2lMVGZrZWVsQis2OE1mMzAyN3ZWaDFobXBU
WFQKdy9mZG5tNisrdUkwY1BBUzZaQmZqNm8vUCsra1Erdm5YYi80M2JUWTBDWFRsdS83WlByMm9i
K3B3MGxYcnIxNjlVNVBQLzVJRlhJZQptcU5qeiszMmNkQldkYWkvdE4xL1d2MGJhTGVabHdRSUVD
QkFnQUNCYmhHWXJ3TkkvRkMvOXRwclU4eTFhRTZMaXNuaFo1OTk5cHZDCmlkT2c0bFNudm4zNzFv
LzJCNG5SaXdnbzczdmYrK3FQNDlTckQzN3dnMjJiREIwNk5LMnp6anF6bkNiVW5GWVZ4NDVKNU91
dHQxNjkKVDV5dWRkOTk5N1h0SHk5aUxzcUhQL3podE4xMjI2V2YvdlNuZGNDNTRvb3JadG9tM2x4
Yi9haC92ZnBmbk81ejY3V1hwY1dHTEpsZQpmdkc1ZFBjdDE4eXk3UkpMTDUrR0Rsc21iYkxkUjlK
YUcyMloxbjdQMW1uZnc4OUp6NDE5UEkxNStMNXFOS1JQMm16SFhkSUtxODFvCjF5TFZxVUZqUnM5
b1Y0eW9SUENJdi9odlVZV1B2UTg0UGkxYi9SRHZhdnY0OGl1ckNlR0xEQmhjdHlOR1VSWWROS1Ir
dlhnMVYyTnUKanplN3R0Y0hydjRUd1dyOVRkOWJqMDZzTzJLNzlQZ2piMXlack5rbW52OXh3Nmcw
dWdvUkVUSmlXWG10amRKLzdmK3JGRzI3OVcrWApwWHVyRVp1dFAvRHBlbDI0N1BqeEw5YUI0NzQ3
cmsrRGhpeVJsbHhtcGJUOHF1dWtFZHZ1WE8rejNpYmJWOS8xejNyNzVqOU52VnU1CkRsaHNhSDJj
NXZTbzJSMTdicmVQdHJTcVE5UFc1cmxWVzV0dFBCTWdRSUFBQVFJRXVrdGd2ZzRnY1FuYzluTXdB
aVhtWHZ6em56UC8KS0p4VHJCMTMzREY5NmxPZnFrZFNqamppaUxUMTFsdTM3WHJWVlZlbDFWZGZ2
VzIrU0t4WWVPR0YyMFpBNG4zOCtHeCtnTWI3V0pyMwo4Unp6U2NhTkc1Y09PK3l3ZFBYVlY2ZFhY
bmxseGtiLy91K0FBUVBhM20rNjZZelRxVHE3ck85OS83Zyt4WnlBUHRXcFZQRlljOE10CjBzRW5Y
MTcvb0c0N1FQc1gxWGYzN05XcjdaTmxWbHc5TGJ6b3dCU25PRVc3dnZiOW85T3JyNHhMdnp2NXND
ckVYSjBtdnZwR3V4YW8KVHIwYVVKMkMxU3l6MjM2aGZvdWsrNnYyTmN1Z0ljUGFmdkRIWjNON3ZL
cUJYYmE5K1k3R09ONHZ2T2lnNmhTeDhjMnFtWjd2dnZXYQp0TWI2bTdmVkpGWis0Rk5mclMwZnVP
dW1GRC8wNDhkNHM2eTY3b2o2WllTV1dHWjh6eHZ6VFJicXYwaWFPbVZTdmE3NVQ5T1cyVGxGCnY1
cHQ1K2pZYzduOTdPclF0TGY1N2xiL0J0cHY2elVCQWdRSUVDQkE0SzBLek5jQkpBSkIrNnRRQlVh
TWhNVG4zYkg4N0djL2F6dk0KNDQ4L25wNTc3cm0yOTgyTDlqOGltOCs2ZW80NUh3Y2NjRUQ2OXJl
L1hWL3l0OVcreXkyM1hGcGtrVVhxUjhmanhXaEhqeDQ5NnprYwpNWStqZVF4Wll1bU9tM2I1UHZi
dldaMDJGc3VsNTU2UXpqam1nUFN4ejM4N3JWdjlWYjlWdTJhMy9jYysvNjEwZnpWaThLOEg3a3BQ
Ci9PdUJhdjVFdjdST2RYcFVxMlZ1djc5OTIxc2R0K082Y2RXOG1VY2Z2THZqeC9YN3laTW0xS05J
TVEra1daWmZaWjA2L0V5YStHcnoKMFZ3OXoyMi81dXJnczlsNGJ1dndUcloxTmwyeG1nQUJBZ1FJ
RUNoTVlMNmVoUDdwVDM4NkhYUE1NZW52Zi85N1BSSVNZU1R1bHhHZgpkOGNTeDR1YkE4YWxkSmRh
YXFuMDdMUFBwZ2NlZUNDdHV1cXFjM3o0NXNmOHZmZmVtL2JhYTY5NjhuckgwTlRad1dLU2U0eVFi
TERCCkJyT3NIcmIwQ3VueTgwOU5VeVpQcXVkYnhBWnhPczlkTjErZDFoMng3U3piZC93Z2dzRXJM
NzJRVmw1encvVFlRL2VtNDM2eVYvcnQKVlUvTzlOZi9qdnMwNzJlMy9YdTIvbUI2M3llL1VwOGFO
bmp4cGVzNUtzMituVDNQN25nZDkybmY5bzdyWnZjK1RyVjZzcHAzRVJQTQpsMXgycFhyemNCdDkv
eDMxcVdZUlhoKzgrK1lxaEcxWHJ4djN3alBwdFdxK1RaeUNOc2RMTlZJUnk5ejJhNDZQUDRjYnpr
MGQzdW0yCnptR1hiRWFBQUFFQ0JBZ1VJakJmajRCRURXSU9TTXo1K05HUGZwUk9PKzIwK3YzYzF1
YkZGMStzZDVsU1RjaHV2OFRja3E5OTdXdDEKNEloVHMyS2krZkhISDkrMlNad0NGcU1pTVNrOGxy
aEsxc1NKRTl2bWdjVGxmV1BrSkphWW14SS9jQ09JeFBaeEN0YWtTWlBxYlp1NQpBTTF4WXZ0Um8w
YlZOelZzNW94RTIrTDBzbGkyM2ZtektmNmFmOHlCWDAzalgzb3hqWHYrbVhUMmNRZWxwVnBjMXZX
VjZzN2J6UkpYCmRGcHJ3eTNyVTZOaXZrZDgvNWlIWjdUcjdpckVSTENKeitJUmwyV2RNbmxpczJz
OVA2VFY5bWNkOStQcThyS3Jwby9zc1UvVnpzL1UKVjVCcTI3bDZNYmZIaTMyN2FudXNpNUdMZURU
TDVLcXRVNm9yWFhXMmJQV0JUOVZYdUlvSi9ESC9KUjR4Q1gxSU5VY21KbzhQcmthUQpici8rTDIy
N1BsaGRHV3o0Q3F1bGpiWjhmLzFaVEtLUEsyNDFTM3h2QkpSbTZWK2QxdmJjMHpQcUhVR21sZFBr
Nm1waDBkYllKcGJaCkhYdHV0NTlkSFpvMngvUHMvZzIwMzlackFnUUlFQ0JBZ01CYkZlaFZYWW5w
d09ZZ0w3NDZOVFdQeGZyM1NZT3FSenpudnNTbGJPT20KZ08wdmFUdW5iZjdkNzM1WFh6STNna1NF
aExpRWJseEs5OVJUVDYwdnVSdFh1dnEvLy91LytrN2xLNis4Y29xYkRjWmxjcSs1NXBvNgpVRVF3
Nk5ldlh4MDhqanp5eUhyaWVBU1BEVGZjc0I3dCtNVXZmcEVlZSt5eGVvSjVoSTVqanoyMnZpeHZY
QzQ0cm5vVklTYXVkdlhxCnE2L1d4MzM1NVpmckVCVWpMYi84NVMvcnlmQnhROFNZTnhLWDgxMWlp
V295OU5ydnJYNHNMNVgrOE9zajBzanFLa3h4K2RrWWRWaXQKdXBKVlo4dGw1NTJVNGxLdUx6eFRY
VHE0bXJoKzIzV1hwKy8rL095MFVMK0ZxOG5VeTlkWHVicjQ3R1BUMk9yeXNkdDhhUGY2aWxsagpS
dCtmSmxXbkkvMzU5eWVuWjU1OE5BMWRjcG0wM01wcnRkeCtSRFVaL09hckwwcS9PZXI3NmR3VC9q
ZWRjL3hQMHNYbkhKZkdWbGQ4ClduK3pIZFBmTGowM1hYYmVpWE4xdkxpYVUxZHQvL3ZsdjYrUEYv
TlgxbHgvaS9UQ2MwOVZseWIrV1gxMXFSVlgzNkFPRCswOVluN0kKY3RYRStMK2MvK3ZLN3ZCMDAx
VVhwVTk5OVFmVkNNZnE5YVdKWXdKN2VFYUFlWFg4UzdYRFh0VWs5WUdERjY4bitKLy9tMStrRjU4
YgptOWJZWUl2MGNoWG9ScDUwU0gzWjNaalVIaFBVbjN0cVREci90RitrWjU5NkxHMy8wYzlWSTFK
WHBjNWM0eXBhRjU3eGYvV1ZzUG92Ck1yQzZqUEtyS1M3ajI5V3hYMzd4K2VvU3lFZk84ZmJSbGh1
cnl5bDNWWWRlN2VZRGhVK3Jmd09iYnYvUldlWlp0VGYxbWdBQkFnUUkKRUNoUFlOV2hiOHg1ZlRP
OWEvSkVQSGVXS1hwVWY0RnR1elBkdzg5TVNLT3JSenl2dEhpL3RHTDFpR2ZMR3dJeFNoRWpKa09H
REtsSApNSnI3Z0x5eHhjeXZJdGpFdHMwU0l5VE4zZFZqUktQajZWaGp4NDZ0dDQvUmxxNldpKytk
VWJLNGZPcHpZOGZVVjJUcTFXTDdiKzYyCmNYMzFxejMyUHFnZUxZakoxaDJYdUQ5RzNPc2pscmlw
WHZ2SjJCMjNqZmRkYlQveXhFUFRGdS83UkpwYWphTEVaUGJ4VlRpSXEzWnQKOStFOTJ1NDdNamZI
bTVPMmQzYThWcC9GUC9rWU5ZcXJUM1ZjWWwyY3B0V3ptaVBUbktiVmNadFc3MStxNXVjTStQZVZ2
Mks3cnB4YQpIYU03MXIyWk9yeFRiZTJPL2pvR0FRSUVDQkFnMEgwQ0gxcnpyUVdRMldXS3JuL2xk
bDhmaWpwUy9QVzRDUlN6Q3gvUjhXYmJCcUVKCkgvRytZL2lJeitJbWgzTzY5S2t1R1R3M1A1TGpI
aDd4Nkd4cHdrZXNtMTM0aUcwNjIvNnlrU2RXbDdyOWE5cnRQL2VMVGRxV25qMTcKMVg5bGIvdWdr
eGVkSGEvOVpxM2EzbjY3T1hrZDgzSTZDeCt4YjZ5Ym16dVVkL3krOXVFajFzMnVYeDMzNzQ3M2I3
WU83MFJidTZPLwpqa0dBQUFFQ0JBak1Yd0lDeVB4VnI3bHViY3c3aVZPdll1TDF2RjVXWDMremRQ
d2grNlJEdi9YSmFvTDdSdlVjaDNIUFA1M2kxS3lsCmxsdDVyci8rN1d6N1hEY3U0eDI2dXc0WmQx
WFRDQkFnUUlBQWdmbFF3Q2xZODJIUm1sT3c1cVRwVi96eE4rbjVmMCtNSGpaOHhYcU8KeDV6czky
YTNlZldWbCtyNUVqR2ZJZVpVdkpuZzBYejMyOTMyNW50TGVPN09PcFRnb1E4RUNCQWdRSURBbkF2
TTYxT3c1bmtBbVpzZgp5M1BPWWtzQ0JBZ1FJRUNBQUFFQ0JPYUZ3THdPSVBQOVpYam5CYnBqRWlC
QWdBQUJBZ1FJRUNBd2J3UUVrSG5qNnFnRUNCQWdRSUFBCkFRSUVDSFFpSUlCMGd1SWpBZ1FJRUNC
QWdBQUJBZ1RtallBQU1tOWNIWlVBQVFJRUNCQWdRSUFBZ1U0RUJKQk9VSnFQMnQyanNmbW8KN2Ju
VnV1blRwclZ0NXdVQkFnUUlFQ0JBZ0FBQkFtOElGSEVma0tzdk9TYzkvc2o5YWZqeXEzWExaV2F2
dWZUYzlNcExMNlNKNDE5TwpONHk2SUIxKzFuWHBqdXV2U0pmLy9wVHF4bjhycCtuVHBxWXIvbmhh
ZGNPK0JkSTNEejYxN1E3ZmQxUTM0WHZvN2x2aWJuYjFmbnNmCmVFSmFmcFcxMDUwM1hwa3VIWGxD
R2pKc2VGcG14VFhTeUJNUFNiMTY5MGsvUHVIU05HejRDbTlVd3lzQ0JBZ1FJRUNBQUFFQ2hRdk0K
OXlNZysrNnhWVHJxQjN1bWM0NC9PUDE4MzgrbWVQOVdsaGk5K01PdkQwOGYrdlRYMHllKy9EOXB0
ZlUyVFhGRHZBZ2UvN2h4VkxycQpvalBUeHRXTjliNzNpNUZwa1FHTHBhTisrTVg2NjZaT21aS08z
Ty96YWRWMVJxUlBmR25mdE9IbU82V3pqajJ3WHJmTVNtdW1oKys3ClBkMTg5Y1ZwNE9BbDBpRy9I
bFYvZnQ1Smg5YlAva09BQUFFQ0JBZ1FJRURnM1NJd1h3ZVFHUG00OS9hL3A2bFRKcWZYcTVBUXl3
UFYKQ01UVkY1LzlwdXMzL3BWeGFmVDlkNlNicjdta1BzYjdQL0dWRktkYkxiSDA4bW5vc0dYU0p0
dDlKSzIxMFpacDdmZHNuZlk5L0p6MAozTmpIMDVpSDc2dEdRL3FrelhiY0phMncybnIxZm9zTUhK
ekdqTDZ2Zmoxb3lCSnB5V1ZXU3N1dnVrNGFzZTNPYWZHbGxrdnJiYko5Ck5Xcnp6emZkVGpzU0lF
Q0FBQUVDQkFnUW1COEY1dXNBRXFkZDllZzVjeGVtVDUrYUh2L1htLzloUDJEUWtMVDVEcnVrZy9i
NmNEcnUKSi8rVkZxK0NSNjlldldiVXRqcTFxbWZ6dXZwa21SVlhUd3N2T3JBK1BhdEh0ZTVyM3o4
NnZWb0ZtTitkZkZoMU4vQ3IwOFJYWDJuNwpOeEhycTNPejJ0NHYxSCtSS2poTmFudnZCUUVDQkFn
UUlFQ0FBSUYzZzhETXY5N25zeDRQWDJIMUtoejBtYW5WTVJJU243K1Y1YnMvClB5dDlaSTk5MGlY
bi9DcDlmOC90MDRScUxraFhTNDhlUFZQUDNqT20wbHg2N2ducGpHTU9TQi83L0xmVHV0VUl4NHpR
MGRXZVBpZEEKZ0FBQkFnUUlFQ0R3N2hPWXJ3UElOaC84ZEZwbDdZM3Fxc1ZJU084K2ZkTWFHMnll
NHZNM3U3ejQ3TmowMGd2UHBLOTg3OGgwMEltWApwWDg5ZUZlNnBqclZxN1BsaVg4OVVFOVdYM25O
RGROakQ5MWJqWmpzbGI3MDNjUHIwN0U2Mjk1bkJBZ1FJRUNBQUFFQ0JON3RBdk4xCkFJbmkvZnlN
YTFPTVdIejZhejlNM3pyazEvWDd0MUxVbDE5NlBzVlZzR0xaY0l1ZDBxYmJmelF0MkcvaHRrTytN
dTc1dHRkeGRhdTEKTnR3eXJiYnVKdlY4ajVnck11YmhlOVAwNmRQVDNUZGZuYVpNbmxUUEg0blBw
MDJkVXIyZU1VOGxEakI1MG9UMFdyVmRzOFE4bG5PcgpxMlBGbkJJTEFRSUVDQkFnUUlBQWdWSUZp
cmdNNzFzWjhlaXNzQmVkZFV4YWNNRithZUNRWWFuL0lnUFRWdS9mclcyejBmLzhSenJqCmwvdFhw
MzcxcmlmQWYrL0k4K3AxRzIzMWdiVEM2dXVsZy9iK1NOcnlmWjlNMjMvMGMrbW1xeTVNUjN6dmMy
bUhqMzBoUFhqUExhbHYKZGN6Ny8zRkRXcUR2UXVuV2F5OUx6ejQxSnQxKzNWL1NCcHZ2bU1hT0da
MU8vNzhmcGlGTERFL3ZyZmExRUNCQWdBQUJBZ1FJRUNoUgpvRWYxMS9uWG00NDkvTXlFTkxwNnhQ
TktpL2RMSzFhUGVINHJ5OFgzdGgzK3JSem1iZHMzTHJuYnN6cWRhL3pMNDFMdjZsNGRDL2JyCjMv
YmQzOXh0NC9ycVYzdnNmVkE5Z2pGZ3NhRnQ2NW9Ya3lkTnJJTEdRdlhiYVZPbnp0WHBXQys5OEd6
cTdKak5zVDBUSUVDQUFBRUMKQkFnUW1OY0NIMXJ6alFzbnZabnZtbDJtS0dJRTVNM0FkTFZQaEk5
WTR1cFdYUzBSU3RvSGsvYmJOZUVqUG90TDg4N05JbnpNalpadApDUkFnUUlBQUFRSUU1a2VCK1g0
T3lOdUZIaU1qTHp6elpIcnFzWWZmcnEvMFBRUUlFQ0JBZ0FBQkFnU0tFeEJBNXJDa28vNTBldnJR
CjdudFZkenJmK0MzZDZIQU92ODVtQkFnUUlFQ0FBQUVDQklvVWNBcldISloxaDQ5OWZnNjN0Tms3
TGZCV3oxdDhwOXZ2K3drUUlFQ0EKQUFFQ0pRc1lBU201dXZwR2dBQUJBZ1FJRUNCQUlETUJBYVFi
Q2pMK3BSZTc0U2h6Zm9pSnI0NnZMK0U3NTN2TXV5M2puaWRqUnQvZgo5Z1V2Vi9kSmVlTFJCOXZl
ejgyTDZOZHpUei9SNVM1eHI1VDdicit1eS9YdjFoWGp4NDlQWThhTWViZDJYNzhKRUNCQWdBQ0Ir
VXhBCkFPbUdndjNzdTd2UDlDTzhHdzdaNVNHdXV1aXN0TWZXUzZSUkY1N2U1VFp2MTRvSDdybzU3
YlBMK3VtWUEvNno3U3ZqSGlrSGYrTmoKYmUvbjlNV2w1NTZRZHQ5aWNMcjJ6elB1cTlKeHYzL2Vl
V1A2NWlmZmsvNzN2M2ZwdU9wZC9mNnNzODVLU3l5eFJEcjk5SGYrMzhPNwp1aEE2VDRBQUFRSUVD
TXl4Z0FBeXgxU2RiL2prb3crbDIvNStlYnI0N0dNNzM2QWJQbzIvL01kZDEyUFpkdWZQcEtGTExk
Y05SMzNyCmg0Z0orZXVNMkRiMWFuZTU0VDIrY1ZENjRTLy8ySGJ3OW0xdis3Q1RGeC80MUZlclN4
OFA2bVROakkvaWJ2UHZyVzdvYUpsWjRET2YKK1V4YWJyazgvajNNM0RMdkNCQWdRSUFBQVFLZEN3
Z2duYnZNOGFlWC8vN2t0T1BIOTB4L3ZlQzNLVTRoNnU0bGJtWjR4UGYrSTkxego2OS9hRGgwM1NP
eFIvZStkWE9LeXhMSEVIZUY3OW5qam45R2lBd2VucFpkYnBWN1hXZHZyRmRWL3BrK2IxcnhzZSs0
Vi9lclJkYi82CjlGa2dWUnUwYmY5bVg3Uzc5K1lzaDVqV1NidG0yYWpkQjYyMmIvVTk3UTR4MDh0
V3g0c05PenRtbnlvQXRuS2I2UXU4SVVDQUFBRUMKQkFpOHd3SkZYQVhyNmt2T1NZOC9jbjhhdnZ4
cWFac1A3ZjYya1U2WlBDbU5lK0daOUptOURreFgvUEcwTk9wUHY2MHYxZHUrQVRGeQpjZW5JRTlL
UVljUFRNaXV1a1VhZWVFaUtIOW8vUHVIU05HejRDdldtRVZ4T08vSjdxYzhDZmV2N2pBeGRhdG0w
NTdjUHErK29mc0hwClI2VWJSdjBweFVqTFUyTWVUbnY5NkxoNm45ZGZmeTNGNlU3eHZmMzZMNXIy
UCs3Q3R1TzkrTnpUNlhlbkhKWWV1dWZXTkduQytQVDEKSHgyYlZsOXYwL1RRdmJlbHk2cTJMRHBv
Nkl4ai8vYW9kTUN2TGs2cnJUdWlmWk5UVi92SFJwTW1Ua2luL3Z3N2FkQ1FZZW41WjU5TQpqejEw
VDFwZ2dRWHIvVjk0OXFuSzRQUjAvUlhucHlQT3ZqNTExdmI3Nzd3aFBYVDNMWFdRdUdIVUJXbnZB
MDlJeTYreWR0djNUNjZPCmYwcDEvRGpPa0NXR3ArOGNka1phWnFVMTJ0YTNmOUdxbmUyM3UrS0tL
OUlwcDV5U1ZsNTU1VFMxQ25Tbm5YWmExZVlGMHFtbm5wcDIKMkdHSGV0Ty8vdld2NlpaYmJxbC95
Rjl3d1FYcGhCTk9TR3V2dlhhNjdiYmI2dGREaHc1TkN5MjBVRHJxcUtQU3hSZGZuRjU1NVpWTwp0
NCtEVFpnd0llMjc3NzVwOGNVWFQ5ZGVlMjFhYkxIRjBnWWJiSkEyMzN6ejFMOS8vN2s2M3B5MFBi
NHpBdUgrKys5ZjkyM1JSUmROCkYxNTRZVnBoaFJuL3ZtSzloUUFCQWdRSUVDQ1FpOEFiZjdyT3BV
VnoyWTU5OTlncUhmV0RQZE01eHgrY2ZyN3ZaMU84Zjd1V2F5NDkKTjIyeDQ2NXA4U293YkxUVkI5
SkZuWnlHdGN4S2E2YUg3N3M5M1h6MXhXbmc0Q1hTSWI4ZVZUZnZ2Sk1PYld2bWdWLy9VQlVDTmts
ZgozdmVJdE4rUjU2VUhxdmtPUC8zMmJ2WDZYYi80M2JUWTBDWFRsdS83WlByMm9iOXB1d043ekpW
WWUrTnQwdUZuWGxmOStKeGVCNXZZCklTYUZoOGRuOS81eE92UzBLOU1xMVdsU0IvM1hSOUw0bDhl
bGFWT24xSE1zYnI3bTRqUjhoZFhUNWp2dG1oWWVNUE5wVDYzMmorTkgKdStKN2Q5OXIvem9NalIw
enVtMVVJa1pEbm43OGtTcEVQUlNicG81dGorQjE1SDZmcis2bE1pSjk0a3Y3cGcwMzN5bWRkZXlC
OWJiTgpmNjY2Nk15MDludTJTZjl6K0RucGxaZGVTRC9lYStkT1IwdG0xODdtZVBFY3dXUFVxRkhw
ekRQUFREdnZ2SE1hT1hKa0hRcSsrTVV2CjFwdE5tVElsZmY3em4wOGpSb3lvZzhOT08rMlVEanp3
d0xaMTU1MTNYaDA2Vmw5OTliVHJycnZXSWFLcjdmNk9wSUFBQUNBQVNVUkIKVkdPbkNEWUxMcmhn
SFFoKzhZdGZwSFBQUGJjT05zc3V1MnlLNzVxYjQ4MnU3WFVqcS8vRU1iZlpacHQwM1hYWDFmOEdE
am5ra0dhVgpad0lFQ0JBZ1FJQkFWZ0x6ZFFDSmtZOTdiLzk3aW5rR3IvLzdsS0FIcXIrdVgzM3gy
VzhMOHMxWFg1UTIzUEw5OVhkOVlMZXZwakVQCjM5YzJWNk5wd0tBaFM2UWxsMWtwTGIvcU9tbkV0
anRYWVdXNXRONG0yMWNqTnYrc043bjFiNWVsZTIrN05tMzlnVS9YNzN0WHA5UHMKK1BFdjFvSGx2
anV1Ync0enl5azJHMit6YzFwLzAvZldJeXZyanRpdUhnR0tqYSs5YkdSNnZmcGZuTEoxNjdXWHBj
V0dMSmxlZnZHNQpkUGN0MTlTaklCRThZaVJtaXlwODdIM0E4VzJuU3pWZjFHci8rLzl4UTdybG1r
dlNobHU4cjk2OFo4K2U2VDFiZjdEWk5RMVliR2pkCno0Nm5DVFduQjBYZk50dHhsN1RDYXV2Vit5
eFNuYTQxWnZSOWJmdkhpKzAvK3JtMHlYWWZUdXR1c2wzNndyZC9tc1pXZ2VhTzY2K1kKYVp0NDA2
cWRIVGRlZnZubDB6TExMSk0rOHBHUHBDMjMzREp0dmZYVzZaeHp6cW12SEhYZmZmZWxPSVZwbDEx
MlNldXRONk5kZ3djUApUdkY1TEp0dXVtbUs0TEhHR212VTRlUDQ0NDlQYTY2NVpwZmJ4ejR4SVR5
T0VVdU1vc1RvU1N3eFYyTnVqemU3dHRjSHJ2NFR3ZXE5CjczMXZHajU4ZU5wdXUrM1MvZmUvY1dX
eVpodlBCQWdRSUVDQUFJRWNCT2JyQUJLblhmV29mZ1MzWDZaUG41b2UvOWVNSC9mdFArL3UKMXpH
cUVUL3MvL0w3VTZyVG1rNU16NDBkaytJSDlvVm5IVFBMVjgzNEFmN0czSVdGK2k5U2hhWko5WFlQ
M0hWVC9jTTk5bTJXVmY5OQpTdFRvNmp1YXBma1IzOW43bUx3OXNUclZLcGI3L25GOWlua1lNVjhp
SG10dXVFVTYrT1RMMDhwcmJWU3ZYMkRCaGRLQTZoU3NycFpXCis5OTEwMVZwK0lxclY1UEZCN2J0
dmxDL2hXY09SOVVjamE3YUdwOS83ZnRIcDFkZkdaZCtkL0poVlNpNnVwbzM4MHJic2VKRi80VUgK
dEwyUDA4WmllYktUeS9xMmFtZmJBZHE5aU8vdTFhdFgyeWNSS2dZTkdwVGlGS2RZZC9UUlI2ZHg0
OGFsd3c0N0xGMTk5ZFgxS1ZiTgp4bkhxVlJNaTRyUFpiYi9JSW91azY2OS9JendPR3pZc2JiTEpK
czNoNmxPNTV1WjRyZHJlSERTMmFaYm9WMXlhMTBLQUFBRUNCQWdRCnlGRmd2cDRERW4vTjc5V3JU
NXIyMnVRMjJ4Z0ppYy9uOVhMcHVjZW5IYXJKNS9FRHZGazIzZjVqNmJxLy9MNitSOGZRSlpkcFBt
NzUKUEhuU2hEckl4RHlRaGZyUE9OYnlxNnlUZWxZL2xpZE5mTFhsdnAydGpGQVVwMEt0djltTXVR
MmRiZFBxczFiN1AvZjA0M1ZiTys3Zgovc2R2eDNVZDM4ZmxkdStwUm55K2VmQ3A2Yy9WQlA0SVlG
MHRNVm9VdmhIWU9pNnQydGx4MjY3ZXh3aE83OTR6L2k4UWN6NWl2a2FjClBuWHl5U2VubTI3cXVs
MXh2RmJiZit0YjMwcGYrTUlYMGwxMzNaWDY5dTJiK3ZYclY1OGUxVlU3Wm5lOHp2WnIzL2JPMXZ1
TUFBRUMKQkFnUUlKQ3J3SHdkUUxiNTRLZlRSZFdJUTl5Y0xrWkNJb3lzc3ZaR0tUNmZsMHZNcDNq
bXlVZnJDZFR0djJlcDZ1cFBNVGNqSnAxLwo3cjhQYnIrcXk5Y1JsbUlDOFlOMzMxeWZkaFFieHNU
MjE2cTVISEdxVk52UzdpL2NiWjkxOG1MWTBpdWt5ODgvTmNVRStRWDZ6cGdjCkhxZEUzWFh6MVdu
ZEVkdDJzc2ZNSDdYYWY3SEZsNm9EeUJQL2VpQXR2ZnlxTSsvWTZ0Mi8yLzdZUS9lbTQzNnlWL3J0
VlUvV28wV3QKZG9sMXp6L3paRDJ5cytJYUc4eXlhYXQyZm1qTjdXYlp2dU1IRHp6d1FIcisrZWZU
aGh0dW1PNjk5OTYwMTE1N3BTZWZmTEkrSGF2agp0aDNmejI3N0QzN3dnK2tyWC9sS3V1eXl5OUxT
U3krZHJyeHl4aVdVT3g2bmVUKzc0elhiTmMvdDI5NTg1cGtBQVFJRUNCQWdNTDhJCnpIeiswdnpT
Nm5idC9Qa1oxNmJ2L3Z5czlPbXYvVEI5NjVCZnAzZy9yNWU0OUc1TU91KzR4RHlQNWFvck9zV1Zw
aWFNZjdsdGRVeisKanF0V05VdU1la1RBaUNVbWx3OWVZdWwwKy9WL2FWWlhZZVNXYWhSbnRiVFJ2
K2VYOUs5T2VZclJoMWppcnV1eGZ6eWFaZkxraVduSwpwSW4xMjIxMy9td2FWMTBGNjVnRHYxcHZP
Kzc1WjlMWnh4MlVJaHpGRXBlL25WSnQzOVhTYXYrdDMvK3BlbVRta21yMHAxbkdWS2ZCCnhXaEVU
QXFQSmE1aUZlMXA1b0cwYjN1RXJQaDh6TVAzMXR2ZlhZV2lDRXJ4V2JOOVRLaHZsanR2SEpVMjNm
NmphY1hWWjh6Tm1GbzUKVHErdVloVkxxM1kyKzNkOGpzRFJMQkVLdHRwcXEvclVxSmp2RVNFd2dr
RDBJMDdCbWpUcGpYYkZwWEVuVG56RGJIYmIvL2pIUDA2cgpycnBxMm1lZmZWTGNweU5PNFdxL3pP
M3hZdCt1Mmg3cjRxcGI4V2lXYUd2NzlrNmVQRG5GcFBUSEg1L3hiNmpaempNQkFnUUlFQ0JBCjRK
MFE2RlZkN2VmQTVvdGZmSFZxYWg2TDllK1RCbFdQZUg0cnk0UFB2cFc5NTJ6ZnVJeHIvSFcvL2VW
YzUyelB1ZDhxN3ZmeG15UDMKcTI3SWtPb3JWN1cvZVY3Y2tQQ0dVWCtzLzNML1dQVWplNTNxYWxF
eFYrVDgzL3lpdXJUdDJMVEdCbHVrbDhjOW4wYWVkRWg5V2QyNAo4dFV5MVp5S21FUStzcm9xVm9T
SVY4ZS9sT0pLVUh2dC82dnFxbG1MMXcxODdxa3g2ZnpUZmxHZDJ2VllmVnJXcUtvTk1ZOWl6Zlcz
ClNDODg5MVIxeWQyZjFWZWVXbkgxRGRKYUcyMlpCbFlUMy8vdzZ5UHFZOFpsZXQvM3lhK2sxYW9y
VDhWZDFDODc3OFI2OUNaT0VWdHUKNWJWbUFZaUo1RjN0djhpQXhhb0o5U3VuYzM1MVVIMG45cGpZ
SHNFcWdzR0NDL2FyUXRIRWRNRnZqNnl2aE5WL2tZRnBwVFUyVEM5VQpveGhOMjJPQytWMDNYMVhm
dEhGc2RVbmh1R1J5OUhYTTZQdlRpR3BTZlp4eUZwZmZuVmlGdDN0dXZUYkZTTXRYZi9ETCt2TEUv
N3p6CnB2VDc2dExDWXg4Zm5RWlVMdXR2dWtNVjNKYnF0SityRG4xalBrVFR3Wk5PT2lrOTlkUlQ5
U2pIMy83MnQzVDU1WmVuczg4K095MjgKOE1KcCtlV1hUNWRjY2trNjl0aGowOE1QUDV4MjMzMzMr
b3BaTVpFNzVsTEVLVm1QUHZwb1BaRjlyYlhXYXJsOVRBYS82S0tMMG43Nwo3WmNPUHZqZytuSGNj
Y2VsUng1NUpPMjQ0NDcxRmJGT1BQSEV1VHBlbkJiV1ZkdC8vL3ZmcHpoZXpGL1pZb3N0NnUxKzly
T2ZwWWNlCmVxaSs5TzlxcTYyV0huend3ZlNKVDN5aW5tVGZUTFJ2WER3VElFQ0FBQUVDQkxwYm9N
a1Q4ZHhacHVoUi9lVzUraWs5WTNuNG1RbHAKZFBXSTU1VVc3NWRXckI3eC9GYVdpKzl0Ty94Yk9V
engrMFlabnF3dVh4czM5VnR5MlpWbTZlOUwxU2pEZ0VGRFp2bThxdyttVnBkNwpqWW54TVkraTE3
L25PWFMxYldlZnQ5by9SZ25Hdi94aTNaNzJwM3AxZHB6NHJHUGJJNmowclNiRHh4STNLMncvQVQ4
K2UvSFpzZFc5ClNvYk1VYnM3YStlSDFwdzFnR3k4OGNiMTFhOE9PdWlnZXJTZy9TVHcrTTVZWXRT
Z0dhMkkrNFhFMWJGYUxWMXRmK2loaDlZLytHTVUKSmU0WEV1RWdMdjI3eHg1N3ROMTNwTFBqZG5X
OE9XbDdaOGRyLzltenp6NDcwMFQ2OXV1OEprQ0FBQUVDQkFoMHA4RHNNa1h2N3Z3eQp4M3J6QWpH
UnU3bURlR2RIbVp2d0VmdjNxVzYwMTFtUTZlelluWDNXYXYrNG1sVFRubWFlU1dmSGFENXJ0bTNl
TitFajNuY01IL0haCm9LSEQ0bW1PbGxidDdPd0FjU1BBZUhTMk5PRWoxczB1Zk1RMm5XMGZveEZ4
VThNWUFXbS9oRm1NdExSYU9qdGUrKzFidGIzOWRwMjkKN2l4d2RiYWR6d2dRSUVDQUFBRUM4MXBB
QUpuWHdvNy9qZ3ZFL0k2WVlCNm5WODNyWmJQTk5xdm5mbnp5azU5TUcyMjBVVDJxOHZUVApUOWYz
NllpYkNzN3Q4bmEyZlc3Ylpuc0NCQWdRSUVDQXdKc1JFRURlakpwOTVpdUJ1REZnWE9VcWxwajNF
WE04NXRXeXpqcnJwQWdjCjExeHpUUm83ZG14OVU4QTNFenlhOXIyZGJXKyswek1CQWdRSUVDQkFZ
RjRLelBNNUlQT3k4WTVOZ0FBQkFnUUlFQ0JBZ0VCZUFyT2IKQXpMZlg0WTNMMjZ0SVVDQUFBRUNC
QWdRSUVDZ2xZQUEwa3JIT2dJRUNCQWdRSUFBQVFJRXVsVkFBT2xXVGdjalFJQUFBUUlFQ0JBZwpR
S0NWZ0FEU1NzYzZBZ1FJRUNCQWdBQUJBZ1M2VlVBQTZWWk9CeU5BZ0FBQkFnUUlFQ0JBb0pXQUFO
Skt4em9DQkFnUUlFQ0FBQUVDCkJMcFZRQURwVms0SEkwQ0FBQUVDQkFnUUlFQ2dsWUFBMGtySE9n
SUVDQkFnUUlBQUFRSUV1bFZBQU9sV1RnY2pRSUFBQVFJRUNCQWcKUUtDVmdBRFNTc2M2QWdRSUVD
QkFnQUFCQWdTNlZVQUE2VlpPQnlOQWdBQUJBZ1FJRUNCQW9KV0FBTkpLeHpvQ0JBZ1FJRUNBQUFF
QwpCTHBWUUFEcFZrNEhJMENBQUFFQ0JBZ1FJRUNnbFlBQTBrckhPZ0lFQ0JBZ1FJQUFBUUlFdWxW
QUFPbFdUZ2NqUUlBQUFRSUVDQkFnClFLQ1ZRTzlXSzd0ajNkMTMzOTBkaDNuWEhXUHR0ZGQrMS9W
Wmh3a1FJRUNBQUFFQ0JNb1hNQUpTZm8zMWtBQUJBZ1FJRUNCQWdFQTIKQWdKSVZZcnAwNmVuMGFO
SHR4VmwzTGh4NmRGSEgyMTdQemN2Smt5WWtKNSsrdWt1ZDVreVpVcTY0NDQ3dWx4dkJRRUNCQWdR
SUVDQQpBSUdTQmQ3MUFTUk9FZnZFSno2UmZ2empIN2ZWK1poamprbjc3TE5QMi9zNWZURnk1TWkw
eFJaYnBNc3Z2N3pUWGU2ODg4NzBxVTk5CktuM3ptOS9zZEwwUENSQWdRSUFBQVFJRUNKUXU4SzRQ
SURIWFl1T05OMDY5ZTc4eEhXYnZ2ZmRPUng5OWRGdnRZOVRpcHB0dWFudmYKMVl2ZGR0c3REUmd3
b0t2VmFkMTExMDBmL2VoSHUxeHZCUUVDQkFnUUlFQ0FBSUhTQmQ3VkFlUzExMTZyNjl1clY2L1Vz
K2NiRkFNSApEa3pMTGJkY3ZXN3ExS2xwdi8zMlM3ZmVldXNzL3hhbVRaczJ5MmNSWkhyMDZESEw1
ODBIZmZyMGFWNTZKa0NBQUFFQ0JBZ1FJUEN1CkUzamp6Lzd6cU9zeGNoQ25KZzBiTml5dHVPS0s2
YVNUVHFwSEczNzFxMStsNGNPSDE5OGE4eWFPUFBMSXRNQUNDNlF4WThha0paZGMKTW4zclc5OUtD
eTY0WUQzeU1MdjlPMnY2Yzg4OWwwNDk5ZFIwNzczM3BqaitEMzd3ZzdUZWV1dlZtMDZjT0RFZGZ2
amhhY2lRSWVuWgpaNTlORHozMFVPcmJ0Mis5THQ1ZmVPR0Y2YTkvL1dzNjg4d3oweGxubkpHdXZQ
TEs5TmhqajlWdCsrRVBmNWppVktwNzdybW5EaHFqClJvMUtCeHh3UUZwbGxWWGFtdEVjUDQ2enhC
SkxwSi8rOUtkMTM5czJhUGVpVlR2YmJlWWxBUUlFQ0JBZ1FJQUFnU0lFM3Zpei96enEKVG9TTysr
Ky9QMTF6elRWcDhPREI2WlJUVHFtLzZlU1RUMjc3eHIzMjJxcytQZW03My8xdU91S0lJK29mK1Av
di8vMi9ldjJjN045MgpvSCsvaUVubFAvclJqOUovL2RkLzFTRWtUclA2eGplK2tWNSsrZVY2aSs5
ODV6djFhVmRmLy9yWFV3U0t4eDkvdkczVUlrWkRubmppCmlUcHd4TVo3N3JsbkdqcDBhTnBwcDUz
U0lZY2NrbUlFSThMTU91dXNrNzc0eFMrbXpUZmZQQjEzM0hILy91WVpUeGRmZkhGNnozdmUKazM3
Kzg1K25sMTU2cVc1SFo2TWxzMnZuVEFmMWhnQUJBZ1FJRUNCQWdFQUJBdk04Z01Rb3d6TExMRk9Q
RUd5enpUWnBxYVdXU2lORwpqRWovK3RlL2FyNXJyNzAyM1hiYmJlbjk3MzkvL1Q1KzRILzg0eCt2
QTB0Y0xXcDIrM2RXZ3ovLytjL3A5ZGRmcjArYml1UEhNVjU4CjhjWDYvVC8rOFkvNjJCRWNZb2xU
cjdiYWFxdTJ3eXkyMkdKMVcyUC85a3R6V2xXY1lyWEREanVrMVZaYnJWNGRwMnUxdjRKV2ZQaVIK
ajN3a2JidnR0blUvWXlRbkFzNE5OOXpRL25EMTYxYnRuR1ZqSHhBZ1FJQUFBUUlFQ0JBb1FHQ2Vu
NElWUnZIanZma0JIKy83OSsrZgpKaytlSEMvVFhYZmRsZUpIZi91NUVURzZFRXVNbkt5Ly92b3Q5
NDhnYy9QTk45ZmJ4My9pVktnSUdSRU1tbU51c01FRzZjUVRUNnhQCmc0clRvbFpZWVlXMDZLS0x0
dTNUcjErL3R0ZnhvbU43bTgrYTU1Z1RFcWVLL2U1M3Y2dFB4WHIxMVZkalZkdXk4TUlMdDcyT2ll
ZXgKeEdWOXQ5eHl5N2JQNDBXcmRzNjBvVGNFQ0JBZ1FJQUFBUUlFQ2hGNFd3SklLNnRKa3liVm94
TXhUNk1KQWhFaTRsU29tRXN4dStXcApwNTZxNTJzMDIwVjRpTkdPMkgrenpUWnJQbTU3am50MHhI
MCtPaTd0QTFMSGRSM2Z4NXlVMjIrL1BSMTAwRUhwRDMvNFF4MmlPbTdUCnZJOFJuK2hYaEs2T1M2
dDJkdHpXZXdJRUNCQWdRSUFBQVFJbENMempBU1JHSStKcVZIRS9qamcxSzVZWFhuaWh2amxnelAr
WTNSSWgKbzJQUWlEa2M1NTkvZmozSzBrd3VqMU9xYnJubGxyVDQ0b3ZYQVNWR1RwWmZmdm5aSGI1
dGZSTlFIbjc0NFhUd3dRZW5tSHplakxDMApiZFRKaTJlZWVhYWVCTC9HR212TXNuYnBwWmZ1c3Aw
eGI4VkNnQUFCQWdRSUVDQkFvRFNCZVQ0SEpNRGlVcmJOSlcvamZZeDZOTzlqCmNuZGNLZXI2NjYr
UFZmVVNWNWlLWUJJMzlZdWwxZjcxQmgzK3MvUE9PNmZubjMrK3ZybGdUQUtQMTNIVnJXV1hYYmFl
YXhLakl6R0sKMFN5UFBQSklQU29TazhKamlaR1hPRVdzbVFleXlDS0x0TjNkUElKU2ZCN3pQbUw3
T1AwcjdoTVNuelhiTjMyTFk5MTQ0NDFwKysyMwpiNXN6RW4xcEpxUzNhbWZzYXlGQWdBQUJBZ1FJ
RUNCUW1rQ3ZBNnVsNmRTTHIwNU56V094L24zU29Pb1J6MjlsdWVTU1M5SnZmL3ZiCkZKZWJqZmtj
RVFqaVVyeHhXZHVZNnhHakhIRWp3UGdzZnZTLzhzb3I2YUtMTHFxdlloVlh6WXBSaTFiN3h3VDNq
a3ZNS1lsOWYvT2IKMzZTNDJ0WUZGMXlRZHQxMTEvcjc0a2FCc2MveHh4OWZYMjQzN3U4UmdTR0N3
VUlMTFZTMzRmVFRUNjhuamtmd1dIUE5OVk9NWXNTeAp4bzRkVzA4d2o5Qng5dGxuMTl0ODhJTWZU
SEhWcXdneE1jayt3a3ZNTXhrL2Zudzl1VDdtZm56Lys5K3ZMekVjODEzaTBzQXhLVDNhCnQrbW1t
OVpYMk9xc25URlNZeUZBZ0FBQkFnUUlFQ0F3dndrMGVTS2VPOHNVUGFxLzJyZGQ3dW5oWnlhazBk
VWpubGRhdkY5YXNYckUKODF0WllzUmdUcFpvUm9TU3VDcFZaNkZpVG83UmNac0lGUkVhNHI0aTdl
OTBIdHZGNkVWY2xuZlFvRUV6bmFyVjhSak4rNWl2RWRzMgpTNHppeEgxS1lvbnY2WGc2VmdTdW1B
amY4WHViL2RzL2Q5Wk9wMkMxRi9LYUFBRUNCQWdRSUVCZ2ZoR1lYYVo0eCtlQU5KQXh4Nks1Cisz
anoyVnQ5amxEUVZaaUowN0NhUU5ITUUybjFmYzIyelRaTitJajNIY05IZkJhWC9wM1RwVlU3NS9R
WXRpTkFnQUFCQWdRSUVDQXcKUHdpOExYTkE1Z2NJYlNSQWdBQUJBZ1FJRUNCQVlONExDQ0R6M3Rn
M0VDQkFnQUFCQWdRSUVDRHdiNEY1ZmdxV3VReityUkVnUUlBQQpBUUlFQ0JBZzBBZ1lBV2trUEJN
Z1FJQUFBUUlFQ0JBZ01NOEZCSkI1VHV3TENCQWdRSUFBQVFJRUNCQm9CQVNRUnNJekFRSUVDQkFn
ClFJQUFBUUx6WEVBQW1lZkV2b0FBQVFJRUNCQWdRSUFBZ1VaQUFHa2tQQk1nUUlBQUFRSUVDQkFn
TU04RkJKQjVUdXdMQ0JBZ1FJQUEKQVFJRUNCQm9CQVNRUnNJekFRSUVDQkFnUUlBQUFRTHpYRUFB
bWVmRXZvQUFBUUlFQ0JBZ1FJQUFnVVpBQUdra1BCTWdRSUFBQVFJRQpDQkFnTU04RkJKQjVUdXdM
Q0JBZ1FJQUFBUUlFQ0JCb0JBU1FSc0l6QVFJRUNCQWdRSUFBQVFMelhFQUFtZWZFdm9BQUFRSUVD
QkFnClFJQUFnVVpBQUdra1BCTWdRSUFBQVFJRUNCQWdNTThGQkpCNVR1d0xDQkFnUUlBQUFRSUVD
QkJvQkFTUVJzSXpBUUlFQ0JBZ1FJQUEKQVFMelhLQjMrMi9vMDZ0bjZ0V3pSLzNSdUFuVDBwUGpK
cmRmN1RVQkFnUUlFQ0JBZ0FBQkFnUmFDa1NHaUN3UlMyU0x5Qmp0bDVrQwpTTi9lUGRMQ0MvWk8v
ZnYyU3BPbVRrOWpxNTBuVFpuZWZ2dVpYci8rK3V2MSs5ZGVleTAxcjJmYVlENS8wNk5IajlTejV3
eXdlRzBoClFJQUFBUUlFQ0JBZ1FLQzFRSVNQeUJLUktTSmJSTVpvdjh3VVFHS0R3UXYzU2NNRzlF
MWpYNXFjbmg4L3BYNjAzeUZlUjlpWVBuMTYKZXVtbGw5S0VDUlBTMUtsVFU0U1EwcFlJSDMzNjlF
bjkrdlZMQXdZTVNMMTY5VXFDU0dsVjFoOENCQWdRSUVDQUFJSHVGb2p3RVpraQpza1ZralBaTGp5
cE16QmpHcUQ2ZE52MzFOSDd5dENwMFRLMGY0eWROUzlOZmExdGQ3eGZCNDVGSEhrbi8vT2MvMCtL
TEw1NldYbnJwCitzZDUzNzU5MjBZTDJuL0IvUG82QXRYa3laUHJrUFhFRTAra3A1OStPcTIrK3Vw
cGhSVldxSVBJL05vdjdTWkFnQUFCQWdRSUVDQXcKTHdYaXRLdG1ZS01PSUgxN3A5NjkzaGdGbVNt
QVJFTWloRXllOWxxSzhERjUydXRwNnZRWkl4dVJVMktrNDY5Ly9XdjYxNy8rbFhiZQplZWUweEJK
THpNdTJaM1BzNlB2WXNXUFRSUmRkVkFlUUhYYllvUjRaTVJxU1RZazBoQUFCQWdRSUVDQkFJQk9C
bVBQUlRPM28yN3ZuClRPRWptamp6ZUVoOFVLV1QzdFdwUmpGczBuNlpNbVZLdXZUU0s5Smo5OXlZ
OXRsNzc3VFlZb3U5ZTA1SHFnYUJsaGs0UEMwL2VOZDAKN0xISHBnY0c5VWtmK01BSDBnSUxMTkNl
eUdzQ0JBZ1FJRUNBQUFFQ0JHWWpNRXNBNld6N09CMHBSZ0N1dlBMS3RQdnV1OWMvdk9PegpHZk95
M3hoTzZXemZFajZMRVpCNExMamdndW5qdTN3OGpUeDNaTnBnZ3czUzhPSERpenJ0cklSYTZRTUJB
Z1FJRUNCQWdFRGVBak5mCkU2dUx0azZhTktrKzlXcWxsVmFxVHJ0YVBFMmRWcDJlVlgzMldqVS9K
SUpJUEY2dlhzZW95SU1QUHRqMldiTnVYanpIWEpTdWpqdDQKOE9CNmprcjc5YmZmZm50YWQ5MTF1
OXluMlhaYTFiZm1kZnZuTUloUm9HRkxERXVyckxKS3V1S0tLMUo4WmlGQWdBQUJBZ1FJRUNCQQpZ
TTRGWmpzQ0VuLzVIejkrZkhyb29ZZlM5dHR2WDEzOUtpNjVPelc5V3YxUW4xUk4wbzdKNTNGMXFH
YUpIL0F4VnlUMmk2VVpKV25lCk45dDFmSjZiN1RiWVlNTjA3cm5uMWtHZzQzR2E5OU9tVFoycEhh
dXV1bW9hTldwVUhTS2FiZUs1L2ZlZWZmYlo5U2pQeVNlZlhHOFMKYlk2Z0U1UFJJNHpNMkw1SFdu
UE5OZXRqaGN0Q0N5MzA3amtWclJid0h3SUVDQkFnUUlBQUFRSnZYbUMySXlCTkFJbVFFVmU5aXVk
NApOUGZIaUZHQmlSTW50bzBHeEkvMWVHeXp6VGJwd2dzdlROdHR0MzBhTVdKRVBZSVMyOGFvd1Y1
NzdaVmlJdmNtbTJ5U25udnV1VG9VCnZQaml1UFRsTDM4NWJiNzU1bW1mZmZaSmp6LytlUDM1YjMv
NzIvU0RIL3dnZmVsTFgwcTc3cnByT3VTUVErdlR3ZmJjYzgvMHd4LysKc040bWp0ditFUnhUcGt5
dDI5RjhmdDk5OTZYUGZPWXpiZHNkYzh3eDZYM3ZlMS9hZE5QTjB1V1hYNTRlZSt5eGROaGhoOVVC
Wkx2dAp0a3YzM250djNkYll2N2tmU1BQY09FUUFtVjJ3ZXZPbHNTY0JBZ1FJRUNCQWdBQ0I4Z1Jt
T3dJU2YvbC85ZFZYNjB2dHh2MHdJbnpFCkQvSG1DbENkUFVjNEdUTm1URHJ6ekROVGpDcGNldW1s
NllRVFRxaER5WFhYWFpjaURQemxMMzlwKy9FZXgvampILytZNHRTcGE2NjUKSmgxOTlOSDFDTWQv
Ly9kLzE2TXZJMGVPVEtlY2Nrb2RUcUlFY2R5VFRqcXA1UWhJSExNSlNiRlBqTW84K2VTVDlXY1Jt
QTQvL1BCMAo0NDAzMXQ4WmZZeHR2L25OYjZacnI3MDJIWC84OFcxdGkzMW5oSXlZQnhJakpqM2E3
Z3NTTHMyK3NaMkZBQUVDQkFnUUlFQ0FBSUhXCkFyTWRBWWtmMkRFSzBMdDM3L3AwcFBpaDNveUN4
R2ZONitiSGZ2dlJrVU1QUGJRZU5ZbjdaOFFrOXRnbVRsK0tVWSt2Zi8zcjliMDEKbW1OY2ZQSEY5
YWpIL3Z2dm4rNjg4ODQ2aU1UMjhZUC8vZTkvZjlwcXE2M2F2aXU2Rk92YVA1cDJ4SE1zVFR2YWI5
Tjh2dkRDQzZlTgpOOTQ0ZmZhem4wMjMzWFpiM2JmbXU1cmcwdjU0TTlyNFJsL0RKRDRMbDNodElV
Q0FBQUVDQkFnUUlFQmd6Z1JtRzBEaWgzbk04NGhUCnArS3U1KzEvbURldm14QVJYeG5ieCtleE5E
Y25iTjdIYzl3N0pFWVpsbHR1dWZUZTk3NjNIZzJKZlNLZ2JMamhodWxqSC90WWZZclcKVDM3eWsv
bzRFUWhpdjlpbWVUU2Z4ZWZObzFrWHo3SEVjN091MmI4SkY3RXU1cEI4N25PZnEwL3RpbEdhOXR1
MDM2OTUzUncvM3NmSQpSNXhtMXZTdi9rTC9JVUNBQUFFQ0JBZ1FJRUJndGdLelBRVXJmbmozNzkr
L0RpQXg1Nkg5RC9VNGV2eW9qMGN6RjZMNXdkNzgyRysyCmoyM2pXSEdNUVlNR3BRTU9PS0NlZHhG
WHAxcG5uWFhxT1NHMzNucHJmUnBVbno1OVl2TjZhWTRmKzhZUzd3Y09ISmllZmZiWnROcHEKcTlX
ZmRmYWZKakEwNjVyOTQ3a1p1WWg1SkxGRUlJb3dFbGZ4ZXVhWlorbytOdnMxejdGZjlERkdQS0lQ
Y1JwWHVEVEhiYmJ6VElBQQpBUUlFQ0JBZ1FJQkExd0t6SFFHSkgveHh5dEpTU3kyVm5uLysrVHFJ
TkNFalJqNmEwWS80TEpabVhmdlg4VmtjSjdhTksxSEZTTWN1CnUreFNIMiszM1hhclA5OXZ2LzNx
KzJ4RUdJbFJrQWdFemJHYmZadjNYL25LVjFMTUQ0bWJBc1puSFIveDNYSGNtT1FlajVqVTNyNE4K
RVY3aTgvaWVHUDM0eGplK1VhL2ZhYWVkMG9zdnZwZysvT0VQcDZlZWVxcnQrNXMreFhPTWZMend3
Z3UxUjdoRTJ5d0VDQkFnUUlBQQpBUUlFQ015WlFJL3FyL296cnBmYll2djRhLzhkZDl4Ulg5VnFq
ejMycUcvQUZ6LzY0OGQzN043OENHOS9xUGF2bS9YTlY4UW93a3N2CnZWU1BaRFNmeFhOczExeFph
cEZGRnFsWHRUOU9zMjJ6WGJRaGJnNFlTMWZiTmZzMHorMjNpMEFWRTk4N3RpL21xQXdaTXFUWnBl
MDUKTGpIOHhCTlBwTk5QUDcwT0tldXZ2MzU5R2Q2MkRid2dRSUFBQVFJRUNCQWdRS0Nsd0J3RmtB
Z01NV29RbDZ1Tkd3M0dCUEw0Z2Q3eAo5S1AyUCs1YmZtdkdLNk1QN1FOSnZJN1A0aEhCNUZlLyts
Vjk5YTBZTFJrNmRPZ3NCaGwzVGRNSUVDQkFnQUFCQWdRSXZPTUNjeFJBCm9wVnhHZHRISDMyMHZu
eHUzSlF3N3RteDRvb3IxcWNwUlJCcC82UDlIZTlWTnpVZ1FrZUVyeGo1R0QxNmRJb2JGSzY4OHNw
cHh4MTMKckNmUnQ1K3IwazFmNlRBRUNCQWdRSUFBQVFJRWloYVk0d0FTQ2pGNU8yN1lkOE1OTjlT
blpDMnd3QUwxVFFiWFhYZmR0T3l5eTlaaApwQlN0Q0IzUjE3Z2s4RTAzM1ZUM1BVNjUyblRUVGV1
K1J0OHRCQWdRSUVDQUFBRUNCQWpNbmNCY0JaQTRkSXlFeENUc1J4NTVKTjF6Cnp6MzFxRWpNNTRn
ZjdERmlVTW9TSXpveHgyVEFnQUgxYU1kYWE2MlZWbGhoaGZwS1dVWStTcW15ZmhBZ1FJQUFBUUlF
Q0x6ZEFuTWQKUUtLQmNWcFNYQTBxSm96SEkrNFBFdmNKbVQ1OSt0dmQvbm4yZlhIRnE1amdIbmQv
ajZ0ZHhjTjlQK1ladHdNVElFQ0FBQUVDQkFpOApTd1RlVkFCcGJKb1Jqd2dlRVVxYTk4MzYrZms1
UmtCaWJrc0VrVmhLbk9NeVA5ZEgyd2tRSUVDQUFBRUNCT1pQZ2JjVVFPYlBMbXMxCkFRSUVDQkFn
UUlBQUFRTHZsTUJzYjBUNFRqWE05eElnUUlBQUFRSUVDQkFnVUo2QUFGSmVUZldJQUFFQ0JBZ1FJ
RUNBUUxZQ0FraTIKcGRFd0FnUUlFQ0JBZ0FBQkF1VUpDQ0RsMVZTUENCQWdRSUFBQVFJRUNHUXJJ
SUJrV3hvTkkwQ0FBQUVDQkFnUUlGQ2VnQUJTWGszMQppQUFCQWdRSUVDQkFnRUMyQWdKSXRxWFJN
QUlFQ0JBZ1FJQUFBUUxsQ1FnZzVkVlVqd2dRSUVDQUFBRUNCQWhrS3lDQVpGc2FEU05BCmdBQUJB
Z1FJRUNCUW5vQUFVbDVOOVlnQUFRSUVDQkFnUUlCQXRnSUNTTGFsMFRBQ0JBZ1FJRUNBQUFFQzVR
a0lJT1hWVkk4SUVDQkEKZ0FBQkFnUUlaQ3NnZ0dSYkdnMGpRSUFBQVFJRUNCQWdVSjZBQUZKZVRm
V0lBQUVDQkFnUUlFQ0FRTFlDQWtpMnBkRXdBZ1FJRUNCQQpnQUFCQXVVSkNDRGwxVlNQQ0JBZ1FJ
QUFBUUlFQ0dRcklJQmtXeG9OSTBDQUFBRUNCQWdRSUZDZWdBQlNYazMxaUFBQkFnUUlFQ0JBCmdF
QzJBZ0pJdHFYUk1BSUVDQkFnUUlBQUFRTGxDUWdnNWRWVWp3Z1FJRUNBQUFFQ0JBaGtLeUNBNUo4
Z0hnQUFIWFpKUkVGVVpGc2EKRFNOQWdBQUJBZ1FJRUNCUW5vQUFVbDVOOVlnQUFRSUVDQkFnUUlC
QXRnSUNTTGFsMFRBQ0JBZ1FJRUNBQUFFQzVRa0lJT1hWVkk4SQpFQ0JBZ0FBQkFnUUlaQ3NnZ0dS
YkdnMGpRSUFBQVFJRUNCQWdVSjZBQUZKZVRmV0lBQUVDQkFnUUlFQ0FRTFlDQWtpMnBkRXdBZ1FJ
CkVDQkFnQUFCQXVVSkNDRGwxVlNQQ0JBZ1FJQUFBUUlFQ0dRcklJQmtXeG9OSTBDQUFBRUNCQWdR
SUZDZWdBQlNYazMxaUFBQkFnUUkKRUNCQWdFQzJBZ0pJdHFYUk1BSUVDQkFnUUlBQUFRTGxDUWdn
NWRWVWp3Z1FJRUNBQUFFQ0JBaGtLeUNBWkZzYURTTkFnQUFCQWdRSQpFQ0JRbm9BQVVsNU45WWdB
QVFJRUNCQWdRSUJBdGdJQ1NMYWwwVEFDQkFnUUlFQ0FBQUVDNVFrSUlPWFZWSThJRUNCQWdBQUJB
Z1FJClpDc2dnR1JiR2cwalFJQUFBUUlFQ0JBZ1VKNkFBRkplVGZXSUFBRUNCQWdRSUVDQVFMWUNB
a2kycGRFd0FnUUlFQ0JBZ0FBQkF1VUoKQ0NEbDFWU1BDQkFnUUlBQUFRSUVDR1FySUlCa1d4b05J
MENBQUFFQ0JBZ1FJRkNlZ0FCU1hrMzFpQUFCQWdRSUVDQkFnRUMyQWdKSQp0cVhSTUFJRUNCQWdR
SUFBQVFMbENRZ2c1ZFZVandnUUlFQ0FBQUVDQkFoa0t5Q0FaRnNhRFNOQWdBQUJBZ1FJRUNCUW5v
QUFVbDVOCjlZZ0FBUUlFQ0JBZ1FJQkF0Z0lDU0xhbDBUQUNCQWdRSUVDQUFBRUM1UWtJSU9YVlZJ
OElFQ0JBZ0FBQkFnUUlaQ3NnZ0dSYkdnMGoKUUlBQUFRSUVDQkFnVUo2QUFGSmVUZldJQUFFQ0JB
Z1FJRUNBUUxZQ0FraTJwZEV3QWdRSUVDQkFnQUFCQXVVSkNDRGwxVlNQQ0JBZwpRSUFBQVFJRUNH
UXJJSUJrV3hvTkkwQ0FBQUVDQkFnUUlGQ2VnQUJTWGszMWlBQUJBZ1FJRUNCQWdFQzJBZ0pJdHFY
Uk1BSUVDQkFnClFJQUFBUUxsQ1FnZzVkVlVqd2dRSUVDQUFBRUNCQWhrS3lDQVpGc2FEU05BZ0FB
QkFnUUlFQ0JRbm9BQVVsNU45WWdBQVFJRUNCQWcKUUlCQXRnSUNTTGFsMFRBQ0JBZ1FJRUNBQUFF
QzVRa0lJT1hWVkk4SUVDQkFnQUFCQWdRSVpDc2dnR1JiR2cwalFJQUFBUUlFQ0JBZwpVSjZBQUZK
ZVRmV0lBQUVDQkFnUUlFQ0FRTFlDQWtpMnBkRXdBZ1FJRUNCQWdBQUJBdVVKQ0NEbDFWU1BDQkFn
UUlBQUFRSUVDR1FyCklJQmtXeG9OSTBDQUFBRUNCQWdRSUZDZWdBQlNYazMxaUFBQkFnUUlFQ0JB
Z0VDMkFnSkl0cVhSTUFJRUNCQWdRSUFBQVFMbENRZ2cKNWRWVWp3Z1FJRUNBQUFFQ0JBaGtLeUNB
WkZzYURTTkFnQUFCQWdRSUVDQlFub0FBVWw1TjlZZ0FBUUlFQ0JBZ1FJQkF0Z0lDU0xhbAowVEFD
QkFnUUlFQ0FBQUVDNVFrSUlPWFZWSThJRUNCQWdBQUJBZ1FJWkNzZ2dHUmJHZzBqUUlBQUFRSUVD
QkFnVUo2QUFGSmVUZldJCkFBRUNCQWdRSUVDQVFMWUNBa2kycGRFd0FnUUlFQ0JBZ0FBQkF1VUpD
Q0RsMVZTUENCQWdRSUFBQVFJRUNHUXJJSUJrV3hvTkkwQ0EKQUFFQ0JBZ1FJRkNlZ0FCU1hrMzFp
QUFCQWdRSUVDQkFnRUMyQWdKSXRxWFJNQUlFQ0JBZ1FJQUFBUUxsQ1FnZzVkVlVqd2dRSUVDQQpB
QUVDQkFoa0t5Q0FaRnNhRFNOQWdBQUJBZ1FJRUNCUW5vQUFVbDVOOVlnQUFRSUVDQkFnUUlCQXRn
SUNTTGFsMFRBQ0JBZ1FJRUNBCkFBRUM1UWtJSU9YVlZJOElFQ0JBZ0FBQkFnUUlaQ3NnZ0dSYkdn
MGpRSUFBQVFJRUNCQWdVSjZBQUZKZVRmV0lBQUVDQkFnUUlFQ0EKUUxZQ0FraTJwZEV3QWdRSUVD
QkFnQUFCQXVVSkNDRGwxVlNQQ0JBZ1FJQUFBUUlFQ0dRcklJQmtXeG9OSTBDQUFBRUNCQWdRSUZD
ZQpnQUJTWGszMWlBQUJBZ1FJRUNCQWdFQzJBZ0pJdHFYUk1BSUVDQkFnUUlBQUFRTGxDUWdnNWRW
VWp3Z1FJRUNBQUFFQ0JBaGtLeUNBClpGc2FEU05BZ0FBQkFnUUlFQ0JRbm9BQVVsNU45WWdBQVFJ
RUNCQWdRSUJBdGdJQ1NMYWwwVEFDQkFnUUlFQ0FBQUVDNVFrSUlPWFYKVkk4SUVDQkFnQUFCQWdR
SVpDc2dnR1JiR2cwalFJQUFBUUlFQ0JBZ1VKNkFBRkplVGZXSUFBRUNCQWdRSUVDQVFMWUNBa2ky
cGRFdwpBZ1FJRUNCQWdBQUJBdVVKQ0NEbDFWU1BDQkFnUUlBQUFRSUVDR1FySUlCa1d4b05JMENB
QUFFQ0JBZ1FJRkNlZ0FCU1hrMzFpQUFCCkFnUUlFQ0JBZ0VDMkFnSkl0cVhSTUFJRUNCQWdRSUFB
QVFMbENRZ2c1ZFZVandnUUlFQ0FBQUVDQkFoa0t5Q0FaRnNhRFNOQWdBQUIKQWdRSUVDQlFub0FB
VWw1TjlZZ0FBUUlFQ0JBZ1FJQkF0Z0lDU0xhbDBUQUNCQWdRSUVDQUFBRUM1UWtJSU9YVlZJOElF
Q0JBZ0FBQgpBZ1FJWkNzZ2dHUmJHZzBqUUlBQUFRSUVDQkFnVUo2QUFGSmVUZldJQUFFQ0JBZ1FJ
RUNBUUxZQ0FraTJwZEV3QWdRSUVDQkFnQUFCCkF1VUpDQ0RsMVZTUENCQWdRSUFBQVFJRUNHUXJJ
SUJrV3hvTkkwQ0FBQUVDQkFnUUlGQ2VnQUJTWGszMWlBQUJBZ1FJRUNCQWdFQzIKQWdKSXRxWFJN
QUlFQ0JBZ1FJQUFBUUxsQ1FnZzVkVlVqd2dRSUVDQUFBRUNCQWhrS3lDQVpGc2FEU05BZ0FBQkFn
UUlFQ0JRbm9BQQpVbDVOOVlnQUFRSUVDQkFnUUlCQXRnSUNTTGFsMFRBQ0JBZ1FJRUNBQUFFQzVR
a0lJT1hWVkk4SUVDQkFnQUFCQWdRSVpDc2dnR1JiCkdnMGpRSUFBQVFJRUNCQWdVSjZBQUZKZVRm
V0lBQUVDQkFnUUlFQ0FRTFlDQWtpMnBkRXdBZ1FJRUNCQWdBQUJBdVVKQ0NEbDFWU1AKQ0JBZ1FJ
QUFBUUlFQ0dRcklJQmtXeG9OSTBDQUFBRUNCQWdRSUZDZWdBQlNYazMxaUFBQkFnUUlFQ0JBZ0VD
MkFnSkl0cVhSTUFJRQpDQkFnUUlBQUFRTGxDUWdnNWRWVWp3Z1FJRUNBQUFFQ0JBaGtLeUNBWkZz
YURTTkFnQUFCQWdRSUVDQlFub0FBVWw1TjlZZ0FBUUlFCkNCQWdRSUJBdGdJQ1NMYWwwVEFDQkFn
UUlFQ0FBQUVDNVFrSUlPWFZWSThJRUNCQWdBQUJBZ1FJWkNzZ2dHUmJHZzBqUUlBQUFRSUUKQ0JB
Z1VKNkFBRkplVGZXSUFBRUNCQWdRSUVDQVFMWUNBa2kycGRFd0FnUUlFQ0JBZ0FBQkF1VUpDQ0Rs
MVZTUENCQWdRSUFBQVFJRQpDR1FySUlCa1d4b05JMENBQUFFQ0JBZ1FJRkNlZ0FCU1hrMzFpQUFC
QWdRSUVDQkFnRUMyQWdKSXRxWFJNQUlFQ0JBZ1FJQUFBUUxsCkNRZ2c1ZFZVandnUUlFQ0FBQUVD
QkFoa0t5Q0FaRnNhRFNOQWdBQUJBZ1FJRUNCUW5vQUFVbDVOOVlnQUFRSUVDQkFnUUlCQXRnSUMK
U0xhbDBUQUNCQWdRSUVDQUFBRUM1UWtJSU9YVlZJOElFQ0JBZ0FBQkFnUUlaQ3NnZ0dSYkdnMGpR
SUFBQVFJRUNCQWdVSjZBQUZKZQpUZldJQUFFQ0JBZ1FJRUNBUUxZQ0FraTJwZEV3QWdRSUVDQkFn
QUFCQXVVSkNDRGwxVlNQQ0JBZ1FJQUFBUUlFQ0dRcklJQmtXeG9OCkkwQ0FBQUVDQkFnUUlGQ2Vn
QUJTWGszMWlBQUJBZ1FJRUNCQWdFQzJBZ0pJdHFYUk1BSUVDQkFnUUlBQUFRTGxDUWdnNWRWVWp3
Z1EKSUVDQUFBRUNCQWhrS3lDQVpGc2FEU05BZ0FBQkFnUUlFQ0JRbm9BQVVsNU45WWdBQVFJRUNC
QWdRSUJBdGdJQ1NMYWwwVEFDQkFnUQpJRUNBQUFFQzVRa0lJT1hWVkk4SUVDQkFnQUFCQWdRSVpD
c2dnR1JiR2cwalFJQUFBUUlFQ0JBZ1VKNkFBRkplVGZXSUFBRUNCQWdRCklFQ0FRTFlDQWtpMnBk
RXdBZ1FJRUNCQWdBQUJBdVVKQ0NEbDFWU1BDQkFnUUlBQUFRSUVDR1FySUlCa1d4b05JMENBQUFF
Q0JBZ1EKSUZDZWdBQlNYazMxaUFBQkFnUUlFQ0JBZ0VDMkFnSkl0cVhSTUFJRUNCQWdRSUFBQVFM
bENRZ2c1ZFZVandnUUlFQ0FBQUVDQkFoawpLeUNBWkZzYURTTkFnQUFCQWdRSUVDQlFub0FBVWw1
TjlZZ0FBUUlFQ0JBZ1FJQkF0Z0lDU0xhbDBUQUNCQWdRSUVDQUFBRUM1UWtJCklPWFZWSThJRUNC
QWdBQUJBZ1FJWkNzZ2dHUmJHZzBqUUlBQUFRSUVDQkFnVUo2QUFGSmVUZldJQUFFQ0JBZ1FJRUNB
UUxZQ0FraTIKcGRFd0FnUUlFQ0JBZ0FBQkF1VUpDQ0RsMVZTUENCQWdRSUFBQVFJRUNHUXJJSUJr
V3hvTkkwQ0FBQUVDQkFnUUlGQ2VnQUJTWGszMQppQUFCQWdRSUVDQkFnRUMyQWdKSXRxWFJNQUlF
Q0JBZ1FJQUFBUUxsQ1FnZzVkVlVqd2dRSUVDQUFBRUNCQWhrS3lDQVpGc2FEU05BCmdBQUJBZ1FJ
RUNCUW5vQUFVbDVOOVlnQUFRSUVDQkFnUUlCQXRnSUNTTGFsMFRBQ0JBZ1FJRUNBQUFFQzVRa0lJ
T1hWVkk4SUVDQkEKZ0FBQkFnUUlaQ3NnZ0dSYkdnMGpRSUFBQVFJRUNCQWdVSjZBQUZKZVRmV0lB
QUVDQkFnUUlFQ0FRTFlDQWtpMnBkRXdBZ1FJRUNCQQpnQUFCQXVVSkNDRGwxVlNQQ0JBZ1FJQUFB
UUlFQ0dRcklJQmtXeG9OSTBDQUFBRUNCQWdRSUZDZWdBQlNYazMxaUFBQkFnUUlFQ0JBCmdFQzJB
Z0pJdHFYUk1BSUVDQkFnUUlBQUFRTGxDUWdnNWRWVWp3Z1FJRUNBQUFFQ0JBaGtLeUNBWkZzYURT
TkFnQUFCQWdRSUVDQlEKbm9BQVVsNU45WWdBQVFJRUNCQWdRSUJBdGdJQ1NMYWwwVEFDQkFnUUlF
Q0FBQUVDNVFrSUlPWFZWSThJRUNCQWdBQUJBZ1FJWkNzZwpnR1JiR2cwalFJQUFBUUlFQ0JBZ1VK
NkFBRkplVGZXSUFBRUNCQWdRSUVDQVFMWUNBa2kycGRFd0FnUUlFQ0JBZ0FBQkF1VUpDQ0RsCjFW
U1BDQkFnUUlBQUFRSUVDR1FySUlCa1d4b05JMENBQUFFQ0JBZ1FJRkNlZ0FCU1hrMzFpQUFCQWdR
SUVDQkFnRUMyQWdKSXRxWFIKTUFJRUNCQWdRSUFBQVFMbENRZ2c1ZFZVandnUUlFQ0FBQUVDQkFo
a0t5Q0FaRnNhRFNOQWdBQUJBZ1FJRUNCUW5vQUFVbDVOOVlnQQpBUUlFQ0JBZ1FJQkF0Z0lDU0xh
bDBUQUNCQWdRSUVDQUFBRUM1UWtJSU9YVlZJOElFQ0JBZ0FBQkFnUUlaQ3NnZ0dSYkdnMGpRSUFB
CkFRSUVDQkFnVUo2QUFGSmVUZldJQUFFQ0JBZ1FJRUNBUUxZQ0FraTJwZEV3QWdRSUVDQkFnQUFC
QXVVSkNDRGwxVlNQQ0JBZ1FJQUEKQVFJRUNHUXJJSUJrV3hvTkkwQ0FBQUVDQkFnUUlGQ2VnQUJT
WGszMWlBQUJBZ1FJRUNCQWdFQzJBZ0pJdHFYUk1BSUVDQkFnUUlBQQpBUUxsQ1FnZzVkVlVqd2dR
SUVDQUFBRUNCQWhrS3lDQVpGc2FEU05BZ0FBQkFnUUlFQ0JRbm9BQVVsNU45WWdBQVFJRUNCQWdR
SUJBCnRnSUNTTGFsMFRBQ0JBZ1FJRUNBQUFFQzVRa0lJT1hWVkk4SUVDQkFnQUFCQWdRSVpDc2dn
R1JiR2cwalFJQUFBUUlFQ0JBZ1VKNkEKQUZKZVRmV0lBQUVDQkFnUUlFQ0FRTFlDQWtpMnBkRXdB
Z1FJRUNCQWdBQUJBdVVKQ0NEbDFWU1BDQkFnUUlBQUFRSUVDR1FySUlCawpXeG9OSTBDQUFBRUNC
QWdRSUZDZWdBQlNYazMxaUFBQkFnUUlFQ0JBZ0VDMkFnSkl0cVhSTUFJRUNCQWdRSUFBQVFMbENR
Z2c1ZFZVCmp3Z1FJRUNBQUFFQ0JBaGtLeUNBWkZzYURTTkFnQUFCQWdRSUVDQlFub0FBVWw1TjlZ
Z0FBUUlFQ0JBZ1FJQkF0Z0lDU0xhbDBUQUMKQkFnUUlFQ0FBQUVDNVFrSUlPWFZWSThJRUNCQWdB
QUJBZ1FJWkNzZ2dHUmJHZzBqUUlBQUFRSUVDQkFnVUo2QUFGSmVUZldJQUFFQwpCQWdRSUVDQVFM
WUNBa2kycGRFd0FnUUlFQ0JBZ0FBQkF1VUpDQ0RsMVZTUENCQWdRSUFBQVFJRUNHUXJJSUJrV3hv
TkkwQ0FBQUVDCkJBZ1FJRkNlZ0FCU1hrMzFpQUFCQWdRSUVDQkFnRUMyQWdKSXRxWFJNQUlFQ0JB
Z1FJQUFBUUxsQ1FnZzVkVlVqd2dRSUVDQUFBRUMKQkFoa0t5Q0FaRnNhRFNOQWdBQUJBZ1FJRUNC
UW5vQUFVbDVOOVlnQUFRSUVDQkFnUUlCQXRnSUNTTGFsMFRBQ0JBZ1FJRUNBQUFFQwo1UWtJSU9Y
VlZJOElFQ0JBZ0FBQkFnUUlaQ3NnZ0dSYkdnMGpRSUFBQVFJRUNCQWdVSjZBQUZKZVRmV0lBQUVD
QkFnUUlFQ0FRTFlDCkFraTJwZEV3QWdRSUVDQkFnQUFCQXVVSkNDRGwxVlNQQ0JBZ1FJQUFBUUlF
Q0dRcklJQmtXeG9OSTBDQUFBRUNCQWdRSUZDZWdBQlMKWGszMWlBQUJBZ1FJRUNCQWdFQzJBZ0pJ
dHFYUk1BSUVDQkFnUUlBQUFRTGxDUWdnNWRWVWp3Z1FJRUNBQUFFQ0JBaGtLeUNBWkZzYQpEU05B
Z0FBQkFnUUlFQ0JRbm9BQVVsNU45WWdBQVFJRUNCQWdRSUJBdGdJQ1NMYWwwVEFDQkFnUUlFQ0FB
QUVDNVFrSUlPWFZWSThJCkVDQkFnQUFCQWdRSVpDc2dnR1JiR2cwalFJQUFBUUlFQ0JBZ1VKNkFB
RkplVGZXSUFBRUNCQWdRSUVDQVFMWUNBa2kycGRFd0FnUUkKRUNCQWdBQUJBdVVKQ0NEbDFWU1BD
QkFnUUlBQUFRSUVDR1FySUlCa1d4b05JMENBQUFFQ0JBZ1FJRkNlZ0FCU1hrMzFpQUFCQWdRSQpF
Q0JBZ0VDMkFnSkl0cVhSTUFJRUNCQWdRSUFBQVFMbENRZ2c1ZFZVandnUUlFQ0FBQUVDQkFoa0t5
Q0FaRnNhRFNOQWdBQUJBZ1FJCkVDQlFub0FBVWw1TjlZZ0FBUUlFQ0JBZ1FJQkF0Z0lDU0xhbDBU
QUNCQWdRSUVDQUFBRUM1UWtJSU9YVlZJOElFQ0JBZ0FBQkFnUUkKWkNzZ2dHUmJHZzBqUUlBQUFR
SUVDQkFnVUo2QUFGSmVUZldJQUFFQ0JBZ1FJRUNBUUxZQ0FraTJwZEV3QWdRSUVDQkFnQUFCQXVV
SgpDQ0RsMVZTUENCQWdRSUFBQVFJRUNHUXJJSUJrV3hvTkkwQ0FBQUVDQkFnUUlGQ2VnQUJTWGsz
MWlBQUJBZ1FJRUNCQWdFQzJBZ0pJCnRxWFJNQUlFQ0JBZ1FJQUFBUUxsQ1FnZzVkVlVqd2dRSUVD
QUFBRUNCQWhrS3lDQVpGc2FEU05BZ0FBQkFnUUlFQ0JRbm9BQVVsNU4KOVlnQUFRSUVDQkFnUUlC
QXRnSUNTTGFsMFRBQ0JBZ1FJRUNBQUFFQzVRa0lJT1hWVkk4SUVDQkFnQUFCQWdRSVpDc2dnR1Ji
R2cwagpRSUFBQVFJRUNCQWdVSjZBQUZKZVRmV0lBQUVDQkFnUUlFQ0FRTFlDQWtpMnBkRXdBZ1FJ
RUNCQWdBQUJBdVVKQ0NEbDFWU1BDQkFnClFJQUFBUUlFQ0dRcklJQmtXeG9OSTBDQUFBRUNCQWdR
SUZDZWdBQlNYazMxaUFBQkFnUUlFQ0JBZ0VDMkFnSkl0cVhSTUFJRUNCQWcKUUlBQUFRTGxDUWdn
NWRWVWp3Z1FJRUNBQUFFQ0JBaGtLeUNBWkZzYURTTkFnQUFCQWdRSUVDQlFub0FBVWw1TjlZZ0FB
UUlFQ0JBZwpRSUJBdGdJQ1NMYWwwVEFDQkFnUUlFQ0FBQUVDNVFrSUlPWFZWSThJRUNCQWdBQUJB
Z1FJWkNzZ2dHUmJHZzBqUUlBQUFRSUVDQkFnClVKNkFBRkplVGZXSUFBRUNCQWdRSUVDQVFMWUNB
a2kycGRFd0FnUUlFQ0JBZ0FBQkF1VUpDQ0RsMVZTUENCQWdRSUFBQVFJRUNHUXIKSUlCa1d4b05J
MENBQUFFQ0JBZ1FJRkNlZ0FCU1hrMzFpQUFCQWdRSUVDQkFnRUMyQWdKSXRxWFJNQUlFQ0JBZ1FJ
QUFBUUxsQ1FnZwo1ZFZVandnUUlFQ0FBQUVDQkFoa0t5Q0FaRnNhRFNOQWdBQUJBZ1FJRUNCUW5v
QUFVbDVOOVlnQUFRSUVDQkFnUUlCQXRnSUNTTGFsCjBUQUNCQWdRSUVDQUFBRUM1UWtJSU9YVlZJ
OElFQ0JBZ0FBQkFnUUlaQ3NnZ0dSYkdnMGpRSUFBQVFJRUNCQWdVSjZBQUZKZVRmV0kKQUFFQ0JB
Z1FJRUNBUUxZQ0FraTJwZEV3QWdRSUVDQkFnQUFCQXVVSkNDRGwxVlNQQ0JBZ1FJQUFBUUlFQ0dR
cklJQmtXeG9OSTBDQQpBQUVDQkFnUUlGQ2VnQUJTWGszMWlBQUJBZ1FJRUNCQWdFQzJBZ0pJdHFY
Uk1BSUVDQkFnUUlBQUFRTGxDUWdnNWRWVWp3Z1FJRUNBCkFBRUNCQWhrS3lDQVpGc2FEU05BZ0FB
QkFnUUlFQ0JRbm9BQVVsNU45WWdBQVFJRUNCQWdRSUJBdGdJQ1NMYWwwVEFDQkFnUUlFQ0EKQUFF
QzVRa0lJT1hWVkk4SUVDQkFnQUFCQWdRSVpDc2dnR1JiR2cwalFJQUFBUUlFQ0JBZ1VKNkFBRkpl
VGZXSUFBRUNCQWdRSUVDQQpRTFlDQWtpMnBkRXdBZ1FJRUNCQWdBQUJBdVVKQ0NEbDFWU1BDQkFn
UUlBQUFRSUVDR1FySUlCa1d4b05JMENBQUFFQ0JBZ1FJRkNlCmdBQlNYazMxaUFBQkFnUUlFQ0JB
Z0VDMkFnSkl0cVhSTUFJRUNCQWdRSUFBQVFMbENRZ2c1ZFZVandnUUlFQ0FBQUVDQkFoa0t5Q0EK
WkZzYURTTkFnQUFCQWdRSUVDQlFub0FBVWw1TjlZZ0FBUUlFQ0JBZ1FJQkF0Z0lDU0xhbDBUQUNC
QWdRSUVDQUFBRUM1UWtJSU9YVgpWSThJRUNCQWdBQUJBZ1FJWkNzZ2dHUmJHZzBqUUlBQUFRSUVD
QkFnVUo2QUFGSmVUZldJQUFFQ0JBZ1FJRUNBUUxZQ0FraTJwZEV3CkFnUUlFQ0JBZ0FBQkF1VUpD
Q0RsMVZTUENCQWdRSUFBQVFJRUNHUXJJSUJrV3hvTkkwQ0FBQUVDQkFnUUlGQ2VnQUJTWGszMWlB
QUIKQWdRSUVDQkFnRUMyQWdKSXRxWFJNQUlFQ0JBZ1FJQUFBUUxsQ1FnZzVkVlVqd2dRSUVDQUFB
RUNCQWhrS3lDQVpGc2FEU05BZ0FBQgpBZ1FJRUNCUW5vQUFVbDVOOVlnQUFRSUVDQkFnUUlCQXRn
SUNTTGFsMFRBQ0JBZ1FJRUNBQUFFQzVRa0lJT1hWVkk4SUVDQkFnQUFCCkFnUUlaQ3NnZ0dSYkdn
MGpRSUFBQVFJRUNCQWdVSjZBQUZKZVRmV0lBQUVDQkFnUUlFQ0FRTFlDQWtpMnBkRXdBZ1FJRUNC
QWdBQUIKQXVVSkNDRGwxVlNQQ0JBZ1FJQUFBUUlFQ0dRcklJQmtXeG9OSTBDQUFBRUNCQWdRSUZD
ZWdBQlNYazMxaUFBQkFnUUlFQ0JBZ0VDMgpBZ0pJdHFYUk1BSUVDQkFnUUlBQUFRTGxDUWdnNWRW
VWp3Z1FJRUNBQUFFQ0JBaGtLeUNBWkZzYURTTkFnQUFCQWdRSUVDQlFub0FBClVsNU45WWdBQVFJ
RUNCQWdRSUJBdGdJQ1NMYWwwVEFDQkFnUUlFQ0FBQUVDNVFrSUlPWFZWSThJRUNCQWdBQUJBZ1FJ
WkNzZ2dHUmIKR2cwalFJQUFBUUlFQ0JBZ1VKNkFBRkplVGZXSUFBRUNCQWdRSUVDQVFMWUNBa2ky
cGRFd0FnUUlFQ0JBZ0FBQkF1VUpDQ0RsMVZTUApDQkFnUUlBQUFRSUVDR1FySUlCa1d4b05JMENB
QUFFQ0JBZ1FJRkNlZ0FCU1hrMzFpQUFCQWdRSUVDQkFnRUMyQWdKSXRxWFJNQUlFCkNCQWdRSUFB
QVFMbENRZ2c1ZFZVandnUUlFQ0FBQUVDQkFoa0t5Q0FaRnNhRFNOQWdBQUJBZ1FJRUNCUW5vQUFV
bDVOOVlnQUFRSUUKQ0JBZ1FJQkF0Z0lDU0xhbDBUQUNCQWdRSUVDQUFBRUM1UWtJSU9YVlZJOElF
Q0JBZ0FBQkFnUUlaQ3NnZ0dSYkdnMGpRSUFBQVFJRQpDQkFnVUo2QUFGSmVUZldJQUFFQ0JBZ1FJ
RUNBUUxZQ0FraTJwZEV3QWdRSUVDQkFnQUFCQXVVSkNDRGwxVlNQQ0JBZ1FJQUFBUUlFCkNHUXJJ
SUJrV3hvTkkwQ0FBQUVDQkFnUUlGQ2VnQUJTWGszMWlBQUJBZ1FJRUNCQWdFQzJBZ0pJdHFYUk1B
SUVDQkFnUUlBQUFRTGwKQ1FnZzVkVlVqd2dRSUVDQUFBRUNCQWhrS3lDQVpGc2FEU05BZ0FBQkFn
UUlFQ0JRbm9BQVVsNU45WWdBQVFJRUNCQWdRSUJBdGdJQwpTTGFsMFRBQ0JBZ1FJRUNBQUFFQzVR
a0lJT1hWVkk4SUVDQkFnQUFCQWdRSVpDc2dnR1JiR2cwalFJQUFBUUlFQ0JBZ1VKNkFBRkplClRm
V0lBQUVDQkFnUUlFQ0FRTFlDQWtpMnBkRXdBZ1FJRUNCQWdBQUJBdVVKQ0NEbDFWU1BDQkFnUUlB
QUFRSUVDR1FySUlCa1d4b04KSTBDQUFBRUNCQWdRSUZDZWdBQlNYazMxaUFBQkFnUUlFQ0JBZ0VD
MkFnSkl0cVhSTUFJRUNCQWdRSUFBQVFMbENRZ2c1ZFZVandnUQpJRUNBQUFFQ0JBaGtLeUNBWkZz
YURTTkFnQUFCQWdRSUVDQlFub0FBVWw1TjlZZ0FBUUlFQ0JBZ1FJQkF0Z0lDU0xhbDBUQUNCQWdR
CklFQ0FBQUVDNVFrSUlPWFZWSThJRUNCQWdBQUJBZ1FJWkNzZ2dHUmJHZzBqUUlBQUFRSUVDQkFn
VUo2QUFGSmVUZldJQUFFQ0JBZ1EKSUVDQVFMWUNBa2kycGRFd0FnUUlFQ0JBZ0FBQkF1VUpDQ0Rs
MVZTUENCQWdRSUFBQVFJRUNHUXJJSUJrV3hvTkkwQ0FBQUVDQkFnUQpJRkNlZ0FCU1hrMzFpQUFC
QWdRSUVDQkFnRUMyQWdKSXRxWFJNQUlFQ0JBZ1FJQUFBUUxsQ1FnZzVkVlVqd2dRSUVDQUFBRUNC
QWhrCkt5Q0FaRnNhRFNOQWdBQUJBZ1FJRUNCUW5vQUFVbDVOOVlnQUFRSUVDQkFnUUlCQXRnSUNT
TGFsMFRBQ0JBZ1FJRUNBQUFFQzVRa0kKSU9YVlZJOElFQ0JBZ0FBQkFnUUlaQ3NnZ0dSYkdnMGpR
SUFBQVFJRUNCQWdVSjZBQUZKZVRmV0lBQUVDQkFnUUlFQ0FRTFlDQWtpMgpwZEV3QWdRSUVDQkFn
QUFCQXVVSkNDRGwxVlNQQ0JBZ1FJQUFBUUlFQ0dRcklJQmtXeG9OSTBDQUFBRUNCQWdRSUZDZWdB
QlNYazMxCmlBQUJBZ1FJRUNCQWdFQzJBZ0pJdHFYUk1BSUVDQkFnUUlBQUFRTGxDUWdnNWRWVWp3
Z1FJRUNBQUFFQ0JBaGtLeUNBWkZzYURTTkEKZ0FBQkFnUUlFQ0JRbm9BQVVsNU45WWdBQVFJRUNC
QWdRSUJBdGdJQ1NMYWwwVEFDQkFnUUlFQ0FBQUVDNVFrSUlPWFZWSThJRUNCQQpnQUFCQWdRSVpD
c2dnR1JiR2cwalFJQUFBUUlFQ0JBZ1VKNkFBRkplVGZXSUFBRUNCQWdRSUVDQVFMWUNBa2kycGRF
d0FnUUlFQ0JBCmdBQUJBdVVKQ0NEbDFWU1BDQkFnUUlBQUFRSUVDR1FySUlCa1d4b05JMENBQUFF
Q0JBZ1FJRkNlZ0FCU1hrMzFpQUFCQWdRSUVDQkEKZ0VDMkFnSkl0cVhSTUFJRUNCQWdRSUFBQVFM
bENRZ2c1ZFZVandnUUlFQ0FBQUVDQkFoa0t5Q0FaRnNhRFNOQWdBQUJBZ1FJRUNCUQpub0FBVWw1
TjlZZ0FBUUlFQ0JBZ1FJQkF0Z0lDU0xhbDBUQUNCQWdRSUVDQUFBRUM1UWtJSU9YVlZJOElFQ0JB
Z0FBQkFnUUlaQ3NnCmdHUmJHZzBqUUlBQUFRSUVDQkFnVUo2QUFGSmVUZldJQUFFQ0JBZ1FJRUNB
UUxZQ0FraTJwZEV3QWdRSUVDQkFnQUFCQXVVSkNDRGwKMVZTUENCQWdRSUFBQVFJRUNHUXJJSUJr
V3hvTkkwQ0FBQUVDQkFnUUlGQ2VnQUJTWGszMWlBQUJBZ1FJRUNCQWdFQzJBZ0pJdHFYUgpNQUlF
Q0JBZ1FJQUFBUUxsQ1FnZzVkVlVqd2dRSUVDQUFBRUNCQWhrS3lDQVpGc2FEU05BZ0FBQkFnUUlF
Q0JRbm9BQVVsNU45WWdBCkFRSUVDQkFnUUlCQXRnSUNTTGFsMFRBQ0JBZ1FJRUNBQUFFQzVRa0lJ
T1hWVkk4SUVDQkFnQUFCQWdRSVpDc2dnR1JiR2cwalFJQUEKQVFJRUNCQWdVSjdBL3djNmtZV0Nt
d2l4cVFBQUFBQkpSVTVFcmtKZ2dnPT0KCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84819</attachid>
            <date>2011-03-04 15:55:34 -0800</date>
            <delta_ts>2011-03-08 18:13:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53409-20110304155533.patch</filename>
            <type>text/plain</type>
            <size>14618</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwMzgxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDMtMDQgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluc2VydFVub3JkZXJlZExpc3Qgb3ZlciBhIG5vbi1lZGl0
YWJsZSByZWdpb24gYW5kIG11bHRpcGxlIGxpbmVzIGVudGVycyBhbiBpbmZpbml0ZSBsb29wCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzQwOQorCisg
ICAgICAgIEZpeGluZyBicm9rZW4gaGFuZGxpbmcgb2YgbWl4ZWQtZWRpdGFiaWxpdHkgY29udGVu
dCBmb3IgSW5zZXJ0TGlzdENvbW1hbmQuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9leGVjQ29t
bWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQuaHRtbAorCisgICAgICAg
ICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6Y2xlYW51cEFmdGVyRGVsZXRpb24pOiBDaGFuZ2VkIHNpZ25h
dHVyZSB0byB0YWtlIHRoZSBkZXN0aW5hdGlvbgorICAgICAgICBwb3NpdGlvbiBmb3IgdGhlIGFj
dGl2ZSBlZGl0aW5nIGNvbW1hbmQuIFdpdGhvdXQgdGhpcywgdGhlcmUgYXJlIGNhc2VzIHdoZW4g
dGhlIGRlc3RpbmF0aW9uIGhhcHBlbnMKKyAgICAgICAgdG8gYmUgYSBwbGFjZWhvbGRlciwgYW5k
IHdlIHJlbW92ZSBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpt
b3ZlUGFyYWdyYXBocyk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5o
OgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHkpOiBBZGRlZCBsb2dpYyB0byB0aGUgcGFy
YWdyYXBoIGl0ZXJhdGlvbiBsb29wIHRvIGhhbmRsZSBwb2NrZXRzIG9mCisgICAgICAgIG5vbi1l
ZGl0YWJsZSBjb250ZW50IGluIGFuIGVkaXRhYmxlIGNvbnRleHQuIFByZXZpb3VzbHksIHRoaXMg
Y291bGQgY2F1c2UgYW4gaW5maW5pdGUgbG9vcC4KKyAgICAgICAgKFdlYkNvcmU6Okluc2VydExp
c3RDb21tYW5kOjpsaXN0aWZ5UGFyYWdyYXBoKTogUmVtb3ZlZCBtYWdpYyB2YWx1ZSBmb3IgcHJl
c2VydmVTZWxlY3Rpb24gd2l0aCBhIG5hbWVkCisgICAgICAgIGJvb2xlYW4gYW5kIGFkZGVkIGFu
IGV4cGxpY2l0IGxheW91dCB0byBmaXggYSBjYXNlIHdoZXJlIGNhbGxpbmcgc3RhcnRPZlBhcmFn
cmFwaAorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2hvdWxkU2tpcFBhcmFncmFwaEZvckl0ZXJhdGlvbik6IFdoZW4gaXRlcmF0aW5nIG92ZXIg
cGFyYWdyYXBocyB3aXRoIG1peGVkIGVkaXRhYmlsaXR5CisgICAgICAgIGNvbnRlbnQgZm9yIGVk
aXRpbmcgY29tbWFuZHMsIHRoZXJlIGFyZSBzcGVjaWFsIGNhc2VzIChlLmcuIHRoZSBib3VuZGFy
eSBiZXR3ZWVuIHR3byBub24tZWRpdGFibGUgc3BhbnMpCisgICAgICAgIHRoYXQgc2hvdWxkbid0
IGJlIHRyZWF0ZWQgYXMgYSBwYXJhZ3JhcGguCisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGlu
Zy5oOgorICAgICAgICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzdGFydE9mUGFyYWdyYXBoKTogQWRkZWQgYSBtb2RlIG9mIG9wZXJhdGlvbiB3aGVyZSB3
ZSdsbCBqdW1wIGFjcm9zcyBub24tZWRpdGFibGUKKyAgICAgICAgY29udGVudCBpbiB0aGUgc2Ft
ZSBwYXJhZ3JhcGggdG8gcmVhY2ggdGhlIGFjdHVhbCBlZGl0YWJsZSBwYXJhZ3JhcGggc3RhcnQu
CisgICAgICAgIChXZWJDb3JlOjplbmRPZlBhcmFncmFwaCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6c3RhcnRPZk5leHRQYXJhZ3JhcGgpOiBOb3cgdXNlcyB0aGUgYWZvcmVtZW50aW9uZWQg
bm9uLWVkaXRhYmxlIGNvbnRlbnQgc2tpcHBpbmcgbW9kZSBvZgorICAgICAgICBlbmRPZlBhcmFn
cmFwaC4KKwogMjAxMS0wMy0wNCAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDgwMjY3KQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgyNSwxMCArODI1LDEwIEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6
OmNsb25lUGFyYWdyYXAKIC8vIERlbGV0aW5nIGEgcGFyYWdyYXBoIHdpbGwgbGVhdmUgYSBwbGFj
ZWhvbGRlci4gUmVtb3ZlIGl0IChhbmQgcHJ1bmUKIC8vIGVtcHR5IG9yIHVucmVuZGVyZWQgcGFy
ZW50cykuCiAKLXZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmNsZWFudXBBZnRlckRlbGV0aW9u
KCkKK3ZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmNsZWFudXBBZnRlckRlbGV0aW9uKFZpc2li
bGVQb3NpdGlvbiBkZXN0aW5hdGlvbikKIHsKICAgICBWaXNpYmxlUG9zaXRpb24gY2FyZXRBZnRl
ckRlbGV0ZSA9IGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpOwotICAgIGlmIChpc1N0
YXJ0T2ZQYXJhZ3JhcGgoY2FyZXRBZnRlckRlbGV0ZSkgJiYgaXNFbmRPZlBhcmFncmFwaChjYXJl
dEFmdGVyRGVsZXRlKSkgeworICAgIGlmIChjYXJldEFmdGVyRGVsZXRlICE9IGRlc3RpbmF0aW9u
ICYmIGlzU3RhcnRPZlBhcmFncmFwaChjYXJldEFmdGVyRGVsZXRlKSAmJiBpc0VuZE9mUGFyYWdy
YXBoKGNhcmV0QWZ0ZXJEZWxldGUpKSB7CiAgICAgICAgIC8vIE5vdGU6IFdlIHdhbnQgdGhlIHJp
Z2h0bW9zdCBjYW5kaWRhdGUuCiAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gY2FyZXRBZnRl
ckRlbGV0ZS5kZWVwRXF1aXZhbGVudCgpLmRvd25zdHJlYW0oKTsKICAgICAgICAgTm9kZSogbm9k
ZSA9IHBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCk7CkBAIC05NDIsOCArOTQyLDkgQEAgdm9pZCBD
b21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaAogICAgICAgICB9CiAgICAgfQogICAg
IAotICAgIFZpc2libGVQb3NpdGlvbiBiZWZvcmVQYXJhZ3JhcGggPSBzdGFydE9mUGFyYWdyYXBo
VG9Nb3ZlLnByZXZpb3VzKCk7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIGFmdGVyUGFyYWdyYXBoKGVu
ZE9mUGFyYWdyYXBoVG9Nb3ZlLm5leHQoKSk7CisgICAgYm9vbCBzdGF5SW5FZGl0YWJsZUNvbnRl
bnQgPSB0cnVlOworICAgIFZpc2libGVQb3NpdGlvbiBiZWZvcmVQYXJhZ3JhcGggPSBzdGFydE9m
UGFyYWdyYXBoVG9Nb3ZlLnByZXZpb3VzKHN0YXlJbkVkaXRhYmxlQ29udGVudCk7CisgICAgVmlz
aWJsZVBvc2l0aW9uIGFmdGVyUGFyYWdyYXBoKGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLm5leHQoc3Rh
eUluRWRpdGFibGVDb250ZW50KSk7CiAKICAgICAvLyBXZSB1cHN0cmVhbSgpIHRoZSBlbmQgYW5k
IGRvd25zdHJlYW0oKSB0aGUgc3RhcnQgc28gdGhhdCB3ZSBkb24ndCBpbmNsdWRlIGNvbGxhcHNl
ZCB3aGl0ZXNwYWNlIGluIHRoZSBtb3ZlLgogICAgIC8vIFdoZW4gd2UgcGFzdGUgYSBmcmFnbWVu
dCwgc3BhY2VzIGFmdGVyIHRoZSBlbmQgYW5kIGJlZm9yZSB0aGUgc3RhcnQgYXJlIHRyZWF0ZWQg
YXMgdGhvdWdoIHRoZXkgd2VyZSByZW5kZXJlZC4KQEAgLTk4MCw4ICs5ODEsNyBAQCB2b2lkIENv
bXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAgICAgZGVsZXRlU2VsZWN0aW9uKGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKIAogICAgIEFTU0VSVChkZXN0aW5hdGlvbi5kZWVw
RXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKS0+aW5Eb2N1bWVudCgpKTsKLQotICAgIGNsZWFudXBB
ZnRlckRlbGV0aW9uKCk7CisgICAgY2xlYW51cEFmdGVyRGVsZXRpb24oZGVzdGluYXRpb24pOwog
ICAgIEFTU0VSVChkZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKS0+aW5E
b2N1bWVudCgpKTsKIAogICAgIC8vIEFkZCBhIGJyIGlmIHBydW5pbmcgYW4gZW1wdHkgYmxvY2sg
bGV2ZWwgZWxlbWVudCBjYXVzZWQgYSBjb2xsYXBzZS4gRm9yIGV4YW1wbGU6CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCShyZXZpc2lvbiA4
MDI2NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIG1v
dmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlv
biYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGJvb2wgcHJlc2VydmVTZWxlY3Rpb24gPSBmYWxz
ZSwgYm9vbCBwcmVzZXJ2ZVN0eWxlID0gdHJ1ZSk7CiAgICAgdm9pZCBtb3ZlUGFyYWdyYXBoV2l0
aENsb25lcyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUsIGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgZW5kT2ZQYXJhZ3JhcGhUb01vdmUsIEVsZW1lbnQqIGJsb2Nr
RWxlbWVudCwgTm9kZSogb3V0ZXJOb2RlKTsKICAgICB2b2lkIGNsb25lUGFyYWdyYXBoVW5kZXJO
ZXdFbGVtZW50KFBvc2l0aW9uJiBzdGFydCwgUG9zaXRpb24mIGVuZCwgTm9kZSogb3V0ZXJOb2Rl
LCBFbGVtZW50KiBibG9ja0VsZW1lbnQpOwotICAgIHZvaWQgY2xlYW51cEFmdGVyRGVsZXRpb24o
KTsKKyAgICB2b2lkIGNsZWFudXBBZnRlckRlbGV0aW9uKFZpc2libGVQb3NpdGlvbiBkZXN0aW5h
dGlvbiA9IFZpc2libGVQb3NpdGlvbigpKTsKICAgICAKICAgICBib29sIGJyZWFrT3V0T2ZFbXB0
eUxpc3RJdGVtKCk7CiAgICAgYm9vbCBicmVha091dE9mRW1wdHlNYWlsQmxvY2txdW90ZWRQYXJh
Z3JhcGgoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1h
bmQuY3BwCShyZXZpc2lvbiA4MDI2NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0
TGlzdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNyArMTcyLDEzIEBAIHZvaWQg
SW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICAgICAgICAgIGlmIChzdGFydE9m
Q3VycmVudFBhcmFncmFwaCA9PSBzdGFydE9mU2VsZWN0aW9uKQogICAgICAgICAgICAgICAgICAg
ICBzdGFydE9mU2VsZWN0aW9uID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCk7CiAK
LSAgICAgICAgICAgICAgICBzdGFydE9mQ3VycmVudFBhcmFncmFwaCA9IHN0YXJ0T2ZOZXh0UGFy
YWdyYXBoKGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpKTsKKyAgICAgICAgICAgICAg
ICBWaXNpYmxlUG9zaXRpb24gbmV4dFN0YXJ0KHN0YXJ0T2ZOZXh0UGFyYWdyYXBoKGVuZGluZ1Nl
bGVjdGlvbigpLnZpc2libGVTdGFydCgpKSk7CisgICAgICAgICAgICAgICAgd2hpbGUgKG5leHRT
dGFydC5pc05vdE51bGwoKSAmJiBuZXh0U3RhcnQgIT0gc3RhcnRPZkxhc3RQYXJhZ3JhcGggJiYg
c2hvdWxkU2tpcFBhcmFncmFwaEZvckl0ZXJhdGlvbihuZXh0U3RhcnQpKQorICAgICAgICAgICAg
ICAgICAgICBuZXh0U3RhcnQgPSBzdGFydE9mTmV4dFBhcmFncmFwaChuZXh0U3RhcnQpOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChzdGFydE9mQ3VycmVudFBhcmFncmFw
aCA9PSBuZXh0U3RhcnQpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBoID0gbmV4dFN0YXJ0OwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKGVuZE9mU2VsZWN0aW9uKTsKICAgICAgICAg
ICAgIGRvQXBwbHlGb3JTaW5nbGVQYXJhZ3JhcGgoZm9yY2VDcmVhdGVMaXN0LCBsaXN0VGFnLCBj
dXJyZW50U2VsZWN0aW9uLmdldCgpKTsKQEAgLTM3NSwxMSArMzgxLDE2IEBAIFBhc3NSZWZQdHI8
SFRNTEVsZW1lbnQ+IEluc2VydExpc3RDb21tYW4KIAogICAgICAgICAvLyBXZSBpbnNlcnRlZCB0
aGUgbGlzdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGNvbnRlbnQgd2UncmUgYWJvdXQgdG8gbW92ZQog
ICAgICAgICAvLyBVcGRhdGUgdGhlIHN0YXJ0IG9mIGNvbnRlbnQsIHNvIHdlIGRvbid0IHRyeSB0
byBtb3ZlIHRoZSBsaXN0IGludG8gaXRzZWxmLiAgYnVnIDE5MDY2Ci0gICAgICAgIGlmIChpbnNl
cnRpb25Qb3MgPT0gc3RhcnQuZGVlcEVxdWl2YWxlbnQoKSkKKyAgICAgICAgLy8gTGF5b3V0IGlz
IG5lY2Vzc2FyeSBzaW5jZSBzdGFydCdzIG5vZGUncyBpbmxpbmUgcmVuZGVyZXJzIG1heSBoYXZl
IGJlZW4gZGVzdHJveWVkIGJ5CisgICAgICAgIC8vIHRoZSBpbnNlcnRpb24uCisgICAgICAgIGlm
IChpbnNlcnRpb25Qb3MgPT0gc3RhcnQuZGVlcEVxdWl2YWxlbnQoKSkgeworICAgICAgICAgICAg
bGlzdEVsZW1lbnQtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0cygpOwogICAgICAgICAgICAgc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKG9yaWdpbmFsU3Rh
cnQpOworICAgICAgICB9CiAgICAgfQogCi0gICAgbW92ZVBhcmFncmFwaChzdGFydCwgZW5kLCBw
b3NpdGlvbkJlZm9yZU5vZGUocGxhY2Vob2xkZXIuZ2V0KCkpLCB0cnVlKTsKKyAgICBib29sIHBy
ZXNlcnZlU2VsZWN0aW9uID0gdHJ1ZTsKKyAgICBtb3ZlUGFyYWdyYXBoKHN0YXJ0LCBlbmQsIHBv
c2l0aW9uQmVmb3JlTm9kZShwbGFjZWhvbGRlci5nZXQoKSksIHByZXNlcnZlU2VsZWN0aW9uKTsK
IAogICAgIGlmIChsaXN0RWxlbWVudCkKICAgICAgICAgcmV0dXJuIG1lcmdlV2l0aE5laWdoYm9y
aW5nTGlzdHMobGlzdEVsZW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1s
ZWRpdGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRp
dGluZy5jcHAJKHJldmlzaW9uIDgwMjY3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1s
ZWRpdGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMDEsNiArMTAwMSwxNCBAQCBib29sIGxp
bmVCcmVha0V4aXN0c0F0UG9zaXRpb24oY29uc3QgUG9zCiAgICAgcmV0dXJuIG9mZnNldCA8IHRl
eHROb2RlLT5sZW5ndGgoKSAmJiB0ZXh0Tm9kZS0+ZGF0YSgpW29mZnNldF0gPT0gJ1xuJzsKIH0K
IAorYm9vbCBzaG91bGRTa2lwUGFyYWdyYXBoRm9ySXRlcmF0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgcGFyYWdyYXBoU3RhcnQpCit7CisgICAgQVNTRVJUKHBhcmFncmFwaFN0YXJ0LmlzTm90
TnVsbCgpKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gcGFyYWdyYXBoRW5kID0gZW5kT2ZQYXJhZ3Jh
cGgocGFyYWdyYXBoU3RhcnQpOworICAgIHJldHVybiBwYXJhZ3JhcGhTdGFydCA9PSBwYXJhZ3Jh
cGhFbmQgJiYgKCFwYXJhZ3JhcGhTdGFydC5kZWVwRXF1aXZhbGVudCgpLnVwc3RyZWFtKENhbkNy
b3NzRWRpdGluZ0JvdW5kYXJ5KS5hbmNob3JOb2RlKCktPmlzQ29udGVudEVkaXRhYmxlKCkKKyAg
ICAgICAgICAgfHwgZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoRW5kLCBDYW5Dcm9zc0VkaXRpbmdC
b3VuZGFyeSkgIT0gc3RhcnRPZlBhcmFncmFwaChwYXJhZ3JhcGhTdGFydCwgQ2FuQ3Jvc3NFZGl0
aW5nQm91bmRhcnkpKTsKK30KKwogLy8gTW9kaWZpZXMgc2VsZWN0aW9ucyB0aGF0IGhhdmUgYW4g
ZW5kIHBvaW50IGF0IHRoZSBlZGdlIG9mIGEgdGFibGUKIC8vIHRoYXQgY29udGFpbnMgdGhlIG90
aGVyIGVuZHBvaW50IHNvIHRoYXQgdGhleSBkb24ndCBjb25mdXNlCiAvLyBjb2RlIHRoYXQgaXRl
cmF0ZXMgb3ZlciBzZWxlY3RlZCBwYXJhZ3JhcGhzLgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9odG1sZWRpdGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
aHRtbGVkaXRpbmcuaAkocmV2aXNpb24gODAyNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2h0bWxlZGl0aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Myw2ICsxNzMsNyBAQCBWaXNpYmxl
UG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uQmVmb3JlTm9kCiBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uQWZ0ZXJOb2RlKE5vZGUqKTsKIAogYm9vbCBsaW5lQnJlYWtFeGlzdHNBdFZpc2li
bGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKK2Jvb2wgc2hvdWxkU2tpcFBhcmFn
cmFwaEZvckl0ZXJhdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBhcmFncmFwaFN0YXJ0KTsK
ICAgICAKIGludCBjb21wYXJlUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpOwogaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3Vu
aXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5p
dHMuY3BwCShyZXZpc2lvbiA4MDI2NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJs
ZV91bml0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0NywxNCArNzQ3LDIxIEBAIFZpc2libGVQ
b3NpdGlvbiBzdGFydE9mUGFyYWdyYXBoKGNvbnN0IFYKIAogICAgIE5vZGUqIHN0YXJ0QmxvY2sg
PSBlbmNsb3NpbmdCbG9jayhzdGFydE5vZGUpOwogCi0gICAgTm9kZSAqbm9kZSA9IHN0YXJ0Tm9k
ZTsKKyAgICBOb2RlKiBub2RlID0gc3RhcnROb2RlOworICAgIE5vZGUqIGhpZ2hlc3RSb290ID0g
aGlnaGVzdEVkaXRhYmxlUm9vdChwKTsKICAgICBpbnQgb2Zmc2V0ID0gcC5kZXByZWNhdGVkRWRp
dGluZ09mZnNldCgpOwogICAgIFBvc2l0aW9uOjpBbmNob3JUeXBlIHR5cGUgPSBwLmFuY2hvclR5
cGUoKTsKIAotICAgIE5vZGUgKm4gPSBzdGFydE5vZGU7CisgICAgTm9kZSogbiA9IHN0YXJ0Tm9k
ZTsKICAgICB3aGlsZSAobikgewogICAgICAgICBpZiAoYm91bmRhcnlDcm9zc2luZ1J1bGUgPT0g
Q2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkgJiYgbi0+aXNDb250ZW50RWRpdGFibGUoKSAhPSBz
dGFydE5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgaWYgKGJvdW5kYXJ5Q3Jvc3NpbmdSdWxlID09IENhblNraXBPdmVyRWRpdGluZ0JvdW5kYXJ5
KSB7CisgICAgICAgICAgICB3aGlsZSAobiAmJiBuLT5pc0NvbnRlbnRFZGl0YWJsZSgpICE9IHN0
YXJ0Tm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSkKKyAgICAgICAgICAgICAgICBuID0gbi0+dHJh
dmVyc2VQcmV2aW91c05vZGVQb3N0T3JkZXIoc3RhcnRCbG9jayk7CisgICAgICAgICAgICBpZiAo
IW4gfHwgIW4tPmlzRGVzY2VuZGFudE9mKGhpZ2hlc3RSb290KSkKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQogICAgICAgICBSZW5kZXJPYmplY3QgKnIgPSBuLT5yZW5kZXJlcigp
OwogICAgICAgICBpZiAoIXIpIHsKICAgICAgICAgICAgIG4gPSBuLT50cmF2ZXJzZVByZXZpb3Vz
Tm9kZVBvc3RPcmRlcihzdGFydEJsb2NrKTsKQEAgLTgxMyw2ICs4MjAsNyBAQCBWaXNpYmxlUG9z
aXRpb24gZW5kT2ZQYXJhZ3JhcGgoY29uc3QgVmlzCiAgICAgTm9kZSAqc3RheUluc2lkZUJsb2Nr
ID0gc3RhcnRCbG9jazsKICAgICAKICAgICBOb2RlICpub2RlID0gc3RhcnROb2RlOworICAgIE5v
ZGUqIGhpZ2hlc3RSb290ID0gaGlnaGVzdEVkaXRhYmxlUm9vdChwKTsKICAgICBpbnQgb2Zmc2V0
ID0gcC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogICAgIFBvc2l0aW9uOjpBbmNob3JUeXBl
IHR5cGUgPSBwLmFuY2hvclR5cGUoKTsKIApAQCAtODIwLDYgKzgyOCwxMyBAQCBWaXNpYmxlUG9z
aXRpb24gZW5kT2ZQYXJhZ3JhcGgoY29uc3QgVmlzCiAgICAgd2hpbGUgKG4pIHsKICAgICAgICAg
aWYgKGJvdW5kYXJ5Q3Jvc3NpbmdSdWxlID09IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5ICYm
IG4tPmlzQ29udGVudEVkaXRhYmxlKCkgIT0gc3RhcnROb2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgp
KQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChib3VuZGFyeUNyb3NzaW5nUnVsZSA9
PSBDYW5Ta2lwT3ZlckVkaXRpbmdCb3VuZGFyeSkgeworICAgICAgICAgICAgd2hpbGUgKG4gJiYg
bi0+aXNDb250ZW50RWRpdGFibGUoKSAhPSBzdGFydE5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkp
CisgICAgICAgICAgICAgICAgbiA9IG4tPnRyYXZlcnNlTmV4dE5vZGUoc3RheUluc2lkZUJsb2Nr
KTsKKyAgICAgICAgICAgIGlmICghbiB8fCAhbi0+aXNEZXNjZW5kYW50T2YoaGlnaGVzdFJvb3Qp
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgUmVuZGVyT2Jq
ZWN0ICpyID0gbi0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKCFyKSB7CiAgICAgICAgICAgICBu
ID0gbi0+dHJhdmVyc2VOZXh0Tm9kZShzdGF5SW5zaWRlQmxvY2spOwpAQCAtODYyLDkgKzg3Nywx
MCBAQCBWaXNpYmxlUG9zaXRpb24gZW5kT2ZQYXJhZ3JhcGgoY29uc3QgVmlzCiAgICAgcmV0dXJu
IFZpc2libGVQb3NpdGlvbihQb3NpdGlvbihub2RlLCB0eXBlKSwgRE9XTlNUUkVBTSk7CiB9CiAK
Ky8vIEZJWE1FOiBpc1N0YXJ0T2ZQYXJhZ3JhcGgoc3RhcnRPZk5leHRQYXJhZ3JhcGgpIGlzIG5v
dCBhbHdheXMgdHJ1ZQogVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZOZXh0UGFyYWdyYXBoKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uKQogewotICAgIFZpc2libGVQb3NpdGlv
biBwYXJhZ3JhcGhFbmQoZW5kT2ZQYXJhZ3JhcGgodmlzaWJsZVBvc2l0aW9uKSk7CisgICAgVmlz
aWJsZVBvc2l0aW9uIHBhcmFncmFwaEVuZChlbmRPZlBhcmFncmFwaCh2aXNpYmxlUG9zaXRpb24s
IENhblNraXBPdmVyRWRpdGluZ0JvdW5kYXJ5KSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGFmdGVy
UGFyYWdyYXBoRW5kKHBhcmFncmFwaEVuZC5uZXh0KHRydWUpKTsKICAgICAvLyBUaGUgcG9zaXRp
b24gYWZ0ZXIgdGhlIGxhc3QgcG9zaXRpb24gaW4gdGhlIGxhc3QgY2VsbCBvZiBhIHRhYmxlCiAg
ICAgLy8gaXMgbm90IHRoZSBzdGFydCBvZiB0aGUgbmV4dCBwYXJhZ3JhcGguCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA4MDM4MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDExLTAzLTA0ICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbnNlcnRVbm9yZGVyZWRMaXN0IG92ZXIgYSBub24tZWRpdGFibGUgcmVnaW9uIGFuZCBtdWx0
aXBsZSBsaW5lcyBlbnRlcnMgYW4gaW5maW5pdGUgbG9vcAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM0MDkKKworICAgICAgICBBdm9pZGluZyBjcmFz
aGVzIGFuZCBpbmZpbml0ZSBsb29wcyB3aGVuIGxpc3RpZnlpbmcgY29udGVudCB3aXRoIG1peGVk
LWVkaXRhYmlsaXR5CisKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0
LXdpdGgtbm9uZWRpdGFibGUtY29udGVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qtd2l0aC1ub25lZGl0YWJsZS1jb250ZW50
Lmh0bWw6IEFkZGVkLgorCiAyMDExLTAzLTA0ICBSaWsgQ2FiYW5pZXIgIDxjYWJhbmllckBnbWFp
bC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgSHlhdHQuCkluZGV4OiBMYXlvdXRU
ZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29u
dGVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVj
Q29tbWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQt
bGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDYgQEAKK1RoaXMgdGVzdHMgbGlzdCBjcmVhdGlvbiBpbiBhbiBlZGl0YWJsZSBj
b250ZXh0IGJ1dCBhY3Jvc3Mgbm9uLWVkaXRhYmxlIGNvbnRlbnQuIEVkaXRhYmxlIGNvbnRlbnQg
c2hvdWxkIGJlIHB1bGxlZCBpbnRvIGxpc3QgaXRlbXMgd2hpbGUgbm9uLWVkaXRhYmxlIG5vZGVz
IHNob3VsZCBiZSBsZWZ0IGFsb25lLCBlbmRpbmcgdXAgYWZ0ZXIgdGhlIGNyZWF0ZWQgbGlzdC4K
K0VkaXRhYmxlIHBhcmFncmFwaCBjb250YWluaW5nIGHCoAorwqBzcGFuIGluIHRoZSBtaWRkbGUu
CivCoCDCoEFub3RoZXIgZWRpdGFibGUgcGFyYWdyYXBoLgorbm9uLWVkaXRhYmxlCitJbnNlcnQg
TGlzdApJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13
aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVudC5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNl
cnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGhpcyB0
ZXN0cyBsaXN0IGNyZWF0aW9uIGluIGFuIGVkaXRhYmxlIGNvbnRleHQgYnV0IGFjcm9zcyBub24t
ZWRpdGFibGUgY29udGVudC4gRWRpdGFibGUgY29udGVudCBzaG91bGQgYmUgcHVsbGVkIGludG8g
bGlzdCBpdGVtcyB3aGlsZSBub24tZWRpdGFibGUgbm9kZXMgc2hvdWxkIGJlIGxlZnQgYWxvbmUs
IGVuZGluZyB1cCBhZnRlciB0aGUgY3JlYXRlZCBsaXN0LjwvZGl2PgorPGRpdiBjb250ZW50ZWRp
dGFibGU9InRydWUiIGlkPSJ0ZXN0IiBzdHlsZT0icGFkZGluZzogMWVtOyI+CisgIEVkaXRhYmxl
IHBhcmFncmFwaCBjb250YWluaW5nIGEgPHNwYW4gY29udGVudGVkaXRhYmxlPSJmYWxzZSIgc3R5
bGU9ImJhY2tncm91bmQtY29sb3I6IExpZ2h0R3JheTsiPm5vbi1lZGl0YWJsZTwvc3Bhbj4gc3Bh
biBpbiB0aGUgbWlkZGxlLjxicj4KKyAgQW5vdGhlciBlZGl0YWJsZSBwYXJhZ3JhcGguCis8L2Rp
dj4KKzxidXR0b24gb25jbGljaz0iaW5zZXJ0TGlzdCgpOyI+SW5zZXJ0IExpc3Q8L2J1dHRvbj4K
KzxzY3JpcHQ+CitmdW5jdGlvbiBpbnNlcnRMaXN0KCkgeworICBkb2N1bWVudC5leGVjQ29tbWFu
ZCgnaW5zZXJ0dW5vcmRlcmVkbGlzdCcsIGZhbHNlLCAnJyk7Cit9CisKK3ZhciBzID0gd2luZG93
LmdldFNlbGVjdGlvbigpOwordmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0
Iik7CitzLnNldFBvc2l0aW9uKGRpdi5jaGlsZE5vZGVzWzBdLCAxMCk7CitzLm1vZGlmeSgiZXh0
ZW5kIiwgImZvcndhcmQiLCAibGluZSIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgIGluc2VydExpc3QoKTsKKyAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKK30KKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85120</attachid>
            <date>2011-03-08 18:13:17 -0800</date>
            <delta_ts>2011-03-10 12:48:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53409-20110308181316.patch</filename>
            <type>text/plain</type>
            <size>14251</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNjAzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDMtMDggIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluc2VydFVub3JkZXJlZExpc3Qgb3ZlciBhIG5vbi1lZGl0
YWJsZSByZWdpb24gYW5kIG11bHRpcGxlIGxpbmVzIGVudGVycyBhbiBpbmZpbml0ZSBsb29wCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzQwOQorCisg
ICAgICAgIEZpeGluZyBicm9rZW4gaGFuZGxpbmcgb2YgbWl4ZWQtZWRpdGFiaWxpdHkgY29udGVu
dCBmb3IgSW5zZXJ0TGlzdENvbW1hbmQuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9leGVjQ29t
bWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQuaHRtbAorCisgICAgICAg
ICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6Y2xlYW51cEFmdGVyRGVsZXRpb24pOiBDaGFuZ2VkIHNpZ25h
dHVyZSB0byB0YWtlIHRoZSBkZXN0aW5hdGlvbgorICAgICAgICBwb3NpdGlvbiBmb3IgdGhlIGFj
dGl2ZSBlZGl0aW5nIGNvbW1hbmQuIFdpdGhvdXQgdGhpcywgdGhlcmUgYXJlIGNhc2VzIHdoZW4g
dGhlIGRlc3RpbmF0aW9uIGhhcHBlbnMKKyAgICAgICAgdG8gYmUgYSBwbGFjZWhvbGRlciwgYW5k
IHdlIHJlbW92ZSBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpt
b3ZlUGFyYWdyYXBocyk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5o
OgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHkpOiBBZGRlZCBsb2dpYyB0byB0aGUgcGFy
YWdyYXBoIGl0ZXJhdGlvbiBsb29wIHRvIGhhbmRsZSBwb2NrZXRzIG9mCisgICAgICAgIG5vbi1l
ZGl0YWJsZSBjb250ZW50IGluIGFuIGVkaXRhYmxlIGNvbnRleHQuIFByZXZpb3VzbHksIHRoaXMg
Y291bGQgY2F1c2UgYW4gaW5maW5pdGUgbG9vcC4KKyAgICAgICAgKFdlYkNvcmU6Okluc2VydExp
c3RDb21tYW5kOjppc1N0YXJ0T2ZJbnNpZ25pZmljYW50UmVnaW9uKTogV2hlbiBpdGVyYXRpbmcg
b3ZlciBwYXJhZ3JhcGhzIHdpdGggbWl4ZWQKKyAgICAgICAgZWRpdGFiaWxpdHkgY29udGVudCBm
b3IgZWRpdGluZyBjb21tYW5kcywgdGhlcmUgYXJlIHNwZWNpYWwgY2FzZXMgKGUuZy4gdGhlIGJv
dW5kYXJ5IGJldHdlZW4gdHdvIG5vbi0KKyAgICAgICAgZWRpdGFibGUgc3BhbnMpIHRoYXQgc2hv
dWxkbid0IGJlIHRyZWF0ZWQgYXMgYSBwYXJhZ3JhcGguCisgICAgICAgICogZWRpdGluZy92aXNp
YmxlX3VuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T2ZQYXJhZ3JhcGgpOiBBZGRl
ZCBhIG1vZGUgb2Ygb3BlcmF0aW9uIHdoZXJlIHdlJ2xsIGp1bXAgYWNyb3NzIG5vbi1lZGl0YWJs
ZQorICAgICAgICBjb250ZW50IGluIHRoZSBzYW1lIHBhcmFncmFwaCB0byByZWFjaCB0aGUgYWN0
dWFsIGVkaXRhYmxlIHBhcmFncmFwaCBzdGFydC4KKyAgICAgICAgKFdlYkNvcmU6OmVuZE9mUGFy
YWdyYXBoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpzdGFydE9mTmV4dFBhcmFncmFwaCk6
IE5vdyB1c2VzIHRoZSBhZm9yZW1lbnRpb25lZCBub24tZWRpdGFibGUgY29udGVudCBza2lwcGlu
ZyBtb2RlIG9mCisgICAgICAgIGVuZE9mUGFyYWdyYXBoLgorCiAyMDExLTAzLTA4ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFt
IFJvYmVuLgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5jcHAJKHJldmlzaW9uIDgwNjAzKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9D
b21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzMCwxMCArODMwLDEw
IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmNsb25lUGFyYWdyYXAKIC8vIERlbGV0aW5n
IGEgcGFyYWdyYXBoIHdpbGwgbGVhdmUgYSBwbGFjZWhvbGRlci4gUmVtb3ZlIGl0IChhbmQgcHJ1
bmUKIC8vIGVtcHR5IG9yIHVucmVuZGVyZWQgcGFyZW50cykuCiAKLXZvaWQgQ29tcG9zaXRlRWRp
dENvbW1hbmQ6OmNsZWFudXBBZnRlckRlbGV0aW9uKCkKK3ZvaWQgQ29tcG9zaXRlRWRpdENvbW1h
bmQ6OmNsZWFudXBBZnRlckRlbGV0aW9uKFZpc2libGVQb3NpdGlvbiBkZXN0aW5hdGlvbikKIHsK
ICAgICBWaXNpYmxlUG9zaXRpb24gY2FyZXRBZnRlckRlbGV0ZSA9IGVuZGluZ1NlbGVjdGlvbigp
LnZpc2libGVTdGFydCgpOwotICAgIGlmIChpc1N0YXJ0T2ZQYXJhZ3JhcGgoY2FyZXRBZnRlckRl
bGV0ZSkgJiYgaXNFbmRPZlBhcmFncmFwaChjYXJldEFmdGVyRGVsZXRlKSkgeworICAgIGlmIChj
YXJldEFmdGVyRGVsZXRlICE9IGRlc3RpbmF0aW9uICYmIGlzU3RhcnRPZlBhcmFncmFwaChjYXJl
dEFmdGVyRGVsZXRlKSAmJiBpc0VuZE9mUGFyYWdyYXBoKGNhcmV0QWZ0ZXJEZWxldGUpKSB7CiAg
ICAgICAgIC8vIE5vdGU6IFdlIHdhbnQgdGhlIHJpZ2h0bW9zdCBjYW5kaWRhdGUuCiAgICAgICAg
IFBvc2l0aW9uIHBvc2l0aW9uID0gY2FyZXRBZnRlckRlbGV0ZS5kZWVwRXF1aXZhbGVudCgpLmRv
d25zdHJlYW0oKTsKICAgICAgICAgTm9kZSogbm9kZSA9IHBvc2l0aW9uLmRlcHJlY2F0ZWROb2Rl
KCk7CkBAIC05NDcsOCArOTQ3LDkgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBh
cmFncmFwaAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIFZpc2libGVQb3NpdGlvbiBiZWZv
cmVQYXJhZ3JhcGggPSBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLnByZXZpb3VzKCk7Ci0gICAgVmlz
aWJsZVBvc2l0aW9uIGFmdGVyUGFyYWdyYXBoKGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLm5leHQoKSk7
CisgICAgYm9vbCBzdGF5SW5FZGl0YWJsZUNvbnRlbnQgPSB0cnVlOworICAgIFZpc2libGVQb3Np
dGlvbiBiZWZvcmVQYXJhZ3JhcGggPSBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLnByZXZpb3VzKHN0
YXlJbkVkaXRhYmxlQ29udGVudCk7CisgICAgVmlzaWJsZVBvc2l0aW9uIGFmdGVyUGFyYWdyYXBo
KGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLm5leHQoc3RheUluRWRpdGFibGVDb250ZW50KSk7CiAKICAg
ICAvLyBXZSB1cHN0cmVhbSgpIHRoZSBlbmQgYW5kIGRvd25zdHJlYW0oKSB0aGUgc3RhcnQgc28g
dGhhdCB3ZSBkb24ndCBpbmNsdWRlIGNvbGxhcHNlZCB3aGl0ZXNwYWNlIGluIHRoZSBtb3ZlLgog
ICAgIC8vIFdoZW4gd2UgcGFzdGUgYSBmcmFnbWVudCwgc3BhY2VzIGFmdGVyIHRoZSBlbmQgYW5k
IGJlZm9yZSB0aGUgc3RhcnQgYXJlIHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZSByZW5kZXJl
ZC4KQEAgLTk4NSw4ICs5ODYsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFy
YWdyYXBoCiAgICAgZGVsZXRlU2VsZWN0aW9uKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsK
IAogICAgIEFTU0VSVChkZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKS0+
aW5Eb2N1bWVudCgpKTsKLQotICAgIGNsZWFudXBBZnRlckRlbGV0aW9uKCk7CisgICAgY2xlYW51
cEFmdGVyRGVsZXRpb24oZGVzdGluYXRpb24pOwogICAgIEFTU0VSVChkZXN0aW5hdGlvbi5kZWVw
RXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKS0+aW5Eb2N1bWVudCgpKTsKIAogICAgIC8vIEFkZCBh
IGJyIGlmIHBydW5pbmcgYW4gZW1wdHkgYmxvY2sgbGV2ZWwgZWxlbWVudCBjYXVzZWQgYSBjb2xs
YXBzZS4gRm9yIGV4YW1wbGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0
ZUVkaXRDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21w
b3NpdGVFZGl0Q29tbWFuZC5oCShyZXZpc2lvbiA4MDYwMykKKysrIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEw
OSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIG1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYs
IGJvb2wgcHJlc2VydmVTZWxlY3Rpb24gPSBmYWxzZSwgYm9vbCBwcmVzZXJ2ZVN0eWxlID0gdHJ1
ZSk7CiAgICAgdm9pZCBtb3ZlUGFyYWdyYXBoV2l0aENsb25lcyhjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgZW5kT2ZQ
YXJhZ3JhcGhUb01vdmUsIEVsZW1lbnQqIGJsb2NrRWxlbWVudCwgTm9kZSogb3V0ZXJOb2RlKTsK
ICAgICB2b2lkIGNsb25lUGFyYWdyYXBoVW5kZXJOZXdFbGVtZW50KFBvc2l0aW9uJiBzdGFydCwg
UG9zaXRpb24mIGVuZCwgTm9kZSogb3V0ZXJOb2RlLCBFbGVtZW50KiBibG9ja0VsZW1lbnQpOwot
ICAgIHZvaWQgY2xlYW51cEFmdGVyRGVsZXRpb24oKTsKKyAgICB2b2lkIGNsZWFudXBBZnRlckRl
bGV0aW9uKFZpc2libGVQb3NpdGlvbiBkZXN0aW5hdGlvbiA9IFZpc2libGVQb3NpdGlvbigpKTsK
ICAgICAKICAgICBib29sIGJyZWFrT3V0T2ZFbXB0eUxpc3RJdGVtKCk7CiAgICAgYm9vbCBicmVh
a091dE9mRW1wdHlNYWlsQmxvY2txdW90ZWRQYXJhZ3JhcGgoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCShyZXZpc2lvbiA4MDYwMykKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Miw2ICs2MiwxNCBAQCBIVE1MRWxlbWVudCogSW5zZXJ0TGlzdENvbW1hbmQ6OmZp
eE9ycGhhCiAgICAgcmV0dXJuIGxpc3RFbGVtZW50LmdldCgpOwogfQogCitib29sIEluc2VydExp
c3RDb21tYW5kOjppc1N0YXJ0T2ZJbnNpZ25pZmljYW50UmVnaW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgc3RhcnQpCit7CisgICAgQVNTRVJUKHN0YXJ0LmlzTm90TnVsbCgpKTsKKyAgICBWaXNp
YmxlUG9zaXRpb24gcGFyYWdyYXBoRW5kID0gZW5kT2ZQYXJhZ3JhcGgoc3RhcnQpOworICAgIHJl
dHVybiBzdGFydCA9PSBwYXJhZ3JhcGhFbmQgJiYgKCFzdGFydC5kZWVwRXF1aXZhbGVudCgpLnVw
c3RyZWFtKENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KS5hbmNob3JOb2RlKCktPmlzQ29udGVudEVk
aXRhYmxlKCkKKyAgICAgICAgICAgIHx8IGVuZE9mUGFyYWdyYXBoKHBhcmFncmFwaEVuZCwgQ2Fu
Q3Jvc3NFZGl0aW5nQm91bmRhcnkpICE9IHN0YXJ0T2ZQYXJhZ3JhcGgoc3RhcnQsIENhbkNyb3Nz
RWRpdGluZ0JvdW5kYXJ5KSk7Cit9CisKIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEluc2VydExp
c3RDb21tYW5kOjptZXJnZVdpdGhOZWlnaGJvcmluZ0xpc3RzKFBhc3NSZWZQdHI8SFRNTEVsZW1l
bnQ+IHBhc3NlZExpc3QpCiB7CiAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBsaXN0ID0gcGFzc2Vk
TGlzdDsKQEAgLTE3Miw3ICsxODAsMTMgQEAgdm9pZCBJbnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBs
eSgpCiAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBoID09IHN0YXJ0
T2ZTZWxlY3Rpb24pCiAgICAgICAgICAgICAgICAgICAgIHN0YXJ0T2ZTZWxlY3Rpb24gPSBlbmRp
bmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsKIAotICAgICAgICAgICAgICAgIHN0YXJ0T2ZD
dXJyZW50UGFyYWdyYXBoID0gc3RhcnRPZk5leHRQYXJhZ3JhcGgoZW5kaW5nU2VsZWN0aW9uKCku
dmlzaWJsZVN0YXJ0KCkpOworICAgICAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBuZXh0U3Rh
cnQgPSBzdGFydE9mTmV4dFBhcmFncmFwaChlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQo
KSk7CisgICAgICAgICAgICAgICAgd2hpbGUgKG5leHRTdGFydC5pc05vdE51bGwoKSAmJiBuZXh0
U3RhcnQgIT0gc3RhcnRPZkxhc3RQYXJhZ3JhcGggJiYgaXNTdGFydE9mSW5zaWduaWZpY2FudFJl
Z2lvbihuZXh0U3RhcnQpKQorICAgICAgICAgICAgICAgICAgICBuZXh0U3RhcnQgPSBzdGFydE9m
TmV4dFBhcmFncmFwaChuZXh0U3RhcnQpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIGlmIChzdGFydE9mQ3VycmVudFBhcmFncmFwaCA9PSBuZXh0U3RhcnQpCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBo
ID0gbmV4dFN0YXJ0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0
aW9uKGVuZE9mU2VsZWN0aW9uKTsKICAgICAgICAgICAgIGRvQXBwbHlGb3JTaW5nbGVQYXJhZ3Jh
cGgoZm9yY2VDcmVhdGVMaXN0LCBsaXN0VGFnLCBjdXJyZW50U2VsZWN0aW9uLmdldCgpKTsKQEAg
LTM3NSw4ICszODksMTIgQEAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSW5zZXJ0TGlzdENvbW1h
bgogCiAgICAgICAgIC8vIFdlIGluc2VydGVkIHRoZSBsaXN0IGF0IHRoZSBzdGFydCBvZiB0aGUg
Y29udGVudCB3ZSdyZSBhYm91dCB0byBtb3ZlCiAgICAgICAgIC8vIFVwZGF0ZSB0aGUgc3RhcnQg
b2YgY29udGVudCwgc28gd2UgZG9uJ3QgdHJ5IHRvIG1vdmUgdGhlIGxpc3QgaW50byBpdHNlbGYu
ICBidWcgMTkwNjYKLSAgICAgICAgaWYgKGluc2VydGlvblBvcyA9PSBzdGFydC5kZWVwRXF1aXZh
bGVudCgpKQorICAgICAgICAvLyBMYXlvdXQgaXMgbmVjZXNzYXJ5IHNpbmNlIHN0YXJ0J3Mgbm9k
ZSdzIGlubGluZSByZW5kZXJlcnMgbWF5IGhhdmUgYmVlbiBkZXN0cm95ZWQgYnkKKyAgICAgICAg
Ly8gdGhlIGluc2VydGlvbi4KKyAgICAgICAgaWYgKGluc2VydGlvblBvcyA9PSBzdGFydC5kZWVw
RXF1aXZhbGVudCgpKSB7CisgICAgICAgICAgICBsaXN0RWxlbWVudC0+ZG9jdW1lbnQoKS0+dXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgICAgICAgICBzdGFydCA9
IHN0YXJ0T2ZQYXJhZ3JhcGgob3JpZ2luYWxTdGFydCk7CisgICAgICAgIH0KICAgICB9CiAKICAg
ICBtb3ZlUGFyYWdyYXBoKHN0YXJ0LCBlbmQsIHBvc2l0aW9uQmVmb3JlTm9kZShwbGFjZWhvbGRl
ci5nZXQoKSksIHRydWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0
Q29tbWFuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlz
dENvbW1hbmQuaAkocmV2aXNpb24gODA2MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0lu
c2VydExpc3RDb21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDEwICs1MiwxNCBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gRWRpdEFjdGlvbkluc2VydExpc3Q7IH0KIAogICAgIEhUTUxFbGVtZW50KiBmaXhPcnBoYW5l
ZExpc3RDaGlsZChOb2RlKik7CisKICAgICBib29sIHNlbGVjdGlvbkhhc0xpc3RPZlR5cGUoY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBjb25zdCBRdWFsaWZpZWROYW1lJik7Cisg
ICAgYm9vbCBpc1N0YXJ0T2ZJbnNpZ25pZmljYW50UmVnaW9uKGNvbnN0IFZpc2libGVQb3NpdGlv
biYpOworCiAgICAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gbWVyZ2VXaXRoTmVpZ2hib3JpbmdM
aXN0cyhQYXNzUmVmUHRyPEhUTUxFbGVtZW50Pik7CiAgICAgdm9pZCBkb0FwcGx5Rm9yU2luZ2xl
UGFyYWdyYXBoKGJvb2wgZm9yY2VDcmVhdGVMaXN0LCBjb25zdCBRdWFsaWZpZWROYW1lJiwgUmFu
Z2UqIGN1cnJlbnRTZWxlY3Rpb24pOwogICAgIHZvaWQgdW5saXN0aWZ5UGFyYWdyYXBoKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgb3JpZ2luYWxTdGFydCwgSFRNTEVsZW1lbnQqIGxpc3ROb2RlLCBO
b2RlKiBsaXN0Q2hpbGROb2RlKTsKKwogICAgIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGxpc3Rp
ZnlQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBvcmlnaW5hbFN0YXJ0LCBjb25zdCBR
dWFsaWZpZWROYW1lJiBsaXN0VGFnKTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1fbGlzdEVs
ZW1lbnQ7CiAgICAgVHlwZSBtX3R5cGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zp
c2libGVfdW5pdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlz
aWJsZV91bml0cy5jcHAJKHJldmlzaW9uIDgwNjAzKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy92aXNpYmxlX3VuaXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQ3LDE0ICs3NDcsMjEgQEAg
VmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZQYXJhZ3JhcGgoY29uc3QgVgogCiAgICAgTm9kZSogc3Rh
cnRCbG9jayA9IGVuY2xvc2luZ0Jsb2NrKHN0YXJ0Tm9kZSk7CiAKLSAgICBOb2RlICpub2RlID0g
c3RhcnROb2RlOworICAgIE5vZGUqIG5vZGUgPSBzdGFydE5vZGU7CisgICAgTm9kZSogaGlnaGVz
dFJvb3QgPSBoaWdoZXN0RWRpdGFibGVSb290KHApOwogICAgIGludCBvZmZzZXQgPSBwLmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAgICAgUG9zaXRpb246OkFuY2hvclR5cGUgdHlwZSA9IHAu
YW5jaG9yVHlwZSgpOwogCi0gICAgTm9kZSAqbiA9IHN0YXJ0Tm9kZTsKKyAgICBOb2RlKiBuID0g
c3RhcnROb2RlOwogICAgIHdoaWxlIChuKSB7CiAgICAgICAgIGlmIChib3VuZGFyeUNyb3NzaW5n
UnVsZSA9PSBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSAmJiBuLT5pc0NvbnRlbnRFZGl0YWJs
ZSgpICE9IHN0YXJ0Tm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSkKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBpZiAoYm91bmRhcnlDcm9zc2luZ1J1bGUgPT0gQ2FuU2tpcE92ZXJFZGl0aW5n
Qm91bmRhcnkpIHsKKyAgICAgICAgICAgIHdoaWxlIChuICYmIG4tPmlzQ29udGVudEVkaXRhYmxl
KCkgIT0gc3RhcnROb2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAgICAgICAgICAgICAgIG4g
PSBuLT50cmF2ZXJzZVByZXZpb3VzTm9kZVBvc3RPcmRlcihzdGFydEJsb2NrKTsKKyAgICAgICAg
ICAgIGlmICghbiB8fCAhbi0+aXNEZXNjZW5kYW50T2YoaGlnaGVzdFJvb3QpKQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIFJlbmRlck9iamVjdCAqciA9IG4tPnJl
bmRlcmVyKCk7CiAgICAgICAgIGlmICghcikgewogICAgICAgICAgICAgbiA9IG4tPnRyYXZlcnNl
UHJldmlvdXNOb2RlUG9zdE9yZGVyKHN0YXJ0QmxvY2spOwpAQCAtODEzLDYgKzgyMCw3IEBAIFZp
c2libGVQb3NpdGlvbiBlbmRPZlBhcmFncmFwaChjb25zdCBWaXMKICAgICBOb2RlICpzdGF5SW5z
aWRlQmxvY2sgPSBzdGFydEJsb2NrOwogICAgIAogICAgIE5vZGUgKm5vZGUgPSBzdGFydE5vZGU7
CisgICAgTm9kZSogaGlnaGVzdFJvb3QgPSBoaWdoZXN0RWRpdGFibGVSb290KHApOwogICAgIGlu
dCBvZmZzZXQgPSBwLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAgICAgUG9zaXRpb246OkFu
Y2hvclR5cGUgdHlwZSA9IHAuYW5jaG9yVHlwZSgpOwogCkBAIC04MjAsNiArODI4LDEzIEBAIFZp
c2libGVQb3NpdGlvbiBlbmRPZlBhcmFncmFwaChjb25zdCBWaXMKICAgICB3aGlsZSAobikgewog
ICAgICAgICBpZiAoYm91bmRhcnlDcm9zc2luZ1J1bGUgPT0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91
bmRhcnkgJiYgbi0+aXNDb250ZW50RWRpdGFibGUoKSAhPSBzdGFydE5vZGUtPmlzQ29udGVudEVk
aXRhYmxlKCkpCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGJvdW5kYXJ5Q3Jvc3Np
bmdSdWxlID09IENhblNraXBPdmVyRWRpdGluZ0JvdW5kYXJ5KSB7CisgICAgICAgICAgICB3aGls
ZSAobiAmJiBuLT5pc0NvbnRlbnRFZGl0YWJsZSgpICE9IHN0YXJ0Tm9kZS0+aXNDb250ZW50RWRp
dGFibGUoKSkKKyAgICAgICAgICAgICAgICBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZShzdGF5SW5z
aWRlQmxvY2spOworICAgICAgICAgICAgaWYgKCFuIHx8ICFuLT5pc0Rlc2NlbmRhbnRPZihoaWdo
ZXN0Um9vdCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBS
ZW5kZXJPYmplY3QgKnIgPSBuLT5yZW5kZXJlcigpOwogICAgICAgICBpZiAoIXIpIHsKICAgICAg
ICAgICAgIG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKHN0YXlJbnNpZGVCbG9jayk7CkBAIC04NjIs
OSArODc3LDEwIEBAIFZpc2libGVQb3NpdGlvbiBlbmRPZlBhcmFncmFwaChjb25zdCBWaXMKICAg
ICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKG5vZGUsIHR5cGUpLCBET1dOU1RSRUFN
KTsKIH0KIAorLy8gRklYTUU6IGlzU3RhcnRPZlBhcmFncmFwaChzdGFydE9mTmV4dFBhcmFncmFw
aChwb3MpKSBpcyBub3QgYWx3YXlzIHRydWUKIFZpc2libGVQb3NpdGlvbiBzdGFydE9mTmV4dFBh
cmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbikKIHsKLSAgICBW
aXNpYmxlUG9zaXRpb24gcGFyYWdyYXBoRW5kKGVuZE9mUGFyYWdyYXBoKHZpc2libGVQb3NpdGlv
bikpOworICAgIFZpc2libGVQb3NpdGlvbiBwYXJhZ3JhcGhFbmQoZW5kT2ZQYXJhZ3JhcGgodmlz
aWJsZVBvc2l0aW9uLCBDYW5Ta2lwT3ZlckVkaXRpbmdCb3VuZGFyeSkpOwogICAgIFZpc2libGVQ
b3NpdGlvbiBhZnRlclBhcmFncmFwaEVuZChwYXJhZ3JhcGhFbmQubmV4dCh0cnVlKSk7CiAgICAg
Ly8gVGhlIHBvc2l0aW9uIGFmdGVyIHRoZSBsYXN0IHBvc2l0aW9uIGluIHRoZSBsYXN0IGNlbGwg
b2YgYSB0YWJsZQogICAgIC8vIGlzIG5vdCB0aGUgc3RhcnQgb2YgdGhlIG5leHQgcGFyYWdyYXBo
LgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gODA2MDMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMy0wOCAgTGV2aSBXZWludHJhdWIg
IDxsZXZpd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW5zZXJ0VW5vcmRlcmVkTGlzdCBvdmVyIGEgbm9uLWVkaXRhYmxlIHJl
Z2lvbiBhbmQgbXVsdGlwbGUgbGluZXMgZW50ZXJzIGFuIGluZmluaXRlIGxvb3AKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNDA5CisKKyAgICAgICAg
QXZvaWRpbmcgY3Jhc2hlcyBhbmQgaW5maW5pdGUgbG9vcHMgd2hlbiBsaXN0aWZ5aW5nIGNvbnRl
bnQgd2l0aCBtaXhlZC1lZGl0YWJpbGl0eQorCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFu
ZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRp
dGFibGUtY29udGVudC5odG1sOiBBZGRlZC4KKwogMjAxMS0wMy0wOCAgTWFydGluIFJvYmluc29u
ICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmViYXNlbGluZSBhIEdUSysgcmVz
dWx0IGFmdGVyIHI4MDU4Mi4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQv
aW5zZXJ0LWxpc3Qtd2l0aC1ub25lZGl0YWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgt
bm9uZWRpdGFibGUtY29udGVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29u
dGVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorVGhpcyB0ZXN0
cyBsaXN0IGNyZWF0aW9uIGluIGFuIGVkaXRhYmxlIGNvbnRleHQgYnV0IGFjcm9zcyBub24tZWRp
dGFibGUgY29udGVudC4gRWRpdGFibGUgY29udGVudCBzaG91bGQgYmUgcHVsbGVkIGludG8gbGlz
dCBpdGVtcyB3aGlsZSBub24tZWRpdGFibGUgbm9kZXMgc2hvdWxkIGJlIGxlZnQgYWxvbmUsIGVu
ZGluZyB1cCBhZnRlciB0aGUgY3JlYXRlZCBsaXN0LgorRWRpdGFibGUgcGFyYWdyYXBoIGNvbnRh
aW5pbmcgYcKgCivCoHNwYW4gaW4gdGhlIG1pZGRsZS4KK8KgIMKgQW5vdGhlciBlZGl0YWJsZSBw
YXJhZ3JhcGguCitub24tZWRpdGFibGUKK0luc2VydCBMaXN0CkluZGV4OiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVudC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0
LWxpc3Qtd2l0aC1ub25lZGl0YWJsZS1jb250ZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUt
Y29udGVudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UaGlzIHRlc3RzIGxpc3QgY3JlYXRpb24gaW4gYW4g
ZWRpdGFibGUgY29udGV4dCBidXQgYWNyb3NzIG5vbi1lZGl0YWJsZSBjb250ZW50LiBFZGl0YWJs
ZSBjb250ZW50IHNob3VsZCBiZSBwdWxsZWQgaW50byBsaXN0IGl0ZW1zIHdoaWxlIG5vbi1lZGl0
YWJsZSBub2RlcyBzaG91bGQgYmUgbGVmdCBhbG9uZSwgZW5kaW5nIHVwIGFmdGVyIHRoZSBjcmVh
dGVkIGxpc3QuPC9kaXY+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgaWQ9InRlc3QiIHN0
eWxlPSJwYWRkaW5nOiAxZW07Ij4KKyAgRWRpdGFibGUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgYSA8
c3BhbiBjb250ZW50ZWRpdGFibGU9ImZhbHNlIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogTGln
aHRHcmF5OyI+bm9uLWVkaXRhYmxlPC9zcGFuPiBzcGFuIGluIHRoZSBtaWRkbGUuPGJyPgorICBB
bm90aGVyIGVkaXRhYmxlIHBhcmFncmFwaC4KKzwvZGl2PgorPGJ1dHRvbiBvbmNsaWNrPSJpbnNl
cnRMaXN0KCk7Ij5JbnNlcnQgTGlzdDwvYnV0dG9uPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGluc2Vy
dExpc3QoKSB7CisgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdpbnNlcnR1bm9yZGVyZWRsaXN0Jywg
ZmFsc2UsICcnKTsKK30KKwordmFyIHMgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cit2YXIgZGl2
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKK3Muc2V0UG9zaXRpb24oZGl2LmNo
aWxkTm9kZXNbMF0sIDEwKTsKK3MubW9kaWZ5KCJleHRlbmQiLCAiZm9yd2FyZCIsICJsaW5lIik7
CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgaW5zZXJ0TGlzdCgpOwor
ICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworfQorPC9zY3JpcHQ+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85376</attachid>
            <date>2011-03-10 12:48:12 -0800</date>
            <delta_ts>2011-03-10 13:59:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53409-20110310124811.patch</filename>
            <type>text/plain</type>
            <size>16473</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNjAzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDMtMDggIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluc2VydFVub3JkZXJlZExpc3Qgb3ZlciBhIG5vbi1lZGl0
YWJsZSByZWdpb24gYW5kIG11bHRpcGxlIGxpbmVzIGVudGVycyBhbiBpbmZpbml0ZSBsb29wCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzQwOQorCisg
ICAgICAgIEZpeGluZyBicm9rZW4gaGFuZGxpbmcgb2YgbWl4ZWQtZWRpdGFiaWxpdHkgY29udGVu
dCBmb3IgSW5zZXJ0TGlzdENvbW1hbmQuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9leGVjQ29t
bWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQuaHRtbAorCisgICAgICAg
ICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6Y2xlYW51cEFmdGVyRGVsZXRpb24pOiBDaGFuZ2VkIHNpZ25h
dHVyZSB0byB0YWtlIHRoZSBkZXN0aW5hdGlvbgorICAgICAgICBwb3NpdGlvbiBmb3IgdGhlIGFj
dGl2ZSBlZGl0aW5nIGNvbW1hbmQuIFdpdGhvdXQgdGhpcywgdGhlcmUgYXJlIGNhc2VzIHdoZW4g
dGhlIGRlc3RpbmF0aW9uIGhhcHBlbnMKKyAgICAgICAgdG8gYmUgYSBwbGFjZWhvbGRlciwgYW5k
IHdlIHJlbW92ZSBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpt
b3ZlUGFyYWdyYXBocyk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5o
OgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHkpOiBBZGRlZCBsb2dpYyB0byB0aGUgcGFy
YWdyYXBoIGl0ZXJhdGlvbiBsb29wIHRvIGhhbmRsZSBwb2NrZXRzIG9mCisgICAgICAgIG5vbi1l
ZGl0YWJsZSBjb250ZW50IGluIGFuIGVkaXRhYmxlIGNvbnRleHQuIFByZXZpb3VzbHksIHRoaXMg
Y291bGQgY2F1c2UgYW4gaW5maW5pdGUgbG9vcC4KKyAgICAgICAgKiBlZGl0aW5nL3Zpc2libGVf
dW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRPZlBhcmFncmFwaCk6IEFkZGVkIGEg
bW9kZSBvZiBvcGVyYXRpb24gd2hlcmUgd2UnbGwganVtcCBhY3Jvc3Mgbm9uLWVkaXRhYmxlCisg
ICAgICAgIGNvbnRlbnQgaW4gdGhlIHNhbWUgcGFyYWdyYXBoIHRvIHJlYWNoIHRoZSBhY3R1YWwg
ZWRpdGFibGUgcGFyYWdyYXBoIHN0YXJ0LgorICAgICAgICAoV2ViQ29yZTo6ZW5kT2ZQYXJhZ3Jh
cGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T2ZOZXh0UGFyYWdyYXBoKTogTm93
IHVzZXMgdGhlIGFmb3JlbWVudGlvbmVkIG5vbi1lZGl0YWJsZSBjb250ZW50IHNraXBwaW5nIG1v
ZGUgb2YKKyAgICAgICAgZW5kT2ZQYXJhZ3JhcGguCisKIDIwMTEtMDMtMDggIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9i
ZW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcAkocmV2aXNpb24gODA2MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMwLDEwICs4MzAsMTAgQEAg
dm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6Y2xvbmVQYXJhZ3JhcAogLy8gRGVsZXRpbmcgYSBw
YXJhZ3JhcGggd2lsbCBsZWF2ZSBhIHBsYWNlaG9sZGVyLiBSZW1vdmUgaXQgKGFuZCBwcnVuZQog
Ly8gZW1wdHkgb3IgdW5yZW5kZXJlZCBwYXJlbnRzKS4KIAotdm9pZCBDb21wb3NpdGVFZGl0Q29t
bWFuZDo6Y2xlYW51cEFmdGVyRGVsZXRpb24oKQordm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6
Y2xlYW51cEFmdGVyRGVsZXRpb24oVmlzaWJsZVBvc2l0aW9uIGRlc3RpbmF0aW9uKQogewogICAg
IFZpc2libGVQb3NpdGlvbiBjYXJldEFmdGVyRGVsZXRlID0gZW5kaW5nU2VsZWN0aW9uKCkudmlz
aWJsZVN0YXJ0KCk7Ci0gICAgaWYgKGlzU3RhcnRPZlBhcmFncmFwaChjYXJldEFmdGVyRGVsZXRl
KSAmJiBpc0VuZE9mUGFyYWdyYXBoKGNhcmV0QWZ0ZXJEZWxldGUpKSB7CisgICAgaWYgKGNhcmV0
QWZ0ZXJEZWxldGUgIT0gZGVzdGluYXRpb24gJiYgaXNTdGFydE9mUGFyYWdyYXBoKGNhcmV0QWZ0
ZXJEZWxldGUpICYmIGlzRW5kT2ZQYXJhZ3JhcGgoY2FyZXRBZnRlckRlbGV0ZSkpIHsKICAgICAg
ICAgLy8gTm90ZTogV2Ugd2FudCB0aGUgcmlnaHRtb3N0IGNhbmRpZGF0ZS4KICAgICAgICAgUG9z
aXRpb24gcG9zaXRpb24gPSBjYXJldEFmdGVyRGVsZXRlLmRlZXBFcXVpdmFsZW50KCkuZG93bnN0
cmVhbSgpOwogICAgICAgICBOb2RlKiBub2RlID0gcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKTsK
QEAgLTk0Nyw4ICs5NDcsOSBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdy
YXBoCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgVmlzaWJsZVBvc2l0aW9uIGJlZm9yZVBh
cmFncmFwaCA9IHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUucHJldmlvdXMoKTsKLSAgICBWaXNpYmxl
UG9zaXRpb24gYWZ0ZXJQYXJhZ3JhcGgoZW5kT2ZQYXJhZ3JhcGhUb01vdmUubmV4dCgpKTsKKyAg
ICBib29sIHN0YXlJbkVkaXRhYmxlQ29udGVudCA9IHRydWU7CisgICAgVmlzaWJsZVBvc2l0aW9u
IGJlZm9yZVBhcmFncmFwaCA9IHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUucHJldmlvdXMoc3RheUlu
RWRpdGFibGVDb250ZW50KTsKKyAgICBWaXNpYmxlUG9zaXRpb24gYWZ0ZXJQYXJhZ3JhcGgoZW5k
T2ZQYXJhZ3JhcGhUb01vdmUubmV4dChzdGF5SW5FZGl0YWJsZUNvbnRlbnQpKTsKIAogICAgIC8v
IFdlIHVwc3RyZWFtKCkgdGhlIGVuZCBhbmQgZG93bnN0cmVhbSgpIHRoZSBzdGFydCBzbyB0aGF0
IHdlIGRvbid0IGluY2x1ZGUgY29sbGFwc2VkIHdoaXRlc3BhY2UgaW4gdGhlIG1vdmUuCiAgICAg
Ly8gV2hlbiB3ZSBwYXN0ZSBhIGZyYWdtZW50LCBzcGFjZXMgYWZ0ZXIgdGhlIGVuZCBhbmQgYmVm
b3JlIHRoZSBzdGFydCBhcmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlIHJlbmRlcmVkLgpA
QCAtOTg1LDggKzk4Niw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3Jh
cGgKICAgICBkZWxldGVTZWxlY3Rpb24oZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwogCiAg
ICAgQVNTRVJUKGRlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkuYW5jaG9yTm9kZSgpLT5pbkRv
Y3VtZW50KCkpOwotCi0gICAgY2xlYW51cEFmdGVyRGVsZXRpb24oKTsKKyAgICBjbGVhbnVwQWZ0
ZXJEZWxldGlvbihkZXN0aW5hdGlvbik7CiAgICAgQVNTRVJUKGRlc3RpbmF0aW9uLmRlZXBFcXVp
dmFsZW50KCkuYW5jaG9yTm9kZSgpLT5pbkRvY3VtZW50KCkpOwogCiAgICAgLy8gQWRkIGEgYnIg
aWYgcHJ1bmluZyBhbiBlbXB0eSBibG9jayBsZXZlbCBlbGVtZW50IGNhdXNlZCBhIGNvbGxhcHNl
LiBGb3IgZXhhbXBsZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0
ZUVkaXRDb21tYW5kLmgJKHJldmlzaW9uIDgwNjAzKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcg
QEAgcHJvdGVjdGVkOgogICAgIHZvaWQgbW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgYm9v
bCBwcmVzZXJ2ZVNlbGVjdGlvbiA9IGZhbHNlLCBib29sIHByZXNlcnZlU3R5bGUgPSB0cnVlKTsK
ICAgICB2b2lkIG1vdmVQYXJhZ3JhcGhXaXRoQ2xvbmVzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
c3RhcnRPZlBhcmFncmFwaFRvTW92ZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlbmRPZlBhcmFn
cmFwaFRvTW92ZSwgRWxlbWVudCogYmxvY2tFbGVtZW50LCBOb2RlKiBvdXRlck5vZGUpOwogICAg
IHZvaWQgY2xvbmVQYXJhZ3JhcGhVbmRlck5ld0VsZW1lbnQoUG9zaXRpb24mIHN0YXJ0LCBQb3Np
dGlvbiYgZW5kLCBOb2RlKiBvdXRlck5vZGUsIEVsZW1lbnQqIGJsb2NrRWxlbWVudCk7Ci0gICAg
dm9pZCBjbGVhbnVwQWZ0ZXJEZWxldGlvbigpOworICAgIHZvaWQgY2xlYW51cEFmdGVyRGVsZXRp
b24oVmlzaWJsZVBvc2l0aW9uIGRlc3RpbmF0aW9uID0gVmlzaWJsZVBvc2l0aW9uKCkpOwogICAg
IAogICAgIGJvb2wgYnJlYWtPdXRPZkVtcHR5TGlzdEl0ZW0oKTsKICAgICBib29sIGJyZWFrT3V0
T2ZFbXB0eU1haWxCbG9ja3F1b3RlZFBhcmFncmFwaCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDgwNjAzKQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIEluc2VydExpc3RDb21tYW5kOjpkb0FwcGx5KCkKICAg
ICAvLyBGSVhNRTogV2UgcGFpbnQgdGhlIGdhcCBiZWZvcmUgc29tZSBwYXJhZ3JhcGhzIHRoYXQg
YXJlIGluZGVudGVkIHdpdGggbGVmdCAKICAgICAvLyBtYXJnaW4vcGFkZGluZywgYnV0IG5vdCBv
dGhlcnMuICBXZSBzaG91bGQgbWFrZSB0aGUgZ2FwIHBhaW50aW5nIG1vcmUgY29uc2lzdGVudCBh
bmQgCiAgICAgLy8gdGhlbiB1c2UgYSBsZWZ0IG1hcmdpbi9wYWRkaW5nIHJ1bGUgaGVyZS4KLSAg
ICBpZiAodmlzaWJsZUVuZCAhPSB2aXNpYmxlU3RhcnQgJiYgaXNTdGFydE9mUGFyYWdyYXBoKHZp
c2libGVFbmQpKQorICAgIGlmICh2aXNpYmxlRW5kICE9IHZpc2libGVTdGFydCAmJiBpc1N0YXJ0
T2ZQYXJhZ3JhcGgodmlzaWJsZUVuZCwgQ2FuU2tpcE92ZXJFZGl0aW5nQm91bmRhcnkpKQogICAg
ICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbih2aXNpYmxlU3RhcnQsIHZp
c2libGVFbmQucHJldmlvdXModHJ1ZSkpKTsKIAogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGxp
c3RUYWcgPSAobV90eXBlID09IE9yZGVyZWRMaXN0KSA/IG9sVGFnIDogdWxUYWc7CkBAIC0xMzAs
MTQgKzEzMCwxNCBAQCB2b2lkIEluc2VydExpc3RDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAg
QVNTRVJUKHNlbGVjdGlvbi5pc1JhbmdlKCkpOwogICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3Rh
cnRPZlNlbGVjdGlvbiA9IHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKTsKICAgICAgICAgVmlzaWJs
ZVBvc2l0aW9uIGVuZE9mU2VsZWN0aW9uID0gc2VsZWN0aW9uLnZpc2libGVFbmQoKTsKLSAgICAg
ICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZMYXN0UGFyYWdyYXBoID0gc3RhcnRPZlBhcmFncmFw
aChlbmRPZlNlbGVjdGlvbik7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiBzdGFydE9mTGFzdFBh
cmFncmFwaCA9IHN0YXJ0T2ZQYXJhZ3JhcGgoZW5kT2ZTZWxlY3Rpb24sIENhblNraXBPdmVyRWRp
dGluZ0JvdW5kYXJ5KTsKIAotICAgICAgICBpZiAoc3RhcnRPZlBhcmFncmFwaChzdGFydE9mU2Vs
ZWN0aW9uKSAhPSBzdGFydE9mTGFzdFBhcmFncmFwaCkgeworICAgICAgICBpZiAoc3RhcnRPZlBh
cmFncmFwaChzdGFydE9mU2VsZWN0aW9uLCBDYW5Ta2lwT3ZlckVkaXRpbmdCb3VuZGFyeSkgIT0g
c3RhcnRPZkxhc3RQYXJhZ3JhcGgpIHsKICAgICAgICAgICAgIGJvb2wgZm9yY2VDcmVhdGVMaXN0
ID0gIXNlbGVjdGlvbkhhc0xpc3RPZlR5cGUoc2VsZWN0aW9uLCBsaXN0VGFnKTsKIAogICAgICAg
ICAgICAgUmVmUHRyPFJhbmdlPiBjdXJyZW50U2VsZWN0aW9uID0gZW5kaW5nU2VsZWN0aW9uKCku
Zmlyc3RSYW5nZSgpOwogICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZDdXJyZW50
UGFyYWdyYXBoID0gc3RhcnRPZlNlbGVjdGlvbjsKLSAgICAgICAgICAgIHdoaWxlIChzdGFydE9m
Q3VycmVudFBhcmFncmFwaCAhPSBzdGFydE9mTGFzdFBhcmFncmFwaCkgeworICAgICAgICAgICAg
d2hpbGUgKCFpblNhbWVQYXJhZ3JhcGgoc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGgsIHN0YXJ0T2ZM
YXN0UGFyYWdyYXBoLCBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkpIHsKICAgICAgICAgICAgICAg
ICAvLyBkb0FwcGx5KCkgbWF5IG9wZXJhdGUgb24gYW5kIHJlbW92ZSB0aGUgbGFzdCBwYXJhZ3Jh
cGggb2YgdGhlIHNlbGVjdGlvbiBmcm9tIHRoZSBkb2N1bWVudCAKICAgICAgICAgICAgICAgICAv
LyBpZiBpdCdzIGluIHRoZSBzYW1lIGxpc3QgaXRlbSBhcyBzdGFydE9mQ3VycmVudFBhcmFncmFw
aC4gIFJldHVybiBlYXJseSB0byBhdm9pZCBhbiAKICAgICAgICAgICAgICAgICAvLyBpbmZpbml0
ZSBsb29wIGFuZCBiZWNhdXNlIHRoZXJlIGlzIG5vIG1vcmUgd29yayB0byBiZSBkb25lLgpAQCAt
MTYyLDcgKzE2Miw3IEBAIHZvaWQgSW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAg
ICAgICAgICAgICAgICBpZiAoIWxhc3RTZWxlY3Rpb25SYW5nZSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgZW5kT2ZTZWxlY3Rpb24gPSBsYXN0
U2VsZWN0aW9uUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgc3Rh
cnRPZkxhc3RQYXJhZ3JhcGggPSBzdGFydE9mUGFyYWdyYXBoKGVuZE9mU2VsZWN0aW9uKTsKKyAg
ICAgICAgICAgICAgICAgICAgc3RhcnRPZkxhc3RQYXJhZ3JhcGggPSBzdGFydE9mUGFyYWdyYXBo
KGVuZE9mU2VsZWN0aW9uLCBDYW5Ta2lwT3ZlckVkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8gRmV0Y2ggdGhlIHN0YXJ0IG9mIHRoZSBzZWxl
Y3Rpb24gYWZ0ZXIgbW92aW5nIHRoZSBmaXJzdCBwYXJhZ3JhcGgsCkBAIC0yNjMsOCArMjYzLDgg
QEAgdm9pZCBJbnNlcnRMaXN0Q29tbWFuZDo6dW5saXN0aWZ5UGFyYWdyYQogICAgICAgICBwcmV2
aW91c0xpc3RDaGlsZCA9IGxpc3RDaGlsZE5vZGUtPnByZXZpb3VzU2libGluZygpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIEEgcGFyYWdyYXBoIGlzIHZpc3VhbGx5IGEgbGlzdCBpdGVtIG1p
bnVzIGEgbGlzdCBtYXJrZXIuICBUaGUgcGFyYWdyYXBoIHdpbGwgYmUgbW92ZWQuCi0gICAgICAg
IHN0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChvcmlnaW5hbFN0YXJ0KTsKLSAgICAgICAgZW5kID0g
ZW5kT2ZQYXJhZ3JhcGgoc3RhcnQpOworICAgICAgICBzdGFydCA9IHN0YXJ0T2ZQYXJhZ3JhcGgo
b3JpZ2luYWxTdGFydCwgQ2FuU2tpcE92ZXJFZGl0aW5nQm91bmRhcnkpOworICAgICAgICBlbmQg
PSBlbmRPZlBhcmFncmFwaChzdGFydCwgQ2FuU2tpcE92ZXJFZGl0aW5nQm91bmRhcnkpOwogICAg
ICAgICBuZXh0TGlzdENoaWxkID0gZW5jbG9zaW5nTGlzdENoaWxkKGVuZC5uZXh0KCkuZGVlcEVx
dWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLCBsaXN0Tm9kZSk7CiAgICAgICAgIEFTU0VSVChu
ZXh0TGlzdENoaWxkICE9IGxpc3RDaGlsZE5vZGUpOwogICAgICAgICBwcmV2aW91c0xpc3RDaGls
ZCA9IGVuY2xvc2luZ0xpc3RDaGlsZChzdGFydC5wcmV2aW91cygpLmRlZXBFcXVpdmFsZW50KCku
ZGVwcmVjYXRlZE5vZGUoKSwgbGlzdE5vZGUpOwpAQCAtMzI3LDggKzMyNyw4IEBAIHN0YXRpYyBF
bGVtZW50KiBhZGphY2VudEVuY2xvc2luZ0xpc3QoY28KIAogUGFzc1JlZlB0cjxIVE1MRWxlbWVu
dD4gSW5zZXJ0TGlzdENvbW1hbmQ6Omxpc3RpZnlQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBvcmlnaW5hbFN0YXJ0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBsaXN0VGFnKQogewotICAg
IFZpc2libGVQb3NpdGlvbiBzdGFydCA9IHN0YXJ0T2ZQYXJhZ3JhcGgob3JpZ2luYWxTdGFydCk7
Ci0gICAgVmlzaWJsZVBvc2l0aW9uIGVuZCA9IGVuZE9mUGFyYWdyYXBoKHN0YXJ0KTsKKyAgICBW
aXNpYmxlUG9zaXRpb24gc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKG9yaWdpbmFsU3RhcnQsIENh
blNraXBPdmVyRWRpdGluZ0JvdW5kYXJ5KTsKKyAgICBWaXNpYmxlUG9zaXRpb24gZW5kID0gZW5k
T2ZQYXJhZ3JhcGgoc3RhcnQsIENhblNraXBPdmVyRWRpdGluZ0JvdW5kYXJ5KTsKICAgICAKICAg
ICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsK
QEAgLTM3NSw4ICszNzUsMTIgQEAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSW5zZXJ0TGlzdENv
bW1hbgogCiAgICAgICAgIC8vIFdlIGluc2VydGVkIHRoZSBsaXN0IGF0IHRoZSBzdGFydCBvZiB0
aGUgY29udGVudCB3ZSdyZSBhYm91dCB0byBtb3ZlCiAgICAgICAgIC8vIFVwZGF0ZSB0aGUgc3Rh
cnQgb2YgY29udGVudCwgc28gd2UgZG9uJ3QgdHJ5IHRvIG1vdmUgdGhlIGxpc3QgaW50byBpdHNl
bGYuICBidWcgMTkwNjYKLSAgICAgICAgaWYgKGluc2VydGlvblBvcyA9PSBzdGFydC5kZWVwRXF1
aXZhbGVudCgpKQotICAgICAgICAgICAgc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKG9yaWdpbmFs
U3RhcnQpOworICAgICAgICAvLyBMYXlvdXQgaXMgbmVjZXNzYXJ5IHNpbmNlIHN0YXJ0J3Mgbm9k
ZSdzIGlubGluZSByZW5kZXJlcnMgbWF5IGhhdmUgYmVlbiBkZXN0cm95ZWQgYnkKKyAgICAgICAg
Ly8gdGhlIGluc2VydGlvbi4KKyAgICAgICAgaWYgKGluc2VydGlvblBvcyA9PSBzdGFydC5kZWVw
RXF1aXZhbGVudCgpKSB7CisgICAgICAgICAgICBsaXN0RWxlbWVudC0+ZG9jdW1lbnQoKS0+dXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgICAgICAgICBzdGFydCA9
IHN0YXJ0T2ZQYXJhZ3JhcGgob3JpZ2luYWxTdGFydCwgQ2FuU2tpcE92ZXJFZGl0aW5nQm91bmRh
cnkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgbW92ZVBhcmFncmFwaChzdGFydCwgZW5kLCBw
b3NpdGlvbkJlZm9yZU5vZGUocGxhY2Vob2xkZXIuZ2V0KCkpLCB0cnVlKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkocmV2aXNpb24gODA2MDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NDcsMTQgKzc0NywyMSBAQCBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZlBhcmFncmFwaChjb25z
dCBWCiAKICAgICBOb2RlKiBzdGFydEJsb2NrID0gZW5jbG9zaW5nQmxvY2soc3RhcnROb2RlKTsK
IAotICAgIE5vZGUgKm5vZGUgPSBzdGFydE5vZGU7CisgICAgTm9kZSogbm9kZSA9IHN0YXJ0Tm9k
ZTsKKyAgICBOb2RlKiBoaWdoZXN0Um9vdCA9IGhpZ2hlc3RFZGl0YWJsZVJvb3QocCk7CiAgICAg
aW50IG9mZnNldCA9IHAuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICBQb3NpdGlvbjo6
QW5jaG9yVHlwZSB0eXBlID0gcC5hbmNob3JUeXBlKCk7CiAKLSAgICBOb2RlICpuID0gc3RhcnRO
b2RlOworICAgIE5vZGUqIG4gPSBzdGFydE5vZGU7CiAgICAgd2hpbGUgKG4pIHsKICAgICAgICAg
aWYgKGJvdW5kYXJ5Q3Jvc3NpbmdSdWxlID09IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5ICYm
IG4tPmlzQ29udGVudEVkaXRhYmxlKCkgIT0gc3RhcnROb2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgp
KQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChib3VuZGFyeUNyb3NzaW5nUnVsZSA9
PSBDYW5Ta2lwT3ZlckVkaXRpbmdCb3VuZGFyeSkgeworICAgICAgICAgICAgd2hpbGUgKG4gJiYg
bi0+aXNDb250ZW50RWRpdGFibGUoKSAhPSBzdGFydE5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkp
CisgICAgICAgICAgICAgICAgbiA9IG4tPnRyYXZlcnNlUHJldmlvdXNOb2RlUG9zdE9yZGVyKHN0
YXJ0QmxvY2spOworICAgICAgICAgICAgaWYgKCFuIHx8ICFuLT5pc0Rlc2NlbmRhbnRPZihoaWdo
ZXN0Um9vdCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgUmVu
ZGVyT2JqZWN0ICpyID0gbi0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKCFyKSB7CiAgICAgICAg
ICAgICBuID0gbi0+dHJhdmVyc2VQcmV2aW91c05vZGVQb3N0T3JkZXIoc3RhcnRCbG9jayk7CkBA
IC04MTMsNiArODIwLDcgQEAgVmlzaWJsZVBvc2l0aW9uIGVuZE9mUGFyYWdyYXBoKGNvbnN0IFZp
cwogICAgIE5vZGUgKnN0YXlJbnNpZGVCbG9jayA9IHN0YXJ0QmxvY2s7CiAgICAgCiAgICAgTm9k
ZSAqbm9kZSA9IHN0YXJ0Tm9kZTsKKyAgICBOb2RlKiBoaWdoZXN0Um9vdCA9IGhpZ2hlc3RFZGl0
YWJsZVJvb3QocCk7CiAgICAgaW50IG9mZnNldCA9IHAuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KTsKICAgICBQb3NpdGlvbjo6QW5jaG9yVHlwZSB0eXBlID0gcC5hbmNob3JUeXBlKCk7CiAKQEAg
LTgyMCw2ICs4MjgsMTMgQEAgVmlzaWJsZVBvc2l0aW9uIGVuZE9mUGFyYWdyYXBoKGNvbnN0IFZp
cwogICAgIHdoaWxlIChuKSB7CiAgICAgICAgIGlmIChib3VuZGFyeUNyb3NzaW5nUnVsZSA9PSBD
YW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSAmJiBuLT5pc0NvbnRlbnRFZGl0YWJsZSgpICE9IHN0
YXJ0Tm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSkKICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBpZiAoYm91bmRhcnlDcm9zc2luZ1J1bGUgPT0gQ2FuU2tpcE92ZXJFZGl0aW5nQm91bmRhcnkp
IHsKKyAgICAgICAgICAgIHdoaWxlIChuICYmIG4tPmlzQ29udGVudEVkaXRhYmxlKCkgIT0gc3Rh
cnROb2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAgICAgICAgICAgICAgIG4gPSBuLT50cmF2
ZXJzZU5leHROb2RlKHN0YXlJbnNpZGVCbG9jayk7CisgICAgICAgICAgICBpZiAoIW4gfHwgIW4t
PmlzRGVzY2VuZGFudE9mKGhpZ2hlc3RSb290KSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCiAgICAgICAgIFJlbmRlck9iamVjdCAqciA9IG4tPnJlbmRlcmVyKCk7CiAgICAg
ICAgIGlmICghcikgewogICAgICAgICAgICAgbiA9IG4tPnRyYXZlcnNlTmV4dE5vZGUoc3RheUlu
c2lkZUJsb2NrKTsKQEAgLTg2Miw5ICs4NzcsMTAgQEAgVmlzaWJsZVBvc2l0aW9uIGVuZE9mUGFy
YWdyYXBoKGNvbnN0IFZpcwogICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24obm9k
ZSwgdHlwZSksIERPV05TVFJFQU0pOwogfQogCisvLyBGSVhNRTogaXNTdGFydE9mUGFyYWdyYXBo
KHN0YXJ0T2ZOZXh0UGFyYWdyYXBoKHBvcykpIGlzIG5vdCBhbHdheXMgdHJ1ZQogVmlzaWJsZVBv
c2l0aW9uIHN0YXJ0T2ZOZXh0UGFyYWdyYXBoKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJs
ZVBvc2l0aW9uKQogewotICAgIFZpc2libGVQb3NpdGlvbiBwYXJhZ3JhcGhFbmQoZW5kT2ZQYXJh
Z3JhcGgodmlzaWJsZVBvc2l0aW9uKSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHBhcmFncmFwaEVu
ZChlbmRPZlBhcmFncmFwaCh2aXNpYmxlUG9zaXRpb24sIENhblNraXBPdmVyRWRpdGluZ0JvdW5k
YXJ5KSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGFmdGVyUGFyYWdyYXBoRW5kKHBhcmFncmFwaEVu
ZC5uZXh0KHRydWUpKTsKICAgICAvLyBUaGUgcG9zaXRpb24gYWZ0ZXIgdGhlIGxhc3QgcG9zaXRp
b24gaW4gdGhlIGxhc3QgY2VsbCBvZiBhIHRhYmxlCiAgICAgLy8gaXMgbm90IHRoZSBzdGFydCBv
ZiB0aGUgbmV4dCBwYXJhZ3JhcGguCkBAIC04NzMsOSArODg5LDkgQEAgVmlzaWJsZVBvc2l0aW9u
IHN0YXJ0T2ZOZXh0UGFyYWdyYXBoKGNvbgogICAgIHJldHVybiBhZnRlclBhcmFncmFwaEVuZDsK
IH0KIAotYm9vbCBpblNhbWVQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uICZhLCBjb25z
dCBWaXNpYmxlUG9zaXRpb24gJmIpCitib29sIGluU2FtZVBhcmFncmFwaChjb25zdCBWaXNpYmxl
UG9zaXRpb24gJmEsIGNvbnN0IFZpc2libGVQb3NpdGlvbiAmYiwgRWRpdGluZ0JvdW5kYXJ5Q3Jv
c3NpbmdSdWxlIGJvdW5kYXJ5Q3Jvc3NpbmdSdWxlKQogewotICAgIHJldHVybiBhLmlzTm90TnVs
bCgpICYmIHN0YXJ0T2ZQYXJhZ3JhcGgoYSkgPT0gc3RhcnRPZlBhcmFncmFwaChiKTsKKyAgICBy
ZXR1cm4gYS5pc05vdE51bGwoKSAmJiBzdGFydE9mUGFyYWdyYXBoKGEsIGJvdW5kYXJ5Q3Jvc3Np
bmdSdWxlKSA9PSBzdGFydE9mUGFyYWdyYXBoKGIsIGJvdW5kYXJ5Q3Jvc3NpbmdSdWxlKTsKIH0K
IAogYm9vbCBpc1N0YXJ0T2ZQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uICZwb3MsIEVk
aXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBib3VuZGFyeUNyb3NzaW5nUnVsZSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5oCShyZXZpc2lvbiA4MDYwMykKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03
MCw3ICs3MCw3IEBAIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1BhcmFncmFwaFBvc2l0aW8KIFZp
c2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9u
ICYsIGludCB4KTsKIGJvb2wgaXNTdGFydE9mUGFyYWdyYXBoKGNvbnN0IFZpc2libGVQb3NpdGlv
biAmLCBFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgPSBDYW5ub3RDcm9zc0VkaXRpbmdCb3Vu
ZGFyeSk7CiBib29sIGlzRW5kT2ZQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uICYsIEVk
aXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSA9IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsK
LWJvb2wgaW5TYW1lUGFyYWdyYXBoKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmLCBjb25zdCBWaXNp
YmxlUG9zaXRpb24gJik7Citib29sIGluU2FtZVBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRp
b24gJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uICYsIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVs
ZSA9IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKIAogLy8gYmxvY2tzICh0cnVlIHBhcmFn
cmFwaHM7IGxpbmUgYnJlYWsgZWxlbWVudHMgZG9uJ3QgYnJlYWsgYmxvY2tzKQogVmlzaWJsZVBv
c2l0aW9uIHN0YXJ0T2ZCbG9jayhjb25zdCBWaXNpYmxlUG9zaXRpb24gJik7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA4MDYwMykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDExLTAzLTA4ICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbnNlcnRVbm9yZGVyZWRMaXN0IG92ZXIgYSBub24tZWRpdGFibGUgcmVnaW9uIGFuZCBtdWx0
aXBsZSBsaW5lcyBlbnRlcnMgYW4gaW5maW5pdGUgbG9vcAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM0MDkKKworICAgICAgICBBdm9pZGluZyBjcmFz
aGVzIGFuZCBpbmZpbml0ZSBsb29wcyB3aGVuIGxpc3RpZnlpbmcgY29udGVudCB3aXRoIG1peGVk
LWVkaXRhYmlsaXR5CisKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0
LXdpdGgtbm9uZWRpdGFibGUtY29udGVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qtd2l0aC1ub25lZGl0YWJsZS1jb250ZW50
Lmh0bWw6IEFkZGVkLgorCiAyMDExLTAzLTA4ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25A
aWdhbGlhLmNvbT4KIAogICAgICAgICBSZWJhc2VsaW5lIGEgR1RLKyByZXN1bHQgYWZ0ZXIgcjgw
NTgyLgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13
aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qtd2l0aC1ub25lZGl0YWJsZS1j
b250ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcv
ZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qtd2l0aC1ub25lZGl0YWJsZS1jb250ZW50LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3RzIGxpc3QgY3JlYXRp
b24gaW4gYW4gZWRpdGFibGUgY29udGV4dCBidXQgYWNyb3NzIG5vbi1lZGl0YWJsZSBjb250ZW50
LiBFZGl0YWJsZSBjb250ZW50IHNob3VsZCBiZSBwdWxsZWQgaW50byB0aGUgbGlzdCBhbmQgbm90
IGNyYXNoLgorRWRpdGFibGUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgYSBub24tZWRpdGFibGUgaW4g
dGhlIG1pZGRsZQorQW5vdGhlciBlZGl0YWJsZSBwYXJhZ3JhcGguCitJbnNlcnQgTGlzdApJbmRl
eDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVk
aXRhYmxlLWNvbnRlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4
ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVudC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13
aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMiBA
QAorPCFET0NUWVBFIGh0bWw+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGhpcyB0ZXN0cyBsaXN0
IGNyZWF0aW9uIGluIGFuIGVkaXRhYmxlIGNvbnRleHQgYnV0IGFjcm9zcyBub24tZWRpdGFibGUg
Y29udGVudC4gRWRpdGFibGUgY29udGVudCBzaG91bGQgYmUgcHVsbGVkIGludG8gdGhlIGxpc3Qg
YW5kIG5vdCBjcmFzaC48L2Rpdj4KKzxkaXYgY29udGVudGVkaXRhYmxlPSJ0cnVlIiBpZD0idGVz
dCIgc3R5bGU9InBhZGRpbmc6IDFlbTsiPgorICBFZGl0YWJsZSBwYXJhZ3JhcGggY29udGFpbmlu
ZyBhIDxzcGFuIGNvbnRlbnRlZGl0YWJsZT0iZmFsc2UiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9y
OiBMaWdodEdyYXk7Ij5ub24tZWRpdGFibGU8L3NwYW4+IGluIHRoZSBtaWRkbGU8YnI+CisgIEFu
b3RoZXIgZWRpdGFibGUgcGFyYWdyYXBoLgorPC9kaXY+Cis8YnV0dG9uIG9uY2xpY2s9Imluc2Vy
dExpc3QoKTsiPkluc2VydCBMaXN0PC9idXR0b24+Cis8c2NyaXB0PgorZnVuY3Rpb24gaW5zZXJ0
TGlzdCgpIHsKKyAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydHVub3JkZXJlZGxpc3QnLCBm
YWxzZSwgJycpOworfQorCit2YXIgcyA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKK3ZhciBkaXYg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworcy5zZXRQb3NpdGlvbihkaXYuY2hp
bGROb2Rlc1swXSwgMTApOworcy5tb2RpZnkoImV4dGVuZCIsICJmb3J3YXJkIiwgImxpbmUiKTsK
KworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICBpbnNlcnRMaXN0KCk7Cisg
IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cit9Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85388</attachid>
            <date>2011-03-10 13:59:59 -0800</date>
            <delta_ts>2011-03-10 15:13:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53409-20110310135958.patch</filename>
            <type>text/plain</type>
            <size>17055</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNzU0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDMtMDggIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluc2VydFVub3JkZXJlZExpc3Qgb3ZlciBhIG5vbi1lZGl0
YWJsZSByZWdpb24gYW5kIG11bHRpcGxlIGxpbmVzIGVudGVycyBhbiBpbmZpbml0ZSBsb29wCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzQwOQorCisg
ICAgICAgIEZpeGluZyBicm9rZW4gaGFuZGxpbmcgb2YgbWl4ZWQtZWRpdGFiaWxpdHkgY29udGVu
dCBmb3IgSW5zZXJ0TGlzdENvbW1hbmQuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9leGVjQ29t
bWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQuaHRtbAorCisgICAgICAg
ICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6Y2xlYW51cEFmdGVyRGVsZXRpb24pOiBDaGFuZ2VkIHNpZ25h
dHVyZSB0byB0YWtlIHRoZSBkZXN0aW5hdGlvbgorICAgICAgICBwb3NpdGlvbiBmb3IgdGhlIGFj
dGl2ZSBlZGl0aW5nIGNvbW1hbmQuIFdpdGhvdXQgdGhpcywgdGhlcmUgYXJlIGNhc2VzIHdoZW4g
dGhlIGRlc3RpbmF0aW9uIGhhcHBlbnMKKyAgICAgICAgdG8gYmUgYSBwbGFjZWhvbGRlciwgYW5k
IHdlIHJlbW92ZSBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpt
b3ZlUGFyYWdyYXBocyk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5o
OgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHkpOiBBZGRlZCBsb2dpYyB0byB0aGUgcGFy
YWdyYXBoIGl0ZXJhdGlvbiBsb29wIHRvIGhhbmRsZSBwb2NrZXRzIG9mCisgICAgICAgIG5vbi1l
ZGl0YWJsZSBjb250ZW50IGluIGFuIGVkaXRhYmxlIGNvbnRleHQuIFByZXZpb3VzbHksIHRoaXMg
Y291bGQgY2F1c2UgYW4gaW5maW5pdGUgbG9vcC4KKyAgICAgICAgKiBlZGl0aW5nL3Zpc2libGVf
dW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRPZlBhcmFncmFwaCk6IEFkZGVkIGEg
bW9kZSBvZiBvcGVyYXRpb24gd2hlcmUgd2UnbGwganVtcCBhY3Jvc3Mgbm9uLWVkaXRhYmxlCisg
ICAgICAgIGNvbnRlbnQgaW4gdGhlIHNhbWUgcGFyYWdyYXBoIHRvIHJlYWNoIHRoZSBhY3R1YWwg
ZWRpdGFibGUgcGFyYWdyYXBoIHN0YXJ0LgorICAgICAgICAoV2ViQ29yZTo6ZW5kT2ZQYXJhZ3Jh
cGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T2ZOZXh0UGFyYWdyYXBoKTogTm93
IHVzZXMgdGhlIGFmb3JlbWVudGlvbmVkIG5vbi1lZGl0YWJsZSBjb250ZW50IHNraXBwaW5nIG1v
ZGUgb2YKKyAgICAgICAgZW5kT2ZQYXJhZ3JhcGguCisKIDIwMTEtMDMtMTAgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDgwNzU0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMjYzNiw2ICsyMjYzNiw3IEBA
CiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMy
ODQzMDg5MDJCMTEwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFBy
b2plY3QgIldlYkNvcmUiICovOwogCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMi40
IjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsKIAkJCWhhc1NjYW5uZWRGb3JFbmNv
ZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0gKAogCQkJCUVuZ2xpc2gsCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkocmV2aXNp
b24gODA3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMwLDEwICs4MzAsMTAgQEAgdm9pZCBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6Y2xvbmVQYXJhZ3JhcAogLy8gRGVsZXRpbmcgYSBwYXJhZ3JhcGggd2lsbCBs
ZWF2ZSBhIHBsYWNlaG9sZGVyLiBSZW1vdmUgaXQgKGFuZCBwcnVuZQogLy8gZW1wdHkgb3IgdW5y
ZW5kZXJlZCBwYXJlbnRzKS4KIAotdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6Y2xlYW51cEFm
dGVyRGVsZXRpb24oKQordm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6Y2xlYW51cEFmdGVyRGVs
ZXRpb24oVmlzaWJsZVBvc2l0aW9uIGRlc3RpbmF0aW9uKQogewogICAgIFZpc2libGVQb3NpdGlv
biBjYXJldEFmdGVyRGVsZXRlID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCk7Ci0g
ICAgaWYgKGlzU3RhcnRPZlBhcmFncmFwaChjYXJldEFmdGVyRGVsZXRlKSAmJiBpc0VuZE9mUGFy
YWdyYXBoKGNhcmV0QWZ0ZXJEZWxldGUpKSB7CisgICAgaWYgKGNhcmV0QWZ0ZXJEZWxldGUgIT0g
ZGVzdGluYXRpb24gJiYgaXNTdGFydE9mUGFyYWdyYXBoKGNhcmV0QWZ0ZXJEZWxldGUpICYmIGlz
RW5kT2ZQYXJhZ3JhcGgoY2FyZXRBZnRlckRlbGV0ZSkpIHsKICAgICAgICAgLy8gTm90ZTogV2Ug
d2FudCB0aGUgcmlnaHRtb3N0IGNhbmRpZGF0ZS4KICAgICAgICAgUG9zaXRpb24gcG9zaXRpb24g
PSBjYXJldEFmdGVyRGVsZXRlLmRlZXBFcXVpdmFsZW50KCkuZG93bnN0cmVhbSgpOwogICAgICAg
ICBOb2RlKiBub2RlID0gcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKTsKQEAgLTk0Nyw4ICs5NDcs
OCBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAgICAgICAgIH0K
ICAgICB9CiAgICAgCi0gICAgVmlzaWJsZVBvc2l0aW9uIGJlZm9yZVBhcmFncmFwaCA9IHN0YXJ0
T2ZQYXJhZ3JhcGhUb01vdmUucHJldmlvdXMoKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gYWZ0ZXJQ
YXJhZ3JhcGgoZW5kT2ZQYXJhZ3JhcGhUb01vdmUubmV4dCgpKTsKKyAgICBWaXNpYmxlUG9zaXRp
b24gYmVmb3JlUGFyYWdyYXBoID0gc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5wcmV2aW91cyhDYW5u
b3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIGFmdGVyUGFyYWdy
YXBoKGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkp
KTsKIAogICAgIC8vIFdlIHVwc3RyZWFtKCkgdGhlIGVuZCBhbmQgZG93bnN0cmVhbSgpIHRoZSBz
dGFydCBzbyB0aGF0IHdlIGRvbid0IGluY2x1ZGUgY29sbGFwc2VkIHdoaXRlc3BhY2UgaW4gdGhl
IG1vdmUuCiAgICAgLy8gV2hlbiB3ZSBwYXN0ZSBhIGZyYWdtZW50LCBzcGFjZXMgYWZ0ZXIgdGhl
IGVuZCBhbmQgYmVmb3JlIHRoZSBzdGFydCBhcmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJl
IHJlbmRlcmVkLgpAQCAtOTg1LDggKzk4NSw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6
Om1vdmVQYXJhZ3JhcGgKICAgICBkZWxldGVTZWxlY3Rpb24oZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UpOwogCiAgICAgQVNTRVJUKGRlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkuYW5jaG9y
Tm9kZSgpLT5pbkRvY3VtZW50KCkpOwotCi0gICAgY2xlYW51cEFmdGVyRGVsZXRpb24oKTsKKyAg
ICBjbGVhbnVwQWZ0ZXJEZWxldGlvbihkZXN0aW5hdGlvbik7CiAgICAgQVNTRVJUKGRlc3RpbmF0
aW9uLmRlZXBFcXVpdmFsZW50KCkuYW5jaG9yTm9kZSgpLT5pbkRvY3VtZW50KCkpOwogCiAgICAg
Ly8gQWRkIGEgYnIgaWYgcHJ1bmluZyBhbiBlbXB0eSBibG9jayBsZXZlbCBlbGVtZW50IGNhdXNl
ZCBhIGNvbGxhcHNlLiBGb3IgZXhhbXBsZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Q29tcG9zaXRlRWRpdENvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgJKHJldmlzaW9uIDgwNzU0KQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDksNyArMTA5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgbW92ZVBhcmFncmFwaHMoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiwgYm9vbCBwcmVzZXJ2ZVNlbGVjdGlvbiA9IGZhbHNlLCBib29sIHByZXNlcnZlU3R5
bGUgPSB0cnVlKTsKICAgICB2b2lkIG1vdmVQYXJhZ3JhcGhXaXRoQ2xvbmVzKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwaFRvTW92ZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBlbmRPZlBhcmFncmFwaFRvTW92ZSwgRWxlbWVudCogYmxvY2tFbGVtZW50LCBOb2RlKiBvdXRl
ck5vZGUpOwogICAgIHZvaWQgY2xvbmVQYXJhZ3JhcGhVbmRlck5ld0VsZW1lbnQoUG9zaXRpb24m
IHN0YXJ0LCBQb3NpdGlvbiYgZW5kLCBOb2RlKiBvdXRlck5vZGUsIEVsZW1lbnQqIGJsb2NrRWxl
bWVudCk7Ci0gICAgdm9pZCBjbGVhbnVwQWZ0ZXJEZWxldGlvbigpOworICAgIHZvaWQgY2xlYW51
cEFmdGVyRGVsZXRpb24oVmlzaWJsZVBvc2l0aW9uIGRlc3RpbmF0aW9uID0gVmlzaWJsZVBvc2l0
aW9uKCkpOwogICAgIAogICAgIGJvb2wgYnJlYWtPdXRPZkVtcHR5TGlzdEl0ZW0oKTsKICAgICBi
b29sIGJyZWFrT3V0T2ZFbXB0eU1haWxCbG9ja3F1b3RlZFBhcmFncmFwaCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDgw
NzU0KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIEluc2VydExpc3RDb21tYW5kOjpk
b0FwcGx5KCkKICAgICAvLyBGSVhNRTogV2UgcGFpbnQgdGhlIGdhcCBiZWZvcmUgc29tZSBwYXJh
Z3JhcGhzIHRoYXQgYXJlIGluZGVudGVkIHdpdGggbGVmdCAKICAgICAvLyBtYXJnaW4vcGFkZGlu
ZywgYnV0IG5vdCBvdGhlcnMuICBXZSBzaG91bGQgbWFrZSB0aGUgZ2FwIHBhaW50aW5nIG1vcmUg
Y29uc2lzdGVudCBhbmQgCiAgICAgLy8gdGhlbiB1c2UgYSBsZWZ0IG1hcmdpbi9wYWRkaW5nIHJ1
bGUgaGVyZS4KLSAgICBpZiAodmlzaWJsZUVuZCAhPSB2aXNpYmxlU3RhcnQgJiYgaXNTdGFydE9m
UGFyYWdyYXBoKHZpc2libGVFbmQpKQorICAgIGlmICh2aXNpYmxlRW5kICE9IHZpc2libGVTdGFy
dCAmJiBpc1N0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJsZUVuZCwgQ2FuU2tpcE92ZXJFZGl0aW5nQm91
bmRhcnkpKQogICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbih2aXNp
YmxlU3RhcnQsIHZpc2libGVFbmQucHJldmlvdXMoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkp
KSk7CiAKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBsaXN0VGFnID0gKG1fdHlwZSA9PSBPcmRl
cmVkTGlzdCkgPyBvbFRhZyA6IHVsVGFnOwpAQCAtMTMwLDE0ICsxMzAsMTQgQEAgdm9pZCBJbnNl
cnRMaXN0Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIEFTU0VSVChzZWxlY3Rpb24uaXNSYW5n
ZSgpKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZTZWxlY3Rpb24gPSBzZWxlY3Rp
b24udmlzaWJsZVN0YXJ0KCk7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBlbmRPZlNlbGVjdGlv
biA9IHNlbGVjdGlvbi52aXNpYmxlRW5kKCk7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiBzdGFy
dE9mTGFzdFBhcmFncmFwaCA9IHN0YXJ0T2ZQYXJhZ3JhcGgoZW5kT2ZTZWxlY3Rpb24pOworICAg
ICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZkxhc3RQYXJhZ3JhcGggPSBzdGFydE9mUGFyYWdy
YXBoKGVuZE9mU2VsZWN0aW9uLCBDYW5Ta2lwT3ZlckVkaXRpbmdCb3VuZGFyeSk7CiAKLSAgICAg
ICAgaWYgKHN0YXJ0T2ZQYXJhZ3JhcGgoc3RhcnRPZlNlbGVjdGlvbikgIT0gc3RhcnRPZkxhc3RQ
YXJhZ3JhcGgpIHsKKyAgICAgICAgaWYgKHN0YXJ0T2ZQYXJhZ3JhcGgoc3RhcnRPZlNlbGVjdGlv
biwgQ2FuU2tpcE92ZXJFZGl0aW5nQm91bmRhcnkpICE9IHN0YXJ0T2ZMYXN0UGFyYWdyYXBoKSB7
CiAgICAgICAgICAgICBib29sIGZvcmNlQ3JlYXRlTGlzdCA9ICFzZWxlY3Rpb25IYXNMaXN0T2ZU
eXBlKHNlbGVjdGlvbiwgbGlzdFRhZyk7CiAKICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gY3Vy
cmVudFNlbGVjdGlvbiA9IGVuZGluZ1NlbGVjdGlvbigpLmZpcnN0UmFuZ2UoKTsKICAgICAgICAg
ICAgIFZpc2libGVQb3NpdGlvbiBzdGFydE9mQ3VycmVudFBhcmFncmFwaCA9IHN0YXJ0T2ZTZWxl
Y3Rpb247Ci0gICAgICAgICAgICB3aGlsZSAoc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGggIT0gc3Rh
cnRPZkxhc3RQYXJhZ3JhcGgpIHsKKyAgICAgICAgICAgIHdoaWxlICghaW5TYW1lUGFyYWdyYXBo
KHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBoLCBzdGFydE9mTGFzdFBhcmFncmFwaCwgQ2FuQ3Jvc3NF
ZGl0aW5nQm91bmRhcnkpKSB7CiAgICAgICAgICAgICAgICAgLy8gZG9BcHBseSgpIG1heSBvcGVy
YXRlIG9uIGFuZCByZW1vdmUgdGhlIGxhc3QgcGFyYWdyYXBoIG9mIHRoZSBzZWxlY3Rpb24gZnJv
bSB0aGUgZG9jdW1lbnQgCiAgICAgICAgICAgICAgICAgLy8gaWYgaXQncyBpbiB0aGUgc2FtZSBs
aXN0IGl0ZW0gYXMgc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGguICBSZXR1cm4gZWFybHkgdG8gYXZv
aWQgYW4gCiAgICAgICAgICAgICAgICAgLy8gaW5maW5pdGUgbG9vcCBhbmQgYmVjYXVzZSB0aGVy
ZSBpcyBubyBtb3JlIHdvcmsgdG8gYmUgZG9uZS4KQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIElu
c2VydExpc3RDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0
U2VsZWN0aW9uUmFuZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgICAgIGVuZE9mU2VsZWN0aW9uID0gbGFzdFNlbGVjdGlvblJhbmdlLT5zdGFydFBv
c2l0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXJ0T2ZMYXN0UGFyYWdyYXBoID0gc3Rh
cnRPZlBhcmFncmFwaChlbmRPZlNlbGVjdGlvbik7CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0
T2ZMYXN0UGFyYWdyYXBoID0gc3RhcnRPZlBhcmFncmFwaChlbmRPZlNlbGVjdGlvbiwgQ2FuU2tp
cE92ZXJFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
ICAgIC8vIEZldGNoIHRoZSBzdGFydCBvZiB0aGUgc2VsZWN0aW9uIGFmdGVyIG1vdmluZyB0aGUg
Zmlyc3QgcGFyYWdyYXBoLApAQCAtMjYzLDggKzI2Myw4IEBAIHZvaWQgSW5zZXJ0TGlzdENvbW1h
bmQ6OnVubGlzdGlmeVBhcmFncmEKICAgICAgICAgcHJldmlvdXNMaXN0Q2hpbGQgPSBsaXN0Q2hp
bGROb2RlLT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBBIHBh
cmFncmFwaCBpcyB2aXN1YWxseSBhIGxpc3QgaXRlbSBtaW51cyBhIGxpc3QgbWFya2VyLiAgVGhl
IHBhcmFncmFwaCB3aWxsIGJlIG1vdmVkLgotICAgICAgICBzdGFydCA9IHN0YXJ0T2ZQYXJhZ3Jh
cGgob3JpZ2luYWxTdGFydCk7Ci0gICAgICAgIGVuZCA9IGVuZE9mUGFyYWdyYXBoKHN0YXJ0KTsK
KyAgICAgICAgc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKG9yaWdpbmFsU3RhcnQsIENhblNraXBP
dmVyRWRpdGluZ0JvdW5kYXJ5KTsKKyAgICAgICAgZW5kID0gZW5kT2ZQYXJhZ3JhcGgoc3RhcnQs
IENhblNraXBPdmVyRWRpdGluZ0JvdW5kYXJ5KTsKICAgICAgICAgbmV4dExpc3RDaGlsZCA9IGVu
Y2xvc2luZ0xpc3RDaGlsZChlbmQubmV4dCgpLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5v
ZGUoKSwgbGlzdE5vZGUpOwogICAgICAgICBBU1NFUlQobmV4dExpc3RDaGlsZCAhPSBsaXN0Q2hp
bGROb2RlKTsKICAgICAgICAgcHJldmlvdXNMaXN0Q2hpbGQgPSBlbmNsb3NpbmdMaXN0Q2hpbGQo
c3RhcnQucHJldmlvdXMoKS5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCksIGxpc3RO
b2RlKTsKQEAgLTMyNyw4ICszMjcsOCBAQCBzdGF0aWMgRWxlbWVudCogYWRqYWNlbnRFbmNsb3Np
bmdMaXN0KGNvCiAKIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEluc2VydExpc3RDb21tYW5kOjps
aXN0aWZ5UGFyYWdyYXBoKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgb3JpZ2luYWxTdGFydCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgbGlzdFRhZykKIHsKLSAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQg
PSBzdGFydE9mUGFyYWdyYXBoKG9yaWdpbmFsU3RhcnQpOwotICAgIFZpc2libGVQb3NpdGlvbiBl
bmQgPSBlbmRPZlBhcmFncmFwaChzdGFydCk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0ID0g
c3RhcnRPZlBhcmFncmFwaChvcmlnaW5hbFN0YXJ0LCBDYW5Ta2lwT3ZlckVkaXRpbmdCb3VuZGFy
eSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIGVuZCA9IGVuZE9mUGFyYWdyYXBoKHN0YXJ0LCBDYW5T
a2lwT3ZlckVkaXRpbmdCb3VuZGFyeSk7CiAgICAgCiAgICAgaWYgKHN0YXJ0LmlzTnVsbCgpIHx8
IGVuZC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zNzUsOCArMzc1LDEyIEBAIFBh
c3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEluc2VydExpc3RDb21tYW4KIAogICAgICAgICAvLyBXZSBp
bnNlcnRlZCB0aGUgbGlzdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGNvbnRlbnQgd2UncmUgYWJvdXQg
dG8gbW92ZQogICAgICAgICAvLyBVcGRhdGUgdGhlIHN0YXJ0IG9mIGNvbnRlbnQsIHNvIHdlIGRv
bid0IHRyeSB0byBtb3ZlIHRoZSBsaXN0IGludG8gaXRzZWxmLiAgYnVnIDE5MDY2Ci0gICAgICAg
IGlmIChpbnNlcnRpb25Qb3MgPT0gc3RhcnQuZGVlcEVxdWl2YWxlbnQoKSkKLSAgICAgICAgICAg
IHN0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChvcmlnaW5hbFN0YXJ0KTsKKyAgICAgICAgLy8gTGF5
b3V0IGlzIG5lY2Vzc2FyeSBzaW5jZSBzdGFydCdzIG5vZGUncyBpbmxpbmUgcmVuZGVyZXJzIG1h
eSBoYXZlIGJlZW4gZGVzdHJveWVkIGJ5CisgICAgICAgIC8vIHRoZSBpbnNlcnRpb24uCisgICAg
ICAgIGlmIChpbnNlcnRpb25Qb3MgPT0gc3RhcnQuZGVlcEVxdWl2YWxlbnQoKSkgeworICAgICAg
ICAgICAgbGlzdEVsZW1lbnQtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cygpOworICAgICAgICAgICAgc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKG9yaWdp
bmFsU3RhcnQsIENhblNraXBPdmVyRWRpdGluZ0JvdW5kYXJ5KTsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIG1vdmVQYXJhZ3JhcGgoc3RhcnQsIGVuZCwgcG9zaXRpb25CZWZvcmVOb2RlKHBsYWNl
aG9sZGVyLmdldCgpKSwgdHJ1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2li
bGVfdW5pdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJs
ZV91bml0cy5jcHAJKHJldmlzaW9uIDgwNzU0KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy92
aXNpYmxlX3VuaXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUxLDE0ICs3NTEsMjEgQEAgVmlz
aWJsZVBvc2l0aW9uIHN0YXJ0T2ZQYXJhZ3JhcGgoY29uc3QgVgogCiAgICAgTm9kZSogc3RhcnRC
bG9jayA9IGVuY2xvc2luZ0Jsb2NrKHN0YXJ0Tm9kZSk7CiAKLSAgICBOb2RlICpub2RlID0gc3Rh
cnROb2RlOworICAgIE5vZGUqIG5vZGUgPSBzdGFydE5vZGU7CisgICAgTm9kZSogaGlnaGVzdFJv
b3QgPSBoaWdoZXN0RWRpdGFibGVSb290KHApOwogICAgIGludCBvZmZzZXQgPSBwLmRlcHJlY2F0
ZWRFZGl0aW5nT2Zmc2V0KCk7CiAgICAgUG9zaXRpb246OkFuY2hvclR5cGUgdHlwZSA9IHAuYW5j
aG9yVHlwZSgpOwogCi0gICAgTm9kZSAqbiA9IHN0YXJ0Tm9kZTsKKyAgICBOb2RlKiBuID0gc3Rh
cnROb2RlOwogICAgIHdoaWxlIChuKSB7CiAgICAgICAgIGlmIChib3VuZGFyeUNyb3NzaW5nUnVs
ZSA9PSBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSAmJiBuLT5pc0NvbnRlbnRFZGl0YWJsZSgp
ICE9IHN0YXJ0Tm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSkKICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBpZiAoYm91bmRhcnlDcm9zc2luZ1J1bGUgPT0gQ2FuU2tpcE92ZXJFZGl0aW5nQm91
bmRhcnkpIHsKKyAgICAgICAgICAgIHdoaWxlIChuICYmIG4tPmlzQ29udGVudEVkaXRhYmxlKCkg
IT0gc3RhcnROb2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAgICAgICAgICAgICAgIG4gPSBu
LT50cmF2ZXJzZVByZXZpb3VzTm9kZVBvc3RPcmRlcihzdGFydEJsb2NrKTsKKyAgICAgICAgICAg
IGlmICghbiB8fCAhbi0+aXNEZXNjZW5kYW50T2YoaGlnaGVzdFJvb3QpKQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIFJlbmRlck9iamVjdCAqciA9IG4tPnJlbmRl
cmVyKCk7CiAgICAgICAgIGlmICghcikgewogICAgICAgICAgICAgbiA9IG4tPnRyYXZlcnNlUHJl
dmlvdXNOb2RlUG9zdE9yZGVyKHN0YXJ0QmxvY2spOwpAQCAtODE3LDYgKzgyNCw3IEBAIFZpc2li
bGVQb3NpdGlvbiBlbmRPZlBhcmFncmFwaChjb25zdCBWaXMKICAgICBOb2RlICpzdGF5SW5zaWRl
QmxvY2sgPSBzdGFydEJsb2NrOwogICAgIAogICAgIE5vZGUgKm5vZGUgPSBzdGFydE5vZGU7Cisg
ICAgTm9kZSogaGlnaGVzdFJvb3QgPSBoaWdoZXN0RWRpdGFibGVSb290KHApOwogICAgIGludCBv
ZmZzZXQgPSBwLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAgICAgUG9zaXRpb246OkFuY2hv
clR5cGUgdHlwZSA9IHAuYW5jaG9yVHlwZSgpOwogCkBAIC04MjQsNiArODMyLDEzIEBAIFZpc2li
bGVQb3NpdGlvbiBlbmRPZlBhcmFncmFwaChjb25zdCBWaXMKICAgICB3aGlsZSAobikgewogICAg
ICAgICBpZiAoYm91bmRhcnlDcm9zc2luZ1J1bGUgPT0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRh
cnkgJiYgbi0+aXNDb250ZW50RWRpdGFibGUoKSAhPSBzdGFydE5vZGUtPmlzQ29udGVudEVkaXRh
YmxlKCkpCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGJvdW5kYXJ5Q3Jvc3NpbmdS
dWxlID09IENhblNraXBPdmVyRWRpdGluZ0JvdW5kYXJ5KSB7CisgICAgICAgICAgICB3aGlsZSAo
biAmJiBuLT5pc0NvbnRlbnRFZGl0YWJsZSgpICE9IHN0YXJ0Tm9kZS0+aXNDb250ZW50RWRpdGFi
bGUoKSkKKyAgICAgICAgICAgICAgICBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZShzdGF5SW5zaWRl
QmxvY2spOworICAgICAgICAgICAgaWYgKCFuIHx8ICFuLT5pc0Rlc2NlbmRhbnRPZihoaWdoZXN0
Um9vdCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBSZW5k
ZXJPYmplY3QgKnIgPSBuLT5yZW5kZXJlcigpOwogICAgICAgICBpZiAoIXIpIHsKICAgICAgICAg
ICAgIG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKHN0YXlJbnNpZGVCbG9jayk7CkBAIC04NjYsOSAr
ODgxLDEwIEBAIFZpc2libGVQb3NpdGlvbiBlbmRPZlBhcmFncmFwaChjb25zdCBWaXMKICAgICBy
ZXR1cm4gVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKG5vZGUsIHR5cGUpLCBET1dOU1RSRUFNKTsK
IH0KIAorLy8gRklYTUU6IGlzU3RhcnRPZlBhcmFncmFwaChzdGFydE9mTmV4dFBhcmFncmFwaChw
b3MpKSBpcyBub3QgYWx3YXlzIHRydWUKIFZpc2libGVQb3NpdGlvbiBzdGFydE9mTmV4dFBhcmFn
cmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbikKIHsKLSAgICBWaXNp
YmxlUG9zaXRpb24gcGFyYWdyYXBoRW5kKGVuZE9mUGFyYWdyYXBoKHZpc2libGVQb3NpdGlvbikp
OworICAgIFZpc2libGVQb3NpdGlvbiBwYXJhZ3JhcGhFbmQoZW5kT2ZQYXJhZ3JhcGgodmlzaWJs
ZVBvc2l0aW9uLCBDYW5Ta2lwT3ZlckVkaXRpbmdCb3VuZGFyeSkpOwogICAgIFZpc2libGVQb3Np
dGlvbiBhZnRlclBhcmFncmFwaEVuZChwYXJhZ3JhcGhFbmQubmV4dChDYW5ub3RDcm9zc0VkaXRp
bmdCb3VuZGFyeSkpOwogICAgIC8vIFRoZSBwb3NpdGlvbiBhZnRlciB0aGUgbGFzdCBwb3NpdGlv
biBpbiB0aGUgbGFzdCBjZWxsIG9mIGEgdGFibGUKICAgICAvLyBpcyBub3QgdGhlIHN0YXJ0IG9m
IHRoZSBuZXh0IHBhcmFncmFwaC4KQEAgLTg3Nyw5ICs4OTMsOSBAQCBWaXNpYmxlUG9zaXRpb24g
c3RhcnRPZk5leHRQYXJhZ3JhcGgoY29uCiAgICAgcmV0dXJuIGFmdGVyUGFyYWdyYXBoRW5kOwog
fQogCi1ib29sIGluU2FtZVBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24gJmEsIGNvbnN0
IFZpc2libGVQb3NpdGlvbiAmYikKK2Jvb2wgaW5TYW1lUGFyYWdyYXBoKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiAmYSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uICZiLCBFZGl0aW5nQm91bmRhcnlDcm9z
c2luZ1J1bGUgYm91bmRhcnlDcm9zc2luZ1J1bGUpCiB7Ci0gICAgcmV0dXJuIGEuaXNOb3ROdWxs
KCkgJiYgc3RhcnRPZlBhcmFncmFwaChhKSA9PSBzdGFydE9mUGFyYWdyYXBoKGIpOworICAgIHJl
dHVybiBhLmlzTm90TnVsbCgpICYmIHN0YXJ0T2ZQYXJhZ3JhcGgoYSwgYm91bmRhcnlDcm9zc2lu
Z1J1bGUpID09IHN0YXJ0T2ZQYXJhZ3JhcGgoYiwgYm91bmRhcnlDcm9zc2luZ1J1bGUpOwogfQog
CiBib29sIGlzU3RhcnRPZlBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24gJnBvcywgRWRp
dGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIGJvdW5kYXJ5Q3Jvc3NpbmdSdWxlKQpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmgJKHJldmlzaW9uIDgwNzU0KQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDcgKzcwLDcgQEAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzUGFyYWdyYXBoUG9zaXRpbwogVmlz
aWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24g
JiwgaW50IHgpOwogYm9vbCBpc1N0YXJ0T2ZQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9u
ICYsIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSA9IENhbm5vdENyb3NzRWRpdGluZ0JvdW5k
YXJ5KTsKIGJvb2wgaXNFbmRPZlBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24gJiwgRWRp
dGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlID0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwot
Ym9vbCBpblNhbWVQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uICYsIGNvbnN0IFZpc2li
bGVQb3NpdGlvbiAmKTsKK2Jvb2wgaW5TYW1lUGFyYWdyYXBoKGNvbnN0IFZpc2libGVQb3NpdGlv
biAmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24gJiwgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxl
ID0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogCiAvLyBibG9ja3MgKHRydWUgcGFyYWdy
YXBoczsgbGluZSBicmVhayBlbGVtZW50cyBkb24ndCBicmVhayBibG9ja3MpCiBWaXNpYmxlUG9z
aXRpb24gc3RhcnRPZkJsb2NrKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKTsKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDgwNzU0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMDggIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEluc2VydFVub3JkZXJlZExpc3Qgb3ZlciBhIG5vbi1lZGl0YWJsZSByZWdpb24gYW5kIG11bHRp
cGxlIGxpbmVzIGVudGVycyBhbiBpbmZpbml0ZSBsb29wCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzQwOQorCisgICAgICAgIEF2b2lkaW5nIGNyYXNo
ZXMgYW5kIGluZmluaXRlIGxvb3BzIHdoZW4gbGlzdGlmeWluZyBjb250ZW50IHdpdGggbWl4ZWQt
ZWRpdGFiaWxpdHkKKworICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qt
d2l0aC1ub25lZGl0YWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQu
aHRtbDogQWRkZWQuCisKIDIwMTEtMDMtMTAgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFNraXAgYSB0ZXN0IHRoYXQgc29tZXRpbWVzIHRpbWVzIG91dCBpbiBXaW5k
b3dzIERlYnVnIGJ1aWxkcwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9p
bnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qtd2l0aC1u
b25lZGl0YWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qtd2l0aC1ub25lZGl0YWJsZS1jb250
ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3Rz
IGxpc3QgY3JlYXRpb24gaW4gYW4gZWRpdGFibGUgY29udGV4dCBidXQgYWNyb3NzIG5vbi1lZGl0
YWJsZSBjb250ZW50LiBFZGl0YWJsZSBjb250ZW50IHNob3VsZCBiZSBwdWxsZWQgaW50byB0aGUg
bGlzdCBhbmQgbm90IGNyYXNoLgorRWRpdGFibGUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgYSBub24t
ZWRpdGFibGUgaW4gdGhlIG1pZGRsZQorQW5vdGhlciBlZGl0YWJsZSBwYXJhZ3JhcGguCitJbnNl
cnQgTGlzdApJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQtbGlz
dC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVu
dC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9p
bnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGhp
cyB0ZXN0cyBsaXN0IGNyZWF0aW9uIGluIGFuIGVkaXRhYmxlIGNvbnRleHQgYnV0IGFjcm9zcyBu
b24tZWRpdGFibGUgY29udGVudC4gRWRpdGFibGUgY29udGVudCBzaG91bGQgYmUgcHVsbGVkIGlu
dG8gdGhlIGxpc3QgYW5kIG5vdCBjcmFzaC48L2Rpdj4KKzxkaXYgY29udGVudGVkaXRhYmxlPSJ0
cnVlIiBpZD0idGVzdCIgc3R5bGU9InBhZGRpbmc6IDFlbTsiPgorICBFZGl0YWJsZSBwYXJhZ3Jh
cGggY29udGFpbmluZyBhIDxzcGFuIGNvbnRlbnRlZGl0YWJsZT0iZmFsc2UiIHN0eWxlPSJiYWNr
Z3JvdW5kLWNvbG9yOiBMaWdodEdyYXk7Ij5ub24tZWRpdGFibGU8L3NwYW4+IGluIHRoZSBtaWRk
bGU8YnI+CisgIEFub3RoZXIgZWRpdGFibGUgcGFyYWdyYXBoLgorPC9kaXY+Cis8YnV0dG9uIG9u
Y2xpY2s9Imluc2VydExpc3QoKTsiPkluc2VydCBMaXN0PC9idXR0b24+Cis8c2NyaXB0PgorZnVu
Y3Rpb24gaW5zZXJ0TGlzdCgpIHsKKyAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydHVub3Jk
ZXJlZGxpc3QnLCBmYWxzZSwgJycpOworfQorCit2YXIgcyA9IHdpbmRvdy5nZXRTZWxlY3Rpb24o
KTsKK3ZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworcy5zZXRQb3Np
dGlvbihkaXYuY2hpbGROb2Rlc1swXSwgMTApOworcy5tb2RpZnkoImV4dGVuZCIsICJmb3J3YXJk
IiwgImxpbmUiKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICBpbnNl
cnRMaXN0KCk7CisgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cit9
Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85394</attachid>
            <date>2011-03-10 15:13:55 -0800</date>
            <delta_ts>2011-03-10 15:22:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53409-20110310151354.patch</filename>
            <type>text/plain</type>
            <size>16780</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNzY4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMDMtMTAgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluc2VydFVub3JkZXJlZExpc3Qgb3ZlciBhIG5vbi1lZGl0
YWJsZSByZWdpb24gYW5kIG11bHRpcGxlIGxpbmVzIGVudGVycyBhbiBpbmZpbml0ZSBsb29wCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzQwOQorCisg
ICAgICAgIEZpeGluZyBicm9rZW4gaGFuZGxpbmcgb2YgbWl4ZWQtZWRpdGFiaWxpdHkgY29udGVu
dCBmb3IgSW5zZXJ0TGlzdENvbW1hbmQuIFByZXZpb3VzbHksIGlmIHRoZSBzZWxlY3Rpb24KKyAg
ICAgICAgc3Bhbm5lZCBub24tY29udGVudGVkaXRhYmxlIHJlZ2lvbnMsIGl0IHdvdWxkIGdldCBz
dHVjayBlbmRsZXNzbHkgaXRlcmF0aW5nIHRoZSBzYW1lIHJlZ2lvbiBhcyB0aGUgYWxnb3JpdGht
CisgICAgICAgIGRpZG4ndCBza2lwIHRoZSBlZGl0YWJsZSBib3VuZGFyeS4KKworICAgICAgICBU
ZXN0OiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29u
dGVudC5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpjbGVhbnVwQWZ0ZXJEZWxl
dGlvbik6IENoYW5nZWQgc2lnbmF0dXJlIHRvIHRha2UgdGhlIGRlc3RpbmF0aW9uCisgICAgICAg
IHBvc2l0aW9uIGZvciB0aGUgYWN0aXZlIGVkaXRpbmcgY29tbWFuZC4gV2l0aG91dCB0aGlzLCB0
aGVyZSBhcmUgY2FzZXMgd2hlbiB0aGUgZGVzdGluYXRpb24gaGFwcGVucworICAgICAgICB0byBi
ZSBhIHBsYWNlaG9sZGVyLCBhbmQgd2UgcmVtb3ZlIGl0LgorICAgICAgICAoV2ViQ29yZTo6Q29t
cG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBseSk6IEFk
ZGVkIGxvZ2ljIHRvIHRoZSBwYXJhZ3JhcGggaXRlcmF0aW9uIGxvb3AgdG8gaGFuZGxlIHBvY2tl
dHMgb2YKKyAgICAgICAgbm9uLWVkaXRhYmxlIGNvbnRlbnQgaW4gYW4gZWRpdGFibGUgY29udGV4
dC4gUHJldmlvdXNseSwgdGhpcyBjb3VsZCBjYXVzZSBhbiBpbmZpbml0ZSBsb29wLgorICAgICAg
ICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdGFydE9m
UGFyYWdyYXBoKTogQWRkZWQgYSBtb2RlIG9mIG9wZXJhdGlvbiB3aGVyZSB3ZSdsbCBqdW1wIGFj
cm9zcyBub24tZWRpdGFibGUKKyAgICAgICAgY29udGVudCBpbiB0aGUgc2FtZSBwYXJhZ3JhcGgg
dG8gcmVhY2ggdGhlIGFjdHVhbCBlZGl0YWJsZSBwYXJhZ3JhcGggc3RhcnQuCisgICAgICAgIChX
ZWJDb3JlOjplbmRPZlBhcmFncmFwaCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRP
Zk5leHRQYXJhZ3JhcGgpOiBOb3cgdXNlcyB0aGUgYWZvcmVtZW50aW9uZWQgbm9uLWVkaXRhYmxl
IGNvbnRlbnQgc2tpcHBpbmcgbW9kZSBvZgorICAgICAgICBlbmRPZlBhcmFncmFwaC4KKwogMjAx
MS0wMy0xMCAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDgwNzY4KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjYzNiw2ICsyMjYzNiw3IEBACiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYnVp
bGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMyODQzMDg5MDJCMTEwMDhBOUVGQyAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYkNvcmUiICovOwogCQkJY29tcGF0
aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMi40IjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5n
bGlzaDsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0g
KAogCQkJCUVuZ2xpc2gsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gODA3NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMwLDEw
ICs4MzAsMTAgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6Y2xvbmVQYXJhZ3JhcAogLy8g
RGVsZXRpbmcgYSBwYXJhZ3JhcGggd2lsbCBsZWF2ZSBhIHBsYWNlaG9sZGVyLiBSZW1vdmUgaXQg
KGFuZCBwcnVuZQogLy8gZW1wdHkgb3IgdW5yZW5kZXJlZCBwYXJlbnRzKS4KIAotdm9pZCBDb21w
b3NpdGVFZGl0Q29tbWFuZDo6Y2xlYW51cEFmdGVyRGVsZXRpb24oKQordm9pZCBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6Y2xlYW51cEFmdGVyRGVsZXRpb24oVmlzaWJsZVBvc2l0aW9uIGRlc3RpbmF0
aW9uKQogewogICAgIFZpc2libGVQb3NpdGlvbiBjYXJldEFmdGVyRGVsZXRlID0gZW5kaW5nU2Vs
ZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCk7Ci0gICAgaWYgKGlzU3RhcnRPZlBhcmFncmFwaChjYXJl
dEFmdGVyRGVsZXRlKSAmJiBpc0VuZE9mUGFyYWdyYXBoKGNhcmV0QWZ0ZXJEZWxldGUpKSB7Cisg
ICAgaWYgKGNhcmV0QWZ0ZXJEZWxldGUgIT0gZGVzdGluYXRpb24gJiYgaXNTdGFydE9mUGFyYWdy
YXBoKGNhcmV0QWZ0ZXJEZWxldGUpICYmIGlzRW5kT2ZQYXJhZ3JhcGgoY2FyZXRBZnRlckRlbGV0
ZSkpIHsKICAgICAgICAgLy8gTm90ZTogV2Ugd2FudCB0aGUgcmlnaHRtb3N0IGNhbmRpZGF0ZS4K
ICAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBjYXJldEFmdGVyRGVsZXRlLmRlZXBFcXVpdmFs
ZW50KCkuZG93bnN0cmVhbSgpOwogICAgICAgICBOb2RlKiBub2RlID0gcG9zaXRpb24uZGVwcmVj
YXRlZE5vZGUoKTsKQEAgLTk0Nyw4ICs5NDcsOCBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5k
Ojptb3ZlUGFyYWdyYXBoCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgVmlzaWJsZVBvc2l0
aW9uIGJlZm9yZVBhcmFncmFwaCA9IHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUucHJldmlvdXMoKTsK
LSAgICBWaXNpYmxlUG9zaXRpb24gYWZ0ZXJQYXJhZ3JhcGgoZW5kT2ZQYXJhZ3JhcGhUb01vdmUu
bmV4dCgpKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gYmVmb3JlUGFyYWdyYXBoID0gc3RhcnRPZlBh
cmFncmFwaFRvTW92ZS5wcmV2aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CisgICAg
VmlzaWJsZVBvc2l0aW9uIGFmdGVyUGFyYWdyYXBoKGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLm5leHQo
Q2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpKTsKIAogICAgIC8vIFdlIHVwc3RyZWFtKCkgdGhl
IGVuZCBhbmQgZG93bnN0cmVhbSgpIHRoZSBzdGFydCBzbyB0aGF0IHdlIGRvbid0IGluY2x1ZGUg
Y29sbGFwc2VkIHdoaXRlc3BhY2UgaW4gdGhlIG1vdmUuCiAgICAgLy8gV2hlbiB3ZSBwYXN0ZSBh
IGZyYWdtZW50LCBzcGFjZXMgYWZ0ZXIgdGhlIGVuZCBhbmQgYmVmb3JlIHRoZSBzdGFydCBhcmUg
dHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlIHJlbmRlcmVkLgpAQCAtOTg1LDggKzk4NSw3IEBA
IHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGgKICAgICBkZWxldGVTZWxl
Y3Rpb24oZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwogCiAgICAgQVNTRVJUKGRlc3RpbmF0
aW9uLmRlZXBFcXVpdmFsZW50KCkuYW5jaG9yTm9kZSgpLT5pbkRvY3VtZW50KCkpOwotCi0gICAg
Y2xlYW51cEFmdGVyRGVsZXRpb24oKTsKKyAgICBjbGVhbnVwQWZ0ZXJEZWxldGlvbihkZXN0aW5h
dGlvbik7CiAgICAgQVNTRVJUKGRlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkuYW5jaG9yTm9k
ZSgpLT5pbkRvY3VtZW50KCkpOwogCiAgICAgLy8gQWRkIGEgYnIgaWYgcHJ1bmluZyBhbiBlbXB0
eSBibG9jayBsZXZlbCBlbGVtZW50IGNhdXNlZCBhIGNvbGxhcHNlLiBGb3IgZXhhbXBsZToKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgJKHJl
dmlzaW9uIDgwNzY4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgcHJvdGVjdGVkOgogICAg
IHZvaWQgbW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgYm9vbCBwcmVzZXJ2ZVNlbGVjdGlv
biA9IGZhbHNlLCBib29sIHByZXNlcnZlU3R5bGUgPSB0cnVlKTsKICAgICB2b2lkIG1vdmVQYXJh
Z3JhcGhXaXRoQ2xvbmVzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwaFRv
TW92ZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlbmRPZlBhcmFncmFwaFRvTW92ZSwgRWxlbWVu
dCogYmxvY2tFbGVtZW50LCBOb2RlKiBvdXRlck5vZGUpOwogICAgIHZvaWQgY2xvbmVQYXJhZ3Jh
cGhVbmRlck5ld0VsZW1lbnQoUG9zaXRpb24mIHN0YXJ0LCBQb3NpdGlvbiYgZW5kLCBOb2RlKiBv
dXRlck5vZGUsIEVsZW1lbnQqIGJsb2NrRWxlbWVudCk7Ci0gICAgdm9pZCBjbGVhbnVwQWZ0ZXJE
ZWxldGlvbigpOworICAgIHZvaWQgY2xlYW51cEFmdGVyRGVsZXRpb24oVmlzaWJsZVBvc2l0aW9u
IGRlc3RpbmF0aW9uID0gVmlzaWJsZVBvc2l0aW9uKCkpOwogICAgIAogICAgIGJvb2wgYnJlYWtP
dXRPZkVtcHR5TGlzdEl0ZW0oKTsKICAgICBib29sIGJyZWFrT3V0T2ZFbXB0eU1haWxCbG9ja3F1
b3RlZFBhcmFncmFwaCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0
Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRM
aXN0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDgwNzY4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBA
QCB2b2lkIEluc2VydExpc3RDb21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyBGSVhNRTogV2UgcGFp
bnQgdGhlIGdhcCBiZWZvcmUgc29tZSBwYXJhZ3JhcGhzIHRoYXQgYXJlIGluZGVudGVkIHdpdGgg
bGVmdCAKICAgICAvLyBtYXJnaW4vcGFkZGluZywgYnV0IG5vdCBvdGhlcnMuICBXZSBzaG91bGQg
bWFrZSB0aGUgZ2FwIHBhaW50aW5nIG1vcmUgY29uc2lzdGVudCBhbmQgCiAgICAgLy8gdGhlbiB1
c2UgYSBsZWZ0IG1hcmdpbi9wYWRkaW5nIHJ1bGUgaGVyZS4KLSAgICBpZiAodmlzaWJsZUVuZCAh
PSB2aXNpYmxlU3RhcnQgJiYgaXNTdGFydE9mUGFyYWdyYXBoKHZpc2libGVFbmQpKQorICAgIGlm
ICh2aXNpYmxlRW5kICE9IHZpc2libGVTdGFydCAmJiBpc1N0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJs
ZUVuZCwgQ2FuU2tpcE92ZXJFZGl0aW5nQm91bmRhcnkpKQogICAgICAgICBzZXRFbmRpbmdTZWxl
Y3Rpb24oVmlzaWJsZVNlbGVjdGlvbih2aXNpYmxlU3RhcnQsIHZpc2libGVFbmQucHJldmlvdXMo
Q2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpKSk7CiAKICAgICBjb25zdCBRdWFsaWZpZWROYW1l
JiBsaXN0VGFnID0gKG1fdHlwZSA9PSBPcmRlcmVkTGlzdCkgPyBvbFRhZyA6IHVsVGFnOwpAQCAt
MTMwLDE0ICsxMzAsMTQgQEAgdm9pZCBJbnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAg
ICAgIEFTU0VSVChzZWxlY3Rpb24uaXNSYW5nZSgpKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IHN0YXJ0T2ZTZWxlY3Rpb24gPSBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCk7CiAgICAgICAgIFZp
c2libGVQb3NpdGlvbiBlbmRPZlNlbGVjdGlvbiA9IHNlbGVjdGlvbi52aXNpYmxlRW5kKCk7Ci0g
ICAgICAgIFZpc2libGVQb3NpdGlvbiBzdGFydE9mTGFzdFBhcmFncmFwaCA9IHN0YXJ0T2ZQYXJh
Z3JhcGgoZW5kT2ZTZWxlY3Rpb24pOworICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZkxh
c3RQYXJhZ3JhcGggPSBzdGFydE9mUGFyYWdyYXBoKGVuZE9mU2VsZWN0aW9uLCBDYW5Ta2lwT3Zl
ckVkaXRpbmdCb3VuZGFyeSk7CiAKLSAgICAgICAgaWYgKHN0YXJ0T2ZQYXJhZ3JhcGgoc3RhcnRP
ZlNlbGVjdGlvbikgIT0gc3RhcnRPZkxhc3RQYXJhZ3JhcGgpIHsKKyAgICAgICAgaWYgKHN0YXJ0
T2ZQYXJhZ3JhcGgoc3RhcnRPZlNlbGVjdGlvbiwgQ2FuU2tpcE92ZXJFZGl0aW5nQm91bmRhcnkp
ICE9IHN0YXJ0T2ZMYXN0UGFyYWdyYXBoKSB7CiAgICAgICAgICAgICBib29sIGZvcmNlQ3JlYXRl
TGlzdCA9ICFzZWxlY3Rpb25IYXNMaXN0T2ZUeXBlKHNlbGVjdGlvbiwgbGlzdFRhZyk7CiAKICAg
ICAgICAgICAgIFJlZlB0cjxSYW5nZT4gY3VycmVudFNlbGVjdGlvbiA9IGVuZGluZ1NlbGVjdGlv
bigpLmZpcnN0UmFuZ2UoKTsKICAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBzdGFydE9mQ3Vy
cmVudFBhcmFncmFwaCA9IHN0YXJ0T2ZTZWxlY3Rpb247Ci0gICAgICAgICAgICB3aGlsZSAoc3Rh
cnRPZkN1cnJlbnRQYXJhZ3JhcGggIT0gc3RhcnRPZkxhc3RQYXJhZ3JhcGgpIHsKKyAgICAgICAg
ICAgIHdoaWxlICghaW5TYW1lUGFyYWdyYXBoKHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBoLCBzdGFy
dE9mTGFzdFBhcmFncmFwaCwgQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gZG9BcHBseSgpIG1heSBvcGVyYXRlIG9uIGFuZCByZW1vdmUgdGhlIGxhc3QgcGFy
YWdyYXBoIG9mIHRoZSBzZWxlY3Rpb24gZnJvbSB0aGUgZG9jdW1lbnQgCiAgICAgICAgICAgICAg
ICAgLy8gaWYgaXQncyBpbiB0aGUgc2FtZSBsaXN0IGl0ZW0gYXMgc3RhcnRPZkN1cnJlbnRQYXJh
Z3JhcGguICBSZXR1cm4gZWFybHkgdG8gYXZvaWQgYW4gCiAgICAgICAgICAgICAgICAgLy8gaW5m
aW5pdGUgbG9vcCBhbmQgYmVjYXVzZSB0aGVyZSBpcyBubyBtb3JlIHdvcmsgdG8gYmUgZG9uZS4K
QEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIEluc2VydExpc3RDb21tYW5kOjpkb0FwcGx5KCkKICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0U2VsZWN0aW9uUmFuZ2UpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIGVuZE9mU2VsZWN0aW9uID0g
bGFzdFNlbGVjdGlvblJhbmdlLT5zdGFydFBvc2l0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAg
IHN0YXJ0T2ZMYXN0UGFyYWdyYXBoID0gc3RhcnRPZlBhcmFncmFwaChlbmRPZlNlbGVjdGlvbik7
CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0T2ZMYXN0UGFyYWdyYXBoID0gc3RhcnRPZlBhcmFn
cmFwaChlbmRPZlNlbGVjdGlvbiwgQ2FuU2tpcE92ZXJFZGl0aW5nQm91bmRhcnkpOwogICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIC8vIEZldGNoIHRoZSBzdGFydCBvZiB0aGUg
c2VsZWN0aW9uIGFmdGVyIG1vdmluZyB0aGUgZmlyc3QgcGFyYWdyYXBoLApAQCAtMjYzLDggKzI2
Myw4IEBAIHZvaWQgSW5zZXJ0TGlzdENvbW1hbmQ6OnVubGlzdGlmeVBhcmFncmEKICAgICAgICAg
cHJldmlvdXNMaXN0Q2hpbGQgPSBsaXN0Q2hpbGROb2RlLT5wcmV2aW91c1NpYmxpbmcoKTsKICAg
ICB9IGVsc2UgewogICAgICAgICAvLyBBIHBhcmFncmFwaCBpcyB2aXN1YWxseSBhIGxpc3QgaXRl
bSBtaW51cyBhIGxpc3QgbWFya2VyLiAgVGhlIHBhcmFncmFwaCB3aWxsIGJlIG1vdmVkLgotICAg
ICAgICBzdGFydCA9IHN0YXJ0T2ZQYXJhZ3JhcGgob3JpZ2luYWxTdGFydCk7Ci0gICAgICAgIGVu
ZCA9IGVuZE9mUGFyYWdyYXBoKHN0YXJ0KTsKKyAgICAgICAgc3RhcnQgPSBzdGFydE9mUGFyYWdy
YXBoKG9yaWdpbmFsU3RhcnQsIENhblNraXBPdmVyRWRpdGluZ0JvdW5kYXJ5KTsKKyAgICAgICAg
ZW5kID0gZW5kT2ZQYXJhZ3JhcGgoc3RhcnQsIENhblNraXBPdmVyRWRpdGluZ0JvdW5kYXJ5KTsK
ICAgICAgICAgbmV4dExpc3RDaGlsZCA9IGVuY2xvc2luZ0xpc3RDaGlsZChlbmQubmV4dCgpLmRl
ZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKSwgbGlzdE5vZGUpOwogICAgICAgICBBU1NF
UlQobmV4dExpc3RDaGlsZCAhPSBsaXN0Q2hpbGROb2RlKTsKICAgICAgICAgcHJldmlvdXNMaXN0
Q2hpbGQgPSBlbmNsb3NpbmdMaXN0Q2hpbGQoc3RhcnQucHJldmlvdXMoKS5kZWVwRXF1aXZhbGVu
dCgpLmRlcHJlY2F0ZWROb2RlKCksIGxpc3ROb2RlKTsKQEAgLTMyNyw4ICszMjcsOCBAQCBzdGF0
aWMgRWxlbWVudCogYWRqYWNlbnRFbmNsb3NpbmdMaXN0KGNvCiAKIFBhc3NSZWZQdHI8SFRNTEVs
ZW1lbnQ+IEluc2VydExpc3RDb21tYW5kOjpsaXN0aWZ5UGFyYWdyYXBoKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgb3JpZ2luYWxTdGFydCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbGlzdFRhZykKIHsK
LSAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKG9yaWdpbmFsU3Rh
cnQpOwotICAgIFZpc2libGVQb3NpdGlvbiBlbmQgPSBlbmRPZlBhcmFncmFwaChzdGFydCk7Cisg
ICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChvcmlnaW5hbFN0YXJ0
LCBDYW5Ta2lwT3ZlckVkaXRpbmdCb3VuZGFyeSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIGVuZCA9
IGVuZE9mUGFyYWdyYXBoKHN0YXJ0LCBDYW5Ta2lwT3ZlckVkaXRpbmdCb3VuZGFyeSk7CiAgICAg
CiAgICAgaWYgKHN0YXJ0LmlzTnVsbCgpIHx8IGVuZC5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
IDA7CkBAIC0zNzUsOCArMzc1LDEyIEBAIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEluc2VydExp
c3RDb21tYW4KIAogICAgICAgICAvLyBXZSBpbnNlcnRlZCB0aGUgbGlzdCBhdCB0aGUgc3RhcnQg
b2YgdGhlIGNvbnRlbnQgd2UncmUgYWJvdXQgdG8gbW92ZQogICAgICAgICAvLyBVcGRhdGUgdGhl
IHN0YXJ0IG9mIGNvbnRlbnQsIHNvIHdlIGRvbid0IHRyeSB0byBtb3ZlIHRoZSBsaXN0IGludG8g
aXRzZWxmLiAgYnVnIDE5MDY2Ci0gICAgICAgIGlmIChpbnNlcnRpb25Qb3MgPT0gc3RhcnQuZGVl
cEVxdWl2YWxlbnQoKSkKLSAgICAgICAgICAgIHN0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChvcmln
aW5hbFN0YXJ0KTsKKyAgICAgICAgLy8gTGF5b3V0IGlzIG5lY2Vzc2FyeSBzaW5jZSBzdGFydCdz
IG5vZGUncyBpbmxpbmUgcmVuZGVyZXJzIG1heSBoYXZlIGJlZW4gZGVzdHJveWVkIGJ5CisgICAg
ICAgIC8vIHRoZSBpbnNlcnRpb24uCisgICAgICAgIGlmIChpbnNlcnRpb25Qb3MgPT0gc3RhcnQu
ZGVlcEVxdWl2YWxlbnQoKSkgeworICAgICAgICAgICAgbGlzdEVsZW1lbnQtPmRvY3VtZW50KCkt
PnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgICAgICAgICAgc3Rh
cnQgPSBzdGFydE9mUGFyYWdyYXBoKG9yaWdpbmFsU3RhcnQsIENhblNraXBPdmVyRWRpdGluZ0Jv
dW5kYXJ5KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIG1vdmVQYXJhZ3JhcGgoc3RhcnQsIGVu
ZCwgcG9zaXRpb25CZWZvcmVOb2RlKHBsYWNlaG9sZGVyLmdldCgpKSwgdHJ1ZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAJKHJldmlzaW9uIDgwNzY4KQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzUxLDE0ICs3NTEsMjEgQEAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZQYXJhZ3JhcGgo
Y29uc3QgVgogCiAgICAgTm9kZSogc3RhcnRCbG9jayA9IGVuY2xvc2luZ0Jsb2NrKHN0YXJ0Tm9k
ZSk7CiAKLSAgICBOb2RlICpub2RlID0gc3RhcnROb2RlOworICAgIE5vZGUqIG5vZGUgPSBzdGFy
dE5vZGU7CisgICAgTm9kZSogaGlnaGVzdFJvb3QgPSBoaWdoZXN0RWRpdGFibGVSb290KHApOwog
ICAgIGludCBvZmZzZXQgPSBwLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAgICAgUG9zaXRp
b246OkFuY2hvclR5cGUgdHlwZSA9IHAuYW5jaG9yVHlwZSgpOwogCi0gICAgTm9kZSAqbiA9IHN0
YXJ0Tm9kZTsKKyAgICBOb2RlKiBuID0gc3RhcnROb2RlOwogICAgIHdoaWxlIChuKSB7CiAgICAg
ICAgIGlmIChib3VuZGFyeUNyb3NzaW5nUnVsZSA9PSBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFy
eSAmJiBuLT5pc0NvbnRlbnRFZGl0YWJsZSgpICE9IHN0YXJ0Tm9kZS0+aXNDb250ZW50RWRpdGFi
bGUoKSkKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoYm91bmRhcnlDcm9zc2luZ1J1
bGUgPT0gQ2FuU2tpcE92ZXJFZGl0aW5nQm91bmRhcnkpIHsKKyAgICAgICAgICAgIHdoaWxlIChu
ICYmIG4tPmlzQ29udGVudEVkaXRhYmxlKCkgIT0gc3RhcnROb2RlLT5pc0NvbnRlbnRFZGl0YWJs
ZSgpKQorICAgICAgICAgICAgICAgIG4gPSBuLT50cmF2ZXJzZVByZXZpb3VzTm9kZVBvc3RPcmRl
cihzdGFydEJsb2NrKTsKKyAgICAgICAgICAgIGlmICghbiB8fCAhbi0+aXNEZXNjZW5kYW50T2Yo
aGlnaGVzdFJvb3QpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAg
IFJlbmRlck9iamVjdCAqciA9IG4tPnJlbmRlcmVyKCk7CiAgICAgICAgIGlmICghcikgewogICAg
ICAgICAgICAgbiA9IG4tPnRyYXZlcnNlUHJldmlvdXNOb2RlUG9zdE9yZGVyKHN0YXJ0QmxvY2sp
OwpAQCAtODE0LDE2ICs4MjEsMjQgQEAgVmlzaWJsZVBvc2l0aW9uIGVuZE9mUGFyYWdyYXBoKGNv
bnN0IFZpcwogICAgICAgICByZXR1cm4gbGFzdERlZXBFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKHN0
YXJ0Tm9kZSk7CiAgICAgCiAgICAgTm9kZSogc3RhcnRCbG9jayA9IGVuY2xvc2luZ0Jsb2NrKHN0
YXJ0Tm9kZSk7Ci0gICAgTm9kZSAqc3RheUluc2lkZUJsb2NrID0gc3RhcnRCbG9jazsKKyAgICBO
b2RlKiBzdGF5SW5zaWRlQmxvY2sgPSBzdGFydEJsb2NrOwogICAgIAotICAgIE5vZGUgKm5vZGUg
PSBzdGFydE5vZGU7CisgICAgTm9kZSogbm9kZSA9IHN0YXJ0Tm9kZTsKKyAgICBOb2RlKiBoaWdo
ZXN0Um9vdCA9IGhpZ2hlc3RFZGl0YWJsZVJvb3QocCk7CiAgICAgaW50IG9mZnNldCA9IHAuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICBQb3NpdGlvbjo6QW5jaG9yVHlwZSB0eXBlID0g
cC5hbmNob3JUeXBlKCk7CiAKLSAgICBOb2RlICpuID0gc3RhcnROb2RlOworICAgIE5vZGUqIG4g
PSBzdGFydE5vZGU7CiAgICAgd2hpbGUgKG4pIHsKICAgICAgICAgaWYgKGJvdW5kYXJ5Q3Jvc3Np
bmdSdWxlID09IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5ICYmIG4tPmlzQ29udGVudEVkaXRh
YmxlKCkgIT0gc3RhcnROb2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGlmIChib3VuZGFyeUNyb3NzaW5nUnVsZSA9PSBDYW5Ta2lwT3ZlckVkaXRp
bmdCb3VuZGFyeSkgeworICAgICAgICAgICAgd2hpbGUgKG4gJiYgbi0+aXNDb250ZW50RWRpdGFi
bGUoKSAhPSBzdGFydE5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgICAgICAgICAg
biA9IG4tPnRyYXZlcnNlTmV4dE5vZGUoc3RheUluc2lkZUJsb2NrKTsKKyAgICAgICAgICAgIGlm
ICghbiB8fCAhbi0+aXNEZXNjZW5kYW50T2YoaGlnaGVzdFJvb3QpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgUmVuZGVyT2JqZWN0ICpyID0gbi0+cmVuZGVy
ZXIoKTsKICAgICAgICAgaWYgKCFyKSB7CiAgICAgICAgICAgICBuID0gbi0+dHJhdmVyc2VOZXh0
Tm9kZShzdGF5SW5zaWRlQmxvY2spOwpAQCAtODY2LDkgKzg4MSwxMCBAQCBWaXNpYmxlUG9zaXRp
b24gZW5kT2ZQYXJhZ3JhcGgoY29uc3QgVmlzCiAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihQ
b3NpdGlvbihub2RlLCB0eXBlKSwgRE9XTlNUUkVBTSk7CiB9CiAKKy8vIEZJWE1FOiBpc1N0YXJ0
T2ZQYXJhZ3JhcGgoc3RhcnRPZk5leHRQYXJhZ3JhcGgocG9zKSkgaXMgbm90IGFsd2F5cyB0cnVl
CiBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZk5leHRQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiB2aXNpYmxlUG9zaXRpb24pCiB7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHBhcmFncmFwaEVu
ZChlbmRPZlBhcmFncmFwaCh2aXNpYmxlUG9zaXRpb24pKTsKKyAgICBWaXNpYmxlUG9zaXRpb24g
cGFyYWdyYXBoRW5kKGVuZE9mUGFyYWdyYXBoKHZpc2libGVQb3NpdGlvbiwgQ2FuU2tpcE92ZXJF
ZGl0aW5nQm91bmRhcnkpKTsKICAgICBWaXNpYmxlUG9zaXRpb24gYWZ0ZXJQYXJhZ3JhcGhFbmQo
cGFyYWdyYXBoRW5kLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpKTsKICAgICAvLyBU
aGUgcG9zaXRpb24gYWZ0ZXIgdGhlIGxhc3QgcG9zaXRpb24gaW4gdGhlIGxhc3QgY2VsbCBvZiBh
IHRhYmxlCiAgICAgLy8gaXMgbm90IHRoZSBzdGFydCBvZiB0aGUgbmV4dCBwYXJhZ3JhcGguCkBA
IC04NzcsOSArODkzLDkgQEAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZOZXh0UGFyYWdyYXBoKGNv
bgogICAgIHJldHVybiBhZnRlclBhcmFncmFwaEVuZDsKIH0KIAotYm9vbCBpblNhbWVQYXJhZ3Jh
cGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uICZhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24gJmIpCiti
b29sIGluU2FtZVBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24gJmEsIGNvbnN0IFZpc2li
bGVQb3NpdGlvbiAmYiwgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIGJvdW5kYXJ5Q3Jvc3Np
bmdSdWxlKQogewotICAgIHJldHVybiBhLmlzTm90TnVsbCgpICYmIHN0YXJ0T2ZQYXJhZ3JhcGgo
YSkgPT0gc3RhcnRPZlBhcmFncmFwaChiKTsKKyAgICByZXR1cm4gYS5pc05vdE51bGwoKSAmJiBz
dGFydE9mUGFyYWdyYXBoKGEsIGJvdW5kYXJ5Q3Jvc3NpbmdSdWxlKSA9PSBzdGFydE9mUGFyYWdy
YXBoKGIsIGJvdW5kYXJ5Q3Jvc3NpbmdSdWxlKTsKIH0KIAogYm9vbCBpc1N0YXJ0T2ZQYXJhZ3Jh
cGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uICZwb3MsIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVs
ZSBib3VuZGFyeUNyb3NzaW5nUnVsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlz
aWJsZV91bml0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJs
ZV91bml0cy5oCShyZXZpc2lvbiA4MDc2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlz
aWJsZV91bml0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIFZpc2libGVQb3Np
dGlvbiBwcmV2aW91c1BhcmFncmFwaFBvc2l0aW8KIFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdy
YXBoUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uICYsIGludCB4KTsKIGJvb2wgaXNTdGFy
dE9mUGFyYWdyYXBoKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmLCBFZGl0aW5nQm91bmRhcnlDcm9z
c2luZ1J1bGUgPSBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiBib29sIGlzRW5kT2ZQYXJh
Z3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uICYsIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVs
ZSA9IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKLWJvb2wgaW5TYW1lUGFyYWdyYXBoKGNv
bnN0IFZpc2libGVQb3NpdGlvbiAmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24gJik7Citib29sIGlu
U2FtZVBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24gJiwgY29uc3QgVmlzaWJsZVBvc2l0
aW9uICYsIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSA9IENhbm5vdENyb3NzRWRpdGluZ0Jv
dW5kYXJ5KTsKIAogLy8gYmxvY2tzICh0cnVlIHBhcmFncmFwaHM7IGxpbmUgYnJlYWsgZWxlbWVu
dHMgZG9uJ3QgYnJlYWsgYmxvY2tzKQogVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZCbG9jayhjb25z
dCBWaXNpYmxlUG9zaXRpb24gJik7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MDc2OCkKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTAz
LTEwICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnNlcnRVbm9yZGVyZWRMaXN0IG92
ZXIgYSBub24tZWRpdGFibGUgcmVnaW9uIGFuZCBtdWx0aXBsZSBsaW5lcyBlbnRlcnMgYW4gaW5m
aW5pdGUgbG9vcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTM0MDkKKworICAgICAgICBBdm9pZGluZyBjcmFzaGVzIGFuZCBpbmZpbml0ZSBsb29wcyB3
aGVuIGxpc3RpZnlpbmcgY29udGVudCB3aXRoIG1peGVkLWVkaXRhYmlsaXR5CisKKyAgICAgICAg
KiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVu
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5z
ZXJ0LWxpc3Qtd2l0aC1ub25lZGl0YWJsZS1jb250ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDExLTAz
LTEwICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBGcmFzZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2lu
c2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVudC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qtd2l0aC1ub25lZGl0YWJs
ZS1jb250ZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVudC5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj5UaGlzIHRlc3RzIGxpc3QgY3JlYXRpb24gaW4gYW4gZWRpdGFibGUgY29udGV4dCBidXQg
YWNyb3NzIG5vbi1lZGl0YWJsZSBjb250ZW50LiBFZGl0YWJsZSBjb250ZW50IHNob3VsZCBiZSBw
dWxsZWQgaW50byB0aGUgbGlzdCBhbmQgbm90IGNyYXNoLjwvZGl2PgorPGRpdiBjb250ZW50ZWRp
dGFibGU9InRydWUiIGlkPSJ0ZXN0IiBzdHlsZT0icGFkZGluZzogMWVtOyI+CisgIEVkaXRhYmxl
IHBhcmFncmFwaCBjb250YWluaW5nIGEgPHNwYW4gY29udGVudGVkaXRhYmxlPSJmYWxzZSIgc3R5
bGU9ImJhY2tncm91bmQtY29sb3I6IExpZ2h0R3JheTsiPm5vbi1lZGl0YWJsZTwvc3Bhbj4gaW4g
dGhlIG1pZGRsZTxicj4KKyAgQW5vdGhlciBlZGl0YWJsZSBwYXJhZ3JhcGguCis8L2Rpdj4KKzxi
dXR0b24gb25jbGljaz0iaW5zZXJ0TGlzdCgpOyI+SW5zZXJ0IExpc3Q8L2J1dHRvbj4KKzxzY3Jp
cHQ+CitmdW5jdGlvbiBpbnNlcnRMaXN0KCkgeworICBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5z
ZXJ0dW5vcmRlcmVkbGlzdCcsIGZhbHNlLCAnJyk7Cit9CisKK3ZhciBzID0gd2luZG93LmdldFNl
bGVjdGlvbigpOwordmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7Citz
LnNldFBvc2l0aW9uKGRpdi5jaGlsZE5vZGVzWzBdLCAxMCk7CitzLm1vZGlmeSgiZXh0ZW5kIiwg
ImZvcndhcmQiLCAibGluZSIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgIGluc2VydExpc3QoKTsKKyAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc01h
cmt1cCgpOworfQorPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85395</attachid>
            <date>2011-03-10 15:22:52 -0800</date>
            <delta_ts>2011-03-10 15:26:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53409-20110310152251.patch</filename>
            <type>text/plain</type>
            <size>17712</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNzY4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMDMtMTAgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluc2VydFVub3JkZXJlZExpc3Qgb3ZlciBhIG5vbi1lZGl0
YWJsZSByZWdpb24gYW5kIG11bHRpcGxlIGxpbmVzIGVudGVycyBhbiBpbmZpbml0ZSBsb29wCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzQwOQorCisg
ICAgICAgIEZpeGluZyBicm9rZW4gaGFuZGxpbmcgb2YgbWl4ZWQtZWRpdGFiaWxpdHkgY29udGVu
dCBmb3IgSW5zZXJ0TGlzdENvbW1hbmQuIFByZXZpb3VzbHksIGlmIHRoZSBzZWxlY3Rpb24KKyAg
ICAgICAgc3Bhbm5lZCBub24tY29udGVudGVkaXRhYmxlIHJlZ2lvbnMsIGl0IHdvdWxkIGdldCBz
dHVjayBlbmRsZXNzbHkgaXRlcmF0aW5nIHRoZSBzYW1lIHJlZ2lvbiBhcyB0aGUgYWxnb3JpdGht
CisgICAgICAgIGRpZG4ndCBza2lwIHRoZSBlZGl0YWJsZSBib3VuZGFyeS4KKworICAgICAgICBU
ZXN0OiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29u
dGVudC5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpjbGVhbnVwQWZ0ZXJEZWxl
dGlvbik6IENoYW5nZWQgc2lnbmF0dXJlIHRvIHRha2UgdGhlIGRlc3RpbmF0aW9uCisgICAgICAg
IHBvc2l0aW9uIGZvciB0aGUgYWN0aXZlIGVkaXRpbmcgY29tbWFuZC4gV2l0aG91dCB0aGlzLCB0
aGVyZSBhcmUgY2FzZXMgd2hlbiB0aGUgZGVzdGluYXRpb24gaGFwcGVucworICAgICAgICB0byBi
ZSBhIHBsYWNlaG9sZGVyLCBhbmQgd2UgcmVtb3ZlIGl0LgorICAgICAgICAoV2ViQ29yZTo6Q29t
cG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBseSk6IEFk
ZGVkIGxvZ2ljIHRvIHRoZSBwYXJhZ3JhcGggaXRlcmF0aW9uIGxvb3AgdG8gaGFuZGxlIHBvY2tl
dHMgb2YKKyAgICAgICAgbm9uLWVkaXRhYmxlIGNvbnRlbnQgaW4gYW4gZWRpdGFibGUgY29udGV4
dC4gUHJldmlvdXNseSwgdGhpcyBjb3VsZCBjYXVzZSBhbiBpbmZpbml0ZSBsb29wLgorICAgICAg
ICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdGFydE9m
UGFyYWdyYXBoKTogQWRkZWQgYSBtb2RlIG9mIG9wZXJhdGlvbiB3aGVyZSB3ZSdsbCBqdW1wIGFj
cm9zcyBub24tZWRpdGFibGUKKyAgICAgICAgY29udGVudCBpbiB0aGUgc2FtZSBwYXJhZ3JhcGgg
dG8gcmVhY2ggdGhlIGFjdHVhbCBlZGl0YWJsZSBwYXJhZ3JhcGggc3RhcnQuCisgICAgICAgIChX
ZWJDb3JlOjplbmRPZlBhcmFncmFwaCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRP
Zk5leHRQYXJhZ3JhcGgpOiBOb3cgdXNlcyB0aGUgYWZvcmVtZW50aW9uZWQgbm9uLWVkaXRhYmxl
IGNvbnRlbnQgc2tpcHBpbmcgbW9kZSBvZgorICAgICAgICBlbmRPZlBhcmFncmFwaC4KKwogMjAx
MS0wMy0xMCAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDgwNzY4KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjYzNiw2ICsyMjYzNiw3IEBACiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYnVp
bGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMyODQzMDg5MDJCMTEwMDhBOUVGQyAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYkNvcmUiICovOwogCQkJY29tcGF0
aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMi40IjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5n
bGlzaDsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0g
KAogCQkJCUVuZ2xpc2gsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gODA3NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMwLDEw
ICs4MzAsMTAgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6Y2xvbmVQYXJhZ3JhcAogLy8g
RGVsZXRpbmcgYSBwYXJhZ3JhcGggd2lsbCBsZWF2ZSBhIHBsYWNlaG9sZGVyLiBSZW1vdmUgaXQg
KGFuZCBwcnVuZQogLy8gZW1wdHkgb3IgdW5yZW5kZXJlZCBwYXJlbnRzKS4KIAotdm9pZCBDb21w
b3NpdGVFZGl0Q29tbWFuZDo6Y2xlYW51cEFmdGVyRGVsZXRpb24oKQordm9pZCBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6Y2xlYW51cEFmdGVyRGVsZXRpb24oVmlzaWJsZVBvc2l0aW9uIGRlc3RpbmF0
aW9uKQogewogICAgIFZpc2libGVQb3NpdGlvbiBjYXJldEFmdGVyRGVsZXRlID0gZW5kaW5nU2Vs
ZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCk7Ci0gICAgaWYgKGlzU3RhcnRPZlBhcmFncmFwaChjYXJl
dEFmdGVyRGVsZXRlKSAmJiBpc0VuZE9mUGFyYWdyYXBoKGNhcmV0QWZ0ZXJEZWxldGUpKSB7Cisg
ICAgaWYgKGNhcmV0QWZ0ZXJEZWxldGUgIT0gZGVzdGluYXRpb24gJiYgaXNTdGFydE9mUGFyYWdy
YXBoKGNhcmV0QWZ0ZXJEZWxldGUpICYmIGlzRW5kT2ZQYXJhZ3JhcGgoY2FyZXRBZnRlckRlbGV0
ZSkpIHsKICAgICAgICAgLy8gTm90ZTogV2Ugd2FudCB0aGUgcmlnaHRtb3N0IGNhbmRpZGF0ZS4K
ICAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBjYXJldEFmdGVyRGVsZXRlLmRlZXBFcXVpdmFs
ZW50KCkuZG93bnN0cmVhbSgpOwogICAgICAgICBOb2RlKiBub2RlID0gcG9zaXRpb24uZGVwcmVj
YXRlZE5vZGUoKTsKQEAgLTk0Nyw4ICs5NDcsOCBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5k
Ojptb3ZlUGFyYWdyYXBoCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgVmlzaWJsZVBvc2l0
aW9uIGJlZm9yZVBhcmFncmFwaCA9IHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUucHJldmlvdXMoKTsK
LSAgICBWaXNpYmxlUG9zaXRpb24gYWZ0ZXJQYXJhZ3JhcGgoZW5kT2ZQYXJhZ3JhcGhUb01vdmUu
bmV4dCgpKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gYmVmb3JlUGFyYWdyYXBoID0gc3RhcnRPZlBh
cmFncmFwaFRvTW92ZS5wcmV2aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CisgICAg
VmlzaWJsZVBvc2l0aW9uIGFmdGVyUGFyYWdyYXBoKGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLm5leHQo
Q2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpKTsKIAogICAgIC8vIFdlIHVwc3RyZWFtKCkgdGhl
IGVuZCBhbmQgZG93bnN0cmVhbSgpIHRoZSBzdGFydCBzbyB0aGF0IHdlIGRvbid0IGluY2x1ZGUg
Y29sbGFwc2VkIHdoaXRlc3BhY2UgaW4gdGhlIG1vdmUuCiAgICAgLy8gV2hlbiB3ZSBwYXN0ZSBh
IGZyYWdtZW50LCBzcGFjZXMgYWZ0ZXIgdGhlIGVuZCBhbmQgYmVmb3JlIHRoZSBzdGFydCBhcmUg
dHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlIHJlbmRlcmVkLgpAQCAtOTg1LDggKzk4NSw3IEBA
IHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGgKICAgICBkZWxldGVTZWxl
Y3Rpb24oZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwogCiAgICAgQVNTRVJUKGRlc3RpbmF0
aW9uLmRlZXBFcXVpdmFsZW50KCkuYW5jaG9yTm9kZSgpLT5pbkRvY3VtZW50KCkpOwotCi0gICAg
Y2xlYW51cEFmdGVyRGVsZXRpb24oKTsKKyAgICBjbGVhbnVwQWZ0ZXJEZWxldGlvbihkZXN0aW5h
dGlvbik7CiAgICAgQVNTRVJUKGRlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkuYW5jaG9yTm9k
ZSgpLT5pbkRvY3VtZW50KCkpOwogCiAgICAgLy8gQWRkIGEgYnIgaWYgcHJ1bmluZyBhbiBlbXB0
eSBibG9jayBsZXZlbCBlbGVtZW50IGNhdXNlZCBhIGNvbGxhcHNlLiBGb3IgZXhhbXBsZToKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgJKHJl
dmlzaW9uIDgwNzY4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgcHJvdGVjdGVkOgogICAg
IHZvaWQgbW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgYm9vbCBwcmVzZXJ2ZVNlbGVjdGlv
biA9IGZhbHNlLCBib29sIHByZXNlcnZlU3R5bGUgPSB0cnVlKTsKICAgICB2b2lkIG1vdmVQYXJh
Z3JhcGhXaXRoQ2xvbmVzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwaFRv
TW92ZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlbmRPZlBhcmFncmFwaFRvTW92ZSwgRWxlbWVu
dCogYmxvY2tFbGVtZW50LCBOb2RlKiBvdXRlck5vZGUpOwogICAgIHZvaWQgY2xvbmVQYXJhZ3Jh
cGhVbmRlck5ld0VsZW1lbnQoUG9zaXRpb24mIHN0YXJ0LCBQb3NpdGlvbiYgZW5kLCBOb2RlKiBv
dXRlck5vZGUsIEVsZW1lbnQqIGJsb2NrRWxlbWVudCk7Ci0gICAgdm9pZCBjbGVhbnVwQWZ0ZXJE
ZWxldGlvbigpOworICAgIHZvaWQgY2xlYW51cEFmdGVyRGVsZXRpb24oVmlzaWJsZVBvc2l0aW9u
IGRlc3RpbmF0aW9uID0gVmlzaWJsZVBvc2l0aW9uKCkpOwogICAgIAogICAgIGJvb2wgYnJlYWtP
dXRPZkVtcHR5TGlzdEl0ZW0oKTsKICAgICBib29sIGJyZWFrT3V0T2ZFbXB0eU1haWxCbG9ja3F1
b3RlZFBhcmFncmFwaCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0
Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRM
aXN0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDgwNzY4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBA
QCB2b2lkIEluc2VydExpc3RDb21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyBGSVhNRTogV2UgcGFp
bnQgdGhlIGdhcCBiZWZvcmUgc29tZSBwYXJhZ3JhcGhzIHRoYXQgYXJlIGluZGVudGVkIHdpdGgg
bGVmdCAKICAgICAvLyBtYXJnaW4vcGFkZGluZywgYnV0IG5vdCBvdGhlcnMuICBXZSBzaG91bGQg
bWFrZSB0aGUgZ2FwIHBhaW50aW5nIG1vcmUgY29uc2lzdGVudCBhbmQgCiAgICAgLy8gdGhlbiB1
c2UgYSBsZWZ0IG1hcmdpbi9wYWRkaW5nIHJ1bGUgaGVyZS4KLSAgICBpZiAodmlzaWJsZUVuZCAh
PSB2aXNpYmxlU3RhcnQgJiYgaXNTdGFydE9mUGFyYWdyYXBoKHZpc2libGVFbmQpKQorICAgIGlm
ICh2aXNpYmxlRW5kICE9IHZpc2libGVTdGFydCAmJiBpc1N0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJs
ZUVuZCwgQ2FuU2tpcE92ZXJFZGl0aW5nQm91bmRhcnkpKQogICAgICAgICBzZXRFbmRpbmdTZWxl
Y3Rpb24oVmlzaWJsZVNlbGVjdGlvbih2aXNpYmxlU3RhcnQsIHZpc2libGVFbmQucHJldmlvdXMo
Q2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpKSk7CiAKICAgICBjb25zdCBRdWFsaWZpZWROYW1l
JiBsaXN0VGFnID0gKG1fdHlwZSA9PSBPcmRlcmVkTGlzdCkgPyBvbFRhZyA6IHVsVGFnOwpAQCAt
MTMwLDE0ICsxMzAsMTQgQEAgdm9pZCBJbnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAg
ICAgIEFTU0VSVChzZWxlY3Rpb24uaXNSYW5nZSgpKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IHN0YXJ0T2ZTZWxlY3Rpb24gPSBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCk7CiAgICAgICAgIFZp
c2libGVQb3NpdGlvbiBlbmRPZlNlbGVjdGlvbiA9IHNlbGVjdGlvbi52aXNpYmxlRW5kKCk7Ci0g
ICAgICAgIFZpc2libGVQb3NpdGlvbiBzdGFydE9mTGFzdFBhcmFncmFwaCA9IHN0YXJ0T2ZQYXJh
Z3JhcGgoZW5kT2ZTZWxlY3Rpb24pOworICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZkxh
c3RQYXJhZ3JhcGggPSBzdGFydE9mUGFyYWdyYXBoKGVuZE9mU2VsZWN0aW9uLCBDYW5Ta2lwT3Zl
ckVkaXRpbmdCb3VuZGFyeSk7CiAKLSAgICAgICAgaWYgKHN0YXJ0T2ZQYXJhZ3JhcGgoc3RhcnRP
ZlNlbGVjdGlvbikgIT0gc3RhcnRPZkxhc3RQYXJhZ3JhcGgpIHsKKyAgICAgICAgaWYgKHN0YXJ0
T2ZQYXJhZ3JhcGgoc3RhcnRPZlNlbGVjdGlvbiwgQ2FuU2tpcE92ZXJFZGl0aW5nQm91bmRhcnkp
ICE9IHN0YXJ0T2ZMYXN0UGFyYWdyYXBoKSB7CiAgICAgICAgICAgICBib29sIGZvcmNlQ3JlYXRl
TGlzdCA9ICFzZWxlY3Rpb25IYXNMaXN0T2ZUeXBlKHNlbGVjdGlvbiwgbGlzdFRhZyk7CiAKICAg
ICAgICAgICAgIFJlZlB0cjxSYW5nZT4gY3VycmVudFNlbGVjdGlvbiA9IGVuZGluZ1NlbGVjdGlv
bigpLmZpcnN0UmFuZ2UoKTsKICAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBzdGFydE9mQ3Vy
cmVudFBhcmFncmFwaCA9IHN0YXJ0T2ZTZWxlY3Rpb247Ci0gICAgICAgICAgICB3aGlsZSAoc3Rh
cnRPZkN1cnJlbnRQYXJhZ3JhcGggIT0gc3RhcnRPZkxhc3RQYXJhZ3JhcGgpIHsKKyAgICAgICAg
ICAgIHdoaWxlICghaW5TYW1lUGFyYWdyYXBoKHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBoLCBzdGFy
dE9mTGFzdFBhcmFncmFwaCwgQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gZG9BcHBseSgpIG1heSBvcGVyYXRlIG9uIGFuZCByZW1vdmUgdGhlIGxhc3QgcGFy
YWdyYXBoIG9mIHRoZSBzZWxlY3Rpb24gZnJvbSB0aGUgZG9jdW1lbnQgCiAgICAgICAgICAgICAg
ICAgLy8gaWYgaXQncyBpbiB0aGUgc2FtZSBsaXN0IGl0ZW0gYXMgc3RhcnRPZkN1cnJlbnRQYXJh
Z3JhcGguICBSZXR1cm4gZWFybHkgdG8gYXZvaWQgYW4gCiAgICAgICAgICAgICAgICAgLy8gaW5m
aW5pdGUgbG9vcCBhbmQgYmVjYXVzZSB0aGVyZSBpcyBubyBtb3JlIHdvcmsgdG8gYmUgZG9uZS4K
QEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIEluc2VydExpc3RDb21tYW5kOjpkb0FwcGx5KCkKICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0U2VsZWN0aW9uUmFuZ2UpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIGVuZE9mU2VsZWN0aW9uID0g
bGFzdFNlbGVjdGlvblJhbmdlLT5zdGFydFBvc2l0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAg
IHN0YXJ0T2ZMYXN0UGFyYWdyYXBoID0gc3RhcnRPZlBhcmFncmFwaChlbmRPZlNlbGVjdGlvbik7
CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0T2ZMYXN0UGFyYWdyYXBoID0gc3RhcnRPZlBhcmFn
cmFwaChlbmRPZlNlbGVjdGlvbiwgQ2FuU2tpcE92ZXJFZGl0aW5nQm91bmRhcnkpOwogICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIC8vIEZldGNoIHRoZSBzdGFydCBvZiB0aGUg
c2VsZWN0aW9uIGFmdGVyIG1vdmluZyB0aGUgZmlyc3QgcGFyYWdyYXBoLApAQCAtMjYzLDggKzI2
Myw4IEBAIHZvaWQgSW5zZXJ0TGlzdENvbW1hbmQ6OnVubGlzdGlmeVBhcmFncmEKICAgICAgICAg
cHJldmlvdXNMaXN0Q2hpbGQgPSBsaXN0Q2hpbGROb2RlLT5wcmV2aW91c1NpYmxpbmcoKTsKICAg
ICB9IGVsc2UgewogICAgICAgICAvLyBBIHBhcmFncmFwaCBpcyB2aXN1YWxseSBhIGxpc3QgaXRl
bSBtaW51cyBhIGxpc3QgbWFya2VyLiAgVGhlIHBhcmFncmFwaCB3aWxsIGJlIG1vdmVkLgotICAg
ICAgICBzdGFydCA9IHN0YXJ0T2ZQYXJhZ3JhcGgob3JpZ2luYWxTdGFydCk7Ci0gICAgICAgIGVu
ZCA9IGVuZE9mUGFyYWdyYXBoKHN0YXJ0KTsKKyAgICAgICAgc3RhcnQgPSBzdGFydE9mUGFyYWdy
YXBoKG9yaWdpbmFsU3RhcnQsIENhblNraXBPdmVyRWRpdGluZ0JvdW5kYXJ5KTsKKyAgICAgICAg
ZW5kID0gZW5kT2ZQYXJhZ3JhcGgoc3RhcnQsIENhblNraXBPdmVyRWRpdGluZ0JvdW5kYXJ5KTsK
ICAgICAgICAgbmV4dExpc3RDaGlsZCA9IGVuY2xvc2luZ0xpc3RDaGlsZChlbmQubmV4dCgpLmRl
ZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKSwgbGlzdE5vZGUpOwogICAgICAgICBBU1NF
UlQobmV4dExpc3RDaGlsZCAhPSBsaXN0Q2hpbGROb2RlKTsKICAgICAgICAgcHJldmlvdXNMaXN0
Q2hpbGQgPSBlbmNsb3NpbmdMaXN0Q2hpbGQoc3RhcnQucHJldmlvdXMoKS5kZWVwRXF1aXZhbGVu
dCgpLmRlcHJlY2F0ZWROb2RlKCksIGxpc3ROb2RlKTsKQEAgLTMyNyw4ICszMjcsOCBAQCBzdGF0
aWMgRWxlbWVudCogYWRqYWNlbnRFbmNsb3NpbmdMaXN0KGNvCiAKIFBhc3NSZWZQdHI8SFRNTEVs
ZW1lbnQ+IEluc2VydExpc3RDb21tYW5kOjpsaXN0aWZ5UGFyYWdyYXBoKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgb3JpZ2luYWxTdGFydCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbGlzdFRhZykKIHsK
LSAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKG9yaWdpbmFsU3Rh
cnQpOwotICAgIFZpc2libGVQb3NpdGlvbiBlbmQgPSBlbmRPZlBhcmFncmFwaChzdGFydCk7Cisg
ICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChvcmlnaW5hbFN0YXJ0
LCBDYW5Ta2lwT3ZlckVkaXRpbmdCb3VuZGFyeSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIGVuZCA9
IGVuZE9mUGFyYWdyYXBoKHN0YXJ0LCBDYW5Ta2lwT3ZlckVkaXRpbmdCb3VuZGFyeSk7CiAgICAg
CiAgICAgaWYgKHN0YXJ0LmlzTnVsbCgpIHx8IGVuZC5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
IDA7CkBAIC0zNzUsOCArMzc1LDEyIEBAIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEluc2VydExp
c3RDb21tYW4KIAogICAgICAgICAvLyBXZSBpbnNlcnRlZCB0aGUgbGlzdCBhdCB0aGUgc3RhcnQg
b2YgdGhlIGNvbnRlbnQgd2UncmUgYWJvdXQgdG8gbW92ZQogICAgICAgICAvLyBVcGRhdGUgdGhl
IHN0YXJ0IG9mIGNvbnRlbnQsIHNvIHdlIGRvbid0IHRyeSB0byBtb3ZlIHRoZSBsaXN0IGludG8g
aXRzZWxmLiAgYnVnIDE5MDY2Ci0gICAgICAgIGlmIChpbnNlcnRpb25Qb3MgPT0gc3RhcnQuZGVl
cEVxdWl2YWxlbnQoKSkKLSAgICAgICAgICAgIHN0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChvcmln
aW5hbFN0YXJ0KTsKKyAgICAgICAgLy8gTGF5b3V0IGlzIG5lY2Vzc2FyeSBzaW5jZSBzdGFydCdz
IG5vZGUncyBpbmxpbmUgcmVuZGVyZXJzIG1heSBoYXZlIGJlZW4gZGVzdHJveWVkIGJ5CisgICAg
ICAgIC8vIHRoZSBpbnNlcnRpb24uCisgICAgICAgIGlmIChpbnNlcnRpb25Qb3MgPT0gc3RhcnQu
ZGVlcEVxdWl2YWxlbnQoKSkgeworICAgICAgICAgICAgbGlzdEVsZW1lbnQtPmRvY3VtZW50KCkt
PnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgICAgICAgICAgc3Rh
cnQgPSBzdGFydE9mUGFyYWdyYXBoKG9yaWdpbmFsU3RhcnQsIENhblNraXBPdmVyRWRpdGluZ0Jv
dW5kYXJ5KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIG1vdmVQYXJhZ3JhcGgoc3RhcnQsIGVu
ZCwgcG9zaXRpb25CZWZvcmVOb2RlKHBsYWNlaG9sZGVyLmdldCgpKSwgdHJ1ZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAJKHJldmlzaW9uIDgwNzY4KQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzUxLDE0ICs3NTEsMjEgQEAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZQYXJhZ3JhcGgo
Y29uc3QgVgogCiAgICAgTm9kZSogc3RhcnRCbG9jayA9IGVuY2xvc2luZ0Jsb2NrKHN0YXJ0Tm9k
ZSk7CiAKLSAgICBOb2RlICpub2RlID0gc3RhcnROb2RlOworICAgIE5vZGUqIG5vZGUgPSBzdGFy
dE5vZGU7CisgICAgTm9kZSogaGlnaGVzdFJvb3QgPSBoaWdoZXN0RWRpdGFibGVSb290KHApOwog
ICAgIGludCBvZmZzZXQgPSBwLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAgICAgUG9zaXRp
b246OkFuY2hvclR5cGUgdHlwZSA9IHAuYW5jaG9yVHlwZSgpOwogCi0gICAgTm9kZSAqbiA9IHN0
YXJ0Tm9kZTsKKyAgICBOb2RlKiBuID0gc3RhcnROb2RlOwogICAgIHdoaWxlIChuKSB7CiAgICAg
ICAgIGlmIChib3VuZGFyeUNyb3NzaW5nUnVsZSA9PSBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFy
eSAmJiBuLT5pc0NvbnRlbnRFZGl0YWJsZSgpICE9IHN0YXJ0Tm9kZS0+aXNDb250ZW50RWRpdGFi
bGUoKSkKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoYm91bmRhcnlDcm9zc2luZ1J1
bGUgPT0gQ2FuU2tpcE92ZXJFZGl0aW5nQm91bmRhcnkpIHsKKyAgICAgICAgICAgIHdoaWxlIChu
ICYmIG4tPmlzQ29udGVudEVkaXRhYmxlKCkgIT0gc3RhcnROb2RlLT5pc0NvbnRlbnRFZGl0YWJs
ZSgpKQorICAgICAgICAgICAgICAgIG4gPSBuLT50cmF2ZXJzZVByZXZpb3VzTm9kZVBvc3RPcmRl
cihzdGFydEJsb2NrKTsKKyAgICAgICAgICAgIGlmICghbiB8fCAhbi0+aXNEZXNjZW5kYW50T2Yo
aGlnaGVzdFJvb3QpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAg
IFJlbmRlck9iamVjdCAqciA9IG4tPnJlbmRlcmVyKCk7CiAgICAgICAgIGlmICghcikgewogICAg
ICAgICAgICAgbiA9IG4tPnRyYXZlcnNlUHJldmlvdXNOb2RlUG9zdE9yZGVyKHN0YXJ0QmxvY2sp
OwpAQCAtODE0LDE2ICs4MjEsMjQgQEAgVmlzaWJsZVBvc2l0aW9uIGVuZE9mUGFyYWdyYXBoKGNv
bnN0IFZpcwogICAgICAgICByZXR1cm4gbGFzdERlZXBFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKHN0
YXJ0Tm9kZSk7CiAgICAgCiAgICAgTm9kZSogc3RhcnRCbG9jayA9IGVuY2xvc2luZ0Jsb2NrKHN0
YXJ0Tm9kZSk7Ci0gICAgTm9kZSAqc3RheUluc2lkZUJsb2NrID0gc3RhcnRCbG9jazsKKyAgICBO
b2RlKiBzdGF5SW5zaWRlQmxvY2sgPSBzdGFydEJsb2NrOwogICAgIAotICAgIE5vZGUgKm5vZGUg
PSBzdGFydE5vZGU7CisgICAgTm9kZSogbm9kZSA9IHN0YXJ0Tm9kZTsKKyAgICBOb2RlKiBoaWdo
ZXN0Um9vdCA9IGhpZ2hlc3RFZGl0YWJsZVJvb3QocCk7CiAgICAgaW50IG9mZnNldCA9IHAuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICBQb3NpdGlvbjo6QW5jaG9yVHlwZSB0eXBlID0g
cC5hbmNob3JUeXBlKCk7CiAKLSAgICBOb2RlICpuID0gc3RhcnROb2RlOworICAgIE5vZGUqIG4g
PSBzdGFydE5vZGU7CiAgICAgd2hpbGUgKG4pIHsKICAgICAgICAgaWYgKGJvdW5kYXJ5Q3Jvc3Np
bmdSdWxlID09IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5ICYmIG4tPmlzQ29udGVudEVkaXRh
YmxlKCkgIT0gc3RhcnROb2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGlmIChib3VuZGFyeUNyb3NzaW5nUnVsZSA9PSBDYW5Ta2lwT3ZlckVkaXRp
bmdCb3VuZGFyeSkgeworICAgICAgICAgICAgd2hpbGUgKG4gJiYgbi0+aXNDb250ZW50RWRpdGFi
bGUoKSAhPSBzdGFydE5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgICAgICAgICAg
biA9IG4tPnRyYXZlcnNlTmV4dE5vZGUoc3RheUluc2lkZUJsb2NrKTsKKyAgICAgICAgICAgIGlm
ICghbiB8fCAhbi0+aXNEZXNjZW5kYW50T2YoaGlnaGVzdFJvb3QpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgUmVuZGVyT2JqZWN0ICpyID0gbi0+cmVuZGVy
ZXIoKTsKICAgICAgICAgaWYgKCFyKSB7CiAgICAgICAgICAgICBuID0gbi0+dHJhdmVyc2VOZXh0
Tm9kZShzdGF5SW5zaWRlQmxvY2spOwpAQCAtODY2LDkgKzg4MSwxMCBAQCBWaXNpYmxlUG9zaXRp
b24gZW5kT2ZQYXJhZ3JhcGgoY29uc3QgVmlzCiAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihQ
b3NpdGlvbihub2RlLCB0eXBlKSwgRE9XTlNUUkVBTSk7CiB9CiAKKy8vIEZJWE1FOiBpc1N0YXJ0
T2ZQYXJhZ3JhcGgoc3RhcnRPZk5leHRQYXJhZ3JhcGgocG9zKSkgaXMgbm90IGFsd2F5cyB0cnVl
CiBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZk5leHRQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiB2aXNpYmxlUG9zaXRpb24pCiB7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHBhcmFncmFwaEVu
ZChlbmRPZlBhcmFncmFwaCh2aXNpYmxlUG9zaXRpb24pKTsKKyAgICBWaXNpYmxlUG9zaXRpb24g
cGFyYWdyYXBoRW5kKGVuZE9mUGFyYWdyYXBoKHZpc2libGVQb3NpdGlvbiwgQ2FuU2tpcE92ZXJF
ZGl0aW5nQm91bmRhcnkpKTsKICAgICBWaXNpYmxlUG9zaXRpb24gYWZ0ZXJQYXJhZ3JhcGhFbmQo
cGFyYWdyYXBoRW5kLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpKTsKICAgICAvLyBU
aGUgcG9zaXRpb24gYWZ0ZXIgdGhlIGxhc3QgcG9zaXRpb24gaW4gdGhlIGxhc3QgY2VsbCBvZiBh
IHRhYmxlCiAgICAgLy8gaXMgbm90IHRoZSBzdGFydCBvZiB0aGUgbmV4dCBwYXJhZ3JhcGguCkBA
IC04NzcsOSArODkzLDkgQEAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZOZXh0UGFyYWdyYXBoKGNv
bgogICAgIHJldHVybiBhZnRlclBhcmFncmFwaEVuZDsKIH0KIAotYm9vbCBpblNhbWVQYXJhZ3Jh
cGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uICZhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24gJmIpCiti
b29sIGluU2FtZVBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24gJmEsIGNvbnN0IFZpc2li
bGVQb3NpdGlvbiAmYiwgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIGJvdW5kYXJ5Q3Jvc3Np
bmdSdWxlKQogewotICAgIHJldHVybiBhLmlzTm90TnVsbCgpICYmIHN0YXJ0T2ZQYXJhZ3JhcGgo
YSkgPT0gc3RhcnRPZlBhcmFncmFwaChiKTsKKyAgICByZXR1cm4gYS5pc05vdE51bGwoKSAmJiBz
dGFydE9mUGFyYWdyYXBoKGEsIGJvdW5kYXJ5Q3Jvc3NpbmdSdWxlKSA9PSBzdGFydE9mUGFyYWdy
YXBoKGIsIGJvdW5kYXJ5Q3Jvc3NpbmdSdWxlKTsKIH0KIAogYm9vbCBpc1N0YXJ0T2ZQYXJhZ3Jh
cGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uICZwb3MsIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVs
ZSBib3VuZGFyeUNyb3NzaW5nUnVsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlz
aWJsZV91bml0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJs
ZV91bml0cy5oCShyZXZpc2lvbiA4MDc2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlz
aWJsZV91bml0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIFZpc2libGVQb3Np
dGlvbiBwcmV2aW91c1BhcmFncmFwaFBvc2l0aW8KIFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdy
YXBoUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uICYsIGludCB4KTsKIGJvb2wgaXNTdGFy
dE9mUGFyYWdyYXBoKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmLCBFZGl0aW5nQm91bmRhcnlDcm9z
c2luZ1J1bGUgPSBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiBib29sIGlzRW5kT2ZQYXJh
Z3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uICYsIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVs
ZSA9IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKLWJvb2wgaW5TYW1lUGFyYWdyYXBoKGNv
bnN0IFZpc2libGVQb3NpdGlvbiAmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24gJik7Citib29sIGlu
U2FtZVBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24gJiwgY29uc3QgVmlzaWJsZVBvc2l0
aW9uICYsIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSA9IENhbm5vdENyb3NzRWRpdGluZ0Jv
dW5kYXJ5KTsKIAogLy8gYmxvY2tzICh0cnVlIHBhcmFncmFwaHM7IGxpbmUgYnJlYWsgZWxlbWVu
dHMgZG9uJ3QgYnJlYWsgYmxvY2tzKQogVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZCbG9jayhjb25z
dCBWaXNpYmxlUG9zaXRpb24gJik7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MDc2OCkKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTAz
LTEwICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnNlcnRVbm9yZGVyZWRMaXN0IG92
ZXIgYSBub24tZWRpdGFibGUgcmVnaW9uIGFuZCBtdWx0aXBsZSBsaW5lcyBlbnRlcnMgYW4gaW5m
aW5pdGUgbG9vcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTM0MDkKKworICAgICAgICBBdm9pZGluZyBjcmFzaGVzIGFuZCBpbmZpbml0ZSBsb29wcyB3
aGVuIGxpc3RpZnlpbmcgY29udGVudCB3aXRoIG1peGVkLWVkaXRhYmlsaXR5CisKKyAgICAgICAg
KiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVu
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5z
ZXJ0LWxpc3Qtd2l0aC1ub25lZGl0YWJsZS1jb250ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDExLTAz
LTEwICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBGcmFzZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2lu
c2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVudC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13aXRoLW5v
bmVkaXRhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRl
bnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACitUaGlzIHRlc3Rz
IGxpc3QgY3JlYXRpb24gaW4gYW4gZWRpdGFibGUgY29udGV4dCBidXQgYWNyb3NzIG5vbi1lZGl0
YWJsZSBjb250ZW50LiBFZGl0YWJsZSBjb250ZW50IHNob3VsZCBiZSBwdWxsZWQgaW50byB0aGUg
bGlzdCBhbmQgbm90IGNyYXNoLgorfCA8dWw+Cit8ICAgPGxpPgorfCAgICAgIkVkaXRhYmw8I3Nl
bGVjdGlvbi1hbmNob3I+ZSBwYXJhZ3JhcGggY29udGFpbmluZyBhICIKK3wgICAgIDxzcGFuPgor
fCAgICAgICBjb250ZW50ZWRpdGFibGU9ImZhbHNlIgorfCAgICAgICBzdHlsZT0iYmFja2dyb3Vu
ZC1jb2xvcjogTGlnaHRHcmF5OyIKK3wgICAgICAgIm5vbi1lZGl0YWJsZSIKK3wgICAgICIgaW4g
dGhlIG1pZGRsZSIKK3wgICAgIDxicj4KK3wgICA8bGk+Cit8ICAgICAiQW5vdGhlPCNzZWxlY3Rp
b24tZm9jdXM+ciBlZGl0YWJsZSBwYXJhZ3JhcGguIgorfCAgICAgPGJyPgpJbmRleDogTGF5b3V0
VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNv
bnRlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
L2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVudC5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVk
aXRhYmxlLWNvbnRlbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGhpcyB0ZXN0cyBsaXN0IGNyZWF0aW9u
IGluIGFuIGVkaXRhYmxlIGNvbnRleHQgYnV0IGFjcm9zcyBub24tZWRpdGFibGUgY29udGVudC4g
RWRpdGFibGUgY29udGVudCBzaG91bGQgYmUgcHVsbGVkIGludG8gdGhlIGxpc3QgYW5kIG5vdCBj
cmFzaC48L2Rpdj4KKzxkaXYgY29udGVudGVkaXRhYmxlPSJ0cnVlIiBpZD0idGVzdCIgc3R5bGU9
InBhZGRpbmc6IDFlbTsiPgorICBFZGl0YWJsZSBwYXJhZ3JhcGggY29udGFpbmluZyBhIDxzcGFu
IGNvbnRlbnRlZGl0YWJsZT0iZmFsc2UiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBMaWdodEdy
YXk7Ij5ub24tZWRpdGFibGU8L3NwYW4+IGluIHRoZSBtaWRkbGU8YnI+CisgIEFub3RoZXIgZWRp
dGFibGUgcGFyYWdyYXBoLgorPC9kaXY+Cis8YnV0dG9uIG9uY2xpY2s9Imluc2VydExpc3QoKTsi
Pkluc2VydCBMaXN0PC9idXR0b24+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2R1bXAt
YXMtbWFya3VwLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBpbnNlcnRMaXN0KCkg
eworICBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0dW5vcmRlcmVkbGlzdCcsIGZhbHNlLCAn
Jyk7Cit9CisKK3ZhciBzID0gd2luZG93LmdldFNlbGVjdGlvbigpOwordmFyIGRpdiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CitzLnNldFBvc2l0aW9uKGRpdi5jaGlsZE5vZGVz
WzBdLCAxMCk7CitzLm1vZGlmeSgiZXh0ZW5kIiwgImZvcndhcmQiLCAibGluZSIpOworCitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgIGluc2VydExpc3QoKTsKKyAgTWFya3Vw
LmRlc2NyaXB0aW9uKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZXNjcmlwdGlvbicpLmlubmVy
VGV4dCk7CisgIE1hcmt1cC5kdW1wKGRpdik7Cit9Cis8L3NjcmlwdD4K
</data>
<flag name="review"
          id="77513"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>