<?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>234917</bug_id>
          
          <creation_ts>2022-01-06 05:39:29 -0800</creation_ts>
          <short_desc>[css-grid] Fix rounding of distributed free space to flexible tracks</short_desc>
          <delta_ts>2024-11-04 02:20:19 -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>CSS</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>zsun</reporter>
          <assigned_to>zsun</assigned_to>
          <cc>changseok</cc>
    
    <cc>clopez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jfernandez</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>rego</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1828576</commentid>
    <comment_count>0</comment_count>
    <who name="">zsun</who>
    <bug_when>2022-01-06 05:39:29 -0800</bug_when>
    <thetext>The number of flexible tracks in a grid unevenly divides its leftover space, which causes truncated track sizes not being added as part of the grid available size.

Affected WPT test -

imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/flex-tracks-with-fractional-size.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828587</commentid>
    <comment_count>1</comment_count>
      <attachid>448493</attachid>
    <who name="">zsun</who>
    <bug_when>2022-01-06 06:19:23 -0800</bug_when>
    <thetext>Created attachment 448493
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828590</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2022-01-06 06:20:37 -0800</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828660</commentid>
    <comment_count>3</comment_count>
      <attachid>448493</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-06 10:29:40 -0800</bug_when>
    <thetext>Comment on attachment 448493
Patch

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

Looks good.

The test is failing on GTK-WK2, which needs to be resolved before landing this.

And there are some coding style issues.

&gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:733
&gt; +    double leftOverSize = 0;

Why double instead of float?

&gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:739
&gt; +        const double frShare = flexFraction * trackSize.maxTrackBreadth().flex() + leftOverSize;

Why do we compute a double here, and then convert it back to a float?

The use of const here isn’t so great. All the local variables could be marked const, like trackIndex, oldBaseSize, and newBaseSize, but normally we don’t do that. Maybe this is Chromium coding style creeping into WebKit?

&gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:741
&gt; +        const LayoutUnit stretchedSize = LayoutUnit(frShare + std::numeric_limits&lt;float&gt;::epsilon());

Same thought on the use of const. I also would suggest writing auto instead of writing LayoutUnit twice on this line.

The real goal here is to round rather than truncate, I think. Adding epsilon to do that is a risky hack, sure would be nice to find a better strategy. For example, if we had a LayoutUnit function that converted a float to a LayoutUnit using rounding instead of truncation (just add a call to std::round after multiplying by kFixedPointDenominator) that would be a better solution, and I think it would work. The rest of the patch could likely be the same.

There are problems with using epsilon if we ever get to larger exponents, so typically we would use std::nextafter instead of epsilon as a basic coding style technique, but it would be better to use neither.

&gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:746
&gt; +        leftOverSize = std::max(frShare - stretchedSize.toDouble(), 0.0);

Again, why double instead of float? Mixing double and float is not great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829432</commentid>
    <comment_count>4</comment_count>
      <attachid>448739</attachid>
    <who name="">zsun</who>
    <bug_when>2022-01-10 05:59:50 -0800</bug_when>
    <thetext>Created attachment 448739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829437</commentid>
    <comment_count>5</comment_count>
    <who name="">zsun</who>
    <bug_when>2022-01-10 06:15:53 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 448493 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448493&amp;action=review
&gt; 
&gt; Looks good.
&gt; 
&gt; The test is failing on GTK-WK2, which needs to be resolved before landing
&gt; this.
&gt; 

Thanks very much for the review comments! Failing in GTK seems related to the calls of &quot;reftest-wait&quot; in the test script. I have raised bug 235025. This might need a separate investigation.

&gt; And there are some coding style issues.
&gt; 
&gt; &gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:733
&gt; &gt; +    double leftOverSize = 0;
&gt; 
&gt; Why double instead of float?

It is a double because flexfraction &amp; flexFraction * trackSize.maxTrackBreadth().flex() are all doubles, right?
&gt; 
&gt; &gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:739
&gt; &gt; +        const double frShare = flexFraction * trackSize.maxTrackBreadth().flex() + leftOverSize;
&gt; 
&gt; Why do we compute a double here, and then convert it back to a float?
&gt; 

I thought they are doubles all the way through. Maybe I have missed something here?

&gt; The use of const here isn’t so great. All the local variables could be
&gt; marked const, like trackIndex, oldBaseSize, and newBaseSize, but normally we
&gt; don’t do that. Maybe this is Chromium coding style creeping into WebKit?
&gt; 
&gt; &gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:741
&gt; &gt; +        const LayoutUnit stretchedSize = LayoutUnit(frShare + std::numeric_limits&lt;float&gt;::epsilon());
&gt; 
&gt; Same thought on the use of const. I also would suggest writing auto instead
&gt; of writing LayoutUnit twice on this line.
&gt; 
Updated.

