<?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>114819</bug_id>
          
          <creation_ts>2013-04-18 10:19:05 -0700</creation_ts>
          <short_desc>Show a block cursor in overtype mode</short_desc>
          <delta_ts>2013-05-01 07:16:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>buildbot</cc>
    
    <cc>rniwa</cc>
    
    <cc>shezbaig.wk</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>877953</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-04-18 10:19:05 -0700</bug_when>
    <thetext>I&apos;ve been taking a look at how to properly implement this. It&apos;s not enough with adjusting the caret size and position to cover the character located in the next offset because it does not get on well with bidi text. So rniwa suggested on the mailing list (see https://lists.webkit.org/pipermail/webkit-dev/2013-April/024650.html) to internally use a selection as it already deals with all the bidi text complexities.

Having an internal 1-char long selection is not a problem. The thing is how to properly show it to the user. We have two options I&apos;d say:
1) modify the caret to cover the same area than the internal selection.
2) show the selection instead of the caret

Regarding 1) it&apos;s really complicated because the actual size and position of the selection is computed at rendering time if I&apos;m not wrong (the code iterates over the RenderObjects covered by the selection to build the final LayoutRect), so it is not possible to get their position and size to be used to modify the caret.

I&apos;ve explored option 2) as well. I think we can show the selection without exposing it to the JS world by setting the Frame into the internal FrameSelection object. This way the selection will be shown to the user but the one exposed to JS will remain the one linked to the Frame object.

Opinions, suggestions, corrections?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877954</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-18 10:21:40 -0700</bug_when>
    <thetext>We already have an abstraction around FrameSelection when we expose to JavaScript (DOMSelection? can&apos;t remember the name) so I expect the second approach to work better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878473</commentid>
    <comment_count>2</comment_count>
    <who name="Shezan Baig">shezbaig.wk</who>
    <bug_when>2013-04-19 08:54:51 -0700</bug_when>
    <thetext>I&apos;m curious how the internal structure will look like if we have block-cursor *and* user-selected text at the same time.  Will there be two FrameSelection objects attached to the same Frame, or will FrameSelection be modified to handle this situation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878532</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-19 09:07:33 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I&apos;m curious how the internal structure will look like if we have block-cursor *and* user-selected text at the same time.  Will there be two FrameSelection objects attached to the same Frame, or will FrameSelection be modified to handle this situation?

You can&apos;t because collapsed and non-collapsed selection (caret) cannot co-exist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878534</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-19 09:07:56 -0700</bug_when>
    <thetext>collapsed (caret)* and non-collapsed selection</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878538</commentid>
    <comment_count>5</comment_count>
    <who name="Shezan Baig">shezbaig.wk</who>
    <bug_when>2013-04-19 09:18:37 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; You can&apos;t because collapsed and non-collapsed selection (caret) cannot co-exist.


This might present a UX problem for us.  One of our requirements is the ability to change the color of the block cursor, so it will have a different color than the selection.  This is used to indicate which side of the selection the caret extent is at, so that the user knows exactly how the selection will be modified when using Ctrl+Left/Right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878539</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-19 09:21:06 -0700</bug_when>
    <thetext>We don&apos;t support that. I don&apos;t think we want to add such a feature to WebKit unless it&apos;s a platform convention somewhere.  It&apos;ll add significant complexity to our codebase to get that right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879124</commentid>
    <comment_count>7</comment_count>
      <attachid>199026</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-04-22 07:21:45 -0700</bug_when>
    <thetext>Created attachment 199026
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879130</commentid>
    <comment_count>8</comment_count>
    <who name="Shezan Baig">shezbaig.wk</who>
    <bug_when>2013-04-22 07:30:12 -0700</bug_when>
    <thetext>Can we make block-cursor independent of the overtype mode setting?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879139</commentid>
    <comment_count>9</comment_count>
      <attachid>199026</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-22 07:48:24 -0700</bug_when>
    <thetext>Comment on attachment 199026
Patch

Attachment 199026 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/141450</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879140</commentid>
    <comment_count>10</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-04-22 07:49:52 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Can we make block-cursor independent of the overtype mode setting?

What do you mean, to have it always enabled? I guess it could make sense for specific projects but not for upstream (all the browsers/editors show the 1-pixel caret in insert mode).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879141</commentid>
    <comment_count>11</comment_count>
      <attachid>199026</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-22 07:50:00 -0700</bug_when>
    <thetext>Comment on attachment 199026
Patch

Attachment 199026 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/199181</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879142</commentid>
    <comment_count>12</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-04-22 07:51:28 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 199026 [details])
&gt; Attachment 199026 [details] did not pass mac-wk2-ews (mac-wk2):
&gt; Output: http://webkit-queues.appspot.com/results/199181

I&apos;ll need some help from windows guys. Not sure where they store the list of exported symbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879146</commentid>
    <comment_count>13</comment_count>
      <attachid>199026</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-22 08:01:14 -0700</bug_when>
    <thetext>Comment on attachment 199026
Patch

Attachment 199026 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/59585</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>880355</commentid>
    <comment_count>14</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-04-24 00:02:50 -0700</bug_when>
    <thetext>Build errors are due to the fact that I am not 100% sure how to export symbols for the Mac/Win platform, that could be addressed later and it isn&apos;t incompatible with a preliminary review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>880364</commentid>
    <comment_count>15</comment_count>
      <attachid>199026</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-24 00:21:04 -0700</bug_when>
    <thetext>Comment on attachment 199026
Patch

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

&gt; Source/WebCore/editing/Editor.cpp:3132
&gt; +        m_overwriteModeSelection = adoptPtr(new FrameSelection(frame(), true));

I&apos;m not keen on the fact we&apos;re going to create another FrameSelection.
Can&apos;t we add a single Position to FrameSelection and change updateAppearance to paint the selection depending on the mode?

&gt; Source/WebCore/editing/FrameSelection.cpp:108
&gt; +FrameSelection::FrameSelection(Frame* frame, bool isOverwriteModeSelection)

Please use enum instead.

&gt; Source/WebCore/editing/FrameSelection.cpp:345
&gt; +        m_frame-&gt;editor()-&gt;updateOverwriteModeSelection();

This is going to fire a second set of selectionchange event, etc... r- because of this.

&gt; Source/WebCore/editing/FrameSelection.cpp:1775
&gt; +    // In overtype mode, the internal FrameSelection will paint the selection pretending to be a caret.
&gt; +    if (m_frame-&gt;editor()-&gt;isOverwriteModeEnabled() != m_isOverwriteModeSelection)
&gt; +        return;
&gt; +

Oh no :( circular dependencies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>880711</commentid>
    <comment_count>16</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-04-24 10:58:49 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 199026 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=199026&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/Editor.cpp:3132
&gt; &gt; +        m_overwriteModeSelection = adoptPtr(new FrameSelection(frame(), true));
&gt; 
&gt; I&apos;m not keen on the fact we&apos;re going to create another FrameSelection.
&gt; Can&apos;t we add a single Position to FrameSelection and change updateAppearance to paint the selection depending on the mode?

I was not completely happy either, but you comments inspired me :) another approach which will fix the issues commented in your review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881195</commentid>
    <comment_count>17</comment_count>
      <attachid>199652</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-04-25 04:48:03 -0700</bug_when>
    <thetext>Created attachment 199652
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881196</commentid>
    <comment_count>18</comment_count>
      <attachid>199652</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-25 04:55:20 -0700</bug_when>
    <thetext>Comment on attachment 199652
Patch

Attachment 199652 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/224084</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881199</commentid>
    <comment_count>19</comment_count>
      <attachid>199652</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-25 05:08:47 -0700</bug_when>
    <thetext>Comment on attachment 199652
Patch

Attachment 199652 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/56773</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881200</commentid>
    <comment_count>20</comment_count>
      <attachid>199653</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-04-25 05:10:37 -0700</bug_when>
    <thetext>Created attachment 199653
Patch

Attempt to fix Mac&apos;s build failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881205</commentid>
    <comment_count>21</comment_count>
      <attachid>199653</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-25 05:31:39 -0700</bug_when>
    <thetext>Comment on attachment 199653
Patch

Attachment 199653 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/139540</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881278</commentid>
    <comment_count>22</comment_count>
      <attachid>199666</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-04-25 08:49:19 -0700</bug_when>
    <thetext>Created attachment 199666
Patch

Make the Win EWS happy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882602</commentid>
    <comment_count>23</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-04-29 08:33:33 -0700</bug_when>
    <thetext>pinging reviewers now that we have the OK from the EWSs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882641</commentid>
    <comment_count>24</comment_count>
      <attachid>199666</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-29 09:31:31 -0700</bug_when>
    <thetext>Comment on attachment 199666
Patch

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

New approach is much saner than the original patch but it still introduces undesirable circular dependencies and makes updateAppearance update the caret visibility, which we don&apos;t want.

&gt; Source/WebCore/ChangeLog:10
&gt; +        The 1-pixel long caret will be replaced in overtype mode by a

Caret &amp; selection is the same thing. Caret = collapsed selection.
We need to revise this change log entry.

&gt; Source/WebCore/editing/Editor.cpp:3130
&gt; +    frame()-&gt;selection()-&gt;setCaretVisible(!m_overwriteModeEnabled);

This seems wrong. We might want to update the appearance but we shouldn&apos;t be updating the caret visibility like this.
FrameSelection talking back to editor to get isOverwriteModeEnabled is also bad.
We probably want to add another member variable to FrameSelection saying that we want to show a block caret whenever possible.

