<?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>214514</bug_id>
          
          <creation_ts>2020-07-17 20:53:16 -0700</creation_ts>
          <short_desc>Additional Color related cleanups</short_desc>
          <delta_ts>2020-07-19 11:00:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1672776</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-17 20:53:16 -0700</bug_when>
    <thetext>Additional Color related cleanups</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672777</commentid>
    <comment_count>1</comment_count>
      <attachid>404634</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-17 20:58:22 -0700</bug_when>
    <thetext>Created attachment 404634
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672897</commentid>
    <comment_count>2</comment_count>
      <attachid>404634</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-19 08:38:53 -0700</bug_when>
    <thetext>Comment on attachment 404634
Patch

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

&gt; Source/WebCore/platform/graphics/ColorUtilities.h:97
&gt; +    return std::clamp(component, static_cast&lt;ComponentType&gt;(0), static_cast&lt;ComponentType&gt;(255));

Could this be written this way instead?

    return std::clamp&lt;ComponentType&gt;(component, 0, 255);

Are there disadvantages to writing it this way?

&gt; Source/WebCore/platform/graphics/ColorUtilities.h:102
&gt; +    return std::clamp(component, static_cast&lt;ComponentType&gt;(0.0), static_cast&lt;ComponentType&gt;(1.0));

Could this be written this way instead?

    return std::clamp&lt;ComponentType&gt;(component, 0, 1);

Are there disadvantages to writing it this way?

&gt; Source/WebCore/platform/graphics/ColorUtilities.h:153
&gt; +    copy.red = std::invoke(functor, color.red);
&gt; +    copy.green = std::invoke(functor, color.green);
&gt; +    copy.blue = std::invoke(functor, color.blue);

No forwarding, not even on the third call? I wish I understood universal references better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672904</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-19 10:12:49 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 404634 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=404634&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ColorUtilities.h:97
&gt; &gt; +    return std::clamp(component, static_cast&lt;ComponentType&gt;(0), static_cast&lt;ComponentType&gt;(255));
&gt; 
&gt; Could this be written this way instead?
&gt; 
&gt;     return std::clamp&lt;ComponentType&gt;(component, 0, 255);
&gt; 
&gt; Are there disadvantages to writing it this way?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ColorUtilities.h:102
&gt; &gt; +    return std::clamp(component, static_cast&lt;ComponentType&gt;(0.0), static_cast&lt;ComponentType&gt;(1.0));
&gt; 
&gt; Could this be written this way instead?
&gt; 
&gt;     return std::clamp&lt;ComponentType&gt;(component, 0, 1);
&gt; 
&gt; Are there disadvantages to writing it this way?

You know, I am not sure. It just didn&apos;t occur to me. Seems like your proposal is better, and the literals should convert cleanly.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ColorUtilities.h:153
&gt; &gt; +    copy.red = std::invoke(functor, color.red);
&gt; &gt; +    copy.green = std::invoke(functor, color.green);
&gt; &gt; +    copy.blue = std::invoke(functor, color.blue);
&gt; 
&gt; No forwarding, not even on the third call? I wish I understood universal
&gt; references better.

Seems like I could forward it to the last one. Will change.

Thanks for all the reviews.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672905</commentid>
    <comment_count>4</comment_count>
      <attachid>404674</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-19 10:14:53 -0700</bug_when>
    <thetext>Created attachment 404674
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672915</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-19 10:59:09 -0700</bug_when>
    <thetext>Committed r264577: &lt;https://trac.webkit.org/changeset/264577&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404674.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672916</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-19 11:00:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/65792738&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404634</attachid>
            <date>2020-07-17 20:58:22 -0700</date>
            <delta_ts>2020-07-19 10:14:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214514-20200717205821.patch</filename>
            <type>text/plain</type>
            <size>9224</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDU2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDIwLTA3LTE3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRpdGlvbmFsIENvbG9yIHJlbGF0