&gt; The real goal here is to round rather than truncate, I think. Adding epsilon
&gt; to do that is a risky hack, sure would be nice to find a better strategy.
&gt; For example, if we had a LayoutUnit function that converted a float to a
&gt; LayoutUnit using rounding instead of truncation (just add a call to
&gt; std::round after multiplying by kFixedPointDenominator) that would be a
&gt; better solution, and I think it would work. The rest of the patch could
&gt; likely be the same.
&gt;
I tried using std::round() in LayoutUnit.h, the overall leftovers seems exceeding what the test expected. The width of the image ends up with 106px rather than 100px.

On the other thought, I feel that we might not need calling epsilon after all. The purpose of this patch is the recover the fractional part of the computation lost when we floor the stretched size to fit in a LayoutUnit. The leftover itself does this purpose, right?

 
&gt; There are problems with using epsilon if we ever get to larger exponents, so
&gt; typically we would use std::nextafter instead of epsilon as a basic coding
&gt; style technique, but it would be better to use neither.
&gt; 
&gt; &gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:746
&gt; &gt; +        leftOverSize = std::max(frShare - stretchedSize.toDouble(), 0.0);
&gt; 
&gt; Again, why double instead of float? Mixing double and float is not great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829485</commentid>
    <comment_count>6</comment_count>
      <attachid>448493</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-10 09:00:41 -0800</bug_when>
    <thetext>Comment on attachment 448493
Patch

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

&gt;&gt;&gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:739
&gt;&gt;&gt; +        const double frShare = flexFraction * trackSize.maxTrackBreadth().flex() + leftOverSize;
&gt;&gt; 
&gt;&gt; Why do we compute a double here, and then convert it back to a float?
&gt;&gt; 
&gt;&gt; The use of const here isn’t so great. All the local variables could be marked const, like trackIndex, oldBaseSize, and newBaseSize, but normally we don’t do that. Maybe this is Chromium coding style creeping into WebKit?
&gt; 
&gt; I thought they are doubles all the way through. Maybe I have missed something here?

I think it was inaccurate to say &quot;converted to float&quot;; instead we add the &quot;float epsilon&quot;, which itself is converted to a double. That is quite peculiar! I will look at the new patch to see what you chose to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829487</commentid>
    <comment_count>7</comment_count>
      <attachid>448739</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-10 09:02:47 -0800</bug_when>
    <thetext>Comment on attachment 448739
Patch

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

&gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:740
&gt; +        auto stretchedSize = LayoutUnit(frShare);

This truncates rather than rounding, so it rounds toward zero. Did we want to round in the more traditional way instead? We would do this with the equivalent of LayoutUnit::fromFloatRound, although I suppose we would want a double version of that?

