<?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>77872</bug_id>
          
          <creation_ts>2012-02-06 07:27:30 -0800</creation_ts>
          <short_desc>[chromium] Add support for starting page/scale animations on CC impl thread from WebViewImpl</short_desc>
          <delta_ts>2012-02-09 21:52:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="W. James MacLean">wjmaclean</reporter>
          <assigned_to name="W. James MacLean">wjmaclean</assigned_to>
          <cc>aelias</cc>
    
    <cc>backer</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jamesr</cc>
    
    <cc>levin+threading</cc>
    
    <cc>rjkroege</cc>
    
    <cc>sadrul</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>549984</commentid>
    <comment_count>0</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-06 07:27:30 -0800</bug_when>
    <thetext>[chromium] Add support for WebInputEvent::GestureDoubleTap on CC impl thread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549986</commentid>
    <comment_count>1</comment_count>
      <attachid>125641</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-06 07:28:50 -0800</bug_when>
    <thetext>Created attachment 125641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550011</commentid>
    <comment_count>2</comment_count>
      <attachid>125641</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 08:10:46 -0800</bug_when>
    <thetext>Comment on attachment 125641
Patch

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

New failing tests:
compositing/checkerboard.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550014</commentid>
    <comment_count>3</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-06 08:15:18 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 125641 [details])
&gt; Attachment 125641 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/11429431
&gt; 
&gt; New failing tests:
&gt; compositing/checkerboard.html

This failure is due to border texel issues on the root layer. This issue has been around a long time, but it would be nice if it wasn&apos;t a blocker for enable GESTURE events on DoubleTap zoom. Without the border texels on, text on the root layer looks awful during zoom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550341</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-06 15:19:53 -0800</bug_when>
    <thetext>What platforms set ENABLE(GESTURE_EVENTS)?


I don&apos;t think it&apos;s OK to turn border texels on for the root layer indiscriminately since it changes the way we render text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550363</commentid>
    <comment_count>5</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-02-06 15:37:47 -0800</bug_when>
    <thetext>Hmm, I don&apos;t think this is the right way to pipe through double-taps.

I discussed this offline with Darin a month ago and we agreed on the following:
- Input events should be kept simple and shouldn&apos;t contain data that was computed from the document contents like target page scale.  A double-tap event should just contain its screen position.
- When threaded compositing is enabled, all input events should follow the normal input filter to go directly into the impl thread.
- Therefore, the way to implement it looks like this: &quot;raw&quot; double-tap event goes to impl thread.  Impl thread specifies didNotHandle (as it has insufficient information to start the animation) and it falls back to WebKit thread input handling.  WebKit thread now calls getBlockBounds() etc, and calls a method on WebCompositorImpl that schedules a callback on the impl thread that starts a pageScaleAnimation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550387</commentid>
    <comment_count>6</comment_count>
      <attachid>125641</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-06 16:15:38 -0800</bug_when>
    <thetext>Comment on attachment 125641
Patch

Alex&apos;s summary matches my understanding. I think this has to be main-thread triggered in order to correctly find the touch target, etc - there just isn&apos;t anything we can do on the impl thread without help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550943</commentid>
    <comment_count>7</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-07 06:41:51 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 125641 [details])
&gt; Alex&apos;s summary matches my understanding. I think this has to be main-thread triggered in order to correctly find the touch target, etc - there just isn&apos;t anything we can do on the impl thread without help.

OK. I was assuming the events coming in had already been processed on the main-thread, so I&apos;ll revise this as suggested and re-submit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552185</commentid>
    <comment_count>8</comment_count>
      <attachid>126095</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-08 09:06:33 -0800</bug_when>
    <thetext>Created attachment 126095
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552188</commentid>
    <comment_count>9</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-08 09:08:00 -0800</bug_when>
    <thetext>Alexandre: I still need to figure out

1) Why I&apos;m getting scroll asserts in single thread mode,
2) what&apos;s the correct way to compute the input anchor point.

Suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552234</commentid>
    <comment_count>10</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-02-08 10:09:14 -0800</bug_when>
    <thetext>For 2), note that startPageScaleAnimation supports receiving either an anchor or an target scroll position, based on a boolean.  When double-tap zooming out to minimum scale, the on-screen double-tap position is used as anchor.  When double-tap zooming in onto a div, the target scroll position is used instead and some code in CCPageScaleAnimation.cpp solves some linear equations to infer the anchor from the starting and target scroll positions.

The way computeScaleAndScrollForHitRect is currently written in https://bugs.webkit.org/show_bug.cgi?id=72909 , it doesn&apos;t modify the scroll position if double-tap zooming out.  So you could initialize the scroll position to (-1, -1), then if it remains the same after computeScaleAndScrollForHitRect, set the anchorPoint boolean to true and use the double-tap position; otherwise set anchorPoint boolean to false and use the scroll position it gives you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552250</commentid>
    <comment_count>11</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-08 10:22:46 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; For 2), note that startPageScaleAnimation supports receiving either an anchor or an target scroll position, based on a boolean.  When double-tap zooming out to minimum scale, the on-screen double-tap position is used as anchor.  When double-tap zooming in onto a div, the target scroll position is used instead and some code in CCPageScaleAnimation.cpp solves some linear equations to infer the anchor from the starting and target scroll positions.
&gt; 
&gt; The way computeScaleAndScrollForHitRect is currently written in https://bugs.webkit.org/show_bug.cgi?id=72909 , it doesn&apos;t modify the scroll position if double-tap zooming out.  So you could initialize the scroll position to (-1, -1), then if it remains the same after computeScaleAndScrollForHitRect, set the anchorPoint boolean to true and use the double-tap position; otherwise set anchorPoint boolean to false and use the scroll position it gives you.

Hmm, ok. Then I&apos;ll need to plumb the anchorPoint Boolean through.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552343</commentid>
    <comment_count>12</comment_count>
      <attachid>126127</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-08 11:45:30 -0800</bug_when>
    <thetext>Created attachment 126127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552345</commentid>
    <comment_count>13</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-08 11:48:01 -0800</bug_when>
    <thetext>Revised patch to:

1) plumb useAnchor bool through, end to end

