<?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>236183</bug_id>
          
          <creation_ts>2022-02-05 13:43:43 -0800</creation_ts>
          <short_desc>[LFC][IFC] Introduce LineBoxBuilder::setBaselineAndLayoutBounds/layoutBoundsMetricsForInlineBox</short_desc>
          <delta_ts>2022-02-07 14:32:17 -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>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 name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>darin</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1837792</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-02-05 13:43:43 -0800</bug_when>
    <thetext>This is in preparation for supporting vertical text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837793</commentid>
    <comment_count>1</comment_count>
      <attachid>450999</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-02-05 13:50:55 -0800</bug_when>
    <thetext>Created attachment 450999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837910</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-06 11:01:22 -0800</bug_when>
    <thetext>Committed r289171 (246867@main): &lt;https://commits.webkit.org/246867@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450999.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837911</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-06 11:02:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/88546530&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837920</commentid>
    <comment_count>4</comment_count>
      <attachid>450999</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-06 11:41:17 -0800</bug_when>
    <thetext>Comment on attachment 450999
Patch

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

&gt; Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:156
&gt; +    std::optional&lt;InlineLayoutUnit&gt; preferredLineHeight { };

Don’t need { } with std:.optional. It’s only scalars that are uninitialized (or classes and structures where we didn’t initialize the scalars in them for some reason). If InlineLayoutUnit was a class we wouldn’t need the { 0 } above either, but I guess it is and we do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837930</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-02-06 12:24:07 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 450999 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=450999&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:156
&gt; &gt; +    std::optional&lt;InlineLayoutUnit&gt; preferredLineHeight { };
&gt; 
&gt; Don’t need { } with std:.optional. It’s only scalars that are uninitialized
&gt; (or classes and structures where we didn’t initialize the scalars in them
&gt; for some reason). If InlineLayoutUnit was a class we wouldn’t need the { 0 }
&gt; above either, but I guess it is and we do.
Good point, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838005</commentid>
    <comment_count>6</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-02-06 21:07:51 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 450999 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=450999&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:156
&gt; &gt; +    std::optional&lt;InlineLayoutUnit&gt; preferredLineHeight { };
&gt; 
&gt; Don’t need { } with std:.optional. It’s only scalars that are uninitialized
&gt; (or classes and structures where we didn’t initialize the scalars in them
&gt; for some reason). If InlineLayoutUnit was a class we wouldn’t need the { 0 }
&gt; above either, but I guess it is and we do.

https://trac.webkit.org/changeset/289198/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838353</commentid>
    <comment_count>7</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-02-07 14:14:58 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 450999 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=450999&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:156
&gt; &gt; +    std::optional&lt;InlineLayoutUnit&gt; preferredLineHeight { };
&gt; 
&gt; Don’t need { } with std:.optional. It’s only scalars that are uninitialized
&gt; (or classes and structures where we didn’t initialize the scalars in them
&gt; for some reason). If InlineLayoutUnit was a class we wouldn’t need the { 0 }
&gt; above either, but I guess it is and we do.
I remember now. This is why I do it.

./layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:268:97: error: missing field &apos;preferredLineHeight&apos; initializer [-Werror,-Wmissing-field-initializers]

when calling inlineLevelBox.setLayoutBounds({ layoutBoundsMetrics.ascent, layoutBoundsMetrics.descent });
vs.
inlineLevelBox.setLayoutBounds({ layoutBoundsMetrics.ascent, layoutBoundsMetrics.descent, { }, { } });

maybe I should just get out of the habit of relying on them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838363</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-07 14:32:17 -0800</bug_when>
    <thetext>OK</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450999</attachid>
            <date>2022-02-05 13:50:55 -0800</date>
            <delta_ts>2022-02-06 11:01:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236183-20220205135054.patch</filename>
            <type>text/plain</type>
            <size>12198</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVmZDU2ZjQyMTJkNzY3
