<?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>108110</bug_id>
          
          <creation_ts>2013-01-28 13:39:08 -0800</creation_ts>
          <short_desc>[CSS Grid Layout] Make resolveContentBasedTrackSizingFunctionsForItems reuse distributeSpaceToTracks</short_desc>
          <delta_ts>2013-01-29 14:12:52 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>103311</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>buildbot</cc>
    
    <cc>eric</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>818053</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-01-28 13:39:08 -0800</bug_when>
    <thetext>The specification makes resolveContentBasedTrackSizingFunctionsForItems reuse distributeSpaceToTracks.

This makes sense for us to do the same as it will ease maintenance (less code duplication) but also because being close to the specified algorithm prevents any deviation from it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818120</commentid>
    <comment_count>1</comment_count>
      <attachid>185069</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-01-28 14:36:57 -0800</bug_when>
    <thetext>Created attachment 185069
Proposed refactoring #1: change distributeSpaceToTracks arguments to match intent and allow for more sharing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818183</commentid>
    <comment_count>2</comment_count>
      <attachid>185069</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-01-28 15:22:42 -0800</bug_when>
    <thetext>Comment on attachment 185069
Proposed refactoring #1: change distributeSpaceToTracks arguments to match intent and allow for more sharing.

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

&gt; Source/WebCore/rendering/RenderGrid.cpp:202
&gt; +    Vector&lt;GridTrack*&gt; tracksForDistribution(tracksSize);
&gt; +    for (size_t i = 0; i &lt; tracksSize; ++i)
&gt; +        tracksForDistribution[i] = tracks.data() + i;

It seems unfortunate that we need to make a copy of the Vector here.  Would it work to have the first param of distributeSpaceToTracks be Vector&lt;GridTrack&gt; and in resolveContentBasedTrackSizingFunctionsForItems, copy the result to |track|?

&gt; Source/WebCore/rendering/RenderGrid.cpp:332
&gt; +void RenderGrid::distributeSpaceToTracks(Vector&lt;GridTrack*&gt;&amp; tracks, Vector&lt;GridTrack*&gt;* tracksForGrowthAboveMaxBreadth, AccumulatorGetter trackGetter, AccumulatorGrowFunction trackGrowthFunction, LayoutUnit&amp; availableLogicalSpace)

Can we make tracksForGrowthAboveMaxBreadth const?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818229</commentid>
    <comment_count>3</comment_count>
      <attachid>185069</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-01-28 16:08:05 -0800</bug_when>
    <thetext>Comment on attachment 185069
Proposed refactoring #1: change distributeSpaceToTracks arguments to match intent and allow for more sharing.

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

&gt;&gt; Source/WebCore/rendering/RenderGrid.cpp:202
&gt;&gt; +        tracksForDistribution[i] = tracks.data() + i;
&gt; 
&gt; It seems unfortunate that we need to make a copy of the Vector here.  Would it work to have the first param of distributeSpaceToTracks be Vector&lt;GridTrack&gt; and in resolveContentBasedTrackSizingFunctionsForItems, copy the result to |track|?

Your approach could work but would require us to create and use a permutation inside distributeSpaceToTracks to iterate over the tracks in the right order. Creating the permutation will need an array of |trackSize| integers. A copy of the tracks is 2 * |trackSize| integers so it&apos;s a win.

If you think a bit forward, we will need to pass arbitrary groups of tracks to distributeSpaceToTracks (due to column / row spans), which we will need to order, set and copy back so I don&apos;t think the memory win will be that big in the end. Not to mention that you need to be careful that you are handling *copies* of the tracks.

&gt; Source/WebCore/rendering/RenderGrid.cpp:328
&gt; +        distributeSpaceToTracks(tracks, &amp;tracks, trackGetter, trackGrowthFunction, additionalBreadthSpace);

This needs a FIXME as it&apos;s wrong in the general case, depends on who is calling resolveContentBasedTrackSizingFunctionsForItems and works only because we have a limited testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818240</commentid>
    <comment_count>4</comment_count>
      <attachid>185069</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-01-28 16:24:04 -0800</bug_when>
    <thetext>Comment on attachment 185069
Proposed refactoring #1: change distributeSpaceToTracks arguments to match intent and allow for more sharing.

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

&gt;&gt;&gt; Source/WebCore/rendering/RenderGrid.cpp:202
&gt;&gt;&gt; +        tracksForDistribution[i] = tracks.data() + i;
&gt;&gt; 
&gt;&gt; It seems unfortunate that we need to make a copy of the Vector here.  Would it work to have the first param of distributeSpaceToTracks be Vector&lt;GridTrack&gt; and in resolveContentBasedTrackSizingFunctionsForItems, copy the result to |track|?
&gt; 
&gt; Your approach could work but would require us to create and use a permutation inside distributeSpaceToTracks to iterate over the tracks in the right order. Creating the permutation will need an array of |trackSize| integers. A copy of the tracks is 2 * |trackSize| integers so it&apos;s a win.
&gt; 
&gt; If you think a bit forward, we will need to pass arbitrary groups of tracks to distributeSpaceToTracks (due to column / row spans), which we will need to order, set and copy back so I don&apos;t think the memory win will be that big in the end. Not to mention that you need to be careful that you are handling *copies* of the tracks.

Actually, let me amend that: by using pointers, the Vector is used to build the permutation over the tracks. This uses |trackSize| pointers (and not 2 * |trackSize| as we don&apos;t do a deep copy of the GridTrack) so it would be equivalent to your proposal in terms of memory.

The upside I see is that it allows for much more flexibility when we will come around and implement column / row span.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818267</commentid>
    <comment_count>5</comment_count>
      <attachid>185069</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-01-28 16:49:26 -0800</bug_when>
    <thetext>Comment on attachment 185069
Proposed refactoring #1: change distributeSpaceToTracks arguments to match intent and allow for more sharing.

I think this is OK, but it&apos;s very confusing who mutates GridTracks and who doesn&apos;t.  Using a mix of Vector&lt;GridTrack&gt; and Vector&lt;GridTrack*&gt; makes things more confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818390</commentid>
    <comment_count>6</comment_count>
      <attachid>185069</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-28 18:59:45 -0800</bug_when>
    <thetext>Comment on attachment 185069