Looks like the problem is fixed without that, though, so it may be optional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829489</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-10 09:05:39 -0800</bug_when>
    <thetext>(In reply to zsun from comment #5)
&gt; I tried using std::round() in LayoutUnit.h, the overall leftovers seems
&gt; exceeding what the test expected. The width of the image ends up with 106px
&gt; rather than 100px.

LayoutUnit::round() rounds a LayoutUnit to a integer. We want to round to the nearest LayoutUnit value (1/64 of an integer), and we want to do that in the process of *creating* the LayoutUnit from a floating point value. Once the LayoutUnit is created the thing we wanted to round is already truncated.

&gt; On the other thought, I feel that we might not need calling epsilon after
&gt; all. The purpose of this patch is the recover the fractional part of the
&gt; computation lost when we floor the stretched size to fit in a LayoutUnit.
&gt; The leftover itself does this purpose, right?

Sure, that sounds fine. I am not sure about the importance of rounding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830528</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-13 05:40:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/87544943&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830536</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-13 06:42:21 -0800</bug_when>
    <thetext>Committed r287977 (246006@main): &lt;https://commits.webkit.org/246006@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448739.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2072467</commentid>
    <comment_count>11</comment_count>
    <who name="">zsun</who>
    <bug_when>2024-11-04 02:20:19 -0800</bug_when>
    <thetext>*** Bug 235025 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448493</attachid>
            <date>2022-01-06 06:19:23 -0800</date>
            <delta_ts>2022-01-10 05:59:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234917-20220106141922.patch</filename>
            <type>text/plain</type>
            <size>7626</size>
            <attacher>zsun</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTM3ZWFjOGE5Zjg2ZmU2
YzY2MTBhODUzZjdmZjZiYjA1OTM2YmNmYy4uN2Q3ZGYzNTE2ZjBkYTAzYzU5ZWRjMTRkYjIxMTE3
MTViMTMwNDE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTAxLTA2ICBaaXJh
biBTdW4gIDx6c3VuQGlnYWxpYS5jb20+CisKKyAgICAgICAgW2Nzcy1ncmlkXSBGaXggcm91bmRp
bmcgb2YgZGlzdHJpYnV0ZWQgZnJlZSBzcGFjZSB0byBmbGV4aWJsZSB0cmFja3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDkxNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gY29tcHV0aW5nIHRo
ZSBncm93dGggc2l6ZSBmb3IgZmxleCBzaXplZCB0cmFja3MsIHRoZSBmbGV4RnJhY3Rpb24gbXVs
dGlwbGllZCBieSB0aGUgZmxleCBmYWN0b3IgY2FuIHJlc3VsdAorICAgICAgICBpbiBhIG5vbi1p
bnRlZ2VyIHNpemUuIEhvd2V2ZXIsIHdlIGZsb29yIHRoZSBzdHJldGNoZWQgc2l6ZSB0byBmaXQg
aW4gYSBMYXlvdXRVbml0LiBUaGlzIG1lYW5zIHRoYXQgd2UgbWF5IGxvc2UKKyAgICAgICAgdGhl
IGZyYWN0aW9uYWwgcGFydCBvZiB0aGUgY29tcHV0YXRpb24gd2hpY2ggY2FuIGNhdXNlIHRoZSBl
bnRpcmUgZnJlZSBzcGFjZSBub3QgYmVpbmcgZGlzdHJpYnV0ZWQgZXZlbmx5LiBUaGlzCisgICAg
ICAgIGZpeCBpcyB0byBzdW0gdXAgdGhlIGxlZnRvdmVyIGZyYWN0aW9uYWwgcGFydCBmcm9tIGV2
ZXJ5IGZsZXhpYmxlIHRyYWNrIHRvIGF2b2lkIHRoaXMgaXNzdWUuCisKKyAgICAgICAgSXQgaXMg
YW4gaW1wb3J0IG9mIENocm9taXVtIEdyaWRORyBDTCBhdCAgaHR0cHM6Ly9jaHJvbWl1bS1yZXZp
ZXcuZ29vZ2xlc291cmNlLmNvbS9jL2Nocm9taXVtL3NyYy8rLzMxOTM2NzQuCisKKyAgICAgICAg
VGVzdDogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvbGF5b3V0
LWFsZ29yaXRobS9mbGV4LXRyYWNrcy13aXRoLWZyYWN0aW9uYWwtc2l6ZS5odG1sCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y29tcHV0ZUZsZXhTaXplZFRyYWNrc0dy
b3d0aCBjb25zdCk6CisKIDIwMjItMDEtMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIE1lZGlhUmVjb3JkZXIgc2hvdWxkIHN1cHBvcnQgdGhlIGJpdHNQZXJT
ZWNvbmQgb3B0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRy
YWNrU2l6aW5nQWxnb3JpdGhtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJh
Y2tTaXppbmdBbGdvcml0aG0uY3BwCmluZGV4IDAxYzNjOTlkOTM2MjVhNmRiYTBhY2RiZjMyZDgw
NjdlYTQyYzIzZTUuLjAzMjEwMjUxMGU5NmQ1OGQwOGNiMTY4YzA0MzlmMTQzNjg3OWM0YTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0
aG0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdv
cml0aG0uY3BwCkBAIC03MjcsMTQgKzcyNywyMyBAQCB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29y
aXRobTo6Y29tcHV0ZUZsZXhTaXplZFRyYWNrc0dyb3d0aChkb3VibGUgZmxleEZyYWN0aW9uLAog
ICAgIHNpemVfdCBudW1GbGV4VHJhY2tzID0gbV9mbGV4aWJsZVNpemVkVHJhY2tzSW5kZXguc2l6
ZSgpOwogICAgIEFTU0VSVChpbmNyZW1lbnRzLnNpemUoKSA9PSBudW1GbGV4VHJhY2tzKTsKICAg
ICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYgYWxsVHJhY2tzID0gdHJhY2tzKG1fZGlyZWN0aW9u
KTsKKyAgICAvLyBUaGUgZmxleEZyYWN0aW9uIG11bHRpcGxpZWQgYnkgdGhlIGZsZXggZmFjdG9y
IGNhbiByZXN1bHQgaW4gYSBub24taW50ZWdlciBzaXplLiBTaW5jZSB3ZSBmbG9vciB0aGUgc3Ry
ZXRjaGVkIHNpemUgdG8gZml0IGluIGEgTGF5b3V0VW5pdCwKKyAgICAvLyB3ZSBtYXkgbG9zZSB0
aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSBjb21wdXRhdGlvbiB3aGljaCBjYW4gY2F1c2UgdGhl
IGVudGlyZSBmcmVlIHNwYWNlIG5vdCBiZWluZyBkaXN0cmlidXRlZCBldmVubHkuIFRoZSBsZWZ0
b3ZlcgorICAgIC8vIGZyYWN0aW9uYWwgcGFydCBmcm9tIGV2ZXJ5IGZsZXhpYmxlIHRyYWNrIGFy
ZSBhY2N1bXVsYXRlZCBoZXJlIHRvIGF2b2lkIHRoaXMgaXNzdWUuCisgICAgZG91YmxlIGxlZnRP
dmVyU2l6ZSA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1GbGV4VHJhY2tzOyAr
K2kpIHsKICAgICAgICAgdW5zaWduZWQgdHJhY2tJbmRleCA9IG1fZmxleGlibGVTaXplZFRyYWNr
c0luZGV4W2ldOwogICAgICAgICBjb25zdCBhdXRvJiB0cmFja1NpemUgPSBhbGxUcmFja3NbdHJh
Y2tJbmRleF0uY2FjaGVkVHJhY2tTaXplKCk7CiAgICAgICAgIEFTU0VSVCh0cmFja1NpemUubWF4
VHJhY2tCcmVhZHRoKCkuaXNGbGV4KCkpOwogICAgICAgICBMYXlvdXRVbml0IG9sZEJhc2VTaXpl
ID0gYWxsVHJhY2tzW3RyYWNrSW5kZXhdLmJhc2VTaXplKCk7Ci0gICAgICAgIExheW91dFVuaXQg
bmV3QmFzZVNpemUgPSBzdGQ6Om1heChvbGRCYXNlU2l6ZSwgTGF5b3V0VW5pdChmbGV4RnJhY3Rp
b24gKiB0cmFja1NpemUubWF4VHJhY2tCcmVhZHRoKCkuZmxleCgpKSk7CisgICAgICAgIGNvbnN0
IGRvdWJsZSBmclNoYXJlID0gZmxleEZyYWN0aW9uICogdHJhY2tTaXplLm1heFRyYWNrQnJlYWR0
aCgpLmZsZXgoKSArIGxlZnRPdmVyU2l6ZTsKKyAgICAgICAgLy8gQWRkIGFuIGVwc2lsb24gdG8g
cm91bmQgdXAgdmFsdWVzIHZlcnkgY2xvc2UgdG8gdGhlIG5leHQgaW50ZWdlci4KKyAgICAgICAg
Y29uc3QgTGF5b3V0VW5pdCBzdHJldGNoZWRTaXplID0gTGF5b3V0VW5pdChmclNoYXJlICsgc3Rk
OjpudW1lcmljX2xpbWl0czxmbG9hdD46OmVwc2lsb24oKSk7CisgICAgICAgIExheW91dFVuaXQg
bmV3QmFzZVNpemUgPSBzdGQ6Om1heChvbGRCYXNlU2l6ZSwgc3RyZXRjaGVkU2l6ZSk7CiAgICAg
ICAgIGluY3JlbWVudHNbaV0gPSBuZXdCYXNlU2l6ZSAtIG9sZEJhc2VTaXplOwogICAgICAgICB0
b3RhbEdyb3d0aCArPSBpbmNyZW1lbnRzW2ldOworICAgICAgICAvLyBUaGUgZXBzaWxvbiBhZGRl
ZCBhYm92ZSBtaWdodCBtYWtlIHN0cmV0Y2hlZFNpemUgZ3JlYXRlciB0aGFuIGZyU2hhcmUsIGlu
IHRoYXQgY2FzZSBhdm9pZCBhIG5lZ2F0aXZlIGxlZnRvdmVyIGJ5IGZsb29yaW5nIHRvIDAuCisg
ICAgICAgIGxlZnRPdmVyU2l6ZSA9IHN0ZDo6bWF4KGZyU2hhcmUgLSBzdHJldGNoZWRTaXplLnRv
RG91YmxlKCksIDAuMCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpp
bmRleCAxMzBhMjFhNDZhODkzMDlmN2M5NDFlOTA0ZTkzMzM3ZDA1Y2Q0NzE1Li4xNjdmNDhkOGY3
MDE3ODg1YmYzYzUzNjIzYjRmOGQwNjYzMDIzMmZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMS0wNiAgWmlyYW4gU3VuICA8enN1bkBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtjc3MtZ3JpZF0gRml4IHJvdW5kaW5nIG9mIGRpc3RyaWJ1dGVk
IGZyZWUgc3BhY2UgdG8gZmxleGlibGUgdHJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQb3J0ZWQgdGhlIGZvbGxvd2luZyB0ZXN0IGZyb20gV1BU
LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvbGF5b3V0LWFsZ29y
aXRobS9mbGV4LXRyYWNrcy13aXRoLWZyYWN0aW9uYWwtc2l6ZS1leHBlY3RlZC54aHQ6IEFkZGVk
LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvbGF5b3V0LWFsZ29y
aXRobS9mbGV4LXRyYWNrcy13aXRoLWZyYWN0aW9uYWwtc2l6ZS5odG1sOiBBZGRlZC4KKwogMjAy
Mi0wMS0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWVk
aWFSZWNvcmRlciBzaG91bGQgc3VwcG9ydCB0aGUgYml0c1BlclNlY29uZCBvcHRpb24KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL2xheW91dC1hbGdvcml0aG0vZmxleC10cmFja3Mtd2l0aC1mcmFjdGlvbmFsLXNpemUt
ZXhwZWN0ZWQueGh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWdyaWQvbGF5b3V0LWFsZ29yaXRobS9mbGV4LXRyYWNrcy13aXRoLWZyYWN0aW9u
YWwtc2l6ZS1leHBlY3RlZC54aHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVhMTM3OTQ0ODJhOTRmNmMxMGJkOWQ0
Yzk4NzA0ZTYzZWY2MDMzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL2xheW91dC1hbGdvcml0aG0vZmxl
eC10cmFja3Mtd2l0aC1mcmFjdGlvbmFsLXNpemUtZXhwZWN0ZWQueGh0CkBAIC0wLDAgKzEsMTkg
QEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8v
RU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4K
KzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKyA8aGVhZD4KKyAg
PHRpdGxlPkNTUyBSZWZ0ZXN0IFJlZmVyZW5jZTwvdGl0bGU+CisgIDxsaW5rIHJlbD0iYXV0aG9y
IiB0aXRsZT0iR8OpcmFyZCBUYWxib3QiIGhyZWY9Imh0dHA6Ly93d3cuZ3RhbGJvdC5vcmcvQnJv
d3NlckJ1Z3NTZWN0aW9uL2NzczIxdGVzdHN1aXRlLyIgLz4KKyAgPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj48IVtDREFUQVsKKyAgZGl2CisgIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Cisg
IGhlaWdodDogMTAwcHg7CisgIHdpZHRoOiAxMDBweDsKKyAgfQorICBdXT48L3N0eWxlPgorIDwv
aGVhZD4KKyA8Ym9keT4KKyAgPHA+VGVzdCBwYXNzZXMgaWYgdGhlcmUgaXMgYSBmaWxsZWQgZ3Jl
ZW4gc3F1YXJlIGFuZCA8c3Ryb25nPm5vIHJlZDwvc3Ryb25nPi48L3A+CisgIDxkaXY+PC9kaXY+
CisgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvbGF5b3V0LWFsZ29yaXRobS9mbGV4LXRy
YWNrcy13aXRoLWZyYWN0aW9uYWwtc2l6ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvbGF5b3V0LWFsZ29yaXRobS9mbGV4LXRy
YWNrcy13aXRoLWZyYWN0aW9uYWwtc2l6ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5NDE0OWZhYTY1ZjMw
MzVjOWRhOGY4NDllMDg2Mzk0ZGU1NGQ3NzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9sYXlvdXQtYWxn
b3JpdGhtL2ZsZXgtdHJhY2tzLXdpdGgtZnJhY3Rpb25hbC1zaXplLmh0bWwKQEAgLTAsMCArMSw0
NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPWVuIGNsYXNzPSJyZWZ0ZXN0LXdhaXQi
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkNTUyBHcmlkIExheW91dCBUZXN0OiBF
eHBhbmQgZmxleGlibGUgdHJhY2tzIHdpdGggYSBmcmFjdGlvbmFsIHNpemU8L3RpdGxlPgorPGxp
bmsgcmVsPSJhdXRob3IiIHRpdGxlPSJFdGhhbiBKaW1lbmV6IiBocmVmPSJtYWlsdG86ZXRoYXZh
ckBtaWNyb3NvZnQuY29tIj4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMu
Y3Nzd2cub3JnL2Nzcy1ncmlkLTIvI2FsZ28tZmxleC10cmFja3MiIHRpdGxlPSIxMi43LiBFeHBh
bmQgRmxleGlibGUgVHJhY2tzIj4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9idWdz
LmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTI0OTc1MCI+Cis8bGlu
ayByZWw9Im1hdGNoIiBocmVmPSIuLi8uLi9yZWZlcmVuY2UvcmVmLWZpbGxlZC1ncmVlbi0xMDBw
eC1zcXVhcmUueGh0Ij4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iQ2hlY2tzIHRoYXQg
ZmxleGlibGUgdHJhY2tzIGNvcnJlY3RseSBkaXN0cmlidXRlIGZyYWN0aW9uYWwgc2hhcmVzIG9m
IGEgZ3JpZCdzIGF2YWlsYWJsZSBzaXplIj4KKzxzdHlsZT4KKy5ncmlkIHsKKyAgd2lkdGg6IDEw
MHB4OworICBoZWlnaHQ6IDUwcHg7CisgIGRpc3BsYXk6IGdyaWQ7CisgIGJhY2tncm91bmQ6IHJl
ZDsKK30KKy5ncmlkID4gZGl2IHsKKyAgYmFja2dyb3VuZDogZ3JlZW47Cit9CisjY29scyB7Cisg
IGdyaWQtdGVtcGxhdGUtcm93czogYXV0byAwcHg7CisgIGdyaWQtdGVtcGxhdGUtY29sdW1uczog
cmVwZWF0KDk3MywgMWZyKTsKK30KKyNyb3dzIHsKKyAgZ3JpZC1hdXRvLWZsb3c6IGNvbHVtbjsK
KyAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDBweDsKKyAgZ3JpZC10ZW1wbGF0ZS1yb3dz
OiByZXBlYXQoOTczLCAxZnIpOworfQorPC9zdHlsZT4KKzxwPlRlc3QgcGFzc2VzIGlmIHRoZXJl
IGlzIGEgZmlsbGVkIGdyZWVuIHNxdWFyZSBhbmQgPHN0cm9uZz5ubyByZWQ8L3N0cm9uZz4uPC9w
PgorPGRpdiBpZD0iY29scyIgY2xhc3M9ImdyaWQiPgorICA8ZGl2IHN0eWxlPSJncmlkLWNvbHVt
bjogMSAvIC0xIj48L2Rpdj4KKzwvZGl2PgorPGRpdiBpZD0icm93cyIgY2xhc3M9ImdyaWQiPgor
ICA8ZGl2IHN0eWxlPSJncmlkLXJvdzogMSAvIC0xIj48L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4K
K3ZhciBjb2xzX2dyaWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29scyIpOwordmFyIHJv
d3NfZ3JpZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyb3dzIik7Citmb3IgKHZhciBpID0g
MDsgaSA8IDk3MzsgKytpKSB7CisgIGNvbHNfZ3JpZC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKSk7CisgIHJvd3NfZ3JpZC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKSk7Cit9Citkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZSgncmVmdGVzdC13YWl0Jyk7Cis8L3NjcmlwdD4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448739</attachid>
            <date>2022-01-10 05:59:50 -0800</date>
            <delta_ts>2022-01-13 06:42:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234917-20220110135949.patch</filename>
            <type>text/plain</type>
            <size>6393</size>
            <attacher>zsun</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWFhMGY1NGQ0ZDU1ZDI1
MjdiNzE3NjQ2OGY2ZjNiYTY5OGNjZGQxNi4uMTg2NGVhMDY3MzNiMWJjOTZiMThmMGM4YzExZmFi
NGY1YjBjZWM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAxLTA5ICBaaXJh
biBTdW4gIDx6c3VuQGlnYWxpYS5jb20+CisKKyAgICAgICAgW2Nzcy1ncmlkXSBGaXggcm91bmRp
bmcgb2YgZGlzdHJpYnV0ZWQgZnJlZSBzcGFjZSB0byBmbGV4aWJsZSB0cmFja3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDkxNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gY29tcHV0aW5nIHRo
ZSBncm93dGggc2l6ZSBmb3IgZmxleCBzaXplZCB0cmFja3MsIHRoZSBmbGV4RnJhY3Rpb24gbXVs
dGlwbGllZCBieSB0aGUgZmxleCBmYWN0b3IgY2FuIHJlc3VsdAorICAgICAgICBpbiBhIG5vbi1p
bnRlZ2VyIHNpemUuIEhvd2V2ZXIsIHdlIGZsb29yIHRoZSBzdHJldGNoZWQgc2l6ZSB0byBmaXQg
aW4gYSBMYXlvdXRVbml0LiBUaGlzIG1lYW5zIHRoYXQgd2UgbWF5IGxvc2UKKyAgICAgICAgdGhl
IGZyYWN0aW9uYWwgcGFydCBvZiB0aGUgY29tcHV0YXRpb24gd2hpY2ggY2FuIGNhdXNlIHRoZSBl
bnRpcmUgZnJlZSBzcGFjZSBub3QgYmVpbmcgZGlzdHJpYnV0ZWQgZXZlbmx5LiBUaGlzCisgICAg
ICAgIGZpeCBpcyB0byBzdW0gdXAgdGhlIGxlZnRvdmVyIGZyYWN0aW9uYWwgcGFydCBmcm9tIGV2
ZXJ5IGZsZXhpYmxlIHRyYWNrIHRvIGF2b2lkIHRoaXMgaXNzdWUuCisKKyAgICAgICAgSXQgaXMg
YW4gaW1wb3J0IG9mIENocm9taXVtIEdyaWRORyBDTCBhdCAgaHR0cHM6Ly9jaHJvbWl1bS1yZXZp
ZXcuZ29vZ2xlc291cmNlLmNvbS9jL2Nocm9taXVtL3NyYy8rLzMxOTM2NzQuCisKKyAgICAgICAg
KiByZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y29tcHV0ZUZsZXhTaXplZFRyYWNrc0dyb3d0
aCBjb25zdCk6CisKIDIwMjItMDEtMDkgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlZmFjdG9yIENTUyBwcm9wZXJ0eSBwYXJzaW5nIGhlbHBlcnMgdG8gYmUgYSBi
aXQgbW9yZSBjb21wb3NhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9H
cmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCmluZGV4IDAxYzNjOTlkOTM2MjVhNmRiYTBhY2Ri
ZjMyZDgwNjdlYTQyYzIzZTUuLjI0NDc3ODVmN2U0MTIxOGM5N2YyYjUwYmQwMzNmMjY5ZTA4MGUx
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdB
bGdvcml0aG0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG0uY3BwCkBAIC03MjcsMTQgKzcyNywyMiBAQCB2b2lkIEdyaWRUcmFja1Npemlu
Z0FsZ29yaXRobTo6Y29tcHV0ZUZsZXhTaXplZFRyYWNrc0dyb3d0aChkb3VibGUgZmxleEZyYWN0
aW9uLAogICAgIHNpemVfdCBudW1GbGV4VHJhY2tzID0gbV9mbGV4aWJsZVNpemVkVHJhY2tzSW5k
ZXguc2l6ZSgpOwogICAgIEFTU0VSVChpbmNyZW1lbnRzLnNpemUoKSA9PSBudW1GbGV4VHJhY2tz
KTsKICAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYgYWxsVHJhY2tzID0gdHJhY2tzKG1fZGly
ZWN0aW9uKTsKKyAgICAvLyBUaGUgZmxleEZyYWN0aW9uIG11bHRpcGxpZWQgYnkgdGhlIGZsZXgg
ZmFjdG9yIGNhbiByZXN1bHQgaW4gYSBub24taW50ZWdlciBzaXplLiBTaW5jZSB3ZSBmbG9vciB0
aGUgc3RyZXRjaGVkIHNpemUgdG8gZml0IGluIGEgTGF5b3V0VW5pdCwKKyAgICAvLyB3ZSBtYXkg
bG9zZSB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSBjb21wdXRhdGlvbiB3aGljaCBjYW4gY2F1
c2UgdGhlIGVudGlyZSBmcmVlIHNwYWNlIG5vdCBiZWluZyBkaXN0cmlidXRlZCBldmVubHkuIFRo
ZSBsZWZ0b3ZlcgorICAgIC8vIGZyYWN0aW9uYWwgcGFydCBmcm9tIGV2ZXJ5IGZsZXhpYmxlIHRy
YWNrIGFyZSBhY2N1bXVsYXRlZCBoZXJlIHRvIGF2b2lkIHRoaXMgaXNzdWUuCisgICAgZG91Ymxl
IGxlZnRPdmVyU2l6ZSA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1GbGV4VHJh
Y2tzOyArK2kpIHsKICAgICAgICAgdW5zaWduZWQgdHJhY2tJbmRleCA9IG1fZmxleGlibGVTaXpl
ZFRyYWNrc0luZGV4W2ldOwogICAgICAgICBjb25zdCBhdXRvJiB0cmFja1NpemUgPSBhbGxUcmFj
a3NbdHJhY2tJbmRleF0uY2FjaGVkVHJhY2tTaXplKCk7CiAgICAgICAgIEFTU0VSVCh0cmFja1Np
emUubWF4VHJhY2tCcmVhZHRoKCkuaXNGbGV4KCkpOwogICAgICAgICBMYXlvdXRVbml0IG9sZEJh
c2VTaXplID0gYWxsVHJhY2tzW3RyYWNrSW5kZXhdLmJhc2VTaXplKCk7Ci0gICAgICAgIExheW91
dFVuaXQgbmV3QmFzZVNpemUgPSBzdGQ6Om1heChvbGRCYXNlU2l6ZSwgTGF5b3V0VW5pdChmbGV4
RnJhY3Rpb24gKiB0cmFja1NpemUubWF4VHJhY2tCcmVhZHRoKCkuZmxleCgpKSk7CisgICAgICAg
IGRvdWJsZSBmclNoYXJlID0gZmxleEZyYWN0aW9uICogdHJhY2tTaXplLm1heFRyYWNrQnJlYWR0
aCgpLmZsZXgoKSArIGxlZnRPdmVyU2l6ZTsKKyAgICAgICAgYXV0byBzdHJldGNoZWRTaXplID0g
TGF5b3V0VW5pdChmclNoYXJlKTsKKyAgICAgICAgTGF5b3V0VW5pdCBuZXdCYXNlU2l6ZSA9IHN0
ZDo6bWF4KG9sZEJhc2VTaXplLCBzdHJldGNoZWRTaXplKTsKICAgICAgICAgaW5jcmVtZW50c1tp
XSA9IG5ld0Jhc2VTaXplIC0gb2xkQmFzZVNpemU7CiAgICAgICAgIHRvdGFsR3Jvd3RoICs9IGlu
Y3JlbWVudHNbaV07CisgICAgICAgIC8vIEluIHRoZSBjYXNlIHRoYXQgc3RyZXRjaGVkU2l6ZSBp
cyBncmVhdGVyIHRoYW4gZnJTaGFyZSwgd2UgZmxvb3IgaXQgdG8gMCB0byBhdm9pZCBhIG5lZ2F0
aXZlIGxlZnRvdmVyLgorICAgICAgICBsZWZ0T3ZlclNpemUgPSBzdGQ6Om1heChmclNoYXJlIC0g
c3RyZXRjaGVkU2l6ZS50b0RvdWJsZSgpLCAwLjApOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cKaW5kZXggMzllZjNkNTFiZjNmMTMzNjZmZTVkNjVhNTk3ODQyMGE0MmY3
YjY3Yi4uZjQ5OGE1ZmU5NzI0ZTFmYjY2MzlmYzdiNjZkYTc5MjU1YWI4YjRlNyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAgQEAKKzIwMjItMDEtMDkgIFppcmFu
IFN1biAgPHpzdW5AaWdhbGlhLmNvbT4KKworICAgICAgICBbY3NzLWdyaWRdIEZpeCByb3VuZGlu
ZyBvZiBkaXN0cmlidXRlZCBmcmVlIHNwYWNlIHRvIGZsZXhpYmxlIHRyYWNrcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OTE3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuICAgICAgICAKKwogMjAyMi0wMS0wOSAgWmlyYW4g
U3VuICA8enN1bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZ3JpZF0gUmVzeW5jIHdlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQgdGVzdHMgZnJvbSB1cHN0cmVhbQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggNmM1YWQxZTcwNGNmZjI4Y2ViMzhhMTI2NzQ4ZjZhNzc0ZDE2ODJhOS4uOThj
Y2E4NmQwNGI5NTNkNGExYmZiNzU3YTQ0ZWFhYzYwMmZjMjNmMCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CkBAIC0xMzk5LDggKzEzOTksNiBAQCB3ZWJraXQub3JnL2IvMjMxMDIxIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL2dyaWQtaXRlbXMvZ3JpZAogd2Via2l0Lm9y
Zy9iLzIzMTAyMSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9n
cmlkLWl0ZW1zL3BlcmNlbnRhZ2UtbWFyZ2luLWR5bmFtaWMuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogd2Via2l0Lm9yZy9iLzIzMTAyMSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZ3JpZC9ncmlkLWl0ZW1zL3JlcGxhY2VkLWVsZW1lbnQtMDE1Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIzNDg3OSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9sYXlvdXQtYWxnb3JpdGhtL2ZsZXgtdHJhY2tzLXdp
dGgtZnJhY3Rpb25hbC1zaXplLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvbWFzb25yeS90ZW50YXRpdmUvbWFz
b25yeS1hbGlnbi1jb250ZW50LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9tYXNvbnJ5L3RlbnRhdGl2ZS9t
YXNvbnJ5LWFsaWduLWNvbnRlbnQtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL21hc29ucnkvdGVudGF0aXZl
L21hc29ucnktYWxpZ24tY29udGVudC0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4YTBjZmYwMTJmNTcw
MmVjYTBhOTU0Zjg5OWQwOTM0Mjg4N2NiMWZkLi4yYWFkMDczOTc3YWI4MjZlM2QyYjgxYmIxY2Q3
ODMwMzYyN2FhNjFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtMTk4MCw2ICsxOTgwLDcgQEAgd2Via2l0Lm9yZy9iLzIyODE1MyBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9hYnNwb3MvZ3JpZC1pdGUKIHdlYmtpdC5v
cmcvYi8yMjgxNTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQv
YWJzcG9zL2dyaWQtcG9zaXRpb25lZC1pdGVtLWR5bmFtaWMtY2hhbmdlLTAwMS5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjI4MTUzIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL2Fic3Bvcy9ncmlkLXBvc2l0aW9uZWQtaXRlbS1keW5h
bWljLWNoYW5nZS0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIy
ODE1MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9hYnNwb3Mv
Z3JpZC1wb3NpdGlvbmVkLWl0ZW0tZHluYW1pYy1jaGFuZ2UtMDAzLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzUwMjUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWdyaWQvbGF5b3V0LWFsZ29yaXRobS9mbGV4LXRyYWNrcy13aXRoLWZyYWN0
aW9uYWwtc2l6ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjI4MTUz
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1saXN0cy9jb250ZW50LXBy
b3BlcnR5L21hcmtlci10ZXh0LW1hdGNoZXMtYXJtZW5pYW4uaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogd2Via2l0Lm9yZy9iLzIyODE1MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtbGlzdHMvY29udGVudC1wcm9wZXJ0eS9tYXJrZXItdGV4dC1tYXRjaGVzLWRlY2lt
YWwuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIyODE1MyBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbGlzdHMvY29udGVudC1wcm9wZXJ0eS9t
YXJrZXItdGV4dC1tYXRjaGVzLWRlY2ltYWwtbGVhZGluZy16ZXJvLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>