NWM2OWU3M2EyOWIwZTU0MDcyYmFmY2IzMy4uOTlhZGNjMWQ0MTc5OGFjMGIwOWIwZmZjMmUyMTNk
OGVjMzk3N2ZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTAyLTA1ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIEludHJvZHVj
ZSBMaW5lQm94QnVpbGRlcjo6c2V0QmFzZWxpbmVBbmRMYXlvdXRCb3VuZHMvbGF5b3V0Qm91bmRz
TWV0cmljc0ZvcklubGluZUJveAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM2MTgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgYWRkaW5nIGlkZW9n
cmFwaGljIGJhc2VsaW5lIHN1cHBvcnQuIEl0IGhlbHBzIHRvCisgICAgICAgIHNpbXBsaWZ5IHRo
ZSBpZGVvZ3JhcGhpYyBiYXNlbGluZSBhZGp1c3RtZW50IGJ5IGp1c3QgbWFraW5nIHRoZSBmb2xs
b3dpbmcgY2FsbCAKKyAgICAgICAgICAgIHNldEJhc2VsaW5lQW5kTGF5b3V0Qm91bmRzKGlubGlu
ZUJveCwgbGF5b3V0Qm91bmRzTWV0cmljc0ZvcklubGluZUJveChpbmxpbmVCb3gsIElkZW9ncmFw
aGljQmFzZWxpbmUpKTsKKyAgICAgICAgdG8gYWRqdXN0IHRoZSBpbmxpbmUgYm94J3MgdmVydGlj
YWwgZ2VvbWV0cnkgd2hlbiBpbiB2ZXJ0aWNhbCB3cml0aW5nIG1vZGUuCisKKyAgICAgICAgKiBs
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjphZGp1c3RMYXlvdXRC
b3VuZHNXaXRoRmFsbGJhY2tGb250cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OmxheW91dEJvdW5kc01ldHJpY3NGb3JJbmxpbmVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMaW5lQm94QnVpbGRlcjo6c2V0QmFzZWxpbmVBbmRMYXlvdXRCb3VuZHMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6Y29uc3RydWN0SW5saW5l
TGV2ZWxCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjph
ZGp1c3RWZXJ0aWNhbEdlb21ldHJ5Rm9ySW5saW5lQm94V2l0aEZhbGxiYWNrRm9udHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpjb21wdXRlZEhlaWdodEFuZExh
eW91dEJvdW5kcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hC
dWlsZGVyOjpzZXRWZXJ0aWNhbEdlb21ldHJ5Rm9yTGluZUJyZWFrQm94IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveEJ1aWxkZXI6OnNldEluaXRpYWxW
ZXJ0aWNhbEdlb21ldHJ5Rm9ySW5saW5lQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBs
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5oOgor
CiAyMDIyLTAyLTA0ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TEZDXVtJRkNdIE1vdmUgYWxsIHRoZSBsaW5lIGJveCB2ZXJ0aWNhbCBhbGlnbm1lbnQgbG9naWMg
dG8gTGluZUJveFZlcnRpY2FsQWxpZ25lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZUJveEJ1aWxkZXIuY3BwCmluZGV4IDNlOGE2MzgwNTFhZjFmYjU0NmIyZjM0YzI1MTc1MGYwYTMx
NjA4MzEuLjBhM2E3ZmUyZmE3MTYyMmY3ZmI1NDgyNWI2YTczNGMyNGQxNzUxOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxpbmVCb3hCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5jcHAKQEAgLTExNCw3ICsxMTQs
NyBAQCBMaW5lQm94QnVpbGRlcjo6TGluZUJveEFuZEhlaWdodCBMaW5lQm94QnVpbGRlcjo6YnVp
bGQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDbwogICAgIHJldHVybiB7IGxpbmVCb3gsIGxpbmVC
b3hMb2dpY2FsSGVpZ2h0IH07CiB9CiAKLXZvaWQgTGluZUJveEJ1aWxkZXI6OmFkanVzdFZlcnRp
Y2FsR2VvbWV0cnlGb3JJbmxpbmVCb3hXaXRoRmFsbGJhY2tGb250cyhJbmxpbmVMZXZlbEJveCYg
aW5saW5lQm94LCBjb25zdCBUZXh0VXRpbDo6RmFsbGJhY2tGb250TGlzdCYgZmFsbGJhY2tGb250
c0ZvckNvbnRlbnQpIGNvbnN0Cit2b2lkIExpbmVCb3hCdWlsZGVyOjphZGp1c3RMYXlvdXRCb3Vu
ZHNXaXRoRmFsbGJhY2tGb250cyhJbmxpbmVMZXZlbEJveCYgaW5saW5lQm94LCBjb25zdCBUZXh0
VXRpbDo6RmFsbGJhY2tGb250TGlzdCYgZmFsbGJhY2tGb250c0ZvckNvbnRlbnQpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKCFmYWxsYmFja0ZvbnRzRm9yQ29udGVudC5pc0VtcHR5KCkpOwogICAgIEFT
U0VSVChpbmxpbmVCb3guaXNJbmxpbmVCb3goKSk7CkBAIC0xNDksNjYgKzE0OSw0OCBAQCB2b2lk
IExpbmVCb3hCdWlsZGVyOjphZGp1c3RWZXJ0aWNhbEdlb21ldHJ5Rm9ySW5saW5lQm94V2l0aEZh
bGxiYWNrRm9udHMoSW5saW5lTAogICAgIGlubGluZUJveC5zZXRMYXlvdXRCb3VuZHMoeyBzdGQ6
Om1heChsYXlvdXRCb3VuZHMuYXNjZW50LCBmbG9vcmYobWF4QXNjZW50KSksIHN0ZDo6bWF4KGxh
eW91dEJvdW5kcy5kZXNjZW50LCBjZWlsZihtYXhEZXNjZW50KSkgfSk7CiB9CiAKLXN0cnVjdCBI
ZWlnaHRBbmRMYXlvdXRCb3VuZHMgeworc3RydWN0IExheW91dEJvdW5kc01ldHJpY3MgewogICAg
IElubGluZUxheW91dFVuaXQgYXNjZW50IHsgMCB9OwogICAgIElubGluZUxheW91dFVuaXQgZGVz
Y2VudCB7IDAgfTsKLSAgICBJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIGxheW91dEJvdW5k
cyB7IH07CisgICAgSW5saW5lTGF5b3V0VW5pdCBsaW5lU3BhY2luZyB7IDAgfTsKKyAgICBzdGQ6
Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHByZWZlcnJlZExpbmVIZWlnaHQgeyB9OwogfTsK
LXN0YXRpYyBhdXRvIGNvbXB1dGVkSGVpZ2h0QW5kTGF5b3V0Qm91bmRzKGNvbnN0IEZvbnRNZXRy
aWNzJiBmb250TWV0cmljcywgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBwcmVmZXJy
ZWRMaW5lSGVpZ2h0KQorc3RhdGljIExheW91dEJvdW5kc01ldHJpY3MgbGF5b3V0Qm91bmRzTWV0
cmljc0ZvcklubGluZUJveChjb25zdCBJbmxpbmVMZXZlbEJveCYgaW5saW5lQm94KQogeworICAg
IEFTU0VSVChpbmxpbmVCb3guaXNJbmxpbmVCb3goKSk7CisgICAgYXV0byYgZm9udE1ldHJpY3Mg
PSBpbmxpbmVCb3gucHJpbWFyeW1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgSW5saW5lTGF5
b3V0VW5pdCBhc2NlbnQgPSBmb250TWV0cmljcy5hc2NlbnQoKTsKICAgICBJbmxpbmVMYXlvdXRV
bml0IGRlc2NlbnQgPSBmb250TWV0cmljcy5kZXNjZW50KCk7Ci0gICAgYXV0byBsb2dpY2FsSGVp
Z2h0ID0gYXNjZW50ICsgZGVzY2VudDsKKyAgICBJbmxpbmVMYXlvdXRVbml0IGxpbmVTcGFjaW5n
ID0gZm9udE1ldHJpY3MubGluZVNwYWNpbmcoKTsKKyAgICByZXR1cm4geyBhc2NlbnQsIGRlc2Nl
bnQsIGxpbmVTcGFjaW5nLCBpbmxpbmVCb3guaXNQcmVmZXJyZWRMaW5lSGVpZ2h0Rm9udE1ldHJp
Y3NCYXNlZCgpID8gc3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlvbmFsKGlubGluZUJveC5w
cmVmZXJyZWRMaW5lSGVpZ2h0KCkpIH07Cit9CiAKLSAgICBpZiAocHJlZmVycmVkTGluZUhlaWdo
dCkgewordm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0QmFzZWxpbmVBbmRMYXlvdXRCb3VuZHMoSW5s
aW5lTGV2ZWxCb3gmIGlubGluZUJveCwgY29uc3QgTGF5b3V0Qm91bmRzTWV0cmljcyYgbGF5b3V0
Qm91bmRzTWV0cmljcykgY29uc3QKK3sKKyAgICBhdXRvIGxvZ2ljYWxIZWlnaHQgPSBsYXlvdXRC
b3VuZHNNZXRyaWNzLmFzY2VudCArIGxheW91dEJvdW5kc01ldHJpY3MuZGVzY2VudDsKKyAgICBh
dXRvIGhhbGZMZWFkaW5nID0gSW5saW5lTGF5b3V0VW5pdCB7IH07CisgICAgaWYgKGxheW91dEJv
dW5kc01ldHJpY3MucHJlZmVycmVkTGluZUhlaWdodCkgewogICAgICAgICAvLyBJZiBsaW5lLWhl
aWdodCBjb21wdXRlcyB0byBub3JtYWwgYW5kIGVpdGhlciB0ZXh0LWVkZ2UgaXMgbGVhZGluZyBv
ciB0aGlzIGlzIHRoZSByb290IGlubGluZSBib3gsCiAgICAgICAgIC8vIHRoZSBmb2504oCZcyBs
aW5lIGdhcCBtZXRyaWMgbWF5IGFsc28gYmUgaW5jb3Jwb3JhdGVkIGludG8gQSBhbmQgRCBieSBh
ZGRpbmcgaGFsZiB0byBlYWNoIHNpZGUgYXMgaGFsZi1sZWFkaW5nLgogICAgICAgICAvLyBodHRw
czovL3d3dy53My5vcmcvVFIvY3NzLWlubGluZS0zLyNpbmxpbmUtaGVpZ2h0CiAgICAgICAgIC8v
IFNpbmNlIHRleHQtZWRnZSBpcyBub3Qgc3VwcG9ydGVkIHlldCBhbmQgdGhlIGluaXRpYWwgdmFs
dWUgaXMgbGVhZGluZywgd2Ugc2hvdWxkIGp1c3QgYXBwbHkgaXQgdG8KICAgICAgICAgLy8gYWxs
IGlubGluZSBib3hlcy4KLSAgICAgICAgYXV0byBoYWxmTGVhZGluZyA9ICgqcHJlZmVycmVkTGlu
ZUhlaWdodCAtIGxvZ2ljYWxIZWlnaHQpIC8gMjsKLSAgICAgICAgcmV0dXJuIEhlaWdodEFuZExh
eW91dEJvdW5kcyB7IGFzY2VudCwgZGVzY2VudCwgeyBhc2NlbnQgKyBoYWxmTGVhZGluZywgZGVz
Y2VudCArIGhhbGZMZWFkaW5nIH0gfTsKKyAgICAgICAgaGFsZkxlYWRpbmcgPSAoKmxheW91dEJv
dW5kc01ldHJpY3MucHJlZmVycmVkTGluZUhlaWdodCAtIGxvZ2ljYWxIZWlnaHQpIC8gMjsKKyAg
ICB9IGVsc2UgeworICAgICAgICAvLyBQcmVmZXJyZWQgbGluZSBoZWlnaHQgaXMgcHVyZWx5IGZv
bnQgbWV0cmljcyBiYXNlZCAoaS5lIGdseXBocyBzdHJldGNoIHRoZSBsaW5lKS4KKyAgICAgICAg
aGFsZkxlYWRpbmcgPSAobGF5b3V0Qm91bmRzTWV0cmljcy5saW5lU3BhY2luZyAtIGxvZ2ljYWxI
ZWlnaHQpIC8gMjsKICAgICB9Ci0gICAgLy8gUHJlZmVycmVkIGxpbmUgaGVpZ2h0IGlzIHB1cmVs
eSBmb250IG1ldHJpY3MgYmFzZWQgKGkuZSBnbHlwaHMgc3RyZXRjaCB0aGUgbGluZSkuCi0gICAg
YXV0byBoYWxmTGluZUdhcCA9IChmb250TWV0cmljcy5saW5lU3BhY2luZygpIC0gbG9naWNhbEhl
aWdodCkgLyAyOwotICAgIHJldHVybiBIZWlnaHRBbmRMYXlvdXRCb3VuZHMgeyBhc2NlbnQsIGRl
c2NlbnQsIHsgYXNjZW50ICsgaGFsZkxpbmVHYXAsIGRlc2NlbnQgKyBoYWxmTGluZUdhcCB9IH07
Ci19Ci0KLXZvaWQgTGluZUJveEJ1aWxkZXI6OnNldFZlcnRpY2FsR2VvbWV0cnlGb3JMaW5lQnJl
YWtCb3goSW5saW5lTGV2ZWxCb3gmIGxpbmVCcmVha0JveCwgY29uc3QgSW5saW5lTGV2ZWxCb3gm
IHBhcmVudElubGluZUJveCkgY29uc3QKLXsKLSAgICAvLyBXZSBuZWVkIGZsb29yL2NlaWwgdG8g
bWF0Y2ggbGVnYWN5IGxheW91dCBpbnRlZ3JhbCBwb3NpdGlvbmluZy4KLSAgICBBU1NFUlQobGlu
ZUJyZWFrQm94LmlzTGluZUJyZWFrQm94KCkpOwotICAgIEFTU0VSVChwYXJlbnRJbmxpbmVCb3gu
aXNJbmxpbmVCb3goKSk7Ci0KLSAgICBhdXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJv
eC5wcmltYXJ5bWV0cmljc09mUHJpbWFyeUZvbnQoKTsKLSAgICBhdXRvIHByZWZlcnJlZExpbmVI
ZWlnaHQgPSBwYXJlbnRJbmxpbmVCb3guaXNQcmVmZXJyZWRMaW5lSGVpZ2h0Rm9udE1ldHJpY3NC
YXNlZCgpID8gc3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlvbmFsKHBhcmVudElubGluZUJv
eC5wcmVmZXJyZWRMaW5lSGVpZ2h0KCkpOwotICAgIGF1dG8gaGVpZ2h0QW5kTGF5b3V0Qm91bmRz
ID0gY29tcHV0ZWRIZWlnaHRBbmRMYXlvdXRCb3VuZHMoZm9udE1ldHJpY3MsIHByZWZlcnJlZExp
bmVIZWlnaHQpOwotCi0gICAgbGluZUJyZWFrQm94LnNldEJhc2VsaW5lKGZsb29yZihoZWlnaHRB
bmRMYXlvdXRCb3VuZHMuYXNjZW50KSk7Ci0gICAgbGluZUJyZWFrQm94LnNldERlc2NlbnQoY2Vp
bGYoaGVpZ2h0QW5kTGF5b3V0Qm91bmRzLmRlc2NlbnQpKTsKLSAgICBsaW5lQnJlYWtCb3guc2V0
TG9naWNhbEhlaWdodChoZWlnaHRBbmRMYXlvdXRCb3VuZHMuYXNjZW50ICsgaGVpZ2h0QW5kTGF5
b3V0Qm91bmRzLmRlc2NlbnQpOwotICAgIGxpbmVCcmVha0JveC5zZXRMYXlvdXRCb3VuZHMoeyBm
bG9vcmYoaGVpZ2h0QW5kTGF5b3V0Qm91bmRzLmxheW91dEJvdW5kcy5hc2NlbnQpLCBjZWlsZiho
ZWlnaHRBbmRMYXlvdXRCb3VuZHMubGF5b3V0Qm91bmRzLmRlc2NlbnQpIH0pOwotfQotCi12b2lk
IExpbmVCb3hCdWlsZGVyOjpzZXRJbml0aWFsVmVydGljYWxHZW9tZXRyeUZvcklubGluZUJveChJ
bmxpbmVMZXZlbEJveCYgaW5saW5lQm94KSBjb25zdAotewogICAgIC8vIFdlIG5lZWQgZmxvb3Iv
Y2VpbCB0byBtYXRjaCBsZWdhY3kgbGF5b3V0IGludGVncmFsIHBvc2l0aW9uaW5nLgotICAgIEFT
U0VSVChpbmxpbmVCb3guaXNJbmxpbmVCb3goKSk7Ci0KLSAgICBhdXRvJiBmb250TWV0cmljcyA9
IGlubGluZUJveC5wcmltYXJ5bWV0cmljc09mUHJpbWFyeUZvbnQoKTsKLSAgICBhdXRvIHByZWZl
cnJlZExpbmVIZWlnaHQgPSBpbmxpbmVCb3guaXNQcmVmZXJyZWRMaW5lSGVpZ2h0Rm9udE1ldHJp
Y3NCYXNlZCgpID8gc3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlvbmFsKGlubGluZUJveC5w
cmVmZXJyZWRMaW5lSGVpZ2h0KCkpOwotICAgIGF1dG8gaGVpZ2h0QW5kTGF5b3V0Qm91bmRzID0g
Y29tcHV0ZWRIZWlnaHRBbmRMYXlvdXRCb3VuZHMoZm9udE1ldHJpY3MsIHByZWZlcnJlZExpbmVI
ZWlnaHQpOwotCi0gICAgaW5saW5lQm94LnNldEJhc2VsaW5lKGZsb29yZihoZWlnaHRBbmRMYXlv
dXRCb3VuZHMuYXNjZW50KSk7Ci0gICAgaW5saW5lQm94LnNldERlc2NlbnQoY2VpbGYoaGVpZ2h0
QW5kTGF5b3V0Qm91bmRzLmRlc2NlbnQpKTsKLSAgICBpbmxpbmVCb3guc2V0TG9naWNhbEhlaWdo
dChoZWlnaHRBbmRMYXlvdXRCb3VuZHMuYXNjZW50ICsgaGVpZ2h0QW5kTGF5b3V0Qm91bmRzLmRl
c2NlbnQpOwotICAgIGlubGluZUJveC5zZXRMYXlvdXRCb3VuZHMoeyBmbG9vcmYoaGVpZ2h0QW5k
TGF5b3V0Qm91bmRzLmxheW91dEJvdW5kcy5hc2NlbnQpLCBjZWlsZihoZWlnaHRBbmRMYXlvdXRC
b3VuZHMubGF5b3V0Qm91bmRzLmRlc2NlbnQpIH0pOworICAgIGlubGluZUJveC5zZXRCYXNlbGlu
ZShmbG9vcmYobGF5b3V0Qm91bmRzTWV0cmljcy5hc2NlbnQpKTsKKyAgICBpbmxpbmVCb3guc2V0
RGVzY2VudChjZWlsZihsYXlvdXRCb3VuZHNNZXRyaWNzLmRlc2NlbnQpKTsKKyAgICBpbmxpbmVC
b3guc2V0TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKKyAgICBpbmxpbmVCb3guc2V0TGF5
b3V0Qm91bmRzKHsgZmxvb3JmKGxheW91dEJvdW5kc01ldHJpY3MuYXNjZW50ICsgaGFsZkxlYWRp
bmcpLCBjZWlsZihsYXlvdXRCb3VuZHNNZXRyaWNzLmRlc2NlbnQgKyBoYWxmTGVhZGluZykgfSk7
CiB9CiAKIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbnN0cnVjdElubGluZUxldmVsQm94ZXMoTGlu
ZUJveCYgbGluZUJveCwgY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVu
dCwgc2l6ZV90IGxpbmVJbmRleCkKIHsKICAgICBhdXRvJiByb290SW5saW5lQm94ID0gbGluZUJv
eC5yb290SW5saW5lQm94KCk7Ci0gICAgc2V0SW5pdGlhbFZlcnRpY2FsR2VvbWV0cnlGb3JJbmxp
bmVCb3gocm9vdElubGluZUJveCk7CisgICAgc2V0QmFzZWxpbmVBbmRMYXlvdXRCb3VuZHMocm9v
dElubGluZUJveCwgbGF5b3V0Qm91bmRzTWV0cmljc0ZvcklubGluZUJveChyb290SW5saW5lQm94
KSk7CiAKICAgICBhdXRvIHN0eWxlVG9Vc2UgPSBbJl0gKGNvbnN0IGF1dG8mIGxheW91dEJveCkg
LT4gY29uc3QgUmVuZGVyU3R5bGUmIHsKICAgICAgICAgcmV0dXJuICFsaW5lSW5kZXggPyBsYXlv
dXRCb3guZmlyc3RMaW5lU3R5bGUoKSA6IGxheW91dEJveC5zdHlsZSgpOwpAQCAtMjc3LDcgKzI1
OSw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbnN0cnVjdElubGluZUxldmVsQm94ZXMoTGlu
ZUJveCYgbGluZUJveCwgY29uc3QgTGluZUJ1aWxkCiAgICAgICAgICAgICBhdXRvIGFkanVzdGVk
TG9naWNhbFN0YXJ0ID0gbG9naWNhbExlZnQgKyBzdGQ6Om1heCgwLjBmLCBtYXJnaW5TdGFydCk7
CiAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxXaWR0aCA9IHJvb3RJbmxpbmVCb3gubG9naWNhbFdp
ZHRoKCkgLSBhZGp1c3RlZExvZ2ljYWxTdGFydDsKICAgICAgICAgICAgIGF1dG8gaW5saW5lQm94
ID0gSW5saW5lTGV2ZWxCb3g6OmNyZWF0ZUlubGluZUJveChsYXlvdXRCb3gsIHN0eWxlLCBhZGp1
c3RlZExvZ2ljYWxTdGFydCwgbG9naWNhbFdpZHRoLCBJbmxpbmVMZXZlbEJveDo6TGluZVNwYW5u
aW5nSW5saW5lQm94OjpZZXMpOwotICAgICAgICAgICAgc2V0SW5pdGlhbFZlcnRpY2FsR2VvbWV0
cnlGb3JJbmxpbmVCb3goaW5saW5lQm94KTsKKyAgICAgICAgICAgIHNldEJhc2VsaW5lQW5kTGF5
b3V0Qm91bmRzKGlubGluZUJveCwgbGF5b3V0Qm91bmRzTWV0cmljc0ZvcklubGluZUJveChpbmxp
bmVCb3gpKTsKICAgICAgICAgICAgIGxpbmVCb3guYWRkSW5saW5lTGV2ZWxCb3goV1RGTW92ZShp
bmxpbmVCb3gpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0yOTIsNyAr
Mjc0LDcgQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6Y29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyhM
aW5lQm94JiBsaW5lQm94LCBjb25zdCBMaW5lQnVpbGQKICAgICAgICAgICAgIGluaXRpYWxMb2dp
Y2FsV2lkdGggPSBzdGQ6Om1heChpbml0aWFsTG9naWNhbFdpZHRoLCAwLmYpOwogICAgICAgICAg
ICAgYXV0byBpbmxpbmVCb3ggPSBJbmxpbmVMZXZlbEJveDo6Y3JlYXRlSW5saW5lQm94KGxheW91
dEJveCwgc3R5bGUsIGxvZ2ljYWxMZWZ0LCBpbml0aWFsTG9naWNhbFdpZHRoKTsKICAgICAgICAg
ICAgIGlubGluZUJveC5zZXRJc0ZpcnN0Qm94KCk7Ci0gICAgICAgICAgICBzZXRJbml0aWFsVmVy
dGljYWxHZW9tZXRyeUZvcklubGluZUJveChpbmxpbmVCb3gpOworICAgICAgICAgICAgc2V0QmFz
ZWxpbmVBbmRMYXlvdXRCb3VuZHMoaW5saW5lQm94LCBsYXlvdXRCb3VuZHNNZXRyaWNzRm9ySW5s
aW5lQm94KGlubGluZUJveCkpOwogICAgICAgICAgICAgbGluZUJveC5hZGRJbmxpbmVMZXZlbEJv
eChXVEZNb3ZlKGlubGluZUJveCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
QEAgLTMxOCw3ICszMDAsNyBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpjb25zdHJ1Y3RJbmxpbmVM
ZXZlbEJveGVzKExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IExpbmVCdWlsZAogICAgICAgICAgICAg
YXV0byBmYWxsYmFja0ZvbnRzID0gVGV4dFV0aWw6OmZhbGxiYWNrRm9udHNGb3JSdW4ocnVuLCBz
dHlsZSk7CiAgICAgICAgICAgICBpZiAoIWZhbGxiYWNrRm9udHMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gQWRqdXN0IG5vbi1lbXB0eSBpbmxpbmUgYm94IGhlaWdodCB3aGVuIGds
eXBocyBmcm9tIHRoZSBub24tcHJpbWFyeSBmb250IHN0cmV0Y2ggdGhlIGJveC4KLSAgICAgICAg
ICAgICAgICBhZGp1c3RWZXJ0aWNhbEdlb21ldHJ5Rm9ySW5saW5lQm94V2l0aEZhbGxiYWNrRm9u
dHMocGFyZW50SW5saW5lQm94LCBmYWxsYmFja0ZvbnRzKTsKKyAgICAgICAgICAgICAgICBhZGp1
c3RMYXlvdXRCb3VuZHNXaXRoRmFsbGJhY2tGb250cyhwYXJlbnRJbmxpbmVCb3gsIGZhbGxiYWNr
Rm9udHMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
QEAgLTMyOCw4ICszMTAsNyBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpjb25zdHJ1Y3RJbmxpbmVM
ZXZlbEJveGVzKExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IExpbmVCdWlsZAogICAgICAgICB9CiAg
ICAgICAgIGlmIChydW4uaXNIYXJkTGluZUJyZWFrKCkpIHsKICAgICAgICAgICAgIGF1dG8gbGlu
ZUJyZWFrQm94ID0gSW5saW5lTGV2ZWxCb3g6OmNyZWF0ZUxpbmVCcmVha0JveChsYXlvdXRCb3gs
IHN0eWxlLCBsb2dpY2FsTGVmdCk7Ci0gICAgICAgICAgICBhdXRvJiBwYXJlbnRJbmxpbmVCb3gg
PSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5wYXJlbnQoKSk7
Ci0gICAgICAgICAgICBzZXRWZXJ0aWNhbEdlb21ldHJ5Rm9yTGluZUJyZWFrQm94KGxpbmVCcmVh
a0JveCwgcGFyZW50SW5saW5lQm94KTsKKyAgICAgICAgICAgIHNldEJhc2VsaW5lQW5kTGF5b3V0
Qm91bmRzKGxpbmVCcmVha0JveCwgbGF5b3V0Qm91bmRzTWV0cmljc0ZvcklubGluZUJveChsaW5l
Qm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5wYXJlbnQoKSkpKTsKICAg
ICAgICAgICAgIGxpbmVCb3guYWRkSW5saW5lTGV2ZWxCb3goV1RGTW92ZShsaW5lQnJlYWtCb3gp
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVp
bGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJveEJ1aWxkZXIuaAppbmRleCAxNjY2ZTg0ZjJmYmZjMWYyNzIwMTJiZWQxZDZh
N2Y3OTMwMzk2MjZiLi4yM2M5NjgzOWVlYjhkZjg0YmQ4Y2Y5YmM5Mjc3MzcyNDJiNGM3YjI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMaW5lQm94QnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmgKQEAgLTM3LDYgKzM3
LDcgQEAgbmFtZXNwYWNlIExheW91dCB7CiBjbGFzcyBCb3g7CiBjbGFzcyBDb250YWluZXJCb3g7
CiBjbGFzcyBMYXlvdXRTdGF0ZTsKK3N0cnVjdCBMYXlvdXRCb3VuZHNNZXRyaWNzOwogCiBjbGFz
cyBMaW5lQm94QnVpbGRlciB7CiBwdWJsaWM6CkBAIC00OSw5ICs1MCw4IEBAIHB1YmxpYzoKICAg
ICBMaW5lQm94QW5kSGVpZ2h0IGJ1aWxkKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYs
IHNpemVfdCBsaW5lSW5kZXgpOwogCiBwcml2YXRlOgotICAgIHZvaWQgc2V0SW5pdGlhbFZlcnRp
Y2FsR2VvbWV0cnlGb3JJbmxpbmVCb3goSW5saW5lTGV2ZWxCb3gmKSBjb25zdDsKLSAgICB2b2lk
IHNldFZlcnRpY2FsR2VvbWV0cnlGb3JMaW5lQnJlYWtCb3goSW5saW5lTGV2ZWxCb3gmIGxpbmVC
cmVha0JveCwgY29uc3QgSW5saW5lTGV2ZWxCb3gmIHBhcmVudElubGluZUJveCkgY29uc3Q7Ci0g
ICAgdm9pZCBhZGp1c3RWZXJ0aWNhbEdlb21ldHJ5Rm9ySW5saW5lQm94V2l0aEZhbGxiYWNrRm9u
dHMoSW5saW5lTGV2ZWxCb3gmLCBjb25zdCBUZXh0VXRpbDo6RmFsbGJhY2tGb250TGlzdCYpIGNv
bnN0OworICAgIHZvaWQgc2V0QmFzZWxpbmVBbmRMYXlvdXRCb3VuZHMoSW5saW5lTGV2ZWxCb3gm
LCBjb25zdCBMYXlvdXRCb3VuZHNNZXRyaWNzJikgY29uc3Q7CisgICAgdm9pZCBhZGp1c3RMYXlv
dXRCb3VuZHNXaXRoRmFsbGJhY2tGb250cyhJbmxpbmVMZXZlbEJveCYsIGNvbnN0IFRleHRVdGls
OjpGYWxsYmFja0ZvbnRMaXN0JikgY29uc3Q7CiAgICAgdm9pZCBjb25zdHJ1Y3RJbmxpbmVMZXZl
bEJveGVzKExpbmVCb3gmLCBjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmLCBzaXplX3Qg
bGluZUluZGV4KTsKIAogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0
aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>