Proposed refactoring #1: change distributeSpaceToTracks arguments to match intent and allow for more sharing.

Attachment 185069 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16182254

New failing tests:
fast/workers/worker-document-leak.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819281</commentid>
    <comment_count>7</comment_count>
      <attachid>185296</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-01-29 13:30:09 -0800</bug_when>
    <thetext>Created attachment 185296
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819316</commentid>
    <comment_count>8</comment_count>
      <attachid>185296</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-29 14:12:47 -0800</bug_when>
    <thetext>Comment on attachment 185296
Patch for landing

Clearing flags on attachment: 185296

Committed r141163: &lt;http://trac.webkit.org/changeset/141163&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819318</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-29 14:12:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185069</attachid>
            <date>2013-01-28 14:36:57 -0800</date>
            <delta_ts>2013-01-29 13:30:07 -0800</delta_ts>
            <desc>Proposed refactoring #1: change distributeSpaceToTracks arguments to match intent and allow for more sharing.</desc>
            <filename>bug-108110-20130128143344.patch</filename>
            <type>text/plain</type>
            <size>8343</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdkOWY0YzBhMjIxOWRi
ZGRmZWIzNzJiMmQ1MmMyOGQ4Y2M4ZTMwZS4uMWYwMDkwMWU5MDI0MjAwNjQyODkyOGMyM2E1NDcy
NzJkODc4ZmY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEzLTAxLTI4ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIE1ha2UgcmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9y
SXRlbXMgcmV1c2UgZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODExMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIG1ha2VzIHVzIG1hdGNoIG1v
cmUgY2xvc2VseSB0aGUgc3BlY2lmaWNhdGlvbiBieSByZXVzaW5nIGRpc3RyaWJ1dGVTcGFjZVRv
VHJhY2tzIGluc2lkZQorICAgICAgICByZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdGdW5j
dGlvbnNGb3JJdGVtcy4gVGhpcyBhbHNvIHJlbW92ZXMgc29tZSBleGlzdGluZyBjb2RlIGR1cGxp
Y2F0aW9uLgorCisgICAgICAgIFJlZmFjdG9yaW5nIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJHcmlkOjpjb21wdXRlZFVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKToKKyAgICAgICAg
VXBkYXRlZCBhZnRlciBkaXN0cmlidXRlU3BhY2VUb1RyYWNrcyBuZXcgYXJndW1lbnRzLiBDb3B5
aW5nIHRoZSB0cmFja3MgdG8gYSBWZWN0b3I8R3JpZFRyYWNrKj4gaXMKKyAgICAgICAgbm93IGRv
bmUgaGVyZS4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cmVzb2x2ZUNvbnRlbnRC
YXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9ySXRlbXMpOgorICAgICAgICBSZW1vdmVkIGNvZGUg
ZHVwbGljYXRpb24gYW5kIHN3aXRjaGVkIHRvIHVzaW5nIGRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tz
LgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpkaXN0cmlidXRlU3BhY2VUb1RyYWNr
cyk6CisgICAgICAgIFJlZmFjdG9yZWQgZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3MgdG8gaW1wbGVt
ZW50IHRoZSBkaXN0cmlidXRpb24gb2YgYW55IGV4dHJhIHNwYWNlIGFib3ZlIG1heCBicmVhZHRo
CisgICAgICAgIGFzIGl0IHdhcyByZXF1aXJlZCB0byBwYXNzIHRoZSB0ZXN0cyAocmVxdWlyZWQg
dG8gcHJvcGVybHkgaGFuZGxpbmcgbWluLWNvbnRlbnQgPiBtYXgpLiBBbHNvIGNoYW5nZWQKKyAg
ICAgICAgdGhlIGFyZ3VtZW50cyBvZiB0aGUgZnVuY3Rpb24gdG8gYmV0dGVyIG1hdGNoIHRoZSBp
bnRlbnQgb2YgdGhlIGZ1bmN0aW9uLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQu
aDogVXBkYXRlZCBkaXN0cmlidXRlU3BhY2VUb1RyYWNrcydzIGFyZ3VtZW50cy4KKwogMjAxMy0w
MS0yOCAgRWxsaW90dCBTcHJlaG4gIDxlc3ByZWhuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBN
b3ZlIGVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QgdG8gRWxlbWVudApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDIzMDcyMzRjZTEzNTA5Y2VkMzg2MmUwMjUwMjlk
MGVmZWE3ZjQ0ODkuLjZkNjdmM2Q5ZjI5YTFjNzcyMTFlZGY2YjVkZTk5MWEyNWI3ODZhMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTE5Niw3ICsxOTYsMTIg
QEAgdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlZFVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKFRyYWNr
U2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwKICAgICBpZiAoYXZhaWxhYmxlTG9naWNhbFNwYWNl
IDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIGRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKGRp
cmVjdGlvbiwgdHJhY2tzLCBhdmFpbGFibGVMb2dpY2FsU3BhY2UpOworICAgIGNvbnN0IHNpemVf
dCB0cmFja3NTaXplID0gdHJhY2tzLnNpemUoKTsKKyAgICBWZWN0b3I8R3JpZFRyYWNrKj4gdHJh
Y2tzRm9yRGlzdHJpYnV0aW9uKHRyYWNrc1NpemUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdHJhY2tzU2l6ZTsgKytpKQorICAgICAgICB0cmFja3NGb3JEaXN0cmlidXRpb25baV0gPSB0
cmFja3MuZGF0YSgpICsgaTsKKworICAgIGRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKHRyYWNrc0Zv
ckRpc3RyaWJ1dGlvbiwgMCwgJkdyaWRUcmFjazo6dXNlZEJyZWFkdGgsICZHcmlkVHJhY2s6Omdy
b3dVc2VkQnJlYWR0aCwgYXZhaWxhYmxlTG9naWNhbFNwYWNlKTsKIH0KIAogTGF5b3V0VW5pdCBS
ZW5kZXJHcmlkOjpjb21wdXRlVXNlZEJyZWFkdGhPZk1pbkxlbmd0aChUcmFja1NpemluZ0RpcmVj
dGlvbiBkaXJlY3Rpb24sIGNvbnN0IExlbmd0aCYgdHJhY2tMZW5ndGgpIGNvbnN0CkBAIC0zMTAs
NyArMzE1LDYgQEAgdm9pZCBSZW5kZXJHcmlkOjpyZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXpp
bmdGdW5jdGlvbnMoVHJhY2tTaXppbmdEaXJlY3Rpb24gZGkKIAogdm9pZCBSZW5kZXJHcmlkOjpy
ZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdGdW5jdGlvbnNGb3JJdGVtcyhUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24sIFZlY3RvcjxHcmlkVHJhY2s+JiBjb2x1bW5UcmFja3MsIFZl
Y3RvcjxHcmlkVHJhY2s+JiByb3dUcmFja3MsIHNpemVfdCBpLCBTaXppbmdGdW5jdGlvbiBzaXpp
bmdGdW5jdGlvbiwgQWNjdW11bGF0b3JHZXR0ZXIgdHJhY2tHZXR0ZXIsIEFjY3VtdWxhdG9yR3Jv
d0Z1bmN0aW9uIHRyYWNrR3Jvd3RoRnVuY3Rpb24pCiB7Ci0gICAgLy8gRklYTUU6IFRoZSBzcGVj
aWZpY2F0aW9uIHJlLXVzZXMgZGlzdHJpYnV0ZVNwYWNlVG9UcmFjaywgd2hpY2ggd2Ugc2hvdWxk
IHByb2JhYmx5IGRvLgogICAgIEdyaWRUcmFjayYgdHJhY2sgPSAoZGlyZWN0aW9uID09IEZvckNv
bHVtbnMpID8gY29sdW1uVHJhY2tzW2ldIDogcm93VHJhY2tzW2ldOwogICAgIGZvciAoUmVuZGVy
Qm94KiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRT
aWJsaW5nQm94KCkpIHsKICAgICAgICAgc2l6ZV90IGNlbGxJbmRleCA9IHJlc29sdmVHcmlkUG9z
aXRpb24oZGlyZWN0aW9uLCBjaGlsZCk7CkBAIC0zMTksMzMgKzMyMyw0MSBAQCB2b2lkIFJlbmRl
ckdyaWQ6OnJlc29sdmVDb250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9uc0Zvckl0ZW1zKFRy
YWNrU2l6aW5nRGlyZQogCiAgICAgICAgIExheW91dFVuaXQgY29udGVudFNpemUgPSAodGhpcy0+
KnNpemluZ0Z1bmN0aW9uKShjaGlsZCwgZGlyZWN0aW9uLCBjb2x1bW5UcmFja3MpOwogICAgICAg
ICBMYXlvdXRVbml0IGFkZGl0aW9uYWxCcmVhZHRoU3BhY2UgPSBjb250ZW50U2l6ZSAtICh0cmFj
ay4qdHJhY2tHZXR0ZXIpKCk7Ci0gICAgICAgIExheW91dFVuaXQgc2hhcmUgPSBhZGRpdGlvbmFs
QnJlYWR0aFNwYWNlOwotICAgICAgICBzdGQ6Om1pbihhZGRpdGlvbmFsQnJlYWR0aFNwYWNlLCB0
cmFjay5tX21heEJyZWFkdGggLSAodHJhY2suKnRyYWNrR2V0dGVyKSgpKTsKLSAgICAgICAgKHRy
YWNrLip0cmFja0dyb3d0aEZ1bmN0aW9uKShzaGFyZSk7CisgICAgICAgIFZlY3RvcjxHcmlkVHJh
Y2sqPiB0cmFja3M7CisgICAgICAgIHRyYWNrcy5hcHBlbmQoJnRyYWNrKTsKKyAgICAgICAgZGlz
dHJpYnV0ZVNwYWNlVG9UcmFja3ModHJhY2tzLCAmdHJhY2tzLCB0cmFja0dldHRlciwgdHJhY2tH
cm93dGhGdW5jdGlvbiwgYWRkaXRpb25hbEJyZWFkdGhTcGFjZSk7CiAgICAgfQogfQogCi12b2lk
IFJlbmRlckdyaWQ6OmRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKFRyYWNrU2l6aW5nRGlyZWN0aW9u
LCBWZWN0b3I8R3JpZFRyYWNrPiYgdHJhY2tzLCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxT
cGFjZSkKK3ZvaWQgUmVuZGVyR3JpZDo6ZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3MoVmVjdG9yPEdy
aWRUcmFjayo+JiB0cmFja3MsIFZlY3RvcjxHcmlkVHJhY2sqPiogdHJhY2tzRm9yR3Jvd3RoQWJv
dmVNYXhCcmVhZHRoLCBBY2N1bXVsYXRvckdldHRlciB0cmFja0dldHRlciwgQWNjdW11bGF0b3JH
cm93RnVuY3Rpb24gdHJhY2tHcm93dGhGdW5jdGlvbiwgTGF5b3V0VW5pdCYgYXZhaWxhYmxlTG9n
aWNhbFNwYWNlKQogewotICAgIGNvbnN0IHNpemVfdCB0cmFja3NTaXplID0gdHJhY2tzLnNpemUo
KTsKLSAgICBWZWN0b3I8R3JpZFRyYWNrKj4gc29ydGVkVHJhY2tzKHRyYWNrc1NpemUpOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhY2tzU2l6ZTsgKytpKQotICAgICAgICBzb3J0ZWRU
cmFja3NbaV0gPSB0cmFja3MuZGF0YSgpICsgaTsKLQotICAgIHN0ZDo6c29ydChzb3J0ZWRUcmFj
a3MuYmVnaW4oKSwgc29ydGVkVHJhY2tzLmVuZCgpLCBzb3J0QnlHcmlkVHJhY2tHcm93dGhQb3Rl
bnRpYWwpOworICAgIHN0ZDo6c29ydCh0cmFja3MuYmVnaW4oKSwgdHJhY2tzLmVuZCgpLCBzb3J0
QnlHcmlkVHJhY2tHcm93dGhQb3RlbnRpYWwpOwogCisgICAgc2l6ZV90IHRyYWNrc1NpemUgPSB0
cmFja3Muc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhY2tzU2l6ZTsgKytp
KSB7Ci0gICAgICAgIEdyaWRUcmFjayYgdHJhY2sgPSAqc29ydGVkVHJhY2tzW2ldOworICAgICAg
ICBHcmlkVHJhY2smIHRyYWNrID0gKnRyYWNrc1tpXTsKICAgICAgICAgTGF5b3V0VW5pdCBhdmFp
bGFibGVMb2dpY2FsU3BhY2VTaGFyZSA9IGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSAvICh0cmFja3NT
aXplIC0gaSk7CiAgICAgICAgIC8vIFdlIG5ldmVyIHNocmluayB0aGUgdXNlZCBicmVhZHRoIGJ5
IGNsYW1waW5nIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gbWF4IGFuZCB1c2VkIGJyZWFkdGguIFRo
ZSBzcGVjIHVzZXMKLSAgICAgICAgLy8gMiBleHRyYS12YXJpYWJsZXMgYW5kIDIgZXh0cmEgaXRl
cmF0aW9ucyBvdmVyIHRoZSB0cmFja3MgdG8gYWNoaWV2ZSB0aGF0IChiZWNhdXNlIGRpc3RyaWJ1
dGVTcGFjZVRvVHJhY2tzCi0gICAgICAgIC8vIGlzIHNoYXJlZCB3aXRoIG90aGVyIG1ldGhvZHMp
LiBJZiB3ZSBzdGFydCBzaGFyaW5nIHRoZSBtZXRob2QsIHdlIHNob3VsZCBwcm9iYWJseSByZW1v
dmUgdGhpcyBjbGFtcGluZy4KLSAgICAgICAgTGF5b3V0VW5pdCBncm93dGhTaGFyZSA9IHN0ZDo6
bWluKGF2YWlsYWJsZUxvZ2ljYWxTcGFjZVNoYXJlLCBzdGQ6Om1heChMYXlvdXRVbml0KDApLCB0
cmFjay5tX21heEJyZWFkdGggLSB0cmFjay5tX3VzZWRCcmVhZHRoKSk7Ci0gICAgICAgIHRyYWNr
Lm1fdXNlZEJyZWFkdGggKz0gZ3Jvd3RoU2hhcmU7CisgICAgICAgIC8vIDIgZXh0cmEtdmFyaWFi
bGVzIGFuZCAyIGV4dHJhIGl0ZXJhdGlvbnMgdG8gZW5zdXJlIHRoYXQgd2UgYWx3YXlzIGdyb3cg
b3VyIHRyYWNrcyAodGh1cyBuZXZlciBnb2luZyBiZWxvdworICAgICAgICAvLyBtaW4tdHJhY2sp
LiBJZiB3ZSBkZWNpZGUgdG8gZm9sbG93IGl0IHRvIHRoZSBsZXR0ZXIsIHdlIHNob3VsZCByZW1v
dmUgdGhpcyBjbGFtcGluZy4KKyAgICAgICAgTGF5b3V0VW5pdCBncm93dGhTaGFyZSA9IHN0ZDo6
bWluKGF2YWlsYWJsZUxvZ2ljYWxTcGFjZVNoYXJlLCBzdGQ6Om1heChMYXlvdXRVbml0KDApLCB0
cmFjay5tX21heEJyZWFkdGggLSAodHJhY2suKnRyYWNrR2V0dGVyKSgpKSk7CisgICAgICAgICh0
cmFjay4qdHJhY2tHcm93dGhGdW5jdGlvbikoZ3Jvd3RoU2hhcmUpOwogICAgICAgICBhdmFpbGFi
bGVMb2dpY2FsU3BhY2UgLT0gZ3Jvd3RoU2hhcmU7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFdl
IGRvbid0IGltcGxlbWVudCB0aGUgbGFzdCAyIHN0ZXBzIG9mIHRoZSBhbGdvcml0aG0gYXMgd2Ug
ZG9uJ3QgaW1wbGVtZW50IGNvbnRlbnQgYmFzZWQgc2l6aW5nLgorICAgIGlmIChhdmFpbGFibGVM
b2dpY2FsU3BhY2UgPD0gMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCF0cmFja3NGb3JH
cm93dGhBYm92ZU1heEJyZWFkdGgpCisgICAgICAgIHJldHVybjsKKworICAgIHRyYWNrc1NpemUg
PSB0cmFja3NGb3JHcm93dGhBYm92ZU1heEJyZWFkdGgtPnNpemUoKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHRyYWNrc1NpemU7ICsraSkgeworICAgICAgICBHcmlkVHJhY2smIHRyYWNr
ID0gKnRyYWNrc0Zvckdyb3d0aEFib3ZlTWF4QnJlYWR0aC0+YXQoaSk7CisgICAgICAgIExheW91
dFVuaXQgZ3Jvd3RoU2hhcmUgPSBhdmFpbGFibGVMb2dpY2FsU3BhY2UgLyAodHJhY2tzU2l6ZSAt
IGkpOworICAgICAgICAodHJhY2suKnRyYWNrR3Jvd3RoRnVuY3Rpb24pKGdyb3d0aFNoYXJlKTsK
KyAgICAgICAgYXZhaWxhYmxlTG9naWNhbFNwYWNlIC09IGdyb3d0aFNoYXJlOworICAgIH0KIH0K
IAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4
IDQ5MzNiNTMyOGIyMTFlMDQ2YzRkMzg3ODI3YTYzZjA5OTA3MTY0OTMuLjMyN2E1MDlhOTU2NGJj
OTk4YzQwY2JhNzc0NTljMzcxMmY2YWI5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuaApAQCAtNTQsMTMgKzU0LDEzIEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBjb21w
dXRlVXNlZEJyZWFkdGhPZk1heExlbmd0aChUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgTGVu
Z3RoJikgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlVXNlZEJyZWFkdGhPZlNwZWNpZmll
ZExlbmd0aChUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgTGVuZ3RoJikgY29uc3Q7CiAgICAg
dm9pZCByZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdGdW5jdGlvbnMoVHJhY2tTaXppbmdE
aXJlY3Rpb24sIFZlY3RvcjxHcmlkVHJhY2s+JiBjb2x1bW5UcmFja3MsIFZlY3RvcjxHcmlkVHJh
Y2s+JiByb3dUcmFja3MsIExheW91dFVuaXQmIGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSk7Ci0gICAg
dm9pZCBkaXN0cmlidXRlU3BhY2VUb1RyYWNrcyhUcmFja1NpemluZ0RpcmVjdGlvbiwgVmVjdG9y
PEdyaWRUcmFjaz4mLCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSk7CiAgICAgdm9p
ZCBsYXlvdXRHcmlkSXRlbXMoKTsKIAogICAgIHR5cGVkZWYgTGF5b3V0VW5pdCAoUmVuZGVyR3Jp
ZDo6KiBTaXppbmdGdW5jdGlvbikoUmVuZGVyQm94KiwgVHJhY2tTaXppbmdEaXJlY3Rpb24sIFZl
Y3RvcjxHcmlkVHJhY2s+Jik7CiAgICAgdHlwZWRlZiBMYXlvdXRVbml0IChHcmlkVHJhY2s6Oiog
QWNjdW11bGF0b3JHZXR0ZXIpKCkgY29uc3Q7CiAgICAgdHlwZWRlZiB2b2lkIChHcmlkVHJhY2s6
OiogQWNjdW11bGF0b3JHcm93RnVuY3Rpb24pKExheW91dFVuaXQpOwogICAgIHZvaWQgcmVzb2x2
ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9ySXRlbXMoVHJhY2tTaXppbmdEaXJl
Y3Rpb24sIFZlY3RvcjxHcmlkVHJhY2s+JiBjb2x1bW5UcmFja3MsIFZlY3RvcjxHcmlkVHJhY2s+
JiByb3dUcmFja3MsIHNpemVfdCwgU2l6aW5nRnVuY3Rpb24sIEFjY3VtdWxhdG9yR2V0dGVyLCBB
Y2N1bXVsYXRvckdyb3dGdW5jdGlvbik7CisgICAgdm9pZCBkaXN0cmlidXRlU3BhY2VUb1RyYWNr
cyhWZWN0b3I8R3JpZFRyYWNrKj4mLCBWZWN0b3I8R3JpZFRyYWNrKj4qIHRyYWNrc0Zvckdyb3d0
aEFib3ZlTWF4QnJlYWR0aCwgQWNjdW11bGF0b3JHZXR0ZXIsIEFjY3VtdWxhdG9yR3Jvd0Z1bmN0
aW9uLCBMYXlvdXRVbml0JiBhdmFpbGFibGVMb2dpY2FsU3BhY2UpOwogCiAgICAgTGF5b3V0VW5p
dCBtaW5Db250ZW50Rm9yQ2hpbGQoUmVuZGVyQm94KiwgVHJhY2tTaXppbmdEaXJlY3Rpb24sIFZl
Y3RvcjxHcmlkVHJhY2s+JiBjb2x1bW5UcmFja3MpOwogICAgIExheW91dFVuaXQgbWF4Q29udGVu
dEZvckNoaWxkKFJlbmRlckJveCosIFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBWZWN0b3I8R3JpZFRy
YWNrPiYgY29sdW1uVHJhY2tzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185296</attachid>
            <date>2013-01-29 13:30:09 -0800</date>
            <delta_ts>2013-01-29 14:12:47 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-108110-20130129132655.patch</filename>
            <type>text/plain</type>
            <size>8491</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzA2MjE3Njc1NDk5NDE4