&gt; Source/WebCore/editing/FrameSelection.cpp:1765
&gt; +    bool shouldFakeCaretVisibility = m_frame-&gt;editor()-&gt;isOverwriteModeEnabled() &amp;&amp; m_selection.isCaret();
&gt; +    if (shouldFakeCaretVisibility) {

I don&apos;t like this variable name. &quot;shouldFakeCaretVisibility&quot; doesn&apos;t tell us why it&apos;s fake or in what sense it is fake.
It&apos;s also strange that this is the special case instead of a block caret inside a line being a special case.

&gt; Source/WebCore/editing/FrameSelection.cpp:1767
&gt; +        shouldFakeCaretVisibility = forwardPosition.isNotNull();

And this flag is even updated here!

&gt; Source/WebCore/editing/FrameSelection.cpp:1768
&gt; +        setCaretVisibility(shouldFakeCaretVisibility ? Hidden : Visible);

updateAppearance shouldn&apos;t be updating caret visibility. You do realize that setCaretVisibility calls updateAppearance, right?
r- because of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882654</commentid>
    <comment_count>25</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-04-29 10:00:17 -0700</bug_when>
    <thetext>
(In reply to comment #24)
&gt; (From update of attachment 199666 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=199666&amp;action=review

&gt; FrameSelection talking back to editor to get isOverwriteModeEnabled is also bad.
&gt; We probably want to add another member variable to FrameSelection saying that we want to show a block caret whenever possible.

Will do that.
 
&gt; &gt; Source/WebCore/editing/FrameSelection.cpp:1765
&gt; &gt; +    bool shouldFakeCaretVisibility = m_frame-&gt;editor()-&gt;isOverwriteModeEnabled() &amp;&amp; m_selection.isCaret();
&gt; &gt; +    if (shouldFakeCaretVisibility) {
&gt; 
&gt; I don&apos;t like this variable name. &quot;shouldFakeCaretVisibility&quot; doesn&apos;t tell us why it&apos;s fake or in what sense it is fake.
&gt; It&apos;s also strange that this is the special case instead of a block caret inside a line being a special case.
&gt; &gt; Source/WebCore/editing/FrameSelection.cpp:1767
&gt; &gt; +        shouldFakeCaretVisibility = forwardPosition.isNotNull();
&gt; 
&gt; And this flag is even updated here!

I don&apos;t exactly get what you mean in your sentence about the special case but anyway, as you might have noticed, this whole if block basically checks that we can extend the selection forward. That&apos;s done in order not to hide the caret if we&apos;re at the end of a line and we do not need to do that if not in overwrite mode.

&gt; &gt; Source/WebCore/editing/FrameSelection.cpp:1768
&gt; &gt; +        setCaretVisibility(shouldFakeCaretVisibility ? Hidden : Visible);
&gt; 
&gt; updateAppearance shouldn&apos;t be updating caret visibility. You do realize that setCaretVisibility calls updateAppearance, right?
&gt; r- because of this.

True, terrible mistake I&apos;ll change that, weird that it didn&apos;t cause a stack overflow, some code should be breaking the loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883065</commentid>
    <comment_count>26</comment_count>
      <attachid>200115</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-04-30 07:12:55 -0700</bug_when>
    <thetext>Created attachment 200115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883117</commentid>
    <comment_count>27</comment_count>
      <attachid>200115</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-30 09:35:46 -0700</bug_when>
    <thetext>Comment on attachment 200115
Patch

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

&gt; Source/WebCore/editing/FrameSelection.cpp:1761
&gt; +        m_caretPaint = forwardPosition.isNull();

I don&apos;t think we should update this value. m_caretPaint is only useful inside m_caretBlinkTimer&apos;s fired but we&apos;ll never start this timer below if the block caret is shown.

&gt; Source/WebCore/editing/FrameSelection.cpp:2076
&gt; +#if ENABLE(TEXT_CARET)
&gt; +    m_frame-&gt;document()-&gt;updateLayoutIgnorePendingStylesheets();
&gt; +#else
&gt; +    m_frame-&gt;document()-&gt;updateStyleIfNeeded();
&gt; +#endif

Why? We can always call updateLayoutIgnorePendingStylesheets since nobody is going to call this function when the text caret is disabled.

&gt; LayoutTests/editing/selection/caret-overtype-mode-expected.txt:8
&gt; +ABC
&gt; +ABC
&gt; +×©××ABC
&gt; +×©××ABC
&gt; +×©××
&gt; +×©××

Why are we not seeing any PASSes?

&gt; LayoutTests/editing/selection/caret-overtype-mode.html:36
&gt; +        shouldBeTrueQuiet(getSelection().isCollapsed.toString());

Why quiet?

&gt; LayoutTests/editing/selection/caret-overtype-mode.html:43
&gt; +            shouldBeTrueQuiet(leftPositionValues[i].toString() + expected[i] + leftPositionValues[i+1].toString());
&gt; +        shouldBeTrueQuiet(widthValues[i].toString() + &quot; &gt; 1&quot;);

Why are we using Quiet? Why aren&apos;t we printing out results?

&gt; LayoutTests/editing/selection/caret-overtype-mode.html:46
&gt; +    // At the end of the line we must have a 1-pixel long classical caret

Include this inside debug() so that we can see it in the expected result.

&gt; LayoutTests/editing/selection/caret-overtype-mode.html:47
&gt; +    getSelection().collapse(element, element.length);

Better yet, include this inside evalAndLog so that we can see it in the expected result.
If we&apos;ve done that, we don&apos;t need the comment above at all.

&gt; LayoutTests/editing/selection/caret-overtype-mode.html:49
&gt; +    shouldBe(internals.selectionBounds().width.toString(), &quot;0&quot;, true);
&gt; +    shouldBe(internals.absoluteCaretBounds().width.toString(), &quot;1&quot;, true);

You should do 
shouldBe(&quot;internals.selectionBounds().width&quot;, &quot;0&quot;, true);
shouldBe(&quot;internals.absoluteCaretBounds().width&quot;, &quot;1&quot;, true);
instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883138</commentid>
    <comment_count>28</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-04-30 10:17:12 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 200115 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=200115&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/FrameSelection.cpp:1761
&gt; &gt; +        m_caretPaint = forwardPosition.isNull();
&gt; 
&gt; I don&apos;t think we should update this value. m_caretPaint is only useful inside m_caretBlinkTimer&apos;s fired but we&apos;ll never start this timer below if the block caret is shown.

AFAIK that&apos;s not totally correct, the last painting phase in the RenderBlock invokes the FrameSelection::paintCaret() method. If you don&apos;t like the current approach I guess that another possibility could be to store the forwardPosition (updating it likely in setSelection() when in overtype mode) and add the check both in updateAppearance and paintCaret.

&gt; &gt; Source/WebCore/editing/FrameSelection.cpp:2076
&gt; &gt; +#if ENABLE(TEXT_CARET)
&gt; &gt; +    m_frame-&gt;document()-&gt;updateLayoutIgnorePendingStylesheets();
&gt; &gt; +#else
&gt; &gt; +    m_frame-&gt;document()-&gt;updateStyleIfNeeded();
&gt; &gt; +#endif
&gt; 
&gt; Why? We can always call updateLayoutIgnorePendingStylesheets since nobody is going to call this function when the text caret is disabled.

Well, in theory nothing prevents a JS method to call toggleOverwriteMode in a rich editable content right?

&gt; &gt; LayoutTests/editing/selection/caret-overtype-mode-expected.txt:8
&gt; &gt; +ABC
&gt; &gt; +ABC
&gt; &gt; +×©××ABC
&gt; &gt; +×©××ABC
&gt; &gt; +×©××
&gt; &gt; +×©××
&gt; 
&gt; Why are we not seeing any PASSes?

Replying here to this and the following questions.

I just used the quiet versions of shouldBeXXX functions because I wanted a test case common for all the platforms. Font rendering would be different for each platform and so the sizes of the fonts. Without the quiet version we would have to provide specific results for each platform.

Note that IMHO the test should focus on verifying that we are using the block cursor, not sure that the specific widths of each letter are that important. 

&gt; &gt; LayoutTests/editing/selection/caret-overtype-mode.html:49
&gt; &gt; +    shouldBe(internals.selectionBounds().width.toString(), &quot;0&quot;, true);
&gt; &gt; +    shouldBe(internals.absoluteCaretBounds().width.toString(), &quot;1&quot;, true);
&gt; 
&gt; You should do 
&gt; shouldBe(&quot;internals.selectionBounds().width&quot;, &quot;0&quot;, true);
&gt; shouldBe(&quot;internals.absoluteCaretBounds().width&quot;, &quot;1&quot;, true);
&gt; instead.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883142</commentid>
    <comment_count>29</comment_count>
      <attachid>200115</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-30 10:21:16 -0700</bug_when>
    <thetext>Comment on attachment 200115
Patch

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

&gt;&gt;&gt; Source/WebCore/editing/FrameSelection.cpp:1761
&gt;&gt;&gt; +        m_caretPaint = forwardPosition.isNull();
&gt;&gt; 
&gt;&gt; I don&apos;t think we should update this value. m_caretPaint is only useful inside m_caretBlinkTimer&apos;s fired but we&apos;ll never start this timer below if the block caret is shown.
&gt; 
&gt; AFAIK that&apos;s not totally correct, the last painting phase in the RenderBlock invokes the FrameSelection::paintCaret() method. If you don&apos;t like the current approach I guess that another possibility could be to store the forwardPosition (updating it likely in setSelection() when in overtype mode) and add the check both in updateAppearance and paintCaret.

Ugh… dependencies :(  Okay, this looks reasonable then.

&gt;&gt;&gt; Source/WebCore/editing/FrameSelection.cpp:2076
&gt;&gt;&gt; +#endif
&gt;&gt; 
&gt;&gt; Why? We can always call updateLayoutIgnorePendingStylesheets since nobody is going to call this function when the text caret is disabled.
&gt; 
&gt; Well, in theory nothing prevents a JS method to call toggleOverwriteMode in a rich editable content right?

We’re not exposing it to JavaScript except internals, and we don’t care about the performance there
so it should be always safe to call updateLayoutIgnorePendingStylesheets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883174</commentid>
    <comment_count>30</comment_count>
      <attachid>200134</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-04-30 11:21:32 -0700</bug_when>
    <thetext>Created attachment 200134
Patch (second approach)

So this is the other approach I mentioned to you as an alternative to modifying m_caretPaint. I personally prefer the other one because I&apos;m generally not in favor of adding more stuff to an object state due to the burden of having to maintain it.

Using m_caretPaint to prevent the caret painting (as in the other patch) looks good to me because it seems the attribute is meant to avoid caret painting (not sure if it was originally designed only for the caret blinking) but I guess it should be safe enough.

Anyway posting this here just to show you another approach, I&apos;ll let the expert decide :-).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883189</commentid>
    <comment_count>31</comment_count>
      <attachid>200134</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-04-30 11:50:51 -0700</bug_when>
    <thetext>Comment on attachment 200134
Patch (second approach)

Setting it as obsolete as agreed on IRC, the other approach is the preferred one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883403</commentid>
    <comment_count>32</comment_count>
      <attachid>200207</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-05-01 02:24:40 -0700</bug_when>
    <thetext>Created attachment 200207
Patch

Added a missing initialization. Also replaced every occurrence of &quot;block caret&quot; by &quot;block cursor&quot;.

Apart from that the test results are now far more verbose and self-explanatory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883414</commentid>
    <comment_count>33</comment_count>
      <attachid>200207</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-05-01 03:42:21 -0700</bug_when>
    <thetext>Comment on attachment 200207
Patch

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

&gt; LayoutTests/editing/selection/block-cursor-overtype-mode.html:36
&gt; +    for (var i=0; i &lt; textNode.length; i++) {

Space around =.

&gt; LayoutTests/editing/selection/block-cursor-overtype-mode.html:43
&gt; +            if (expected[i-1] == &quot;&gt;&quot;)

Wrong indentation. 4 spaces.

&gt; LayoutTests/editing/selection/block-cursor-overtype-mode.html:45
&gt; +	    else

Tab

&gt; LayoutTests/editing/selection/block-cursor-overtype-mode.html:47
&gt; +	}

Tab

&gt; LayoutTests/editing/selection/block-cursor-overtype-mode.html:50
&gt; +	shouldBeTrue(&quot;blockCursor.width &gt; 1&quot;);

Tab</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883424</commentid>
    <comment_count>34</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-05-01 07:16:25 -0700</bug_when>
    <thetext>Committed r149432: &lt;http://trac.webkit.org/changeset/149432&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199026</attachid>
            <date>2013-04-22 07:21:45 -0700</date>
            <delta_ts>2013-04-25 04:47:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114819-20130422162110.patch</filename>
            <type>text/plain</type>
            <size>19161</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4ODYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkyNGVkZTQwNzIzZGVh
MDU4NmIzYWNjNDg0ZjkyYjQ5YmFhMmU3ZS4uNzBjZWVhODcxMDVlMWUyM2Q3MTNkZjI0OGIwNDBk
ZDg0ZGM5OGI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTA0LTIyICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFNob3cgYSBi
bG9jayBjYXJldCBmb3Igb3ZlcnR5cGUgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0ODE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtb3ZlcnR5
cGUtbW9kZS5odG1sCisKKyAgICAgICAgVGhlIDEtcGl4ZWwgbG9uZyBjYXJldCB3aWxsIGJlIHJl
cGxhY2VkIGluIG92ZXJ0eXBlIG1vZGUgYnkgYQorICAgICAgICBibG9jayBjYXJldCB3aGljaCB3
aWxsIGNvdmVyIHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSByZXBsYWNlZAorICAgICAgICAoZXhj
ZXB0IGF0IHRoZSBlbmQgb2YgYSBsaW5lIHdoZXJlIHRoZSBjYXJldCB3aWxsIGJlIHRoZSBjdXJy
ZW50CisgICAgICAgIDEtcGl4ZWwgbG9uZyBibGlua2luZyBiYXIpLiBJbiBvcmRlciB0byBkZWFs
IHdpdGggYmlkaSB0ZXh0IHRoZQorICAgICAgICBuZXcgY2FyZXQgaXMgaW50ZXJuYWxseSBpbXBs
ZW1lbnRlZCBhcyBhIG5ldyBGcmFtZVNlbGVjdGlvbgorICAgICAgICBtYW5hZ2VkIGJ5IHRoZSBF
ZGl0b3IuCisKKyAgICAgICAgVGhpcyBuZXcgc2VsZWN0aW9uIGlzIG5vdCBleHBvc2VkIHRvIEpT
IHNvCisgICAgICAgIGFueSBjYWxsIHRvIGRvY3VtZW50LmdldFNlbGVjdGlvbigpIHdpbGwgcmV0
dXJuIGEgY29sbGFwc2VkCisgICAgICAgIHNlbGVjdGlvbiAoaWYgdGhlcmUgaXMgbm8gc2VsZWN0
aW9uIG9mIGNvdXJzZSkgYXMgaWYgdGhlcmUgd2VyZSBubworICAgICAgICBibG9jayBjYXJldCBz
aG93biB0byB0aGUgdXNlci4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBleHBvcnRlZCBh
IGNvdXBsZSBvZiBuZXcgc3ltYm9scyBmb3IgdGVzdGluZworICAgICAgICBwdXJwb3Nlcy4KKyAg
ICAgICAgKiBXZWJDb3JlLm9yZGVyOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVk
KTogYWRkZWQgY29kZSB0bworICAgICAgICBlbmFibGUvZGlzYWJsZSB0aGUgb3ZlcnR5cGUgbW9k
ZSBzZWxlY3Rpb24uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6dXBkYXRlT3ZlcndyaXRlTW9kZVNlbGVjdGlvbik6CisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuaDoKKyAgICAgICAgKEVkaXRvcik6IGFkZGVkIGEgbmV3IG1fb3ZlcndyaXRlTW9kZVNlbGVj
dGlvbiBhdHRyaWJ1dGUuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om92ZXJ3cml0ZU1vZGVT
ZWxlY3Rpb25Cb3VuZHMpOiBuZXcgbWV0aG9kIHVzZWQKKyAgICAgICAgaW4gSW50ZXJuYWxzIHdo
aWNoIHJldHVybnMgdGhlIGJsb2NrIGNhcmV0IGJvdW5kcy4KKyAgICAgICAgKiBlZGl0aW5nL0Zy
YW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpGcmFt
ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0
aW9uKTogdXBkYXRlIHRoZSBFZGl0b3IncworICAgICAgICBpbnRlcm5hbCBGcmFtZVNlbGVjdGlv
biBldmVyeSB0aW1lIGEgbmV3IHNlbGVjdGlvbiBpcyBzZXQuCisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbjo6dXBkYXRlQXBwZWFyYW5jZSk6IGRvIG5vdCBzaG93IGEgY2FyZXQKKyAg
ICAgICAgaW4gb3ZlcnR5cGUgbW9kZSB1bmxlc3MgaXQncyBhdCB0aGUgZW5kIG9mIGEgbGluZS4K
KyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAgICAgIChGcmFtZVNlbGVj
dGlvbik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxzOjpvdmVyd3JpdGVNb2RlU2VsZWN0aW9uQm91bmRzKTogcmV0dXJuIHRoZQor
ICAgICAgICBFZGl0b3IncyBpbnRlcm5hbCBGcmFtZVNlbGVjdGlvbiBib3VuZHMuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAoSW50
ZXJuYWxzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTMtMDQtMjEg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIERp
dmlzaW9uIGJ5IHplcm8gaW4gQ1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCAzNzNjNjMwYmIzNGFmMTBhZDliNDAxNjA1ZjY3NTFlZDM5OGIyYzdmLi40
Y2VjMWU2NTczMzZkNDM0MDI5M2RmYmM4NjVjMjcxZTM4MDJiNjAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtMTY4Nyw2ICsxNjg3LDggQEAgX3drU2lnbmFsQ0ZSZWFkU3RyZWFtRXJyb3IKIF93
a1NpZ25hbENGUmVhZFN0cmVhbUhhc0J5dGVzCiBfX1pON1dlYkNvcmU2RWRpdG9yMjl0b2dnbGVD
b250aW51b3VzU3BlbGxDaGVja2luZ0V2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjMyaXNDb250aW51
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWRFdgorX19aTjdXZWJDb3JlNkVkaXRvcjI2dG9nZ2xlT3Zl
cndyaXRlTW9kZUVuYWJsZWRFdgorX19aTjdXZWJDb3JlNkVkaXRvcjI4b3ZlcndyaXRlTW9kZVNl
bGVjdGlvbkJvdW5kc0V2CiAKICNpZiAhUExBVEZPUk0oSU9TKQogLm9iamNfY2xhc3NfbmFtZV9E
T01BdHRyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCAzNTU4YWU5ZjUyN2M4MDMzYzllYmM5NGNkNGZl
ZjcxYWUyYjk3ZjUwLi5iM2NmZjZjYjliNzNiMmE1YzJkY2I5YjY1MWZkNzg4ZTFhNDQzNDE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUub3JkZXIKQEAgLTQyODU5LDMgKzQyODU5LDUgQEAgX19aTDMxcG9pbnRlckFW
TWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbgogX19aTjdXZWJDb3JlTDE5Z1Byb3BlcnR5V3JhcHBlck1h
cEUKIF9fWk43V2ViQ29yZUwxMmdGdW5jdGlvbk1hcEUKIF9fWk43V2ViQ29yZUwxMmdGdW5jdGlv
bk1hcEUKK19fWk43V2ViQ29yZTZFZGl0b3IyNnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkRXYK
K19fWk43V2ViQ29yZTZFZGl0b3IyOG92ZXJ3cml0ZU1vZGVTZWxlY3Rpb25Cb3VuZHNFdgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBj
ZmIzNzI0YTRkYjlhODEyZTVjOTIzODlkYzUyMzA1MWU5ZTA4NDg0Li42NzUxN2Q2YjEzMTRjZTBi
N2ZmOTViNjU1N2RkNjU0NDdkMzAxYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBA
IC0zMTI0LDQgKzMxMjQsMjYgQEAgdm9pZCBFZGl0b3I6OmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRp
dmVsdGVybmF0aXZlKGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmVTdHJpbmcKICAgICBtX2FsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXItPmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmUoYWx0ZXJuYXRp
dmVTdHJpbmcpOwogfQogCit2b2lkIEVkaXRvcjo6dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQo
KQoreworICAgIG1fb3ZlcndyaXRlTW9kZUVuYWJsZWQgPSAhbV9vdmVyd3JpdGVNb2RlRW5hYmxl
ZDsKKworICAgIGlmIChtX292ZXJ3cml0ZU1vZGVFbmFibGVkICYmICFtX292ZXJ3cml0ZU1vZGVT
ZWxlY3Rpb24pCisgICAgICAgIG1fb3ZlcndyaXRlTW9kZVNlbGVjdGlvbiA9IGFkb3B0UHRyKG5l
dyBGcmFtZVNlbGVjdGlvbihmcmFtZSgpLCB0cnVlKSk7CisKKyAgICB1cGRhdGVPdmVyd3JpdGVN
b2RlU2VsZWN0aW9uKCk7Cit9OworCit2b2lkIEVkaXRvcjo6dXBkYXRlT3ZlcndyaXRlTW9kZVNl
bGVjdGlvbigpCit7CisgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJh
bWUoKS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpOworICAgIG1fb3ZlcndyaXRlTW9kZVNlbGVj
dGlvbi0+c2V0U2VsZWN0aW9uKHNlbGVjdGlvbik7CisKKyAgICBpZiAoc2VsZWN0aW9uLmlzQ2Fy
ZXQoKSAmJiAhbV9vdmVyd3JpdGVNb2RlU2VsZWN0aW9uLT5tb2RpZnkoRnJhbWVTZWxlY3Rpb246
OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5
LCBXZWJDb3JlOjpOb3RVc2VyVHJpZ2dlcmVkKSkgeworICAgICAgICBtX292ZXJ3cml0ZU1vZGVT
ZWxlY3Rpb24tPmNsZWFyKCk7CisgICAgICAgIGZyYW1lKCktPnNlbGVjdGlvbigpLT5zZXRDYXJl
dFZpc2libGUodHJ1ZSk7CisgICAgfSBlbHNlCisgICAgICAgIGZyYW1lKCktPnNlbGVjdGlvbigp
LT5zZXRDYXJldFZpc2libGUoIW1fb3ZlcndyaXRlTW9kZUVuYWJsZWQpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA0NGYwZjM3OTA2ZWZm
YTM3YzE0YWY0YzUwYzIwNWE1Yjk1MWM4YzQ2Li5kZmM3NjNkNmMzZTUxZGZlYjkxYzNhNWQ1MDhk
ZGIwYTAwMWNjOWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTI0Niw3ICsyNDYsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrQW5kUmVwbGFjZUZvcihQYXNzUmVmUHRyPFNwZWxsQ2hl
Y2tSZXF1ZXN0PiwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKTsKIAogICAgIGJv
b2wgaXNPdmVyd3JpdGVNb2RlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcndyaXRlTW9k
ZUVuYWJsZWQ7IH0KLSAgICB2b2lkIHRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCkgeyBtX292
ZXJ3cml0ZU1vZGVFbmFibGVkID0gIW1fb3ZlcndyaXRlTW9kZUVuYWJsZWQ7IH0KKyAgICB2b2lk
IHRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCk7CisgICAgdm9pZCB1cGRhdGVPdmVyd3JpdGVN
b2RlU2VsZWN0aW9uKCk7CisgICAgRmxvYXRSZWN0IG92ZXJ3cml0ZU1vZGVTZWxlY3Rpb25Cb3Vu
ZHMoKSBjb25zdCB7IHJldHVybiBtX292ZXJ3cml0ZU1vZGVTZWxlY3Rpb24gPyBtX292ZXJ3cml0
ZU1vZGVTZWxlY3Rpb24tPmJvdW5kcygpIDogRmxvYXRSZWN0KCk7IH0gLy8gdXNlZCBqdXN0IGZv
ciB0ZXN0aW5nLgogCiAjaWYgVVNFKEFQUEtJVCkKICAgICB2b2lkIHVwcGVyY2FzZVdvcmQoKTsK
QEAgLTQzNyw2ICs0MzksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hcmVNYXJrZWRUZXh0TWF0
Y2hlc0hpZ2hsaWdodGVkOwogICAgIEVkaXRvclBhcmFncmFwaFNlcGFyYXRvciBtX2RlZmF1bHRQ
YXJhZ3JhcGhTZXBhcmF0b3I7CiAgICAgYm9vbCBtX292ZXJ3cml0ZU1vZGVFbmFibGVkOworICAg
IE93blB0cjxGcmFtZVNlbGVjdGlvbj4gbV9vdmVyd3JpdGVNb2RlU2VsZWN0aW9uOwogCiAgICAg
Ym9vbCBjYW5EZWxldGVSYW5nZShSYW5nZSopIGNvbnN0OwogICAgIGJvb2wgY2FuU21hcnRSZXBs
YWNlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zy
YW1lU2VsZWN0aW9uLmNwcAppbmRleCA3YWUzN2MwZDY2YjQ1ZmQ4MGMyNmMyNmJjYmM2NGY5YzZj
MTY2N2I4Li5jYjRhNGQ3NGExODRlYzliNjM2ZmRjNzAwZTQ4NGNjM2IzMTBmNzJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRBbHdheXNVc2VEaXJlY3Rpb25hbFNlbGVjdGlvbihG
cmFtZSogZnJhbWUpCiAgICAgcmV0dXJuICFmcmFtZSB8fCBmcmFtZS0+ZWRpdG9yKCktPmJlaGF2
aW9yKCkuc2hvdWxkQ29uc2lkZXJTZWxlY3Rpb25Bc0RpcmVjdGlvbmFsKCk7CiB9CiAKLUZyYW1l
U2VsZWN0aW9uOjpGcmFtZVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCitGcmFtZVNlbGVjdGlvbjo6
RnJhbWVTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBib29sIGlzT3ZlcndyaXRlTW9kZVNlbGVjdGlv
bikKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX3hQb3NGb3JWZXJ0aWNhbEFycm93TmF2
aWdhdGlvbihOb1hQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbigpKQogICAgICwgbV9ncmFu
dWxhcml0eShDaGFyYWN0ZXJHcmFudWxhcml0eSkKQEAgLTExNCw2ICsxMTQsNyBAQCBGcmFtZVNl
bGVjdGlvbjo6RnJhbWVTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogICAgICwgbV9jYXJldFBhaW50
KHRydWUpCiAgICAgLCBtX2lzQ2FyZXRCbGlua2luZ1N1c3BlbmRlZChmYWxzZSkKICAgICAsIG1f
Zm9jdXNlZChmcmFtZSAmJiBmcmFtZS0+cGFnZSgpICYmIGZyYW1lLT5wYWdlKCktPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkRnJhbWUoKSA9PSBmcmFtZSkKKyAgICAsIG1faXNPdmVyd3JpdGVN
b2RlU2VsZWN0aW9uKGlzT3ZlcndyaXRlTW9kZVNlbGVjdGlvbikKIHsKICAgICBpZiAoc2hvdWxk
QWx3YXlzVXNlRGlyZWN0aW9uYWxTZWxlY3Rpb24obV9mcmFtZSkpCiAgICAgICAgIG1fc2VsZWN0
aW9uLnNldElzRGlyZWN0aW9uYWwodHJ1ZSk7CkBAIC0zNDAsNiArMzQxLDkgQEAgdm9pZCBGcmFt
ZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVj
dGlvbiwgU2V0U2VsZWMKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAgICAgbm90aWZ5QWNjZXNz
aWJpbGl0eUZvclNlbGVjdGlvbkNoYW5nZSgpOwogI2VuZGlmCisgICAgaWYgKCFtX2lzT3Zlcndy
aXRlTW9kZVNlbGVjdGlvbiAmJiBtX2ZyYW1lLT5lZGl0b3IoKS0+aXNPdmVyd3JpdGVNb2RlRW5h
YmxlZCgpKQorICAgICAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+dXBkYXRlT3ZlcndyaXRlTW9kZVNl
bGVjdGlvbigpOworCiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZURvY3VtZW50RXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc2VsZWN0aW9uY2hhbmdlRXZlbnQsIGZhbHNl
LCBmYWxzZSkpOwogfQogCkBAIC0xNzM5LDEwICsxNzQzLDEzIEBAIGlubGluZSBzdGF0aWMgYm9v
bCBzaG91bGRTdG9wQmxpbmtpbmdEdWVUb1R5cGluZ0NvbW1hbmQoRnJhbWUqIGZyYW1lKQogdm9p
ZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQXBwZWFyYW5jZSgpCiB7CiAjaWYgRU5BQkxFKFRFWFRf
Q0FSRVQpCisgICAgLy8gVGhlIG92ZXJ3cml0ZU1vZGVTZWxlY3Rpb24gd2lsbCBwYWludCBhIGJs
b2NrIGluc3RlYWQgb2YgYSBjYXJldCBpbiBvdmVydHlwZSBtb2RlIHVubGVzcyB0aGUgY2FyZXQg
aXMgYXQgdGhlIGVuZAorICAgIC8vIG9mIGEgbGluZSAoaW4gdGhpcyBjYXNlIHRoZSAibm9ybWFs
IiBGcmFtZVNlbGVjdGlvbiB3aWxsIHBhaW50IHRoZSBjYXJldCBhcyB1c3VhbCkuCisgICAgYm9v
bCBzaG91bGRGYWtlQ2FyZXRWaXNpYmlsaXR5ID0gbV9mcmFtZS0+ZWRpdG9yKCktPmlzT3Zlcndy
aXRlTW9kZUVuYWJsZWQoKSAmJiBtX2lzT3ZlcndyaXRlTW9kZVNlbGVjdGlvbjsKICAgICBib29s
IGNhcmV0UmVjdENoYW5nZWRPckNsZWFyZWQgPSByZWNvbXB1dGVDYXJldFJlY3QoKTsKIAogICAg
IGJvb2wgY2FyZXRCcm93c2luZyA9IG1fZnJhbWUtPnNldHRpbmdzKCkgJiYgbV9mcmFtZS0+c2V0
dGluZ3MoKS0+Y2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKLSAgICBib29sIHNob3VsZEJsaW5rID0g
Y2FyZXRJc1Zpc2libGUoKSAmJiBpc0NhcmV0KCkgJiYgKGlzQ29udGVudEVkaXRhYmxlKCkgfHwg
Y2FyZXRCcm93c2luZyk7CisgICAgYm9vbCBzaG91bGRCbGluayA9IGNhcmV0SXNWaXNpYmxlKCkg
JiYgaXNDYXJldCgpICYmIChpc0NvbnRlbnRFZGl0YWJsZSgpIHx8IGNhcmV0QnJvd3NpbmcpICYm
ICFzaG91bGRGYWtlQ2FyZXRWaXNpYmlsaXR5OwogCiAgICAgLy8gSWYgdGhlIGNhcmV0IG1vdmVk
LCBzdG9wIHRoZSBibGluayB0aW1lciBzbyB3ZSBjYW4gcmVzdGFydCB3aXRoIGEKICAgICAvLyBi
bGFjayBjYXJldCBpbiB0aGUgbmV3IGxvY2F0aW9uLgpAQCAtMTc2Miw2ICsxNzY5LDEwIEBAIHZv
aWQgRnJhbWVTZWxlY3Rpb246OnVwZGF0ZUFwcGVhcmFuY2UoKQogICAgIH0KICNlbmRpZgogCisg
ICAgLy8gSW4gb3ZlcnR5cGUgbW9kZSwgdGhlIGludGVybmFsIEZyYW1lU2VsZWN0aW9uIHdpbGwg
cGFpbnQgdGhlIHNlbGVjdGlvbiBwcmV0ZW5kaW5nIHRvIGJlIGEgY2FyZXQuCisgICAgaWYgKG1f
ZnJhbWUtPmVkaXRvcigpLT5pc092ZXJ3cml0ZU1vZGVFbmFibGVkKCkgIT0gbV9pc092ZXJ3cml0
ZU1vZGVTZWxlY3Rpb24pCisgICAgICAgIHJldHVybjsKKwogICAgIFJlbmRlclZpZXcqIHZpZXcg
PSBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCBmNTQyZDA0
MWM0NTIzYjRkNDI1ZjBmNjYxOWFjYjIwN2I3NmVjMTMxLi45NTg3MmFiMDc0NDNiMTA2NjQ5OGY3
NjM1NzE5NmVkZWE4MzMyZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zy
YW1lU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5oCkBAIC0xMzAsNyArMTMwLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RVVzZXJUcmlnZ2VyZWQ+KG9wdGlvbnMgJiBVc2VyVHJpZ2dlcmVkKTsKICAgICB9CiAKLSAg
ICBleHBsaWNpdCBGcmFtZVNlbGVjdGlvbihGcmFtZSogPSAwKTsKKyAgICBleHBsaWNpdCBGcmFt
ZVNlbGVjdGlvbihGcmFtZSogPSAwLCBib29sIGlzT3ZlcndyaXRlTW9kZVNlbGVjdGlvbiA9IGZh
bHNlKTsKIAogICAgIEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBtX3NlbGVjdGlvbi5yb290RWRpdGFibGVFbGVtZW50KCk7IH0KICAgICBFbGVtZW50KiByb290
RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSBjb25zdDsKQEAgLTMxMCw2ICszMTAs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jYXJldFBhaW50IDogMTsKICAgICBib29sIG1faXND
YXJldEJsaW5raW5nU3VzcGVuZGVkIDogMTsKICAgICBib29sIG1fZm9jdXNlZCA6IDE7CisgICAg
Ym9vbCBtX2lzT3ZlcndyaXRlTW9kZVNlbGVjdGlvbiA6IDE7CiB9OwogCiBpbmxpbmUgRWRpdGlu
Z1N0eWxlKiBGcmFtZVNlbGVjdGlvbjo6dHlwaW5nU3R5bGUoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDNjNzAzNmUxZjI4NjM5MWQyNDYyYWQxOWI3ZDViNmZm
YmJiNzVhZmQuLjkwZTRmNzc2OWI4MDE3NTFhYTUzNmZhN2U4NWZiN2JkY2E2ODA3YjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE2MDUsNiArMTYwNSwxNyBAQCB2b2lk
IEludGVybmFsczo6dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoRG9jdW1lbnQqIGRvY3VtZW50
LCBFeGNlcHRpb25Db2RlJikKICAgICBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPnRvZ2ds
ZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCk7CiB9CiAKK1Bhc3NSZWZQdHI8Q2xpZW50UmVjdD4gSW50
ZXJuYWxzOjpvdmVyd3JpdGVNb2RlU2VsZWN0aW9uQm91bmRzKEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOworICAgIGlmICgh
ZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpIHx8ICFkb2N1bWVudC0+ZnJhbWUoKS0+ZWRp
dG9yKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVy
biBDbGllbnRSZWN0OjpjcmVhdGUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gQ2xpZW50UmVjdDo6
Y3JlYXRlKGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+b3ZlcndyaXRlTW9kZVNlbGVjdGlv
bkJvdW5kcygpKTsKK30KKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiB1bnNpZ25lZCBJbnRlcm5h
bHM6Om51bWJlck9mTGl2ZU5vZGVzKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCmluZGV4IDgyOTA2ZTQ3MmMwODM0ODI0NWI2NjQ3MTRiNmE4NTUzYjU1Y2Q1MzkuLjhhYTc0
ZjVmNGMzZmMzNDQzYjkzZjBlODJhNzFlMDNiYmU1NTVjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaApAQCAtMjExLDYgKzIxMSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNPdmVy
d3JpdGVNb2RlRW5hYmxlZChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHRv
Z2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpOworICAg
IFBhc3NSZWZQdHI8Q2xpZW50UmVjdD4gb3ZlcndyaXRlTW9kZVNlbGVjdGlvbkJvdW5kcyhFeGNl
cHRpb25Db2RlJik7CiAKICAgICB1bnNpZ25lZCBudW1iZXJPZlNjcm9sbGFibGVBcmVhcyhEb2N1
bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
CmluZGV4IGZiNGQzNTdmNzcwOWE1N2E0MTAwMWI5Zjg3M2YyOTQ0ZjZkNmNiOTMuLjBhMWNkYzY5
ODE2ODg3YTdlZGIzNDlkZDBjNThlZDRhMDlkYjNkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKQEAgLTE3Niw2ICsxNzYsNyBAQAogCiAgICAgYm9vbGVhbiBpc092ZXJ3cml0
ZU1vZGVFbmFibGVkKGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7
CiAgICAgdm9pZCB0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZChpbiBEb2N1bWVudCBkb2N1bWVu
dCkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgIENsaWVudFJlY3Qgb3ZlcndyaXRlTW9kZVNl
bGVjdGlvbkJvdW5kcygpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgdW5zaWduZWQgbG9u
ZyBudW1iZXJPZlNjcm9sbGFibGVBcmVhcyhpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChE
T01FeGNlcHRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmls
dGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCAzZDFhYmQxNjkwMzJk
ZDhmNGRjMTFkNjhiZWEzZmU0MTVhODE2ZTZjLi41YTAyYThiNDJmYWZkZjA4NDExMWQxZDBiODdm
NDU2ZDgxYzZhMDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
CisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTU4LDYgKzU4LDcgQEAg
X1pON1dlYkNvcmUxMEpTRG9jdW1lbnQ2c19pbmZvRTsKIF9aTjdXZWJDb3JlMTB0b0RvY3VtZW50
RU4zSlNDN0pTVmFsdWVFOwogX1pON1dlYkNvcmUxMENsaWVudFJlY3RDMUV2OwogX1pON1dlYkNv
cmUxMENsaWVudFJlY3RDMUVSS05TXzdJbnRSZWN0RTsKK19aTjdXZWJDb3JlMTBDbGllbnRSZWN0
QzFFUktOU185RmxvYXRSZWN0RTsKIF9aTjdXZWJDb3JlMTBTaGFkb3dSb290NmNyZWF0ZUVQTlNf
N0VsZW1lbnRFUmk7CiBfWk43V2ViQ29yZTExbWVtb3J5Q2FjaGVFdjsKIF9aTjdXZWJDb3JlMTFF
dmVudFRhcmdldDE3dG9HZW5lcmF0ZWRTdHJlYW1FdjsKQEAgLTcyLDYgKzczLDcgQEAgX1pON1dl
YkNvcmUxM2NyZWF0ZVdyYXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9i
amVjdEVQTlNfNE5vZGVFOwogX1pON1dlYkNvcmUxNENsaWVudFJlY3RMaXN0QzFFdjsKIF9aTjdX
ZWJDb3JlMTRDbGllbnRSZWN0TGlzdEQxRXY7CiBfWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24x
OWFic29sdXRlQ2FyZXRCb3VuZHNFdjsKK19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb242Ym91
bmRzRWI7CiBfWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnk0OXJlZ2lzdGVyVVJMU2NoZW1lQXNC
eXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3lFUktOM1dURjZTdHJpbmdFOwogX1pON1dlYkNv
cmUxNFNjaGVtZVJlZ2lzdHJ5NTdyZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNCeXBhc3NpbmdD
b250ZW50U2VjdXJpdHlQb2xpY3lFUktOM1dURjZTdHJpbmdFOwogX1pON1dlYkNvcmUxNUluc3Bl
Y3RvckNsaWVudDMxZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZUVQTlNfNFBhZ2VFUktO
M1dURjZTdHJpbmdFOwpAQCAtMjgwLDYgKzI4Miw4IEBAIF9aTjdXZWJDb3JlMjFtYXJrZXJUZXh0
Rm9yTGlzdEl0ZW1FUE5TXzdFbGVtZW50RTsKIF9aTks3V2ViQ29yZTE2SFRNTElucHV0RWxlbWVu
dDE4c2hvdWxkQXV0b2NvbXBsZXRlRXY7CiBfWk43V2ViQ29yZTZFZGl0b3IyOXRvZ2dsZUNvbnRp
bnVvdXNTcGVsbENoZWNraW5nRXY7CiBfWk5LN1dlYkNvcmU2RWRpdG9yMzJpc0NvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZEV2OworX1pON1dlYkNvcmU2RWRpdG9yMjZ0b2dnbGVPdmVyd3Jp
dGVNb2RlRW5hYmxlZEV2OworX1pON1dlYkNvcmU2RWRpdG9yMjhvdmVyd3JpdGVNb2RlU2VsZWN0
aW9uQm91bmRzRXY7CiBfWk43V2ViQ29yZTlGcmFtZVZpZXcxNXNldEZvb3RlckhlaWdodEVpOwog
X1pON1dlYkNvcmU5RnJhbWVWaWV3MTVzZXRIZWFkZXJIZWlnaHRFaTsKIF9aTjdXZWJDb3JlMTFN
ZWRpYVBsYXllcjI1c2ltdWxhdGVBdWRpb0ludGVycnVwdGlvbkV2OwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBkNzQ1NTZm
Y2UzMDA1MGEyN2JlNGU5OWYyZjZiMjU1OTk5MWU3MDkuLjNlNzA3YjNmZjE4MmQ1ZDIzYmU3MGRj
Y2ZlZWJmOWEyOTA1YmFkYjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0wNC0yMiAgU2Vy
Z2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KKworICAgICAgICBTaG93IGEg
YmxvY2sgY2FyZXQgZm9yIG92ZXJ0eXBlIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDgxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0ZXN0IGNhc2UgZm9yIHRoZSBuZXcgYmxvY2sgY2Fy
ZXQgdG8gYmUgdXNlZCBpbiBvdmVydHlwZQorICAgICAgICBtb2RlLiBUaGUgdGVzdCB2ZXJpZmll
cyB0aGF0IHRoZSAxLXBpeGVsIGxvbmcgY2FyZXQgaXMgcmVwbGFjZWQgYnkKKyAgICAgICAgYSBz
ZWxlY3Rpb24gbGlrZSAxLWNoYXJhY3RlciBsb25nIGNhcmV0IHdoZW4gaW4gb3ZlcnR5cGUKKyAg
ICAgICAgbW9kZS4gVGhpcyB0ZXN0IGNvdmVycyBMVFIgYW5kIFJUTCB0ZXh0IGluIExUUiBhbmQg
UlRMIGJsb2NrcyBhbmQKKyAgICAgICAgYmlkaSB0ZXh0LgorCisgICAgICAgICogZWRpdGluZy9z
ZWxlY3Rpb24vY2FyZXQtb3ZlcnR5cGUtbW9kZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LW92ZXJ0eXBlLW1vZGUuaHRtbDogQWRkZWQuCisK
IDIwMTMtMDQtMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtXZWJLaXQyXSBQbHVnaW5zIHdpdGhvdXQgYSBNSU1FIFR5cGUgZmFpbCB0byBs
b2FkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1vdmVy
dHlwZS1tb2RlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Nh
cmV0LW92ZXJ0eXBlLW1vZGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhNDRmZTQ0MWNmOWZk
N2NhMTk4ZTYxMzNmOWMzM2RlYTAxZjFiYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1vdmVydHlwZS1tb2RlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEyIEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIGNhcmV0IGNvdmVycyB0aGUg
bmV4dCBjaGFyYWN0ZXIgdG8gYmUgb3ZlcndyaXR0ZW4gaW4gb3ZlcnR5cGUgbW9kZSBpbnN0ZWFk
IG9mIGJlaW5nIHBhaW50ZWQgYXMgYSB0aGluICgxcHggd2lkdGgpIGJhcgorCitBQkMKK0FCQwor
16nXk9efCivXqdeT158KK9ep15PXn0FCQwor16nXk9efQUJDCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtb3ZlcnR5cGUtbW9kZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtb3ZlcnR5cGUtbW9kZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJl
OGEwOTBjOTk5MDNhNGZjOTYwYTA1NGExMzljOWMzNWFhYWY1MjIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1vdmVydHlwZS1tb2RlLmh0bWwK
QEAgLTAsMCArMSw3MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vZWRpdGluZy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiIHR5cGU9
InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5IHsKKyAgICBmb250OiAy
MHB4IEFoZW07Cit9CisKKy5iaWcgeworICAgIGZvbnQ6IDQwcHggSGVsdmV0aWNhOworfQorPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5IHN0eWxlID0gImZvbnQ6IDIwcHggQWhlbSI+Cis8cD5UaGlz
IHRlc3QgY2hlY2tzIHRoYXQgdGhlIGNhcmV0IGNvdmVycyB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8g
YmUgb3ZlcndyaXR0ZW4gaW4gb3ZlcnR5cGUgbW9kZSBpbnN0ZWFkIG9mIGJlaW5nIHBhaW50ZWQg
YXMgYSB0aGluICgxcHggd2lkdGgpIGJhcjwvcD4KKzxkaXYgaWQ9Imx0cnRleHQiIGNvbnRlbnRl
ZGl0YWJsZT0idHJ1ZSI+QUJDPC9kaXY+Cis8ZGl2IGlkPSJsdHJ0ZXh0LXJ0bCIgc3R5bGU9ImRp
cmVjdGlvbjogcnRsOyIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5BQkM8L2Rpdj4KKzxkaXYgaWQ9
InJ0bHRleHQiIHN0eWxlPSJkaXJlY3Rpb246IGx0cjsiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+
JiN4MDVlOTsmI3gwNWQzOyYjeDA1ZGY7PC9kaXY+Cis8ZGl2IGlkPSJydGx0ZXh0LXJ0bCIgc3R5
bGU9ImRpcmVjdGlvbjogcnRsOyIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj4mI3gwNWU5OyYjeDA1
ZDM7JiN4MDVkZjs8L2Rpdj4KKzxkaXYgaWQ9Im1peGVkIiBjb250ZW50ZWRpdGFibGU9InRydWUi
PiYjeDA1ZTk7JiN4MDVkMzsmI3gwNWRmO0FCQzwvZGl2PgorPGRpdiBpZD0ibWl4ZWQtcnRsIiBz
dHlsZT0iZGlyZWN0aW9uOiBydGw7IiBjb250ZW50ZWRpdGFibGU9InRydWUiPiYjeDA1ZTk7JiN4
MDVkMzsmI3gwNWRmO0FCQzwvZGl2PgorPC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzwvYm9keT4KKzxzY3JpcHQ+Cit2YXIgY2FyZXRSZWN0cyA9IFtdOworCitmdW5jdGlvbiB2ZXJp
ZnlCbG9ja0NhcmV0TGVmdFBvc2l0aW9uQW5kV2lkdGgoZWxlbWVudElkLCBleHBlY3RlZCkKK3sK
KyAgICB2YXIgbGVmdFBvc2l0aW9uVmFsdWVzID0gbmV3IEFycmF5KCk7CisgICAgdmFyIHdpZHRo
VmFsdWVzID0gbmV3IEFycmF5KCk7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChlbGVtZW50SWQpLmZpcnN0Q2hpbGQ7CisgICAgZm9yICh2YXIgaT0wOyBpIDwgZWxl
bWVudC5sZW5ndGg7IGkrKykgeworICAgICAgICBnZXRTZWxlY3Rpb24oKS5jb2xsYXBzZShlbGVt
ZW50LCBpKTsKKworICAgICAgICB2YXIgYmxvY2tDYXJldEJvdW5kcyA9IGludGVybmFscy5vdmVy
d3JpdGVNb2RlU2VsZWN0aW9uQm91bmRzKCk7CisgICAgICAgIGxlZnRQb3NpdGlvblZhbHVlcy5w
dXNoKGJsb2NrQ2FyZXRCb3VuZHMubGVmdCk7CisgICAgICAgIHdpZHRoVmFsdWVzLnB1c2goYmxv
Y2tDYXJldEJvdW5kcy53aWR0aCk7CisgICAgfQorCisgICAgZm9yICh2YXIgaT0wOyBpIDwgZWxl
bWVudC5sZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoaSArIDEgPCBlbGVtZW50Lmxlbmd0aCkK
KyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZVF1aWV0KGxlZnRQb3NpdGlvblZhbHVlc1tpXS50b1N0
cmluZygpICsgZXhwZWN0ZWRbaV0gKyBsZWZ0UG9zaXRpb25WYWx1ZXNbaSsxXS50b1N0cmluZygp
KTsKKyAgICAgICAgc2hvdWxkQmVUcnVlUXVpZXQod2lkdGhWYWx1ZXNbaV0udG9TdHJpbmcoKSAr
ICIgPiAxIik7CisgICAgfQorCisgICAgLy8gQXQgdGhlIGVuZCBvZiB0aGUgbGluZSB3ZSBtdXN0
IGhhdmUgYSAxLXBpeGVsIGxvbmcgY2xhc3NpY2FsIGNhcmV0CisgICAgZ2V0U2VsZWN0aW9uKCku
Y29sbGFwc2UoZWxlbWVudCwgZWxlbWVudC5sZW5ndGgpOworICAgIHNob3VsZEJlKGludGVybmFs
cy5vdmVyd3JpdGVNb2RlU2VsZWN0aW9uQm91bmRzKCkud2lkdGgudG9TdHJpbmcoKSwgIjAiLCB0
cnVlKTsKKyAgICBzaG91bGRCZShpbnRlcm5hbHMuYWJzb2x1dGVDYXJldEJvdW5kcygpLndpZHRo
LnRvU3RyaW5nKCksICIxIiwgdHJ1ZSk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
CisgICAgLy8gSW4gSW5zZXJ0IG1vZGUgY2FyZXQgaXMgYSAxcHggYmFyCisgICAgdmFyIGVsZW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibHRydGV4dCIpLmZpcnN0Q2hpbGQ7CisgICAg
Z2V0U2VsZWN0aW9uKCkuY29sbGFwc2UoZWxlbWVudCwgMCk7CisgICAgc2hvdWxkQmUoaW50ZXJu
YWxzLmFic29sdXRlQ2FyZXRCb3VuZHMoKS53aWR0aC50b1N0cmluZygpLCAiMSIsIHRydWUpOwor
CisgICAgaW50ZXJuYWxzLnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKGRvY3VtZW50KTsKKwor
ICAgIHZlcmlmeUJsb2NrQ2FyZXRMZWZ0UG9zaXRpb25BbmRXaWR0aCgibHRydGV4dCIsIFsiPCIs
ICI8IiwgIjwiXSk7CisgICAgdmVyaWZ5QmxvY2tDYXJldExlZnRQb3NpdGlvbkFuZFdpZHRoKCJs
dHJ0ZXh0LXJ0bCIsIFsiPCIsICI8IiwgIjwiXSk7CisgICAgdmVyaWZ5QmxvY2tDYXJldExlZnRQ
b3NpdGlvbkFuZFdpZHRoKCJydGx0ZXh0IiwgWyI+IiwgIj4iLCAiPiJdKTsKKyAgICB2ZXJpZnlC
bG9ja0NhcmV0TGVmdFBvc2l0aW9uQW5kV2lkdGgoInJ0bHRleHQtcnRsIiwgWyI+IiwgIj4iLCAi
PiJdKTsKKyAgICB2ZXJpZnlCbG9ja0NhcmV0TGVmdFBvc2l0aW9uQW5kV2lkdGgoIm1peGVkIiwg
WyI+IiwgIj4iLCAiPCIsICI8IiwgIjwiXSk7CisgICAgdmVyaWZ5QmxvY2tDYXJldExlZnRQb3Np
dGlvbkFuZFdpZHRoKCJtaXhlZC1ydGwiLCBbIj4iLCAiPiIsICI+IiwgIjwiLCAiPCJdKTsKK30K
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxYmMxM2VjZDQwNzhkODAzZjM1Mjgw
ZWE1NzE3MWQ2ZDk2Yjc0MDRkLi5kZDQ0NjRjZmI5YmFmZGI3ZGQzMWYzMDFiNjE1YjdiZTRhODc3
YmMwIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTMtMDQtMjIgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+
CisKKyAgICAgICAgU2hvdyBhIGJsb2NrIGNhcmV0IGZvciBvdmVydHlwZSBtb2RlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQ4MTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXI6IGV4cG9ydCBzb21lIGV4dHJhIHN5bWJvbHMgZm9yCisgICAgICAg
IHRlc3RpbmcgcHVycG9zZXMuCisKIDIwMTMtMDQtMjAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNl
a0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEVuYWJsZSBzdWItcGl4ZWwgbGF5b3V0IGZvciB0aGUg
R1RLIHBvcnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199652</attachid>
            <date>2013-04-25 04:48:03 -0700</date>
            <delta_ts>2013-04-25 05:10:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114819-20130425134430.patch</filename>
            <type>text/plain</type>
            <size>13441</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBjMjFmMDFkNTA4ZjUz
ZDVjOGE0MTk2N2Q0M2I4ZDEzYTRiN2NmMC4uZjUxYjlkNDZmNTgxZGM3NzAyOTgzMmNhM2FmYjQw
NzE3YWM1Yzk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTA0LTI1ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFNob3cgYSBi
bG9jayBjYXJldCBmb3Igb3ZlcnR5cGUgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0ODE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtb3ZlcnR5
cGUtbW9kZS5odG1sCisKKyAgICAgICAgVGhlIDEtcGl4ZWwgbG9uZyBjYXJldCB3aWxsIGJlIHJl
cGxhY2VkIGluIG92ZXJ0eXBlIG1vZGUgYnkgYQorICAgICAgICBibG9jayBjYXJldCB3aGljaCB3
aWxsIGNvdmVyIHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSByZXBsYWNlZAorICAgICAgICAoZXhj
ZXB0IGF0IHRoZSBlbmQgb2YgYSBsaW5lIHdoZXJlIHRoZSBjYXJldCB3aWxsIGJlIHRoZSBjdXJy
ZW50CisgICAgICAgIDEtcGl4ZWwgbG9uZyBibGlua2luZyBiYXIpLiBJbiBvcmRlciB0byBkZWFs
IHdpdGggYmlkaSB0ZXh0IHRoZQorICAgICAgICBvdmVyd3JpdGUgbW9kZSBjYXJldCBpcyBpbnRl
cm5hbGx5IHJlbmRlcmVkIGFzIGEgc2VsZWN0aW9uLgorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46IGV4cG9ydCBXZWJDb3JlOjpDbGllbnRSZWN0OjpGbG9hdFJlY3QgZm9yCisgICAgICAgIHRl
c3RpbmcgcHVycG9zZXMuCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjp0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCk6IHVwZGF0ZSBjYXJl
dCdzCisgICAgICAgIHZpc2liaWxpdHkgd2hlbiB0b2dnbGluZyB0aGUgb3ZlcnR5cGUgbW9kZS4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAg
IChFZGl0b3IpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnVwZGF0ZUFwcGVhcmFuY2UpOiB1c2UgYSAxLWNo
YXJhY3RlcgorICAgICAgICBsb25nIHNlbGVjdGlvbiB0byBwYWludCB0aGUgY2FyZXQgaW4gb3Zl
cnR5cGUgbW9kZS4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2VsZWN0aW9uQm91bmRzKTog
YWRkZWQgYSBuZXcgbWV0aG9kIHdoaWNoCisgICAgICAgIHJldHVybnMgdGhlIEludFJlY3QgaXNz
dWVkIGJ5IEZyYW1lU2VsZWN0aW9uOjpib3VuZHMoKS4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5oOiBEaXR0by4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6IERpdHRvLgor
CiAyMDEzLTA0LTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbQmxhY2tCZXJyeV0gRmlsZXN5c3RlbSBjYWxsYmFjayBub3RpZnlDcmVhdGVT
bmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEgY2FuIGJlIGNhbGxlZCBvbiB0aGUgd3JpbmcgdGhy
ZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDIzYzFlMjc0ZWY1YjM0YmViNTNiMGIyZjU0M2Ew
N2NhMmM0ODBhYmMuLjQzOWYwMWM3ZWFmNzFiYWQyM2M1NzM0ZjQzYmE4MDI1ZDRmYzU0ZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCkBAIC02OCw2ICs2OCw3IEBAIF9fWk4zV1RGMTJBdG9taWNTdHJp
bmczYWRkRVBLMTBfX0NGU3RyaW5nCiBfX1pOM1dURjZTdHJpbmdDMUVQOE5TU3RyaW5nCiBfX1pO
M1dURjZTdHJpbmdDMUVQSzEwX19DRlN0cmluZwogX19aTjdXZWJDb3JlMTBDbGllbnRSZWN0QzFF
UktOU183SW50UmVjdEUKK19fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNfOUZsb2F0UmVj
dEUKIF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRXYKIF9fWk43V2ViQ29yZTEwQ3JlZGVudGlh
bEMxRVJLTjNXVEY2U3RyaW5nRVM0X05TXzIxQ3JlZGVudGlhbFBlcnNpc3RlbmNlRQogX19aTjdX
ZWJDb3JlMTBDcmVkZW50aWFsQzFFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGEw
MTgwMmE0YzM2OGNhOGIzMDlmMzVlNzBiODBkZGUxOTIyZWIzNmYuLjMyYjg3Yzg0M2EyYmNhYTkz
MGIwYWU5MmZlNTExODQwZGM4YmU1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAg
LTMxMjQsNCArMzEyNCwxMCBAQCB2b2lkIEVkaXRvcjo6YXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2
ZWx0ZXJuYXRpdmUoY29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZVN0cmluZwogICAgIG1fYWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci0+YXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZShhbHRlcm5hdGl2
ZVN0cmluZyk7CiB9CiAKK3ZvaWQgRWRpdG9yOjp0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgp
Cit7CisgICAgbV9vdmVyd3JpdGVNb2RlRW5hYmxlZCA9ICFtX292ZXJ3cml0ZU1vZGVFbmFibGVk
OworICAgIGZyYW1lKCktPnNlbGVjdGlvbigpLT5zZXRDYXJldFZpc2libGUoIW1fb3ZlcndyaXRl
TW9kZUVuYWJsZWQpOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmgKaW5kZXggNDRmMGYzNzkwNmVmZmEzN2MxNGFmNGM1MGMyMDVhNWI5NTFjOGM0Ni4u
Zjg2YzUxYjM1ZTRlNjI1MTM2ZGNiMGEyNGI3Mzg5NmRjMmE4M2YzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCkBAIC0yNDYsNyArMjQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFya0FuZFJl
cGxhY2VGb3IoUGFzc1JlZlB0cjxTcGVsbENoZWNrUmVxdWVzdD4sIGNvbnN0IFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+Jik7CiAKICAgICBib29sIGlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX292ZXJ3cml0ZU1vZGVFbmFibGVkOyB9Ci0gICAgdm9pZCB0b2dnbGVP
dmVyd3JpdGVNb2RlRW5hYmxlZCgpIHsgbV9vdmVyd3JpdGVNb2RlRW5hYmxlZCA9ICFtX292ZXJ3
cml0ZU1vZGVFbmFibGVkOyB9CisgICAgdm9pZCB0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgp
OwogCiAjaWYgVVNFKEFQUEtJVCkKICAgICB2b2lkIHVwcGVyY2FzZVdvcmQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggN2FlMzdjMGQ2NmI0NWZkODBj
MjZjMjZiY2JjNjRmOWM2YzE2NjdiOC4uZjJjMDMwZDhkMjMwMmI1ZDZhMWUzMGEwNTkwZWFmYWJi
N2Y0NzQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAg
LTE3MzgsNiArMTczOCwxNiBAQCBpbmxpbmUgc3RhdGljIGJvb2wgc2hvdWxkU3RvcEJsaW5raW5n
RHVlVG9UeXBpbmdDb21tYW5kKEZyYW1lKiBmcmFtZSkKIAogdm9pZCBGcmFtZVNlbGVjdGlvbjo6
dXBkYXRlQXBwZWFyYW5jZSgpCiB7CisgICAgLy8gVGhlIG92ZXJ3cml0ZU1vZGVTZWxlY3Rpb24g
d2lsbCBwYWludCBhIGJsb2NrIGluc3RlYWQgb2YgYSBjYXJldCBpbiBvdmVydHlwZSBtb2RlIHVu
bGVzcyB0aGUgY2FyZXQgaXMgYXQgdGhlIGVuZAorICAgIC8vIG9mIGEgbGluZSAoaW4gdGhpcyBj
YXNlIHRoZSAibm9ybWFsIiBGcmFtZVNlbGVjdGlvbiB3aWxsIHBhaW50IHRoZSBjYXJldCBhcyB1
c3VhbCkuCisgICAgVmlzaWJsZVBvc2l0aW9uIGZvcndhcmRQb3NpdGlvbjsKKyAgICBib29sIHNo
b3VsZEZha2VDYXJldFZpc2liaWxpdHkgPSBtX2ZyYW1lLT5lZGl0b3IoKS0+aXNPdmVyd3JpdGVN
b2RlRW5hYmxlZCgpICYmIG1fc2VsZWN0aW9uLmlzQ2FyZXQoKTsKKyAgICBpZiAoc2hvdWxkRmFr
ZUNhcmV0VmlzaWJpbGl0eSkgeworICAgICAgICBmb3J3YXJkUG9zaXRpb24gPSBtb2RpZnlFeHRl
bmRpbmdGb3J3YXJkKENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAgICAgc2hvdWxkRmFrZUNh
cmV0VmlzaWJpbGl0eSA9IGZvcndhcmRQb3NpdGlvbi5pc05vdE51bGwoKTsKKyAgICAgICAgc2V0
Q2FyZXRWaXNpYmlsaXR5KHNob3VsZEZha2VDYXJldFZpc2liaWxpdHkgPyBIaWRkZW4gOiBWaXNp
YmxlKTsKKyAgICB9CisKICNpZiBFTkFCTEUoVEVYVF9DQVJFVCkKICAgICBib29sIGNhcmV0UmVj
dENoYW5nZWRPckNsZWFyZWQgPSByZWNvbXB1dGVDYXJldFJlY3QoKTsKIApAQCAtMTc2OCw5ICsx
Nzc4LDkgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQXBwZWFyYW5jZSgpCiAKICAgICAv
LyBDb25zdHJ1Y3QgYSBuZXcgVmlzaWJsZVNvbHV0aW9uLCBzaW5jZSBtX3NlbGVjdGlvbiBpcyBu
b3QgbmVjZXNzYXJpbHkgdmFsaWQsIGFuZCB0aGUgZm9sbG93aW5nIHN0ZXBzCiAgICAgLy8gYXNz
dW1lIGEgdmFsaWQgc2VsZWN0aW9uLiBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02OTU2Mz4gYW5kIDxyZGFyOi8vcHJvYmxlbS8xMDIzMjg2Nj4uCi0gICAgVmlz
aWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24obV9zZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCksIG1fc2Vs
ZWN0aW9uLnZpc2libGVFbmQoKSk7CisgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24obV9z
ZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCksIHNob3VsZEZha2VDYXJldFZpc2liaWxpdHkgPyBmb3J3
YXJkUG9zaXRpb24gOiBtX3NlbGVjdGlvbi52aXNpYmxlRW5kKCkpOwogCi0gICAgaWYgKCFzZWxl
Y3Rpb24uaXNSYW5nZSgpKSB7CisgICAgaWYgKCFzZWxlY3Rpb24uaXNSYW5nZSgpICYmICFzaG91
bGRGYWtlQ2FyZXRWaXNpYmlsaXR5KSB7CiAgICAgICAgIHZpZXctPmNsZWFyU2VsZWN0aW9uKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggYzM0ZDNkOTYzMGMwMjMwN2Q5MTcwODdhZTU4N2YxMjUzOWVlZWE1ZS4uNWQ3NmM1YTUx
NDQwZjA5ZmQzYjhiYTE1Y2ZjMTljMjRkMWU4ZGM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtMjI2MCw2ICsyMjYwLDE4IEBAIGRvdWJsZSBJbnRlcm5hbHM6OmNsb3Nl
c3RUaW1lVG9UaW1lUmFuZ2VzKGRvdWJsZSB0aW1lLCBUaW1lUmFuZ2VzKiByYW5nZXMpCiB7CiAg
ICAgcmV0dXJuIHJhbmdlcy0+bmVhcmVzdCh0aW1lKTsKIH0KKworUGFzc1JlZlB0cjxDbGllbnRS
ZWN0PiBJbnRlcm5hbHM6OnNlbGVjdGlvbkJvdW5kcyhFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3Vt
ZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSB8fCAhZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlv
bigpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4g
Q2xpZW50UmVjdDo6Y3JlYXRlKCk7CisgICAgfQorCisgICAgcmV0dXJuIENsaWVudFJlY3Q6OmNy
ZWF0ZShkb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPmJvdW5kcygpKTsKK30KKwogI2Vu
ZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDgyOTA2ZTQ3MmMwODM0
ODI0NWI2NjQ3MTRiNmE4NTUzYjU1Y2Q1MzkuLmI3YjczYTJjYzc0NjgzN2Y4YzAyNjFjNmI3MTQ2
M2ZhMTZkZTIxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMzI4LDYgKzMy
OCw4IEBAIHB1YmxpYzoKICAgICBkb3VibGUgY2xvc2VzdFRpbWVUb1RpbWVSYW5nZXMoZG91Ymxl
IHRpbWUsIFRpbWVSYW5nZXMqKTsKICNlbmRpZgogCisgICAgUGFzc1JlZlB0cjxDbGllbnRSZWN0
PiBzZWxlY3Rpb25Cb3VuZHMoRXhjZXB0aW9uQ29kZSYpOworCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IEludGVybmFscyhEb2N1bWVudCopOwogICAgIERvY3VtZW50KiBjb250ZXh0RG9jdW1lbnQo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBmYjRkMzU3Zjc3
MDlhNTdhNDEwMDFiOWY4NzNmMjk0NGY2ZDZjYjkzLi4zNGE0ZTgxY2JmMzlhMDg0NjQzN2IxZjUx
NTM0MTQxM2UwNWYyYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0y
ODcsNCArMjg3LDYgQEAKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIGRvdWJsZSBjbG9zZXN0VGlt
ZVRvVGltZVJhbmdlcyhpbiBkb3VibGUgdGltZSwgaW4gVGltZVJhbmdlcyByYW5nZXMpOwogCiAg
ICAgYm9vbGVhbiBpc1NlbGVjdFBvcHVwVmlzaWJsZShpbiBOb2RlIG5vZGUpOworCisgICAgQ2xp
ZW50UmVjdCBzZWxlY3Rpb25Cb3VuZHMoKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29s
cy9zeW1ib2xzLmZpbHRlcgppbmRleCAzZDFhYmQxNjkwMzJkZDhmNGRjMTFkNjhiZWEzZmU0MTVh
ODE2ZTZjLi5lZWUzZmI5NTE5MTZhN2ZlNTY2YTQxZjJjNmE3ZmRmMGMxMWY2ZGQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXIKQEAgLTMwMiw2ICszMDIsOSBAQCBfWk43V2ViQ29yZTEydG9UaW1l
UmFuZ2VzRU4zSlNDN0pTVmFsdWVFOwogX1pON1dlYkNvcmUxNHRvRmxvYXQzMkFycmF5RU4zSlND
N0pTVmFsdWVFOwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9N
R2xvYmFsT2JqZWN0RVBOU18xMFRpbWVSYW5nZXNFOwogX1pOSzdXZWJDb3JlMTBUaW1lUmFuZ2Vz
N25lYXJlc3RFZDsKK19aTjdXZWJDb3JlNkVkaXRvcjI2dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJs
ZWRFdjsKK19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb242Ym91bmRzRWI7CitfWk43V2ViQ29y
ZTEwQ2xpZW50UmVjdEMxRVJLTlNfOUZsb2F0UmVjdEU7CiAKIGxvY2FsOgogX1oqOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGViNjdiZDJlMTc3NmM1ODE4YWUyMjIzMGE4MjhiMzY4YzlmNzcyNWMuLjEwZWVkM2ZiZTczZWQ2
OGNlNTczNmJlNDhmNWY4ZTQzYWY2YjY4MGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0w
NC0yNSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KKworICAgICAg
ICBTaG93IGEgYmxvY2sgY2FyZXQgZm9yIG92ZXJ0eXBlIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDgxOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0ZXN0IGNhc2UgZm9yIHRoZSBuZXcg
YmxvY2sgY2FyZXQgdG8gYmUgdXNlZCBpbiBvdmVydHlwZQorICAgICAgICBtb2RlLiBUaGUgdGVz
dCB2ZXJpZmllcyB0aGF0IHRoZSAxLXBpeGVsIGxvbmcgY2FyZXQgaXMgcmVwbGFjZWQgYnkKKyAg
ICAgICAgYSBzZWxlY3Rpb24gbGlrZSAxLWNoYXJhY3RlciBsb25nIGNhcmV0IHdoZW4gaW4gb3Zl
cnR5cGUKKyAgICAgICAgbW9kZS4gVGhpcyB0ZXN0IGNvdmVycyBMVFIgYW5kIFJUTCB0ZXh0IGlu
IExUUiBhbmQgUlRMIGJsb2NrcyBhbmQKKyAgICAgICAgYmlkaSB0ZXh0LgorCisgICAgICAgICog
ZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtb3ZlcnR5cGUtbW9kZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LW92ZXJ0eXBlLW1vZGUuaHRtbDog
QWRkZWQuCisKIDIwMTMtMDQtMTUgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lA
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBFRkwgZ2FyZGVuaW5nLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtb3ZlcnR5cGUtbW9kZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1vdmVydHlw
ZS1tb2RlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTRjMjgxZmIzZmFjNzdkNzhmNGIyODA0
ZjUyMDhhZDg1YTMyMmJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vY2FyZXQtb3ZlcnR5cGUtbW9kZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBA
QAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHRoZSBjYXJldCBjb3ZlcnMgdGhlIG5leHQgY2hhcmFj
dGVyIHRvIGJlIG92ZXJ3cml0dGVuIGluIG92ZXJ0eXBlIG1vZGUgaW5zdGVhZCBvZiBiZWluZyBw
YWludGVkIGFzIGEgdGhpbiAoMXB4IHdpZHRoKSBiYXIKKworQUJDCitBQkMKK9ep15PXn0FCQwor
16nXk9efQUJDCivXqdeT158KK9ep15PXnworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LW92ZXJ0eXBlLW1vZGUuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LW92ZXJ0eXBlLW1vZGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmU2YjIyMDQ1NzA3
YzExMzUxYTU5ZWJiMGJhNDA5NDE5N2Q5ZWJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtb3ZlcnR5cGUtbW9kZS5odG1sCkBAIC0wLDAgKzEs
NzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9Ii4uL2VkaXRpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIiB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPjwvc2NyaXB0PgorPHN0eWxlPgorYm9keSB7CisgICAgZm9udDogMjBweCBBaGVtOwor
fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IHN0eWxlID0gImZvbnQ6IDIwcHggQWhlbSI+Cis8
cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIGNhcmV0IGNvdmVycyB0aGUgbmV4dCBjaGFyYWN0
ZXIgdG8gYmUgb3ZlcndyaXR0ZW4gaW4gb3ZlcnR5cGUgbW9kZSBpbnN0ZWFkIG9mIGJlaW5nIHBh
aW50ZWQgYXMgYSB0aGluICgxcHggd2lkdGgpIGJhcjwvcD4KKzxkaXYgaWQ9Imx0cnRleHQiIGNv
bnRlbnRlZGl0YWJsZT0idHJ1ZSI+QUJDPC9kaXY+Cis8ZGl2IGlkPSJsdHJ0ZXh0LXJ0bCIgc3R5
bGU9ImRpcmVjdGlvbjogcnRsOyIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5BQkM8L2Rpdj4KKzxk
aXYgaWQ9Im1peGVkIiBjb250ZW50ZWRpdGFibGU9InRydWUiPiYjeDA1ZTk7JiN4MDVkMzsmI3gw
NWRmO0FCQzwvZGl2PgorPGRpdiBpZD0ibWl4ZWQtcnRsIiBzdHlsZT0iZGlyZWN0aW9uOiBydGw7
IiBjb250ZW50ZWRpdGFibGU9InRydWUiPiYjeDA1ZTk7JiN4MDVkMzsmI3gwNWRmO0FCQzwvZGl2
PgorPGRpdiBpZD0icnRsdGV4dCIgc3R5bGU9ImRpcmVjdGlvbjogbHRyOyIgY29udGVudGVkaXRh
YmxlPSJ0cnVlIj4mI3gwNWU5OyYjeDA1ZDM7JiN4MDVkZjs8L2Rpdj4KKzxkaXYgaWQ9InJ0bHRl
eHQtcnRsIiBzdHlsZT0iZGlyZWN0aW9uOiBydGw7IiBjb250ZW50ZWRpdGFibGU9InRydWUiPiYj
eDA1ZTk7JiN4MDVkMzsmI3gwNWRmOzwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
L2JvZHk+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB2ZXJpZnlCbG9ja0NhcmV0TGVmdFBvc2l0aW9u
QW5kV2lkdGgoZWxlbWVudElkLCBleHBlY3RlZCkKK3sKKyAgICB2YXIgbGVmdFBvc2l0aW9uVmFs
dWVzID0gbmV3IEFycmF5KCk7CisgICAgdmFyIHdpZHRoVmFsdWVzID0gbmV3IEFycmF5KCk7Cisg
ICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpLmZpcnN0
Q2hpbGQ7CisgICAgZm9yICh2YXIgaT0wOyBpIDwgZWxlbWVudC5sZW5ndGg7IGkrKykgeworICAg
ICAgICBnZXRTZWxlY3Rpb24oKS5jb2xsYXBzZShlbGVtZW50LCBpKTsKKworICAgICAgICB2YXIg
YmxvY2tDYXJldEJvdW5kcyA9IGludGVybmFscy5zZWxlY3Rpb25Cb3VuZHMoKTsKKyAgICAgICAg
bGVmdFBvc2l0aW9uVmFsdWVzLnB1c2goYmxvY2tDYXJldEJvdW5kcy5sZWZ0KTsKKyAgICAgICAg
d2lkdGhWYWx1ZXMucHVzaChibG9ja0NhcmV0Qm91bmRzLndpZHRoKTsKKworICAgICAgICBzaG91
bGRCZVRydWVRdWlldChnZXRTZWxlY3Rpb24oKS5pc0NvbGxhcHNlZC50b1N0cmluZygpKTsKKyAg
ICAgICAgc2hvdWxkQmUoaW50ZXJuYWxzLmFic29sdXRlQ2FyZXRCb3VuZHMoKS53aWR0aC50b1N0
cmluZygpLCAiMSIsIHRydWUpOworICAgIH0KKworICAgIGZvciAodmFyIGk9MDsgaSA8IGVsZW1l
bnQubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGkgKyAxIDwgZWxlbWVudC5sZW5ndGgpCisg
ICAgICAgICAgICBzaG91bGRCZVRydWVRdWlldChsZWZ0UG9zaXRpb25WYWx1ZXNbaV0udG9TdHJp
bmcoKSArIGV4cGVjdGVkW2ldICsgbGVmdFBvc2l0aW9uVmFsdWVzW2krMV0udG9TdHJpbmcoKSk7
CisgICAgICAgIHNob3VsZEJlVHJ1ZVF1aWV0KHdpZHRoVmFsdWVzW2ldLnRvU3RyaW5nKCkgKyAi
ID4gMSIpOworICAgIH0KKworICAgIC8vIEF0IHRoZSBlbmQgb2YgdGhlIGxpbmUgd2UgbXVzdCBo
YXZlIGEgMS1waXhlbCBsb25nIGNsYXNzaWNhbCBjYXJldAorICAgIGdldFNlbGVjdGlvbigpLmNv
bGxhcHNlKGVsZW1lbnQsIGVsZW1lbnQubGVuZ3RoKTsKKyAgICBzaG91bGRCZShpbnRlcm5hbHMu
c2VsZWN0aW9uQm91bmRzKCkud2lkdGgudG9TdHJpbmcoKSwgIjAiLCB0cnVlKTsKKyAgICBzaG91
bGRCZShpbnRlcm5hbHMuYWJzb2x1dGVDYXJldEJvdW5kcygpLndpZHRoLnRvU3RyaW5nKCksICIx
IiwgdHJ1ZSk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCisgICAgLy8gSW4gSW5z
ZXJ0IG1vZGUgY2FyZXQgaXMgYSAxcHggYmFyCisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibHRydGV4dCIpLmZpcnN0Q2hpbGQ7CisgICAgZ2V0U2VsZWN0aW9uKCku
Y29sbGFwc2UoZWxlbWVudCwgMCk7CisgICAgc2hvdWxkQmUoaW50ZXJuYWxzLmFic29sdXRlQ2Fy
ZXRCb3VuZHMoKS53aWR0aC50b1N0cmluZygpLCAiMSIsIHRydWUpOworCisgICAgaW50ZXJuYWxz
LnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKGRvY3VtZW50KTsKKworICAgIHZlcmlmeUJsb2Nr
Q2FyZXRMZWZ0UG9zaXRpb25BbmRXaWR0aCgicnRsdGV4dCIsIFsiPiIsICI+IiwgIj4iXSk7Cisg
ICAgdmVyaWZ5QmxvY2tDYXJldExlZnRQb3NpdGlvbkFuZFdpZHRoKCJydGx0ZXh0LXJ0bCIsIFsi
PiIsICI+IiwgIj4iXSk7CisgICAgdmVyaWZ5QmxvY2tDYXJldExlZnRQb3NpdGlvbkFuZFdpZHRo
KCJsdHJ0ZXh0IiwgWyI8IiwgIjwiLCAiPCJdKTsKKyAgICB2ZXJpZnlCbG9ja0NhcmV0TGVmdFBv
c2l0aW9uQW5kV2lkdGgoImx0cnRleHQtcnRsIiwgWyI8IiwgIjwiLCAiPCJdKTsKKyAgICB2ZXJp
ZnlCbG9ja0NhcmV0TGVmdFBvc2l0aW9uQW5kV2lkdGgoIm1peGVkIiwgWyI+IiwgIj4iLCAiPCIs
ICI8IiwgIjwiXSk7CisgICAgdmVyaWZ5QmxvY2tDYXJldExlZnRQb3NpdGlvbkFuZFdpZHRoKCJt
aXhlZC1ydGwiLCBbIj4iLCAiPiIsICI+IiwgIjwiLCAiPCJdKTsKK30KKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyIgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0NoYW5nZUxv
ZyBiL0NoYW5nZUxvZwppbmRleCAyYmJiY2U3NDQwZGJkYzgyNDBmMGM0OGUwNzllNmMyOTE0ZGI3
MTgyLi42YWMxYmM0YzY5NWRmYmIzNTE0NjFkOGUwNzEzY2M0NjI2Yjk2MmM2IDEwMDY0NAotLS0g
YS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDQtMjUg
IFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAgICAgU2hv
dyBhIGJsb2NrIGNhcmV0IGZvciBvdmVydHlwZSBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQ4MTkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXI6IGV4cG9ydCBzb21lIGV4dHJhIHN5bWJvbHMgZm9yCisgICAgICAgIHRlc3RpbmcgcHVycG9z
ZXMuCisKIDIwMTMtMDQtMTIgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdIExvd2VyIHRoZSBwYW5nbyBkZXBlbmRlbmN5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199653</attachid>
            <date>2013-04-25 05:10:37 -0700</date>
            <delta_ts>2013-04-25 08:49:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114819-20130425140704.patch</filename>
            <type>text/plain</type>
            <size>14223</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5MDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE0OGQ2MGU0ZTE3ZjQw
M2UxZGJiNTUyMzcwMDg1N2RlMTZlZmY3YS4uNGViOWRlMjM5NzA0N2IyN2ZlYmJhMzI2ODA1YTZl
MzRmY2YzY2I2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTA0LTI1ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFNob3cgYSBi
bG9jayBjYXJldCBmb3Igb3ZlcnR5cGUgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0ODE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtb3ZlcnR5
cGUtbW9kZS5odG1sCisKKyAgICAgICAgVGhlIDEtcGl4ZWwgbG9uZyBjYXJldCB3aWxsIGJlIHJl
cGxhY2VkIGluIG92ZXJ0eXBlIG1vZGUgYnkgYQorICAgICAgICBibG9jayBjYXJldCB3aGljaCB3
aWxsIGNvdmVyIHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSByZXBsYWNlZAorICAgICAgICAoZXhj
ZXB0IGF0IHRoZSBlbmQgb2YgYSBsaW5lIHdoZXJlIHRoZSBjYXJldCB3aWxsIGJlIHRoZSBjdXJy
ZW50CisgICAgICAgIDEtcGl4ZWwgbG9uZyBibGlua2luZyBiYXIpLiBJbiBvcmRlciB0byBkZWFs
IHdpdGggYmlkaSB0ZXh0IHRoZQorICAgICAgICBvdmVyd3JpdGUgbW9kZSBjYXJldCBpcyBpbnRl
cm5hbGx5IHJlbmRlcmVkIGFzIGEgc2VsZWN0aW9uLgorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46IEV4cG9ydCBzeW1ib2xzIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorICAgICAgICAqIFdlYkNv
cmUub3JkZXI6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQpOiB1cGRhdGUgY2Fy
ZXQncworICAgICAgICB2aXNpYmlsaXR5IHdoZW4gdG9nZ2xpbmcgdGhlIG92ZXJ0eXBlIG1vZGUu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAg
ICAoRWRpdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKTogdXNlIGEgMS1j
aGFyYWN0ZXIKKyAgICAgICAgbG9uZyBzZWxlY3Rpb24gdG8gcGFpbnQgdGhlIGNhcmV0IGluIG92
ZXJ0eXBlIG1vZGUuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNlbGVjdGlvbkJvdW5kcyk6
IGFkZGVkIGEgbmV3IG1ldGhvZCB3aGljaAorICAgICAgICByZXR1cm5zIHRoZSBJbnRSZWN0IGlz
c3VlZCBieSBGcmFtZVNlbGVjdGlvbjo6Ym91bmRzKCkuCisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaDogRGl0dG8uCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOiBEaXR0by4K
KwogMjAxMy0wNC0yNSAgUGVyLUVyaWsgQnJvZGluICA8cGVyLWVyaWsuYnJvZGluQGVyaWNzc29u
LmNvbT4KIAogICAgICAgICBFdmVudFNvdXJjZTogU3luY2hyb25vdXMgbG9hZGVyIGNhbGxiYWNr
IG5vdCBoYW5kbGVkIHByb3Blcmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDAxNWM3NDM0NDI4
YTVmNWE2M2ZiZWUxYjcxMTAxODViNmQ0NzA0MzAuLmY2YTE5ZjQwMWM4ZGVhNTc5Nzk0ZTVkZDYw
ZjZlNjM4NzU5MmNhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC02OCw2ICs2OCw3IEBAIF9f
Wk4zV1RGMTJBdG9taWNTdHJpbmczYWRkRVBLMTBfX0NGU3RyaW5nCiBfX1pOM1dURjZTdHJpbmdD
MUVQOE5TU3RyaW5nCiBfX1pOM1dURjZTdHJpbmdDMUVQSzEwX19DRlN0cmluZwogX19aTjdXZWJD
b3JlMTBDbGllbnRSZWN0QzFFUktOU183SW50UmVjdEUKK19fWk43V2ViQ29yZTEwQ2xpZW50UmVj
dEMxRVJLTlNfOUZsb2F0UmVjdEUKIF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRXYKIF9fWk43
V2ViQ29yZTEwQ3JlZGVudGlhbEMxRVJLTjNXVEY2U3RyaW5nRVM0X05TXzIxQ3JlZGVudGlhbFBl
cnNpc3RlbmNlRQogX19aTjdXZWJDb3JlMTBDcmVkZW50aWFsQzFFdgpAQCAtOTU3LDYgKzk1OCw3
IEBAIF9fWk43V2ViQ29yZTZFZGl0b3I2aW5kZW50RXYKIF9fWk43V2ViQ29yZTZFZGl0b3I3Q29t
bWFuZEMxRXYKIF9fWk43V2ViQ29yZTZFZGl0b3I3Y29tbWFuZEVSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTZFZGl0b3I3b3V0ZGVudEV2CitfX1pON1dlYkNvcmU2RWRpdG9yMjZ0b2dnbGVP
dmVyd3JpdGVNb2RlRW5hYmxlZEV2CiBfX1pON1dlYkNvcmU2SlNOb2RlNnNfaW5mb0UKIF9fWk43
V2ViQ29yZTZSZWdpb241dW5pdGVFUktTMF8KIF9fWk43V2ViQ29yZTZSZWdpb244c3VidHJhY3RF
UktTMF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDM1NThhZTlmNTI3YzgwMzNjOWViYzk0Y2Q0ZmVm
NzFhZTJiOTdmNTAuLjM1NTkzNDg2Y2U1MmJlNmQxY2I5MDc2OWI3NDE1YzNmOGY5M2M0ZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5vcmRlcgpAQCAtNDI4NTksMyArNDI4NTksNCBAQCBfX1pMMzFwb2ludGVyQVZN
ZWRpYVR5cGVDbG9zZWRDYXB0aW9uCiBfX1pON1dlYkNvcmVMMTlnUHJvcGVydHlXcmFwcGVyTWFw
RQogX19aTjdXZWJDb3JlTDEyZ0Z1bmN0aW9uTWFwRQogX19aTjdXZWJDb3JlTDEyZ0Z1bmN0aW9u
TWFwRQorX19aTjdXZWJDb3JlNkVkaXRvcjI2dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWRFdgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRl
eCBjZmIzNzI0YTRkYjlhODEyZTVjOTIzODlkYzUyMzA1MWU5ZTA4NDg0Li5mNzgyNjA4NWFlNTkz
ZWQ2MmY1MmE1NWU1NzVhMWQ4ODM2NjBkMGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CkBAIC0zMTI0LDQgKzMxMjQsMTAgQEAgdm9pZCBFZGl0b3I6OmFwcGx5RGljdGF0aW9uQWx0ZXJu
YXRpdmVsdGVybmF0aXZlKGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmVTdHJpbmcKICAgICBtX2Fs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXItPmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmUoYWx0ZXJu
YXRpdmVTdHJpbmcpOwogfQogCit2b2lkIEVkaXRvcjo6dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJs
ZWQoKQoreworICAgIG1fb3ZlcndyaXRlTW9kZUVuYWJsZWQgPSAhbV9vdmVyd3JpdGVNb2RlRW5h
YmxlZDsKKyAgICBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2V0Q2FyZXRWaXNpYmxlKCFtX292ZXJ3
cml0ZU1vZGVFbmFibGVkKTsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oCmluZGV4IDQ0ZjBmMzc5MDZlZmZhMzdjMTRhZjRjNTBjMjA1YTViOTUxYzhj
NDYuLmY4NmM1MWIzNWU0ZTYyNTEzNmRjYjBhMjRiNzM4OTZkYzJhODNmMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaApAQCAtMjQ2LDcgKzI0Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtB
bmRSZXBsYWNlRm9yKFBhc3NSZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+LCBjb25zdCBWZWN0b3I8
VGV4dENoZWNraW5nUmVzdWx0PiYpOwogCiAgICAgYm9vbCBpc092ZXJ3cml0ZU1vZGVFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyd3JpdGVNb2RlRW5hYmxlZDsgfQotICAgIHZvaWQgdG9n
Z2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoKSB7IG1fb3ZlcndyaXRlTW9kZUVuYWJsZWQgPSAhbV9v
dmVyd3JpdGVNb2RlRW5hYmxlZDsgfQorICAgIHZvaWQgdG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJs
ZWQoKTsKIAogI2lmIFVTRShBUFBLSVQpCiAgICAgdm9pZCB1cHBlcmNhc2VXb3JkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IDljNGNhNzlmMGUxZGMz
YzIxMzkxYjAxNDdmNjZhY2U3NWE3ZjI1N2MuLmQ2Mzg4NzI5NTliMmNkZjcwMWEyOGM5ZGMxMGI4
YTEyNWVlZjlhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
CkBAIC0xNzU4LDYgKzE3NTgsMTYgQEAgaW5saW5lIHN0YXRpYyBib29sIHNob3VsZFN0b3BCbGlu
a2luZ0R1ZVRvVHlwaW5nQ29tbWFuZChGcmFtZSogZnJhbWUpCiAKIHZvaWQgRnJhbWVTZWxlY3Rp
b246OnVwZGF0ZUFwcGVhcmFuY2UoKQogeworICAgIC8vIFRoZSBvdmVyd3JpdGVNb2RlU2VsZWN0
aW9uIHdpbGwgcGFpbnQgYSBibG9jayBpbnN0ZWFkIG9mIGEgY2FyZXQgaW4gb3ZlcnR5cGUgbW9k
ZSB1bmxlc3MgdGhlIGNhcmV0IGlzIGF0IHRoZSBlbmQKKyAgICAvLyBvZiBhIGxpbmUgKGluIHRo
aXMgY2FzZSB0aGUgIm5vcm1hbCIgRnJhbWVTZWxlY3Rpb24gd2lsbCBwYWludCB0aGUgY2FyZXQg
YXMgdXN1YWwpLgorICAgIFZpc2libGVQb3NpdGlvbiBmb3J3YXJkUG9zaXRpb247CisgICAgYm9v
bCBzaG91bGRGYWtlQ2FyZXRWaXNpYmlsaXR5ID0gbV9mcmFtZS0+ZWRpdG9yKCktPmlzT3Zlcndy
aXRlTW9kZUVuYWJsZWQoKSAmJiBtX3NlbGVjdGlvbi5pc0NhcmV0KCk7CisgICAgaWYgKHNob3Vs
ZEZha2VDYXJldFZpc2liaWxpdHkpIHsKKyAgICAgICAgZm9yd2FyZFBvc2l0aW9uID0gbW9kaWZ5
RXh0ZW5kaW5nRm9yd2FyZChDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgIHNob3VsZEZh
a2VDYXJldFZpc2liaWxpdHkgPSBmb3J3YXJkUG9zaXRpb24uaXNOb3ROdWxsKCk7CisgICAgICAg
IHNldENhcmV0VmlzaWJpbGl0eShzaG91bGRGYWtlQ2FyZXRWaXNpYmlsaXR5ID8gSGlkZGVuIDog
VmlzaWJsZSk7CisgICAgfQorCiAjaWYgRU5BQkxFKFRFWFRfQ0FSRVQpCiAgICAgYm9vbCBjYXJl
dFJlY3RDaGFuZ2VkT3JDbGVhcmVkID0gcmVjb21wdXRlQ2FyZXRSZWN0KCk7CiAKQEAgLTE3ODgs
OSArMTc5OCw5IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnVwZGF0ZUFwcGVhcmFuY2UoKQogCiAg
ICAgLy8gQ29uc3RydWN0IGEgbmV3IFZpc2libGVTb2x1dGlvbiwgc2luY2UgbV9zZWxlY3Rpb24g
aXMgbm90IG5lY2Vzc2FyaWx5IHZhbGlkLCBhbmQgdGhlIGZvbGxvd2luZyBzdGVwcwogICAgIC8v
IGFzc3VtZSBhIHZhbGlkIHNlbGVjdGlvbi4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Njk1NjM+IGFuZCA8cmRhcjovL3Byb2JsZW0vMTAyMzI4NjY+LgotICAg
IFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKG1fc2VsZWN0aW9uLnZpc2libGVTdGFydCgpLCBt
X3NlbGVjdGlvbi52aXNpYmxlRW5kKCkpOworICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9u
KG1fc2VsZWN0aW9uLnZpc2libGVTdGFydCgpLCBzaG91bGRGYWtlQ2FyZXRWaXNpYmlsaXR5ID8g
Zm9yd2FyZFBvc2l0aW9uIDogbV9zZWxlY3Rpb24udmlzaWJsZUVuZCgpKTsKIAotICAgIGlmICgh
c2VsZWN0aW9uLmlzUmFuZ2UoKSkgeworICAgIGlmICghc2VsZWN0aW9uLmlzUmFuZ2UoKSAmJiAh
c2hvdWxkRmFrZUNhcmV0VmlzaWJpbGl0eSkgewogICAgICAgICB2aWV3LT5jbGVhclNlbGVjdGlv
bigpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCmluZGV4IDk3NDJkZTNkMzUxMmYyMTNhMWJhMzViYmVmMGMwMDNmYzE0MTA4MjYuLjY4NmNl
MWNkOTA4MWE3NWJmOGI3N2U3YjliOGQ3Mzc4OWU2MTE1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKQEAgLTIyNjMsNiArMjI2MywxOCBAQCBkb3VibGUgSW50ZXJuYWxzOjpj
bG9zZXN0VGltZVRvVGltZVJhbmdlcyhkb3VibGUgdGltZSwgVGltZVJhbmdlcyogcmFuZ2VzKQog
ewogICAgIHJldHVybiByYW5nZXMtPm5lYXJlc3QodGltZSk7CiB9CisKK1Bhc3NSZWZQdHI8Q2xp
ZW50UmVjdD4gSW50ZXJuYWxzOjpzZWxlY3Rpb25Cb3VuZHMoRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CisgICAgaWYgKCFk
b2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkgfHwgIWRvY3VtZW50LT5mcmFtZSgpLT5zZWxl
Y3Rpb24oKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0
dXJuIENsaWVudFJlY3Q6OmNyZWF0ZSgpOworICAgIH0KKworICAgIHJldHVybiBDbGllbnRSZWN0
OjpjcmVhdGUoZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLT5ib3VuZHMoKSk7Cit9CisK
ICNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA4MjkwNmU0NzJj
MDgzNDgyNDViNjY0NzE0YjZhODU1M2I1NWNkNTM5Li5iN2I3M2EyY2M3NDY4MzdmOGMwMjYxYzZi
NzE0NjNmYTE2ZGUyMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTMyOCw2
ICszMjgsOCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGNsb3Nlc3RUaW1lVG9UaW1lUmFuZ2VzKGRv
dWJsZSB0aW1lLCBUaW1lUmFuZ2VzKik7CiAjZW5kaWYKIAorICAgIFBhc3NSZWZQdHI8Q2xpZW50
UmVjdD4gc2VsZWN0aW9uQm91bmRzKEV4Y2VwdGlvbkNvZGUmKTsKKwogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQqKTsKICAgICBEb2N1bWVudCogY29udGV4dERvY3Vt
ZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggZmI0ZDM1
N2Y3NzA5YTU3YTQxMDAxYjlmODczZjI5NDRmNmQ2Y2I5My4uMzRhNGU4MWNiZjM5YTA4NDY0Mzdi
MWY1MTUzNDE0MTNlMDVmMmI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApA
QCAtMjg3LDQgKzI4Nyw2IEBACiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBkb3VibGUgY2xvc2Vz
dFRpbWVUb1RpbWVSYW5nZXMoaW4gZG91YmxlIHRpbWUsIGluIFRpbWVSYW5nZXMgcmFuZ2VzKTsK
IAogICAgIGJvb2xlYW4gaXNTZWxlY3RQb3B1cFZpc2libGUoaW4gTm9kZSBub2RlKTsKKworICAg
IENsaWVudFJlY3Qgc2VsZWN0aW9uQm91bmRzKCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRv
dG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggOTBhYzE5YzhjM2Y2YjcwYzAyZmZmM2IxODQ0MmM3
ZmVkMDlkMDUyMC4uNmNlZjFkNzcwMDUzODYyYTNhZDA0NGJjMDQ4NTFlNDI4Yzk4YmQzOSAxMDA2
NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0
b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0zMDEsNiArMzAxLDkgQEAgX1pON1dlYkNvcmUxMnRv
VGltZVJhbmdlc0VOM0pTQzdKU1ZhbHVlRTsKIF9aTjdXZWJDb3JlMTR0b0Zsb2F0MzJBcnJheUVO
M0pTQzdKU1ZhbHVlRTsKIF9aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdK
U0RPTUdsb2JhbE9iamVjdEVQTlNfMTBUaW1lUmFuZ2VzRTsKIF9aTks3V2ViQ29yZTEwVGltZVJh
bmdlczduZWFyZXN0RWQ7CitfWk43V2ViQ29yZTZFZGl0b3IyNnRvZ2dsZU92ZXJ3cml0ZU1vZGVF
bmFibGVkRXY7CitfWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uNmJvdW5kc0ViOworX1pON1dl
YkNvcmUxMENsaWVudFJlY3RDMUVSS05TXzlGbG9hdFJlY3RFOwogCiBsb2NhbDoKIF9aKjsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBhNjJmNjY4YzkwMDgyYjAxODljYTNlNzM2MTE3NzQ4YzJiZWMzNDM3Li5mN2Y1N2Q5YTJj
NWMxMDAyOGVjOWIwZDExZWZjYTljNTZkZjc4NmRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MTMtMDQtMjUgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgU2hvdyBhIGJsb2NrIGNhcmV0IGZvciBvdmVydHlwZSBtb2RlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQ4MTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgdGVzdCBjYXNlIGZvciB0aGUg
bmV3IGJsb2NrIGNhcmV0IHRvIGJlIHVzZWQgaW4gb3ZlcnR5cGUKKyAgICAgICAgbW9kZS4gVGhl
IHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgMS1waXhlbCBsb25nIGNhcmV0IGlzIHJlcGxhY2VkIGJ5
CisgICAgICAgIGEgc2VsZWN0aW9uIGxpa2UgMS1jaGFyYWN0ZXIgbG9uZyBjYXJldCB3aGVuIGlu
IG92ZXJ0eXBlCisgICAgICAgIG1vZGUuIFRoaXMgdGVzdCBjb3ZlcnMgTFRSIGFuZCBSVEwgdGV4
dCBpbiBMVFIgYW5kIFJUTCBibG9ja3MgYW5kCisgICAgICAgIGJpZGkgdGV4dC4KKworICAgICAg
ICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LW92ZXJ0eXBlLW1vZGUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1vdmVydHlwZS1tb2RlLmh0
bWw6IEFkZGVkLgorCiAyMDEzLTA0LTI1ICDDgWTDoW0gS2FsbGFpICA8a2FkYW1AaW5mLnUtc3pl
Z2VkLmh1PgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuIE9yZ2FuaXplIGV4
cGVjdGVkIGZpbGVzIGFmdGVyIHIxNDkwOTUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9jYXJldC1vdmVydHlwZS1tb2RlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LW92ZXJ0eXBlLW1vZGUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmI5NGMyODFmYjNmYWM3N2Q3OGY0YjI4MDRmNTIwOGFkODVhMzIyYmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1vdmVydHlw
ZS1tb2RlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRlc3QgY2hlY2tzIHRo
YXQgdGhlIGNhcmV0IGNvdmVycyB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgb3ZlcndyaXR0ZW4g
aW4gb3ZlcnR5cGUgbW9kZSBpbnN0ZWFkIG9mIGJlaW5nIHBhaW50ZWQgYXMgYSB0aGluICgxcHgg
d2lkdGgpIGJhcgorCitBQkMKK0FCQwor16nXk9efQUJDCivXqdeT159BQkMKK9ep15PXnwor16nX
k9efCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtb3ZlcnR5cGUt
bW9kZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtb3ZlcnR5cGUt
bW9kZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiZTZiMjIwNDU3MDdjMTEzNTFhNTllYmIwYmE0MDk0MTk3
ZDllYmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9j
YXJldC1vdmVydHlwZS1tb2RlLmh0bWwKQEAgLTAsMCArMSw3MCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4v
ZWRpdGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8c3R5
bGU+Citib2R5IHsKKyAgICBmb250OiAyMHB4IEFoZW07Cit9Cis8L3N0eWxlPgorPC9oZWFkPgor
PGJvZHkgc3R5bGUgPSAiZm9udDogMjBweCBBaGVtIj4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhh
dCB0aGUgY2FyZXQgY292ZXJzIHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSBvdmVyd3JpdHRlbiBp
biBvdmVydHlwZSBtb2RlIGluc3RlYWQgb2YgYmVpbmcgcGFpbnRlZCBhcyBhIHRoaW4gKDFweCB3
aWR0aCkgYmFyPC9wPgorPGRpdiBpZD0ibHRydGV4dCIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5B
QkM8L2Rpdj4KKzxkaXYgaWQ9Imx0cnRleHQtcnRsIiBzdHlsZT0iZGlyZWN0aW9uOiBydGw7IiBj
b250ZW50ZWRpdGFibGU9InRydWUiPkFCQzwvZGl2PgorPGRpdiBpZD0ibWl4ZWQiIGNvbnRlbnRl
ZGl0YWJsZT0idHJ1ZSI+JiN4MDVlOTsmI3gwNWQzOyYjeDA1ZGY7QUJDPC9kaXY+Cis8ZGl2IGlk
PSJtaXhlZC1ydGwiIHN0eWxlPSJkaXJlY3Rpb246IHJ0bDsiIGNvbnRlbnRlZGl0YWJsZT0idHJ1
ZSI+JiN4MDVlOTsmI3gwNWQzOyYjeDA1ZGY7QUJDPC9kaXY+Cis8ZGl2IGlkPSJydGx0ZXh0IiBz
dHlsZT0iZGlyZWN0aW9uOiBsdHI7IiBjb250ZW50ZWRpdGFibGU9InRydWUiPiYjeDA1ZTk7JiN4
MDVkMzsmI3gwNWRmOzwvZGl2PgorPGRpdiBpZD0icnRsdGV4dC1ydGwiIHN0eWxlPSJkaXJlY3Rp
b246IHJ0bDsiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+JiN4MDVlOTsmI3gwNWQzOyYjeDA1ZGY7
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisKK2Z1
bmN0aW9uIHZlcmlmeUJsb2NrQ2FyZXRMZWZ0UG9zaXRpb25BbmRXaWR0aChlbGVtZW50SWQsIGV4
cGVjdGVkKQoreworICAgIHZhciBsZWZ0UG9zaXRpb25WYWx1ZXMgPSBuZXcgQXJyYXkoKTsKKyAg
ICB2YXIgd2lkdGhWYWx1ZXMgPSBuZXcgQXJyYXkoKTsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkuZmlyc3RDaGlsZDsKKyAgICBmb3IgKHZhciBp
PTA7IGkgPCBlbGVtZW50Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGdldFNlbGVjdGlvbigpLmNv
bGxhcHNlKGVsZW1lbnQsIGkpOworCisgICAgICAgIHZhciBibG9ja0NhcmV0Qm91bmRzID0gaW50
ZXJuYWxzLnNlbGVjdGlvbkJvdW5kcygpOworICAgICAgICBsZWZ0UG9zaXRpb25WYWx1ZXMucHVz
aChibG9ja0NhcmV0Qm91bmRzLmxlZnQpOworICAgICAgICB3aWR0aFZhbHVlcy5wdXNoKGJsb2Nr
Q2FyZXRCb3VuZHMud2lkdGgpOworCisgICAgICAgIHNob3VsZEJlVHJ1ZVF1aWV0KGdldFNlbGVj
dGlvbigpLmlzQ29sbGFwc2VkLnRvU3RyaW5nKCkpOworICAgICAgICBzaG91bGRCZShpbnRlcm5h
bHMuYWJzb2x1dGVDYXJldEJvdW5kcygpLndpZHRoLnRvU3RyaW5nKCksICIxIiwgdHJ1ZSk7Cisg
ICAgfQorCisgICAgZm9yICh2YXIgaT0wOyBpIDwgZWxlbWVudC5sZW5ndGg7IGkrKykgeworICAg
ICAgICBpZiAoaSArIDEgPCBlbGVtZW50Lmxlbmd0aCkKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1
ZVF1aWV0KGxlZnRQb3NpdGlvblZhbHVlc1tpXS50b1N0cmluZygpICsgZXhwZWN0ZWRbaV0gKyBs
ZWZ0UG9zaXRpb25WYWx1ZXNbaSsxXS50b1N0cmluZygpKTsKKyAgICAgICAgc2hvdWxkQmVUcnVl
UXVpZXQod2lkdGhWYWx1ZXNbaV0udG9TdHJpbmcoKSArICIgPiAxIik7CisgICAgfQorCisgICAg
Ly8gQXQgdGhlIGVuZCBvZiB0aGUgbGluZSB3ZSBtdXN0IGhhdmUgYSAxLXBpeGVsIGxvbmcgY2xh
c3NpY2FsIGNhcmV0CisgICAgZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2UoZWxlbWVudCwgZWxlbWVu
dC5sZW5ndGgpOworICAgIHNob3VsZEJlKGludGVybmFscy5zZWxlY3Rpb25Cb3VuZHMoKS53aWR0
aC50b1N0cmluZygpLCAiMCIsIHRydWUpOworICAgIHNob3VsZEJlKGludGVybmFscy5hYnNvbHV0
ZUNhcmV0Qm91bmRzKCkud2lkdGgudG9TdHJpbmcoKSwgIjEiLCB0cnVlKTsKK30KKworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisKKyAgICAvLyBJbiBJbnNlcnQgbW9kZSBjYXJldCBpcyBhIDFw
eCBiYXIKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsdHJ0ZXh0
IikuZmlyc3RDaGlsZDsKKyAgICBnZXRTZWxlY3Rpb24oKS5jb2xsYXBzZShlbGVtZW50LCAwKTsK
KyAgICBzaG91bGRCZShpbnRlcm5hbHMuYWJzb2x1dGVDYXJldEJvdW5kcygpLndpZHRoLnRvU3Ry
aW5nKCksICIxIiwgdHJ1ZSk7CisKKyAgICBpbnRlcm5hbHMudG9nZ2xlT3ZlcndyaXRlTW9kZUVu
YWJsZWQoZG9jdW1lbnQpOworCisgICAgdmVyaWZ5QmxvY2tDYXJldExlZnRQb3NpdGlvbkFuZFdp
ZHRoKCJydGx0ZXh0IiwgWyI+IiwgIj4iLCAiPiJdKTsKKyAgICB2ZXJpZnlCbG9ja0NhcmV0TGVm
dFBvc2l0aW9uQW5kV2lkdGgoInJ0bHRleHQtcnRsIiwgWyI+IiwgIj4iLCAiPiJdKTsKKyAgICB2
ZXJpZnlCbG9ja0NhcmV0TGVmdFBvc2l0aW9uQW5kV2lkdGgoImx0cnRleHQiLCBbIjwiLCAiPCIs
ICI8Il0pOworICAgIHZlcmlmeUJsb2NrQ2FyZXRMZWZ0UG9zaXRpb25BbmRXaWR0aCgibHRydGV4
dC1ydGwiLCBbIjwiLCAiPCIsICI8Il0pOworICAgIHZlcmlmeUJsb2NrQ2FyZXRMZWZ0UG9zaXRp
b25BbmRXaWR0aCgibWl4ZWQiLCBbIj4iLCAiPiIsICI8IiwgIjwiLCAiPCJdKTsKKyAgICB2ZXJp
ZnlCbG9ja0NhcmV0TGVmdFBvc2l0aW9uQW5kV2lkdGgoIm1peGVkLXJ0bCIsIFsiPiIsICI+Iiwg
Ij4iLCAiPCIsICI8Il0pOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2Ny
aXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDQ5
MWVlYmFmMDJiYzU4NjZkOGFkNjc4NzZkMmU2NGRmNTU2OGI4YzMuLjIwZTg2YThlNTg3YzZiZjhm
NGYzZjk0NjFhOTlhODVmMGQxZDA5ZjYgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wNC0yNSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAg
PHN2aWxsYXJAaWdhbGlhLmNvbT4KKworICAgICAgICBTaG93IGEgYmxvY2sgY2FyZXQgZm9yIG92
ZXJ0eXBlIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNDgxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjogZXhwb3J0IHNvbWUgZXh0cmEg
c3ltYm9scyBmb3IKKyAgICAgICAgdGVzdGluZyBwdXJwb3Nlcy4KKwogMjAxMy0wNC0yMiAgQmVu
amFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHRo
ZSBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uIGNvZGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199666</attachid>
            <date>2013-04-25 08:49:19 -0700</date>
            <delta_ts>2013-04-30 07:12:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114819-20130425174546.patch</filename>
            <type>text/plain</type>
            <size>18905</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5MDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE0OGQ2MGU0ZTE3ZjQw
M2UxZGJiNTUyMzcwMDg1N2RlMTZlZmY3YS4uNGViOWRlMjM5NzA0N2IyN2ZlYmJhMzI2ODA1YTZl
MzRmY2YzY2I2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTA0LTI1ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFNob3cgYSBi
bG9jayBjYXJldCBmb3Igb3ZlcnR5cGUgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0ODE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtb3ZlcnR5
cGUtbW9kZS5odG1sCisKKyAgICAgICAgVGhlIDEtcGl4ZWwgbG9uZyBjYXJldCB3aWxsIGJlIHJl
cGxhY2VkIGluIG92ZXJ0eXBlIG1vZGUgYnkgYQorICAgICAgICBibG9jayBjYXJldCB3aGljaCB3
aWxsIGNvdmVyIHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSByZXBsYWNlZAorICAgICAgICAoZXhj
ZXB0IGF0IHRoZSBlbmQgb2YgYSBsaW5lIHdoZXJlIHRoZSBjYXJldCB3aWxsIGJlIHRoZSBjdXJy
ZW50CisgICAgICAgIDEtcGl4ZWwgbG9uZyBibGlua2luZyBiYXIpLiBJbiBvcmRlciB0byBkZWFs
IHdpdGggYmlkaSB0ZXh0IHRoZQorICAgICAgICBvdmVyd3JpdGUgbW9kZSBjYXJldCBpcyBpbnRl
cm5hbGx5IHJlbmRlcmVkIGFzIGEgc2VsZWN0aW9uLgorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46IEV4cG9ydCBzeW1ib2xzIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorICAgICAgICAqIFdlYkNv
cmUub3JkZXI6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQpOiB1cGRhdGUgY2Fy
ZXQncworICAgICAgICB2aXNpYmlsaXR5IHdoZW4gdG9nZ2xpbmcgdGhlIG92ZXJ0eXBlIG1vZGUu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAg
ICAoRWRpdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKTogdXNlIGEgMS1j
aGFyYWN0ZXIKKyAgICAgICAgbG9uZyBzZWxlY3Rpb24gdG8gcGFpbnQgdGhlIGNhcmV0IGluIG92
ZXJ0eXBlIG1vZGUuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNlbGVjdGlvbkJvdW5kcyk6
IGFkZGVkIGEgbmV3IG1ldGhvZCB3aGljaAorICAgICAgICByZXR1cm5zIHRoZSBJbnRSZWN0IGlz
c3VlZCBieSBGcmFtZVNlbGVjdGlvbjo6Ym91bmRzKCkuCisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaDogRGl0dG8uCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOiBEaXR0by4K
KwogMjAxMy0wNC0yNSAgUGVyLUVyaWsgQnJvZGluICA8cGVyLWVyaWsuYnJvZGluQGVyaWNzc29u
LmNvbT4KIAogICAgICAgICBFdmVudFNvdXJjZTogU3luY2hyb25vdXMgbG9hZGVyIGNhbGxiYWNr
IG5vdCBoYW5kbGVkIHByb3Blcmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI4YzMxZDZjZTUzYWY4YzA5NWNkYjkw
ZmQ1NzdjYjVhMzMyNDdiNWEuLmMxZGRiYzdkOTQyOGZjNjY4NzhhYjJkMzc0M2FhMzJiZDgxMjlm
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDQtMjUgIFNlcmdpbyBWaWxsYXIg
U2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAgICAgU2hvdyBhIGJsb2NrIGNhcmV0
IGZvciBvdmVydHlwZSBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTQ4MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFeHBvcnQgdGhyZWUgbW9yZSBXZWJDb3JlIHN5bWJvbHMuCisKKyAgICAgICAg
KiBXZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYu
aW46CisKIDIwMTMtMDQtMjQgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBc3NlcnRpb24gZmFpbHVyZSAoY3Jhc2ggaW4gcmVsZWFzZSkgYXR0ZW1wdGluZyB0
byBkZWxldGUgZGF0YWJhc2Ugc3RvcmFnZSBpbiBXSzEgd2l0aG91dApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmlu
ZGV4IDBjMDllMGFiMzEwY2FkNmUxNzYzZjExYzZlMjczM2VmZDFmOWQwNjEuLjlhNTEyMGM1MmFi
NmMxNDQxMzE2NDM0ZDM4NmM4ZGYxMGM4ZWQwZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxMy0wNC0yNSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlh
LmNvbT4KKworICAgICAgICBTaG93IGEgYmxvY2sgY2FyZXQgZm9yIG92ZXJ0eXBlIG1vZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDgxOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9ydCB0aHJl
ZSBtb3JlIFdlYkNvcmUgc3ltYm9scy4KKworICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0
RXhwb3J0cy5kZWYuaW46CisKIDIwMTMtMDQtMjQgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBw
bGUuY29tPgogCiAgICAgICAgIFdpbGQgYnVpbGQgZml4IGF0dGVtcHQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCmluZGV4IDAxNWM3NDM0NDI4YTVmNWE2M2ZiZWUxYjcxMTAxODViNmQ0NzA0MzAuLmY2YTE5
ZjQwMWM4ZGVhNTc5Nzk0ZTVkZDYwZjZlNjM4NzU5MmNhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CkBAIC02OCw2ICs2OCw3IEBAIF9fWk4zV1RGMTJBdG9taWNTdHJpbmczYWRkRVBLMTBfX0NGU3Ry
aW5nCiBfX1pOM1dURjZTdHJpbmdDMUVQOE5TU3RyaW5nCiBfX1pOM1dURjZTdHJpbmdDMUVQSzEw
X19DRlN0cmluZwogX19aTjdXZWJDb3JlMTBDbGllbnRSZWN0QzFFUktOU183SW50UmVjdEUKK19f
Wk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNfOUZsb2F0UmVjdEUKIF9fWk43V2ViQ29yZTEw
Q2xpZW50UmVjdEMxRXYKIF9fWk43V2ViQ29yZTEwQ3JlZGVudGlhbEMxRVJLTjNXVEY2U3RyaW5n
RVM0X05TXzIxQ3JlZGVudGlhbFBlcnNpc3RlbmNlRQogX19aTjdXZWJDb3JlMTBDcmVkZW50aWFs
QzFFdgpAQCAtOTU3LDYgKzk1OCw3IEBAIF9fWk43V2ViQ29yZTZFZGl0b3I2aW5kZW50RXYKIF9f
Wk43V2ViQ29yZTZFZGl0b3I3Q29tbWFuZEMxRXYKIF9fWk43V2ViQ29yZTZFZGl0b3I3Y29tbWFu
ZEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTZFZGl0b3I3b3V0ZGVudEV2CitfX1pON1dl
YkNvcmU2RWRpdG9yMjZ0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZEV2CiBfX1pON1dlYkNvcmU2
SlNOb2RlNnNfaW5mb0UKIF9fWk43V2ViQ29yZTZSZWdpb241dW5pdGVFUktTMF8KIF9fWk43V2Vi
Q29yZTZSZWdpb244c3VidHJhY3RFUktTMF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUub3JkZXIgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDM1NThhZTlm
NTI3YzgwMzNjOWViYzk0Y2Q0ZmVmNzFhZTJiOTdmNTAuLjM1NTkzNDg2Y2U1MmJlNmQxY2I5MDc2
OWI3NDE1YzNmOGY5M2M0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3Jk
ZXIKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtNDI4NTksMyArNDI4NTks
NCBAQCBfX1pMMzFwb2ludGVyQVZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uCiBfX1pON1dlYkNvcmVM
MTlnUHJvcGVydHlXcmFwcGVyTWFwRQogX19aTjdXZWJDb3JlTDEyZ0Z1bmN0aW9uTWFwRQogX19a
TjdXZWJDb3JlTDEyZ0Z1bmN0aW9uTWFwRQorX19aTjdXZWJDb3JlNkVkaXRvcjI2dG9nZ2xlT3Zl
cndyaXRlTW9kZUVuYWJsZWRFdgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAppbmRleCBjZmIzNzI0YTRkYjlhODEyZTVjOTIzODlkYzUyMzA1MWU5
ZTA4NDg0Li5mNzgyNjA4NWFlNTkzZWQ2MmY1MmE1NWU1NzVhMWQ4ODM2NjBkMGY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zMTI0LDQgKzMxMjQsMTAgQEAgdm9pZCBFZGl0b3I6
OmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmVsdGVybmF0aXZlKGNvbnN0IFN0cmluZyYgYWx0ZXJu
YXRpdmVTdHJpbmcKICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPmFwcGx5RGljdGF0
aW9uQWx0ZXJuYXRpdmUoYWx0ZXJuYXRpdmVTdHJpbmcpOwogfQogCit2b2lkIEVkaXRvcjo6dG9n
Z2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoKQoreworICAgIG1fb3ZlcndyaXRlTW9kZUVuYWJsZWQg
PSAhbV9vdmVyd3JpdGVNb2RlRW5hYmxlZDsKKyAgICBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2V0
Q2FyZXRWaXNpYmxlKCFtX292ZXJ3cml0ZU1vZGVFbmFibGVkKTsKK307CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDQ0ZjBmMzc5MDZlZmZhMzdj
MTRhZjRjNTBjMjA1YTViOTUxYzhjNDYuLmY4NmM1MWIzNWU0ZTYyNTEzNmRjYjBhMjRiNzM4OTZk
YzJhODNmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMjQ2LDcgKzI0Niw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIG1hcmtBbmRSZXBsYWNlRm9yKFBhc3NSZWZQdHI8U3BlbGxDaGVja1Jl
cXVlc3Q+LCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpOwogCiAgICAgYm9vbCBp
c092ZXJ3cml0ZU1vZGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9vdmVyd3JpdGVNb2RlRW5h
YmxlZDsgfQotICAgIHZvaWQgdG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoKSB7IG1fb3Zlcndy
aXRlTW9kZUVuYWJsZWQgPSAhbV9vdmVyd3JpdGVNb2RlRW5hYmxlZDsgfQorICAgIHZvaWQgdG9n
Z2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsKIAogI2lmIFVTRShBUFBLSVQpCiAgICAgdm9pZCB1
cHBlcmNhc2VXb3JkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
CmluZGV4IDljNGNhNzlmMGUxZGMzYzIxMzkxYjAxNDdmNjZhY2U3NWE3ZjI1N2MuLmQ2Mzg4NzI5
NTliMmNkZjcwMWEyOGM5ZGMxMGI4YTEyNWVlZjlhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xNzU4LDYgKzE3NTgsMTYgQEAgaW5saW5lIHN0YXRp
YyBib29sIHNob3VsZFN0b3BCbGlua2luZ0R1ZVRvVHlwaW5nQ29tbWFuZChGcmFtZSogZnJhbWUp
CiAKIHZvaWQgRnJhbWVTZWxlY3Rpb246OnVwZGF0ZUFwcGVhcmFuY2UoKQogeworICAgIC8vIFRo
ZSBvdmVyd3JpdGVNb2RlU2VsZWN0aW9uIHdpbGwgcGFpbnQgYSBibG9jayBpbnN0ZWFkIG9mIGEg
Y2FyZXQgaW4gb3ZlcnR5cGUgbW9kZSB1bmxlc3MgdGhlIGNhcmV0IGlzIGF0IHRoZSBlbmQKKyAg
ICAvLyBvZiBhIGxpbmUgKGluIHRoaXMgY2FzZSB0aGUgIm5vcm1hbCIgRnJhbWVTZWxlY3Rpb24g
d2lsbCBwYWludCB0aGUgY2FyZXQgYXMgdXN1YWwpLgorICAgIFZpc2libGVQb3NpdGlvbiBmb3J3
YXJkUG9zaXRpb247CisgICAgYm9vbCBzaG91bGRGYWtlQ2FyZXRWaXNpYmlsaXR5ID0gbV9mcmFt
ZS0+ZWRpdG9yKCktPmlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKSAmJiBtX3NlbGVjdGlvbi5pc0Nh
cmV0KCk7CisgICAgaWYgKHNob3VsZEZha2VDYXJldFZpc2liaWxpdHkpIHsKKyAgICAgICAgZm9y
d2FyZFBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChDaGFyYWN0ZXJHcmFudWxhcml0
eSk7CisgICAgICAgIHNob3VsZEZha2VDYXJldFZpc2liaWxpdHkgPSBmb3J3YXJkUG9zaXRpb24u
aXNOb3ROdWxsKCk7CisgICAgICAgIHNldENhcmV0VmlzaWJpbGl0eShzaG91bGRGYWtlQ2FyZXRW
aXNpYmlsaXR5ID8gSGlkZGVuIDogVmlzaWJsZSk7CisgICAgfQorCiAjaWYgRU5BQkxFKFRFWFRf
Q0FSRVQpCiAgICAgYm9vbCBjYXJldFJlY3RDaGFuZ2VkT3JDbGVhcmVkID0gcmVjb21wdXRlQ2Fy
ZXRSZWN0KCk7CiAKQEAgLTE3ODgsOSArMTc5OCw5IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnVw
ZGF0ZUFwcGVhcmFuY2UoKQogCiAgICAgLy8gQ29uc3RydWN0IGEgbmV3IFZpc2libGVTb2x1dGlv
biwgc2luY2UgbV9zZWxlY3Rpb24gaXMgbm90IG5lY2Vzc2FyaWx5IHZhbGlkLCBhbmQgdGhlIGZv
bGxvd2luZyBzdGVwcwogICAgIC8vIGFzc3VtZSBhIHZhbGlkIHNlbGVjdGlvbi4gU2VlIDxodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk1NjM+IGFuZCA8cmRhcjovL3By
b2JsZW0vMTAyMzI4NjY+LgotICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKG1fc2VsZWN0
aW9uLnZpc2libGVTdGFydCgpLCBtX3NlbGVjdGlvbi52aXNpYmxlRW5kKCkpOworICAgIFZpc2li
bGVTZWxlY3Rpb24gc2VsZWN0aW9uKG1fc2VsZWN0aW9uLnZpc2libGVTdGFydCgpLCBzaG91bGRG
YWtlQ2FyZXRWaXNpYmlsaXR5ID8gZm9yd2FyZFBvc2l0aW9uIDogbV9zZWxlY3Rpb24udmlzaWJs
ZUVuZCgpKTsKIAotICAgIGlmICghc2VsZWN0aW9uLmlzUmFuZ2UoKSkgeworICAgIGlmICghc2Vs
ZWN0aW9uLmlzUmFuZ2UoKSAmJiAhc2hvdWxkRmFrZUNhcmV0VmlzaWJpbGl0eSkgewogICAgICAg
ICB2aWV3LT5jbGVhclNlbGVjdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDk3NDJkZTNkMzUxMmYyMTNhMWJhMzViYmVm
MGMwMDNmYzE0MTA4MjYuLjY4NmNlMWNkOTA4MWE3NWJmOGI3N2U3YjliOGQ3Mzc4OWU2MTE1M2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIyNjMsNiArMjI2MywxOCBA
QCBkb3VibGUgSW50ZXJuYWxzOjpjbG9zZXN0VGltZVRvVGltZVJhbmdlcyhkb3VibGUgdGltZSwg
VGltZVJhbmdlcyogcmFuZ2VzKQogewogICAgIHJldHVybiByYW5nZXMtPm5lYXJlc3QodGltZSk7
CiB9CisKK1Bhc3NSZWZQdHI8Q2xpZW50UmVjdD4gSW50ZXJuYWxzOjpzZWxlY3Rpb25Cb3VuZHMo
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERv
Y3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkgfHwgIWRv
Y3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUND
RVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZSgpOworICAgIH0KKwor
ICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUoZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlv
bigpLT5ib3VuZHMoKSk7Cit9CisKICNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAppbmRleCA4MjkwNmU0NzJjMDgzNDgyNDViNjY0NzE0YjZhODU1M2I1NWNkNTM5Li5iN2I3
M2EyY2M3NDY4MzdmOGMwMjYxYzZiNzE0NjNmYTE2ZGUyMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKQEAgLTMyOCw2ICszMjgsOCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGNsb3Nl
c3RUaW1lVG9UaW1lUmFuZ2VzKGRvdWJsZSB0aW1lLCBUaW1lUmFuZ2VzKik7CiAjZW5kaWYKIAor
ICAgIFBhc3NSZWZQdHI8Q2xpZW50UmVjdD4gc2VsZWN0aW9uQm91bmRzKEV4Y2VwdGlvbkNvZGUm
KTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQqKTsKICAgICBE
b2N1bWVudCogY29udGV4dERvY3VtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKaW5kZXggZmI0ZDM1N2Y3NzA5YTU3YTQxMDAxYjlmODczZjI5NDRmNmQ2Y2I5My4u
MzRhNGU4MWNiZjM5YTA4NDY0MzdiMWY1MTUzNDE0MTNlMDVmMmI1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMjg3LDQgKzI4Nyw2IEBACiAgICAgW0NvbmRpdGlvbmFs
PVZJREVPXSBkb3VibGUgY2xvc2VzdFRpbWVUb1RpbWVSYW5nZXMoaW4gZG91YmxlIHRpbWUsIGlu
IFRpbWVSYW5nZXMgcmFuZ2VzKTsKIAogICAgIGJvb2xlYW4gaXNTZWxlY3RQb3B1cFZpc2libGUo
aW4gTm9kZSBub2RlKTsKKworICAgIENsaWVudFJlY3Qgc2VsZWN0aW9uQm91bmRzKCkgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4
cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRz
LmRlZi5pbgppbmRleCA3NDI5ZjE0YmRjZTk5NmYxNTkzOGU5ZDgxMzk0ZDY2ZTkxNDI5OWIyLi4w
Njc4ODBiODk1YjYxNDE2NjE2YmQwYWM5OTc3YmFkZjNjNmU1OWE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBv
cnRzLmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9y
dEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgpAQCAtMTUzLDYgKzE1Myw3IEBAIEVYUE9S
VFMKICAgICAgICAgPz8xTm9kZVJlbmRlcmluZ0NvbnRleHRAV2ViQ29yZUBAUUFFQFhaCiAgICAg
ICAgID8/MVJhbmdlQFdlYkNvcmVAQFFBRUBYWgogICAgICAgICA/dG9Ob2RlQFdlYkNvcmVAQFlB
UEFWTm9kZUAxQFZKU1ZhbHVlQEpTQ0BAQFoKKyAgICAgICAgPz8wQ2xpZW50UmVjdEBXZWJDb3Jl
QEBBQUVAQUJWRmxvYXRSZWN0QDFAQFoKICAgICAgICAgPz8wQ2xpZW50UmVjdEBXZWJDb3JlQEBB
QUVAQUJWSW50UmVjdEAxQEBaCiAgICAgICAgID8/MENsaWVudFJlY3RAV2ViQ29yZUBAQUFFQFha
CiAgICAgICAgID8/MENsaWVudFJlY3RMaXN0QFdlYkNvcmVAQEFBRUBYWgpAQCAtMTg0LDYgKzE4
NSw3IEBAIEVYUE9SVFMKICAgICAgICAgP2ZpbmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlQQVYxMkBJ
QFoKICAgICAgICAgP2ZpbmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlQQVYxMkBAWgogICAgICAgICA/
YWJzb2x1dGVDYXJldEJvdW5kc0BGcmFtZVNlbGVjdGlvbkBXZWJDb3JlQEBRQUU/QVZJbnRSZWN0
QDJAWFoKKyAgICAgICAgP2JvdW5kc0BGcmFtZVNlbGVjdGlvbkBXZWJDb3JlQEBRQkU/QVZGbG9h
dFJlY3RAMkBfTkBaCiAgICAgICAgID9mcm9tVVRGOEBTdHJpbmdAV1RGQEBTQT9BVjEyQFBCRUBa
CiAgICAgICAgID9mcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFja0BTdHJpbmdAV1RGQEBTQT9BVjEy
QFBCRUlAWgogICAgICAgICA/Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc0BDYWNoZWRS
ZXNvdXJjZUxvYWRlckBXZWJDb3JlQEBRQUVYWFoKQEAgLTMwOCw2ICszMTAsNyBAQCBFWFBPUlRT
CiAgICAgICAgID9zZWxlY3Rpb25TdGFydEhhc01hcmtlckZvckBFZGl0b3JAV2ViQ29yZUBAUUJF
X05XNE1hcmtlclR5cGVARG9jdW1lbnRNYXJrZXJAMkBISEBaCiAgICAgICAgID9pc0NvbnRpbnVv
dXNTcGVsbENoZWNraW5nRW5hYmxlZEBFZGl0b3JAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/
dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmdARWRpdG9yQFdlYkNvcmVAQFFBRVhYWgorICAg
ICAgICA/dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWRARWRpdG9yQFdlYkNvcmVAQFFBRVhYWgog
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAgP3dlYmtpdFdpbGxFbnRlckZ1bGxT
Y3JlZW5Gb3JFbGVtZW50QERvY3VtZW50QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQFoKICAg
ICAgICAgP3dlYmtpdERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnRARG9jdW1lbnRAV2ViQ29y
ZUBAUUFFWFBBVkVsZW1lbnRAMkBAWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2Vi
S2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbiBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktp
dC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KaW5kZXggMmNjNTY5YzM5YzI3ZjAwZWJlNTA4
MjRjNmQ5NmZiZmZmYzRhNTNhZS4uODlkMzEyNWFlM2M4NDhkMTY3ZTE3YzdhNTRiZTY4ZWIwMWIw
ZTI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRF
eHBvcnRzLmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktp
dEV4cG9ydHMuZGVmLmluCkBAIC0xNTMsNiArMTUzLDcgQEAgRVhQT1JUUwogICAgICAgICA/PzFO
b2RlUmVuZGVyaW5nQ29udGV4dEBXZWJDb3JlQEBRQUVAWFoKICAgICAgICAgPz8xUmFuZ2VAV2Vi
Q29yZUBAUUFFQFhaCiAgICAgICAgID90b05vZGVAV2ViQ29yZUBAWUFQQVZOb2RlQDFAVkpTVmFs
dWVASlNDQEBAWgorICAgICAgICA/PzBDbGllbnRSZWN0QFdlYkNvcmVAQEFBRUBBQlZGbG9hdFJl
Y3RAMUBAWgogICAgICAgICA/PzBDbGllbnRSZWN0QFdlYkNvcmVAQEFBRUBBQlZJbnRSZWN0QDFA
QFoKICAgICAgICAgPz8wQ2xpZW50UmVjdEBXZWJDb3JlQEBBQUVAWFoKICAgICAgICAgPz8wQ2xp
ZW50UmVjdExpc3RAV2ViQ29yZUBAQUFFQFhaCkBAIC0xODQsNiArMTg1LDcgQEAgRVhQT1JUUwog
ICAgICAgICA/ZmluZEBTdHJpbmdJbXBsQFdURkBAUUFFSVBBVjEyQElAWgogICAgICAgICA/Zmlu
ZEBTdHJpbmdJbXBsQFdURkBAUUFFSVBBVjEyQEBaCiAgICAgICAgID9hYnNvbHV0ZUNhcmV0Qm91
bmRzQEZyYW1lU2VsZWN0aW9uQFdlYkNvcmVAQFFBRT9BVkludFJlY3RAMkBYWgorICAgICAgICA/
Ym91bmRzQEZyYW1lU2VsZWN0aW9uQFdlYkNvcmVAQFFCRT9BVkZsb2F0UmVjdEAyQF9OQFoKICAg
ICAgICAgP2Zyb21VVEY4QFN0cmluZ0BXVEZAQFNBP0FWMTJAUEJFQFoKICAgICAgICAgP2Zyb21V
VEY4V2l0aExhdGluMUZhbGxiYWNrQFN0cmluZ0BXVEZAQFNBP0FWMTJAUEJFSUBaCiAgICAgICAg
ID9nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzQENhY2hlZFJlc291cmNlTG9hZGVyQFdl
YkNvcmVAQFFBRVhYWgpAQCAtMzA4LDYgKzMxMCw3IEBAIEVYUE9SVFMKICAgICAgICAgP3NlbGVj
dGlvblN0YXJ0SGFzTWFya2VyRm9yQEVkaXRvckBXZWJDb3JlQEBRQkVfTlc0TWFya2VyVHlwZUBE
b2N1bWVudE1hcmtlckAyQEhIQFoKICAgICAgICAgP2lzQ29udGludW91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkQEVkaXRvckBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID90b2dnbGVDb250aW51b3Vz
U3BlbGxDaGVja2luZ0BFZGl0b3JAV2ViQ29yZUBAUUFFWFhaCisgICAgICAgID90b2dnbGVPdmVy
d3JpdGVNb2RlRW5hYmxlZEBFZGl0b3JAV2ViQ29yZUBAUUFFWFhaCiAjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQogICAgICAgICA/d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnRA
RG9jdW1lbnRAV2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRAMkBAWgogICAgICAgICA/d2Via2l0RGlk
RW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEBEb2N1bWVudEBXZWJDb3JlQEBRQUVYUEFWRWxlbWVu
dEAyQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCA5MGFjMTljOGMzZjZiNzBjMDJmZmYz
YjE4NDQyYzdmZWQwOWQwNTIwLi42Y2VmMWQ3NzAwNTM4NjJhM2FkMDQ0YmMwNDg1MWU0MjhjOThi
ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1Nv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTMwMSw2ICszMDEsOSBAQCBfWk43V2Vi
Q29yZTEydG9UaW1lUmFuZ2VzRU4zSlNDN0pTVmFsdWVFOwogX1pON1dlYkNvcmUxNHRvRmxvYXQz
MkFycmF5RU4zSlNDN0pTVmFsdWVFOwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRl
RVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xMFRpbWVSYW5nZXNFOwogX1pOSzdXZWJDb3Jl
MTBUaW1lUmFuZ2VzN25lYXJlc3RFZDsKK19aTjdXZWJDb3JlNkVkaXRvcjI2dG9nZ2xlT3Zlcndy
aXRlTW9kZUVuYWJsZWRFdjsKK19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb242Ym91bmRzRWI7
CitfWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNfOUZsb2F0UmVjdEU7CiAKIGxvY2FsOgog
X1oqOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGE2MmY2NjhjOTAwODJiMDE4OWNhM2U3MzYxMTc3NDhjMmJlYzM0MzcuLmY3
ZjU3ZDlhMmM1YzEwMDI4ZWM5YjBkMTFlZmNhOWM1NmRmNzg2ZGEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAxMy0wNC0yNSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNv
bT4KKworICAgICAgICBTaG93IGEgYmxvY2sgY2FyZXQgZm9yIG92ZXJ0eXBlIG1vZGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDgxOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0ZXN0IGNhc2Ug
Zm9yIHRoZSBuZXcgYmxvY2sgY2FyZXQgdG8gYmUgdXNlZCBpbiBvdmVydHlwZQorICAgICAgICBt
b2RlLiBUaGUgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSAxLXBpeGVsIGxvbmcgY2FyZXQgaXMgcmVw
bGFjZWQgYnkKKyAgICAgICAgYSBzZWxlY3Rpb24gbGlrZSAxLWNoYXJhY3RlciBsb25nIGNhcmV0
IHdoZW4gaW4gb3ZlcnR5cGUKKyAgICAgICAgbW9kZS4gVGhpcyB0ZXN0IGNvdmVycyBMVFIgYW5k
IFJUTCB0ZXh0IGluIExUUiBhbmQgUlRMIGJsb2NrcyBhbmQKKyAgICAgICAgYmlkaSB0ZXh0Lgor
CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtb3ZlcnR5cGUtbW9kZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LW92ZXJ0eXBl
LW1vZGUuaHRtbDogQWRkZWQuCisKIDIwMTMtMDQtMjUgIMOBZMOhbSBLYWxsYWkgIDxrYWRhbUBp
bmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZy4gT3Jn
YW5pemUgZXhwZWN0ZWQgZmlsZXMgYWZ0ZXIgcjE0OTA5NS4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LW92ZXJ0eXBlLW1vZGUtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtb3ZlcnR5cGUtbW9kZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjk0YzI4MWZiM2ZhYzc3ZDc4ZjRiMjgwNGY1MjA4YWQ4NWEzMjJi
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0
LW92ZXJ0eXBlLW1vZGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdCBj
aGVja3MgdGhhdCB0aGUgY2FyZXQgY292ZXJzIHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSBvdmVy
d3JpdHRlbiBpbiBvdmVydHlwZSBtb2RlIGluc3RlYWQgb2YgYmVpbmcgcGFpbnRlZCBhcyBhIHRo
aW4gKDFweCB3aWR0aCkgYmFyCisKK0FCQworQUJDCivXqdeT159BQkMKK9ep15PXn0FCQwor16nX
k9efCivXqdeT158KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1v
dmVydHlwZS1tb2RlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1v
dmVydHlwZS1tb2RlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJlNmIyMjA0NTcwN2MxMTM1MWE1OWViYjBi
YTQwOTQxOTdkOWViZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LW92ZXJ0eXBlLW1vZGUuaHRtbApAQCAtMCwwICsxLDcwIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSIuLi9lZGl0aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3Njcmlw
dD4KKzxzdHlsZT4KK2JvZHkgeworICAgIGZvbnQ6IDIwcHggQWhlbTsKK30KKzwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keSBzdHlsZSA9ICJmb250OiAyMHB4IEFoZW0iPgorPHA+VGhpcyB0ZXN0IGNo
ZWNrcyB0aGF0IHRoZSBjYXJldCBjb3ZlcnMgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIG92ZXJ3
cml0dGVuIGluIG92ZXJ0eXBlIG1vZGUgaW5zdGVhZCBvZiBiZWluZyBwYWludGVkIGFzIGEgdGhp
biAoMXB4IHdpZHRoKSBiYXI8L3A+Cis8ZGl2IGlkPSJsdHJ0ZXh0IiBjb250ZW50ZWRpdGFibGU9
InRydWUiPkFCQzwvZGl2PgorPGRpdiBpZD0ibHRydGV4dC1ydGwiIHN0eWxlPSJkaXJlY3Rpb246
IHJ0bDsiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+QUJDPC9kaXY+Cis8ZGl2IGlkPSJtaXhlZCIg
Y29udGVudGVkaXRhYmxlPSJ0cnVlIj4mI3gwNWU5OyYjeDA1ZDM7JiN4MDVkZjtBQkM8L2Rpdj4K
KzxkaXYgaWQ9Im1peGVkLXJ0bCIgc3R5bGU9ImRpcmVjdGlvbjogcnRsOyIgY29udGVudGVkaXRh
YmxlPSJ0cnVlIj4mI3gwNWU5OyYjeDA1ZDM7JiN4MDVkZjtBQkM8L2Rpdj4KKzxkaXYgaWQ9InJ0
bHRleHQiIHN0eWxlPSJkaXJlY3Rpb246IGx0cjsiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+JiN4
MDVlOTsmI3gwNWQzOyYjeDA1ZGY7PC9kaXY+Cis8ZGl2IGlkPSJydGx0ZXh0LXJ0bCIgc3R5bGU9
ImRpcmVjdGlvbjogcnRsOyIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj4mI3gwNWU5OyYjeDA1ZDM7
JiN4MDVkZjs8L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlw
dD4KKworZnVuY3Rpb24gdmVyaWZ5QmxvY2tDYXJldExlZnRQb3NpdGlvbkFuZFdpZHRoKGVsZW1l
bnRJZCwgZXhwZWN0ZWQpCit7CisgICAgdmFyIGxlZnRQb3NpdGlvblZhbHVlcyA9IG5ldyBBcnJh
eSgpOworICAgIHZhciB3aWR0aFZhbHVlcyA9IG5ldyBBcnJheSgpOworICAgIHZhciBlbGVtZW50
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKS5maXJzdENoaWxkOworICAgIGZv
ciAodmFyIGk9MDsgaSA8IGVsZW1lbnQubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgZ2V0U2VsZWN0
aW9uKCkuY29sbGFwc2UoZWxlbWVudCwgaSk7CisKKyAgICAgICAgdmFyIGJsb2NrQ2FyZXRCb3Vu
ZHMgPSBpbnRlcm5hbHMuc2VsZWN0aW9uQm91bmRzKCk7CisgICAgICAgIGxlZnRQb3NpdGlvblZh
bHVlcy5wdXNoKGJsb2NrQ2FyZXRCb3VuZHMubGVmdCk7CisgICAgICAgIHdpZHRoVmFsdWVzLnB1
c2goYmxvY2tDYXJldEJvdW5kcy53aWR0aCk7CisKKyAgICAgICAgc2hvdWxkQmVUcnVlUXVpZXQo
Z2V0U2VsZWN0aW9uKCkuaXNDb2xsYXBzZWQudG9TdHJpbmcoKSk7CisgICAgICAgIHNob3VsZEJl
KGludGVybmFscy5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkud2lkdGgudG9TdHJpbmcoKSwgIjEiLCB0
cnVlKTsKKyAgICB9CisKKyAgICBmb3IgKHZhciBpPTA7IGkgPCBlbGVtZW50Lmxlbmd0aDsgaSsr
KSB7CisgICAgICAgIGlmIChpICsgMSA8IGVsZW1lbnQubGVuZ3RoKQorICAgICAgICAgICAgc2hv
dWxkQmVUcnVlUXVpZXQobGVmdFBvc2l0aW9uVmFsdWVzW2ldLnRvU3RyaW5nKCkgKyBleHBlY3Rl
ZFtpXSArIGxlZnRQb3NpdGlvblZhbHVlc1tpKzFdLnRvU3RyaW5nKCkpOworICAgICAgICBzaG91
bGRCZVRydWVRdWlldCh3aWR0aFZhbHVlc1tpXS50b1N0cmluZygpICsgIiA+IDEiKTsKKyAgICB9
CisKKyAgICAvLyBBdCB0aGUgZW5kIG9mIHRoZSBsaW5lIHdlIG11c3QgaGF2ZSBhIDEtcGl4ZWwg
bG9uZyBjbGFzc2ljYWwgY2FyZXQKKyAgICBnZXRTZWxlY3Rpb24oKS5jb2xsYXBzZShlbGVtZW50
LCBlbGVtZW50Lmxlbmd0aCk7CisgICAgc2hvdWxkQmUoaW50ZXJuYWxzLnNlbGVjdGlvbkJvdW5k
cygpLndpZHRoLnRvU3RyaW5nKCksICIwIiwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoaW50ZXJuYWxz
LmFic29sdXRlQ2FyZXRCb3VuZHMoKS53aWR0aC50b1N0cmluZygpLCAiMSIsIHRydWUpOworfQor
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKworICAgIC8vIEluIEluc2VydCBtb2RlIGNhcmV0
IGlzIGEgMXB4IGJhcgorICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
Imx0cnRleHQiKS5maXJzdENoaWxkOworICAgIGdldFNlbGVjdGlvbigpLmNvbGxhcHNlKGVsZW1l
bnQsIDApOworICAgIHNob3VsZEJlKGludGVybmFscy5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkud2lk
dGgudG9TdHJpbmcoKSwgIjEiLCB0cnVlKTsKKworICAgIGludGVybmFscy50b2dnbGVPdmVyd3Jp
dGVNb2RlRW5hYmxlZChkb2N1bWVudCk7CisKKyAgICB2ZXJpZnlCbG9ja0NhcmV0TGVmdFBvc2l0
aW9uQW5kV2lkdGgoInJ0bHRleHQiLCBbIj4iLCAiPiIsICI+Il0pOworICAgIHZlcmlmeUJsb2Nr
Q2FyZXRMZWZ0UG9zaXRpb25BbmRXaWR0aCgicnRsdGV4dC1ydGwiLCBbIj4iLCAiPiIsICI+Il0p
OworICAgIHZlcmlmeUJsb2NrQ2FyZXRMZWZ0UG9zaXRpb25BbmRXaWR0aCgibHRydGV4dCIsIFsi
PCIsICI8IiwgIjwiXSk7CisgICAgdmVyaWZ5QmxvY2tDYXJldExlZnRQb3NpdGlvbkFuZFdpZHRo
KCJsdHJ0ZXh0LXJ0bCIsIFsiPCIsICI8IiwgIjwiXSk7CisgICAgdmVyaWZ5QmxvY2tDYXJldExl
ZnRQb3NpdGlvbkFuZFdpZHRoKCJtaXhlZCIsIFsiPiIsICI+IiwgIjwiLCAiPCIsICI8Il0pOwor
ICAgIHZlcmlmeUJsb2NrQ2FyZXRMZWZ0UG9zaXRpb25BbmRXaWR0aCgibWl4ZWQtcnRsIiwgWyI+
IiwgIj4iLCAiPiIsICI8IiwgIjwiXSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiIHR5cGU9InRleHQvamF2YXNjcmlw
dCI+PC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cK
aW5kZXggNDkxZWViYWYwMmJjNTg2NmQ4YWQ2Nzg3NmQyZTY0ZGY1NTY4YjhjMy4uMjBlODZhOGU1
ODdjNmJmOGY0ZjNmOTQ2MWE5OWE4NWYwZDFkMDlmNiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisr
KyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTA0LTI1ICBTZXJnaW8gVmlsbGFy
IFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFNob3cgYSBibG9jayBjYXJl
dCBmb3Igb3ZlcnR5cGUgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE0ODE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOiBleHBvcnQgc29t
ZSBleHRyYSBzeW1ib2xzIGZvcgorICAgICAgICB0ZXN0aW5nIHB1cnBvc2VzLgorCiAyMDEzLTA0
LTIyICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZW1vdmUgdGhlIG1lbW9yeSBpbnN0cnVtZW50YXRpb24gY29kZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200115</attachid>
            <date>2013-04-30 07:12:55 -0700</date>
            <delta_ts>2013-05-01 02:24:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114819-20130430160913.patch</filename>
            <type>text/plain</type>
            <size>20880</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5MzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjMxN2JhN2U5ZjM1MGFm
OWFmZDMyYzc1ZGQ0OGRmZWI5OWRiYzhhNy4uODgyY2E4MmUxNjBiMTI2M2IyYzFhYTAwYWU3YTM0
ZDg5MmFjZDQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTA0LTMwICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFNob3cgYSBi
bG9jayBjYXJldCBmb3Igb3ZlcnR5cGUgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0ODE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtb3ZlcnR5
cGUtbW9kZS5odG1sCisKKyAgICAgICAgT3ZlcnR5cGUgbW9kZSB3aWxsIHVzZSBibG9jayBjdXJz
b3IgaW5zdGVhZCBvZiBhIGNhcmV0IHRvCisgICAgICAgIGhpZ2hsaWdodCB0aGUgbmV4dCBjaGFy
YWN0ZXIgdG8gYmUgcmVwbGFjZWQuIEl0IHdpbGwgZnVsbHkgY292ZXIKKyAgICAgICAgdGhlIG5l
eHQgY2hhcmFjdGVyIHRvIGJlIHJlcGxhY2VkIChleGNlcHQgYXQgdGhlIGVuZCBvZiBhIGxpbmUK
KyAgICAgICAgd2hlcmUgdGhlIHVzdWFsIGJsaW5raW5nIGNhcmV0IHdpbGwgYmUgc2hvd24pLgor
CisgICAgICAgIFRoaXMgbmV3IGJsb2NrIGN1cnNvciBpcyBpbnRlcm5hbGx5IGltcGxlbWVudGVk
IGFzIGEgc2VsZWN0aW9uCisgICAgICAgIChub3QgZXhwb3NlZCB0byBKYXZhU2NyaXB0KSBiZWNh
dXNlIHRoZSBzZWxlY3Rpb24gY29kZSBrbm93cyBob3cKKyAgICAgICAgdG8gZGVhbCB3aXRoIGJp
ZGkgdGV4dC4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnQgc3ltYm9scyBmb3Ig
dGVzdGluZyBwdXJwb3Nlcy4KKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOiBEaXR0by4KKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnRvZ2ds
ZU92ZXJ3cml0ZU1vZGVFbmFibGVkKTogQWRkZWQgYSBjYWxsIHRvCisgICAgICAgIEZyYW1lTG9h
ZGVyOjpzZXRTaG91bGRTaG93QmxvY2tDYXJldC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgIChFZGl0b3IpOgorICAgICAgICAqIGVkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246
OnVwZGF0ZUFwcGVhcmFuY2UpOiBVc2UgYSAxLWNoYXJhY3RlcgorICAgICAgICBsb25nIHNlbGVj
dGlvbiB0byBwYWludCB0aGUgY3Vyc29yIGluIG92ZXJ0eXBlIG1vZGUuCisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0U2hvdWxkU2hvd0Jsb2NrQ2FyZXQpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNob3VsZFNob3dCbG9ja0NhcmV0KToKKyAgICAgICAg
KEZyYW1lU2VsZWN0aW9uKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2VsZWN0aW9uQm91
bmRzKTogQWRkZWQgYSBuZXcgbWV0aG9kIHdoaWNoCisgICAgICAgIHJldHVybnMgdGhlIEludFJl
Y3QgaXNzdWVkIGJ5IEZyYW1lU2VsZWN0aW9uOjpib3VuZHMoKS4KKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5oOiBEaXR0by4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6IERp
dHRvLgorCiAyMDEzLTA0LTMwICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1z
dW5nLmNvbT4KIAogICAgICAgICBSZXBsYWNlICJPcHRpb25hbCIgZXh0ZW5kZWQgYXR0cmlidXRl
IGJ5IHByb3BlciBXZWIgSURMICJvcHRpb25hbCIga2V5d29yZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlZjk5NDMz
YjkyNzg4ZjZlYmI4NDA0OGIxYzA3NzRhZmRhY2Y4NzI1Li5kYzRiYjY5MmQyMDViZmNmZjFmZjg0
M2M4OTc2NTZhZmY2OTU0NTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEzLTA0LTMw
ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFNo
b3cgYSBibG9jayBjYXJldCBmb3Igb3ZlcnR5cGUgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0ODE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IHRocmVlIG1vcmUgV2ViQ29yZSBzeW1i
b2xzLgorCisgICAgICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dl
YktpdEV4cG9ydHMuZGVmLmluOgorCiAyMDEzLTA0LTI4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFdpbmRvd3MgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmlu
ZGV4IDU4OTk2ODg1NmM3ZDQ5ZTk0Yjg0Y2Q4ZWY5Y2RhNGRlOTIxMmJkNDcuLjk3Y2RjYTQ3NDRi
OWNkMGY3MzJhODMxYTNkYjQ3YmJhZTQwZWI3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxMy0wNC0zMCAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlh
LmNvbT4KKworICAgICAgICBTaG93IGEgYmxvY2sgY2FyZXQgZm9yIG92ZXJ0eXBlIG1vZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDgxOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9ydCB0aHJl
ZSBtb3JlIFdlYkNvcmUgc3ltYm9scy4KKworICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0
RXhwb3J0cy5kZWYuaW46CisKIDIwMTMtMDQtMzAgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1l
ekBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFJlcGxhY2UgIk9wdGlvbmFsIiBleHRlbmRl
ZCBhdHRyaWJ1dGUgYnkgcHJvcGVyIFdlYiBJREwgIm9wdGlvbmFsIiBrZXl3b3JkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCmluZGV4IGI2MGIzMGE2MmYyNzQ3NmUzYzQ0YzZkNjlmYWU0MjVjOTg4OGQ0NWMu
LmExNDVjOGJkZjQxYjIwNDQ3ZTZlNWExYmZkNGY0MWY2ZDAwYzc4ODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCkBAIC02OCw2ICs2OCw3IEBAIF9fWk4zV1RGMTJBdG9taWNTdHJpbmczYWRkRVBLMTBf
X0NGU3RyaW5nCiBfX1pOM1dURjZTdHJpbmdDMUVQOE5TU3RyaW5nCiBfX1pOM1dURjZTdHJpbmdD
MUVQSzEwX19DRlN0cmluZwogX19aTjdXZWJDb3JlMTBDbGllbnRSZWN0QzFFUktOU183SW50UmVj
dEUKK19fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNfOUZsb2F0UmVjdEUKIF9fWk43V2Vi
Q29yZTEwQ2xpZW50UmVjdEMxRXYKIF9fWk43V2ViQ29yZTEwQ3JlZGVudGlhbEMxRVJLTjNXVEY2
U3RyaW5nRVM0X05TXzIxQ3JlZGVudGlhbFBlcnNpc3RlbmNlRQogX19aTjdXZWJDb3JlMTBDcmVk
ZW50aWFsQzFFdgpAQCAtOTYwLDYgKzk2MSw3IEBAIF9fWk43V2ViQ29yZTZFZGl0b3I2aW5kZW50
RXYKIF9fWk43V2ViQ29yZTZFZGl0b3I3Q29tbWFuZEMxRXYKIF9fWk43V2ViQ29yZTZFZGl0b3I3
Y29tbWFuZEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTZFZGl0b3I3b3V0ZGVudEV2Citf
X1pON1dlYkNvcmU2RWRpdG9yMjZ0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZEV2CiBfX1pON1dl
YkNvcmU2SlNOb2RlNnNfaW5mb0UKIF9fWk43V2ViQ29yZTZSZWdpb241dW5pdGVFUktTMF8KIF9f
Wk43V2ViQ29yZTZSZWdpb244c3VidHJhY3RFUktTMF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUub3JkZXIgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDM1
NThhZTlmNTI3YzgwMzNjOWViYzk0Y2Q0ZmVmNzFhZTJiOTdmNTAuLjM1NTkzNDg2Y2U1MmJlNmQx
Y2I5MDc2OWI3NDE1YzNmOGY5M2M0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUub3JkZXIKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtNDI4NTksMyAr
NDI4NTksNCBAQCBfX1pMMzFwb2ludGVyQVZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uCiBfX1pON1dl
YkNvcmVMMTlnUHJvcGVydHlXcmFwcGVyTWFwRQogX19aTjdXZWJDb3JlTDEyZ0Z1bmN0aW9uTWFw
RQogX19aTjdXZWJDb3JlTDEyZ0Z1bmN0aW9uTWFwRQorX19aTjdXZWJDb3JlNkVkaXRvcjI2dG9n
Z2xlT3ZlcndyaXRlTW9kZUVuYWJsZWRFdgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAyYjU4MjRiNTllZDBiOWEwOWRmNWM2ZTEyNTYy
YjYzOTU0YTc4MjFiLi4xNGJkMDA2MTk5OWM4ZmU3MmE0NTc0NmYwMmRiYTFhNDkwOGZlMDdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zMTI0LDQgKzMxMjQsMTAgQEAgdm9pZCBF
ZGl0b3I6OmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmVsdGVybmF0aXZlKGNvbnN0IFN0cmluZyYg
YWx0ZXJuYXRpdmVTdHJpbmcKICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPmFwcGx5
RGljdGF0aW9uQWx0ZXJuYXRpdmUoYWx0ZXJuYXRpdmVTdHJpbmcpOwogfQogCit2b2lkIEVkaXRv
cjo6dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoKQoreworICAgIG1fb3ZlcndyaXRlTW9kZUVu
YWJsZWQgPSAhbV9vdmVyd3JpdGVNb2RlRW5hYmxlZDsKKyAgICBmcmFtZSgpLT5zZWxlY3Rpb24o
KS0+c2V0U2hvdWxkU2hvd0Jsb2NrQ2FyZXQobV9vdmVyd3JpdGVNb2RlRW5hYmxlZCk7Cit9Owor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA0NGYw
ZjM3OTA2ZWZmYTM3YzE0YWY0YzUwYzIwNWE1Yjk1MWM4YzQ2Li5mODZjNTFiMzVlNGU2MjUxMzZk
Y2IwYTI0YjczODk2ZGMyYTgzZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTI0Niw3
ICsyNDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrQW5kUmVwbGFjZUZvcihQYXNzUmVmUHRy
PFNwZWxsQ2hlY2tSZXF1ZXN0PiwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKTsK
IAogICAgIGJvb2wgaXNPdmVyd3JpdGVNb2RlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3Zl
cndyaXRlTW9kZUVuYWJsZWQ7IH0KLSAgICB2b2lkIHRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVk
KCkgeyBtX292ZXJ3cml0ZU1vZGVFbmFibGVkID0gIW1fb3ZlcndyaXRlTW9kZUVuYWJsZWQ7IH0K
KyAgICB2b2lkIHRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCk7CiAKICNpZiBVU0UoQVBQS0lU
KQogICAgIHZvaWQgdXBwZXJjYXNlV29yZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmNwcAppbmRleCBlNWQ0NjBjMDcxZWUwMDYyM2EwNWYzYTdjNzk4YmQxODk1Nzk5
ODk0Li41N2I0ODZlYjQ5YzU5NGJiMzhhMGMzOTAwYTJkM2IwMjE2YmIyZDljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTc1MywxMSArMTc1MywyMCBA
QCBpbmxpbmUgc3RhdGljIGJvb2wgc2hvdWxkU3RvcEJsaW5raW5nRHVlVG9UeXBpbmdDb21tYW5k
KEZyYW1lKiBmcmFtZSkKIAogdm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQXBwZWFyYW5jZSgp
CiB7CisgICAgLy8gVGhlIG92ZXJ3cml0ZU1vZGVTZWxlY3Rpb24gd2lsbCBwYWludCBhIGJsb2Nr
IGluc3RlYWQgb2YgYSBjYXJldCBpbiBvdmVydHlwZSBtb2RlIHVubGVzcyB0aGUgY2FyZXQgaXMg
YXQgdGhlIGVuZAorICAgIC8vIG9mIGEgbGluZSAoaW4gdGhpcyBjYXNlIHRoZSAibm9ybWFsIiBG
cmFtZVNlbGVjdGlvbiB3aWxsIHBhaW50IHRoZSBjYXJldCBhcyB1c3VhbCkuCisgICAgVmlzaWJs
ZVBvc2l0aW9uIGZvcndhcmRQb3NpdGlvbjsKKyAgICBpZiAobV9zaG91bGRTaG93QmxvY2tDYXJl
dCAmJiBtX3NlbGVjdGlvbi5pc0NhcmV0KCkpIHsKKyAgICAgICAgZm9yd2FyZFBvc2l0aW9uID0g
bW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgIG1f
Y2FyZXRQYWludCA9IGZvcndhcmRQb3NpdGlvbi5pc051bGwoKTsKKyAgICB9CisKICNpZiBFTkFC
TEUoVEVYVF9DQVJFVCkKICAgICBib29sIGNhcmV0UmVjdENoYW5nZWRPckNsZWFyZWQgPSByZWNv
bXB1dGVDYXJldFJlY3QoKTsKIAogICAgIGJvb2wgY2FyZXRCcm93c2luZyA9IG1fZnJhbWUtPnNl
dHRpbmdzKCkgJiYgbV9mcmFtZS0+c2V0dGluZ3MoKS0+Y2FyZXRCcm93c2luZ0VuYWJsZWQoKTsK
LSAgICBib29sIHNob3VsZEJsaW5rID0gY2FyZXRJc1Zpc2libGUoKSAmJiBpc0NhcmV0KCkgJiYg
KGlzQ29udGVudEVkaXRhYmxlKCkgfHwgY2FyZXRCcm93c2luZyk7CisgICAgYm9vbCBzaG91bGRT
dG9wQmxpbmtpbmdEdWVUb0Jsb2NrQ2FyZXQgPSBtX3Nob3VsZFNob3dCbG9ja0NhcmV0ICYmIG1f
c2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBmb3J3YXJkUG9zaXRpb24uaXNOb3ROdWxsKCk7CisgICAg
Ym9vbCBzaG91bGRCbGluayA9IGNhcmV0SXNWaXNpYmxlKCkgJiYgaXNDYXJldCgpICYmIChpc0Nv
bnRlbnRFZGl0YWJsZSgpIHx8IGNhcmV0QnJvd3NpbmcpICYmICFzaG91bGRTdG9wQmxpbmtpbmdE
dWVUb0Jsb2NrQ2FyZXQ7CiAKICAgICAvLyBJZiB0aGUgY2FyZXQgbW92ZWQsIHN0b3AgdGhlIGJs
aW5rIHRpbWVyIHNvIHdlIGNhbiByZXN0YXJ0IHdpdGggYQogICAgIC8vIGJsYWNrIGNhcmV0IGlu
IHRoZSBuZXcgbG9jYXRpb24uCkBAIC0xNzgzLDcgKzE3OTIsNyBAQCB2b2lkIEZyYW1lU2VsZWN0
aW9uOjp1cGRhdGVBcHBlYXJhbmNlKCkKIAogICAgIC8vIENvbnN0cnVjdCBhIG5ldyBWaXNpYmxl
U29sdXRpb24sIHNpbmNlIG1fc2VsZWN0aW9uIGlzIG5vdCBuZWNlc3NhcmlseSB2YWxpZCwgYW5k
IHRoZSBmb2xsb3dpbmcgc3RlcHMKICAgICAvLyBhc3N1bWUgYSB2YWxpZCBzZWxlY3Rpb24uIFNl
ZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTYzPiBhbmQgPHJk
YXI6Ly9wcm9ibGVtLzEwMjMyODY2Pi4KLSAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiht
X3NlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgbV9zZWxlY3Rpb24udmlzaWJsZUVuZCgpKTsKKyAg
ICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbihtX3NlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwg
Zm9yd2FyZFBvc2l0aW9uLmlzTm90TnVsbCgpID8gZm9yd2FyZFBvc2l0aW9uIDogbV9zZWxlY3Rp
b24udmlzaWJsZUVuZCgpKTsKIAogICAgIGlmICghc2VsZWN0aW9uLmlzUmFuZ2UoKSkgewogICAg
ICAgICB2aWV3LT5jbGVhclNlbGVjdGlvbigpOwpAQCAtMjA1Niw2ICsyMDY1LDE5IEBAIGlubGlu
ZSBib29sIEZyYW1lU2VsZWN0aW9uOjp2aXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkKCkgY29uc3QK
ICAgICByZXR1cm4gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnZpc3VhbFdvcmRNb3ZlbWVudEVuYWJs
ZWQoKTsKIH0KIAordm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0U2hvdWxkU2hvd0Jsb2NrQ2FyZXQo
Ym9vbCBzaG91bGRTaG93QmxvY2tDYXJldCkKK3sKKyAgICBtX3Nob3VsZFNob3dCbG9ja0NhcmV0
ID0gc2hvdWxkU2hvd0Jsb2NrQ2FyZXQ7CisKKyNpZiBFTkFCTEUoVEVYVF9DQVJFVCkKKyAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMo
KTsKKyNlbHNlCisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgp
OworI2VuZGlmCisKKyAgICB1cGRhdGVBcHBlYXJhbmNlKCk7Cit9CisKICNpZm5kZWYgTkRFQlVH
CiAKIHZvaWQgRnJhbWVTZWxlY3Rpb246OmZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwg
dW5zaWduZWQgbGVuZ3RoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5oCmluZGV4IGYxOWVmNWZkYjZlM2RjNDQ3MzZlZGIwYWQ1YTAyODBiMzAzZDk2ODQuLmE4YTYw
ZGY2YjY3OTc0MDY4YzE1Njk3YzNlNDM1MTNiMWYzMmRiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmgKQEAgLTI1NSw2ICsyNTUsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZXZlYWxTZWxlY3Rpb24oY29uc3QgU2Nyb2xsQWxpZ25tZW50JiA9IFNjcm9sbEFsaWdubWVu
dDo6YWxpZ25DZW50ZXJJZk5lZWRlZCwgUmV2ZWFsRXh0ZW50T3B0aW9uID0gRG9Ob3RSZXZlYWxF
eHRlbnQpOwogICAgIHZvaWQgc2V0U2VsZWN0aW9uRnJvbU5vbmUoKTsKIAorICAgIGJvb2wgc2hv
dWxkU2hvd0Jsb2NrQ2FyZXQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFNob3dCbG9ja0NhcmV0
OyB9CisgICAgdm9pZCBzZXRTaG91bGRTaG93QmxvY2tDYXJldChib29sKTsKKwogcHJpdmF0ZToK
ICAgICBlbnVtIEVQb3NpdGlvblR5cGUgeyBTVEFSVCwgRU5ELCBCQVNFLCBFWFRFTlQgfTsKIApA
QCAtMzExLDYgKzMxNCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhcmV0UGFpbnQgOiAxOwog
ICAgIGJvb2wgbV9pc0NhcmV0QmxpbmtpbmdTdXNwZW5kZWQgOiAxOwogICAgIGJvb2wgbV9mb2N1
c2VkIDogMTsKKyAgICBib29sIG1fc2hvdWxkU2hvd0Jsb2NrQ2FyZXQgOiAxOwogfTsKIAogaW5s
aW5lIEVkaXRpbmdTdHlsZSogRnJhbWVTZWxlY3Rpb246OnR5cGluZ1N0eWxlKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAxOWNjMjc5N2FlNjBmMDYzYjdlMWQy
NjlhNGJkYmM2YTZkNzFkYzNiLi5lYjgzMTdhMTNjODk2NmU2MjFlYTI2ZTA0MjY5NTEwMTMyMzk3
ZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMjk1LDYgKzIyOTUs
MTggQEAgZG91YmxlIEludGVybmFsczo6Y2xvc2VzdFRpbWVUb1RpbWVSYW5nZXMoZG91YmxlIHRp
bWUsIFRpbWVSYW5nZXMqIHJhbmdlcykKIHsKICAgICByZXR1cm4gcmFuZ2VzLT5uZWFyZXN0KHRp
bWUpOwogfQorCitQYXNzUmVmUHRyPENsaWVudFJlY3Q+IEludGVybmFsczo6c2VsZWN0aW9uQm91
bmRzKEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRl
eHREb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpIHx8
ICFkb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0aW9uKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUoKTsKKyAgICB9
CisKKyAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKGRvY3VtZW50LT5mcmFtZSgpLT5zZWxl
Y3Rpb24oKS0+Ym91bmRzKCkpOworfQorCiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKaW5kZXggODI5MDZlNDcyYzA4MzQ4MjQ1YjY2NDcxNGI2YTg1NTNiNTVjZDUzOS4u
YjdiNzNhMmNjNzQ2ODM3ZjhjMDI2MWM2YjcxNDYzZmExNmRlMjFkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCkBAIC0zMjgsNiArMzI4LDggQEAgcHVibGljOgogICAgIGRvdWJsZSBj
bG9zZXN0VGltZVRvVGltZVJhbmdlcyhkb3VibGUgdGltZSwgVGltZVJhbmdlcyopOwogI2VuZGlm
CiAKKyAgICBQYXNzUmVmUHRyPENsaWVudFJlY3Q+IHNlbGVjdGlvbkJvdW5kcyhFeGNlcHRpb25D
b2RlJik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3VtZW50Kik7CiAg
ICAgRG9jdW1lbnQqIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCmluZGV4IGZhMWI5MTI3MTk0MjE2NjZmNmQyYjJjMTUxYTA0NzljMTA4ZWM0
ZGIuLjczYTUxMGYwZTMzY2M3MzgwZTMxMmVkNDc2Mjc5YmRmNGMxYTNmMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTI4Nyw0ICsyODcsNiBAQAogICAgIFtDb25kaXRp
b25hbD1WSURFT10gZG91YmxlIGNsb3Nlc3RUaW1lVG9UaW1lUmFuZ2VzKGluIGRvdWJsZSB0aW1l
LCBpbiBUaW1lUmFuZ2VzIHJhbmdlcyk7CiAKICAgICBib29sZWFuIGlzU2VsZWN0UG9wdXBWaXNp
YmxlKGluIE5vZGUgbm9kZSk7CisKKyAgICBDbGllbnRSZWN0IHNlbGVjdGlvbkJvdW5kcygpIHJh
aXNlcyhET01FeGNlcHRpb24pOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluIGIvU291
cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhw
b3J0cy5kZWYuaW4KaW5kZXggNmQzYmIyYjA0NGJjMGViN2YwYzNkNzIyZjA5MjA2ZTJhYjY5NTMw
MS4uYzY2NzM3MDA0ZTExNTIwMTkwNWFjOTYyNDM1YzA1NjcyMzZkM2YwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0
RXhwb3J0cy5kZWYuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRF
eHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KQEAgLTE1NSw2ICsxNTUsNyBAQCBF
WFBPUlRTCiAgICAgICAgID8/MU5vZGVSZW5kZXJpbmdDb250ZXh0QFdlYkNvcmVAQFFBRUBYWgog
ICAgICAgICA/PzFSYW5nZUBXZWJDb3JlQEBRQUVAWFoKICAgICAgICAgP3RvTm9kZUBXZWJDb3Jl
QEBZQVBBVk5vZGVAMUBWSlNWYWx1ZUBKU0NAQEBaCisgICAgICAgID8/MENsaWVudFJlY3RAV2Vi
Q29yZUBAQUFFQEFCVkZsb2F0UmVjdEAxQEBaCiAgICAgICAgID8/MENsaWVudFJlY3RAV2ViQ29y
ZUBAQUFFQEFCVkludFJlY3RAMUBAWgogICAgICAgICA/PzBDbGllbnRSZWN0QFdlYkNvcmVAQEFB
RUBYWgogICAgICAgICA/PzBDbGllbnRSZWN0TGlzdEBXZWJDb3JlQEBBQUVAWFoKQEAgLTE4Nyw2
ICsxODgsNyBAQCBFWFBPUlRTCiAgICAgICAgID9maW5kQFN0cmluZ0ltcGxAV1RGQEBRQUVJUEFW
MTJASUBaCiAgICAgICAgID9maW5kQFN0cmluZ0ltcGxAV1RGQEBRQUVJUEFWMTJAQFoKICAgICAg
ICAgP2Fic29sdXRlQ2FyZXRCb3VuZHNARnJhbWVTZWxlY3Rpb25AV2ViQ29yZUBAUUFFP0FWSW50
UmVjdEAyQFhaCisgICAgICAgID9ib3VuZHNARnJhbWVTZWxlY3Rpb25AV2ViQ29yZUBAUUJFP0FW
RmxvYXRSZWN0QDJAX05AWgogICAgICAgICA/ZnJvbVVURjhAU3RyaW5nQFdURkBAU0E/QVYxMkBQ
QkVAWgogICAgICAgICA/ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2tAU3RyaW5nQFdURkBAU0E/
QVYxMkBQQkVJQFoKICAgICAgICAgP2dhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNAQ2Fj
aGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBAUUFFWFhaCkBAIC0zMTcsNiArMzE5LDcgQEAgRVhQ
T1JUUwogICAgICAgICA/c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JARWRpdG9yQFdlYkNvcmVA
QFFCRV9OVzRNYXJrZXJUeXBlQERvY3VtZW50TWFya2VyQDJASEhAWgogICAgICAgICA/aXNDb250
aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWRARWRpdG9yQFdlYkNvcmVAQFFCRV9OWFoKICAgICAg
ICAgP3RvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nQEVkaXRvckBXZWJDb3JlQEBRQUVYWFoK
KyAgICAgICAgP3RvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkQEVkaXRvckBXZWJDb3JlQEBRQUVY
WFoKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgICAgID93ZWJraXRXaWxsRW50ZXJG
dWxsU2NyZWVuRm9yRWxlbWVudEBEb2N1bWVudEBXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAyQEBa
CiAgICAgICAgID93ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50QERvY3VtZW50QFdl
YkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCmluZGV4IDA5NWE2OTZiMTE0MmNiMjZl
MWE5OWEwYjQxYmRmNDhlZDVhZGEyMzYuLjNmODIxMjg1OWVjZTc5NWE2MDBmODBmY2U4YTNhNzJh
YTc3ZjU0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2Vi
S2l0RXhwb3J0cy5kZWYuaW4KKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9X
ZWJLaXRFeHBvcnRzLmRlZi5pbgpAQCAtMTU2LDYgKzE1Niw3IEBAIEVYUE9SVFMKICAgICAgICAg
Pz8xTm9kZVJlbmRlcmluZ0NvbnRleHRAV2ViQ29yZUBAUUFFQFhaCiAgICAgICAgID8/MVJhbmdl
QFdlYkNvcmVAQFFBRUBYWgogICAgICAgICA/dG9Ob2RlQFdlYkNvcmVAQFlBUEFWTm9kZUAxQFZK
U1ZhbHVlQEpTQ0BAQFoKKyAgICAgICAgPz8wQ2xpZW50UmVjdEBXZWJDb3JlQEBBQUVAQUJWRmxv
YXRSZWN0QDFAQFoKICAgICAgICAgPz8wQ2xpZW50UmVjdEBXZWJDb3JlQEBBQUVAQUJWSW50UmVj
dEAxQEBaCiAgICAgICAgID8/MENsaWVudFJlY3RAV2ViQ29yZUBAQUFFQFhaCiAgICAgICAgID8/
MENsaWVudFJlY3RMaXN0QFdlYkNvcmVAQEFBRUBYWgpAQCAtMTg4LDYgKzE4OSw3IEBAIEVYUE9S
VFMKICAgICAgICAgP2ZpbmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlQQVYxMkBJQFoKICAgICAgICAg
P2ZpbmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlQQVYxMkBAWgogICAgICAgICA/YWJzb2x1dGVDYXJl
dEJvdW5kc0BGcmFtZVNlbGVjdGlvbkBXZWJDb3JlQEBRQUU/QVZJbnRSZWN0QDJAWFoKKyAgICAg
ICAgP2JvdW5kc0BGcmFtZVNlbGVjdGlvbkBXZWJDb3JlQEBRQkU/QVZGbG9hdFJlY3RAMkBfTkBa
CiAgICAgICAgID9mcm9tVVRGOEBTdHJpbmdAV1RGQEBTQT9BVjEyQFBCRUBaCiAgICAgICAgID9m
cm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFja0BTdHJpbmdAV1RGQEBTQT9BVjEyQFBCRUlAWgogICAg
ICAgICA/Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc0BDYWNoZWRSZXNvdXJjZUxvYWRl
ckBXZWJDb3JlQEBRQUVYWFoKQEAgLTMxOCw2ICszMjAsNyBAQCBFWFBPUlRTCiAgICAgICAgID9z
ZWxlY3Rpb25TdGFydEhhc01hcmtlckZvckBFZGl0b3JAV2ViQ29yZUBAUUJFX05XNE1hcmtlclR5
cGVARG9jdW1lbnRNYXJrZXJAMkBISEBaCiAgICAgICAgID9pc0NvbnRpbnVvdXNTcGVsbENoZWNr
aW5nRW5hYmxlZEBFZGl0b3JAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/dG9nZ2xlQ29udGlu
dW91c1NwZWxsQ2hlY2tpbmdARWRpdG9yQFdlYkNvcmVAQFFBRVhYWgorICAgICAgICA/dG9nZ2xl
T3ZlcndyaXRlTW9kZUVuYWJsZWRARWRpdG9yQFdlYkNvcmVAQFFBRVhYWgogI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKICAgICAgICAgP3dlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVt
ZW50QERvY3VtZW50QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQFoKICAgICAgICAgP3dlYmtp
dERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnRARG9jdW1lbnRAV2ViQ29yZUBAUUFFWFBBVkVs
ZW1lbnRAMkBAWgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBi
L1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggOGYwZTZiNTM0NzY2NGEzMjFk
NDgyN2ZjOWQyODBkZGRhZDZlMWM4My4uODY4YmRlNGYyZGUxZjczMzg4YjU4OTdjNzIwMDg1OWE2
MTBjMTFmOCAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysg
Yi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0zMTEsNiArMzExLDkgQEAgX1pO
SzdXZWJDb3JlNE5vZGUyOGRlcHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5vZGVFdjsKIF9aTks3V2Vi
Q29yZTdJbnRSZWN0MTBpbnRlcnNlY3RzRVJLUzBfOwogX1pOSzdXZWJDb3JlOERvY3VtZW50MTNu
b2Rlc0Zyb21SZWN0RWlpampqamo7CiBfWlRWTjdXZWJDb3JlMTRTdGF0aWNOb2RlTGlzdEU7Citf
Wk43V2ViQ29yZTZFZGl0b3IyNnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkRXY7CitfWk5LN1dl
YkNvcmUxNEZyYW1lU2VsZWN0aW9uNmJvdW5kc0ViOworX1pON1dlYkNvcmUxMENsaWVudFJlY3RD
MUVSS05TXzlGbG9hdFJlY3RFOwogCiBsb2NhbDoKIF9aKjsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5NDcxZGJmYzVlN2Nk
ZWIwMjcyMWY1NTUwNDBjOGJlNjRiOGY5NTEyLi4yMmI2Yzk2MjNhMTgzNTFkYTBiYWUxNGJmZTk4
ODA4ZDE0NjY5NGQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMDQtMzAgIFNlcmdpbyBW
aWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAgICAgU2hvdyBhIGJsb2Nr
IGNhcmV0IGZvciBvdmVydHlwZSBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTQ4MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBOZXcgdGVzdCBjYXNlIGZvciB0aGUgbmV3IGJsb2NrIGNhcmV0IHRv
IGJlIHVzZWQgaW4gb3ZlcnR5cGUKKyAgICAgICAgbW9kZS4gVGhlIHRlc3QgdmVyaWZpZXMgdGhh
dCB0aGUgMS1waXhlbCBsb25nIGNhcmV0IGlzIHJlcGxhY2VkIGJ5CisgICAgICAgIGEgc2VsZWN0
aW9uIGxpa2UgMS1jaGFyYWN0ZXIgbG9uZyBjYXJldCB3aGVuIGluIG92ZXJ0eXBlCisgICAgICAg
IG1vZGUuIFRoaXMgdGVzdCBjb3ZlcnMgTFRSIGFuZCBSVEwgdGV4dCBpbiBMVFIgYW5kIFJUTCBi
bG9ja3MgYW5kCisgICAgICAgIGJpZGkgdGV4dC4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0
aW9uL2NhcmV0LW92ZXJ0eXBlLW1vZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBl
ZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1vdmVydHlwZS1tb2RlLmh0bWw6IEFkZGVkLgorCiAyMDEz
LTA0LTI5ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkIEdUSyBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9jYXJldC1vdmVydHlwZS1tb2RlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LW92ZXJ0eXBlLW1vZGUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI5NGMyODFmYjNmYWM3N2Q3OGY0YjI4MDRmNTIwOGFkODVhMzIyYmMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1vdmVydHlwZS1t
b2RlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQg
dGhlIGNhcmV0IGNvdmVycyB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgb3ZlcndyaXR0ZW4gaW4g
b3ZlcnR5cGUgbW9kZSBpbnN0ZWFkIG9mIGJlaW5nIHBhaW50ZWQgYXMgYSB0aGluICgxcHggd2lk
dGgpIGJhcgorCitBQkMKK0FCQwor16nXk9efQUJDCivXqdeT159BQkMKK9ep15PXnwor16nXk9ef
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtb3ZlcnR5cGUtbW9k
ZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtb3ZlcnR5cGUtbW9k
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZiZTZiMjIwNDU3MDdjMTEzNTFhNTllYmIwYmE0MDk0MTk3ZDll
YmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJl
dC1vdmVydHlwZS1tb2RlLmh0bWwKQEAgLTAsMCArMSw3MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vZWRp
dGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8c3R5bGU+
Citib2R5IHsKKyAgICBmb250OiAyMHB4IEFoZW07Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHkgc3R5bGUgPSAiZm9udDogMjBweCBBaGVtIj4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCB0
aGUgY2FyZXQgY292ZXJzIHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSBvdmVyd3JpdHRlbiBpbiBv
dmVydHlwZSBtb2RlIGluc3RlYWQgb2YgYmVpbmcgcGFpbnRlZCBhcyBhIHRoaW4gKDFweCB3aWR0
aCkgYmFyPC9wPgorPGRpdiBpZD0ibHRydGV4dCIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5BQkM8
L2Rpdj4KKzxkaXYgaWQ9Imx0cnRleHQtcnRsIiBzdHlsZT0iZGlyZWN0aW9uOiBydGw7IiBjb250
ZW50ZWRpdGFibGU9InRydWUiPkFCQzwvZGl2PgorPGRpdiBpZD0ibWl4ZWQiIGNvbnRlbnRlZGl0
YWJsZT0idHJ1ZSI+JiN4MDVlOTsmI3gwNWQzOyYjeDA1ZGY7QUJDPC9kaXY+Cis8ZGl2IGlkPSJt
aXhlZC1ydGwiIHN0eWxlPSJkaXJlY3Rpb246IHJ0bDsiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+
JiN4MDVlOTsmI3gwNWQzOyYjeDA1ZGY7QUJDPC9kaXY+Cis8ZGl2IGlkPSJydGx0ZXh0IiBzdHls
ZT0iZGlyZWN0aW9uOiBsdHI7IiBjb250ZW50ZWRpdGFibGU9InRydWUiPiYjeDA1ZTk7JiN4MDVk
MzsmI3gwNWRmOzwvZGl2PgorPGRpdiBpZD0icnRsdGV4dC1ydGwiIHN0eWxlPSJkaXJlY3Rpb246
IHJ0bDsiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+JiN4MDVlOTsmI3gwNWQzOyYjeDA1ZGY7PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisKK2Z1bmN0
aW9uIHZlcmlmeUJsb2NrQ2FyZXRMZWZ0UG9zaXRpb25BbmRXaWR0aChlbGVtZW50SWQsIGV4cGVj
dGVkKQoreworICAgIHZhciBsZWZ0UG9zaXRpb25WYWx1ZXMgPSBuZXcgQXJyYXkoKTsKKyAgICB2
YXIgd2lkdGhWYWx1ZXMgPSBuZXcgQXJyYXkoKTsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkuZmlyc3RDaGlsZDsKKyAgICBmb3IgKHZhciBpPTA7
IGkgPCBlbGVtZW50Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGdldFNlbGVjdGlvbigpLmNvbGxh
cHNlKGVsZW1lbnQsIGkpOworCisgICAgICAgIHZhciBibG9ja0NhcmV0Qm91bmRzID0gaW50ZXJu
YWxzLnNlbGVjdGlvbkJvdW5kcygpOworICAgICAgICBsZWZ0UG9zaXRpb25WYWx1ZXMucHVzaChi
bG9ja0NhcmV0Qm91bmRzLmxlZnQpOworICAgICAgICB3aWR0aFZhbHVlcy5wdXNoKGJsb2NrQ2Fy
ZXRCb3VuZHMud2lkdGgpOworCisgICAgICAgIHNob3VsZEJlVHJ1ZVF1aWV0KGdldFNlbGVjdGlv
bigpLmlzQ29sbGFwc2VkLnRvU3RyaW5nKCkpOworICAgICAgICBzaG91bGRCZShpbnRlcm5hbHMu
YWJzb2x1dGVDYXJldEJvdW5kcygpLndpZHRoLnRvU3RyaW5nKCksICIxIiwgdHJ1ZSk7CisgICAg
fQorCisgICAgZm9yICh2YXIgaT0wOyBpIDwgZWxlbWVudC5sZW5ndGg7IGkrKykgeworICAgICAg
ICBpZiAoaSArIDEgPCBlbGVtZW50Lmxlbmd0aCkKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZVF1
aWV0KGxlZnRQb3NpdGlvblZhbHVlc1tpXS50b1N0cmluZygpICsgZXhwZWN0ZWRbaV0gKyBsZWZ0
UG9zaXRpb25WYWx1ZXNbaSsxXS50b1N0cmluZygpKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlUXVp
ZXQod2lkdGhWYWx1ZXNbaV0udG9TdHJpbmcoKSArICIgPiAxIik7CisgICAgfQorCisgICAgLy8g
QXQgdGhlIGVuZCBvZiB0aGUgbGluZSB3ZSBtdXN0IGhhdmUgYSAxLXBpeGVsIGxvbmcgY2xhc3Np
Y2FsIGNhcmV0CisgICAgZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2UoZWxlbWVudCwgZWxlbWVudC5s
ZW5ndGgpOworICAgIHNob3VsZEJlKGludGVybmFscy5zZWxlY3Rpb25Cb3VuZHMoKS53aWR0aC50
b1N0cmluZygpLCAiMCIsIHRydWUpOworICAgIHNob3VsZEJlKGludGVybmFscy5hYnNvbHV0ZUNh
cmV0Qm91bmRzKCkud2lkdGgudG9TdHJpbmcoKSwgIjEiLCB0cnVlKTsKK30KKworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisKKyAgICAvLyBJbiBJbnNlcnQgbW9kZSBjYXJldCBpcyBhIDFweCBi
YXIKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsdHJ0ZXh0Iiku
Zmlyc3RDaGlsZDsKKyAgICBnZXRTZWxlY3Rpb24oKS5jb2xsYXBzZShlbGVtZW50LCAwKTsKKyAg
ICBzaG91bGRCZShpbnRlcm5hbHMuYWJzb2x1dGVDYXJldEJvdW5kcygpLndpZHRoLnRvU3RyaW5n
KCksICIxIiwgdHJ1ZSk7CisKKyAgICBpbnRlcm5hbHMudG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJs
ZWQoZG9jdW1lbnQpOworCisgICAgdmVyaWZ5QmxvY2tDYXJldExlZnRQb3NpdGlvbkFuZFdpZHRo
KCJydGx0ZXh0IiwgWyI+IiwgIj4iLCAiPiJdKTsKKyAgICB2ZXJpZnlCbG9ja0NhcmV0TGVmdFBv
c2l0aW9uQW5kV2lkdGgoInJ0bHRleHQtcnRsIiwgWyI+IiwgIj4iLCAiPiJdKTsKKyAgICB2ZXJp
ZnlCbG9ja0NhcmV0TGVmdFBvc2l0aW9uQW5kV2lkdGgoImx0cnRleHQiLCBbIjwiLCAiPCIsICI8
Il0pOworICAgIHZlcmlmeUJsb2NrQ2FyZXRMZWZ0UG9zaXRpb25BbmRXaWR0aCgibHRydGV4dC1y
dGwiLCBbIjwiLCAiPCIsICI8Il0pOworICAgIHZlcmlmeUJsb2NrQ2FyZXRMZWZ0UG9zaXRpb25B
bmRXaWR0aCgibWl4ZWQiLCBbIj4iLCAiPiIsICI8IiwgIjwiLCAiPCJdKTsKKyAgICB2ZXJpZnlC
bG9ja0NhcmV0TGVmdFBvc2l0aW9uQW5kV2lkdGgoIm1peGVkLXJ0bCIsIFsiPiIsICI+IiwgIj4i
LCAiPCIsICI8Il0pOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDQ4YjYz
ZTljOGVhYjIwZWVmMDE3MzNkMzJlYzhhZmY4MjAwZjk2OWUuLjNmNmUxYWE1MmE3YzY4MTYzNWVi
MGYwYTkwMzEyMjllNmE3NTQ1MjIgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wNC0zMCAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2
aWxsYXJAaWdhbGlhLmNvbT4KKworICAgICAgICBTaG93IGEgYmxvY2sgY2FyZXQgZm9yIG92ZXJ0
eXBlIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNDgxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjogZXhwb3J0IHNvbWUgZXh0cmEgc3lt
Ym9scyBmb3IKKyAgICAgICAgdGVzdGluZyBwdXJwb3Nlcy4KKwogMjAxMy0wNC0yOSAgWmFuIERv
YmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gRGlzYWJsZSBT
aGFkb3cgRE9NIGZlYXR1cmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200134</attachid>
            <date>2013-04-30 11:21:32 -0700</date>
            <delta_ts>2013-04-30 11:50:51 -0700</delta_ts>
            <desc>Patch (second approach)</desc>
            <filename>0001-fix.patch</filename>
            <type>text/plain</type>
            <size>22623</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">RnJvbSAyY2E4ZDRlYWQ5NjljMTg1NWM2NWYwMDZjOTIwM2Y2NTNkOTNlNjY4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTZXJnaW8gVmlsbGFyIFNlbmluIDxzdmlsbGFyQGlnYWxpYS5j
b20+CkRhdGU6IFRodSwgMjUgQXByIDIwMTMgMTQ6MDQ6NTYgKzAyMDAKU3ViamVjdDogW1BBVENI
XSBmaXgKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDEwICsrKwogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDE2ICsrKysrCiAuLi4vc2VsZWN0aW9uL2NhcmV0LW92ZXJ0eXBlLW1v
ZGUtZXhwZWN0ZWQudHh0ICAgICB8ICAgMTIgKysrKwogLi4uL2VkaXRpbmcvc2VsZWN0aW9uL2Nh
cmV0LW92ZXJ0eXBlLW1vZGUuaHRtbCAgICAgfCAgIDcwICsrKysrKysrKysrKysrKysrKysrCiBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDUg
KysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gICAgICAgICAgICAg
ICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAg
ICAgICAgICAgICAgICAgICB8ICAgIDYgKysKIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmggICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHAgICAgICAgICAgfCAgIDI3ICsrKysrKystCiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmggICAgICAgICAgICB8ICAgIDYgKysKIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCAgICAgICAgICAgICAgIHwgICAxMiArKysrCiBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oICAgICAgICAgICAgICAgICB8ICAgIDIg
KwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsICAgICAgICAgICAgICAgfCAg
ICAyICsKIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAxMSArKysKIC4uLi9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYu
aW4gICAgIHwgICAgMyArCiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMTEgKysrCiAuLi4vV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktp
dEV4cG9ydHMuZGVmLmluICB8ICAgIDMgKwogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRl
ciAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIDE5IGZpbGVzIGNoYW5nZWQsIDI0MCBpbnNl
cnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LW92ZXJ0eXBlLW1vZGUtZXhwZWN0ZWQudHh0CiBjcmVh
dGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtb3ZlcnR5
cGUtbW9kZS5odG1sCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDQ4
YjYzZTkuLjNmNmUxYWEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxMy0wNC0zMCAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJA
aWdhbGlhLmNvbT4KKworICAgICAgICBTaG93IGEgYmxvY2sgY2FyZXQgZm9yIG92ZXJ0eXBlIG1v
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDgx
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjogZXhwb3J0IHNvbWUgZXh0cmEgc3ltYm9scyBm
b3IKKyAgICAgICAgdGVzdGluZyBwdXJwb3Nlcy4KKwogMjAxMy0wNC0yOSAgWmFuIERvYmVyc2Vr
ICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gRGlzYWJsZSBTaGFkb3cg
RE9NIGZlYXR1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA5NDcxZGJmLi4yMmI2Yzk2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTMtMDQtMzAgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+
CisKKyAgICAgICAgU2hvdyBhIGJsb2NrIGNhcmV0IGZvciBvdmVydHlwZSBtb2RlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQ4MTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgdGVzdCBjYXNlIGZv
ciB0aGUgbmV3IGJsb2NrIGNhcmV0IHRvIGJlIHVzZWQgaW4gb3ZlcnR5cGUKKyAgICAgICAgbW9k
ZS4gVGhlIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgMS1waXhlbCBsb25nIGNhcmV0IGlzIHJlcGxh
Y2VkIGJ5CisgICAgICAgIGEgc2VsZWN0aW9uIGxpa2UgMS1jaGFyYWN0ZXIgbG9uZyBjYXJldCB3
aGVuIGluIG92ZXJ0eXBlCisgICAgICAgIG1vZGUuIFRoaXMgdGVzdCBjb3ZlcnMgTFRSIGFuZCBS
VEwgdGV4dCBpbiBMVFIgYW5kIFJUTCBibG9ja3MgYW5kCisgICAgICAgIGJpZGkgdGV4dC4KKwor
ICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LW92ZXJ0eXBlLW1vZGUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1vdmVydHlwZS1t
b2RlLmh0bWw6IEFkZGVkLgorCiAyMDEzLTA0LTI5ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtA
aWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEdUSyBnYXJkZW5pbmcuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1vdmVydHlwZS1tb2RlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LW92ZXJ0eXBl
LW1vZGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5
NGMyODEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9j
YXJldC1vdmVydHlwZS1tb2RlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRl
c3QgY2hlY2tzIHRoYXQgdGhlIGNhcmV0IGNvdmVycyB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUg
b3ZlcndyaXR0ZW4gaW4gb3ZlcnR5cGUgbW9kZSBpbnN0ZWFkIG9mIGJlaW5nIHBhaW50ZWQgYXMg
YSB0aGluICgxcHggd2lkdGgpIGJhcgorCitBQkMKK0FCQwor16nXk9efQUJDCivXqdeT159BQkMK
K9ep15PXnwor16nXk9efCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2Fy
ZXQtb3ZlcnR5cGUtbW9kZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2Fy
ZXQtb3ZlcnR5cGUtbW9kZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjJjMmQzNGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9jYXJldC1vdmVydHlwZS1tb2RlLmh0bWwKQEAgLTAsMCArMSw3MCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
Li4vZWRpdGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8
c3R5bGU+Citib2R5IHsKKyAgICBmb250OiAyMHB4IEFoZW07Cit9Cis8L3N0eWxlPgorPC9oZWFk
PgorPGJvZHkgc3R5bGUgPSAiZm9udDogMjBweCBBaGVtIj4KKzxwPlRoaXMgdGVzdCBjaGVja3Mg
dGhhdCB0aGUgY2FyZXQgY292ZXJzIHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSBvdmVyd3JpdHRl
biBpbiBvdmVydHlwZSBtb2RlIGluc3RlYWQgb2YgYmVpbmcgcGFpbnRlZCBhcyBhIHRoaW4gKDFw
eCB3aWR0aCkgYmFyPC9wPgorPGRpdiBpZD0ibHRydGV4dCIgY29udGVudGVkaXRhYmxlPSJ0cnVl
Ij5BQkM8L2Rpdj4KKzxkaXYgaWQ9Imx0cnRleHQtcnRsIiBzdHlsZT0iZGlyZWN0aW9uOiBydGw7
IiBjb250ZW50ZWRpdGFibGU9InRydWUiPkFCQzwvZGl2PgorPGRpdiBpZD0ibWl4ZWQiIGNvbnRl
bnRlZGl0YWJsZT0idHJ1ZSI+JiN4MDVlOTsmI3gwNWQzOyYjeDA1ZGY7QUJDPC9kaXY+Cis8ZGl2
IGlkPSJtaXhlZC1ydGwiIHN0eWxlPSJkaXJlY3Rpb246IHJ0bDsiIGNvbnRlbnRlZGl0YWJsZT0i
dHJ1ZSI+JiN4MDVlOTsmI3gwNWQzOyYjeDA1ZGY7QUJDPC9kaXY+Cis8ZGl2IGlkPSJydGx0ZXh0
IiBzdHlsZT0iZGlyZWN0aW9uOiBsdHI7IiBjb250ZW50ZWRpdGFibGU9InRydWUiPiYjeDA1ZTk7
JiN4MDVkMzsmI3gwNWRmOzwvZGl2PgorPGRpdiBpZD0icnRsdGV4dC1ydGwiIHN0eWxlPSJkaXJl
Y3Rpb246IHJ0bDsiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+JiN4MDVlOTsmI3gwNWQzOyYjeDA1
ZGY7PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisK
K2Z1bmN0aW9uIHZlcmlmeUJsb2NrQ2FyZXRMZWZ0UG9zaXRpb25BbmRXaWR0aChlbGVtZW50SWQs
IGV4cGVjdGVkKQoreworICAgIHZhciBsZWZ0UG9zaXRpb25WYWx1ZXMgPSBuZXcgQXJyYXkoKTsK
KyAgICB2YXIgd2lkdGhWYWx1ZXMgPSBuZXcgQXJyYXkoKTsKKyAgICB2YXIgZWxlbWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkuZmlyc3RDaGlsZDsKKyAgICBmb3IgKHZh
ciBpPTA7IGkgPCBlbGVtZW50Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGdldFNlbGVjdGlvbigp
LmNvbGxhcHNlKGVsZW1lbnQsIGkpOworCisgICAgICAgIHZhciBibG9ja0NhcmV0Qm91bmRzID0g
aW50ZXJuYWxzLnNlbGVjdGlvbkJvdW5kcygpOworICAgICAgICBsZWZ0UG9zaXRpb25WYWx1ZXMu
cHVzaChibG9ja0NhcmV0Qm91bmRzLmxlZnQpOworICAgICAgICB3aWR0aFZhbHVlcy5wdXNoKGJs
b2NrQ2FyZXRCb3VuZHMud2lkdGgpOworCisgICAgICAgIHNob3VsZEJlVHJ1ZVF1aWV0KGdldFNl
bGVjdGlvbigpLmlzQ29sbGFwc2VkLnRvU3RyaW5nKCkpOworICAgICAgICBzaG91bGRCZShpbnRl
cm5hbHMuYWJzb2x1dGVDYXJldEJvdW5kcygpLndpZHRoLnRvU3RyaW5nKCksICIxIiwgdHJ1ZSk7
CisgICAgfQorCisgICAgZm9yICh2YXIgaT0wOyBpIDwgZWxlbWVudC5sZW5ndGg7IGkrKykgewor
ICAgICAgICBpZiAoaSArIDEgPCBlbGVtZW50Lmxlbmd0aCkKKyAgICAgICAgICAgIHNob3VsZEJl
VHJ1ZVF1aWV0KGxlZnRQb3NpdGlvblZhbHVlc1tpXS50b1N0cmluZygpICsgZXhwZWN0ZWRbaV0g
KyBsZWZ0UG9zaXRpb25WYWx1ZXNbaSsxXS50b1N0cmluZygpKTsKKyAgICAgICAgc2hvdWxkQmVU
cnVlUXVpZXQod2lkdGhWYWx1ZXNbaV0udG9TdHJpbmcoKSArICIgPiAxIik7CisgICAgfQorCisg
ICAgLy8gQXQgdGhlIGVuZCBvZiB0aGUgbGluZSB3ZSBtdXN0IGhhdmUgYSAxLXBpeGVsIGxvbmcg
Y2xhc3NpY2FsIGNhcmV0CisgICAgZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2UoZWxlbWVudCwgZWxl
bWVudC5sZW5ndGgpOworICAgIHNob3VsZEJlKCJpbnRlcm5hbHMuc2VsZWN0aW9uQm91bmRzKCku
d2lkdGgiLCAiMCIsIHRydWUpOworICAgIHNob3VsZEJlKCJpbnRlcm5hbHMuYWJzb2x1dGVDYXJl
dEJvdW5kcygpLndpZHRoIiwgIjEiLCB0cnVlKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisKKyAgICAvLyBJbiBJbnNlcnQgbW9kZSBjYXJldCBpcyBhIDFweCBiYXIKKyAgICB2YXIg
ZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsdHJ0ZXh0IikuZmlyc3RDaGlsZDsK
KyAgICBnZXRTZWxlY3Rpb24oKS5jb2xsYXBzZShlbGVtZW50LCAwKTsKKyAgICBzaG91bGRCZShp
bnRlcm5hbHMuYWJzb2x1dGVDYXJldEJvdW5kcygpLndpZHRoLnRvU3RyaW5nKCksICIxIiwgdHJ1
ZSk7CisKKyAgICBpbnRlcm5hbHMudG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoZG9jdW1lbnQp
OworCisgICAgdmVyaWZ5QmxvY2tDYXJldExlZnRQb3NpdGlvbkFuZFdpZHRoKCJydGx0ZXh0Iiwg
WyI+IiwgIj4iLCAiPiJdKTsKKyAgICB2ZXJpZnlCbG9ja0NhcmV0TGVmdFBvc2l0aW9uQW5kV2lk
dGgoInJ0bHRleHQtcnRsIiwgWyI+IiwgIj4iLCAiPiJdKTsKKyAgICB2ZXJpZnlCbG9ja0NhcmV0
TGVmdFBvc2l0aW9uQW5kV2lkdGgoImx0cnRleHQiLCBbIjwiLCAiPCIsICI8Il0pOworICAgIHZl
cmlmeUJsb2NrQ2FyZXRMZWZ0UG9zaXRpb25BbmRXaWR0aCgibHRydGV4dC1ydGwiLCBbIjwiLCAi
PCIsICI8Il0pOworICAgIHZlcmlmeUJsb2NrQ2FyZXRMZWZ0UG9zaXRpb25BbmRXaWR0aCgibWl4
ZWQiLCBbIj4iLCAiPiIsICI8IiwgIjwiLCAiPCJdKTsKKyAgICB2ZXJpZnlCbG9ja0NhcmV0TGVm
dFBvc2l0aW9uQW5kV2lkdGgoIm1peGVkLXJ0bCIsIFsiPiIsICI+IiwgIj4iLCAiPCIsICI8Il0p
OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGIzMTdiYTcuLjU3YmI3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBA
QAorMjAxMy0wNC0zMCAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4K
KworICAgICAgICBTaG93IGEgYmxvY2sgY2FyZXQgZm9yIG92ZXJ0eXBlIG1vZGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDgxOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LW92ZXJ0eXBlLW1vZGUuaHRtbAorCisgICAgICAgIE92ZXJ0eXBlIG1vZGUg
d2lsbCB1c2UgYmxvY2sgY3Vyc29yIGluc3RlYWQgb2YgYSBjYXJldCB0bworICAgICAgICBoaWdo
bGlnaHQgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIHJlcGxhY2VkLiBJdCB3aWxsIGZ1bGx5IGNv
dmVyCisgICAgICAgIHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSByZXBsYWNlZCAoZXhjZXB0IGF0
IHRoZSBlbmQgb2YgYSBsaW5lCisgICAgICAgIHdoZXJlIHRoZSB1c3VhbCBibGlua2luZyBjYXJl
dCB3aWxsIGJlIHNob3duKS4KKworICAgICAgICBUaGlzIG5ldyBibG9jayBjdXJzb3IgaXMgaW50
ZXJuYWxseSBpbXBsZW1lbnRlZCBhcyBhIHNlbGVjdGlvbgorICAgICAgICAobm90IGV4cG9zZWQg
dG8gSmF2YVNjcmlwdCkgYmVjYXVzZSB0aGUgc2VsZWN0aW9uIGNvZGUga25vd3MgaG93CisgICAg
ICAgIHRvIGRlYWwgd2l0aCBiaWRpIHRleHQuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjog
RXhwb3J0IHN5bWJvbHMgZm9yIHRlc3RpbmcgcHVycG9zZXMuCisgICAgICAgICogV2ViQ29yZS5v
cmRlcjogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjp0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCk6IEFkZGVkIGEgY2FsbCB0
bworICAgICAgICBGcmFtZUxvYWRlcjo6c2V0U2hvdWxkU2hvd0Jsb2NrQ2FyZXQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAoRWRpdG9y
KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjpGcmFtZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2Vs
ZWN0aW9uOjpwYWludENhcmV0KTogRG8gbm90IHBhaW50IHRoZSBjYXJldCBpbgorICAgICAgICBv
dmVydHlwZSBtb2RlIGFuZCBub3QgYXQgdGhlIGVuZCBvZiBhIGxpbmUuCisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQXBwZWFyYW5jZSk6IFVzZSBhIDEtY2hhcmFjdGVy
CisgICAgICAgIGxvbmcgc2VsZWN0aW9uIHRvIHBhaW50IHRoZSBjdXJzb3IgaW4gb3ZlcnR5cGUg
bW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZXRTaG91bGRTaG93Qmxv
Y2tDYXJldCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2hvdWxkU2hvd0Js
b2NrQ2FyZXQpOgorICAgICAgICAoRnJhbWVTZWxlY3Rpb24pOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJuYWxzOjpzZWxlY3Rpb25Cb3VuZHMpOiBBZGRlZCBhIG5ldyBtZXRob2Qgd2hpY2gKKyAgICAg
ICAgcmV0dXJucyB0aGUgSW50UmVjdCBpc3N1ZWQgYnkgRnJhbWVTZWxlY3Rpb246OmJvdW5kcygp
LgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6IERpdHRvLgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmlkbDogRGl0dG8uCisKIDIwMTMtMDQtMzAgIENocmlzdG9waGUgRHVtZXog
IDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFJlcGxhY2UgIk9wdGlvbmFs
IiBleHRlbmRlZCBhdHRyaWJ1dGUgYnkgcHJvcGVyIFdlYiBJREwgIm9wdGlvbmFsIiBrZXl3b3Jk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGI2MGIzMGEuLmExNDVjOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCkBAIC02OCw2ICs2OCw3IEBAIF9fWk4zV1RGMTJBdG9taWNTdHJpbmczYWRkRVBLMTBf
X0NGU3RyaW5nCiBfX1pOM1dURjZTdHJpbmdDMUVQOE5TU3RyaW5nCiBfX1pOM1dURjZTdHJpbmdD
MUVQSzEwX19DRlN0cmluZwogX19aTjdXZWJDb3JlMTBDbGllbnRSZWN0QzFFUktOU183SW50UmVj
dEUKK19fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNfOUZsb2F0UmVjdEUKIF9fWk43V2Vi
Q29yZTEwQ2xpZW50UmVjdEMxRXYKIF9fWk43V2ViQ29yZTEwQ3JlZGVudGlhbEMxRVJLTjNXVEY2
U3RyaW5nRVM0X05TXzIxQ3JlZGVudGlhbFBlcnNpc3RlbmNlRQogX19aTjdXZWJDb3JlMTBDcmVk
ZW50aWFsQzFFdgpAQCAtOTYwLDYgKzk2MSw3IEBAIF9fWk43V2ViQ29yZTZFZGl0b3I2aW5kZW50
RXYKIF9fWk43V2ViQ29yZTZFZGl0b3I3Q29tbWFuZEMxRXYKIF9fWk43V2ViQ29yZTZFZGl0b3I3
Y29tbWFuZEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTZFZGl0b3I3b3V0ZGVudEV2Citf
X1pON1dlYkNvcmU2RWRpdG9yMjZ0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZEV2CiBfX1pON1dl
YkNvcmU2SlNOb2RlNnNfaW5mb0UKIF9fWk43V2ViQ29yZTZSZWdpb241dW5pdGVFUktTMF8KIF9f
Wk43V2ViQ29yZTZSZWdpb244c3VidHJhY3RFUktTMF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUub3JkZXIgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDM1
NThhZTkuLjM1NTkzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtNDI4NTksMyArNDI4NTksNCBA
QCBfX1pMMzFwb2ludGVyQVZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uCiBfX1pON1dlYkNvcmVMMTln
UHJvcGVydHlXcmFwcGVyTWFwRQogX19aTjdXZWJDb3JlTDEyZ0Z1bmN0aW9uTWFwRQogX19aTjdX
ZWJDb3JlTDEyZ0Z1bmN0aW9uTWFwRQorX19aTjdXZWJDb3JlNkVkaXRvcjI2dG9nZ2xlT3Zlcndy
aXRlTW9kZUVuYWJsZWRFdgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAppbmRleCAyYjU4MjRiLi4xNGJkMDA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCkBAIC0zMTI0LDQgKzMxMjQsMTAgQEAgdm9pZCBFZGl0b3I6OmFwcGx5RGljdGF0
aW9uQWx0ZXJuYXRpdmVsdGVybmF0aXZlKGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmVTdHJpbmcK
ICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRp
dmUoYWx0ZXJuYXRpdmVTdHJpbmcpOwogfQogCit2b2lkIEVkaXRvcjo6dG9nZ2xlT3ZlcndyaXRl
TW9kZUVuYWJsZWQoKQoreworICAgIG1fb3ZlcndyaXRlTW9kZUVuYWJsZWQgPSAhbV9vdmVyd3Jp
dGVNb2RlRW5hYmxlZDsKKyAgICBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2V0U2hvdWxkU2hvd0Js
b2NrQ2FyZXQobV9vdmVyd3JpdGVNb2RlRW5hYmxlZCk7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA0NGYwZjM3Li5mODZjNTFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTI0Niw3ICsyNDYsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBtYXJrQW5kUmVwbGFjZUZvcihQYXNzUmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0PiwgY29uc3Qg
VmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKTsKIAogICAgIGJvb2wgaXNPdmVyd3JpdGVNb2Rl
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcndyaXRlTW9kZUVuYWJsZWQ7IH0KLSAgICB2
b2lkIHRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCkgeyBtX292ZXJ3cml0ZU1vZGVFbmFibGVk
ID0gIW1fb3ZlcndyaXRlTW9kZUVuYWJsZWQ7IH0KKyAgICB2b2lkIHRvZ2dsZU92ZXJ3cml0ZU1v
ZGVFbmFibGVkKCk7CiAKICNpZiBVU0UoQVBQS0lUKQogICAgIHZvaWQgdXBwZXJjYXNlV29yZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCBlNWQ0NjBj
Li5lYzczMjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApA
QCAtMTE0LDYgKzExNCw3IEBAIEZyYW1lU2VsZWN0aW9uOjpGcmFtZVNlbGVjdGlvbihGcmFtZSog
ZnJhbWUpCiAgICAgLCBtX2NhcmV0UGFpbnQodHJ1ZSkKICAgICAsIG1faXNDYXJldEJsaW5raW5n
U3VzcGVuZGVkKGZhbHNlKQogICAgICwgbV9mb2N1c2VkKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkg
JiYgZnJhbWUtPnBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRGcmFtZSgpID09IGZy
YW1lKQorICAgICwgbV9zaG91bGRTaG93QmxvY2tDYXJldChmYWxzZSkKIHsKICAgICBpZiAoc2hv
dWxkQWx3YXlzVXNlRGlyZWN0aW9uYWxTZWxlY3Rpb24obV9mcmFtZSkpCiAgICAgICAgIG1fc2Vs
ZWN0aW9uLnNldElzRGlyZWN0aW9uYWwodHJ1ZSk7CkBAIC0zMTIsNiArMzEzLDkgQEAgdm9pZCBG
cmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1Nl
bGVjdGlvbiwgU2V0U2VsZWMKICAgICBpZiAoIXMuaXNOb25lKCkgJiYgIShvcHRpb25zICYgRG9O
b3RTZXRGb2N1cykpCiAgICAgICAgIHNldEZvY3VzZWROb2RlSWZOZWVkZWQoKTsKIAorICAgIGlm
IChtX3Nob3VsZFNob3dCbG9ja0NhcmV0KQorICAgICAgICBtX2ZvcndhcmRQb3NpdGlvbkZvck92
ZXJ0eXBlTW9kZS5jbGVhcigpOworCiAgICAgaWYgKCEob3B0aW9ucyAmIERvTm90VXBkYXRlQXBw
ZWFyYW5jZSkpIHsKICNpZiBFTkFCTEUoVEVYVF9DQVJFVCkKICAgICAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CkBAIC0xNDQ2
LDcgKzE0NTAsOCBAQCB2b2lkIENhcmV0QmFzZTo6aW52YWxpZGF0ZUNhcmV0UmVjdChOb2RlKiBu
b2RlLCBib29sIGNhcmV0UmVjdENoYW5nZWQpCiAKIHZvaWQgRnJhbWVTZWxlY3Rpb246OnBhaW50
Q2FyZXQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KQogewotICAgIGlmIChtX3NlbGVjdGlv
bi5pc0NhcmV0KCkgJiYgbV9jYXJldFBhaW50KQorICAgIGJvb2wgc2hvdWxkUGFpbnRCbG9ja0Nh
cmV0ID0gbV9zaG91bGRTaG93QmxvY2tDYXJldCAmJiBtX2ZvcndhcmRQb3NpdGlvbkZvck92ZXJ0
eXBlTW9kZS5pc05vdE51bGwoKTsKKyAgICBpZiAobV9zZWxlY3Rpb24uaXNDYXJldCgpICYmIG1f
Y2FyZXRQYWludCAmJiAhc2hvdWxkUGFpbnRCbG9ja0NhcmV0KQogICAgICAgICBDYXJldEJhc2U6
OnBhaW50Q2FyZXQobV9zZWxlY3Rpb24uc3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpLCBjb250ZXh0
LCBwYWludE9mZnNldCwgY2xpcFJlY3QpOwogfQogCkBAIC0xNzUzLDExICsxNzU4LDE1IEBAIGlu
bGluZSBzdGF0aWMgYm9vbCBzaG91bGRTdG9wQmxpbmtpbmdEdWVUb1R5cGluZ0NvbW1hbmQoRnJh
bWUqIGZyYW1lKQogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKCkKIHsK
KyAgICBpZiAobV9zaG91bGRTaG93QmxvY2tDYXJldCAmJiBpc0NhcmV0KCkgJiYgbV9mb3J3YXJk
UG9zaXRpb25Gb3JPdmVydHlwZU1vZGUuaXNOdWxsKCkpCisgICAgICAgIG1fZm9yd2FyZFBvc2l0
aW9uRm9yT3ZlcnR5cGVNb2RlID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChDaGFyYWN0ZXJHcmFu
dWxhcml0eSk7CisKICNpZiBFTkFCTEUoVEVYVF9DQVJFVCkKICAgICBib29sIGNhcmV0UmVjdENo
YW5nZWRPckNsZWFyZWQgPSByZWNvbXB1dGVDYXJldFJlY3QoKTsKIAogICAgIGJvb2wgY2FyZXRC
cm93c2luZyA9IG1fZnJhbWUtPnNldHRpbmdzKCkgJiYgbV9mcmFtZS0+c2V0dGluZ3MoKS0+Y2Fy
ZXRCcm93c2luZ0VuYWJsZWQoKTsKLSAgICBib29sIHNob3VsZEJsaW5rID0gY2FyZXRJc1Zpc2li
bGUoKSAmJiBpc0NhcmV0KCkgJiYgKGlzQ29udGVudEVkaXRhYmxlKCkgfHwgY2FyZXRCcm93c2lu
Zyk7CisgICAgYm9vbCBzaG91bGRTdG9wQmxpbmtpbmdEdWVUb0Jsb2NrQ2FyZXQgPSBtX3Nob3Vs
ZFNob3dCbG9ja0NhcmV0ICYmIG1fc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBtX2ZvcndhcmRQb3Np
dGlvbkZvck92ZXJ0eXBlTW9kZS5pc05vdE51bGwoKTsKKyAgICBib29sIHNob3VsZEJsaW5rID0g
Y2FyZXRJc1Zpc2libGUoKSAmJiBpc0NhcmV0KCkgJiYgKGlzQ29udGVudEVkaXRhYmxlKCkgfHwg
Y2FyZXRCcm93c2luZykgJiYgIXNob3VsZFN0b3BCbGlua2luZ0R1ZVRvQmxvY2tDYXJldDsKIAog
ICAgIC8vIElmIHRoZSBjYXJldCBtb3ZlZCwgc3RvcCB0aGUgYmxpbmsgdGltZXIgc28gd2UgY2Fu
IHJlc3RhcnQgd2l0aCBhCiAgICAgLy8gYmxhY2sgY2FyZXQgaW4gdGhlIG5ldyBsb2NhdGlvbi4K
QEAgLTE3ODMsNyArMTc5Miw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnVwZGF0ZUFwcGVhcmFu
Y2UoKQogCiAgICAgLy8gQ29uc3RydWN0IGEgbmV3IFZpc2libGVTb2x1dGlvbiwgc2luY2UgbV9z
ZWxlY3Rpb24gaXMgbm90IG5lY2Vzc2FyaWx5IHZhbGlkLCBhbmQgdGhlIGZvbGxvd2luZyBzdGVw
cwogICAgIC8vIGFzc3VtZSBhIHZhbGlkIHNlbGVjdGlvbi4gU2VlIDxodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk1NjM+IGFuZCA8cmRhcjovL3Byb2JsZW0vMTAyMzI4
NjY+LgotICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKG1fc2VsZWN0aW9uLnZpc2libGVT
dGFydCgpLCBtX3NlbGVjdGlvbi52aXNpYmxlRW5kKCkpOworICAgIFZpc2libGVTZWxlY3Rpb24g
c2VsZWN0aW9uKG1fc2VsZWN0aW9uLnZpc2libGVTdGFydCgpLCBtX2ZvcndhcmRQb3NpdGlvbkZv
ck92ZXJ0eXBlTW9kZS5pc05vdE51bGwoKSA/IG1fZm9yd2FyZFBvc2l0aW9uRm9yT3ZlcnR5cGVN
b2RlIDogbV9zZWxlY3Rpb24udmlzaWJsZUVuZCgpKTsKIAogICAgIGlmICghc2VsZWN0aW9uLmlz
UmFuZ2UoKSkgewogICAgICAgICB2aWV3LT5jbGVhclNlbGVjdGlvbigpOwpAQCAtMjA1Niw2ICsy
MDY1LDE4IEBAIGlubGluZSBib29sIEZyYW1lU2VsZWN0aW9uOjp2aXN1YWxXb3JkTW92ZW1lbnRF
bmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnZpc3VhbFdv
cmRNb3ZlbWVudEVuYWJsZWQoKTsKIH0KIAordm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0U2hvdWxk
U2hvd0Jsb2NrQ2FyZXQoYm9vbCBzaG91bGRTaG93QmxvY2tDYXJldCkKK3sKKyAgICBtX3Nob3Vs
ZFNob3dCbG9ja0NhcmV0ID0gc2hvdWxkU2hvd0Jsb2NrQ2FyZXQ7CisKKyAgICBpZiAoIW1fc2hv
dWxkU2hvd0Jsb2NrQ2FyZXQpCisgICAgICAgIG1fZm9yd2FyZFBvc2l0aW9uRm9yT3ZlcnR5cGVN
b2RlLmNsZWFyKCk7CisKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKworICAgIHVwZGF0ZUFwcGVhcmFuY2UoKTsKK30KKwog
I2lmbmRlZiBOREVCVUcKIAogdm9pZCBGcmFtZVNlbGVjdGlvbjo6Zm9ybWF0Rm9yRGVidWdnZXIo
Y2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmgKaW5kZXggZjE5ZWY1Zi4uZTdkMTdkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaApAQCAtMjU1LDYgKzI1NSw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJldmVhbFNlbGVjdGlvbihjb25zdCBTY3JvbGxBbGlnbm1lbnQmID0gU2Nyb2xsQWxp
Z25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkLCBSZXZlYWxFeHRlbnRPcHRpb24gPSBEb05vdFJl
dmVhbEV4dGVudCk7CiAgICAgdm9pZCBzZXRTZWxlY3Rpb25Gcm9tTm9uZSgpOwogCisgICAgYm9v
bCBzaG91bGRTaG93QmxvY2tDYXJldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU2hvd0Jsb2Nr
Q2FyZXQ7IH0KKyAgICB2b2lkIHNldFNob3VsZFNob3dCbG9ja0NhcmV0KGJvb2wpOworCiBwcml2
YXRlOgogICAgIGVudW0gRVBvc2l0aW9uVHlwZSB7IFNUQVJULCBFTkQsIEJBU0UsIEVYVEVOVCB9
OwogCkBAIC0zMTEsNiArMzE0LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2FyZXRQYWludCA6
IDE7CiAgICAgYm9vbCBtX2lzQ2FyZXRCbGlua2luZ1N1c3BlbmRlZCA6IDE7CiAgICAgYm9vbCBt
X2ZvY3VzZWQgOiAxOworICAgIGJvb2wgbV9zaG91bGRTaG93QmxvY2tDYXJldCA6IDE7CisKKyAg
ICBWaXNpYmxlUG9zaXRpb24gbV9mb3J3YXJkUG9zaXRpb25Gb3JPdmVydHlwZU1vZGU7CiB9Owog
CiBpbmxpbmUgRWRpdGluZ1N0eWxlKiBGcmFtZVNlbGVjdGlvbjo6dHlwaW5nU3R5bGUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDE5Y2MyNzkuLmViODMxN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIyOTUsNiArMjI5NSwxOCBA
QCBkb3VibGUgSW50ZXJuYWxzOjpjbG9zZXN0VGltZVRvVGltZVJhbmdlcyhkb3VibGUgdGltZSwg
VGltZVJhbmdlcyogcmFuZ2VzKQogewogICAgIHJldHVybiByYW5nZXMtPm5lYXJlc3QodGltZSk7
CiB9CisKK1Bhc3NSZWZQdHI8Q2xpZW50UmVjdD4gSW50ZXJuYWxzOjpzZWxlY3Rpb25Cb3VuZHMo
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERv
Y3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkgfHwgIWRv
Y3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUND
RVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZSgpOworICAgIH0KKwor
ICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUoZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlv
bigpLT5ib3VuZHMoKSk7Cit9CisKICNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAppbmRleCA4MjkwNmU0Li5iN2I3M2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKQEAgLTMyOCw2ICszMjgsOCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGNsb3Nlc3RUaW1lVG9U
aW1lUmFuZ2VzKGRvdWJsZSB0aW1lLCBUaW1lUmFuZ2VzKik7CiAjZW5kaWYKIAorICAgIFBhc3NS
ZWZQdHI8Q2xpZW50UmVjdD4gc2VsZWN0aW9uQm91bmRzKEV4Y2VwdGlvbkNvZGUmKTsKKwogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQqKTsKICAgICBEb2N1bWVudCog
Y29udGV4dERvY3VtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
aW5kZXggZmExYjkxMi4uNzNhNTEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bApAQCAtMjg3LDQgKzI4Nyw2IEBACiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBkb3VibGUgY2xv
c2VzdFRpbWVUb1RpbWVSYW5nZXMoaW4gZG91YmxlIHRpbWUsIGluIFRpbWVSYW5nZXMgcmFuZ2Vz
KTsKIAogICAgIGJvb2xlYW4gaXNTZWxlY3RQb3B1cFZpc2libGUoaW4gTm9kZSBub2RlKTsKKwor
ICAgIENsaWVudFJlY3Qgc2VsZWN0aW9uQm91bmRzKCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBlZjk5NDMzLi5kYzRiYjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDEzLTA0LTMwICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgor
CisgICAgICAgIFNob3cgYSBibG9jayBjYXJldCBmb3Igb3ZlcnR5cGUgbW9kZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0ODE5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IHRocmVlIG1vcmUg
V2ViQ29yZSBzeW1ib2xzLgorCisgICAgICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0
R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluOgorCiAyMDEzLTA0LTI4ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFdpbmRvd3MgYnVpbGQgZml4LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0
b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dl
YktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgppbmRleCA2ZDNiYjJiLi5j
NjY3MzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4
cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgpA
QCAtMTU1LDYgKzE1NSw3IEBAIEVYUE9SVFMKICAgICAgICAgPz8xTm9kZVJlbmRlcmluZ0NvbnRl
eHRAV2ViQ29yZUBAUUFFQFhaCiAgICAgICAgID8/MVJhbmdlQFdlYkNvcmVAQFFBRUBYWgogICAg
ICAgICA/dG9Ob2RlQFdlYkNvcmVAQFlBUEFWTm9kZUAxQFZKU1ZhbHVlQEpTQ0BAQFoKKyAgICAg
ICAgPz8wQ2xpZW50UmVjdEBXZWJDb3JlQEBBQUVAQUJWRmxvYXRSZWN0QDFAQFoKICAgICAgICAg
Pz8wQ2xpZW50UmVjdEBXZWJDb3JlQEBBQUVAQUJWSW50UmVjdEAxQEBaCiAgICAgICAgID8/MENs
aWVudFJlY3RAV2ViQ29yZUBAQUFFQFhaCiAgICAgICAgID8/MENsaWVudFJlY3RMaXN0QFdlYkNv
cmVAQEFBRUBYWgpAQCAtMTg3LDYgKzE4OCw3IEBAIEVYUE9SVFMKICAgICAgICAgP2ZpbmRAU3Ry
aW5nSW1wbEBXVEZAQFFBRUlQQVYxMkBJQFoKICAgICAgICAgP2ZpbmRAU3RyaW5nSW1wbEBXVEZA
QFFBRUlQQVYxMkBAWgogICAgICAgICA/YWJzb2x1dGVDYXJldEJvdW5kc0BGcmFtZVNlbGVjdGlv
bkBXZWJDb3JlQEBRQUU/QVZJbnRSZWN0QDJAWFoKKyAgICAgICAgP2JvdW5kc0BGcmFtZVNlbGVj
dGlvbkBXZWJDb3JlQEBRQkU/QVZGbG9hdFJlY3RAMkBfTkBaCiAgICAgICAgID9mcm9tVVRGOEBT
dHJpbmdAV1RGQEBTQT9BVjEyQFBCRUBaCiAgICAgICAgID9mcm9tVVRGOFdpdGhMYXRpbjFGYWxs
YmFja0BTdHJpbmdAV1RGQEBTQT9BVjEyQFBCRUlAWgogICAgICAgICA/Z2FyYmFnZUNvbGxlY3RE
b2N1bWVudFJlc291cmNlc0BDYWNoZWRSZXNvdXJjZUxvYWRlckBXZWJDb3JlQEBRQUVYWFoKQEAg
LTMxNyw2ICszMTksNyBAQCBFWFBPUlRTCiAgICAgICAgID9zZWxlY3Rpb25TdGFydEhhc01hcmtl
ckZvckBFZGl0b3JAV2ViQ29yZUBAUUJFX05XNE1hcmtlclR5cGVARG9jdW1lbnRNYXJrZXJAMkBI
SEBaCiAgICAgICAgID9pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZEBFZGl0b3JAV2Vi
Q29yZUBAUUJFX05YWgogICAgICAgICA/dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmdARWRp
dG9yQFdlYkNvcmVAQFFBRVhYWgorICAgICAgICA/dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWRA
RWRpdG9yQFdlYkNvcmVAQFFBRVhYWgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAg
ICAgP3dlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50QERvY3VtZW50QFdlYkNvcmVA
QFFBRVhQQVZFbGVtZW50QDJAQFoKICAgICAgICAgP3dlYmtpdERpZEVudGVyRnVsbFNjcmVlbkZv
ckVsZW1lbnRARG9jdW1lbnRAV2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRAMkBAWgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCmluZGV4IDU4OTk2ODguLjk3Y2RjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAxMy0wNC0zMCAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNv
bT4KKworICAgICAgICBTaG93IGEgYmxvY2sgY2FyZXQgZm9yIG92ZXJ0eXBlIG1vZGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDgxOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9ydCB0aHJlZSBt
b3JlIFdlYkNvcmUgc3ltYm9scy4KKworICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0RXhw
b3J0cy5kZWYuaW46CisKIDIwMTMtMDQtMzAgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBz
aXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFJlcGxhY2UgIk9wdGlvbmFsIiBleHRlbmRlZCBh
dHRyaWJ1dGUgYnkgcHJvcGVyIFdlYiBJREwgIm9wdGlvbmFsIiBrZXl3b3JkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluIGIv
U291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgppbmRl
eCAwOTVhNjk2Li4zZjgyMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQu
dmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktp
dC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KQEAgLTE1Niw2ICsxNTYsNyBAQCBFWFBPUlRT
CiAgICAgICAgID8/MU5vZGVSZW5kZXJpbmdDb250ZXh0QFdlYkNvcmVAQFFBRUBYWgogICAgICAg
ICA/PzFSYW5nZUBXZWJDb3JlQEBRQUVAWFoKICAgICAgICAgP3RvTm9kZUBXZWJDb3JlQEBZQVBB
Vk5vZGVAMUBWSlNWYWx1ZUBKU0NAQEBaCisgICAgICAgID8/MENsaWVudFJlY3RAV2ViQ29yZUBA
QUFFQEFCVkZsb2F0UmVjdEAxQEBaCiAgICAgICAgID8/MENsaWVudFJlY3RAV2ViQ29yZUBAQUFF
QEFCVkludFJlY3RAMUBAWgogICAgICAgICA/PzBDbGllbnRSZWN0QFdlYkNvcmVAQEFBRUBYWgog
ICAgICAgICA/PzBDbGllbnRSZWN0TGlzdEBXZWJDb3JlQEBBQUVAWFoKQEAgLTE4OCw2ICsxODks
NyBAQCBFWFBPUlRTCiAgICAgICAgID9maW5kQFN0cmluZ0ltcGxAV1RGQEBRQUVJUEFWMTJASUBa
CiAgICAgICAgID9maW5kQFN0cmluZ0ltcGxAV1RGQEBRQUVJUEFWMTJAQFoKICAgICAgICAgP2Fi
c29sdXRlQ2FyZXRCb3VuZHNARnJhbWVTZWxlY3Rpb25AV2ViQ29yZUBAUUFFP0FWSW50UmVjdEAy
QFhaCisgICAgICAgID9ib3VuZHNARnJhbWVTZWxlY3Rpb25AV2ViQ29yZUBAUUJFP0FWRmxvYXRS
ZWN0QDJAX05AWgogICAgICAgICA/ZnJvbVVURjhAU3RyaW5nQFdURkBAU0E/QVYxMkBQQkVAWgog
ICAgICAgICA/ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2tAU3RyaW5nQFdURkBAU0E/QVYxMkBQ
QkVJQFoKICAgICAgICAgP2dhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNAQ2FjaGVkUmVz
b3VyY2VMb2FkZXJAV2ViQ29yZUBAUUFFWFhaCkBAIC0zMTgsNiArMzIwLDcgQEAgRVhQT1JUUwog
ICAgICAgICA/c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JARWRpdG9yQFdlYkNvcmVAQFFCRV9O
VzRNYXJrZXJUeXBlQERvY3VtZW50TWFya2VyQDJASEhAWgogICAgICAgICA/aXNDb250aW51b3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWRARWRpdG9yQFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP3Rv
Z2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nQEVkaXRvckBXZWJDb3JlQEBRQUVYWFoKKyAgICAg
ICAgP3RvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkQEVkaXRvckBXZWJDb3JlQEBRQUVYWFoKICNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgICAgID93ZWJraXRXaWxsRW50ZXJGdWxsU2Ny
ZWVuRm9yRWxlbWVudEBEb2N1bWVudEBXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAyQEBaCiAgICAg
ICAgID93ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50QERvY3VtZW50QFdlYkNvcmVA
QFFBRVhQQVZFbGVtZW50QDJAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9s
cy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDhmMGU2YjUu
Ljg2OGJkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysr
IGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMzExLDYgKzMxMSw5IEBAIF9a
Tks3V2ViQ29yZTROb2RlMjhkZXByZWNhdGVkU2hhZG93QW5jZXN0b3JOb2RlRXY7CiBfWk5LN1dl
YkNvcmU3SW50UmVjdDEwaW50ZXJzZWN0c0VSS1MwXzsKIF9aTks3V2ViQ29yZThEb2N1bWVudDEz
bm9kZXNGcm9tUmVjdEVpaWpqampqOwogX1pUVk43V2ViQ29yZTE0U3RhdGljTm9kZUxpc3RFOwor
X1pON1dlYkNvcmU2RWRpdG9yMjZ0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZEV2OworX1pOSzdX
ZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjZib3VuZHNFYjsKK19aTjdXZWJDb3JlMTBDbGllbnRSZWN0
QzFFUktOU185RmxvYXRSZWN0RTsKIAogbG9jYWw6CiBfWio7Ci0tIAoxLjcuMTAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200207</attachid>
            <date>2013-05-01 02:24:40 -0700</date>
            <delta_ts>2013-05-01 03:42:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-fix.patch</filename>
            <type>text/plain</type>
            <size>27968</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">RnJvbSA5NTE5ZTBjMzY1MmMxOWJjZDE2NTQwY2Y0NGJlZjEwZDlmZGQyY2ZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTZXJnaW8gVmlsbGFyIFNlbmluIDxzdmlsbGFyQGlnYWxpYS5j
b20+CkRhdGU6IFRodSwgMjUgQXByIDIwMTMgMTQ6MDQ6NTYgKzAyMDAKU3ViamVjdDogW1BBVENI
XSBmaXgKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDEwICsrCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMTYgKysKIC4uLi9ibG9jay1jdXJzb3Itb3ZlcnR5cGUtbW9kZS1leHBl
Y3RlZC50eHQgICAgICAgIHwgIDE1NiArKysrKysrKysrKysrKysrKysrKwogLi4uL3NlbGVjdGlv
bi9ibG9jay1jdXJzb3Itb3ZlcnR5cGUtbW9kZS5odG1sICAgICAgfCAgIDc0ICsrKysrKysrKysK
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0
MiArKysrKysKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgMiArCiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDEgKwogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwICAgICAg
ICAgICAgICAgICAgfCAgICA2ICsKIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggICAg
ICAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5jcHAgICAgICAgICAgfCAgIDIyICsrLQogU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5oICAgICAgICAgICAgfCAgICA0ICsKIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCAgICAgICAgICAgICAgIHwgICAxMiArKwogU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaCAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCAgICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKysKIC4u
Li9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4gICAgIHwgICAgMyAr
CiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MTEgKysKIC4uLi9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4g
IHwgICAgMyArCiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyICAgICAgICAgICAgICAg
ICAgICB8ICAgIDMgKwogMTkgZmlsZXMgY2hhbmdlZCwgMzc5IGluc2VydGlvbnMoKyksIDMgZGVs
ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vYmxvY2stY3Vyc29yLW92ZXJ0eXBlLW1vZGUtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAx
MDA2NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vYmxvY2stY3Vyc29yLW92ZXJ0eXBl
LW1vZGUuaHRtbAoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA0OGI2
M2U5Li41YWQyNDI0IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTMtMDUtMDEgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGln
YWxpYS5jb20+CisKKyAgICAgICAgU2hvdyBhIGJsb2NrIGN1cnNvciBpbiBvdmVydHlwZSBtb2Rl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQ4MTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJj
ZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6IGV4cG9ydCBzb21lIGV4dHJhIHN5bWJvbHMgZm9y
CisgICAgICAgIHRlc3RpbmcgcHVycG9zZXMuCisKIDIwMTMtMDQtMjkgIFphbiBEb2JlcnNlayAg
PHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIERpc2FibGUgU2hhZG93IERP
TSBmZWF0dXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggOTQ3MWRiZi4uNTFkYjg4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDEzLTA1LTAxICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgor
CisgICAgICAgIFNob3cgYSBibG9jayBjdXJzb3IgaW4gb3ZlcnR5cGUgbW9kZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0ODE5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IHRlc3QgY2FzZSBmb3Ig
dGhlIG5ldyBibG9jayBjdXJzb3IgdG8gYmUgdXNlZCBpbiBvdmVydHlwZQorICAgICAgICBtb2Rl
LiBUaGUgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSAxLXBpeGVsIGxvbmcgY2FyZXQgaXMgcmVwbGFj
ZWQgYnkKKyAgICAgICAgYSBzZWxlY3Rpb24gbGlrZSAxLWNoYXJhY3RlciBsb25nIGJsb2NrIGN1
cnNvciB3aGVuIGluIG92ZXJ0eXBlCisgICAgICAgIG1vZGUuIFRoaXMgdGVzdCBjb3ZlcnMgTFRS
IGFuZCBSVEwgdGV4dCBpbiBMVFIgYW5kIFJUTCBibG9ja3MgYW5kCisgICAgICAgIGJpZGkgdGV4
dC4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2Jsb2NrLWN1cnNvci1vdmVydHlwZS1t
b2RlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vYmxv
Y2stY3Vyc29yLW92ZXJ0eXBlLW1vZGUuaHRtbDogQWRkZWQuCisKIDIwMTMtMDQtMjkgIFphbiBE
b2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RL
IGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Js
b2NrLWN1cnNvci1vdmVydHlwZS1tb2RlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2Jsb2NrLWN1cnNvci1vdmVydHlwZS1tb2RlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmViMjNhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vYmxvY2stY3Vyc29yLW92ZXJ0eXBlLW1v
ZGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTU2IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQg
dGhlIGN1cnNvciBjb3ZlcnMgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIG92ZXJ3cml0dGVuIGlu
IG92ZXJ0eXBlIG1vZGUgaW5zdGVhZCBvZiBiZWluZyBwYWludGVkIGFzIGEgY2FyZXQgKDFweCB3
aWR0aCBiYXIpCisKK0FCQworQUJDCivXqdeT158KK9ep15PXnwor16nXk9efQUJDCivXqdeT159B
QkMKK1ZlcmlmeWluZyBibG9jayBjdXJzb3IgcG9zaXRpb24gYW5kIHdpZHRoIGZvciBlYWNoIHBv
c2l0aW9uIGluICdBQkMnIGluIGEgbHRyIGJsb2NrCitnZXRTZWxlY3Rpb24oKS5jb2xsYXBzZSh0
ZXh0Tm9kZSwgMCkKK1BBU1MgZ2V0U2VsZWN0aW9uKCkuaXNDb2xsYXBzZWQgaXMgdHJ1ZQorUEFT
UyBibG9ja0N1cnNvci53aWR0aCA+IDEgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuYWJzb2x1dGVD
YXJldEJvdW5kcygpLndpZHRoIGlzIDEKK2dldFNlbGVjdGlvbigpLmNvbGxhcHNlKHRleHROb2Rl
LCAxKQorUEFTUyBibG9ja0N1cnNvclN0YXJ0UG9zaXRpb25bMF0gPCBibG9ja0N1cnNvclN0YXJ0
UG9zaXRpb25bMV0gaXMgdHJ1ZQorUEFTUyBnZXRTZWxlY3Rpb24oKS5pc0NvbGxhcHNlZCBpcyB0
cnVlCitQQVNTIGJsb2NrQ3Vyc29yLndpZHRoID4gMSBpcyB0cnVlCitQQVNTIGludGVybmFscy5h
YnNvbHV0ZUNhcmV0Qm91bmRzKCkud2lkdGggaXMgMQorZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2Uo
dGV4dE5vZGUsIDIpCitQQVNTIGJsb2NrQ3Vyc29yU3RhcnRQb3NpdGlvblsxXSA8IGJsb2NrQ3Vy
c29yU3RhcnRQb3NpdGlvblsyXSBpcyB0cnVlCitQQVNTIGdldFNlbGVjdGlvbigpLmlzQ29sbGFw
c2VkIGlzIHRydWUKK1BBU1MgYmxvY2tDdXJzb3Iud2lkdGggPiAxIGlzIHRydWUKK1BBU1MgaW50
ZXJuYWxzLmFic29sdXRlQ2FyZXRCb3VuZHMoKS53aWR0aCBpcyAxCitnZXRTZWxlY3Rpb24oKS5j
b2xsYXBzZSh0ZXh0Tm9kZSwgMykKK1BBU1MgYmxvY2tDdXJzb3Iud2lkdGggaXMgMAorUEFTUyBp
bnRlcm5hbHMuYWJzb2x1dGVDYXJldEJvdW5kcygpLndpZHRoIGlzIDEKKworVmVyaWZ5aW5nIGJs
b2NrIGN1cnNvciBwb3NpdGlvbiBhbmQgd2lkdGggZm9yIGVhY2ggcG9zaXRpb24gaW4gJ0FCQycg
aW4gYSBydGwgYmxvY2sKK2dldFNlbGVjdGlvbigpLmNvbGxhcHNlKHRleHROb2RlLCAwKQorUEFT
UyBnZXRTZWxlY3Rpb24oKS5pc0NvbGxhcHNlZCBpcyB0cnVlCitQQVNTIGJsb2NrQ3Vyc29yLndp
ZHRoID4gMSBpcyB0cnVlCitQQVNTIGludGVybmFscy5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkud2lk
dGggaXMgMQorZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2UodGV4dE5vZGUsIDEpCitQQVNTIGJsb2Nr
Q3Vyc29yU3RhcnRQb3NpdGlvblswXSA8IGJsb2NrQ3Vyc29yU3RhcnRQb3NpdGlvblsxXSBpcyB0
cnVlCitQQVNTIGdldFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkIGlzIHRydWUKK1BBU1MgYmxvY2tD
dXJzb3Iud2lkdGggPiAxIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmFic29sdXRlQ2FyZXRCb3Vu
ZHMoKS53aWR0aCBpcyAxCitnZXRTZWxlY3Rpb24oKS5jb2xsYXBzZSh0ZXh0Tm9kZSwgMikKK1BB
U1MgYmxvY2tDdXJzb3JTdGFydFBvc2l0aW9uWzFdIDwgYmxvY2tDdXJzb3JTdGFydFBvc2l0aW9u
WzJdIGlzIHRydWUKK1BBU1MgZ2V0U2VsZWN0aW9uKCkuaXNDb2xsYXBzZWQgaXMgdHJ1ZQorUEFT
UyBibG9ja0N1cnNvci53aWR0aCA+IDEgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuYWJzb2x1dGVD
YXJldEJvdW5kcygpLndpZHRoIGlzIDEKK2dldFNlbGVjdGlvbigpLmNvbGxhcHNlKHRleHROb2Rl
LCAzKQorUEFTUyBibG9ja0N1cnNvci53aWR0aCBpcyAwCitQQVNTIGludGVybmFscy5hYnNvbHV0
ZUNhcmV0Qm91bmRzKCkud2lkdGggaXMgMQorCitWZXJpZnlpbmcgYmxvY2sgY3Vyc29yIHBvc2l0
aW9uIGFuZCB3aWR0aCBmb3IgZWFjaCBwb3NpdGlvbiBpbiAn16nXk9efJyBpbiBhIGx0ciBibG9j
aworZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2UodGV4dE5vZGUsIDApCitQQVNTIGdldFNlbGVjdGlv
bigpLmlzQ29sbGFwc2VkIGlzIHRydWUKK1BBU1MgYmxvY2tDdXJzb3Iud2lkdGggPiAxIGlzIHRy
dWUKK1BBU1MgaW50ZXJuYWxzLmFic29sdXRlQ2FyZXRCb3VuZHMoKS53aWR0aCBpcyAxCitnZXRT
ZWxlY3Rpb24oKS5jb2xsYXBzZSh0ZXh0Tm9kZSwgMSkKK1BBU1MgYmxvY2tDdXJzb3JTdGFydFBv
c2l0aW9uWzBdID4gYmxvY2tDdXJzb3JTdGFydFBvc2l0aW9uWzFdIGlzIHRydWUKK1BBU1MgZ2V0
U2VsZWN0aW9uKCkuaXNDb2xsYXBzZWQgaXMgdHJ1ZQorUEFTUyBibG9ja0N1cnNvci53aWR0aCA+
IDEgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuYWJzb2x1dGVDYXJldEJvdW5kcygpLndpZHRoIGlz
IDEKK2dldFNlbGVjdGlvbigpLmNvbGxhcHNlKHRleHROb2RlLCAyKQorUEFTUyBibG9ja0N1cnNv
clN0YXJ0UG9zaXRpb25bMV0gPiBibG9ja0N1cnNvclN0YXJ0UG9zaXRpb25bMl0gaXMgdHJ1ZQor
UEFTUyBnZXRTZWxlY3Rpb24oKS5pc0NvbGxhcHNlZCBpcyB0cnVlCitQQVNTIGJsb2NrQ3Vyc29y
LndpZHRoID4gMSBpcyB0cnVlCitQQVNTIGludGVybmFscy5hYnNvbHV0ZUNhcmV0Qm91bmRzKCku
d2lkdGggaXMgMQorZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2UodGV4dE5vZGUsIDMpCitQQVNTIGJs
b2NrQ3Vyc29yLndpZHRoIGlzIDAKK1BBU1MgaW50ZXJuYWxzLmFic29sdXRlQ2FyZXRCb3VuZHMo
KS53aWR0aCBpcyAxCisKK1ZlcmlmeWluZyBibG9jayBjdXJzb3IgcG9zaXRpb24gYW5kIHdpZHRo
IGZvciBlYWNoIHBvc2l0aW9uIGluICfXqdeT158nIGluIGEgcnRsIGJsb2NrCitnZXRTZWxlY3Rp
b24oKS5jb2xsYXBzZSh0ZXh0Tm9kZSwgMCkKK1BBU1MgZ2V0U2VsZWN0aW9uKCkuaXNDb2xsYXBz
ZWQgaXMgdHJ1ZQorUEFTUyBibG9ja0N1cnNvci53aWR0aCA+IDEgaXMgdHJ1ZQorUEFTUyBpbnRl
cm5hbHMuYWJzb2x1dGVDYXJldEJvdW5kcygpLndpZHRoIGlzIDEKK2dldFNlbGVjdGlvbigpLmNv
bGxhcHNlKHRleHROb2RlLCAxKQorUEFTUyBibG9ja0N1cnNvclN0YXJ0UG9zaXRpb25bMF0gPiBi
bG9ja0N1cnNvclN0YXJ0UG9zaXRpb25bMV0gaXMgdHJ1ZQorUEFTUyBnZXRTZWxlY3Rpb24oKS5p
c0NvbGxhcHNlZCBpcyB0cnVlCitQQVNTIGJsb2NrQ3Vyc29yLndpZHRoID4gMSBpcyB0cnVlCitQ
QVNTIGludGVybmFscy5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkud2lkdGggaXMgMQorZ2V0U2VsZWN0
aW9uKCkuY29sbGFwc2UodGV4dE5vZGUsIDIpCitQQVNTIGJsb2NrQ3Vyc29yU3RhcnRQb3NpdGlv
blsxXSA+IGJsb2NrQ3Vyc29yU3RhcnRQb3NpdGlvblsyXSBpcyB0cnVlCitQQVNTIGdldFNlbGVj
dGlvbigpLmlzQ29sbGFwc2VkIGlzIHRydWUKK1BBU1MgYmxvY2tDdXJzb3Iud2lkdGggPiAxIGlz
IHRydWUKK1BBU1MgaW50ZXJuYWxzLmFic29sdXRlQ2FyZXRCb3VuZHMoKS53aWR0aCBpcyAxCitn
ZXRTZWxlY3Rpb24oKS5jb2xsYXBzZSh0ZXh0Tm9kZSwgMykKK1BBU1MgYmxvY2tDdXJzb3Iud2lk
dGggaXMgMAorUEFTUyBpbnRlcm5hbHMuYWJzb2x1dGVDYXJldEJvdW5kcygpLndpZHRoIGlzIDEK
KworVmVyaWZ5aW5nIGJsb2NrIGN1cnNvciBwb3NpdGlvbiBhbmQgd2lkdGggZm9yIGVhY2ggcG9z
aXRpb24gaW4gJ9ep15PXn0FCQycgaW4gYSBsdHIgYmxvY2sKK2dldFNlbGVjdGlvbigpLmNvbGxh
cHNlKHRleHROb2RlLCAwKQorUEFTUyBnZXRTZWxlY3Rpb24oKS5pc0NvbGxhcHNlZCBpcyB0cnVl
CitQQVNTIGJsb2NrQ3Vyc29yLndpZHRoID4gMSBpcyB0cnVlCitQQVNTIGludGVybmFscy5hYnNv
bHV0ZUNhcmV0Qm91bmRzKCkud2lkdGggaXMgMQorZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2UodGV4
dE5vZGUsIDEpCitQQVNTIGJsb2NrQ3Vyc29yU3RhcnRQb3NpdGlvblswXSA+IGJsb2NrQ3Vyc29y
U3RhcnRQb3NpdGlvblsxXSBpcyB0cnVlCitQQVNTIGdldFNlbGVjdGlvbigpLmlzQ29sbGFwc2Vk
IGlzIHRydWUKK1BBU1MgYmxvY2tDdXJzb3Iud2lkdGggPiAxIGlzIHRydWUKK1BBU1MgaW50ZXJu
YWxzLmFic29sdXRlQ2FyZXRCb3VuZHMoKS53aWR0aCBpcyAxCitnZXRTZWxlY3Rpb24oKS5jb2xs
YXBzZSh0ZXh0Tm9kZSwgMikKK1BBU1MgYmxvY2tDdXJzb3JTdGFydFBvc2l0aW9uWzFdID4gYmxv
Y2tDdXJzb3JTdGFydFBvc2l0aW9uWzJdIGlzIHRydWUKK1BBU1MgZ2V0U2VsZWN0aW9uKCkuaXND
b2xsYXBzZWQgaXMgdHJ1ZQorUEFTUyBibG9ja0N1cnNvci53aWR0aCA+IDEgaXMgdHJ1ZQorUEFT
UyBpbnRlcm5hbHMuYWJzb2x1dGVDYXJldEJvdW5kcygpLndpZHRoIGlzIDEKK2dldFNlbGVjdGlv
bigpLmNvbGxhcHNlKHRleHROb2RlLCAzKQorUEFTUyBibG9ja0N1cnNvclN0YXJ0UG9zaXRpb25b
Ml0gPCBibG9ja0N1cnNvclN0YXJ0UG9zaXRpb25bM10gaXMgdHJ1ZQorUEFTUyBnZXRTZWxlY3Rp
b24oKS5pc0NvbGxhcHNlZCBpcyB0cnVlCitQQVNTIGJsb2NrQ3Vyc29yLndpZHRoID4gMSBpcyB0
cnVlCitQQVNTIGludGVybmFscy5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkud2lkdGggaXMgMQorZ2V0
U2VsZWN0aW9uKCkuY29sbGFwc2UodGV4dE5vZGUsIDQpCitQQVNTIGJsb2NrQ3Vyc29yU3RhcnRQ
b3NpdGlvblszXSA8IGJsb2NrQ3Vyc29yU3RhcnRQb3NpdGlvbls0XSBpcyB0cnVlCitQQVNTIGdl
dFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkIGlzIHRydWUKK1BBU1MgYmxvY2tDdXJzb3Iud2lkdGgg
PiAxIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmFic29sdXRlQ2FyZXRCb3VuZHMoKS53aWR0aCBp
cyAxCitnZXRTZWxlY3Rpb24oKS5jb2xsYXBzZSh0ZXh0Tm9kZSwgNSkKK1BBU1MgYmxvY2tDdXJz
b3JTdGFydFBvc2l0aW9uWzRdIDwgYmxvY2tDdXJzb3JTdGFydFBvc2l0aW9uWzVdIGlzIHRydWUK
K1BBU1MgZ2V0U2VsZWN0aW9uKCkuaXNDb2xsYXBzZWQgaXMgdHJ1ZQorUEFTUyBibG9ja0N1cnNv
ci53aWR0aCA+IDEgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuYWJzb2x1dGVDYXJldEJvdW5kcygp
LndpZHRoIGlzIDEKK2dldFNlbGVjdGlvbigpLmNvbGxhcHNlKHRleHROb2RlLCA2KQorUEFTUyBi
bG9ja0N1cnNvci53aWR0aCBpcyAwCitQQVNTIGludGVybmFscy5hYnNvbHV0ZUNhcmV0Qm91bmRz
KCkud2lkdGggaXMgMQorCitWZXJpZnlpbmcgYmxvY2sgY3Vyc29yIHBvc2l0aW9uIGFuZCB3aWR0
aCBmb3IgZWFjaCBwb3NpdGlvbiBpbiAn16nXk9efQUJDJyBpbiBhIHJ0bCBibG9jaworZ2V0U2Vs
ZWN0aW9uKCkuY29sbGFwc2UodGV4dE5vZGUsIDApCitQQVNTIGdldFNlbGVjdGlvbigpLmlzQ29s
bGFwc2VkIGlzIHRydWUKK1BBU1MgYmxvY2tDdXJzb3Iud2lkdGggPiAxIGlzIHRydWUKK1BBU1Mg
aW50ZXJuYWxzLmFic29sdXRlQ2FyZXRCb3VuZHMoKS53aWR0aCBpcyAxCitnZXRTZWxlY3Rpb24o
KS5jb2xsYXBzZSh0ZXh0Tm9kZSwgMSkKK1BBU1MgYmxvY2tDdXJzb3JTdGFydFBvc2l0aW9uWzBd
ID4gYmxvY2tDdXJzb3JTdGFydFBvc2l0aW9uWzFdIGlzIHRydWUKK1BBU1MgZ2V0U2VsZWN0aW9u
KCkuaXNDb2xsYXBzZWQgaXMgdHJ1ZQorUEFTUyBibG9ja0N1cnNvci53aWR0aCA+IDEgaXMgdHJ1
ZQorUEFTUyBpbnRlcm5hbHMuYWJzb2x1dGVDYXJldEJvdW5kcygpLndpZHRoIGlzIDEKK2dldFNl
bGVjdGlvbigpLmNvbGxhcHNlKHRleHROb2RlLCAyKQorUEFTUyBibG9ja0N1cnNvclN0YXJ0UG9z
aXRpb25bMV0gPiBibG9ja0N1cnNvclN0YXJ0UG9zaXRpb25bMl0gaXMgdHJ1ZQorUEFTUyBnZXRT
ZWxlY3Rpb24oKS5pc0NvbGxhcHNlZCBpcyB0cnVlCitQQVNTIGJsb2NrQ3Vyc29yLndpZHRoID4g
MSBpcyB0cnVlCitQQVNTIGludGVybmFscy5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkud2lkdGggaXMg
MQorZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2UodGV4dE5vZGUsIDMpCitQQVNTIGJsb2NrQ3Vyc29y
U3RhcnRQb3NpdGlvblsyXSA+IGJsb2NrQ3Vyc29yU3RhcnRQb3NpdGlvblszXSBpcyB0cnVlCitQ
QVNTIGdldFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkIGlzIHRydWUKK1BBU1MgYmxvY2tDdXJzb3Iu
d2lkdGggPiAxIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmFic29sdXRlQ2FyZXRCb3VuZHMoKS53
aWR0aCBpcyAxCitnZXRTZWxlY3Rpb24oKS5jb2xsYXBzZSh0ZXh0Tm9kZSwgNCkKK1BBU1MgYmxv
Y2tDdXJzb3JTdGFydFBvc2l0aW9uWzNdIDwgYmxvY2tDdXJzb3JTdGFydFBvc2l0aW9uWzRdIGlz
IHRydWUKK1BBU1MgZ2V0U2VsZWN0aW9uKCkuaXNDb2xsYXBzZWQgaXMgdHJ1ZQorUEFTUyBibG9j
a0N1cnNvci53aWR0aCA+IDEgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuYWJzb2x1dGVDYXJldEJv
dW5kcygpLndpZHRoIGlzIDEKK2dldFNlbGVjdGlvbigpLmNvbGxhcHNlKHRleHROb2RlLCA1KQor
UEFTUyBibG9ja0N1cnNvclN0YXJ0UG9zaXRpb25bNF0gPCBibG9ja0N1cnNvclN0YXJ0UG9zaXRp
b25bNV0gaXMgdHJ1ZQorUEFTUyBnZXRTZWxlY3Rpb24oKS5pc0NvbGxhcHNlZCBpcyB0cnVlCitQ
QVNTIGJsb2NrQ3Vyc29yLndpZHRoID4gMSBpcyB0cnVlCitQQVNTIGludGVybmFscy5hYnNvbHV0
ZUNhcmV0Qm91bmRzKCkud2lkdGggaXMgMQorZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2UodGV4dE5v
ZGUsIDYpCitQQVNTIGJsb2NrQ3Vyc29yLndpZHRoIGlzIDAKK1BBU1MgaW50ZXJuYWxzLmFic29s
dXRlQ2FyZXRCb3VuZHMoKS53aWR0aCBpcyAxCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9ibG9jay1jdXJzb3Itb3ZlcnR5cGUtbW9kZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vYmxvY2stY3Vyc29yLW92ZXJ0eXBlLW1vZGUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjE0MDIyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vYmxvY2stY3Vyc29yLW92ZXJ0eXBlLW1vZGUu
aHRtbApAQCAtMCwwICsxLDc0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi9lZGl0aW5nLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyIg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzxzdHlsZT4KK2JvZHkgeworICAgIGZv
bnQ6IDIwcHggQWhlbTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZSA9ICJmb250
OiAyMHB4IEFoZW0iPgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHRoZSBjdXJzb3IgY292ZXJz
IHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSBvdmVyd3JpdHRlbiBpbiBvdmVydHlwZSBtb2RlIGlu
c3RlYWQgb2YgYmVpbmcgcGFpbnRlZCBhcyBhIGNhcmV0ICgxcHggd2lkdGggYmFyKTwvcD4KKzxk
aXYgaWQ9Imx0cnRleHQiIHN0eWxlPSJkaXJlY3Rpb246IGx0cjsiIGNvbnRlbnRlZGl0YWJsZT0i
dHJ1ZSI+QUJDPC9kaXY+Cis8ZGl2IGlkPSJsdHJ0ZXh0LXJ0bCIgc3R5bGU9ImRpcmVjdGlvbjog
cnRsOyIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5BQkM8L2Rpdj4KKzxkaXYgaWQ9InJ0bHRleHQi
IHN0eWxlPSJkaXJlY3Rpb246IGx0cjsiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+JiN4MDVlOTsm
I3gwNWQzOyYjeDA1ZGY7PC9kaXY+Cis8ZGl2IGlkPSJydGx0ZXh0LXJ0bCIgc3R5bGU9ImRpcmVj
dGlvbjogcnRsOyIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj4mI3gwNWU5OyYjeDA1ZDM7JiN4MDVk
Zjs8L2Rpdj4KKzxkaXYgaWQ9Im1peGVkIiBzdHlsZT0iZGlyZWN0aW9uOiBsdHI7IiBjb250ZW50
ZWRpdGFibGU9InRydWUiPiYjeDA1ZTk7JiN4MDVkMzsmI3gwNWRmO0FCQzwvZGl2PgorPGRpdiBp
ZD0ibWl4ZWQtcnRsIiBzdHlsZT0iZGlyZWN0aW9uOiBydGw7IiBjb250ZW50ZWRpdGFibGU9InRy
dWUiPiYjeDA1ZTk7JiN4MDVkMzsmI3gwNWRmO0FCQzwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorCit2YXIgYmxvY2tDdXJzb3JTdGFydFBvc2l0aW9u
OwordmFyIGJsb2NrQ3Vyc29yOwordmFyIHRleHROb2RlOworCitmdW5jdGlvbiB2ZXJpZnlCbG9j
a0N1cnNvckxlZnRQb3NpdGlvbkFuZFdpZHRoKGVsZW1lbnRJZCwgZXhwZWN0ZWQpCit7CisgICAg
YmxvY2tDdXJzb3JTdGFydFBvc2l0aW9uID0gbmV3IEFycmF5KCk7CisKKyAgICB2YXIgZWxlbWVu
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CisgICAgdGV4dE5vZGUgPSBl
bGVtZW50LmZpcnN0Q2hpbGQ7CisgICAgZGVidWcoIlZlcmlmeWluZyBibG9jayBjdXJzb3IgcG9z
aXRpb24gYW5kIHdpZHRoIGZvciBlYWNoIHBvc2l0aW9uIGluICciICsgdGV4dE5vZGUubm9kZVZh
bHVlICsgIicgaW4gYSAiICsgZWxlbWVudC5zdHlsZS5kaXJlY3Rpb24gKyAiIGJsb2NrIik7CisK
KyAgICBmb3IgKHZhciBpPTA7IGkgPCB0ZXh0Tm9kZS5sZW5ndGg7IGkrKykgeworICAgICAgICBl
dmFsQW5kTG9nKCJnZXRTZWxlY3Rpb24oKS5jb2xsYXBzZSh0ZXh0Tm9kZSwgIitpKyIpIik7CisK
KyAgICAgICAgYmxvY2tDdXJzb3IgPSBpbnRlcm5hbHMuc2VsZWN0aW9uQm91bmRzKCk7CisgICAg
ICAgIGJsb2NrQ3Vyc29yU3RhcnRQb3NpdGlvbi5wdXNoKGJsb2NrQ3Vyc29yLmxlZnQpOworCisJ
aWYgKGkgPiAwICYmIGkgPCB0ZXh0Tm9kZS5sZW5ndGgpIHsKKyAgICAgICAgICAgIGlmIChleHBl
Y3RlZFtpLTFdID09ICI+IikKKyAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUoImJsb2NrQ3Vy
c29yU3RhcnRQb3NpdGlvblsiKyhpLTEpKyJdID4gYmxvY2tDdXJzb3JTdGFydFBvc2l0aW9uWyIr
aSsiXSIpOworCSAgICBlbHNlCisgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJibG9ja0N1
cnNvclN0YXJ0UG9zaXRpb25bIisoaS0xKSsiXSA8IGJsb2NrQ3Vyc29yU3RhcnRQb3NpdGlvblsi
K2krIl0iKTsKKwl9CisKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJnZXRTZWxlY3Rpb24oKS5pc0Nv
bGxhcHNlZCIpOworCXNob3VsZEJlVHJ1ZSgiYmxvY2tDdXJzb3Iud2lkdGggPiAxIik7CisgICAg
ICAgIHNob3VsZEJlKCJpbnRlcm5hbHMuYWJzb2x1dGVDYXJldEJvdW5kcygpLndpZHRoIiwgIjEi
KTsKKyAgICB9CisKKyAgICBldmFsQW5kTG9nKCJnZXRTZWxlY3Rpb24oKS5jb2xsYXBzZSh0ZXh0
Tm9kZSwgIitpKyIpIik7CisgICAgYmxvY2tDdXJzb3IgPSBpbnRlcm5hbHMuc2VsZWN0aW9uQm91
bmRzKCk7CisgICAgc2hvdWxkQmVaZXJvKCJibG9ja0N1cnNvci53aWR0aCIpOworICAgIHNob3Vs
ZEJlKCJpbnRlcm5hbHMuYWJzb2x1dGVDYXJldEJvdW5kcygpLndpZHRoIiwgIjEiKTsKKyAgICBk
ZWJ1ZygiIik7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCisgICAgaW50ZXJuYWxz
LnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKGRvY3VtZW50KTsKKworICAgIHZlcmlmeUJsb2Nr
Q3Vyc29yTGVmdFBvc2l0aW9uQW5kV2lkdGgoImx0cnRleHQiLCBbIjwiLCAiPCIsICI8Il0pOwor
ICAgIHZlcmlmeUJsb2NrQ3Vyc29yTGVmdFBvc2l0aW9uQW5kV2lkdGgoImx0cnRleHQtcnRsIiwg
WyI8IiwgIjwiLCAiPCJdKTsKKyAgICB2ZXJpZnlCbG9ja0N1cnNvckxlZnRQb3NpdGlvbkFuZFdp
ZHRoKCJydGx0ZXh0IiwgWyI+IiwgIj4iLCAiPiJdKTsKKyAgICB2ZXJpZnlCbG9ja0N1cnNvckxl
ZnRQb3NpdGlvbkFuZFdpZHRoKCJydGx0ZXh0LXJ0bCIsIFsiPiIsICI+IiwgIj4iXSk7CisgICAg
dmVyaWZ5QmxvY2tDdXJzb3JMZWZ0UG9zaXRpb25BbmRXaWR0aCgibWl4ZWQiLCBbIj4iLCAiPiIs
ICI8IiwgIjwiLCAiPCJdKTsKKyAgICB2ZXJpZnlCbG9ja0N1cnNvckxlZnRQb3NpdGlvbkFuZFdp
ZHRoKCJtaXhlZC1ydGwiLCBbIj4iLCAiPiIsICI+IiwgIjwiLCAiPCJdKTsKK30KKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyIg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBi
MzE3YmE3Li4yODE2ZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTMtMDUtMDEg
IFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAgICAgU2hv
dyBhIGJsb2NrIGN1cnNvciBpbiBvdmVydHlwZSBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQ4MTkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9ibG9jay1j
dXJzb3Itb3ZlcnR5cGUtbW9kZS5odG1sCisKKyAgICAgICAgT3ZlcnR5cGUgbW9kZSB3aWxsIHVz
ZSBibG9jayBjdXJzb3IgaW5zdGVhZCBvZiBhIGNhcmV0IHRvCisgICAgICAgIGhpZ2hsaWdodCB0
aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgcmVwbGFjZWQuIEl0IHdpbGwgZnVsbHkgY292ZXIKKyAg
ICAgICAgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIHJlcGxhY2VkIChleGNlcHQgYXQgdGhlIGVu
ZCBvZiBhIGxpbmUKKyAgICAgICAgd2hlcmUgdGhlIHVzdWFsIGJsaW5raW5nIGNhcmV0IHdpbGwg
YmUgc2hvd24pLgorCisgICAgICAgIFRoaXMgbmV3IGJsb2NrIGN1cnNvciBpcyBpbnRlcm5hbGx5
IGltcGxlbWVudGVkIGFzIGEgc2VsZWN0aW9uCisgICAgICAgIChub3QgZXhwb3NlZCB0byBKYXZh
U2NyaXB0KSBiZWNhdXNlIHRoZSBzZWxlY3Rpb24gY29kZSBrbm93cyBob3cKKyAgICAgICAgdG8g
ZGVhbCB3aXRoIGJpZGkgdGV4dC4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnQg
c3ltYm9scyBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOiBE
aXR0by4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKTogQWRkZWQgYSBjYWxsIHRvCisgICAg
ICAgIEZyYW1lTG9hZGVyOjpzZXRTaG91bGRTaG93QmxvY2tDdXJzb3IuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAoRWRpdG9yKToKKyAg
ICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpGcmFtZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNl
bGVjdGlvbjo6dXBkYXRlQXBwZWFyYW5jZSk6IFVzZSBhIDEtY2hhcmFjdGVyCisgICAgICAgIGxv
bmcgc2VsZWN0aW9uIHRvIHBhaW50IHRoZSBjdXJzb3IgaW4gb3ZlcnR5cGUgbW9kZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZXRTaG91bGRTaG93QmxvY2tDdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNob3VsZFNob3dCbG9ja0N1cnNvcik6
CisgICAgICAgIChGcmFtZVNlbGVjdGlvbik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNl
bGVjdGlvbkJvdW5kcyk6IEFkZGVkIGEgbmV3IG1ldGhvZCB3aGljaAorICAgICAgICByZXR1cm5z
IHRoZSBJbnRSZWN0IGlzc3VlZCBieSBGcmFtZVNlbGVjdGlvbjo6Ym91bmRzKCkuCisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuaDogRGl0dG8uCisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuaWRsOiBEaXR0by4KKwogMjAxMy0wNC0zMCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6
QHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmVwbGFjZSAiT3B0aW9uYWwiIGV4dGVuZGVk
IGF0dHJpYnV0ZSBieSBwcm9wZXIgV2ViIElETCAib3B0aW9uYWwiIGtleXdvcmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KaW5kZXggYjYwYjMwYS4uYTE0NWM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAg
LTY4LDYgKzY4LDcgQEAgX19aTjNXVEYxMkF0b21pY1N0cmluZzNhZGRFUEsxMF9fQ0ZTdHJpbmcK
IF9fWk4zV1RGNlN0cmluZ0MxRVA4TlNTdHJpbmcKIF9fWk4zV1RGNlN0cmluZ0MxRVBLMTBfX0NG
U3RyaW5nCiBfX1pON1dlYkNvcmUxMENsaWVudFJlY3RDMUVSS05TXzdJbnRSZWN0RQorX19aTjdX
ZWJDb3JlMTBDbGllbnRSZWN0QzFFUktOU185RmxvYXRSZWN0RQogX19aTjdXZWJDb3JlMTBDbGll
bnRSZWN0QzFFdgogX19aTjdXZWJDb3JlMTBDcmVkZW50aWFsQzFFUktOM1dURjZTdHJpbmdFUzRf
TlNfMjFDcmVkZW50aWFsUGVyc2lzdGVuY2VFCiBfX1pON1dlYkNvcmUxMENyZWRlbnRpYWxDMUV2
CkBAIC05NjAsNiArOTYxLDcgQEAgX19aTjdXZWJDb3JlNkVkaXRvcjZpbmRlbnRFdgogX19aTjdX
ZWJDb3JlNkVkaXRvcjdDb21tYW5kQzFFdgogX19aTjdXZWJDb3JlNkVkaXRvcjdjb21tYW5kRVJL
TjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlNkVkaXRvcjdvdXRkZW50RXYKK19fWk43V2ViQ29y
ZTZFZGl0b3IyNnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkRXYKIF9fWk43V2ViQ29yZTZKU05v
ZGU2c19pbmZvRQogX19aTjdXZWJDb3JlNlJlZ2lvbjV1bml0ZUVSS1MwXwogX19aTjdXZWJDb3Jl
NlJlZ2lvbjhzdWJ0cmFjdEVSS1MwXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggMzU1OGFlOS4uMzU1
OTM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC00Mjg1OSwzICs0Mjg1OSw0IEBAIF9fWkwzMXBv
aW50ZXJBVk1lZGlhVHlwZUNsb3NlZENhcHRpb24KIF9fWk43V2ViQ29yZUwxOWdQcm9wZXJ0eVdy
YXBwZXJNYXBFCiBfX1pON1dlYkNvcmVMMTJnRnVuY3Rpb25NYXBFCiBfX1pON1dlYkNvcmVMMTJn
RnVuY3Rpb25NYXBFCitfX1pON1dlYkNvcmU2RWRpdG9yMjZ0b2dnbGVPdmVyd3JpdGVNb2RlRW5h
YmxlZEV2ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCmluZGV4IDJiNTgyNGIuLjMyNzdjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTMxMjQsNCArMzEyNCwxMCBAQCB2b2lkIEVkaXRvcjo6YXBwbHlEaWN0YXRpb25BbHRlcm5h
dGl2ZWx0ZXJuYXRpdmUoY29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZVN0cmluZwogICAgIG1fYWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+YXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZShhbHRlcm5h
dGl2ZVN0cmluZyk7CiB9CiAKK3ZvaWQgRWRpdG9yOjp0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxl
ZCgpCit7CisgICAgbV9vdmVyd3JpdGVNb2RlRW5hYmxlZCA9ICFtX292ZXJ3cml0ZU1vZGVFbmFi
bGVkOworICAgIGZyYW1lKCktPnNlbGVjdGlvbigpLT5zZXRTaG91bGRTaG93QmxvY2tDdXJzb3Io
bV9vdmVyd3JpdGVNb2RlRW5hYmxlZCk7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA0NGYwZjM3Li5mODZjNTFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmgKQEAgLTI0Niw3ICsyNDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrQW5k
UmVwbGFjZUZvcihQYXNzUmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0PiwgY29uc3QgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4mKTsKIAogICAgIGJvb2wgaXNPdmVyd3JpdGVNb2RlRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fb3ZlcndyaXRlTW9kZUVuYWJsZWQ7IH0KLSAgICB2b2lkIHRvZ2ds
ZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCkgeyBtX292ZXJ3cml0ZU1vZGVFbmFibGVkID0gIW1fb3Zl
cndyaXRlTW9kZUVuYWJsZWQ7IH0KKyAgICB2b2lkIHRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVk
KCk7CiAKICNpZiBVU0UoQVBQS0lUKQogICAgIHZvaWQgdXBwZXJjYXNlV29yZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCBlNWQ0NjBjLi43NGFmNjJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTE0LDYg
KzExNCw3IEBAIEZyYW1lU2VsZWN0aW9uOjpGcmFtZVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAg
ICAgLCBtX2NhcmV0UGFpbnQodHJ1ZSkKICAgICAsIG1faXNDYXJldEJsaW5raW5nU3VzcGVuZGVk
KGZhbHNlKQogICAgICwgbV9mb2N1c2VkKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUt
PnBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRGcmFtZSgpID09IGZyYW1lKQorICAg
ICwgbV9zaG91bGRTaG93QmxvY2tDdXJzb3IoZmFsc2UpCiB7CiAgICAgaWYgKHNob3VsZEFsd2F5
c1VzZURpcmVjdGlvbmFsU2VsZWN0aW9uKG1fZnJhbWUpKQogICAgICAgICBtX3NlbGVjdGlvbi5z
ZXRJc0RpcmVjdGlvbmFsKHRydWUpOwpAQCAtMTc1MywxMSArMTc1NCwxOSBAQCBpbmxpbmUgc3Rh
dGljIGJvb2wgc2hvdWxkU3RvcEJsaW5raW5nRHVlVG9UeXBpbmdDb21tYW5kKEZyYW1lKiBmcmFt
ZSkKIAogdm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQXBwZWFyYW5jZSgpCiB7CisgICAgLy8g
VGhlIG92ZXJ3cml0ZU1vZGVTZWxlY3Rpb24gd2lsbCBwYWludCBhIGJsb2NrIGluc3RlYWQgb2Yg
YSBjYXJldCBpbiBvdmVydHlwZSBtb2RlIHVubGVzcyB0aGUgY2FyZXQgaXMgYXQgdGhlIGVuZAor
ICAgIC8vIG9mIGEgbGluZSAoaW4gdGhpcyBjYXNlIHRoZSAibm9ybWFsIiBGcmFtZVNlbGVjdGlv
biB3aWxsIHBhaW50IHRoZSBjYXJldCBhcyB1c3VhbCkuCisgICAgVmlzaWJsZVBvc2l0aW9uIGZv
cndhcmRQb3NpdGlvbjsKKyAgICBpZiAobV9zaG91bGRTaG93QmxvY2tDdXJzb3IgJiYgbV9zZWxl
Y3Rpb24uaXNDYXJldCgpKSB7CisgICAgICAgIGZvcndhcmRQb3NpdGlvbiA9IG1vZGlmeUV4dGVu
ZGluZ0ZvcndhcmQoQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICBtX2NhcmV0UGFpbnQg
PSBmb3J3YXJkUG9zaXRpb24uaXNOdWxsKCk7CisgICAgfQorCiAjaWYgRU5BQkxFKFRFWFRfQ0FS
RVQpCiAgICAgYm9vbCBjYXJldFJlY3RDaGFuZ2VkT3JDbGVhcmVkID0gcmVjb21wdXRlQ2FyZXRS
ZWN0KCk7CiAKICAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBtX2ZyYW1lLT5zZXR0aW5ncygpICYm
IG1fZnJhbWUtPnNldHRpbmdzKCktPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7Ci0gICAgYm9vbCBz
aG91bGRCbGluayA9IGNhcmV0SXNWaXNpYmxlKCkgJiYgaXNDYXJldCgpICYmIChpc0NvbnRlbnRF
ZGl0YWJsZSgpIHx8IGNhcmV0QnJvd3NpbmcpOworICAgIGJvb2wgc2hvdWxkQmxpbmsgPSBjYXJl
dElzVmlzaWJsZSgpICYmIGlzQ2FyZXQoKSAmJiAoaXNDb250ZW50RWRpdGFibGUoKSB8fCBjYXJl
dEJyb3dzaW5nKSAmJiBmb3J3YXJkUG9zaXRpb24uaXNOdWxsKCk7CiAKICAgICAvLyBJZiB0aGUg
Y2FyZXQgbW92ZWQsIHN0b3AgdGhlIGJsaW5rIHRpbWVyIHNvIHdlIGNhbiByZXN0YXJ0IHdpdGgg
YQogICAgIC8vIGJsYWNrIGNhcmV0IGluIHRoZSBuZXcgbG9jYXRpb24uCkBAIC0xNzgzLDcgKzE3
OTIsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKCkKIAogICAgIC8v
IENvbnN0cnVjdCBhIG5ldyBWaXNpYmxlU29sdXRpb24sIHNpbmNlIG1fc2VsZWN0aW9uIGlzIG5v
dCBuZWNlc3NhcmlseSB2YWxpZCwgYW5kIHRoZSBmb2xsb3dpbmcgc3RlcHMKICAgICAvLyBhc3N1
bWUgYSB2YWxpZCBzZWxlY3Rpb24uIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY5NTYzPiBhbmQgPHJkYXI6Ly9wcm9ibGVtLzEwMjMyODY2Pi4KLSAgICBWaXNp
YmxlU2VsZWN0aW9uIHNlbGVjdGlvbihtX3NlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgbV9zZWxl
Y3Rpb24udmlzaWJsZUVuZCgpKTsKKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbihtX3Nl
bGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgZm9yd2FyZFBvc2l0aW9uLmlzTm90TnVsbCgpID8gZm9y
d2FyZFBvc2l0aW9uIDogbV9zZWxlY3Rpb24udmlzaWJsZUVuZCgpKTsKIAogICAgIGlmICghc2Vs
ZWN0aW9uLmlzUmFuZ2UoKSkgewogICAgICAgICB2aWV3LT5jbGVhclNlbGVjdGlvbigpOwpAQCAt
MjA1Niw2ICsyMDY1LDE1IEBAIGlubGluZSBib29sIEZyYW1lU2VsZWN0aW9uOjp2aXN1YWxXb3Jk
TW92ZW1lbnRFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gc2V0dGluZ3MgJiYgc2V0dGluZ3Mt
PnZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoKTsKIH0KIAordm9pZCBGcmFtZVNlbGVjdGlvbjo6
c2V0U2hvdWxkU2hvd0Jsb2NrQ3Vyc29yKGJvb2wgc2hvdWxkU2hvd0Jsb2NrQ3Vyc29yKQorewor
ICAgIG1fc2hvdWxkU2hvd0Jsb2NrQ3Vyc29yID0gc2hvdWxkU2hvd0Jsb2NrQ3Vyc29yOworCisg
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzKCk7CisKKyAgICB1cGRhdGVBcHBlYXJhbmNlKCk7Cit9CisKICNpZm5kZWYgTkRFQlVHCiAK
IHZvaWQgRnJhbWVTZWxlY3Rpb246OmZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5z
aWduZWQgbGVuZ3RoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5o
CmluZGV4IGYxOWVmNWYuLmE2ZmI2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmgKQEAgLTI1NSw2ICsyNTUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXZlYWxTZWxl
Y3Rpb24oY29uc3QgU2Nyb2xsQWxpZ25tZW50JiA9IFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50
ZXJJZk5lZWRlZCwgUmV2ZWFsRXh0ZW50T3B0aW9uID0gRG9Ob3RSZXZlYWxFeHRlbnQpOwogICAg
IHZvaWQgc2V0U2VsZWN0aW9uRnJvbU5vbmUoKTsKIAorICAgIGJvb2wgc2hvdWxkU2hvd0Jsb2Nr
Q3Vyc29yKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTaG93QmxvY2tDdXJzb3I7IH0KKyAgICB2
b2lkIHNldFNob3VsZFNob3dCbG9ja0N1cnNvcihib29sKTsKKwogcHJpdmF0ZToKICAgICBlbnVt
IEVQb3NpdGlvblR5cGUgeyBTVEFSVCwgRU5ELCBCQVNFLCBFWFRFTlQgfTsKIApAQCAtMzExLDYg
KzMxNCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhcmV0UGFpbnQgOiAxOwogICAgIGJvb2wg
bV9pc0NhcmV0QmxpbmtpbmdTdXNwZW5kZWQgOiAxOwogICAgIGJvb2wgbV9mb2N1c2VkIDogMTsK
KyAgICBib29sIG1fc2hvdWxkU2hvd0Jsb2NrQ3Vyc29yIDogMTsKIH07CiAKIGlubGluZSBFZGl0
aW5nU3R5bGUqIEZyYW1lU2VsZWN0aW9uOjp0eXBpbmdTdHlsZSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMTljYzI3OS4uZWI4MzE3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjI5NSw2ICsyMjk1LDE4IEBAIGRvdWJsZSBJbnRl
cm5hbHM6OmNsb3Nlc3RUaW1lVG9UaW1lUmFuZ2VzKGRvdWJsZSB0aW1lLCBUaW1lUmFuZ2VzKiBy
YW5nZXMpCiB7CiAgICAgcmV0dXJuIHJhbmdlcy0+bmVhcmVzdCh0aW1lKTsKIH0KKworUGFzc1Jl
ZlB0cjxDbGllbnRSZWN0PiBJbnRlcm5hbHM6OnNlbGVjdGlvbkJvdW5kcyhFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKKyAg
ICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSB8fCAhZG9jdW1lbnQtPmZyYW1l
KCktPnNlbGVjdGlvbigpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAg
ICAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKCk7CisgICAgfQorCisgICAgcmV0dXJuIENs
aWVudFJlY3Q6OmNyZWF0ZShkb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPmJvdW5kcygp
KTsKK30KKwogI2VuZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDgy
OTA2ZTQuLmI3YjczYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMzI4LDYg
KzMyOCw4IEBAIHB1YmxpYzoKICAgICBkb3VibGUgY2xvc2VzdFRpbWVUb1RpbWVSYW5nZXMoZG91
YmxlIHRpbWUsIFRpbWVSYW5nZXMqKTsKICNlbmRpZgogCisgICAgUGFzc1JlZlB0cjxDbGllbnRS
ZWN0PiBzZWxlY3Rpb25Cb3VuZHMoRXhjZXB0aW9uQ29kZSYpOworCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IEludGVybmFscyhEb2N1bWVudCopOwogICAgIERvY3VtZW50KiBjb250ZXh0RG9jdW1l
bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBmYTFiOTEy
Li43M2E1MTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0yODcsNCAr
Mjg3LDYgQEAKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIGRvdWJsZSBjbG9zZXN0VGltZVRvVGlt
ZVJhbmdlcyhpbiBkb3VibGUgdGltZSwgaW4gVGltZVJhbmdlcyByYW5nZXMpOwogCiAgICAgYm9v
bGVhbiBpc1NlbGVjdFBvcHVwVmlzaWJsZShpbiBOb2RlIG5vZGUpOworCisgICAgQ2xpZW50UmVj
dCBzZWxlY3Rpb25Cb3VuZHMoKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGVmOTk0MzMuLjk5N2YyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDUtMDEg
IFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAgICAgU2hv
dyBhIGJsb2NrIGN1cnNvciBpbiBvdmVydHlwZSBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQ4MTkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvcnQgdGhyZWUgbW9yZSBXZWJDb3JlIHN5bWJv
bHMuCisKKyAgICAgICAgKiBXZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2Vi
S2l0RXhwb3J0cy5kZWYuaW46CisKIDIwMTMtMDQtMjggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgV2luZG93cyBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBv
cnRzLmRlZi5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2Vu
ZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCmluZGV4IDZkM2JiMmIuLmM2NjczNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9y
L1dlYktpdEV4cG9ydHMuZGVmLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ov
V2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCkBAIC0xNTUsNiArMTU1
LDcgQEAgRVhQT1JUUwogICAgICAgICA/PzFOb2RlUmVuZGVyaW5nQ29udGV4dEBXZWJDb3JlQEBR
QUVAWFoKICAgICAgICAgPz8xUmFuZ2VAV2ViQ29yZUBAUUFFQFhaCiAgICAgICAgID90b05vZGVA
V2ViQ29yZUBAWUFQQVZOb2RlQDFAVkpTVmFsdWVASlNDQEBAWgorICAgICAgICA/PzBDbGllbnRS
ZWN0QFdlYkNvcmVAQEFBRUBBQlZGbG9hdFJlY3RAMUBAWgogICAgICAgICA/PzBDbGllbnRSZWN0
QFdlYkNvcmVAQEFBRUBBQlZJbnRSZWN0QDFAQFoKICAgICAgICAgPz8wQ2xpZW50UmVjdEBXZWJD
b3JlQEBBQUVAWFoKICAgICAgICAgPz8wQ2xpZW50UmVjdExpc3RAV2ViQ29yZUBAQUFFQFhaCkBA
IC0xODcsNiArMTg4LDcgQEAgRVhQT1JUUwogICAgICAgICA/ZmluZEBTdHJpbmdJbXBsQFdURkBA
UUFFSVBBVjEyQElAWgogICAgICAgICA/ZmluZEBTdHJpbmdJbXBsQFdURkBAUUFFSVBBVjEyQEBa
CiAgICAgICAgID9hYnNvbHV0ZUNhcmV0Qm91bmRzQEZyYW1lU2VsZWN0aW9uQFdlYkNvcmVAQFFB
RT9BVkludFJlY3RAMkBYWgorICAgICAgICA/Ym91bmRzQEZyYW1lU2VsZWN0aW9uQFdlYkNvcmVA
QFFCRT9BVkZsb2F0UmVjdEAyQF9OQFoKICAgICAgICAgP2Zyb21VVEY4QFN0cmluZ0BXVEZAQFNB
P0FWMTJAUEJFQFoKICAgICAgICAgP2Zyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrQFN0cmluZ0BX
VEZAQFNBP0FWMTJAUEJFSUBaCiAgICAgICAgID9nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3Vy
Y2VzQENhY2hlZFJlc291cmNlTG9hZGVyQFdlYkNvcmVAQFFBRVhYWgpAQCAtMzE3LDYgKzMxOSw3
IEBAIEVYUE9SVFMKICAgICAgICAgP3NlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yQEVkaXRvckBX
ZWJDb3JlQEBRQkVfTlc0TWFya2VyVHlwZUBEb2N1bWVudE1hcmtlckAyQEhIQFoKICAgICAgICAg
P2lzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkQEVkaXRvckBXZWJDb3JlQEBRQkVfTlha
CiAgICAgICAgID90b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZ0BFZGl0b3JAV2ViQ29yZUBA
UUFFWFhaCisgICAgICAgID90b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZEBFZGl0b3JAV2ViQ29y
ZUBAUUFFWFhaCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgICAgICA/d2Via2l0V2ls
bEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnRARG9jdW1lbnRAV2ViQ29yZUBAUUFFWFBBVkVsZW1l
bnRAMkBAWgogICAgICAgICA/d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEBEb2N1
bWVudEBXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAyQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNTg5
OTY4OC4uM2UxZjEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEzLTA1
LTAxICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAg
IFNob3cgYSBibG9jayBjdXJzb3IgaW4gb3ZlcnR5cGUgbW9kZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0ODE5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IHRocmVlIG1vcmUgV2ViQ29yZSBz
eW1ib2xzLgorCisgICAgICAgICogV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbjoK
KwogMjAxMy0wNC0zMCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgUmVwbGFjZSAiT3B0aW9uYWwiIGV4dGVuZGVkIGF0dHJpYnV0ZSBieSBw
cm9wZXIgV2ViIElETCAib3B0aW9uYWwiIGtleXdvcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCmluZGV4IDA5NWE2OTYuLjNm
ODIxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0
RXhwb3J0cy5kZWYuaW4KKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJL
aXRFeHBvcnRzLmRlZi5pbgpAQCAtMTU2LDYgKzE1Niw3IEBAIEVYUE9SVFMKICAgICAgICAgPz8x
Tm9kZVJlbmRlcmluZ0NvbnRleHRAV2ViQ29yZUBAUUFFQFhaCiAgICAgICAgID8/MVJhbmdlQFdl
YkNvcmVAQFFBRUBYWgogICAgICAgICA/dG9Ob2RlQFdlYkNvcmVAQFlBUEFWTm9kZUAxQFZKU1Zh
bHVlQEpTQ0BAQFoKKyAgICAgICAgPz8wQ2xpZW50UmVjdEBXZWJDb3JlQEBBQUVAQUJWRmxvYXRS
ZWN0QDFAQFoKICAgICAgICAgPz8wQ2xpZW50UmVjdEBXZWJDb3JlQEBBQUVAQUJWSW50UmVjdEAx
QEBaCiAgICAgICAgID8/MENsaWVudFJlY3RAV2ViQ29yZUBAQUFFQFhaCiAgICAgICAgID8/MENs
aWVudFJlY3RMaXN0QFdlYkNvcmVAQEFBRUBYWgpAQCAtMTg4LDYgKzE4OSw3IEBAIEVYUE9SVFMK
ICAgICAgICAgP2ZpbmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlQQVYxMkBJQFoKICAgICAgICAgP2Zp
bmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlQQVYxMkBAWgogICAgICAgICA/YWJzb2x1dGVDYXJldEJv
dW5kc0BGcmFtZVNlbGVjdGlvbkBXZWJDb3JlQEBRQUU/QVZJbnRSZWN0QDJAWFoKKyAgICAgICAg
P2JvdW5kc0BGcmFtZVNlbGVjdGlvbkBXZWJDb3JlQEBRQkU/QVZGbG9hdFJlY3RAMkBfTkBaCiAg
ICAgICAgID9mcm9tVVRGOEBTdHJpbmdAV1RGQEBTQT9BVjEyQFBCRUBaCiAgICAgICAgID9mcm9t
VVRGOFdpdGhMYXRpbjFGYWxsYmFja0BTdHJpbmdAV1RGQEBTQT9BVjEyQFBCRUlAWgogICAgICAg
ICA/Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc0BDYWNoZWRSZXNvdXJjZUxvYWRlckBX
ZWJDb3JlQEBRQUVYWFoKQEAgLTMxOCw2ICszMjAsNyBAQCBFWFBPUlRTCiAgICAgICAgID9zZWxl
Y3Rpb25TdGFydEhhc01hcmtlckZvckBFZGl0b3JAV2ViQ29yZUBAUUJFX05XNE1hcmtlclR5cGVA
RG9jdW1lbnRNYXJrZXJAMkBISEBaCiAgICAgICAgID9pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5n
RW5hYmxlZEBFZGl0b3JAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/dG9nZ2xlQ29udGludW91
c1NwZWxsQ2hlY2tpbmdARWRpdG9yQFdlYkNvcmVAQFFBRVhYWgorICAgICAgICA/dG9nZ2xlT3Zl
cndyaXRlTW9kZUVuYWJsZWRARWRpdG9yQFdlYkNvcmVAQFFBRVhYWgogI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKICAgICAgICAgP3dlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50
QERvY3VtZW50QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQFoKICAgICAgICAgP3dlYmtpdERp
ZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnRARG9jdW1lbnRAV2ViQ29yZUBAUUFFWFBBVkVsZW1l
bnRAMkBAWgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1Nv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggOGYwZTZiNS4uODY4YmRlNCAxMDA2
NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0
b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0zMTEsNiArMzExLDkgQEAgX1pOSzdXZWJDb3JlNE5v
ZGUyOGRlcHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5vZGVFdjsKIF9aTks3V2ViQ29yZTdJbnRSZWN0
MTBpbnRlcnNlY3RzRVJLUzBfOwogX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0
RWlpampqamo7CiBfWlRWTjdXZWJDb3JlMTRTdGF0aWNOb2RlTGlzdEU7CitfWk43V2ViQ29yZTZF
ZGl0b3IyNnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkRXY7CitfWk5LN1dlYkNvcmUxNEZyYW1l
U2VsZWN0aW9uNmJvdW5kc0ViOworX1pON1dlYkNvcmUxMENsaWVudFJlY3RDMUVSS05TXzlGbG9h
dFJlY3RFOwogCiBsb2NhbDoKIF9aKjsKLS0gCjEuNy4xMC40Cgo=
</data>
<flag name="review"
          id="221696"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>