2) defer computation of scroll until Varun&apos;s second patch (the one after https://bugs.webkit.org/show_bug.cgi?id=72909 that ties all this together in handleGestureEvent()).

Since this is primarily a plumbing patch, what constitutes a reasonable unit test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552355</commentid>
    <comment_count>14</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-02-08 11:56:12 -0800</bug_when>
    <thetext>Looks good, except that it seems that you could get rid of CCLayerTreeHostImpl::zoomAnimation and just call startPageScaleAnimation directly.

For testing, adding one to CCLayerTreeHostTest would work.  Take a look at CCLayerTreeHostTestSetVisible for a somewhat similar example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552359</commentid>
    <comment_count>15</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-08 11:58:57 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Looks good, except that it seems that you could get rid of CCLayerTreeHostImpl::zoomAnimation and just call startPageScaleAnimation directly.
&gt; 
&gt; For testing, adding one to CCLayerTreeHostTest would work.  Take a look at CCLayerTreeHostTestSetVisible for a somewhat similar example.

Will do ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553271</commentid>
    <comment_count>16</comment_count>
      <attachid>126326</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-09 10:15:18 -0800</bug_when>
    <thetext>Created attachment 126326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553329</commentid>
    <comment_count>17</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-02-09 11:03:50 -0800</bug_when>
    <thetext>LGTM except for some details about the point parameters.  Since the meaning depends on the boolean, use a more generic name like &quot;targetPosition&quot;.  Also, I think it should be possible to store an IntSize directly in the callback object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553370</commentid>
    <comment_count>18</comment_count>
      <attachid>126340</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-09 11:44:22 -0800</bug_when>
    <thetext>Created attachment 126340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553371</commentid>
    <comment_count>19</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-09 11:45:25 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; LGTM except for some details about the point parameters.  Since the meaning depends on the boolean, use a more generic name like &quot;targetPosition&quot;.  Also, I think it should be possible to store an IntSize directly in the callback object.

Done.

Style checker sorta forced me to do a bit of cleanup in CrossThreadCopier.h ... tried to do something reasonable without changing too much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553374</commentid>
    <comment_count>20</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-02-09 11:49:57 -0800</bug_when>
    <thetext>LGTM.  James, could you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553382</commentid>
    <comment_count>21</comment_count>
      <attachid>126340</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-09 11:54:35 -0800</bug_when>
    <thetext>Comment on attachment 126340
Patch

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

I really don&apos;t like inventing new terminology for zoom animation when we already have page scale and page scale animations.  Stick to the terminology we already have.

&gt; Source/WebCore/platform/CrossThreadCopier.h:44
&gt; +class IntSize;

this whole file is indented incorrectly. I don&apos;t think fixing the indentation for just a few lines at the top is an improvement - i&apos;d rather be consistent within this file than have some lines do one thing and some lines do another.

I would stick to the existing indentation in this case.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h:191
&gt; +    void zoomAnimation(const IntSize&amp;, bool, float, double);

you need to name parameters when the meaning is not clear from the types. I&apos;ve no idea what the size, bool, float, and double could mean from this signature.

For time-based parameters please tag the name with the unit as well (seconds or milliseconds). If it&apos;s milliseconds, use an integer type. I think we want to converge on floating-point seconds everywhere if possible.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCProxy.h:60
&gt; +    virtual void zoomAnimation(const IntSize&amp;, bool, float, double) = 0;

again here, you need to provide useful parameter names in the header

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:146
&gt; +void CCThreadProxy::requestZoomAnimationOnImplThread(IntSize targetPosition, bool useAnchor, float scale, double duration)
&gt; +{
&gt; +    ASSERT(CCProxy::isImplThread());
&gt; +    if (m_layerTreeHostImpl)
&gt; +        m_layerTreeHostImpl-&gt;startPageScaleAnimation(targetPosition, useAnchor, scale, monotonicallyIncreasingTime() * 1000.0, duration);

why do we have to have inconsistent naming? what&apos;s wrong with calling it pageScaleAnimation everywhere?

&gt; Source/WebKit/chromium/src/WebViewImpl.h:319
&gt; +    void zoomAnimation(const WebCore::IntPoint&amp;, bool, float);

again - these parameters need useful names

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:958
&gt; +    static void requestZoomAnimation(void * self)

no space between &quot;void&quot; and &quot;*&quot;, it&apos;s a &quot;void*&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553387</commentid>
    <comment_count>22</comment_count>
      <attachid>126340</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-02-09 12:01:32 -0800</bug_when>
    <thetext>Comment on attachment 126340
Patch

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

&gt; Source/WebCore/platform/CrossThreadCopier.h:45
&gt; +class IntRect;

btw, IntSize should be after IntRect (and when you do that you won&apos;t get a style error here since you won&apos;t be modifying the first line).

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:630
&gt; +        m_layerTreeHost-&gt;zoomAnimation(IntSize(scroll.x(), scroll.y()), useAnchor, newScale, 500.0);

As an outsider, if I looked at this code the 500.0 is a total mystery to me (what it is and why that value was chosen).

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:941
&gt; +// This test verifies that zoomAnimation events propagate correctly from CCLayerTreeHost to

Consider removing &quot;This test&quot;

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:948
&gt; +        {

bad indent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553447</commentid>
    <comment_count>23</comment_count>
      <attachid>126356</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-09 13:17:06 -0800</bug_when>
    <thetext>Created attachment 126356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553453</commentid>
    <comment_count>24</comment_count>
      <attachid>126359</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-09 13:21:46 -0800</bug_when>
    <thetext>Created attachment 126359
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553454</commentid>
    <comment_count>25</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-09 13:24:16 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; Created an attachment (id=126359) [details]
&gt; Patch

Sorry about the patch-spam ... missed a comment.

(In reply to comment #21)
&gt; (From update of attachment 126340 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126340&amp;action=review
&gt; 
&gt; I really don&apos;t like inventing new terminology for zoom animation when we already have page scale and page scale animations.  Stick to the terminology we already have.

OK, done.

&gt; &gt; Source/WebCore/platform/CrossThreadCopier.h:44
&gt; &gt; +class IntSize;
&gt; 
&gt; this whole file is indented incorrectly. I don&apos;t think fixing the indentation for just a few lines at the top is an improvement - i&apos;d rather be consistent within this file than have some lines do one thing and some lines do another.
&gt; 
&gt; I would stick to the existing indentation in this case.

Done.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h:191
&gt; &gt; +    void zoomAnimation(const IntSize&amp;, bool, float, double);
&gt; 
&gt; you need to name parameters when the meaning is not clear from the types. I&apos;ve no idea what the size, bool, float, and double could mean from this signature.

Done.

&gt; For time-based parameters please tag the name with the unit as well (seconds or milliseconds). If it&apos;s milliseconds, use an integer type. I think we want to converge on floating-point seconds everywhere if possible.

Done.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCProxy.h:60
&gt; &gt; +    virtual void zoomAnimation(const IntSize&amp;, bool, float, double) = 0;
&gt; 
&gt; again here, you need to provide useful parameter names in the header

Done.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:146
&gt; &gt; +void CCThreadProxy::requestZoomAnimationOnImplThread(IntSize targetPosition, bool useAnchor, float scale, double duration)
&gt; &gt; +{
&gt; &gt; +    ASSERT(CCProxy::isImplThread());
&gt; &gt; +    if (m_layerTreeHostImpl)
&gt; &gt; +        m_layerTreeHostImpl-&gt;startPageScaleAnimation(targetPosition, useAnchor, scale, monotonicallyIncreasingTime() * 1000.0, duration);
&gt; 
&gt; why do we have to have inconsistent naming? what&apos;s wrong with calling it pageScaleAnimation everywhere?

Done.

&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.h:319
&gt; &gt; +    void zoomAnimation(const WebCore::IntPoint&amp;, bool, float);
&gt; 
&gt; again - these parameters need useful names

Done.

&gt; &gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:958
&gt; &gt; +    static void requestZoomAnimation(void * self)
&gt; 
&gt; no space between &quot;void&quot; and &quot;*&quot;, it&apos;s a &quot;void*&quot;

Done.

(In reply to comment #22)
&gt;&gt; (From update of attachment 126340 [details])
&gt;&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126340&amp;action=review

&gt;&gt; Source/WebCore/platform/CrossThreadCopier.h:45
&gt;&gt; +class IntRect;

&gt;btw, IntSize should be after IntRect (and when you do that you won&apos;t get a &gt;style error here since you won&apos;t be modifying the first line).

Alphabet memory failure - fixed!

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:630
&gt;&gt; +        m_layerTreeHost-&gt;zoomAnimation(IntSize(scroll.x(), scroll.y()), useAnchor, newScale, 500.0);
&gt;
&gt;As an outsider, if I looked at this code the 500.0 is a total mystery to me &gt;(what it is and why that value was chosen).

Fixed.

&gt;&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:941
&gt;&gt; +// This test verifies that zoomAnimation events propagate correctly from CCLayerTreeHost to
&gt;
&gt;Consider removing &quot;This test&quot;

Done.

&gt;&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:948
&gt;&gt; +        {
&gt;
&gt;bad indent

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553476</commentid>
    <comment_count>26</comment_count>
      <attachid>126359</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-09 13:48:58 -0800</bug_when>
    <thetext>Comment on attachment 126359
Patch

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

R=me. Could probably use a better short description in the ChangeLogs

&gt; Source/WebCore/ChangeLog:3
&gt; +        [chromium] Add support for WebInputEvent::GestureDoubleTap on CC impl thread

this seems out of date now, this patch seems to be hooking up a path from WebViewImpl to the impl thread to run a page scale animation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553483</commentid>
    <comment_count>27</comment_count>
      <attachid>126359</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-09 13:55:45 -0800</bug_when>
    <thetext>Comment on attachment 126359
Patch

I think you should fix the ChangeLogs before landing. They&apos;re highly misleading in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553487</commentid>
    <comment_count>28</comment_count>
      <attachid>126368</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-09 14:05:08 -0800</bug_when>
    <thetext>Created attachment 126368
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553814</commentid>
    <comment_count>29</comment_count>
      <attachid>126368</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-09 21:52:12 -0800</bug_when>
    <thetext>Comment on attachment 126368
Patch for landing

Clearing flags on attachment: 126368

Committed r107357: &lt;http://trac.webkit.org/changeset/107357&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553815</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-09 21:52:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125641</attachid>
            <date>2012-02-06 07:28:50 -0800</date>
            <delta_ts>2012-02-08 09:06:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77872-20120206102848.patch</filename>
            <type>text/plain</type>
            <size>9872</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmVmNjU5OTFkYjhjNmQx
ODQ3ZjIyZWJjYmZjODM5YmM3ZGY4YzdlMC4uOTdhNzUxMTVkYjNjMTZjMjcwNmVkNGY2NWY1YjYy
YmI4N2NmNTIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAyLTA2ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEFkZCBzdXBwb3J0IGZvciBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRG91YmxlVGFwIG9uIEND
IGltcGwgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03Nzg3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEludGVncmF0aW9uIHVuaXQgdGVzdCBhZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUaWxlZExheWVyQ2hyb21pdW06OnNldElzTm9uQ29tcG9zaXRlZENvbnRlbnQpOgorCiAyMDEy
LTAyLTAyICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR3RrXSBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQoKSBzb21ldGltZXMgZmFpbHMg
dG8gcHJvdmlkZSB0aGUgY29ycmVjdCBsaW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDMyM2M0Mjk5YWY3ODJkYmZkNGU1YTQ2YWY4YzYxYzdjNzljYzlhMTEuLjRhMTdhNWNhZTBhOTVi
NGYyZGFlNmMyMjgyNTMyOWI2MzI0NWQ3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTItMDItMDYgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRkIHN1cHBvcnQgZm9yIFdlYklu
cHV0RXZlbnQ6Okdlc3R1cmVEb3VibGVUYXAgb24gQ0MgaW1wbCB0aHJlYWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODcyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAg
ICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6Cisg
ICAgICAgICogdGVzdHMvV2ViR2VzdHVyZVRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJHZXN0dXJlVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlc3R1
cmVUZXN0OjpXZWJHZXN0dXJlVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlc3R1cmVUZXN0
OjpvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHZXN0dXJlVGVzdDo6c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHZXN0dXJlVGVzdDo6c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHZXN0dXJlVGVzdDo6c2V0dXBTY3JvbGxBbmRDb250ZW50c0xheWVycyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlc3R1cmVUZXN0OjpsYXllclRyZWVIb3N0SW1wbCk6Cisg
ICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisKIDIwMTItMDItMDIgIEtpbnVrbyBZYXN1ZGEgIDxr
aW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENsZWFudXA6IE1vdmUgY2hyb21lLXNwZWNp
ZmljIGZpbGVzeXN0ZW0gdHlwZSBoYW5kbGluZyBjb2RlIChmb3IgRmlsZVN5c3RlbSBBUEkpIHVu
ZGVyIGNocm9taXVtIGRpcmVjdG9yeSAocmUtbGFuZGluZyByMTA1Mzk1KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMjgzYWE4ZGQwOWJhMjNmZDc0NDMzYWNhMzJhNjczNTM4
ODNjOWEwMC4uODRlNjIwMjc5MjRmNzA0ZjA0ZjI2ZGViZDQ2NmRmMDhlNjcyNDgzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnNldElzTm9uQ29tcG9zaXRlZENvbnRlbnQoYm9vbCBpc05vbkNvbXBv
c2l0ZWRDb250ZW50KQogICAgIExheWVyQ2hyb21pdW06OnNldElzTm9uQ29tcG9zaXRlZENvbnRl
bnQoaXNOb25Db21wb3NpdGVkQ29udGVudCk7CiAKICAgICBDQ0xheWVyVGlsaW5nRGF0YTo6Qm9y
ZGVyVGV4ZWxPcHRpb24gYm9yZGVyVGV4ZWxPcHRpb247Ci0jaWYgT1MoQU5EUk9JRCkKKyNpZiBP
UyhBTkRST0lEKSB8fCBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgLy8gQWx3YXlzIHdhbnQg
Ym9yZGVyIHRleGVscyBhbmQgR0xfTElORUFSIGR1ZSB0byBwaW5jaCB6b29tLgogICAgIGJvcmRl
clRleGVsT3B0aW9uID0gQ0NMYXllclRpbGluZ0RhdGE6Okhhc0JvcmRlclRleGVsczsKICNlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCBlMTVmYmZjYWE4NmQ3NTU2MzllZWM4
MWE3YjdlZjY3ZGQ2NmM1MGJmLi44OWMwNWViM2E1YTg3ZjRkN2MyNzE1OGUxZmM3ZTBhMTRlZjQ0
NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTExNSw2ICsxMTUsNyBAQAog
ICAgICAgICAgICAgJ3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAn
LAogICAgICAgICAgICAgJ3Rlc3RzL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbFRlc3QuY3Bw
JywKICAgICAgICAgICAgICd0ZXN0cy9XZWJGcmFtZVRlc3QuY3BwJywKKyAgICAgICAgICAgICd0
ZXN0cy9XZWJHZXN0dXJlVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYkdMTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJMYXllclRlc3QuY3BwJywK
ICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlTmV3U2VyaWFsaXplclRlc3QuY3BwJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsLmNwcAppbmRleCA0MDhmMTI2NGZiYmU1MTc2MDZiMjcxZjdkMWU5YjAxOGZm
NzcwNjdmLi4xZDJmODQxNDRmOTQ0YzIwZWVlOWM4ZmRkYzA1NTkxZTI0ZGY2ZmNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGwuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiV2ViS2l0Lmgi
CiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAi
Y2MvQ0NQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAt
MTMyLDYgKzEzMywxNCBAQCB2b2lkIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5k
bGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBpZiAoZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2
ZW50OjpHZXN0dXJlRG91YmxlVGFwKSB7CisgICAgICAgIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYg
Z2VzdHVyZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+KCZldmVu
dCk7CisgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlv
bihJbnRTaXplKGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZlbnQueSksIHRydWUsIGdlc3R1cmVF
dmVudC5kZWx0YVgsIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpICogMTAwMC4wLCBnZXN0
dXJlRXZlbnQuZGVsdGFZKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZEhhbmRsZUlucHV0RXZlbnQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG1fY2xpZW50LT5kaWROb3RIYW5kbGVJ
bnB1dEV2ZW50KHRydWUgLyogc2VuZFRvV2lkZ2V0ICovKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJHZXN0dXJlVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1dlYkdlc3R1cmVUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzM3NWQ5
OTFhYTFkMDhjN2I2NjQ2OTdjMWEwM2FiMWQ3ZGZkMGYxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJHZXN0dXJlVGVzdC5jcHAKQEAgLTAsMCArMSwx
MjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVySW1wbC5oIgorI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKKyNpbmNsdWRl
ICJjYy9DQ0xheWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIK
KyNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvLyBJbnRlZ3JhdGlvbiB0ZXN0cyB0
byBlbnN1cmUgV2ViR2VzdHVyZUV2ZW50cyBhcmUgcHJvY2Vzc2VkIGFzIGV4cGVjdGVkLgorCitu
YW1lc3BhY2UgeworCitjbGFzcyBXZWJHZXN0dXJlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
LCBwdWJsaWMgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCB7CitwdWJsaWM6CisgICAgV2ViR2Vz
dHVyZVRlc3QoKQorICAgICAgICA6IG1fZGlkUmVxdWVzdENvbW1pdChmYWxzZSkKKyAgICAgICAg
LCBtX2RpZFJlcXVlc3RSZWRyYXcoZmFsc2UpCisgICAgeworICAgICAgICBDQ1NldHRpbmdzIHNl
dHRpbmdzOworICAgICAgICBtX2hvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRl
KHNldHRpbmdzLCB0aGlzKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVy
c0NvbXBsZXRlT25JbXBsVGhyZWFkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVk
cmF3T25JbXBsVGhyZWFkKCkgeyBtX2RpZFJlcXVlc3RSZWRyYXcgPSB0cnVlOyB9CisgICAgdmly
dHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgeyBtX2RpZFJlcXVlc3RDb21t
aXQgPSB0cnVlOyB9CisgICAgdm9pZCBzZXR1cFNjcm9sbEFuZENvbnRlbnRzTGF5ZXJzKGNvbnN0
IEludFNpemUmIGNvbnRlbnRTaXplKQorICAgIHsKKyAgICAgICAgUmVmUHRyPENDTGF5ZXJJbXBs
PiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKKyAgICAgICAgcm9vdC0+c2V0U2Nyb2xs
YWJsZSh0cnVlKTsKKyAgICAgICAgcm9vdC0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoMCwg
MCkpOworICAgICAgICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihjb250ZW50U2l6ZSk7Cisg
ICAgICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY29udGVudHMgPSBDQ0xheWVySW1wbDo6Y3JlYXRl
KDEpOworICAgICAgICBjb250ZW50cy0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgICAgICBj
b250ZW50cy0+c2V0Qm91bmRzKGNvbnRlbnRTaXplKTsKKyAgICAgICAgY29udGVudHMtPnNldENv
bnRlbnRCb3VuZHMoY29udGVudFNpemUpOworICAgICAgICByb290LT5hZGRDaGlsZChjb250ZW50
cyk7CisgICAgICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290KTsKKyAgICB9CisKKyAg
ICBDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCgpIHsgcmV0dXJuIG1faG9z
dEltcGwuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVh
ZCBtX2Fsd2F5c0ltcGxUaHJlYWQ7CisgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IG1f
aG9zdEltcGw7CisgICAgYm9vbCBtX2RpZFJlcXVlc3RDb21taXQ7CisgICAgYm9vbCBtX2RpZFJl
cXVlc3RSZWRyYXc7Cit9OworCitjbGFzcyBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50
TGl0ZTogcHVibGljIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQgeworcHVibGljOgor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsU2h1dGRvd24oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
SGFuZGxlSW5wdXRFdmVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWROb3RIYW5kbGVJbnB1
dEV2ZW50KGJvb2wpIHsgfQorfTsKKworVEVTVF9GKFdlYkdlc3R1cmVUZXN0LCBnZXN0dXJlRG91
YmxlVGFwSW5wdXRFdmVudCkKK3sKKyAgICBzZXR1cFNjcm9sbEFuZENvbnRlbnRzTGF5ZXJzKElu
dFNpemUoMTAwLCAxMDApKTsKKyAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6
ZSgxMDAsIDEwMCkpOworCisgICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudExpdGUg
Y2xpZW50OworICAgIE93blB0cjxXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbD4gaW5wdXRI
YW5kbGVyID0gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmNyZWF0ZSh0aGlzLT5sYXll
clRyZWVIb3N0SW1wbCgpKTsKKyAgICBpbnB1dEhhbmRsZXItPnNldENsaWVudCgmY2xpZW50KTsK
KworICAgIG1faG9zdEltcGwtPnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cygxLCAwLjUsIDQp
OworICAgIENDTGF5ZXJJbXBsKiBzY3JvbGxMYXllciA9IG1faG9zdEltcGwtPnNjcm9sbExheWVy
KCk7CisgICAgc2Nyb2xsTGF5ZXItPnNldFBhZ2VTY2FsZURlbHRhKDEpOworICAgIHNjcm9sbExh
eWVyLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgwLCAwKSk7CisKKyAgICBjb25zdCBkb3Vi
bGUgZHVyYXRpb25NcyA9IDUwMDsKKworICAgIFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50IGdlc3R1
cmVEb3VibGVUYXA7CisgICAgZ2VzdHVyZURvdWJsZVRhcC50eXBlID0gV2ViS2l0OjpXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlRG91YmxlVGFwOworICAgIGdlc3R1cmVEb3VibGVUYXAueCA9IDUwOwor
ICAgIGdlc3R1cmVEb3VibGVUYXAueSA9IDI1OworICAgIGdlc3R1cmVEb3VibGVUYXAuZGVsdGFY
ID0gMS4yNTsKKyAgICBnZXN0dXJlRG91YmxlVGFwLmRlbHRhWSA9IGR1cmF0aW9uTXM7CisgICAg
aW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmVEb3VibGVUYXApOworCisgICAg
bV9ob3N0SW1wbC0+YW5pbWF0ZShtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAqIDEwMDAu
MCArIGR1cmF0aW9uTXMpOworCisgICAgRVhQRUNUX1RSVUUobV9kaWRSZXF1ZXN0UmVkcmF3KTsK
KyAgICBFWFBFQ1RfVFJVRShtX2RpZFJlcXVlc3RDb21taXQpOworCisgICAgT3duUHRyPENDU2Ny
b2xsQW5kU2NhbGVTZXQ+IHNjcm9sbEluZm8gPSBtX2hvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVs
dGFzKCk7CisgICAgRVhQRUNUX0VRKHNjcm9sbEluZm8tPnBhZ2VTY2FsZURlbHRhLCAxLjI1KTsK
KworICAgIC8vIDUwICogKDEuMjUgLSAxKS8xLjI1ICogKDEvMS4yNSkgPSA4CisgICAgQVNTRVJU
X0VRKHNjcm9sbEluZm8tPnNjcm9sbHMuc2l6ZSgpLCAxdSk7CisgICAgRVhQRUNUX0VRKHNjcm9s
bEluZm8tPnNjcm9sbHNbMF0uc2Nyb2xsRGVsdGEsIEludFNpemUoOCwgNCkpOworfQorCit9IC8v
IG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126095</attachid>
            <date>2012-02-08 09:06:33 -0800</date>
            <delta_ts>2012-02-08 11:45:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77872-20120208120632.patch</filename>
            <type>text/plain</type>
            <size>11718</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNjMGNjZjYxNzFhZGNj
M2I2MWUxZTkwOTY1YzMxMjYzYmY1NGQwZi4uM2UzMTY4N2M3MzM4YWMzYmY2ZDBjNzQxOThmNjhl
YzFkMzdjMGVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAyLTA4ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEFkZCBzdXBwb3J0IGZvciBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRG91YmxlVGFwIG9uIEND
IGltcGwgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03Nzg3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6em9vbUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6em9vbUFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChDQ0xheWVyVHJl
ZUhvc3RJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
b3h5Lmg6CisgICAgICAgIChDQ1Byb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
U2luZ2xlVGhyZWFkUHJveHk6Onpvb21BbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oOgorICAgICAgICAoQ0NTaW5nbGVUaHJlYWRQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RocmVhZFByb3h5Ojp6b29tQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6cmVxdWVzdFpvb21BbmltYXRpb25PbkltcGxU
aHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTAyLTA3ICBZdXJ5IFNl
bWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGluc3BlY3RlZCBvYmplY3Qgd3JhcHBlciBzaG91bGQgYmUgcmVsZWFzZWQgYnkgSW5qZWN0ZWRT
Y3JpcHQgd2hlbiBwb3BvdmVyIGNsb3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4
YjRkNTdlMmFmNTYxYTc0OTI4MGY2NDk1NzhmYzU0ODMzODEwM2ZmLi4yMTUxYjk3ZjczMjU4MDRk
NDcwNThkZDU1MWYxZGMxNGE4ZmMzMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDEyLTAyLTA4ICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBzdXBwb3J0IGZvciBXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlRG91YmxlVGFwIG9uIENDIGltcGwgdGhyZWFkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg3MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp6b29tQW5p
bWF0aW9uKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJ
bXBsKToKKwogMjAxMi0wMi0wNyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gTW92ZSBnZW9tZXRyeSBoZWFkZXJzIGluIFBsYXRmb3Jt
IEFQSSB0byBQbGF0Zm9ybSBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
CmluZGV4IDcwYzljODIyYTgxYjc4ZDI5MjUyMDY3YzQ1ZWFjZmNiNjJiYTYyNTYuLmJiM2ZmYjM3
NWU3MGQ4Mzk4M2JlZmFkZjUzMjA4ODQ3ZDJjNWEyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcApAQCAtMzU0LDYgKzM1NCwxMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0
SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sIGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMpCiAgICAg
bV9wcm94eS0+c2V0TmVlZHNDb21taXQoKTsKIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3Q6Onpv
b21BbmltYXRpb24oY29uc3QgSW50U2l6ZSYgYW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1
cmF0aW9uKQoreworICAgIG1fcHJveHktPnpvb21BbmltYXRpb24oYW5jaG9yLCBzY2FsZSwgZHVy
YXRpb24pOworfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6bG9zZUNvbXBvc2l0b3JDb250ZXh0
KGludCBudW1UaW1lcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggYzM4MTBh
YjI3NWMzZDAxN2NkZmQ3YzA4NDNiNGE3YzdmY2I5OTcwNC4uNzNhODRhNGNlZTExNzc0NTgzNjZl
YWI3Y2YyN2JhNWU3MTMwMjYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTE4
Nyw2ICsxODcsOCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB3ZSBzaG91bGQg
YWJvcnQgdGhpcyBmcmFtZSBkdWUgdG8gaW5pdGlhbGl6YXRpb24gZmFpbHVyZS4KICAgICBib29s
IHVwZGF0ZUxheWVycygpOwogCisgICAgdm9pZCB6b29tQW5pbWF0aW9uKGNvbnN0IEludFNpemUm
LCBmbG9hdCwgZG91YmxlKTsKKwogICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKICAgICB2b2lkIGFwcGx5U2Ny
b2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYpOwogICAgIHZvaWQgc3RhcnRS
YXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcAppbmRleCBlOTMwYmMyOWU4NmMwNzcwMmUwNzI2ZjM1ZjM3ZWFhNWE1OGFk
YzgyLi5mYTNlZWVhNjE1MzI5OTc5NmM0ZmJmNmZiMWYwZWUxOTRhYmYxZDU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtNTQyLDQgKzU0Miw5IEBAIFBhc3NP
d25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gQ0NMYXllclRyZWVIb3N0SW1wbDo6cHJvY2Vzc1Nj
cm9sbERlbHRhcygpCiAgICAgcmV0dXJuIHNjcm9sbEluZm8ucmVsZWFzZSgpOwogfQogCit2b2lk
IENDTGF5ZXJUcmVlSG9zdEltcGw6Onpvb21BbmltYXRpb24oY29uc3QgSW50U2l6ZSYgYW5jaG9y
LCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uKQoreworICAgIHN0YXJ0UGFnZVNjYWxlQW5p
bWF0aW9uKGFuY2hvciwgdHJ1ZSwgc2NhbGUsIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
ICogMTAwMC4wLCBkdXJhdGlvbik7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuaAppbmRleCA1NjlkNjlmYTNlZDY4MGZhNTE3ZTk4YjBiMWY0NTU0OTAwODU2NDQ1Li5k
N2QzYzZkZGQyZGJkZjQxYWI2OGY5MDU3YjExODczODQ5YmJmMmFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0xMTMsNiArMTEzLDggQEAgcHVibGljOgogCiAgICAg
UGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBwcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CiAK
KyAgICB2b2lkIHpvb21BbmltYXRpb24oY29uc3QgSW50U2l6ZSYsIGZsb2F0LCBkb3VibGUpOwor
CiBwcm90ZWN0ZWQ6CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ1NldHRpbmdzJiwg
Q0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwogICAgIENDTGF5ZXJUcmVlSG9zdEltcGxDbGll
bnQqIG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IGEzYWE3MTYwNzFjMzQyYWI2OThlM2UwZTkz
ZDIyOTgyMzczZTc1ZmEuLjMyOTdlNDRhZGJmZGE5MWQ1YmYzMDc2ODVmZWM0OGZhZTUzM2VmMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Byb3h5LmgKQEAgLTU3LDYgKzU3LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBi
b29sIGNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYpID0g
MDsKIAorICAgIHZpcnR1YWwgdm9pZCB6b29tQW5pbWF0aW9uKGNvbnN0IEludFNpemUmLCBmbG9h
dCwgZG91YmxlKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCkg
PSAwOwogCiAgICAgdmlydHVhbCBib29sIGlzU3RhcnRlZCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggY2I2OTZlZDE3N2RjNWViNDI5M2Q4
ZDc5MDEyMWMxOGUwZjUyMzRhOS4uNTc4NGNiNzAxY2RiNTIxMDE0NDM0Yjk3MzU0NzA1NzE1OTNl
OTJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTkyLDYg
KzkyLDExIEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tcG9zaXRlQW5kUmVhZGJhY2so
dm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6em9vbUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiBh
bmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb24pCit7CisgICAgbV9sYXllclRyZWVI
b3N0SW1wbC0+em9vbUFuaW1hdGlvbihhbmNob3IsIHNjYWxlLCBkdXJhdGlvbik7Cit9CisKIEdy
YXBoaWNzQ29udGV4dDNEKiBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb250ZXh0KCkKIHsKICAgICBB
U1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oCmluZGV4IGRhMWZlNDYxOTIxMWRlZGJkZDdlYTJkY2FhMzdjNjUzMjQ4ZmY0NjUu
LjM2YjdhYzQ5NWI4NTM4YTBkNDFjMGUxYzBiNDUxZWY0MDAzYThlMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTQxLDYgKzQxLDcgQEAgcHVibGljOgogCiAgICAg
Ly8gQ0NQcm94eSBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGVBbmRS
ZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
em9vbUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiwgZmxvYXQsIGRvdWJsZSk7CiAgICAgdmlydHVh
bCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hB
bGxSZW5kZXJpbmcoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTdGFydGVkKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IGZkNjNiZDVjMGEzZDgyYzEyOWJiYjU4ZTI3NmEx
MDI4MDA2MmQ1MGUuLjY0MzM2MTRlMjk3YTg0MmNiMGFkYTg1ZTRhYTQxOTY5YTM5MjQyNzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0xMzEsNiArMTMxLDE5IEBAIHZvaWQgQ0NU
aHJlYWRQcm94eTo6cmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNrUmVxdWVzdCog
cmVxdWVzdCkKICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0TmVlZHNGb3JjZWRSZWRy
YXcoKTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5Ojp6b29tQW5pbWF0aW9uKGNvbnN0IEludFNp
emUmIGFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBBU1NFUlQo
Q0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOworICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9z
dFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpyZXF1ZXN0Wm9v
bUFuaW1hdGlvbk9uSW1wbFRocmVhZCwgYW5jaG9yLndpZHRoKCksIGFuY2hvci5oZWlnaHQoKSwg
c2NhbGUsIGR1cmF0aW9uKSk7Cit9CisKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6cmVxdWVzdFpvb21B
bmltYXRpb25PbkltcGxUaHJlYWQoaW50IHgsIGludCB5LCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1
cmF0aW9uKQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgaWYg
KG1fbGF5ZXJUcmVlSG9zdEltcGwpCisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnpvb21B
bmltYXRpb24oSW50U2l6ZSh4LCB5KSwgc2NhbGUsIGR1cmF0aW9uKTsKK30KKwogR3JhcGhpY3ND
b250ZXh0M0QqIENDVGhyZWFkUHJveHk6OmNvbnRleHQoKQogewogICAgIHJldHVybiAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IGI2NWE2YzYwNGUyOTIzZmM4ZjA5Y2Y5YWM3ZjU1OTZk
MGFiMGNkZDAuLjhjMjI4Y2MyZDBlOGVlN2I5YWQzM2Q2MmMyZGE3NjRmYjQ3NTk1MTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgLy8g
Q0NQcm94eSBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGVBbmRSZWFk
YmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgem9v
bUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiBhbmNob3IsIGZsb2F0LCBkb3VibGUpOwogICAgIHZp
cnR1YWwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZmlu
aXNoQWxsUmVuZGVyaW5nKCk7CiAgICAgdmlydHVhbCBib29sIGlzU3RhcnRlZCgpIGNvbnN0OwpA
QCAtOTcsNiArOTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgb2J0YWluQmVnaW5GcmFtZUFuZENv
bW1pdFRhc2tGcm9tQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ1RocmVhZDo6VGFzayoq
KTsKICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25F
dmVudCopOwogICAgIHZvaWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNrUmVx
dWVzdCopOworICAgIHZvaWQgcmVxdWVzdFpvb21BbmltYXRpb25PbkltcGxUaHJlYWQoaW50LCBp
bnQsIGZsb2F0LCBkb3VibGUpOwogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhy
ZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBpbml0aWFsaXplSW1wbE9uSW1wbFRo
cmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnRleHRPbklt
cGxUaHJlYWQoR3JhcGhpY3NDb250ZXh0M0QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAppbmRleCA4MjY5YTFkY2ZlYWY2MDFhOGVkZTAyZTE2YjUyOGI5MDdk
Y2EzOWE0Li41NTczOTIwMjU3NDQzOWVlY2VkMmRkMmJlZDYxOTk0NGJkYjUxNjRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC02MjMsNiArNjIzLDE3
IEBAIGJvb2wgV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQm
IGV2ZW50KQogCiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9CisKK3ZvaWQgV2ViVmlld0ltcGw6Onpv
b21BbmltYXRpb24oZmxvYXQgbmV3U2NhbGUsIGNvbnN0IEludFBvaW50JiBhbmNob3IpCit7Cisg
ICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkgeworICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBwcmUt
cHJvY2VzcyB0aGUgYW5jaG9yIHBvaW50LCBub3QganVzdCB1c2Ugc2NyZWVuIGNvb3Jkcy4KKyAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT56b29tQW5pbWF0aW9uKEludFNpemUoYW5jaG9yLngoKSwg
YW5jaG9yLnkoKSksIG5ld1NjYWxlLCA1MDAuMCk7CisgICAgICAgIC8vIEZJWE1FOiB3ZWUgc2Vl
bSB0byBnZXQgc2Nyb2xsIGFzc2VydGlvbnMgb24gQ0NTaW5nbGVUaHJlYWRQcm94eSB3aXRob3V0
IHRoaXMsIGJ1dAorICAgICAgICAvLyB0aGlzIG5lZWRzIHRvIGFsc28gZmFjdG9yIGluIHRoZSBz
Y3JvbGwgb2Zmc2V0IHRvIGJlIGNvcnJlY3QgaXQgc2VlbXMuCisgICAgICAgIHNldFBhZ2VTY2Fs
ZUZhY3RvclByZXNlcnZpbmdTY3JvbGxPZmZzZXQobmV3U2NhbGUpOworICAgIH0KK30KICNlbmRp
ZgogCiBib29sIFdlYlZpZXdJbXBsOjprZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBl
dmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDgwMGQx
ODI1NDM2ZjEzMDQ5ZDZlZjk2ZTkzZDZhMzVmOTFiMjg0NjQuLmRiMjhiYzc2YzZkNjZlMjM4NjNi
MDYwYTk5YmIzZjVlMzBkZDg2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudElt
cGwuaCIKKyNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNs
dWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJJbXBsLmgiCiAjaW5jbHVkZSAiUGFnZU92ZXJsYXlM
aXN0LmgiCkBAIC0zMTQsNiArMzE1LDcgQEAgcHVibGljOgogICAgIHZvaWQgbW91c2VEb3VibGVD
bGljayhjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAgICAgYm9vbCBtb3VzZVdoZWVsKGNvbnN0IFdl
Yk1vdXNlV2hlZWxFdmVudCYpOwogICAgIGJvb2wgZ2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1
cmVFdmVudCYpOworICAgIHZvaWQgem9vbUFuaW1hdGlvbihmbG9hdCwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmKTsKICAgICBib29sIGtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsK
ICAgICBib29sIGNoYXJFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAgICAgYm9vbCB0
b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126127</attachid>
            <date>2012-02-08 11:45:30 -0800</date>
            <delta_ts>2012-02-09 10:15:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77872-20120208144528.patch</filename>
            <type>text/plain</type>
            <size>11584</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNjMGNjZjYxNzFhZGNj
M2I2MWUxZTkwOTY1YzMxMjYzYmY1NGQwZi4uM2UzMTY4N2M3MzM4YWMzYmY2ZDBjNzQxOThmNjhl
YzFkMzdjMGVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAyLTA4ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEFkZCBzdXBwb3J0IGZvciBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRG91YmxlVGFwIG9uIEND
IGltcGwgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03Nzg3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6em9vbUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6em9vbUFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChDQ0xheWVyVHJl
ZUhvc3RJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
b3h5Lmg6CisgICAgICAgIChDQ1Byb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
U2luZ2xlVGhyZWFkUHJveHk6Onpvb21BbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oOgorICAgICAgICAoQ0NTaW5nbGVUaHJlYWRQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RocmVhZFByb3h5Ojp6b29tQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6cmVxdWVzdFpvb21BbmltYXRpb25PbkltcGxU
aHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTAyLTA3ICBZdXJ5IFNl
bWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGluc3BlY3RlZCBvYmplY3Qgd3JhcHBlciBzaG91bGQgYmUgcmVsZWFzZWQgYnkgSW5qZWN0ZWRT
Y3JpcHQgd2hlbiBwb3BvdmVyIGNsb3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4
YjRkNTdlMmFmNTYxYTc0OTI4MGY2NDk1NzhmYzU0ODMzODEwM2ZmLi4yMTUxYjk3ZjczMjU4MDRk
NDcwNThkZDU1MWYxZGMxNGE4ZmMzMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDEyLTAyLTA4ICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBzdXBwb3J0IGZvciBXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlRG91YmxlVGFwIG9uIENDIGltcGwgdGhyZWFkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg3MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp6b29tQW5p
bWF0aW9uKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJ
bXBsKToKKwogMjAxMi0wMi0wNyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gTW92ZSBnZW9tZXRyeSBoZWFkZXJzIGluIFBsYXRmb3Jt
IEFQSSB0byBQbGF0Zm9ybSBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
CmluZGV4IDcwYzljODIyYTgxYjc4ZDI5MjUyMDY3YzQ1ZWFjZmNiNjJiYTYyNTYuLjM4Nzk0ZTBh
ZWEwOWJjOTA2ZjY5ZjBhMDM1MmZjMDA0NzJlYTRkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcApAQCAtMzU0LDYgKzM1NCwxMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0
SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sIGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMpCiAgICAg
bV9wcm94eS0+c2V0TmVlZHNDb21taXQoKTsKIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3Q6Onpv
b21BbmltYXRpb24oY29uc3QgSW50U2l6ZSYgYW5jaG9yLCBib29sIHVzZUFuY2hvciwgZmxvYXQg
c2NhbGUsIGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBtX3Byb3h5LT56b29tQW5pbWF0aW9uKGFu
Y2hvciwgdXNlQW5jaG9yLCBzY2FsZSwgZHVyYXRpb24pOworfQogCiB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6bG9zZUNvbXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1lcykKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmgKaW5kZXggYzM4MTBhYjI3NWMzZDAxN2NkZmQ3YzA4NDNiNGE3YzdmY2I5
OTcwNC4uN2MyM2I5YjJmOTg2YjM3ZTI4MGU2NGJlZTk5Mjg0MjdlNDAxMTczMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTE4Nyw2ICsxODcsOCBAQCBwdWJsaWM6CiAgICAgLy8g
UmV0dXJucyBmYWxzZSBpZiB3ZSBzaG91bGQgYWJvcnQgdGhpcyBmcmFtZSBkdWUgdG8gaW5pdGlh
bGl6YXRpb24gZmFpbHVyZS4KICAgICBib29sIHVwZGF0ZUxheWVycygpOwogCisgICAgdm9pZCB6
b29tQW5pbWF0aW9uKGNvbnN0IEludFNpemUmLCBib29sLCBmbG9hdCwgZG91YmxlKTsKKwogICAg
IHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4
dHVyZVVwZGF0ZXImKTsKICAgICB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgQ0NTY3Jv
bGxBbmRTY2FsZVNldCYpOwogICAgIHZvaWQgc3RhcnRSYXRlTGltaXRlcihHcmFwaGljc0NvbnRl
eHQzRCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBlOTMw
YmMyOWU4NmMwNzcwMmUwNzI2ZjM1ZjM3ZWFhNWE1OGFkYzgyLi44MDBlNjEyZmFkMjExNDQ2YTFh
Y2ZkNTlhOWFhNTk3NjY2NzQ1NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcApAQCAtNTQyLDQgKzU0Miw5IEBAIFBhc3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNl
dD4gQ0NMYXllclRyZWVIb3N0SW1wbDo6cHJvY2Vzc1Njcm9sbERlbHRhcygpCiAgICAgcmV0dXJu
IHNjcm9sbEluZm8ucmVsZWFzZSgpOwogfQogCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6Onpv
b21BbmltYXRpb24oY29uc3QgSW50U2l6ZSYgYW5jaG9yLCBib29sIHVzZUFuY2hvciwgZmxvYXQg
c2NhbGUsIGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihh
bmNob3IsIHVzZUFuY2hvciwgc2NhbGUsIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpICog
MTAwMC4wLCBkdXJhdGlvbik7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaAppbmRleCA1NjlkNjlmYTNlZDY4MGZhNTE3ZTk4YjBiMWY0NTU0OTAwODU2NDQ1Li5hZmM0
OTRhMzYxYWI5NjNmZGEwMzI2MDY1NjQ1NjMwOGM0YjU4ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oCkBAIC0xMTMsNiArMTEzLDggQEAgcHVibGljOgogCiAgICAgUGFz
c093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBwcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CiAKKyAg
ICB2b2lkIHpvb21BbmltYXRpb24oY29uc3QgSW50U2l6ZSYsIGJvb2wsIGZsb2F0LCBkb3VibGUp
OworCiBwcm90ZWN0ZWQ6CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ1NldHRpbmdz
JiwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwogICAgIENDTGF5ZXJUcmVlSG9zdEltcGxD
bGllbnQqIG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IGEzYWE3MTYwNzFjMzQyYWI2OThlM2Uw
ZTkzZDIyOTgyMzczZTc1ZmEuLjcyNTQ2Y2RmYzJiYmQ3NTNlZGNjYTBmNjViZDJiMzgwYmM1OWIz
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTU3LDYgKzU3LDggQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBib29sIGNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYp
ID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCB6b29tQW5pbWF0aW9uKGNvbnN0IEludFNpemUmLCBi
b29sLCBmbG9hdCwgZG91YmxlKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoQWxsUmVu
ZGVyaW5nKCkgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGlzU3RhcnRlZCgpIGNvbnN0ID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggY2I2OTZlZDE3N2Rj
NWViNDI5M2Q4ZDc5MDEyMWMxOGUwZjUyMzRhOS4uNmY2MTQ5ZmIwODk3ZDU4MWZjYmM4NmMwYWIw
ZjE4NWE0YzU0ZDkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAK
QEAgLTkyLDYgKzkyLDExIEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tcG9zaXRlQW5k
UmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6em9vbUFuaW1hdGlvbihjb25zdCBJ
bnRTaXplJiBhbmNob3IsIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0
aW9uKQoreworICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnpvb21BbmltYXRpb24oYW5jaG9yLCB1
c2VBbmNob3IsIHNjYWxlLCBkdXJhdGlvbik7Cit9CisKIEdyYXBoaWNzQ29udGV4dDNEKiBDQ1Np
bmdsZVRocmVhZFByb3h5Ojpjb250ZXh0KCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWlu
VGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IGRhMWZl
NDYxOTIxMWRlZGJkZDdlYTJkY2FhMzdjNjUzMjQ4ZmY0NjUuLjcxMWEwNDA0NGViZjgwYTZiNjFm
ZjZhYmVmZmM1YTE0YWE0ODI2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmgKQEAgLTQxLDYgKzQxLDcgQEAgcHVibGljOgogCiAgICAgLy8gQ0NQcm94eSBpbXBsZW1lbnRh
dGlvbgogICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMs
IGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgem9vbUFuaW1hdGlvbihjb25zdCBJ
bnRTaXplJiwgYm9vbCwgZmxvYXQsIGRvdWJsZSk7CiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCgpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmcoKTsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNTdGFydGVkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwCmluZGV4IGZkNjNiZDVjMGEzZDgyYzEyOWJiYjU4ZTI3NmExMDI4MDA2MmQ1MGUuLmZl
MDczMGUxOWQ3OWZkMmIyZjM0ODA0MzRlODhmZmNhYmE0YjhjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwCkBAIC0xMzEsNiArMTMxLDE5IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6cmVx
dWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNrUmVxdWVzdCogcmVxdWVzdCkKICAgICBt
X3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsKIH0KIAordm9p
ZCBDQ1RocmVhZFByb3h5Ojp6b29tQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIGFuY2hvciwgYm9v
bCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb24pCit7CisgICAgQVNTRVJU
KENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKKyAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBv
c3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6cmVxdWVzdFpv
b21BbmltYXRpb25PbkltcGxUaHJlYWQsIGFuY2hvci53aWR0aCgpLCBhbmNob3IuaGVpZ2h0KCks
IHVzZUFuY2hvciwgc2NhbGUsIGR1cmF0aW9uKSk7Cit9CisKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6
cmVxdWVzdFpvb21BbmltYXRpb25PbkltcGxUaHJlYWQoaW50IHgsIGludCB5LCBib29sIHVzZUFu
Y2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBBU1NFUlQoQ0NQcm94
eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIGlmIChtX2xheWVyVHJlZUhvc3RJbXBsKQorICAgICAg
ICBtX2xheWVyVHJlZUhvc3RJbXBsLT56b29tQW5pbWF0aW9uKEludFNpemUoeCwgeSksIHVzZUFu
Y2hvciwgc2NhbGUsIGR1cmF0aW9uKTsKK30KKwogR3JhcGhpY3NDb250ZXh0M0QqIENDVGhyZWFk
UHJveHk6OmNvbnRleHQoKQogewogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
CmluZGV4IGI2NWE2YzYwNGUyOTIzZmM4ZjA5Y2Y5YWM3ZjU1OTZkMGFiMGNkZDAuLjBiYzkxOWI3
MGVjZDZjNDAwOTY4ODE3NWU5ZDg4NTFlY2ZlMGNlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ0NQcm94eSBpbXBsZW1lbnRh
dGlvbgogICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMs
IGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgem9vbUFuaW1hdGlvbihjb25zdCBJ
bnRTaXplJiBhbmNob3IsIGJvb2wsIGZsb2F0LCBkb3VibGUpOwogICAgIHZpcnR1YWwgR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoQWxsUmVuZGVy
aW5nKCk7CiAgICAgdmlydHVhbCBib29sIGlzU3RhcnRlZCgpIGNvbnN0OwpAQCAtOTcsNiArOTgs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgb2J0YWluQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tGcm9t
Q0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ1RocmVhZDo6VGFzayoqKTsKICAgICB2b2lk
IGJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAg
IHZvaWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNrUmVxdWVzdCopOworICAg
IHZvaWQgcmVxdWVzdFpvb21BbmltYXRpb25PbkltcGxUaHJlYWQoaW50LCBpbnQsIGJvb2wsIGZs
b2F0LCBkb3VibGUpOwogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKEND
Q29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBpbml0aWFsaXplSW1wbE9uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnRleHRPbkltcGxUaHJl
YWQoR3JhcGhpY3NDb250ZXh0M0QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcAppbmRleCA4MjY5YTFkY2ZlYWY2MDFhOGVkZTAyZTE2YjUyOGI5MDdkY2EzOWE0
Li42Y2IxZTUzZDNmMmZjMjljZmNlMDk5YTJlOGRhYTdkODQyMzhlM2VhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC02MjMsNiArNjIzLDEyIEBAIGJv
b2wgV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50
KQogCiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9CisKK3ZvaWQgV2ViVmlld0ltcGw6Onpvb21Bbmlt
YXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbCwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IG5ld1Nj
YWxlKQoreworICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCisgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+em9vbUFuaW1hdGlvbihJbnRTaXplKHNjcm9sbC54KCksIHNjcm9sbC55KCkpLCB1c2VBbmNo
b3IsIG5ld1NjYWxlLCA1MDAuMCk7Cit9CiAjZW5kaWYKIAogYm9vbCBXZWJWaWV3SW1wbDo6a2V5
RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA4MDBkMTgyNTQzNmYxMzA0OWQ2ZWY5NmU5M2Q2YTM1
ZjkxYjI4NDY0Li4zOTMwMDE3MDcwOTFkNTFiOGQ0MWRlMDhkNGM0MmFkOTZhYTQ2YTU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTQ1LDYgKzQ1LDcgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiSW50UG9pbnQu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVy
SW1wbC5oIgogI2luY2x1ZGUgIlBhZ2VPdmVybGF5TGlzdC5oIgpAQCAtMzE0LDYgKzMxNSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIG1vdXNlRG91YmxlQ2xpY2soY29uc3QgV2ViTW91c2VFdmVudCYp
OwogICAgIGJvb2wgbW91c2VXaGVlbChjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmKTsKICAgICBi
b29sIGdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKKyAgICB2b2lkIHpvb21B
bmltYXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sLCBmbG9hdCk7CiAgICAgYm9v
bCBrZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAgICAgYm9vbCBjaGFyRXZlbnQo
Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIGJvb2wgdG91Y2hFdmVudChjb25zdCBXZWJU
b3VjaEV2ZW50Jik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126326</attachid>
            <date>2012-02-09 10:15:18 -0800</date>
            <delta_ts>2012-02-09 11:44:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77872-20120209131517.patch</filename>
            <type>text/plain</type>
            <size>13430</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNjMGNjZjYxNzFhZGNj
M2I2MWUxZTkwOTY1YzMxMjYzYmY1NGQwZi4uMGI5ZDY5ZGUwZDcxY2U2NTI0YmEwZWI0MWI0MTk4
NDM1YThhN2NhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAyLTA5ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEFkZCBzdXBwb3J0IGZvciBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRG91YmxlVGFwIG9uIEND
IGltcGwgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03Nzg3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVuaXQgdGVzdCBhZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6Onpvb21BbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAg
IChDQ1Byb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJv
eHk6Onpvb21BbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAgICAo
Q0NTaW5nbGVUaHJlYWRQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
Ojp6b29tQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6cmVxdWVzdFpvb21BbmltYXRpb25PbkltcGxUaHJlYWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAg
ICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTAyLTA3ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVy
eXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGluc3BlY3RlZCBvYmpl
Y3Qgd3JhcHBlciBzaG91bGQgYmUgcmVsZWFzZWQgYnkgSW5qZWN0ZWRTY3JpcHQgd2hlbiBwb3Bv
dmVyIGNsb3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4YjRkNTdlMmFmNTYxYTc0
OTI4MGY2NDk1NzhmYzU0ODMzODEwM2ZmLi5mNmYwMTdiNmQ0MmQ4YzUwMWI3OTUwNDkyZTZiMWZh
ZDNjNDFhNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisy
MDEyLTAyLTA5ICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbY2hyb21pdW1dIEFkZCBzdXBwb3J0IGZvciBXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
RG91YmxlVGFwIG9uIENDIGltcGwgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp6b29tQW5pbWF0aW9uKToKKyAgICAg
ICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKyAgICAgICAg
KiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURik6CisgICAgICAg
IChDQ0xheWVyVHJlZUhvc3RUZXN0Wm9vbUFuaW1hdGlvbik6CisgICAgICAgIChXVEY6OkNDTGF5
ZXJUcmVlSG9zdFRlc3Rab29tQW5pbWF0aW9uOjpDQ0xheWVyVHJlZUhvc3RUZXN0Wm9vbUFuaW1h
dGlvbik6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Rab29tQW5pbWF0aW9uOjpi
ZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0Wm9vbUFuaW1hdGlv
bjo6cmVxdWVzdFpvb21BbmltYXRpb24pOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RU
ZXN0Wm9vbUFuaW1hdGlvbjo6ZHJhd0xheWVyc09uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpD
Q0xheWVyVHJlZUhvc3RUZXN0Wm9vbUFuaW1hdGlvbjo6YXBwbHlTY3JvbGxBbmRTY2FsZSk6Cisg
ICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Rab29tQW5pbWF0aW9uOjpjb21taXRDb21w
bGV0ZU9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0Wm9vbUFu
aW1hdGlvbjo6YWZ0ZXJUZXN0KToKKyAgICAgICAgKFdURjo6VEVTVF9GKToKKwogMjAxMi0wMi0w
NyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gTW92ZSBnZW9tZXRyeSBoZWFkZXJzIGluIFBsYXRmb3JtIEFQSSB0byBQbGF0Zm9ybSBk
aXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDcwYzljODIyYTgx
Yjc4ZDI5MjUyMDY3YzQ1ZWFjZmNiNjJiYTYyNTYuLjM4Nzk0ZTBhZWEwOWJjOTA2ZjY5ZjBhMDM1
MmZjMDA0NzJlYTRkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMzU0
LDYgKzM1NCwxMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0SGF2ZVdoZWVsRXZlbnRIYW5k
bGVycyhib29sIGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMpCiAgICAgbV9wcm94eS0+c2V0TmVlZHND
b21taXQoKTsKIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3Q6Onpvb21BbmltYXRpb24oY29uc3Qg
SW50U2l6ZSYgYW5jaG9yLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJh
dGlvbikKK3sKKyAgICBtX3Byb3h5LT56b29tQW5pbWF0aW9uKGFuY2hvciwgdXNlQW5jaG9yLCBz
Y2FsZSwgZHVyYXRpb24pOworfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6bG9zZUNvbXBvc2l0
b3JDb250ZXh0KGludCBudW1UaW1lcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5k
ZXggYzM4MTBhYjI3NWMzZDAxN2NkZmQ3YzA4NDNiNGE3YzdmY2I5OTcwNC4uN2MyM2I5YjJmOTg2
YjM3ZTI4MGU2NGJlZTk5Mjg0MjdlNDAxMTczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmgKQEAgLTE4Nyw2ICsxODcsOCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB3
ZSBzaG91bGQgYWJvcnQgdGhpcyBmcmFtZSBkdWUgdG8gaW5pdGlhbGl6YXRpb24gZmFpbHVyZS4K
ICAgICBib29sIHVwZGF0ZUxheWVycygpOwogCisgICAgdm9pZCB6b29tQW5pbWF0aW9uKGNvbnN0
IEludFNpemUmLCBib29sLCBmbG9hdCwgZG91YmxlKTsKKwogICAgIHZvaWQgdXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKICAg
ICB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYpOwog
ICAgIHZvaWQgc3RhcnRSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5o
CmluZGV4IGEzYWE3MTYwNzFjMzQyYWI2OThlM2UwZTkzZDIyOTgyMzczZTc1ZmEuLjcyNTQ2Y2Rm
YzJiYmQ3NTNlZGNjYTBmNjViZDJiMzgwYmM1OWIzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTU3LDYg
KzU3LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGNvbXBvc2l0ZUFuZFJlYWRiYWNr
KHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCB6
b29tQW5pbWF0aW9uKGNvbnN0IEludFNpemUmLCBib29sLCBmbG9hdCwgZG91YmxlKSA9IDA7CisK
ICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCkgPSAwOwogCiAgICAgdmlydHVh
bCBib29sIGlzU3RhcnRlZCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAKaW5kZXggY2I2OTZlZDE3N2RjNWViNDI5M2Q4ZDc5MDEyMWMxOGUwZjUyMzRh
OS4uNjY1OTA1Y2I5MTFhMmJmYWQ3NzAyMjA5ZmMyNDJjMDNhODg1ZWRkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTkyLDYgKzkyLDExIEBAIGJvb2wgQ0NT
aW5nbGVUaHJlYWRQcm94eTo6Y29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25z
dCBJbnRSZWN0JiByZWN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJl
YWRQcm94eTo6em9vbUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiBhbmNob3IsIGJvb2wgdXNlQW5j
aG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uKQoreworICAgIG1fbGF5ZXJUcmVlSG9z
dEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGFuY2hvciwgdXNlQW5jaG9yLCBzY2FsZSwg
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKiAxMDAwLjAsIGR1cmF0aW9uKTsKK30KKwog
R3JhcGhpY3NDb250ZXh0M0QqIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbnRleHQoKQogewogICAg
IEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmgKaW5kZXggZGExZmU0NjE5MjExZGVkYmRkN2VhMmRjYWEzN2M2NTMyNDhmZjQ2
NS4uNzExYTA0MDQ0ZWJmODBhNmI2MWZmNmFiZWZmYzVhMTRhYTQ4MjYzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtNDEsNiArNDEsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBDQ1Byb3h5IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCBib29sIGNvbXBvc2l0ZUFu
ZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9p
ZCB6b29tQW5pbWF0aW9uKGNvbnN0IEludFNpemUmLCBib29sLCBmbG9hdCwgZG91YmxlKTsKICAg
ICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lk
IGZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0YXJ0ZWQoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggZmQ2M2JkNWMwYTNkODJjMTI5YmJi
NThlMjc2YTEwMjgwMDYyZDUwZS4uM2ZjNDg5NzU3OWE4OGM3OTZiYmQxYmJjNjRkOGM4NTJkMTc3
YzFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTEzMSw2ICsxMzEsMTkgQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpyZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tS
ZXF1ZXN0KiByZXF1ZXN0KQogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc0Zv
cmNlZFJlZHJhdygpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6Onpvb21BbmltYXRpb24oY29u
c3QgSW50U2l6ZSYgYW5jaG9yLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBk
dXJhdGlvbikKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOworICAgIEND
UHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZD
Q1RocmVhZFByb3h5OjpyZXF1ZXN0Wm9vbUFuaW1hdGlvbk9uSW1wbFRocmVhZCwgYW5jaG9yLndp
ZHRoKCksIGFuY2hvci5oZWlnaHQoKSwgdXNlQW5jaG9yLCBzY2FsZSwgZHVyYXRpb24pKTsKK30K
Kwordm9pZCBDQ1RocmVhZFByb3h5OjpyZXF1ZXN0Wm9vbUFuaW1hdGlvbk9uSW1wbFRocmVhZChp
bnQgeCwgaW50IHksIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9u
KQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgaWYgKG1fbGF5
ZXJUcmVlSG9zdEltcGwpCisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnN0YXJ0UGFnZVNj
YWxlQW5pbWF0aW9uKEludFNpemUoeCwgeSksIHVzZUFuY2hvciwgc2NhbGUsIG1vbm90b25pY2Fs
bHlJbmNyZWFzaW5nVGltZSgpICogMTAwMC4wLCBkdXJhdGlvbik7Cit9CisKIEdyYXBoaWNzQ29u
dGV4dDNEKiBDQ1RocmVhZFByb3h5Ojpjb250ZXh0KCkKIHsKICAgICByZXR1cm4gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuaAppbmRleCBiNjVhNmM2MDRlMjkyM2ZjOGYwOWNmOWFjN2Y1NTk2ZDBh
YjBjZGQwLi4wYmM5MTliNzBlY2Q2YzQwMDk2ODgxNzVlOWQ4ODUxZWNmZTBjZTNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEND
UHJveHkgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlQW5kUmVhZGJh
Y2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHpvb21B
bmltYXRpb24oY29uc3QgSW50U2l6ZSYgYW5jaG9yLCBib29sLCBmbG9hdCwgZG91YmxlKTsKICAg
ICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lk
IGZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0YXJ0ZWQoKSBjb25z
dDsKQEAgLTk3LDYgKzk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG9idGFpbkJlZ2luRnJhbWVB
bmRDb21taXRUYXNrRnJvbUNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NUaHJlYWQ6OlRh
c2sqKik7CiAgICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0
aW9uRXZlbnQqKTsKICAgICB2b2lkIHJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChSZWFkYmFj
a1JlcXVlc3QqKTsKKyAgICB2b2lkIHJlcXVlc3Rab29tQW5pbWF0aW9uT25JbXBsVGhyZWFkKGlu
dCwgaW50LCBib29sLCBmbG9hdCwgZG91YmxlKTsKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmlu
Z09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgaW5pdGlhbGl6ZUlt
cGxPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIGluaXRpYWxpemVD
b250ZXh0T25JbXBsVGhyZWFkKEdyYXBoaWNzQ29udGV4dDNEKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggODI2OWExZGNmZWFmNjAxYThlZGUwMmUx
NmI1MjhiOTA3ZGNhMzlhNC4uNmNiMWU1M2QzZjJmYzI5Y2ZjZTA5OWEyZThkYWE3ZDg0MjM4ZTNl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNjIz
LDYgKzYyMywxMiBAQCBib29sIFdlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQoY29uc3QgV2ViR2Vz
dHVyZUV2ZW50JiBldmVudCkKIAogICAgIHJldHVybiBoYW5kbGVkOwogfQorCit2b2lkIFdlYlZp
ZXdJbXBsOjp6b29tQW5pbWF0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGwsIGJvb2wgdXNlQW5j
aG9yLCBmbG9hdCBuZXdTY2FsZSkKK3sKKyAgICBpZiAobV9sYXllclRyZWVIb3N0KQorICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnpvb21BbmltYXRpb24oSW50U2l6ZShzY3JvbGwueCgpLCBzY3Jv
bGwueSgpKSwgdXNlQW5jaG9yLCBuZXdTY2FsZSwgNTAwLjApOworfQogI2VuZGlmCiAKIGJvb2wg
V2ViVmlld0ltcGw6OmtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggODAwZDE4MjU0MzZmMTMw
NDlkNmVmOTZlOTNkNmEzNWY5MWIyODQ2NC4uMzkzMDAxNzA3MDkxZDUxYjhkNDFkZTA4ZDRjNDJh
ZDk2YWE0NmE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBA
IC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50SW1wbC5oIgorI2lu
Y2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk5vdGlm
aWNhdGlvblByZXNlbnRlckltcGwuaCIKICNpbmNsdWRlICJQYWdlT3ZlcmxheUxpc3QuaCIKQEAg
LTMxNCw2ICszMTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtb3VzZURvdWJsZUNsaWNrKGNvbnN0
IFdlYk1vdXNlRXZlbnQmKTsKICAgICBib29sIG1vdXNlV2hlZWwoY29uc3QgV2ViTW91c2VXaGVl
bEV2ZW50Jik7CiAgICAgYm9vbCBnZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7
CisgICAgdm9pZCB6b29tQW5pbWF0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCwg
ZmxvYXQpOwogICAgIGJvb2wga2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAg
IGJvb2wgY2hhckV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKICAgICBib29sIHRvdWNo
RXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggZWRjYzBiNTYwNjIxY2M0
NjFmY2ZkZmUxZmIxMTU0OGEwMzY1MjNhZS4uZjA2ZGVhNzcwNjU5OWI5MjUwZWVhZTllNGI4ODAw
OTY1OGJlYjZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC05MzgsNiArOTM4LDc1IEBAIFRFU1RfRihDQ0xheWVy
VHJlZUhvc3RUZXN0U2Nyb2xsTXVsdGlwbGVSZWRyYXcsIERJU0FCTEVEX3J1bk11bHRpVGhyZWFk
KQogICAgIHJ1blRlc3RUaHJlYWRlZCgpOwogfQogCisvLyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhh
dCB6b29tQW5pbWF0aW9uIGV2ZW50cyBwcm9wYWdhdGUgY29ycmVjdGx5IGZyb20gQ0NMYXllclRy
ZWVIb3N0IHRvCisvLyBDQ0xheWVyVHJlZUhvc3RJbXBsIGluIHRoZSBNVCBjb21wb3NpdG9yLgor
Y2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdFpvb21BbmltYXRpb24gOiBwdWJsaWMgQ0NMYXllclRy
ZWVIb3N0VGVzdCB7CitwdWJsaWM6CisKKyAgICBDQ0xheWVyVHJlZUhvc3RUZXN0Wm9vbUFuaW1h
dGlvbigpCisgICAgICAgIDogbV9hbmltYXRpb25SZXF1ZXN0ZWQoZmFsc2UpCisgICAgICAgIHsK
KyAgICAgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnJvb3RMYXllcigpLT5zZXRTY3JvbGxhYmxlKHRydWUpOworICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPnJvb3RMYXllcigpLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQ
b2ludCgpKTsKKyAgICAgICAgcG9zdFNldE5lZWRzUmVkcmF3VG9NYWluVGhyZWFkKCk7CisgICAg
fQorCisgICAgc3RhdGljIHZvaWQgcmVxdWVzdFpvb21BbmltYXRpb24odm9pZCAqIHNlbGYpCisg
ICAgeworICAgICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0Wm9vbUFuaW1hdGlvbiogdGVzdCA9IHN0
YXRpY19jYXN0PENDTGF5ZXJUcmVlSG9zdFRlc3Rab29tQW5pbWF0aW9uKj4oc2VsZik7CisgICAg
ICAgIGlmICh0ZXN0LT5sYXllclRyZWVIb3N0KCkpCisgICAgICAgICAgICB0ZXN0LT5sYXllclRy
ZWVIb3N0KCktPnpvb21BbmltYXRpb24oSW50U2l6ZSgpLCBmYWxzZSwgMS4yNSwgMCk7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9z
dEltcGwqIGltcGwpCisgICAgeworICAgICAgICBpbXBsLT5yb290TGF5ZXIoKS0+c2V0U2Nyb2xs
YWJsZSh0cnVlKTsKKyAgICAgICAgaW1wbC0+cm9vdExheWVyKCktPnNldFNjcm9sbFBvc2l0aW9u
KEludFBvaW50KCkpOworICAgICAgICBpbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMo
aW1wbC0+cGFnZVNjYWxlKCksIDAuNSwgMik7CisKKyAgICAgICAgLy8gV2UgcmVxdWVzdCB6b29t
IGFuaW1hdGlvbiBvbmx5IG9uY2UuCisgICAgICAgIGlmICghbV9hbmltYXRpb25SZXF1ZXN0ZWQp
IHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoQ0NMYXllclRyZWVIb3N0VGVzdFpvb21B
bmltYXRpb246OnJlcXVlc3Rab29tQW5pbWF0aW9uLCB0aGlzKTsKKyAgICAgICAgICAgIG1fYW5p
bWF0aW9uUmVxdWVzdGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBmbG9h
dCBzY2FsZSkKKyAgICB7CisgICAgICAgIEludFBvaW50IHBvc2l0aW9uID0gbV9sYXllclRyZWVI
b3N0LT5yb290TGF5ZXIoKS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5yb290TGF5ZXIoKS0+c2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24gKyBzY3JvbGxEZWx0
YSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0UGFnZVNjYWxlKHNjYWxlKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVl
SG9zdEltcGwqIGltcGwpCisgICAgeworICAgICAgICBpbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFz
KCk7CisgICAgICAgIC8vIFdlIGdldCBvbmUgY29tbWl0IGJlZm9yZSB0aGUgZmlyc3QgZHJhdywg
YW5kIHRoZSBhbmltYXRpb24gZG9lc24ndCBoYXBwZW4gdW50aWwgdGhlIHNlY29uZCBkcmF3LAor
ICAgICAgICAvLyBzbyByZXN1bHRzIGF2YWlsYWJsZSBvbiB0aGUgdGhpcmQgY29tbWl0LgorICAg
ICAgICBpZiAoaW1wbC0+ZnJhbWVOdW1iZXIoKSA9PSAyKSB7CisgICAgICAgICAgICBFWFBFQ1Rf
RVEoMS4yNSwgaW1wbC0+cGFnZVNjYWxlKCkpOworICAgICAgICAgICAgZW5kVGVzdCgpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIHBvc3RTZXROZWVkc1JlZHJhd1RvTWFpblRocmVhZCgp
OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgYm9vbCBtX2FuaW1hdGlvblJlcXVlc3RlZDsKK307CisKK1RFU1RfRihD
Q0xheWVyVHJlZUhvc3RUZXN0Wm9vbUFuaW1hdGlvbiwgcnVuVGVzdCkKK3sKKyAgICBydW5UZXN0
KHRydWUpOworfQorCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0U2V0VmlzaWJsZSA6IHB1Ymxp
YyBDQ0xheWVyVHJlZUhvc3RUZXN0IHsKIHB1YmxpYzoKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126340</attachid>
            <date>2012-02-09 11:44:22 -0800</date>
            <delta_ts>2012-02-09 13:17:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77872-20120209144421.patch</filename>
            <type>text/plain</type>
            <size>15694</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTE4NTQ2NzM3NDUxNDA5
ZjY3MDM1MWQ4NDBiZGY3ZTJjMTRhNWViYy4uNmNlY2EzNTNkNDhiN2Q3OTI3ZWMzZjNiMTM0MDhm
OWUwOTA2OWFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTAyLTA5ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEFkZCBzdXBwb3J0IGZvciBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRG91YmxlVGFwIG9uIEND
IGltcGwgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03Nzg3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVuaXQgdGVzdCBhZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29w
aWVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0Ojp6b29tQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oOgorICAgICAgICAoQ0NQcm94eSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojp6b29tQW5pbWF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDU2luZ2xlVGhyZWFk
UHJveHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6em9vbUFuaW1hdGlv
bik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6
OnJlcXVlc3Rab29tQW5pbWF0aW9uT25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFBy
b3h5KToKKwogMjAxMi0wMi0wOSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVuYW1lIERPTUVkaXRvciB0byBET01QYXRjaFN1
cHBvcnQsIG1vdmUgdW5kb2FibGUgYWN0aW9ucyBmcm9tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDA0YjVhYWQ0YWYxMjI3YjdhYzg5NDA2OGZlN2JmYWEyMDMwMzg2NDYuLjc4N2RmYzg1
NTM4MTZhOTNhOWU1ZDk1Y2NhMzk2MWM4NzEyOGJkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDItMDkgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1h
Y2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRkIHN1cHBvcnQgZm9y
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVEb3VibGVUYXAgb24gQ0MgaW1wbCB0aHJlYWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODcyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
Onpvb21BbmltYXRpb24pOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAo
V2ViVmlld0ltcGwpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgor
ICAgICAgICAoV1RGKToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdFRlc3Rab29tQW5pbWF0aW9u
KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFpvb21BbmltYXRpb246OkNDTGF5
ZXJUcmVlSG9zdFRlc3Rab29tQW5pbWF0aW9uKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVI
b3N0VGVzdFpvb21BbmltYXRpb246OmJlZ2luVGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJU
cmVlSG9zdFRlc3Rab29tQW5pbWF0aW9uOjpyZXF1ZXN0Wm9vbUFuaW1hdGlvbik6CisgICAgICAg
IChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Rab29tQW5pbWF0aW9uOjpkcmF3TGF5ZXJzT25DQ1Ro
cmVhZCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Rab29tQW5pbWF0aW9uOjph
cHBseVNjcm9sbEFuZFNjYWxlKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFpv
b21BbmltYXRpb246OmNvbW1pdENvbXBsZXRlT25DQ1RocmVhZCk6CisgICAgICAgIChXVEY6OkND
TGF5ZXJUcmVlSG9zdFRlc3Rab29tQW5pbWF0aW9uOjphZnRlclRlc3QpOgorICAgICAgICAoV1RG
OjpURVNUX0YpOgorCiAyMDEyLTAyLTA5ICBKb25hdGhhbiBCYWNrZXIgIDxiYWNrZXJAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIHNldE5lZWRzUmVkcmF3IHRvIFdlYldp
ZGdldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3Bp
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKaW5kZXgg
MzlkMTFiNTAxMGYzNDJiNjBkNzJkYjNkYjUwZjBmNDE0Y2MxMDhhYy4uMThkY2M4ODlkOTg0MmY3
Zjg3OTQ0ZDQzMzkyYjA3MWNjMzY2ZTQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
cm9zc1RocmVhZENvcGllci5oCkBAIC00MSwxNCArNDEsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0gICAgY2xhc3MgSW50UmVjdDsKLSAgICBjbGFzcyBLVVJMOwotICAgIGNsYXNzIFJl
c291cmNlRXJyb3I7Ci0gICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotICAgIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7Ci0gICAgc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE7
Ci0gICAgc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YTsKLSAgICBzdHJ1Y3Qg
VGhyZWFkYWJsZUxvYWRlck9wdGlvbnM7CitjbGFzcyBJbnRTaXplOworY2xhc3MgSW50UmVjdDsK
K2NsYXNzIEtVUkw7CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK3N0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVz
cG9uc2VEYXRhOworc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YTsKK3N0cnVj
dCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9uczsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBDcm9zc1RocmVhZENvcGllclBhc3NUaHJvdWdoIHsKICAgICAgICAgdHlwZWRlZiBUIFR5
cGU7CkBAIC03Miw2ICs3Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBJbnRSZWN0PiA6IHB1
YmxpYyBDcm9zc1RocmVhZENvcGllclBhc3NUaHJvdWdoPEludFJlY3Q+IHsKICAgICB9OwogCisg
ICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwg
SW50U2l6ZT4gOiBwdWJsaWMgQ3Jvc3NUaHJlYWRDb3BpZXJQYXNzVGhyb3VnaDxJbnRTaXplPiB7
CisgICAgfTsKKwogICAgIC8vIEN1c3RvbSBjb3B5IG1ldGhvZHMuCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgdHJ1ZSwgVD4gewog
ICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFdURjo6UmVtb3ZlVGVtcGxhdGU8VCwgUmVmUHRyPjo6
VHlwZSBUeXBlV2l0aG91dFJlZlB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmlu
ZGV4IDE4NjQ5MDk1MjdmMjY2NDc5ODM0ZTM3OTFiYjFlNjBmN2NlYjA1YTkuLjI4Njc1MWQwZjVl
NTkzOGZkODIxMGViODNlMDUwNjUxYWE1OGE2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmNwcApAQCAtMzU2LDYgKzM1NiwxMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0SGF2
ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sIGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMpCiAgICAgbV9w
cm94eS0+c2V0TmVlZHNDb21taXQoKTsKIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3Q6Onpvb21B
bmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBm
bG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uKQoreworICAgIG1fcHJveHktPnpvb21BbmltYXRp
b24odGFyZ2V0UG9zaXRpb24sIHVzZUFuY2hvciwgc2NhbGUsIGR1cmF0aW9uKTsKK30KIAogdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6Omxvc2VDb21wb3NpdG9yQ29udGV4dChpbnQgbnVtVGltZXMpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGU4MmYyOTgzMDQ3ZWZjYjEzYTA5OWY5
YWRiNzUyZjJiMThhZWY1MTcuLmJlMjllN2I0OGQ2MmNmMzU5ZTBiZTJmM2IyMTI5ZGE2ODRmYzdj
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0xODgsNiArMTg4LDggQEAgcHVi
bGljOgogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgd2Ugc2hvdWxkIGFib3J0IHRoaXMgZnJhbWUg
ZHVlIHRvIGluaXRpYWxpemF0aW9uIGZhaWx1cmUuCiAgICAgYm9vbCB1cGRhdGVMYXllcnMoKTsK
IAorICAgIHZvaWQgem9vbUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiwgYm9vbCwgZmxvYXQsIGRv
dWJsZSk7CisKICAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CiAgICAgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxl
KGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmKTsKICAgICB2b2lkIHN0YXJ0UmF0ZUxpbWl0ZXIo
R3JhcGhpY3NDb250ZXh0M0QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApp
bmRleCA0MzNmYWRhNjgwOGU3NDcyNzBiYWNjNGM3OTU5OTA4MGQwNTc3NTU5Li5jYTU2NTQ5OTg0
ODc5NWE3ODg0YjBkZWFmMjljODM2OTdjY2YzYzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oCkBAIC0xMTcsNiArMTE3LDggQEAgcHVibGljOgogICAgIC8vIGxheWVyIHBy
b3BlcnRpZXMuIFRoaXMgZnVuY3Rpb24gb3ZlcnJpZGVzIHRoZSBkYW1hZ2UgcmVnaW9uIGZvciB0
aGUgbmV4dCBkcmF3IGN5Y2xlLgogICAgIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZSgpOwog
CisgICAgdm9pZCB6b29tQW5pbWF0aW9uKGNvbnN0IEludFNpemUmLCBib29sLCBmbG9hdCwgZG91
YmxlKTsKKwogcHJvdGVjdGVkOgogICAgIENDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NTZXR0
aW5ncyYsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsKICAgICBDQ0xheWVyVHJlZUhvc3RJ
bXBsQ2xpZW50KiBtX2NsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAppbmRleCA0NGFhY2NlYjBhN2ZmNDRjODk2
MTk0Y2ZiOGQ4YmZiNTBiNGYxNzlmLi5kYzhjYWM2NjU4MGM4ZGE4NWYzNmQ5Y2Y1N2VlMDdjMzE3
NWIxZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC01Nyw2ICs1Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgYm9vbCBjb21wb3NpdGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJl
Y3QmKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgem9vbUFuaW1hdGlvbihjb25zdCBJbnRTaXpl
JiwgYm9vbCwgZmxvYXQsIGRvdWJsZSkgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaEFs
bFJlbmRlcmluZygpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1N0YXJ0ZWQoKSBjb25zdCA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDA3MjY1ZGI3
NzI4MGEwZTc1MzZhN2VlMGQ5NTAwMThhY2VjOTNkNmMuLmM5ODA0YzgzNzI2ZmJmNWRjMGRjNGVi
ZWI3NzhlM2FkMWRhYjJjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
Y3BwCkBAIC05Myw2ICs5MywxMSBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbXBvc2l0
ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYgcmVjdAogICAgIHJldHVy
biB0cnVlOwogfQogCit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6Onpvb21BbmltYXRpb24oY29u
c3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwg
ZG91YmxlIGR1cmF0aW9uKQoreworICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnN0YXJ0UGFnZVNj
YWxlQW5pbWF0aW9uKHRhcmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBtb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWUoKSAqIDEwMDAuMCwgZHVyYXRpb24pOworfQorCiBHcmFwaGljc0Nv
bnRleHQzRCogQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29udGV4dCgpCiB7CiAgICAgQVNTRVJUKEND
UHJveHk6OmlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
aAppbmRleCBhOTQ0MDVmM2Q5M2VjYTIwOGRlMjBmZGY4YmRhYzY5ZjA0OTdmMzc0Li5hNTU3YThj
ZTdkOGQ3OGFkNGI5Y2U2YzU0ZGQzMTk0NzUxNGNmMTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENDUHJv
eHkgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlQW5kUmVhZGJhY2so
dm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHpvb21Bbmlt
YXRpb24oY29uc3QgSW50U2l6ZSYsIGJvb2wsIGZsb2F0LCBkb3VibGUpOwogICAgIHZpcnR1YWwg
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoQWxs
UmVuZGVyaW5nKCk7CiAgICAgdmlydHVhbCBib29sIGlzU3RhcnRlZCgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCBiOWE2NmJkNDA2YmQ0MjcwYmUwMzUzOGQ4Zjg5NjBh
ODMwNzUzMDk1Li41MWE1N2FkMjA0Nzg2OTI4M2I3OWM3NDU3NWYzZDQyY2EwOTU5MWVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMTMzLDYgKzEzMywxOSBAQCB2b2lkIENDVGhy
ZWFkUHJveHk6OnJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChSZWFkYmFja1JlcXVlc3QqIHJl
cXVlc3QpCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldE5lZWRzRm9yY2VkUmVkcmF3
KCk7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6em9vbUFuaW1hdGlvbihjb25zdCBJbnRTaXpl
JiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVy
YXRpb24pCit7CisgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKKyAgICBDQ1By
b3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NU
aHJlYWRQcm94eTo6cmVxdWVzdFpvb21BbmltYXRpb25PbkltcGxUaHJlYWQsIHRhcmdldFBvc2l0
aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBkdXJhdGlvbikpOworfQorCit2b2lkIENDVGhyZWFkUHJv
eHk6OnJlcXVlc3Rab29tQW5pbWF0aW9uT25JbXBsVGhyZWFkKEludFNpemUgdGFyZ2V0UG9zaXRp
b24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uKQoreworICAg
IEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9z
dEltcGwpCisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0
aW9uKHRhcmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKSAqIDEwMDAuMCwgZHVyYXRpb24pOworfQorCiBHcmFwaGljc0NvbnRleHQzRCog
Q0NUaHJlYWRQcm94eTo6Y29udGV4dCgpCiB7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmgKaW5kZXggODdhZDI3ZDBlYWM1Zjg1ZDI3NmFiN2QwODliZGJlMmQ3ODkzMjIzMy4u
YmI3ODFhMTdkMzU1NTRlZWNhOTZiZDk3MThkNmFkYTk5MTQ3MjJmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDQ1Byb3h5IGlt
cGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCBib29sIGNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQg
KnBpeGVscywgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCB6b29tQW5pbWF0aW9u
KGNvbnN0IEludFNpemUmLCBib29sLCBmbG9hdCwgZG91YmxlKTsKICAgICB2aXJ0dWFsIEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaEFsbFJlbmRl
cmluZygpOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0YXJ0ZWQoKSBjb25zdDsKQEAgLTk3LDYgKzk4
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG9idGFpbkJlZ2luRnJhbWVBbmRDb21taXRUYXNrRnJv
bUNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NUaHJlYWQ6OlRhc2sqKik7CiAgICAgdm9p
ZCBiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAg
ICB2b2lkIHJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChSZWFkYmFja1JlcXVlc3QqKTsKKyAg
ICB2b2lkIHJlcXVlc3Rab29tQW5pbWF0aW9uT25JbXBsVGhyZWFkKEludFNpemUsIGJvb2wsIGZs
b2F0LCBkb3VibGUpOwogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKEND
Q29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBpbml0aWFsaXplSW1wbE9uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnRleHRPbkltcGxUaHJl
YWQoR3JhcGhpY3NDb250ZXh0M0QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcAppbmRleCAwYzllNDY1MGYzMDU0YTRjOTFkMDYxMTg0NGJkZDhmZmI4NTA1ZjFm
Li4zYTM1NmU2OTZjZDE4OGU5OGE2OWM3YzVlNTgyY2Q1ODMzNzliNzBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC02MjMsNiArNjIzLDEyIEBAIGJv
b2wgV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50
KQogCiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9CisKK3ZvaWQgV2ViVmlld0ltcGw6Onpvb21Bbmlt
YXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbCwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IG5ld1Nj
YWxlKQoreworICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCisgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+em9vbUFuaW1hdGlvbihJbnRTaXplKHNjcm9sbC54KCksIHNjcm9sbC55KCkpLCB1c2VBbmNo
b3IsIG5ld1NjYWxlLCA1MDAuMCk7Cit9CiAjZW5kaWYKIAogYm9vbCBXZWJWaWV3SW1wbDo6a2V5
RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCBkNDJiYzk0YmUyZmEwOGU0MTE2NTI1Y2VjMTY0NGM3
NDhkMjRlNWIxLi4yZGY5Nzc0ZTk4MDQ3NmVhYTdmNTU0NTc5MjdiMjMwMDU5ZDU2MjliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTQ1LDYgKzQ1LDcgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiSW50UG9pbnQu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVy
SW1wbC5oIgogI2luY2x1ZGUgIlBhZ2VPdmVybGF5TGlzdC5oIgpAQCAtMzE1LDYgKzMxNiw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIG1vdXNlRG91YmxlQ2xpY2soY29uc3QgV2ViTW91c2VFdmVudCYp
OwogICAgIGJvb2wgbW91c2VXaGVlbChjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmKTsKICAgICBi
b29sIGdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKKyAgICB2b2lkIHpvb21B
bmltYXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sLCBmbG9hdCk7CiAgICAgYm9v
bCBrZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAgICAgYm9vbCBjaGFyRXZlbnQo
Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIGJvb2wgdG91Y2hFdmVudChjb25zdCBXZWJU
b3VjaEV2ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCBmYzQxNGY3Mzk3MTQ1ODNhZGExYTYzNTZjYTQyYTA1
OGRmMjM0NTFkLi5mNTU2YTZiZjM0YzQyZjQ1MTdkYTQwZmE2NjcyNzBjZmMzODNmZTY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVz
dC5jcHAKQEAgLTkzOCw2ICs5MzgsNzUgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RTY3Jv
bGxNdWx0aXBsZVJlZHJhdywgRElTQUJMRURfcnVuTXVsdGlUaHJlYWQpCiAgICAgcnVuVGVzdFRo
cmVhZGVkKCk7CiB9CiAKKy8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHpvb21BbmltYXRpb24g
ZXZlbnRzIHByb3BhZ2F0ZSBjb3JyZWN0bHkgZnJvbSBDQ0xheWVyVHJlZUhvc3QgdG8KKy8vIEND
TGF5ZXJUcmVlSG9zdEltcGwgaW4gdGhlIE1UIGNvbXBvc2l0b3IuCitjbGFzcyBDQ0xheWVyVHJl
ZUhvc3RUZXN0Wm9vbUFuaW1hdGlvbiA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0IHsKK3B1
YmxpYzoKKworICAgIENDTGF5ZXJUcmVlSG9zdFRlc3Rab29tQW5pbWF0aW9uKCkKKyAgICAgICAg
OiBtX2FuaW1hdGlvblJlcXVlc3RlZChmYWxzZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKKyAgICB7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+cm9vdExheWVyKCktPnNldFNjcm9sbGFibGUodHJ1ZSk7CisgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+cm9vdExheWVyKCktPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KCkpOworICAgICAg
ICBwb3N0U2V0TmVlZHNSZWRyYXdUb01haW5UaHJlYWQoKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
dm9pZCByZXF1ZXN0Wm9vbUFuaW1hdGlvbih2b2lkICogc2VsZikKKyAgICB7CisgICAgICAgIEND
TGF5ZXJUcmVlSG9zdFRlc3Rab29tQW5pbWF0aW9uKiB0ZXN0ID0gc3RhdGljX2Nhc3Q8Q0NMYXll
clRyZWVIb3N0VGVzdFpvb21BbmltYXRpb24qPihzZWxmKTsKKyAgICAgICAgaWYgKHRlc3QtPmxh
eWVyVHJlZUhvc3QoKSkKKyAgICAgICAgICAgIHRlc3QtPmxheWVyVHJlZUhvc3QoKS0+em9vbUFu
aW1hdGlvbihJbnRTaXplKCksIGZhbHNlLCAxLjI1LCAwKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAg
ICB7CisgICAgICAgIGltcGwtPnJvb3RMYXllcigpLT5zZXRTY3JvbGxhYmxlKHRydWUpOworICAg
ICAgICBpbXBsLT5yb290TGF5ZXIoKS0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoKSk7Cisg
ICAgICAgIGltcGwtPnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyhpbXBsLT5wYWdlU2NhbGUo
KSwgMC41LCAyKTsKKworICAgICAgICAvLyBXZSByZXF1ZXN0IHpvb20gYW5pbWF0aW9uIG9ubHkg
b25jZS4KKyAgICAgICAgaWYgKCFtX2FuaW1hdGlvblJlcXVlc3RlZCkgeworICAgICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChDQ0xheWVyVHJlZUhvc3RUZXN0Wm9vbUFuaW1hdGlvbjo6cmVxdWVz
dFpvb21BbmltYXRpb24sIHRoaXMpOworICAgICAgICAgICAgbV9hbmltYXRpb25SZXF1ZXN0ZWQg
PSB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xs
QW5kU2NhbGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHNjYWxlKQorICAgIHsK
KyAgICAgICAgSW50UG9pbnQgcG9zaXRpb24gPSBtX2xheWVyVHJlZUhvc3QtPnJvb3RMYXllcigp
LT5zY3JvbGxQb3NpdGlvbigpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnJvb3RMYXllcigp
LT5zZXRTY3JvbGxQb3NpdGlvbihwb3NpdGlvbiArIHNjcm9sbERlbHRhKTsKKyAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5zZXRQYWdlU2NhbGUoc2NhbGUpOworICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkK
KyAgICB7CisgICAgICAgIGltcGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKKyAgICAgICAgLy8g
V2UgZ2V0IG9uZSBjb21taXQgYmVmb3JlIHRoZSBmaXJzdCBkcmF3LCBhbmQgdGhlIGFuaW1hdGlv
biBkb2Vzbid0IGhhcHBlbiB1bnRpbCB0aGUgc2Vjb25kIGRyYXcsCisgICAgICAgIC8vIHNvIHJl
c3VsdHMgYXZhaWxhYmxlIG9uIHRoZSB0aGlyZCBjb21taXQuCisgICAgICAgIGlmIChpbXBsLT5m
cmFtZU51bWJlcigpID09IDIpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgxLjI1LCBpbXBsLT5w
YWdlU2NhbGUoKSk7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgcG9zdFNldE5lZWRzUmVkcmF3VG9NYWluVGhyZWFkKCk7CisgICAgfQorCisgICAg
dmlydHVhbCB2b2lkIGFmdGVyVGVzdCgpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBi
b29sIG1fYW5pbWF0aW9uUmVxdWVzdGVkOworfTsKKworVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRl
c3Rab29tQW5pbWF0aW9uLCBydW5UZXN0KQoreworICAgIHJ1blRlc3QodHJ1ZSk7Cit9CisKIGNs
YXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RTZXRWaXNpYmxlIDogcHVibGljIENDTGF5ZXJUcmVlSG9z
dFRlc3QgewogcHVibGljOgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126356</attachid>
            <date>2012-02-09 13:17:06 -0800</date>
            <delta_ts>2012-02-09 13:21:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77872-20120209161705.patch</filename>
            <type>text/plain</type>
            <size>16005</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTE4NTQ2NzM3NDUxNDA5
ZjY3MDM1MWQ4NDBiZGY3ZTJjMTRhNWViYy4uZjVlYjAxOGYxODMyNmY2ZTRjOTkwYjEwNGViODUx
YTYxYzdlY2U5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTAyLTA5ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEFkZCBzdXBwb3J0IGZvciBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRG91YmxlVGFwIG9uIEND
IGltcGwgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03Nzg3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIHVuaXQgdGVzdC4KKworICAgICAgICAqIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29w
aWVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDQ0xheWVy
VHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKEND
UHJveHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6
c3RhcnRQYWdlU2NhbGVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAg
ICAgICAoQ0NTaW5nbGVUaHJlYWRQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1h
dGlvbk9uSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoQ0NUaHJlYWRQcm94eSk6CisKIDIwMTItMDIt
MDkgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IHJlbmFtZSBET01FZGl0b3IgdG8gRE9NUGF0Y2hTdXBwb3J0LCBtb3ZlIHVuZG9h
YmxlIGFjdGlvbnMgZnJvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwNGI1YWFkNGFm
MTIyN2I3YWM4OTQwNjhmZTdiZmFhMjAzMDM4NjQ2Li4yZDEyZGM2ZTljMTg3ZmU4NGJlOGM1MTZl
MTJkODJhNDRkYTdjNWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3
IEBACisyMDEyLTAyLTA5ICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBzdXBwb3J0IGZvciBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlRG91YmxlVGFwIG9uIENDIGltcGwgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzdGFydFBhZ2VTY2FsZUFu
aW1hdGlvbik6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3
SW1wbCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAg
IChXVEYpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0VGVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0
aW9uKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFN0YXJ0UGFnZVNjYWxlQW5p
bWF0aW9uOjpDQ0xheWVyVHJlZUhvc3RUZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb24pOgorICAg
ICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb246OmJl
Z2luVGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTdGFydFBhZ2VTY2Fs
ZUFuaW1hdGlvbjo6cmVxdWVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdU
Rjo6Q0NMYXllclRyZWVIb3N0VGVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uOjpkcmF3TGF5ZXJz
T25DQ1RocmVhZCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTdGFydFBhZ2VT
Y2FsZUFuaW1hdGlvbjo6YXBwbHlTY3JvbGxBbmRTY2FsZSk6CisgICAgICAgIChXVEY6OkNDTGF5
ZXJUcmVlSG9zdFRlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbjo6Y29tbWl0Q29tcGxldGVPbkND
VGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFN0YXJ0UGFnZVNjYWxl
QW5pbWF0aW9uOjphZnRlclRlc3QpOgorICAgICAgICAoV1RGOjpURVNUX0YpOgorCiAyMDEyLTAy
LTA5ICBKb25hdGhhbiBCYWNrZXIgIDxiYWNrZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gQWRkIHNldE5lZWRzUmVkcmF3IHRvIFdlYldpZGdldApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKaW5kZXggMzlkMTFiNTAxMGYzNDJiNjBkNzJk
YjNkYjUwZjBmNDE0Y2MxMDhhYy4uM2I2MDc2MTQyY2RhYWMyMTRhZDAwOTM2ZmNmYjNjNTA0YTNm
ZDE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3Bp
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCkBA
IC00Miw2ICs0Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBJbnRSZWN0
OworICAgIGNsYXNzIEludFNpemU7CiAgICAgY2xhc3MgS1VSTDsKICAgICBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTcyLDYgKzczLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVy
QmFzZTxmYWxzZSwgZmFsc2UsIEludFJlY3Q+IDogcHVibGljIENyb3NzVGhyZWFkQ29waWVyUGFz
c1Rocm91Z2g8SW50UmVjdD4gewogICAgIH07CiAKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9z
c1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBJbnRTaXplPiA6IHB1YmxpYyBDcm9zc1Ro
cmVhZENvcGllclBhc3NUaHJvdWdoPEludFNpemU+IHsKKyAgICB9OworCiAgICAgLy8gQ3VzdG9t
IGNvcHkgbWV0aG9kcy4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJl
YWRDb3BpZXJCYXNlPGZhbHNlLCB0cnVlLCBUPiB7CiAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
V1RGOjpSZW1vdmVUZW1wbGF0ZTxULCBSZWZQdHI+OjpUeXBlIFR5cGVXaXRob3V0UmVmUHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMTg2NDkwOTUyN2YyNjY0Nzk4MzRl
Mzc5MWJiMWU2MGY3Y2ViMDVhOS4uYTAzOGUzNmU3MDZiYWMwZWJkMzMzMzBlNGE3ZDU2MjNlY2I2
YTcwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0zNTYsNiArMzU2LDEw
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wg
aGF2ZVdoZWVsRXZlbnRIYW5kbGVycykKICAgICBtX3Byb3h5LT5zZXROZWVkc0NvbW1pdCgpOwog
fQogCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3Qg
SW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91
YmxlIGR1cmF0aW9uU2VjKQoreworICAgIG1fcHJveHktPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9u
KHRhcmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBkdXJhdGlvblNlYyk7Cit9CiAKIHZv
aWQgQ0NMYXllclRyZWVIb3N0Ojpsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBlODJmMjk4MzA0N2VmY2IxM2EwOTlm
OWFkYjc1MmYyYjE4YWVmNTE3Li5kODFiOGU0ZGFmZjFmMGU2ZmQ4ODc4ZWIxMmIxMDZjZDM3ZDcz
ZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMTg4LDYgKzE4OCw4IEBAIHB1
YmxpYzoKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHdlIHNob3VsZCBhYm9ydCB0aGlzIGZyYW1l
IGR1ZSB0byBpbml0aWFsaXphdGlvbiBmYWlsdXJlLgogICAgIGJvb2wgdXBkYXRlTGF5ZXJzKCk7
CiAKKyAgICB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdl
dFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNl
Yyk7CisKICAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0
M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CiAgICAgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNv
bnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmKTsKICAgICB2b2lkIHN0YXJ0UmF0ZUxpbWl0ZXIoR3Jh
cGhpY3NDb250ZXh0M0QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRl
eCA0MzNmYWRhNjgwOGU3NDcyNzBiYWNjNGM3OTU5OTA4MGQwNTc3NTU5Li41ZWUwMzk5ZjViNDU3
MjI1YTkxZGZmNmI3NzdjZDVkOGE3NmQ2YTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oCkBAIC0xMTcsNiArMTE3LDggQEAgcHVibGljOgogICAgIC8vIGxheWVyIHByb3Bl
cnRpZXMuIFRoaXMgZnVuY3Rpb24gb3ZlcnJpZGVzIHRoZSBkYW1hZ2UgcmVnaW9uIGZvciB0aGUg
bmV4dCBkcmF3IGN5Y2xlLgogICAgIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZSgpOwogCisg
ICAgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0cmFnZXRQb3Np
dGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpOwor
CiBwcm90ZWN0ZWQ6CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ1NldHRpbmdzJiwg
Q0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwogICAgIENDTGF5ZXJUcmVlSG9zdEltcGxDbGll
bnQqIG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IDQ0YWFjY2ViMGE3ZmY0NGM4OTYxOTRjZmI4
ZDhiZmI1MGI0ZjE3OWYuLmI0MzU4YWFkZDc3ZjI3OGM4MWRmNmQyZjZjZWE1M2ViZmYwNTFhYWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Byb3h5LmgKQEAgLTU3LDYgKzU3LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBi
b29sIGNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYpID0g
MDsKIAorICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRT
aXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUg
ZHVyYXRpb25TZWMpID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmco
KSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdGFydGVkKCkgY29uc3QgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCAwNzI2NWRiNzcyODBhMGU3NTM2
YTdlZTBkOTUwMDE4YWNlYzkzZDZjLi4xN2E2OTU5M2E2NDNjZmZlODM3MTc2MTQ5N2U0YmVjMGEx
YzcxZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtOTMs
NiArOTMsMTEgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21wb3NpdGVBbmRSZWFkYmFj
ayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAordm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25z
dCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBk
b3VibGUgZHVyYXRpb25TZWMpCit7CisgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c3RhcnRQYWdl
U2NhbGVBbmltYXRpb24odGFyZ2V0UG9zaXRpb24sIHVzZUFuY2hvciwgc2NhbGUsIG1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZSgpICogMTAwMC4wLCBkdXJhdGlvblNlYyAqIDEwMDAuMCk7Cit9
CisKIEdyYXBoaWNzQ29udGV4dDNEKiBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb250ZXh0KCkKIHsK
ICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oCmluZGV4IGE5NDQwNWYzZDkzZWNhMjA4ZGUyMGZkZjhiZGFjNjlmMDQ5
N2YzNzQuLmFkZGE5ZjE0ZTllNTRkYmEwNWFmMzBkNTc4NjgzOGM0NjNkMzQ0NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgog
CiAgICAgLy8gQ0NQcm94eSBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjb21wb3Np
dGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRp
b24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKICAg
ICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lk
IGZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0YXJ0ZWQoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggYjlhNjZiZDQwNmJkNDI3MGJlMDM1
MzhkOGY4OTYwYTgzMDc1MzA5NS4uM2VhNzJlMmExYzcyZmIzNTY5MTQ4OTI3ZWNiMTUxMDQ3Mjk4
OTQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTEzMyw2ICsxMzMsMTkgQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpyZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tS
ZXF1ZXN0KiByZXF1ZXN0KQogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc0Zv
cmNlZFJlZHJhdygpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnN0YXJ0UGFnZVNjYWxlQW5p
bWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxv
YXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNN
YWluVGhyZWFkKCkpOworICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRl
Q0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpyZXF1ZXN0U3RhcnRQYWdlU2NhbGVB
bmltYXRpb25PbkltcGxUaHJlYWQsIHRhcmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBk
dXJhdGlvblNlYykpOworfQorCit2b2lkIENDVGhyZWFkUHJveHk6OnJlcXVlc3RTdGFydFBhZ2VT
Y2FsZUFuaW1hdGlvbk9uSW1wbFRocmVhZChJbnRTaXplIHRhcmdldFBvc2l0aW9uLCBib29sIHVz
ZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKK3sKKyAgICBBU1NFUlQo
Q0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIGlmIChtX2xheWVyVHJlZUhvc3RJbXBsKQor
ICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJn
ZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCkgKiAxMDAwLjAsIGR1cmF0aW9uU2VjICogMTAwMC4wKTsKK30KKwogR3JhcGhpY3NDb250ZXh0
M0QqIENDVGhyZWFkUHJveHk6OmNvbnRleHQoKQogewogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5oCmluZGV4IDg3YWQyN2QwZWFjNWY4NWQyNzZhYjdkMDg5YmRiZTJkNzg5MzIy
MzMuLjIzYzI5ZjQ4ZmEzMmI3YWM0ODgxNTgwMmNhMDM1OGVlYTFkODgwMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ0NQcm94
eSBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGVBbmRSZWFkYmFjayh2
b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdl
U2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5j
aG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKICAgICB2aXJ0dWFsIEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaEFsbFJlbmRl
cmluZygpOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0YXJ0ZWQoKSBjb25zdDsKQEAgLTk3LDYgKzk4
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG9idGFpbkJlZ2luRnJhbWVBbmRDb21taXRUYXNrRnJv
bUNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NUaHJlYWQ6OlRhc2sqKik7CiAgICAgdm9p
ZCBiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAg
ICB2b2lkIHJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChSZWFkYmFja1JlcXVlc3QqKTsKKyAg
ICB2b2lkIHJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbk9uSW1wbFRocmVhZChJbnRTaXpl
IHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJh
dGlvblNlYyk7CiAgICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21w
bGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIGluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBpbml0aWFsaXplQ29udGV4dE9uSW1wbFRocmVhZChH
cmFwaGljc0NvbnRleHQzRCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCmluZGV4IDBjOWU0NjUwZjMwNTRhNGM5MWQwNjExODQ0YmRkOGZmYjg1MDVmMWYuLjBm
MzUzNzkwNjg0N2Y0NTIyNmY0N2MxZWU2NzA5ODdhODkxNGIxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTYyMyw2ICs2MjMsMTIgQEAgYm9vbCBX
ZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiAK
ICAgICByZXR1cm4gaGFuZGxlZDsKIH0KKwordm9pZCBXZWJWaWV3SW1wbDo6c3RhcnRQYWdlU2Nh
bGVBbmltYXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbCwgYm9vbCB1c2VBbmNob3IsIGZsb2F0
IG5ld1NjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpCit7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9z
dCkKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihJbnRT
aXplKHNjcm9sbC54KCksIHNjcm9sbC55KCkpLCB1c2VBbmNob3IsIG5ld1NjYWxlLCBkdXJhdGlv
blNlYyk7Cit9CiAjZW5kaWYKIAogYm9vbCBXZWJWaWV3SW1wbDo6a2V5RXZlbnQoY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaAppbmRleCBkNDJiYzk0YmUyZmEwOGU0MTE2NTI1Y2VjMTY0NGM3NDhkMjRlNWIxLi4xOTdm
NTgyZTRlOWVkMGM1MmE2ODhhMTFmZmUxZTA1MzA5ZmI0YzZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oIgogI2luY2x1
ZGUgIlBhZ2VPdmVybGF5TGlzdC5oIgpAQCAtMzE1LDYgKzMxNiw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIG1vdXNlRG91YmxlQ2xpY2soY29uc3QgV2ViTW91c2VFdmVudCYpOwogICAgIGJvb2wgbW91
c2VXaGVlbChjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmKTsKICAgICBib29sIGdlc3R1cmVFdmVu
dChjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKKyAgICB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0
aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNo
b3IsIGZsb2F0IG5ld1NjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpOwogICAgIGJvb2wga2V5RXZl
bnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIGJvb2wgY2hhckV2ZW50KGNvbnN0IFdl
YktleWJvYXJkRXZlbnQmKTsKICAgICBib29sIHRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVu
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0VGVzdC5jcHAKaW5kZXggZmM0MTRmNzM5NzE0NTgzYWRhMWE2MzU2Y2E0MmEwNThkZjIzNDUx
ZC4uNzMwNWYwOTM3NzQ0YzFiYTBhOGIzNjMyOTBkMTRiMGI0NTljYjA4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBA
IC05MzgsNiArOTM4LDc1IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0U2Nyb2xsTXVsdGlw
bGVSZWRyYXcsIERJU0FCTEVEX3J1bk11bHRpVGhyZWFkKQogICAgIHJ1blRlc3RUaHJlYWRlZCgp
OwogfQogCisvLyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlv
biBldmVudHMgcHJvcGFnYXRlIGNvcnJlY3RseSBmcm9tIENDTGF5ZXJUcmVlSG9zdCB0bworLy8g
Q0NMYXllclRyZWVIb3N0SW1wbCBpbiB0aGUgTVQgY29tcG9zaXRvci4KK2NsYXNzIENDTGF5ZXJU
cmVlSG9zdFRlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbiA6IHB1YmxpYyBDQ0xheWVyVHJlZUhv
c3RUZXN0IHsKK3B1YmxpYzoKKworICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RTdGFydFBhZ2VTY2Fs
ZUFuaW1hdGlvbigpCisgICAgICAgIDogbV9hbmltYXRpb25SZXF1ZXN0ZWQoZmFsc2UpCisgICAg
eworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQorICAgIHsKKyAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIoKS0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKKyAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIoKS0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9p
bnQoKSk7CisgICAgICAgIHBvc3RTZXROZWVkc1JlZHJhd1RvTWFpblRocmVhZCgpOworICAgIH0K
KworICAgIHN0YXRpYyB2b2lkIHJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih2b2lkKiBz
ZWxmKQorICAgIHsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0VGVzdFN0YXJ0UGFnZVNjYWxlQW5p
bWF0aW9uKiB0ZXN0ID0gc3RhdGljX2Nhc3Q8Q0NMYXllclRyZWVIb3N0VGVzdFN0YXJ0UGFnZVNj
YWxlQW5pbWF0aW9uKj4oc2VsZik7CisgICAgICAgIGlmICh0ZXN0LT5sYXllclRyZWVIb3N0KCkp
CisgICAgICAgICAgICB0ZXN0LT5sYXllclRyZWVIb3N0KCktPnN0YXJ0UGFnZVNjYWxlQW5pbWF0
aW9uKEludFNpemUoKSwgZmFsc2UsIDEuMjUsIDApOworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHsK
KyAgICAgICAgaW1wbC0+cm9vdExheWVyKCktPnNldFNjcm9sbGFibGUodHJ1ZSk7CisgICAgICAg
IGltcGwtPnJvb3RMYXllcigpLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgpKTsKKyAgICAg
ICAgaW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKGltcGwtPnBhZ2VTY2FsZSgpLCAw
LjUsIDIpOworCisgICAgICAgIC8vIFdlIHJlcXVlc3Qgem9vbSBhbmltYXRpb24gb25seSBvbmNl
LgorICAgICAgICBpZiAoIW1fYW5pbWF0aW9uUmVxdWVzdGVkKSB7CisgICAgICAgICAgICBjYWxs
T25NYWluVGhyZWFkKENDTGF5ZXJUcmVlSG9zdFRlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbjo6
cmVxdWVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uLCB0aGlzKTsKKyAgICAgICAgICAgIG1fYW5p
bWF0aW9uUmVxdWVzdGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBmbG9h
dCBzY2FsZSkKKyAgICB7CisgICAgICAgIEludFBvaW50IHBvc2l0aW9uID0gbV9sYXllclRyZWVI
b3N0LT5yb290TGF5ZXIoKS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5yb290TGF5ZXIoKS0+c2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24gKyBzY3JvbGxEZWx0
YSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0UGFnZVNjYWxlKHNjYWxlKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVl
SG9zdEltcGwqIGltcGwpCisgICAgeworICAgICAgICBpbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFz
KCk7CisgICAgICAgIC8vIFdlIGdldCBvbmUgY29tbWl0IGJlZm9yZSB0aGUgZmlyc3QgZHJhdywg
YW5kIHRoZSBhbmltYXRpb24gZG9lc24ndCBoYXBwZW4gdW50aWwgdGhlIHNlY29uZCBkcmF3LAor
ICAgICAgICAvLyBzbyByZXN1bHRzIGF2YWlsYWJsZSBvbiB0aGUgdGhpcmQgY29tbWl0LgorICAg
ICAgICBpZiAoaW1wbC0+ZnJhbWVOdW1iZXIoKSA9PSAyKSB7CisgICAgICAgICAgICBFWFBFQ1Rf
RVEoMS4yNSwgaW1wbC0+cGFnZVNjYWxlKCkpOworICAgICAgICAgICAgZW5kVGVzdCgpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIHBvc3RTZXROZWVkc1JlZHJhd1RvTWFpblRocmVhZCgp
OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgYm9vbCBtX2FuaW1hdGlvblJlcXVlc3RlZDsKK307CisKK1RFU1RfRihD
Q0xheWVyVHJlZUhvc3RUZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb24sIHJ1blRlc3QpCit7Cisg
ICAgcnVuVGVzdCh0cnVlKTsKK30KKwogY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdFNldFZpc2li
bGUgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdCB7CiBwdWJsaWM6CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126359</attachid>
            <date>2012-02-09 13:21:46 -0800</date>
            <delta_ts>2012-02-09 14:05:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77872-20120209162143.patch</filename>
            <type>text/plain</type>
            <size>15990</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTE4NTQ2NzM3NDUxNDA5
ZjY3MDM1MWQ4NDBiZGY3ZTJjMTRhNWViYy4uZjVlYjAxOGYxODMyNmY2ZTRjOTkwYjEwNGViODUx
YTYxYzdlY2U5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTAyLTA5ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEFkZCBzdXBwb3J0IGZvciBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRG91YmxlVGFwIG9uIEND
IGltcGwgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03Nzg3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIHVuaXQgdGVzdC4KKworICAgICAgICAqIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29w
aWVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDQ0xheWVy
VHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKEND
UHJveHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6
c3RhcnRQYWdlU2NhbGVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAg
ICAgICAoQ0NTaW5nbGVUaHJlYWRQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1h
dGlvbk9uSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoQ0NUaHJlYWRQcm94eSk6CisKIDIwMTItMDIt
MDkgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IHJlbmFtZSBET01FZGl0b3IgdG8gRE9NUGF0Y2hTdXBwb3J0LCBtb3ZlIHVuZG9h
YmxlIGFjdGlvbnMgZnJvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwNGI1YWFkNGFm
MTIyN2I3YWM4OTQwNjhmZTdiZmFhMjAzMDM4NjQ2Li4yZDEyZGM2ZTljMTg3ZmU4NGJlOGM1MTZl
MTJkODJhNDRkYTdjNWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3
IEBACisyMDEyLTAyLTA5ICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBzdXBwb3J0IGZvciBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlRG91YmxlVGFwIG9uIENDIGltcGwgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzdGFydFBhZ2VTY2FsZUFu
aW1hdGlvbik6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3
SW1wbCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAg
IChXVEYpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0VGVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0
aW9uKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFN0YXJ0UGFnZVNjYWxlQW5p
bWF0aW9uOjpDQ0xheWVyVHJlZUhvc3RUZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb24pOgorICAg
ICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb246OmJl
Z2luVGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTdGFydFBhZ2VTY2Fs
ZUFuaW1hdGlvbjo6cmVxdWVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdU
Rjo6Q0NMYXllclRyZWVIb3N0VGVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uOjpkcmF3TGF5ZXJz
T25DQ1RocmVhZCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTdGFydFBhZ2VT
Y2FsZUFuaW1hdGlvbjo6YXBwbHlTY3JvbGxBbmRTY2FsZSk6CisgICAgICAgIChXVEY6OkNDTGF5
ZXJUcmVlSG9zdFRlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbjo6Y29tbWl0Q29tcGxldGVPbkND
VGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFN0YXJ0UGFnZVNjYWxl
QW5pbWF0aW9uOjphZnRlclRlc3QpOgorICAgICAgICAoV1RGOjpURVNUX0YpOgorCiAyMDEyLTAy
LTA5ICBKb25hdGhhbiBCYWNrZXIgIDxiYWNrZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gQWRkIHNldE5lZWRzUmVkcmF3IHRvIFdlYldpZGdldApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKaW5kZXggMzlkMTFiNTAxMGYzNDJiNjBkNzJk
YjNkYjUwZjBmNDE0Y2MxMDhhYy4uM2I2MDc2MTQyY2RhYWMyMTRhZDAwOTM2ZmNmYjNjNTA0YTNm
ZDE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3Bp
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCkBA
IC00Miw2ICs0Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBJbnRSZWN0
OworICAgIGNsYXNzIEludFNpemU7CiAgICAgY2xhc3MgS1VSTDsKICAgICBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTcyLDYgKzczLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVy
QmFzZTxmYWxzZSwgZmFsc2UsIEludFJlY3Q+IDogcHVibGljIENyb3NzVGhyZWFkQ29waWVyUGFz
c1Rocm91Z2g8SW50UmVjdD4gewogICAgIH07CiAKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9z
c1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBJbnRTaXplPiA6IHB1YmxpYyBDcm9zc1Ro
cmVhZENvcGllclBhc3NUaHJvdWdoPEludFNpemU+IHsKKyAgICB9OworCiAgICAgLy8gQ3VzdG9t
IGNvcHkgbWV0aG9kcy4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJl
YWRDb3BpZXJCYXNlPGZhbHNlLCB0cnVlLCBUPiB7CiAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
V1RGOjpSZW1vdmVUZW1wbGF0ZTxULCBSZWZQdHI+OjpUeXBlIFR5cGVXaXRob3V0UmVmUHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMTg2NDkwOTUyN2YyNjY0Nzk4MzRl
Mzc5MWJiMWU2MGY3Y2ViMDVhOS4uYTAzOGUzNmU3MDZiYWMwZWJkMzMzMzBlNGE3ZDU2MjNlY2I2
YTcwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0zNTYsNiArMzU2LDEw
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wg
aGF2ZVdoZWVsRXZlbnRIYW5kbGVycykKICAgICBtX3Byb3h5LT5zZXROZWVkc0NvbW1pdCgpOwog
fQogCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3Qg
SW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91
YmxlIGR1cmF0aW9uU2VjKQoreworICAgIG1fcHJveHktPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9u
KHRhcmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBkdXJhdGlvblNlYyk7Cit9CiAKIHZv
aWQgQ0NMYXllclRyZWVIb3N0Ojpsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBlODJmMjk4MzA0N2VmY2IxM2EwOTlm
OWFkYjc1MmYyYjE4YWVmNTE3Li5kODFiOGU0ZGFmZjFmMGU2ZmQ4ODc4ZWIxMmIxMDZjZDM3ZDcz
ZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMTg4LDYgKzE4OCw4IEBAIHB1
YmxpYzoKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHdlIHNob3VsZCBhYm9ydCB0aGlzIGZyYW1l
IGR1ZSB0byBpbml0aWFsaXphdGlvbiBmYWlsdXJlLgogICAgIGJvb2wgdXBkYXRlTGF5ZXJzKCk7
CiAKKyAgICB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdl
dFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNl
Yyk7CisKICAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0
M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CiAgICAgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNv
bnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmKTsKICAgICB2b2lkIHN0YXJ0UmF0ZUxpbWl0ZXIoR3Jh
cGhpY3NDb250ZXh0M0QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRl
eCA0MzNmYWRhNjgwOGU3NDcyNzBiYWNjNGM3OTU5OTA4MGQwNTc3NTU5Li41ZWUwMzk5ZjViNDU3
MjI1YTkxZGZmNmI3NzdjZDVkOGE3NmQ2YTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oCkBAIC0xMTcsNiArMTE3LDggQEAgcHVibGljOgogICAgIC8vIGxheWVyIHByb3Bl
cnRpZXMuIFRoaXMgZnVuY3Rpb24gb3ZlcnJpZGVzIHRoZSBkYW1hZ2UgcmVnaW9uIGZvciB0aGUg
bmV4dCBkcmF3IGN5Y2xlLgogICAgIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZSgpOwogCisg
ICAgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0cmFnZXRQb3Np
dGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpOwor
CiBwcm90ZWN0ZWQ6CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ1NldHRpbmdzJiwg
Q0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwogICAgIENDTGF5ZXJUcmVlSG9zdEltcGxDbGll
bnQqIG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IDQ0YWFjY2ViMGE3ZmY0NGM4OTYxOTRjZmI4
ZDhiZmI1MGI0ZjE3OWYuLmI0MzU4YWFkZDc3ZjI3OGM4MWRmNmQyZjZjZWE1M2ViZmYwNTFhYWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Byb3h5LmgKQEAgLTU3LDYgKzU3LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBi
b29sIGNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYpID0g
MDsKIAorICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRT
aXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUg
ZHVyYXRpb25TZWMpID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmco
KSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdGFydGVkKCkgY29uc3QgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCAwNzI2NWRiNzcyODBhMGU3NTM2
YTdlZTBkOTUwMDE4YWNlYzkzZDZjLi4xN2E2OTU5M2E2NDNjZmZlODM3MTc2MTQ5N2U0YmVjMGEx
YzcxZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtOTMs
NiArOTMsMTEgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21wb3NpdGVBbmRSZWFkYmFj
ayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAordm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25z
dCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBk
b3VibGUgZHVyYXRpb25TZWMpCit7CisgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c3RhcnRQYWdl
U2NhbGVBbmltYXRpb24odGFyZ2V0UG9zaXRpb24sIHVzZUFuY2hvciwgc2NhbGUsIG1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZSgpICogMTAwMC4wLCBkdXJhdGlvblNlYyAqIDEwMDAuMCk7Cit9
CisKIEdyYXBoaWNzQ29udGV4dDNEKiBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb250ZXh0KCkKIHsK
ICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oCmluZGV4IGE5NDQwNWYzZDkzZWNhMjA4ZGUyMGZkZjhiZGFjNjlmMDQ5
N2YzNzQuLmFkZGE5ZjE0ZTllNTRkYmEwNWFmMzBkNTc4NjgzOGM0NjNkMzQ0NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgog
CiAgICAgLy8gQ0NQcm94eSBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjb21wb3Np
dGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRp
b24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKICAg
ICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lk
IGZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0YXJ0ZWQoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggYjlhNjZiZDQwNmJkNDI3MGJlMDM1
MzhkOGY4OTYwYTgzMDc1MzA5NS4uM2VhNzJlMmExYzcyZmIzNTY5MTQ4OTI3ZWNiMTUxMDQ3Mjk4
OTQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTEzMyw2ICsxMzMsMTkgQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpyZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tS
ZXF1ZXN0KiByZXF1ZXN0KQogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc0Zv
cmNlZFJlZHJhdygpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnN0YXJ0UGFnZVNjYWxlQW5p
bWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxv
YXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNN
YWluVGhyZWFkKCkpOworICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRl
Q0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpyZXF1ZXN0U3RhcnRQYWdlU2NhbGVB
bmltYXRpb25PbkltcGxUaHJlYWQsIHRhcmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBk
dXJhdGlvblNlYykpOworfQorCit2b2lkIENDVGhyZWFkUHJveHk6OnJlcXVlc3RTdGFydFBhZ2VT
Y2FsZUFuaW1hdGlvbk9uSW1wbFRocmVhZChJbnRTaXplIHRhcmdldFBvc2l0aW9uLCBib29sIHVz
ZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKK3sKKyAgICBBU1NFUlQo
Q0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIGlmIChtX2xheWVyVHJlZUhvc3RJbXBsKQor
ICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJn
ZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCkgKiAxMDAwLjAsIGR1cmF0aW9uU2VjICogMTAwMC4wKTsKK30KKwogR3JhcGhpY3NDb250ZXh0
M0QqIENDVGhyZWFkUHJveHk6OmNvbnRleHQoKQogewogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5oCmluZGV4IDg3YWQyN2QwZWFjNWY4NWQyNzZhYjdkMDg5YmRiZTJkNzg5MzIy
MzMuLjIzYzI5ZjQ4ZmEzMmI3YWM0ODgxNTgwMmNhMDM1OGVlYTFkODgwMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ0NQcm94
eSBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGVBbmRSZWFkYmFjayh2
b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdl
U2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5j
aG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKICAgICB2aXJ0dWFsIEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaEFsbFJlbmRl
cmluZygpOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0YXJ0ZWQoKSBjb25zdDsKQEAgLTk3LDYgKzk4
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG9idGFpbkJlZ2luRnJhbWVBbmRDb21taXRUYXNrRnJv
bUNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NUaHJlYWQ6OlRhc2sqKik7CiAgICAgdm9p
ZCBiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAg
ICB2b2lkIHJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChSZWFkYmFja1JlcXVlc3QqKTsKKyAg
ICB2b2lkIHJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbk9uSW1wbFRocmVhZChJbnRTaXpl
IHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJh
dGlvblNlYyk7CiAgICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21w
bGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIGluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBpbml0aWFsaXplQ29udGV4dE9uSW1wbFRocmVhZChH
cmFwaGljc0NvbnRleHQzRCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCmluZGV4IDBjOWU0NjUwZjMwNTRhNGM5MWQwNjExODQ0YmRkOGZmYjg1MDVmMWYuLjBm
MzUzNzkwNjg0N2Y0NTIyNmY0N2MxZWU2NzA5ODdhODkxNGIxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTYyMyw2ICs2MjMsMTIgQEAgYm9vbCBX
ZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiAK
ICAgICByZXR1cm4gaGFuZGxlZDsKIH0KKwordm9pZCBXZWJWaWV3SW1wbDo6c3RhcnRQYWdlU2Nh
bGVBbmltYXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbCwgYm9vbCB1c2VBbmNob3IsIGZsb2F0
IG5ld1NjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpCit7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9z
dCkKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihJbnRT
aXplKHNjcm9sbC54KCksIHNjcm9sbC55KCkpLCB1c2VBbmNob3IsIG5ld1NjYWxlLCBkdXJhdGlv
blNlYyk7Cit9CiAjZW5kaWYKIAogYm9vbCBXZWJWaWV3SW1wbDo6a2V5RXZlbnQoY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaAppbmRleCBkNDJiYzk0YmUyZmEwOGU0MTE2NTI1Y2VjMTY0NGM3NDhkMjRlNWIxLi4xOTdm
NTgyZTRlOWVkMGM1MmE2ODhhMTFmZmUxZTA1MzA5ZmI0YzZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oIgogI2luY2x1
ZGUgIlBhZ2VPdmVybGF5TGlzdC5oIgpAQCAtMzE1LDYgKzMxNiw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIG1vdXNlRG91YmxlQ2xpY2soY29uc3QgV2ViTW91c2VFdmVudCYpOwogICAgIGJvb2wgbW91
c2VXaGVlbChjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmKTsKICAgICBib29sIGdlc3R1cmVFdmVu
dChjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKKyAgICB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0
aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNo
b3IsIGZsb2F0IG5ld1NjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpOwogICAgIGJvb2wga2V5RXZl
bnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIGJvb2wgY2hhckV2ZW50KGNvbnN0IFdl
YktleWJvYXJkRXZlbnQmKTsKICAgICBib29sIHRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVu
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0VGVzdC5jcHAKaW5kZXggZmM0MTRmNzM5NzE0NTgzYWRhMWE2MzU2Y2E0MmEwNThkZjIzNDUx
ZC4uMDRmY2M3NTZlMDllZTFiN2M5NjFhNWU1MDQ4MjFmMDFmOTM3YjQ2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBA
IC05MzgsNiArOTM4LDc1IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0U2Nyb2xsTXVsdGlw
bGVSZWRyYXcsIERJU0FCTEVEX3J1bk11bHRpVGhyZWFkKQogICAgIHJ1blRlc3RUaHJlYWRlZCgp
OwogfQogCisvLyBWZXJpZmllcyB0aGF0IHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uIGV2ZW50cyBw
cm9wYWdhdGUgY29ycmVjdGx5IGZyb20gQ0NMYXllclRyZWVIb3N0IHRvCisvLyBDQ0xheWVyVHJl
ZUhvc3RJbXBsIGluIHRoZSBNVCBjb21wb3NpdG9yLgorY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVz
dFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3Qgewor
cHVibGljOgorCisgICAgQ0NMYXllclRyZWVIb3N0VGVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9u
KCkKKyAgICAgICAgOiBtX2FuaW1hdGlvblJlcXVlc3RlZChmYWxzZSkKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPnJvb3RMYXllcigpLT5zZXRTY3JvbGxhYmxlKHRydWUpOworICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnJvb3RMYXllcigpLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgpKTsKKyAg
ICAgICAgcG9zdFNldE5lZWRzUmVkcmF3VG9NYWluVGhyZWFkKCk7CisgICAgfQorCisgICAgc3Rh
dGljIHZvaWQgcmVxdWVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKHZvaWQqIHNlbGYpCisgICAg
eworICAgICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb24qIHRl
c3QgPSBzdGF0aWNfY2FzdDxDQ0xheWVyVHJlZUhvc3RUZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRp
b24qPihzZWxmKTsKKyAgICAgICAgaWYgKHRlc3QtPmxheWVyVHJlZUhvc3QoKSkKKyAgICAgICAg
ICAgIHRlc3QtPmxheWVyVHJlZUhvc3QoKS0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oSW50U2l6
ZSgpLCBmYWxzZSwgMS4yNSwgMCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRyYXdMYXll
cnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgeworICAgICAgICBp
bXBsLT5yb290TGF5ZXIoKS0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKKyAgICAgICAgaW1wbC0+cm9v
dExheWVyKCktPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KCkpOworICAgICAgICBpbXBsLT5z
ZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMoaW1wbC0+cGFnZVNjYWxlKCksIDAuNSwgMik7CisK
KyAgICAgICAgLy8gV2UgcmVxdWVzdCBhbmltYXRpb24gb25seSBvbmNlLgorICAgICAgICBpZiAo
IW1fYW5pbWF0aW9uUmVxdWVzdGVkKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKEND
TGF5ZXJUcmVlSG9zdFRlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbjo6cmVxdWVzdFN0YXJ0UGFn
ZVNjYWxlQW5pbWF0aW9uLCB0aGlzKTsKKyAgICAgICAgICAgIG1fYW5pbWF0aW9uUmVxdWVzdGVk
ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9s
bEFuZFNjYWxlKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBzY2FsZSkKKyAgICB7
CisgICAgICAgIEludFBvaW50IHBvc2l0aW9uID0gbV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIo
KS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIo
KS0+c2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24gKyBzY3JvbGxEZWx0YSk7CisgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+c2V0UGFnZVNjYWxlKHNjYWxlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwp
CisgICAgeworICAgICAgICBpbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CisgICAgICAgIC8v
IFdlIGdldCBvbmUgY29tbWl0IGJlZm9yZSB0aGUgZmlyc3QgZHJhdywgYW5kIHRoZSBhbmltYXRp
b24gZG9lc24ndCBoYXBwZW4gdW50aWwgdGhlIHNlY29uZCBkcmF3LAorICAgICAgICAvLyBzbyBy
ZXN1bHRzIGF2YWlsYWJsZSBvbiB0aGUgdGhpcmQgY29tbWl0LgorICAgICAgICBpZiAoaW1wbC0+
ZnJhbWVOdW1iZXIoKSA9PSAyKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoMS4yNSwgaW1wbC0+
cGFnZVNjYWxlKCkpOworICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHBvc3RTZXROZWVkc1JlZHJhd1RvTWFpblRocmVhZCgpOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
Ym9vbCBtX2FuaW1hdGlvblJlcXVlc3RlZDsKK307CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RU
ZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb24sIHJ1blRlc3QpCit7CisgICAgcnVuVGVzdCh0cnVl
KTsKK30KKwogY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdFNldFZpc2libGUgOiBwdWJsaWMgQ0NM
YXllclRyZWVIb3N0VGVzdCB7CiBwdWJsaWM6CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126368</attachid>
            <date>2012-02-09 14:05:08 -0800</date>
            <delta_ts>2012-02-09 21:52:12 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-77872-20120209170506.patch</filename>
            <type>text/plain</type>
            <size>16446</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTE4NTQ2NzM3NDUxNDA5
ZjY3MDM1MWQ4NDBiZGY3ZTJjMTRhNWViYy4uMDZkNzFiMzM2MDJkODZlZWFiYzQyZGFiMWI5NTg3
NGM0MmFlN2YxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTAyLTA5ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEFkZCBzdXBwb3J0IGZvciBzdGFydGluZyBwYWdlL3NjYWxlIGFuaW1hdGlvbnMgb24gQ0Mg
aW1wbCB0aHJlYWQgZnJvbSBXZWJWaWV3SW1wbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4NzIKKworICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBS
b2JpbnNvbi4KKworICAgICAgICBBZGRlZCB1bml0IHRlc3QuCisKKyAgICAgICAgUHJvdmlkZXMg
YSBwYXRod2F5IHRvIGludm9rZSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzdGFydFBhZ2VTY2FsZUFu
aW1hdGlvbigpIGZyb20KKyAgICAgICAgV2ViVmlld0ltcGwuIFRoaXMgaXMgaW50ZW5kZWQgdG8g
c3VwcG9ydCBzY2FsZSBhbmQgc2Nyb2xsIGFuaW1hdGlvbnMsIHN1Y2ggYXMgV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZURvdWJsZVRhcC4KKworICAgICAgICAqIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29w
aWVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDQ0xheWVy
VHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKEND
UHJveHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6
c3RhcnRQYWdlU2NhbGVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAg
ICAgICAoQ0NTaW5nbGVUaHJlYWRQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1h
dGlvbk9uSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoQ0NUaHJlYWRQcm94eSk6CisKIDIwMTItMDIt
MDkgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IHJlbmFtZSBET01FZGl0b3IgdG8gRE9NUGF0Y2hTdXBwb3J0LCBtb3ZlIHVuZG9h
YmxlIGFjdGlvbnMgZnJvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwNGI1YWFkNGFm
MTIyN2I3YWM4OTQwNjhmZTdiZmFhMjAzMDM4NjQ2Li4zMzVhMWVkYjE2NWE3NzIzYjZjOGRlYTRl
Y2IxNmZlZjNjZjc2Y2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMw
IEBACisyMDEyLTAyLTA5ICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBzdXBwb3J0IGZvciBzdGFydGluZyBwYWdlL3Nj
YWxlIGFuaW1hdGlvbnMgb24gQ0MgaW1wbCB0aHJlYWQgZnJvbSBXZWJWaWV3SW1wbAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4NzIKKworICAgICAg
ICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KKworICAgICAgICBQcm92aWRlcyBhIHBhdGh3
YXkgdG8gaW52b2tlIENDTGF5ZXJUcmVlSG9zdEltcGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9u
KCkgZnJvbQorICAgICAgICBXZWJWaWV3SW1wbC4gVGhpcyBpcyBpbnRlbmRlZCB0byBzdXBwb3J0
IHNjYWxlIGFuZCBzY3JvbGwgYW5pbWF0aW9ucywgc3VjaCBhcyBXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlRG91YmxlVGFwLgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzdGFydFBhZ2VTY2FsZUFu
aW1hdGlvbik6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3
SW1wbCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAg
IChXVEYpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0VGVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0
aW9uKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFN0YXJ0UGFnZVNjYWxlQW5p
bWF0aW9uOjpDQ0xheWVyVHJlZUhvc3RUZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb24pOgorICAg
ICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb246OmJl
Z2luVGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTdGFydFBhZ2VTY2Fs
ZUFuaW1hdGlvbjo6cmVxdWVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdU
Rjo6Q0NMYXllclRyZWVIb3N0VGVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uOjpkcmF3TGF5ZXJz
T25DQ1RocmVhZCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTdGFydFBhZ2VT
Y2FsZUFuaW1hdGlvbjo6YXBwbHlTY3JvbGxBbmRTY2FsZSk6CisgICAgICAgIChXVEY6OkNDTGF5
ZXJUcmVlSG9zdFRlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbjo6Y29tbWl0Q29tcGxldGVPbkND
VGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFN0YXJ0UGFnZVNjYWxl
QW5pbWF0aW9uOjphZnRlclRlc3QpOgorICAgICAgICAoV1RGOjpURVNUX0YpOgorCiAyMDEyLTAy
LTA5ICBKb25hdGhhbiBCYWNrZXIgIDxiYWNrZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gQWRkIHNldE5lZWRzUmVkcmF3IHRvIFdlYldpZGdldApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKaW5kZXggMzlkMTFiNTAxMGYzNDJiNjBkNzJk
YjNkYjUwZjBmNDE0Y2MxMDhhYy4uM2I2MDc2MTQyY2RhYWMyMTRhZDAwOTM2ZmNmYjNjNTA0YTNm
ZDE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3Bp
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCkBA
IC00Miw2ICs0Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBJbnRSZWN0
OworICAgIGNsYXNzIEludFNpemU7CiAgICAgY2xhc3MgS1VSTDsKICAgICBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTcyLDYgKzczLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVy
QmFzZTxmYWxzZSwgZmFsc2UsIEludFJlY3Q+IDogcHVibGljIENyb3NzVGhyZWFkQ29waWVyUGFz
c1Rocm91Z2g8SW50UmVjdD4gewogICAgIH07CiAKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9z
c1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBJbnRTaXplPiA6IHB1YmxpYyBDcm9zc1Ro
cmVhZENvcGllclBhc3NUaHJvdWdoPEludFNpemU+IHsKKyAgICB9OworCiAgICAgLy8gQ3VzdG9t
IGNvcHkgbWV0aG9kcy4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJl
YWRDb3BpZXJCYXNlPGZhbHNlLCB0cnVlLCBUPiB7CiAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
V1RGOjpSZW1vdmVUZW1wbGF0ZTxULCBSZWZQdHI+OjpUeXBlIFR5cGVXaXRob3V0UmVmUHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMTg2NDkwOTUyN2YyNjY0Nzk4MzRl
Mzc5MWJiMWU2MGY3Y2ViMDVhOS4uYTAzOGUzNmU3MDZiYWMwZWJkMzMzMzBlNGE3ZDU2MjNlY2I2
YTcwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0zNTYsNiArMzU2LDEw
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wg
aGF2ZVdoZWVsRXZlbnRIYW5kbGVycykKICAgICBtX3Byb3h5LT5zZXROZWVkc0NvbW1pdCgpOwog
fQogCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3Qg
SW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91
YmxlIGR1cmF0aW9uU2VjKQoreworICAgIG1fcHJveHktPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9u
KHRhcmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBkdXJhdGlvblNlYyk7Cit9CiAKIHZv
aWQgQ0NMYXllclRyZWVIb3N0Ojpsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBlODJmMjk4MzA0N2VmY2IxM2EwOTlm
OWFkYjc1MmYyYjE4YWVmNTE3Li5kODFiOGU0ZGFmZjFmMGU2ZmQ4ODc4ZWIxMmIxMDZjZDM3ZDcz
ZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMTg4LDYgKzE4OCw4IEBAIHB1
YmxpYzoKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHdlIHNob3VsZCBhYm9ydCB0aGlzIGZyYW1l
IGR1ZSB0byBpbml0aWFsaXphdGlvbiBmYWlsdXJlLgogICAgIGJvb2wgdXBkYXRlTGF5ZXJzKCk7
CiAKKyAgICB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdl
dFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNl
Yyk7CisKICAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0
M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CiAgICAgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNv
bnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmKTsKICAgICB2b2lkIHN0YXJ0UmF0ZUxpbWl0ZXIoR3Jh
cGhpY3NDb250ZXh0M0QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRl
eCA0MzNmYWRhNjgwOGU3NDcyNzBiYWNjNGM3OTU5OTA4MGQwNTc3NTU5Li41ZWUwMzk5ZjViNDU3
MjI1YTkxZGZmNmI3NzdjZDVkOGE3NmQ2YTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oCkBAIC0xMTcsNiArMTE3LDggQEAgcHVibGljOgogICAgIC8vIGxheWVyIHByb3Bl
cnRpZXMuIFRoaXMgZnVuY3Rpb24gb3ZlcnJpZGVzIHRoZSBkYW1hZ2UgcmVnaW9uIGZvciB0aGUg
bmV4dCBkcmF3IGN5Y2xlLgogICAgIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZSgpOwogCisg
ICAgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0cmFnZXRQb3Np
dGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpOwor
CiBwcm90ZWN0ZWQ6CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ1NldHRpbmdzJiwg
Q0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwogICAgIENDTGF5ZXJUcmVlSG9zdEltcGxDbGll
bnQqIG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IDQ0YWFjY2ViMGE3ZmY0NGM4OTYxOTRjZmI4
ZDhiZmI1MGI0ZjE3OWYuLmI0MzU4YWFkZDc3ZjI3OGM4MWRmNmQyZjZjZWE1M2ViZmYwNTFhYWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Byb3h5LmgKQEAgLTU3LDYgKzU3LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBi
b29sIGNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYpID0g
MDsKIAorICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRT
aXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUg
ZHVyYXRpb25TZWMpID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmco
KSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdGFydGVkKCkgY29uc3QgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCAwNzI2NWRiNzcyODBhMGU3NTM2
YTdlZTBkOTUwMDE4YWNlYzkzZDZjLi4xN2E2OTU5M2E2NDNjZmZlODM3MTc2MTQ5N2U0YmVjMGEx
YzcxZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtOTMs
NiArOTMsMTEgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21wb3NpdGVBbmRSZWFkYmFj
ayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAordm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25z
dCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBk
b3VibGUgZHVyYXRpb25TZWMpCit7CisgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c3RhcnRQYWdl
U2NhbGVBbmltYXRpb24odGFyZ2V0UG9zaXRpb24sIHVzZUFuY2hvciwgc2NhbGUsIG1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZSgpICogMTAwMC4wLCBkdXJhdGlvblNlYyAqIDEwMDAuMCk7Cit9
CisKIEdyYXBoaWNzQ29udGV4dDNEKiBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb250ZXh0KCkKIHsK
ICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oCmluZGV4IGE5NDQwNWYzZDkzZWNhMjA4ZGUyMGZkZjhiZGFjNjlmMDQ5
N2YzNzQuLmFkZGE5ZjE0ZTllNTRkYmEwNWFmMzBkNTc4NjgzOGM0NjNkMzQ0NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgog
CiAgICAgLy8gQ0NQcm94eSBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjb21wb3Np
dGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRp
b24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKICAg
ICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lk
IGZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0YXJ0ZWQoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggYjlhNjZiZDQwNmJkNDI3MGJlMDM1
MzhkOGY4OTYwYTgzMDc1MzA5NS4uM2VhNzJlMmExYzcyZmIzNTY5MTQ4OTI3ZWNiMTUxMDQ3Mjk4
OTQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTEzMyw2ICsxMzMsMTkgQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpyZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tS
ZXF1ZXN0KiByZXF1ZXN0KQogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc0Zv
cmNlZFJlZHJhdygpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnN0YXJ0UGFnZVNjYWxlQW5p
bWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxv
YXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNN
YWluVGhyZWFkKCkpOworICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRl
Q0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpyZXF1ZXN0U3RhcnRQYWdlU2NhbGVB
bmltYXRpb25PbkltcGxUaHJlYWQsIHRhcmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBk
dXJhdGlvblNlYykpOworfQorCit2b2lkIENDVGhyZWFkUHJveHk6OnJlcXVlc3RTdGFydFBhZ2VT
Y2FsZUFuaW1hdGlvbk9uSW1wbFRocmVhZChJbnRTaXplIHRhcmdldFBvc2l0aW9uLCBib29sIHVz
ZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKK3sKKyAgICBBU1NFUlQo
Q0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIGlmIChtX2xheWVyVHJlZUhvc3RJbXBsKQor
ICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJn
ZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCkgKiAxMDAwLjAsIGR1cmF0aW9uU2VjICogMTAwMC4wKTsKK30KKwogR3JhcGhpY3NDb250ZXh0
M0QqIENDVGhyZWFkUHJveHk6OmNvbnRleHQoKQogewogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5oCmluZGV4IDg3YWQyN2QwZWFjNWY4NWQyNzZhYjdkMDg5YmRiZTJkNzg5MzIy
MzMuLjIzYzI5ZjQ4ZmEzMmI3YWM0ODgxNTgwMmNhMDM1OGVlYTFkODgwMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ0NQcm94
eSBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGVBbmRSZWFkYmFjayh2
b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdl
U2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5j
aG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKICAgICB2aXJ0dWFsIEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaEFsbFJlbmRl
cmluZygpOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0YXJ0ZWQoKSBjb25zdDsKQEAgLTk3LDYgKzk4
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG9idGFpbkJlZ2luRnJhbWVBbmRDb21taXRUYXNrRnJv
bUNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NUaHJlYWQ6OlRhc2sqKik7CiAgICAgdm9p
ZCBiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAg
ICB2b2lkIHJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChSZWFkYmFja1JlcXVlc3QqKTsKKyAg
ICB2b2lkIHJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbk9uSW1wbFRocmVhZChJbnRTaXpl
IHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJh
dGlvblNlYyk7CiAgICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21w
bGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIGluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBpbml0aWFsaXplQ29udGV4dE9uSW1wbFRocmVhZChH
cmFwaGljc0NvbnRleHQzRCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCmluZGV4IDBjOWU0NjUwZjMwNTRhNGM5MWQwNjExODQ0YmRkOGZmYjg1MDVmMWYuLjBm
MzUzNzkwNjg0N2Y0NTIyNmY0N2MxZWU2NzA5ODdhODkxNGIxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTYyMyw2ICs2MjMsMTIgQEAgYm9vbCBX
ZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiAK
ICAgICByZXR1cm4gaGFuZGxlZDsKIH0KKwordm9pZCBXZWJWaWV3SW1wbDo6c3RhcnRQYWdlU2Nh
bGVBbmltYXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbCwgYm9vbCB1c2VBbmNob3IsIGZsb2F0
IG5ld1NjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpCit7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9z
dCkKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihJbnRT
aXplKHNjcm9sbC54KCksIHNjcm9sbC55KCkpLCB1c2VBbmNob3IsIG5ld1NjYWxlLCBkdXJhdGlv
blNlYyk7Cit9CiAjZW5kaWYKIAogYm9vbCBXZWJWaWV3SW1wbDo6a2V5RXZlbnQoY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaAppbmRleCBkNDJiYzk0YmUyZmEwOGU0MTE2NTI1Y2VjMTY0NGM3NDhkMjRlNWIxLi4xOTdm
NTgyZTRlOWVkMGM1MmE2ODhhMTFmZmUxZTA1MzA5ZmI0YzZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oIgogI2luY2x1
ZGUgIlBhZ2VPdmVybGF5TGlzdC5oIgpAQCAtMzE1LDYgKzMxNiw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIG1vdXNlRG91YmxlQ2xpY2soY29uc3QgV2ViTW91c2VFdmVudCYpOwogICAgIGJvb2wgbW91
c2VXaGVlbChjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmKTsKICAgICBib29sIGdlc3R1cmVFdmVu
dChjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKKyAgICB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0
aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNo
b3IsIGZsb2F0IG5ld1NjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpOwogICAgIGJvb2wga2V5RXZl
bnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIGJvb2wgY2hhckV2ZW50KGNvbnN0IFdl
YktleWJvYXJkRXZlbnQmKTsKICAgICBib29sIHRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVu
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0VGVzdC5jcHAKaW5kZXggZmM0MTRmNzM5NzE0NTgzYWRhMWE2MzU2Y2E0MmEwNThkZjIzNDUx
ZC4uMDRmY2M3NTZlMDllZTFiN2M5NjFhNWU1MDQ4MjFmMDFmOTM3YjQ2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBA
IC05MzgsNiArOTM4LDc1IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0U2Nyb2xsTXVsdGlw
bGVSZWRyYXcsIERJU0FCTEVEX3J1bk11bHRpVGhyZWFkKQogICAgIHJ1blRlc3RUaHJlYWRlZCgp
OwogfQogCisvLyBWZXJpZmllcyB0aGF0IHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uIGV2ZW50cyBw
cm9wYWdhdGUgY29ycmVjdGx5IGZyb20gQ0NMYXllclRyZWVIb3N0IHRvCisvLyBDQ0xheWVyVHJl
ZUhvc3RJbXBsIGluIHRoZSBNVCBjb21wb3NpdG9yLgorY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVz
dFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3Qgewor
cHVibGljOgorCisgICAgQ0NMYXllclRyZWVIb3N0VGVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9u
KCkKKyAgICAgICAgOiBtX2FuaW1hdGlvblJlcXVlc3RlZChmYWxzZSkKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPnJvb3RMYXllcigpLT5zZXRTY3JvbGxhYmxlKHRydWUpOworICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnJvb3RMYXllcigpLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgpKTsKKyAg
ICAgICAgcG9zdFNldE5lZWRzUmVkcmF3VG9NYWluVGhyZWFkKCk7CisgICAgfQorCisgICAgc3Rh
dGljIHZvaWQgcmVxdWVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKHZvaWQqIHNlbGYpCisgICAg
eworICAgICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb24qIHRl
c3QgPSBzdGF0aWNfY2FzdDxDQ0xheWVyVHJlZUhvc3RUZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRp
b24qPihzZWxmKTsKKyAgICAgICAgaWYgKHRlc3QtPmxheWVyVHJlZUhvc3QoKSkKKyAgICAgICAg
ICAgIHRlc3QtPmxheWVyVHJlZUhvc3QoKS0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oSW50U2l6
ZSgpLCBmYWxzZSwgMS4yNSwgMCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRyYXdMYXll
cnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgeworICAgICAgICBp
bXBsLT5yb290TGF5ZXIoKS0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKKyAgICAgICAgaW1wbC0+cm9v
dExheWVyKCktPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KCkpOworICAgICAgICBpbXBsLT5z
ZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMoaW1wbC0+cGFnZVNjYWxlKCksIDAuNSwgMik7CisK
KyAgICAgICAgLy8gV2UgcmVxdWVzdCBhbmltYXRpb24gb25seSBvbmNlLgorICAgICAgICBpZiAo
IW1fYW5pbWF0aW9uUmVxdWVzdGVkKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKEND
TGF5ZXJUcmVlSG9zdFRlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbjo6cmVxdWVzdFN0YXJ0UGFn
ZVNjYWxlQW5pbWF0aW9uLCB0aGlzKTsKKyAgICAgICAgICAgIG1fYW5pbWF0aW9uUmVxdWVzdGVk
ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9s
bEFuZFNjYWxlKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBzY2FsZSkKKyAgICB7
CisgICAgICAgIEludFBvaW50IHBvc2l0aW9uID0gbV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIo
KS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIo
KS0+c2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24gKyBzY3JvbGxEZWx0YSk7CisgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+c2V0UGFnZVNjYWxlKHNjYWxlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwp
CisgICAgeworICAgICAgICBpbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CisgICAgICAgIC8v
IFdlIGdldCBvbmUgY29tbWl0IGJlZm9yZSB0aGUgZmlyc3QgZHJhdywgYW5kIHRoZSBhbmltYXRp
b24gZG9lc24ndCBoYXBwZW4gdW50aWwgdGhlIHNlY29uZCBkcmF3LAorICAgICAgICAvLyBzbyBy
ZXN1bHRzIGF2YWlsYWJsZSBvbiB0aGUgdGhpcmQgY29tbWl0LgorICAgICAgICBpZiAoaW1wbC0+
ZnJhbWVOdW1iZXIoKSA9PSAyKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoMS4yNSwgaW1wbC0+
cGFnZVNjYWxlKCkpOworICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHBvc3RTZXROZWVkc1JlZHJhd1RvTWFpblRocmVhZCgpOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
Ym9vbCBtX2FuaW1hdGlvblJlcXVlc3RlZDsKK307CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RU
ZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb24sIHJ1blRlc3QpCit7CisgICAgcnVuVGVzdCh0cnVl
KTsKK30KKwogY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdFNldFZpc2libGUgOiBwdWJsaWMgQ0NM
YXllclRyZWVIb3N0VGVzdCB7CiBwdWJsaWM6CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>