ZWQgY2xlYW51cHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDUxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCdWlsZGVyLmg6CisgICAgICAgIFJlbW92ZSBy
ZWR1bmRhbnQgInB1YmxpYyIgYW5kIHVzZSBkZWNsdHlwZSgpIHJhdGhlciB0aGFuIG1vcmUgd29y
ZHkgdHlwZW5hbWUgZm9yIHN0YXRpY19hc3NlcnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6Y2xhbXBUb0NvbXBvbmVu
dEJ5dGUpOgorICAgICAgICAoV2ViQ29yZTo6Y2xhbXBUb0NvbXBvbmVudEZsb2F0KToKKyAgICAg
ICAgVGVtcGxhdGl6ZSB0byBzdXBwb3J0IGFueSBpbnB1dC4KKworICAgICAgICAoV2ViQ29yZTo6
Y2xhbXBUb0NvbXBvbmVudEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNsYW1wVG9Db21wb25l
bnRGbG9hdHMpOgorICAgICAgICBUZW1wbGF0aXplIHVzaW5nIHZhcmlhZGljIHRlbXBsYXRlcyB0
byBzdXBwb3J0IGFueSBpbnB1dCBhbmQgcHJlcGFyZSBmb3IgY29sb3IgdHlwZXMgd2l0aCBtb3Jl
IAorICAgICAgICB0aGFuIGZvdXIgY29tcG9uZW50cy4gCisKKyAgICAgICAgKFdlYkNvcmU6OmNv
bG9yQnlNb2RpZmluZ0VhY2hOb25BbHBoYUNvbXBvbmVudCk6CisgICAgICAgIFVzZSBzdGQ6Omlu
dm9rZSB0byBzdXBwb3J0IG1vcmUgdHlwZXMgb2YgZnVuY3RvcnMuCisKKyAgICAgICAgKFdlYkNv
cmU6OmNvbG9yV2l0aE92ZXJyaWRlbkFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OmludmVydGVk
Q29sb3JXaXRoT3ZlcnJpZGVuQWxwaGEpOgorICAgICAgICBVc2UgYXV0byBtb3JlIGNvbnNpc3Rl
bnRseS4KKworICAgICAgICAoV2ViQ29yZTo6aW52ZXJ0Q29tcG9uZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgUmVwbGFjZSBpbnZlcnRDb21wb25lbnQgZnVuY3Rpb25zIHdpdGggQ29tcG9uZW50VHJh
aXRzOjptYXhWYWx1ZSAtIHZhbHVlIGlubGluZSBhdCBjYWxsc2l0ZS4KKwogMjAyMC0wNy0xNyAg
U2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGZpbmFsIHZl
c3RpZ2F0ZXMgb2YgU2ltcGxlQ29sb3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yQnVpbGRlci5oCShyZXZpc2lvbiAyNjQ1NjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEhlbHBlciB0byBhbGxv
dyBjb252ZW5pZW50IHN5bnRheCBmb3Igd29ya2luZyB3aXRoIGNvbG9yIHR5cGVzLgogLy8gZS5n
LiBhdXRvIHllbGxvd1dpdGg1MFBlcmNlbnRBbHBoYSA9IENvbG9yOjp5ZWxsb3cuY29sb3JXaXRo
QWxwaGEoMTI4KTsKLXRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4gc3RydWN0IENvbG9yQnVp
bGRlciA6IHB1YmxpYyBDb2xvclR5cGUgewordGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBz
dHJ1Y3QgQ29sb3JCdWlsZGVyIDogQ29sb3JUeXBlIHsKICAgICB1c2luZyBDb2xvclR5cGU6OkNv
bG9yVHlwZTsKIAogICAgIGNvbnN0ZXhwciBDb2xvclR5cGUgY29sb3IoKSBjb25zdApAQCAtMzks
NyArMzksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IHN0cnVjdCBDb2xvCiAKICAg
ICBjb25zdGV4cHIgQ29sb3JCdWlsZGVyIGNvbG9yV2l0aEFscGhhKHVpbnQ4X3Qgb3ZlcnJpZGVB
bHBoYSkgY29uc3QKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8
dHlwZW5hbWUgQ29sb3JUeXBlOjpDb21wb25lbnRUeXBlLCB1aW50OF90PiwgIk9ubHkgdWludDhf
dCBiYXNlZCBjb2xvciB0eXBlcyBhcmUgc3VwcG9ydGVkLiIpOworICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfc2FtZV92PGRlY2x0eXBlKENvbG9yVHlwZSgpLmFscGhhKSwgdWludDhfdD4s
ICJPbmx5IHVpbnQ4X3QgYmFzZWQgY29sb3IgdHlwZXMgYXJlIHN1cHBvcnRlZC4iKTsKIAogICAg
ICAgICBhdXRvIGNvcHkgPSAqdGhpczsKICAgICAgICAgY29weS5hbHBoYSA9IG92ZXJyaWRlQWxw
aGE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGll
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
VXRpbGl0aWVzLmgJKHJldmlzaW9uIDI2NDU2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDgg
QEAgdWludDhfdCBjb252ZXJ0UHJlc2NhbGVkVG9Db21wb25lbnRCeXRlKAogdWludDhfdCBjb252
ZXJ0VG9Db21wb25lbnRCeXRlKGZsb2F0KTsKIGNvbnN0ZXhwciBmbG9hdCBjb252ZXJ0VG9Db21w
b25lbnRGbG9hdCh1aW50OF90KTsKIAotY29uc3RleHByIHVpbnQ4X3QgY2xhbXBUb0NvbXBvbmVu
dEJ5dGUoaW50KTsKLWNvbnN0ZXhwciBmbG9hdCBjbGFtcFRvQ29tcG9uZW50RmxvYXQoZmxvYXQp
OwordGVtcGxhdGU8dHlwZW5hbWUgQ29tcG9uZW50VHlwZT4gY29uc3RleHByIHVpbnQ4X3QgY2xh
bXBUb0NvbXBvbmVudEJ5dGUoQ29tcG9uZW50VHlwZSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDb21w
b25lbnRUeXBlPiBjb25zdGV4cHIgZmxvYXQgY2xhbXBUb0NvbXBvbmVudEZsb2F0KENvbXBvbmVu
dFR5cGUpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNvbnZlcnRDb21wb25lbnRCeXRlVG8o
dWludDhfdCk7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNvbnZlcnRDb21wb25lbnRGbG9hdFRv
KGZsb2F0KTsKQEAgLTU5LDEwICs1OSw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgY29udmVy
dENvbXBvbmVudEYKIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5
cGU+IENvbG9yVHlwZTx1aW50OF90PiBjb252ZXJ0VG9Db21wb25lbnRCeXRlcyhjb25zdCBDb2xv
clR5cGU8ZmxvYXQ+Jik7CiB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29s
b3JUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlPGZsb2F0PiBjb252ZXJ0VG9Db21wb25lbnRGbG9h
dHMoY29uc3QgQ29sb3JUeXBlPHVpbnQ4X3Q+Jik7CiAKLXRlbXBsYXRlPHRlbXBsYXRlPHR5cGVu
YW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGU8dWludDhfdD4gY2xh
bXBUb0NvbXBvbmVudEJ5dGVzKGludCByLCBpbnQgZywgaW50IGIpOwotdGVtcGxhdGU8dGVtcGxh
dGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZTx1aW50
OF90PiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXMoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOwot
dGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHBy
IENvbG9yVHlwZTxmbG9hdD4gY2xhbXBUb0NvbXBvbmVudEZsb2F0cyhmbG9hdCByLCBmbG9hdCBn
LCBmbG9hdCBiKTsKLXRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5
cGU+IGNvbnN0ZXhwciBDb2xvclR5cGU8ZmxvYXQ+IGNsYW1wVG9Db21wb25lbnRGbG9hdHMoZmxv
YXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7Cit0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBl
bmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZS4uLiBDb21wb25lbnRUeXBlPiBjb25z
dGV4cHIgQ29sb3JUeXBlPHVpbnQ4X3Q+IGNsYW1wVG9Db21wb25lbnRCeXRlcyhDb21wb25lbnRU
eXBlLi4uKTsKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGUs
IHR5cGVuYW1lLi4uIENvbXBvbmVudFR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGU8ZmxvYXQ+IGNs
YW1wVG9Db21wb25lbnRGbG9hdHMoQ29tcG9uZW50VHlwZS4uLik7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgRnVuY3Rvcj4gQ29sb3JUeXBlIGNvbG9yQnlNb2RpZmlu
Z0VhY2hOb25BbHBoYUNvbXBvbmVudChjb25zdCBDb2xvclR5cGUmLCBGdW5jdG9yJiYpOwogCkBA
IC05NCwxNCArOTIsMTQgQEAgY29uc3RleHByIGZsb2F0IGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0
KAogICAgIHJldHVybiBieXRlIC8gMjU1LjBmOwogfQogCi1jb25zdGV4cHIgdWludDhfdCBjbGFt
cFRvQ29tcG9uZW50Qnl0ZShpbnQgYykKK3RlbXBsYXRlPHR5cGVuYW1lIENvbXBvbmVudFR5cGU+
IGNvbnN0ZXhwciB1aW50OF90IGNsYW1wVG9Db21wb25lbnRCeXRlKENvbXBvbmVudFR5cGUgY29t
cG9uZW50KQogewotICAgIHJldHVybiBzdGQ6OmNsYW1wKGMsIDAsIDI1NSk7CisgICAgcmV0dXJu
IHN0ZDo6Y2xhbXAoY29tcG9uZW50LCBzdGF0aWNfY2FzdDxDb21wb25lbnRUeXBlPigwKSwgc3Rh
dGljX2Nhc3Q8Q29tcG9uZW50VHlwZT4oMjU1KSk7CiB9CiAKLWNvbnN0ZXhwciBmbG9hdCBjbGFt
cFRvQ29tcG9uZW50RmxvYXQoZmxvYXQgZikKK3RlbXBsYXRlPHR5cGVuYW1lIENvbXBvbmVudFR5
cGU+IGNvbnN0ZXhwciBmbG9hdCBjbGFtcFRvQ29tcG9uZW50RmxvYXQoQ29tcG9uZW50VHlwZSBj
b21wb25lbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6Y2xhbXAoZiwgMC4wZiwgMS4wZik7CisgICAg
cmV0dXJuIHN0ZDo6Y2xhbXAoY29tcG9uZW50LCBzdGF0aWNfY2FzdDxDb21wb25lbnRUeXBlPigw
LjApLCBzdGF0aWNfY2FzdDxDb21wb25lbnRUeXBlPigxLjApKTsKIH0KIAogdGVtcGxhdGU8PiBj
b25zdGV4cHIgdWludDhfdCBjb252ZXJ0Q29tcG9uZW50Qnl0ZVRvPHVpbnQ4X3Q+KHVpbnQ4X3Qg
dmFsdWUpCkBAIC0xMzYsNjQgKzEzNCw0NCBAQCB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4g
dHlwZW5hbWUgQ29sCiAgICAgcmV0dXJuIHsgY29udmVydFRvQ29tcG9uZW50RmxvYXQoY29tcG9u
ZW50c1swXSksIGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0KGNvbXBvbmVudHNbMV0pLCBjb252ZXJ0
VG9Db21wb25lbnRGbG9hdChjb21wb25lbnRzWzJdKSwgY29udmVydFRvQ29tcG9uZW50RmxvYXQo
Y29tcG9uZW50c1szXSkgfTsKIH0KIAotdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVu
YW1lIENvbG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZTx1aW50OF90PiBjbGFtcFRvQ29tcG9u
ZW50Qnl0ZXMoaW50IHIsIGludCBnLCBpbnQgYikKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1l
PiB0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lLi4uIENvbXBvbmVudFR5cGU+IGNvbnN0ZXhw
ciBDb2xvclR5cGU8dWludDhfdD4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzKENvbXBvbmVudFR5cGUu
Li4gY29tcG9uZW50cykKIHsKLSAgICByZXR1cm4geyBjbGFtcFRvQ29tcG9uZW50Qnl0ZShyKSwg
Y2xhbXBUb0NvbXBvbmVudEJ5dGUoZyksIGNsYW1wVG9Db21wb25lbnRCeXRlKGIpIH07CisgICAg
cmV0dXJuIHsgY2xhbXBUb0NvbXBvbmVudEJ5dGUoY29tcG9uZW50cykuLi4gfTsKIH0KIAotdGVt
cGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHByIENv
bG9yVHlwZTx1aW50OF90PiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXMoaW50IHIsIGludCBnLCBpbnQg
YiwgaW50IGEpCit0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBl
LCB0eXBlbmFtZS4uLiBDb21wb25lbnRUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlPGZsb2F0PiBj
bGFtcFRvQ29tcG9uZW50RmxvYXRzKENvbXBvbmVudFR5cGUuLi4gY29tcG9uZW50cykKIHsKLSAg
ICByZXR1cm4geyBjbGFtcFRvQ29tcG9uZW50Qnl0ZShyKSwgY2xhbXBUb0NvbXBvbmVudEJ5dGUo
ZyksIGNsYW1wVG9Db21wb25lbnRCeXRlKGIpLCBjbGFtcFRvQ29tcG9uZW50Qnl0ZShhKSB9Owot
fQotCi10ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBjb25z
dGV4cHIgQ29sb3JUeXBlPGZsb2F0PiBjbGFtcFRvQ29tcG9uZW50RmxvYXRzKGZsb2F0IHIsIGZs
b2F0IGcsIGZsb2F0IGIpCi17Ci0gICAgcmV0dXJuIHsgY2xhbXBUb0NvbXBvbmVudEZsb2F0KHIp
LCBjbGFtcFRvQ29tcG9uZW50RmxvYXQoZyksIGNsYW1wVG9Db21wb25lbnRGbG9hdChiKSB9Owot
fQotCi10ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBjb25z
dGV4cHIgQ29sb3JUeXBlPGZsb2F0PiBjbGFtcFRvQ29tcG9uZW50RmxvYXRzKGZsb2F0IHIsIGZs
b2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCi17Ci0gICAgcmV0dXJuIHsgY2xhbXBUb0NvbXBvbmVu
dEZsb2F0KHIpLCBjbGFtcFRvQ29tcG9uZW50RmxvYXQoZyksIGNsYW1wVG9Db21wb25lbnRGbG9h
dChiKSwgY2xhbXBUb0NvbXBvbmVudEZsb2F0KGEpIH07CisgICAgcmV0dXJuIHsgY2xhbXBUb0Nv
bXBvbmVudEZsb2F0KGNvbXBvbmVudHMpLi4uIH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENv
bG9yVHlwZSwgdHlwZW5hbWUgRnVuY3Rvcj4gQ29sb3JUeXBlIGNvbG9yQnlNb2RpZmluZ0VhY2hO
b25BbHBoYUNvbXBvbmVudChjb25zdCBDb2xvclR5cGUmIGNvbG9yLCBGdW5jdG9yJiYgZnVuY3Rv
cikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbWFkZSB0byB3b3JrIHdpdGggY29s
b3JzIHRoYXQgZG9uJ3QgdXNlIHRoZSBuYW1lcyByZWQsIGdyZWVuLCBhbmQgYmx1ZSBmb3IgdGhl
aXIgY2hhbm5lbHMuCiAgICAgYXV0byBjb3B5ID0gY29sb3I7Ci0gICAgY29weS5yZWQgPSBmdW5j
dG9yKGNvbG9yLnJlZCk7Ci0gICAgY29weS5ncmVlbiA9IGZ1bmN0b3IoY29sb3IuZ3JlZW4pOwot
ICAgIGNvcHkuYmx1ZSA9IGZ1bmN0b3IoY29sb3IuYmx1ZSk7CisgICAgY29weS5yZWQgPSBzdGQ6
Omludm9rZShmdW5jdG9yLCBjb2xvci5yZWQpOworICAgIGNvcHkuZ3JlZW4gPSBzdGQ6Omludm9r
ZShmdW5jdG9yLCBjb2xvci5ncmVlbik7CisgICAgY29weS5ibHVlID0gc3RkOjppbnZva2UoZnVu
Y3RvciwgY29sb3IuYmx1ZSk7CiAgICAgcmV0dXJuIGNvcHk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIENvbG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZSBjb2xvcldpdGhPdmVycmlkZW5BbHBo
YShjb25zdCBDb2xvclR5cGUmIGNvbG9yLCB1aW50OF90IG92ZXJyaWRlQWxwaGEpCiB7Ci0gICAg
Q29sb3JUeXBlIGNvcHkgPSBjb2xvcjsKKyAgICBhdXRvIGNvcHkgPSBjb2xvcjsKICAgICBjb3B5
LmFscGhhID0gY29udmVydENvbXBvbmVudEJ5dGVUbzxkZWNsdHlwZShjb3B5LmFscGhhKT4ob3Zl
cnJpZGVBbHBoYSk7CiAgICAgcmV0dXJuIGNvcHk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENv
bG9yVHlwZT4gQ29sb3JUeXBlIGNvbG9yV2l0aE92ZXJyaWRlbkFscGhhKGNvbnN0IENvbG9yVHlw
ZSYgY29sb3IsIGZsb2F0IG92ZXJyaWRlQWxwaGEpCiB7Ci0gICAgQ29sb3JUeXBlIGNvcHkgPSBj
b2xvcjsKKyAgICBhdXRvIGNvcHkgPSBjb2xvcjsKICAgICBjb3B5LmFscGhhID0gY29udmVydENv
bXBvbmVudEZsb2F0VG88ZGVjbHR5cGUoY29weS5hbHBoYSk+KG92ZXJyaWRlQWxwaGEpOwogICAg
IHJldHVybiBjb3B5OwogfQogCi1jb25zdGV4cHIgdWludDhfdCBpbnZlcnRDb21wb25lbnQodWlu
dDhfdCBjb21wb25lbnQpCi17Ci0gICAgcmV0dXJuIDI1NSAtIGNvbXBvbmVudDsKLX0KLQotY29u
c3RleHByIGZsb2F0IGludmVydENvbXBvbmVudChmbG9hdCBjb21wb25lbnQpCi17Ci0gICAgcmV0
dXJuIDEuMGYgLSBjb21wb25lbnQ7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4g
Y29uc3RleHByIENvbG9yVHlwZSBpbnZlcnRlZENvbG9yV2l0aE92ZXJyaWRlbkFscGhhKGNvbnN0
IENvbG9yVHlwZSYgY29sb3IsIHVpbnQ4X3Qgb3ZlcnJpZGVBbHBoYSkKIHsKICAgICBhdXRvIGNv
cHkgPSBjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFDb21wb25lbnQoY29sb3IsIFtdIChhdXRv
IGNvbXBvbmVudCkgewotICAgICAgICByZXR1cm4gaW52ZXJ0Q29tcG9uZW50KGNvbXBvbmVudCk7
CisgICAgICAgIHJldHVybiBDb21wb25lbnRUcmFpdHM8ZGVjbHR5cGUoY29tcG9uZW50KT46Om1h
eFZhbHVlIC0gY29tcG9uZW50OwogICAgIH0pOwogICAgIGNvcHkuYWxwaGEgPSBjb252ZXJ0Q29t
cG9uZW50Qnl0ZVRvPGRlY2x0eXBlKGNvcHkuYWxwaGEpPihvdmVycmlkZUFscGhhKTsKICAgICBy
ZXR1cm4gY29weTsKQEAgLTIwMiw3ICsxODAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5
cGU+IGNvbnN0ZXhwciBDCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IENvbG9yVHlwZSBp
bnZlcnRlZENvbG9yV2l0aE92ZXJyaWRlbkFscGhhKGNvbnN0IENvbG9yVHlwZSYgY29sb3IsIGZs
b2F0IG92ZXJyaWRlQWxwaGEpCiB7CiAgICAgYXV0byBjb3B5ID0gY29sb3JCeU1vZGlmaW5nRWFj
aE5vbkFscGhhQ29tcG9uZW50KGNvbG9yLCBbXSAoYXV0byBjb21wb25lbnQpIHsKLSAgICAgICAg
cmV0dXJuIGludmVydENvbXBvbmVudChjb21wb25lbnQpOworICAgICAgICByZXR1cm4gQ29tcG9u
ZW50VHJhaXRzPGRlY2x0eXBlKGNvbXBvbmVudCk+OjptYXhWYWx1ZSAtIGNvbXBvbmVudDsKICAg
ICB9KTsKICAgICBjb3B5LmFscGhhID0gY29udmVydENvbXBvbmVudEZsb2F0VG88ZGVjbHR5cGUo
Y29weS5hbHBoYSk+KG92ZXJyaWRlQWxwaGEpOwogICAgIHJldHVybiBjb3B5Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404674</attachid>
            <date>2020-07-19 10:14:53 -0700</date>
            <delta_ts>2020-07-19 10:59:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214514-20200719101453.patch</filename>
            <type>text/plain</type>
            <size>9180</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDIwLTA3LTE5ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRpdGlvbmFsIENvbG9yIHJlbGF0