MGI2ZGE0OWM1ZTg5NjdhZmY5ZjUxNDQ1Ni4uZDhmNDM3NDViMzI1MjcwNDg4ZTk1YjIyMWVlZDE1
NWFiNmY2MzMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEzLTAxLTI5ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIE1ha2UgcmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9y
SXRlbXMgcmV1c2UgZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODExMAorCisgICAgICAgIFJldmlld2VkIGJ5
IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgbWFrZXMgdXMgbWF0Y2ggbW9yZSBj
bG9zZWx5IHRoZSBzcGVjaWZpY2F0aW9uIGJ5IHJldXNpbmcgZGlzdHJpYnV0ZVNwYWNlVG9UcmFj
a3MgaW5zaWRlCisgICAgICAgIHJlc29sdmVDb250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9u
c0Zvckl0ZW1zLiBUaGlzIGFsc28gcmVtb3ZlcyBzb21lIGV4aXN0aW5nIGNvZGUgZHVwbGljYXRp
b24uCisKKyAgICAgICAgUmVmYWN0b3JpbmcgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckdyaWQ6OmNvbXB1dGVkVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MpOgorICAgICAgICBVcGRh
dGVkIGFmdGVyIGRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzIG5ldyBhcmd1bWVudHMuIENvcHlpbmcg
dGhlIHRyYWNrcyB0byBhIFZlY3RvcjxHcmlkVHJhY2sqPiBpcworICAgICAgICBub3cgZG9uZSBo
ZXJlLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpyZXNvbHZlQ29udGVudEJhc2Vk
VHJhY2tTaXppbmdGdW5jdGlvbnNGb3JJdGVtcyk6CisgICAgICAgIFJlbW92ZWQgY29kZSBkdXBs
aWNhdGlvbiBhbmQgc3dpdGNoZWQgdG8gdXNpbmcgZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3MuCisK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKToK
KyAgICAgICAgUmVmYWN0b3JlZCBkaXN0cmlidXRlU3BhY2VUb1RyYWNrcyB0byBpbXBsZW1lbnQg
dGhlIGRpc3RyaWJ1dGlvbiBvZiBhbnkgZXh0cmEgc3BhY2UgYWJvdmUgbWF4IGJyZWFkdGgKKyAg
ICAgICAgYXMgaXQgd2FzIHJlcXVpcmVkIHRvIHBhc3MgdGhlIHRlc3RzIChyZXF1aXJlZCB0byBw
cm9wZXJseSBoYW5kbGluZyBtaW4tY29udGVudCA+IG1heCkuIEFsc28gY2hhbmdlZAorICAgICAg
ICB0aGUgYXJndW1lbnRzIG9mIHRoZSBmdW5jdGlvbiB0byBiZXR0ZXIgbWF0Y2ggdGhlIGludGVu
dCBvZiB0aGUgZnVuY3Rpb24uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5oOiBV
cGRhdGVkIGRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzJ3MgYXJndW1lbnRzLgorCiAyMDEzLTAxLTI5
ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIE1lZGlh
U3RyZWFtIEFQSTogQSBNZWRpYVN0cmVhbUNvbXBvbmVudCBzaG91bGQgYmUgYWJsZSB0byByZXR1
cm4gdGhlIE1lZGlhU3RyZWFtRGVzY3JpcHRvciBpdCBiZWxvbmdzIHRvCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggMjMwNzIzNGNlMTM1MDljZWQzODYyZTAyNTAy
OWQwZWZlYTdmNDQ4OS4uZGIxYjA4NWRhZTAwMTE4ZjhiYmUxMDU4ZDU1MjcxOWNlNDNkMTlkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMTk2LDcgKzE5Niwx
MiBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVkVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MoVHJh
Y2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLAogICAgIGlmIChhdmFpbGFibGVMb2dpY2FsU3Bh
Y2UgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3Mo
ZGlyZWN0aW9uLCB0cmFja3MsIGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSk7CisgICAgY29uc3Qgc2l6
ZV90IHRyYWNrc1NpemUgPSB0cmFja3Muc2l6ZSgpOworICAgIFZlY3RvcjxHcmlkVHJhY2sqPiB0
cmFja3NGb3JEaXN0cmlidXRpb24odHJhY2tzU2l6ZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB0cmFja3NTaXplOyArK2kpCisgICAgICAgIHRyYWNrc0ZvckRpc3RyaWJ1dGlvbltpXSA9
IHRyYWNrcy5kYXRhKCkgKyBpOworCisgICAgZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3ModHJhY2tz
Rm9yRGlzdHJpYnV0aW9uLCAwLCAmR3JpZFRyYWNrOjp1c2VkQnJlYWR0aCwgJkdyaWRUcmFjazo6
Z3Jvd1VzZWRCcmVhZHRoLCBhdmFpbGFibGVMb2dpY2FsU3BhY2UpOwogfQogCiBMYXlvdXRVbml0
IFJlbmRlckdyaWQ6OmNvbXB1dGVVc2VkQnJlYWR0aE9mTWluTGVuZ3RoKFRyYWNrU2l6aW5nRGly
ZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgTGVuZ3RoJiB0cmFja0xlbmd0aCkgY29uc3QKQEAgLTMx
MCw3ICszMTUsNiBAQCB2b2lkIFJlbmRlckdyaWQ6OnJlc29sdmVDb250ZW50QmFzZWRUcmFja1Np
emluZ0Z1bmN0aW9ucyhUcmFja1NpemluZ0RpcmVjdGlvbiBkaQogCiB2b2lkIFJlbmRlckdyaWQ6
OnJlc29sdmVDb250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9uc0Zvckl0ZW1zKFRyYWNrU2l6
aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgVmVjdG9yPEdyaWRUcmFjaz4mIGNvbHVtblRyYWNrcywg
VmVjdG9yPEdyaWRUcmFjaz4mIHJvd1RyYWNrcywgc2l6ZV90IGksIFNpemluZ0Z1bmN0aW9uIHNp
emluZ0Z1bmN0aW9uLCBBY2N1bXVsYXRvckdldHRlciB0cmFja0dldHRlciwgQWNjdW11bGF0b3JH
cm93RnVuY3Rpb24gdHJhY2tHcm93dGhGdW5jdGlvbikKIHsKLSAgICAvLyBGSVhNRTogVGhlIHNw
ZWNpZmljYXRpb24gcmUtdXNlcyBkaXN0cmlidXRlU3BhY2VUb1RyYWNrLCB3aGljaCB3ZSBzaG91
bGQgcHJvYmFibHkgZG8uCiAgICAgR3JpZFRyYWNrJiB0cmFjayA9IChkaXJlY3Rpb24gPT0gRm9y
Q29sdW1ucykgPyBjb2x1bW5UcmFja3NbaV0gOiByb3dUcmFja3NbaV07CiAgICAgZm9yIChSZW5k
ZXJCb3gqIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4
dFNpYmxpbmdCb3goKSkgewogICAgICAgICBzaXplX3QgY2VsbEluZGV4ID0gcmVzb2x2ZUdyaWRQ
b3NpdGlvbihkaXJlY3Rpb24sIGNoaWxkKTsKQEAgLTMxOSwzMyArMzIzLDQyIEBAIHZvaWQgUmVu
ZGVyR3JpZDo6cmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9ySXRlbXMo
VHJhY2tTaXppbmdEaXJlCiAKICAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50U2l6ZSA9ICh0aGlz
LT4qc2l6aW5nRnVuY3Rpb24pKGNoaWxkLCBkaXJlY3Rpb24sIGNvbHVtblRyYWNrcyk7CiAgICAg
ICAgIExheW91dFVuaXQgYWRkaXRpb25hbEJyZWFkdGhTcGFjZSA9IGNvbnRlbnRTaXplIC0gKHRy
YWNrLip0cmFja0dldHRlcikoKTsKLSAgICAgICAgTGF5b3V0VW5pdCBzaGFyZSA9IGFkZGl0aW9u
YWxCcmVhZHRoU3BhY2U7Ci0gICAgICAgIHN0ZDo6bWluKGFkZGl0aW9uYWxCcmVhZHRoU3BhY2Us
IHRyYWNrLm1fbWF4QnJlYWR0aCAtICh0cmFjay4qdHJhY2tHZXR0ZXIpKCkpOwotICAgICAgICAo
dHJhY2suKnRyYWNrR3Jvd3RoRnVuY3Rpb24pKHNoYXJlKTsKKyAgICAgICAgVmVjdG9yPEdyaWRU
cmFjayo+IHRyYWNrczsKKyAgICAgICAgdHJhY2tzLmFwcGVuZCgmdHJhY2spOworICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHBhc3MgZGlmZmVyZW50IHZhbHVlcyBmb3IgfHRyYWNrc0Zvckdy
b3d0aEFib3ZlTWF4QnJlYWR0aHwuCisgICAgICAgIGRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKHRy
YWNrcywgJnRyYWNrcywgdHJhY2tHZXR0ZXIsIHRyYWNrR3Jvd3RoRnVuY3Rpb24sIGFkZGl0aW9u
YWxCcmVhZHRoU3BhY2UpOwogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJHcmlkOjpkaXN0cmlidXRl
U3BhY2VUb1RyYWNrcyhUcmFja1NpemluZ0RpcmVjdGlvbiwgVmVjdG9yPEdyaWRUcmFjaz4mIHRy
YWNrcywgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsU3BhY2UpCit2b2lkIFJlbmRlckdyaWQ6
OmRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKFZlY3RvcjxHcmlkVHJhY2sqPiYgdHJhY2tzLCBWZWN0
b3I8R3JpZFRyYWNrKj4qIHRyYWNrc0Zvckdyb3d0aEFib3ZlTWF4QnJlYWR0aCwgQWNjdW11bGF0
b3JHZXR0ZXIgdHJhY2tHZXR0ZXIsIEFjY3VtdWxhdG9yR3Jvd0Z1bmN0aW9uIHRyYWNrR3Jvd3Ro
RnVuY3Rpb24sIExheW91dFVuaXQmIGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSkKIHsKLSAgICBjb25z
dCBzaXplX3QgdHJhY2tzU2l6ZSA9IHRyYWNrcy5zaXplKCk7Ci0gICAgVmVjdG9yPEdyaWRUcmFj
ayo+IHNvcnRlZFRyYWNrcyh0cmFja3NTaXplKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHRyYWNrc1NpemU7ICsraSkKLSAgICAgICAgc29ydGVkVHJhY2tzW2ldID0gdHJhY2tzLmRhdGEo
KSArIGk7Ci0KLSAgICBzdGQ6OnNvcnQoc29ydGVkVHJhY2tzLmJlZ2luKCksIHNvcnRlZFRyYWNr
cy5lbmQoKSwgc29ydEJ5R3JpZFRyYWNrR3Jvd3RoUG90ZW50aWFsKTsKKyAgICBzdGQ6OnNvcnQo
dHJhY2tzLmJlZ2luKCksIHRyYWNrcy5lbmQoKSwgc29ydEJ5R3JpZFRyYWNrR3Jvd3RoUG90ZW50
aWFsKTsKIAorICAgIHNpemVfdCB0cmFja3NTaXplID0gdHJhY2tzLnNpemUoKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHRyYWNrc1NpemU7ICsraSkgewotICAgICAgICBHcmlkVHJhY2sm
IHRyYWNrID0gKnNvcnRlZFRyYWNrc1tpXTsKKyAgICAgICAgR3JpZFRyYWNrJiB0cmFjayA9ICp0
cmFja3NbaV07CiAgICAgICAgIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFNwYWNlU2hhcmUg
PSBhdmFpbGFibGVMb2dpY2FsU3BhY2UgLyAodHJhY2tzU2l6ZSAtIGkpOwogICAgICAgICAvLyBX
ZSBuZXZlciBzaHJpbmsgdGhlIHVzZWQgYnJlYWR0aCBieSBjbGFtcGluZyB0aGUgZGlmZmVyZW5j
ZSBiZXR3ZWVuIG1heCBhbmQgdXNlZCBicmVhZHRoLiBUaGUgc3BlYyB1c2VzCi0gICAgICAgIC8v
IDIgZXh0cmEtdmFyaWFibGVzIGFuZCAyIGV4dHJhIGl0ZXJhdGlvbnMgb3ZlciB0aGUgdHJhY2tz
IHRvIGFjaGlldmUgdGhhdCAoYmVjYXVzZSBkaXN0cmlidXRlU3BhY2VUb1RyYWNrcwotICAgICAg
ICAvLyBpcyBzaGFyZWQgd2l0aCBvdGhlciBtZXRob2RzKS4gSWYgd2Ugc3RhcnQgc2hhcmluZyB0
aGUgbWV0aG9kLCB3ZSBzaG91bGQgcHJvYmFibHkgcmVtb3ZlIHRoaXMgY2xhbXBpbmcuCi0gICAg
ICAgIExheW91dFVuaXQgZ3Jvd3RoU2hhcmUgPSBzdGQ6Om1pbihhdmFpbGFibGVMb2dpY2FsU3Bh
Y2VTaGFyZSwgc3RkOjptYXgoTGF5b3V0VW5pdCgwKSwgdHJhY2subV9tYXhCcmVhZHRoIC0gdHJh
Y2subV91c2VkQnJlYWR0aCkpOwotICAgICAgICB0cmFjay5tX3VzZWRCcmVhZHRoICs9IGdyb3d0
aFNoYXJlOworICAgICAgICAvLyAyIGV4dHJhLXZhcmlhYmxlcyBhbmQgMiBleHRyYSBpdGVyYXRp
b25zIHRvIGVuc3VyZSB0aGF0IHdlIGFsd2F5cyBncm93IG91ciB0cmFja3MgKHRodXMgbmV2ZXIg
Z29pbmcgYmVsb3cKKyAgICAgICAgLy8gbWluLXRyYWNrKS4gSWYgd2UgZGVjaWRlIHRvIGZvbGxv
dyBpdCB0byB0aGUgbGV0dGVyLCB3ZSBzaG91bGQgcmVtb3ZlIHRoaXMgY2xhbXBpbmcuCisgICAg
ICAgIExheW91dFVuaXQgZ3Jvd3RoU2hhcmUgPSBzdGQ6Om1pbihhdmFpbGFibGVMb2dpY2FsU3Bh
Y2VTaGFyZSwgc3RkOjptYXgoTGF5b3V0VW5pdCgwKSwgdHJhY2subV9tYXhCcmVhZHRoIC0gKHRy
YWNrLip0cmFja0dldHRlcikoKSkpOworICAgICAgICAodHJhY2suKnRyYWNrR3Jvd3RoRnVuY3Rp
b24pKGdyb3d0aFNoYXJlKTsKICAgICAgICAgYXZhaWxhYmxlTG9naWNhbFNwYWNlIC09IGdyb3d0
aFNoYXJlOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBXZSBkb24ndCBpbXBsZW1lbnQgdGhlIGxh
c3QgMiBzdGVwcyBvZiB0aGUgYWxnb3JpdGhtIGFzIHdlIGRvbid0IGltcGxlbWVudCBjb250ZW50
IGJhc2VkIHNpemluZy4KKyAgICBpZiAoYXZhaWxhYmxlTG9naWNhbFNwYWNlIDw9IDApCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmICghdHJhY2tzRm9yR3Jvd3RoQWJvdmVNYXhCcmVhZHRoKQor
ICAgICAgICByZXR1cm47CisKKyAgICB0cmFja3NTaXplID0gdHJhY2tzRm9yR3Jvd3RoQWJvdmVN
YXhCcmVhZHRoLT5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFja3NTaXpl
OyArK2kpIHsKKyAgICAgICAgR3JpZFRyYWNrJiB0cmFjayA9ICp0cmFja3NGb3JHcm93dGhBYm92
ZU1heEJyZWFkdGgtPmF0KGkpOworICAgICAgICBMYXlvdXRVbml0IGdyb3d0aFNoYXJlID0gYXZh
aWxhYmxlTG9naWNhbFNwYWNlIC8gKHRyYWNrc1NpemUgLSBpKTsKKyAgICAgICAgKHRyYWNrLip0
cmFja0dyb3d0aEZ1bmN0aW9uKShncm93dGhTaGFyZSk7CisgICAgICAgIGF2YWlsYWJsZUxvZ2lj
YWxTcGFjZSAtPSBncm93dGhTaGFyZTsKKyAgICB9CiB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCA0OTMzYjUzMjhiMjExZTA0NmM0ZDM4
NzgyN2E2M2YwOTkwNzE2NDkzLi4zMjdhNTA5YTk1NjRiYzk5OGM0MGNiYTc3NDU5YzM3MTJmNmFi
OTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTU0LDEzICs1NCwx
MyBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQgY29tcHV0ZVVzZWRCcmVhZHRoT2ZNYXhMZW5n
dGgoVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IExlbmd0aCYpIGNvbnN0OwogICAgIExheW91
dFVuaXQgY29tcHV0ZVVzZWRCcmVhZHRoT2ZTcGVjaWZpZWRMZW5ndGgoVHJhY2tTaXppbmdEaXJl
Y3Rpb24sIGNvbnN0IExlbmd0aCYpIGNvbnN0OwogICAgIHZvaWQgcmVzb2x2ZUNvbnRlbnRCYXNl
ZFRyYWNrU2l6aW5nRnVuY3Rpb25zKFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBWZWN0b3I8R3JpZFRy
YWNrPiYgY29sdW1uVHJhY2tzLCBWZWN0b3I8R3JpZFRyYWNrPiYgcm93VHJhY2tzLCBMYXlvdXRV
bml0JiBhdmFpbGFibGVMb2dpY2FsU3BhY2UpOwotICAgIHZvaWQgZGlzdHJpYnV0ZVNwYWNlVG9U
cmFja3MoVHJhY2tTaXppbmdEaXJlY3Rpb24sIFZlY3RvcjxHcmlkVHJhY2s+JiwgTGF5b3V0VW5p
dCBhdmFpbGFibGVMb2dpY2FsU3BhY2UpOwogICAgIHZvaWQgbGF5b3V0R3JpZEl0ZW1zKCk7CiAK
ICAgICB0eXBlZGVmIExheW91dFVuaXQgKFJlbmRlckdyaWQ6OiogU2l6aW5nRnVuY3Rpb24pKFJl
bmRlckJveCosIFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBWZWN0b3I8R3JpZFRyYWNrPiYpOwogICAg
IHR5cGVkZWYgTGF5b3V0VW5pdCAoR3JpZFRyYWNrOjoqIEFjY3VtdWxhdG9yR2V0dGVyKSgpIGNv
bnN0OwogICAgIHR5cGVkZWYgdm9pZCAoR3JpZFRyYWNrOjoqIEFjY3VtdWxhdG9yR3Jvd0Z1bmN0
aW9uKShMYXlvdXRVbml0KTsKICAgICB2b2lkIHJlc29sdmVDb250ZW50QmFzZWRUcmFja1Npemlu
Z0Z1bmN0aW9uc0Zvckl0ZW1zKFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBWZWN0b3I8R3JpZFRyYWNr
PiYgY29sdW1uVHJhY2tzLCBWZWN0b3I8R3JpZFRyYWNrPiYgcm93VHJhY2tzLCBzaXplX3QsIFNp
emluZ0Z1bmN0aW9uLCBBY2N1bXVsYXRvckdldHRlciwgQWNjdW11bGF0b3JHcm93RnVuY3Rpb24p
OworICAgIHZvaWQgZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3MoVmVjdG9yPEdyaWRUcmFjayo+Jiwg
VmVjdG9yPEdyaWRUcmFjayo+KiB0cmFja3NGb3JHcm93dGhBYm92ZU1heEJyZWFkdGgsIEFjY3Vt
dWxhdG9yR2V0dGVyLCBBY2N1bXVsYXRvckdyb3dGdW5jdGlvbiwgTGF5b3V0VW5pdCYgYXZhaWxh
YmxlTG9naWNhbFNwYWNlKTsKIAogICAgIExheW91dFVuaXQgbWluQ29udGVudEZvckNoaWxkKFJl
bmRlckJveCosIFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBWZWN0b3I8R3JpZFRyYWNrPiYgY29sdW1u
VHJhY2tzKTsKICAgICBMYXlvdXRVbml0IG1heENvbnRlbnRGb3JDaGlsZChSZW5kZXJCb3gqLCBU
cmFja1NpemluZ0RpcmVjdGlvbiwgVmVjdG9yPEdyaWRUcmFjaz4mIGNvbHVtblRyYWNrcyk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>