ZWQgY2xlYW51cHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDUxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCdWlsZGVyLmg6CisgICAgICAgIFJlbW92ZSByZWR1
bmRhbnQgInB1YmxpYyIgYW5kIHVzZSBkZWNsdHlwZSgpIHJhdGhlciB0aGFuIG1vcmUgd29yZHkg
dHlwZW5hbWUgZm9yIHN0YXRpY19hc3NlcnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvclV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6Y2xhbXBUb0NvbXBvbmVudEJ5
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Y2xhbXBUb0NvbXBvbmVudEZsb2F0KToKKyAgICAgICAg
VGVtcGxhdGl6ZSB0byBzdXBwb3J0IGFueSBpbnB1dC4KKworICAgICAgICAoV2ViQ29yZTo6Y2xh
bXBUb0NvbXBvbmVudEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNsYW1wVG9Db21wb25lbnRG
bG9hdHMpOgorICAgICAgICBUZW1wbGF0aXplIHVzaW5nIHZhcmlhZGljIHRlbXBsYXRlcyB0byBz
dXBwb3J0IGFueSBpbnB1dCBhbmQgcHJlcGFyZSBmb3IgY29sb3IgdHlwZXMgd2l0aCBtb3JlIAor
ICAgICAgICB0aGFuIGZvdXIgY29tcG9uZW50cy4gCisKKyAgICAgICAgKFdlYkNvcmU6OmNvbG9y
QnlNb2RpZmluZ0VhY2hOb25BbHBoYUNvbXBvbmVudCk6CisgICAgICAgIFVzZSBzdGQ6Omludm9r
ZSB0byBzdXBwb3J0IG1vcmUgdHlwZXMgb2YgZnVuY3RvcnMuCisKKyAgICAgICAgKFdlYkNvcmU6
OmNvbG9yV2l0aE92ZXJyaWRlbkFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OmludmVydGVkQ29s
b3JXaXRoT3ZlcnJpZGVuQWxwaGEpOgorICAgICAgICBVc2UgYXV0byBtb3JlIGNvbnNpc3RlbnRs
eS4KKworICAgICAgICAoV2ViQ29yZTo6aW52ZXJ0Q29tcG9uZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgUmVwbGFjZSBpbnZlcnRDb21wb25lbnQgZnVuY3Rpb25zIHdpdGggQ29tcG9uZW50VHJhaXRz
OjptYXhWYWx1ZSAtIHZhbHVlIGlubGluZSBhdCBjYWxsc2l0ZS4KKwogMjAyMC0wNy0xOCAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgZml4IGJ1aWxkIHdhcm5pbmdzIGluIHRoZSBXZWJYUiBiYWNrZW5kCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckJ1aWxkZXIuaAkocmV2aXNpb24g
MjY0NTY1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCdWlsZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAvLyBIZWxwZXIgdG8gYWxsb3cgY29udmVuaWVudCBzeW50YXggZm9yIHdvcmtpbmcgd2l0aCBj
b2xvciB0eXBlcy4KIC8vIGUuZy4gYXV0byB5ZWxsb3dXaXRoNTBQZXJjZW50QWxwaGEgPSBDb2xv
cjo6eWVsbG93LmNvbG9yV2l0aEFscGhhKDEyOCk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5
cGU+IHN0cnVjdCBDb2xvckJ1aWxkZXIgOiBwdWJsaWMgQ29sb3JUeXBlIHsKK3RlbXBsYXRlPHR5
cGVuYW1lIENvbG9yVHlwZT4gc3RydWN0IENvbG9yQnVpbGRlciA6IENvbG9yVHlwZSB7CiAgICAg
dXNpbmcgQ29sb3JUeXBlOjpDb2xvclR5cGU7CiAKICAgICBjb25zdGV4cHIgQ29sb3JUeXBlIGNv
bG9yKCkgY29uc3QKQEAgLTM5LDcgKzM5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBl
PiBzdHJ1Y3QgQ29sbwogCiAgICAgY29uc3RleHByIENvbG9yQnVpbGRlciBjb2xvcldpdGhBbHBo
YSh1aW50OF90IG92ZXJyaWRlQWxwaGEpIGNvbnN0CiAgICAgewotICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfc2FtZV92PHR5cGVuYW1lIENvbG9yVHlwZTo6Q29tcG9uZW50VHlwZSwgdWlu
dDhfdD4sICJPbmx5IHVpbnQ4X3QgYmFzZWQgY29sb3IgdHlwZXMgYXJlIHN1cHBvcnRlZC4iKTsK
KyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxkZWNsdHlwZShDb2xvclR5cGUo
KS5hbHBoYSksIHVpbnQ4X3Q+LCAiT25seSB1aW50OF90IGJhc2VkIGNvbG9yIHR5cGVzIGFyZSBz
dXBwb3J0ZWQuIik7CiAKICAgICAgICAgYXV0byBjb3B5ID0gKnRoaXM7CiAgICAgICAgIGNvcHku
YWxwaGEgPSBvdmVycmlkZUFscGhhOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCShyZXZpc2lvbiAyNjQ1NjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MCw4ICs1MCw4IEBAIHVpbnQ4X3QgY29udmVydFByZXNjYWxlZFRvQ29tcG9uZW50
Qnl0ZSgKIHVpbnQ4X3QgY29udmVydFRvQ29tcG9uZW50Qnl0ZShmbG9hdCk7CiBjb25zdGV4cHIg
ZmxvYXQgY29udmVydFRvQ29tcG9uZW50RmxvYXQodWludDhfdCk7CiAKLWNvbnN0ZXhwciB1aW50
OF90IGNsYW1wVG9Db21wb25lbnRCeXRlKGludCk7Ci1jb25zdGV4cHIgZmxvYXQgY2xhbXBUb0Nv
bXBvbmVudEZsb2F0KGZsb2F0KTsKK3RlbXBsYXRlPHR5cGVuYW1lIENvbXBvbmVudFR5cGU+IGNv
bnN0ZXhwciB1aW50OF90IGNsYW1wVG9Db21wb25lbnRCeXRlKENvbXBvbmVudFR5cGUpOwordGVt
cGxhdGU8dHlwZW5hbWUgQ29tcG9uZW50VHlwZT4gY29uc3RleHByIGZsb2F0IGNsYW1wVG9Db21w
b25lbnRGbG9hdChDb21wb25lbnRUeXBlKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjb252
ZXJ0Q29tcG9uZW50Qnl0ZVRvKHVpbnQ4X3QpOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjb252
ZXJ0Q29tcG9uZW50RmxvYXRUbyhmbG9hdCk7CkBAIC01OSwxMCArNTksOCBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBUIGNvbnZlcnRDb21wb25lbnRGCiB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFt
ZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBDb2xvclR5cGU8dWludDhfdD4gY29udmVydFRvQ29tcG9u
ZW50Qnl0ZXMoY29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOwogdGVtcGxhdGU8dGVtcGxhdGU8dHlw
ZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZTxmbG9hdD4gY29u
dmVydFRvQ29tcG9uZW50RmxvYXRzKGNvbnN0IENvbG9yVHlwZTx1aW50OF90PiYpOwogCi10ZW1w
bGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29s
b3JUeXBlPHVpbnQ4X3Q+IGNsYW1wVG9Db21wb25lbnRCeXRlcyhpbnQgciwgaW50IGcsIGludCBi
KTsKLXRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0
ZXhwciBDb2xvclR5cGU8dWludDhfdD4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzKGludCByLCBpbnQg
ZywgaW50IGIsIGludCBhKTsKLXRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBD
b2xvclR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGU8ZmxvYXQ+IGNsYW1wVG9Db21wb25lbnRGbG9h
dHMoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYik7Ci10ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFt
ZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlPGZsb2F0PiBjbGFtcFRv
Q29tcG9uZW50RmxvYXRzKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpOwordGVt
cGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUuLi4g
Q29tcG9uZW50VHlwZT4gY29uc3RleHByIENvbG9yVHlwZTx1aW50OF90PiBjbGFtcFRvQ29tcG9u
ZW50Qnl0ZXMoQ29tcG9uZW50VHlwZS4uLik7Cit0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4g
dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZS4uLiBDb21wb25lbnRUeXBlPiBjb25zdGV4cHIg
Q29sb3JUeXBlPGZsb2F0PiBjbGFtcFRvQ29tcG9uZW50RmxvYXRzKENvbXBvbmVudFR5cGUuLi4p
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIEZ1bmN0b3I+IENvbG9y
VHlwZSBjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFDb21wb25lbnQoY29uc3QgQ29sb3JUeXBl
JiwgRnVuY3RvciYmKTsKIApAQCAtOTQsMTQgKzkyLDE0IEBAIGNvbnN0ZXhwciBmbG9hdCBjb252
ZXJ0VG9Db21wb25lbnRGbG9hdCgKICAgICByZXR1cm4gYnl0ZSAvIDI1NS4wZjsKIH0KIAotY29u
c3RleHByIHVpbnQ4X3QgY2xhbXBUb0NvbXBvbmVudEJ5dGUoaW50IGMpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDb21wb25lbnRUeXBlPiBjb25zdGV4cHIgdWludDhfdCBjbGFtcFRvQ29tcG9uZW50Qnl0
ZShDb21wb25lbnRUeXBlIGNvbXBvbmVudCkKIHsKLSAgICByZXR1cm4gc3RkOjpjbGFtcChjLCAw
LCAyNTUpOworICAgIHJldHVybiBzdGQ6OmNsYW1wPENvbXBvbmVudFR5cGU+KGNvbXBvbmVudCwg
MCwgMjU1KTsKIH0KIAotY29uc3RleHByIGZsb2F0IGNsYW1wVG9Db21wb25lbnRGbG9hdChmbG9h
dCBmKQordGVtcGxhdGU8dHlwZW5hbWUgQ29tcG9uZW50VHlwZT4gY29uc3RleHByIGZsb2F0IGNs
YW1wVG9Db21wb25lbnRGbG9hdChDb21wb25lbnRUeXBlIGNvbXBvbmVudCkKIHsKLSAgICByZXR1
cm4gc3RkOjpjbGFtcChmLCAwLjBmLCAxLjBmKTsKKyAgICByZXR1cm4gc3RkOjpjbGFtcDxDb21w
b25lbnRUeXBlPihjb21wb25lbnQsIDAsIDEpOwogfQogCiB0ZW1wbGF0ZTw+IGNvbnN0ZXhwciB1
aW50OF90IGNvbnZlcnRDb21wb25lbnRCeXRlVG88dWludDhfdD4odWludDhfdCB2YWx1ZSkKQEAg
LTEzNiw2NCArMTM0LDQ0IEBAIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBD
b2wKICAgICByZXR1cm4geyBjb252ZXJ0VG9Db21wb25lbnRGbG9hdChjb21wb25lbnRzWzBdKSwg
Y29udmVydFRvQ29tcG9uZW50RmxvYXQoY29tcG9uZW50c1sxXSksIGNvbnZlcnRUb0NvbXBvbmVu
dEZsb2F0KGNvbXBvbmVudHNbMl0pLCBjb252ZXJ0VG9Db21wb25lbnRGbG9hdChjb21wb25lbnRz
WzNdKSB9OwogfQogCi10ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JU
eXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlPHVpbnQ4X3Q+IGNsYW1wVG9Db21wb25lbnRCeXRlcyhp
bnQgciwgaW50IGcsIGludCBiKQordGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1l
IENvbG9yVHlwZSwgdHlwZW5hbWUuLi4gQ29tcG9uZW50VHlwZT4gY29uc3RleHByIENvbG9yVHlw
ZTx1aW50OF90PiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXMoQ29tcG9uZW50VHlwZS4uLiBjb21wb25l
bnRzKQogewotICAgIHJldHVybiB7IGNsYW1wVG9Db21wb25lbnRCeXRlKHIpLCBjbGFtcFRvQ29t
cG9uZW50Qnl0ZShnKSwgY2xhbXBUb0NvbXBvbmVudEJ5dGUoYikgfTsKKyAgICByZXR1cm4geyBj
bGFtcFRvQ29tcG9uZW50Qnl0ZShjb21wb25lbnRzKS4uLiB9OwogfQogCi10ZW1wbGF0ZTx0ZW1w
bGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlPHVp
bnQ4X3Q+IGNsYW1wVG9Db21wb25lbnRCeXRlcyhpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkK
K3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1l
Li4uIENvbXBvbmVudFR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGU8ZmxvYXQ+IGNsYW1wVG9Db21w
b25lbnRGbG9hdHMoQ29tcG9uZW50VHlwZS4uLiBjb21wb25lbnRzKQogewotICAgIHJldHVybiB7
IGNsYW1wVG9Db21wb25lbnRCeXRlKHIpLCBjbGFtcFRvQ29tcG9uZW50Qnl0ZShnKSwgY2xhbXBU
b0NvbXBvbmVudEJ5dGUoYiksIGNsYW1wVG9Db21wb25lbnRCeXRlKGEpIH07Ci19Ci0KLXRlbXBs
YXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xv
clR5cGU8ZmxvYXQ+IGNsYW1wVG9Db21wb25lbnRGbG9hdHMoZmxvYXQgciwgZmxvYXQgZywgZmxv
YXQgYikKLXsKLSAgICByZXR1cm4geyBjbGFtcFRvQ29tcG9uZW50RmxvYXQociksIGNsYW1wVG9D
b21wb25lbnRGbG9hdChnKSwgY2xhbXBUb0NvbXBvbmVudEZsb2F0KGIpIH07Ci19Ci0KLXRlbXBs
YXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xv
clR5cGU8ZmxvYXQ+IGNsYW1wVG9Db21wb25lbnRGbG9hdHMoZmxvYXQgciwgZmxvYXQgZywgZmxv
YXQgYiwgZmxvYXQgYSkKLXsKLSAgICByZXR1cm4geyBjbGFtcFRvQ29tcG9uZW50RmxvYXQociks
IGNsYW1wVG9Db21wb25lbnRGbG9hdChnKSwgY2xhbXBUb0NvbXBvbmVudEZsb2F0KGIpLCBjbGFt
cFRvQ29tcG9uZW50RmxvYXQoYSkgfTsKKyAgICByZXR1cm4geyBjbGFtcFRvQ29tcG9uZW50Rmxv
YXQoY29tcG9uZW50cykuLi4gfTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0
eXBlbmFtZSBGdW5jdG9yPiBDb2xvclR5cGUgY29sb3JCeU1vZGlmaW5nRWFjaE5vbkFscGhhQ29t
cG9uZW50KGNvbnN0IENvbG9yVHlwZSYgY29sb3IsIEZ1bmN0b3ImJiBmdW5jdG9yKQogewogICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtYWRlIHRvIHdvcmsgd2l0aCBjb2xvcnMgdGhhdCBk
b24ndCB1c2UgdGhlIG5hbWVzIHJlZCwgZ3JlZW4sIGFuZCBibHVlIGZvciB0aGVpciBjaGFubmVs
cy4KICAgICBhdXRvIGNvcHkgPSBjb2xvcjsKLSAgICBjb3B5LnJlZCA9IGZ1bmN0b3IoY29sb3Iu
cmVkKTsKLSAgICBjb3B5LmdyZWVuID0gZnVuY3Rvcihjb2xvci5ncmVlbik7Ci0gICAgY29weS5i
bHVlID0gZnVuY3Rvcihjb2xvci5ibHVlKTsKKyAgICBjb3B5LnJlZCA9IHN0ZDo6aW52b2tlKGZ1
bmN0b3IsIGNvbG9yLnJlZCk7CisgICAgY29weS5ncmVlbiA9IHN0ZDo6aW52b2tlKGZ1bmN0b3Is
IGNvbG9yLmdyZWVuKTsKKyAgICBjb3B5LmJsdWUgPSBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8
RnVuY3Rvcj4oZnVuY3RvciksIGNvbG9yLmJsdWUpOwogICAgIHJldHVybiBjb3B5OwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGUgY29sb3JXaXRo
T3ZlcnJpZGVuQWxwaGEoY29uc3QgQ29sb3JUeXBlJiBjb2xvciwgdWludDhfdCBvdmVycmlkZUFs
cGhhKQogewotICAgIENvbG9yVHlwZSBjb3B5ID0gY29sb3I7CisgICAgYXV0byBjb3B5ID0gY29s
b3I7CiAgICAgY29weS5hbHBoYSA9IGNvbnZlcnRDb21wb25lbnRCeXRlVG88ZGVjbHR5cGUoY29w
eS5hbHBoYSk+KG92ZXJyaWRlQWxwaGEpOwogICAgIHJldHVybiBjb3B5OwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb2xvclR5cGU+IENvbG9yVHlwZSBjb2xvcldpdGhPdmVycmlkZW5BbHBoYShj
b25zdCBDb2xvclR5cGUmIGNvbG9yLCBmbG9hdCBvdmVycmlkZUFscGhhKQogewotICAgIENvbG9y
VHlwZSBjb3B5ID0gY29sb3I7CisgICAgYXV0byBjb3B5ID0gY29sb3I7CiAgICAgY29weS5hbHBo
YSA9IGNvbnZlcnRDb21wb25lbnRGbG9hdFRvPGRlY2x0eXBlKGNvcHkuYWxwaGEpPihvdmVycmlk
ZUFscGhhKTsKICAgICByZXR1cm4gY29weTsKIH0KIAotY29uc3RleHByIHVpbnQ4X3QgaW52ZXJ0
Q29tcG9uZW50KHVpbnQ4X3QgY29tcG9uZW50KQotewotICAgIHJldHVybiAyNTUgLSBjb21wb25l
bnQ7Ci19Ci0KLWNvbnN0ZXhwciBmbG9hdCBpbnZlcnRDb21wb25lbnQoZmxvYXQgY29tcG9uZW50
KQotewotICAgIHJldHVybiAxLjBmIC0gY29tcG9uZW50OwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGUgaW52ZXJ0ZWRDb2xvcldpdGhPdmVycmlk
ZW5BbHBoYShjb25zdCBDb2xvclR5cGUmIGNvbG9yLCB1aW50OF90IG92ZXJyaWRlQWxwaGEpCiB7
CiAgICAgYXV0byBjb3B5ID0gY29sb3JCeU1vZGlmaW5nRWFjaE5vbkFscGhhQ29tcG9uZW50KGNv
bG9yLCBbXSAoYXV0byBjb21wb25lbnQpIHsKLSAgICAgICAgcmV0dXJuIGludmVydENvbXBvbmVu
dChjb21wb25lbnQpOworICAgICAgICByZXR1cm4gQ29tcG9uZW50VHJhaXRzPGRlY2x0eXBlKGNv
bXBvbmVudCk+OjptYXhWYWx1ZSAtIGNvbXBvbmVudDsKICAgICB9KTsKICAgICBjb3B5LmFscGhh
ID0gY29udmVydENvbXBvbmVudEJ5dGVUbzxkZWNsdHlwZShjb3B5LmFscGhhKT4ob3ZlcnJpZGVB
bHBoYSk7CiAgICAgcmV0dXJuIGNvcHk7CkBAIC0yMDIsNyArMTgwLDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQwogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBl
PiBDb2xvclR5cGUgaW52ZXJ0ZWRDb2xvcldpdGhPdmVycmlkZW5BbHBoYShjb25zdCBDb2xvclR5
cGUmIGNvbG9yLCBmbG9hdCBvdmVycmlkZUFscGhhKQogewogICAgIGF1dG8gY29weSA9IGNvbG9y
QnlNb2RpZmluZ0VhY2hOb25BbHBoYUNvbXBvbmVudChjb2xvciwgW10gKGF1dG8gY29tcG9uZW50
KSB7Ci0gICAgICAgIHJldHVybiBpbnZlcnRDb21wb25lbnQoY29tcG9uZW50KTsKKyAgICAgICAg
cmV0dXJuIENvbXBvbmVudFRyYWl0czxkZWNsdHlwZShjb21wb25lbnQpPjo6bWF4VmFsdWUgLSBj
b21wb25lbnQ7CiAgICAgfSk7CiAgICAgY29weS5hbHBoYSA9IGNvbnZlcnRDb21wb25lbnRGbG9h
dFRvPGRlY2x0eXBlKGNvcHkuYWxwaGEpPihvdmVycmlkZUFscGhhKTsKICAgICByZXR1cm4gY29w
eTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>