<?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>225335</bug_id>
          
          <creation_ts>2021-05-03 16:36:04 -0700</creation_ts>
          <short_desc>Add bounds checks around calls to GlyphBuffer::stringOffsetAt()</short_desc>
          <delta_ts>2021-05-11 01:24:10 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=225642</see_also>
          <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="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>ggaren</cc>
    
    <cc>lmoura</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1756359</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-03 16:36:04 -0700</bug_when>
    <thetext>Add bounds checks around calls to GlyphBuffer::stringOffsetAt()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756378</commentid>
    <comment_count>1</comment_count>
      <attachid>427622</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-03 17:07:08 -0700</bug_when>
    <thetext>Created attachment 427622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756379</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-03 17:07:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/75663608&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756382</commentid>
    <comment_count>3</comment_count>
      <attachid>427624</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-03 17:11:48 -0700</bug_when>
    <thetext>Created attachment 427624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756408</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-05-03 18:54:46 -0700</bug_when>
    <thetext>r=me too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756409</commentid>
    <comment_count>5</comment_count>
      <attachid>427624</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-05-03 19:01:54 -0700</bug_when>
    <thetext>Comment on attachment 427624
Patch

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

&gt; Source/WebCore/platform/graphics/WidthIterator.cpp:398
&gt;          auto stringOffset = glyphBuffer.stringOffsetAt(i);

Given the observation that stringOffsetAt may return an invalid value, indicating that CoreText did not find the string offset we wanted:

(1) Can we just check for kCFNotFound (i.e., -1); that would be a lot more direct and clear. Do we benefit from this more abstract comparison here, and do we expect CoreText to return whacky values other than kCFNotFound for some reason?

(2) Can stringOffsetAt return an Optional&lt;GlyphBufferStringOffset&gt; in order to become self-documenting?

I don&apos;t think these questions block landing; but would be good to address.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758212</commentid>
    <comment_count>6</comment_count>
      <attachid>427624</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-08 15:24:47 -0700</bug_when>
    <thetext>Comment on attachment 427624
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/WidthIterator.cpp:398
&gt;&gt;          auto stringOffset = glyphBuffer.stringOffsetAt(i);
&gt; 
&gt; Given the observation that stringOffsetAt may return an invalid value, indicating that CoreText did not find the string offset we wanted:
&gt; 
&gt; (1) Can we just check for kCFNotFound (i.e., -1); that would be a lot more direct and clear. Do we benefit from this more abstract comparison here, and do we expect CoreText to return whacky values other than kCFNotFound for some reason?
&gt; 
&gt; (2) Can stringOffsetAt return an Optional&lt;GlyphBufferStringOffset&gt; in order to become self-documenting?
&gt; 
&gt; I don&apos;t think these questions block landing; but would be good to address.

(1) Given that these values can come from another framework, I think we should be defensive.

(2) It can! Good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758217</commentid>
    <comment_count>7</comment_count>
      <attachid>428094</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-08 15:47:41 -0700</bug_when>
    <thetext>Created attachment 428094
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758218</commentid>
    <comment_count>8</comment_count>
      <attachid>428095</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-08 15:52:47 -0700</bug_when>
    <thetext>Created attachment 428095
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758231</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-08 17:14:09 -0700</bug_when>
    <thetext>Committed r277232 (237501@main): &lt;https://commits.webkit.org/237501@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428095.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758395</commentid>
    <comment_count>10</comment_count>
      <attachid>428095</attachid>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2021-05-09 17:42:14 -0700</bug_when>
    <thetext>Comment on attachment 428095
Patch for committing

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

&gt; Source/WebCore/platform/graphics/GlyphBuffer.h:81
&gt; +        if (result &lt; 0 || static_cast&lt;unsigned&gt;(result) &gt;= stringLength)

This is raising -Wtype-limits warnings on non-CG platforms due to GlyphBufferStringOffset being &apos;unsigned&apos; there. What would be the proper way to silence them? Maybe move the result&lt;0 comparison to a USE(CG) block?

Example:

In file included from WebCore/PrivateHeaders/WebCore/Font.h:30,                                                                                                                                                    
                 from WebCore/PrivateHeaders/WebCore/FontCascade.h:28,                                                                                                                                             
                 from WebCore/PrivateHeaders/WebCore/GraphicsContext.h:32,                                                                                                                                         
                 from WebCore/PrivateHeaders/WebCore/FrameView.h:31,                                                                                                                                               
                 from ../../Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:56:                                                                                                                 
WebCore/PrivateHeaders/WebCore/GlyphBuffer.h: In member function ‘WTF::Optional&lt;unsigned int&gt; WebCore::GlyphBuffer::checkedStringOffsetAt(unsigned int, unsigned int) const’:                                      
WebCore/PrivateHeaders/WebCore/GlyphBuffer.h:81:20: warning: comparison of unsigned expression in ‘&lt; 0’ is always false [-Wtype-limits]                                                                            
   81 |         if (result &lt; 0 || static_cast&lt;unsigned&gt;(result) &gt;= stringLength)                                                                                                                                   
      |</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427622</attachid>
            <date>2021-05-03 17:07:08 -0700</date>
            <delta_ts>2021-05-03 17:23:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225335-20210503170707.patch</filename>
            <type>text/plain</type>
            <size>2689</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY0MzI3OTBiMTIwMjRj
NzMzYjkzNzQ5NjBiMTg5Nzc1ZTQ1YmI4NC4uZjJiNWVlODEwOWJkYzA5ZTUzMTViZDBmZGM2MzA4
ZmZmMzJhNmQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA1LTAzICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGJvdW5k
cyBjaGVja3MgYXJvdW5kIGNhbGxzIHRvIEdseXBoQnVmZmVyOjpzdHJpbmdPZmZzZXRBdCgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzMzUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1NjYzNjA4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlJ3JlIGdldHRpbmcgY3Jhc2ggcmVwb3J0cyB0aGF0
IGxvb2sgbGlrZSB0aGV5J3JlIGZyb20gc3RyaW5nIG9mZnNldHMgYmVpbmcgb3V0LW9mLWJvdW5k
cy4KKyAgICAgICAgVGhlc2Ugc3RyaW5nIG9mZnNldHMgcm91bmQtdHJpcCB0aHJvdWdoIENvcmUg
VGV4dCwgd2hpY2ggaXMgYWxsb3dlZCB0byBtb2RpZnkgdGhlbSwgd2hpY2gKKyAgICAgICAgY2Fu
IGVuZCB1cCBtYWtpbmcgdGhlbSBvdXQtb2YtYm91bmRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyBiZWNhdXNlIEkgZG9uJ3QgaGF2ZSBhIHJlcHJvZHVjaWJsZSB0ZXN0IGNhc2U7IGp1c3QgY3Jh
c2ggcmVwb3J0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6YXBwbHlFeHRyYVNwYWNpbmdB
ZnRlclNoYXBpbmcpOgorCiAyMDIxLTA1LTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgV0tXZWJWaWV3OiBXS1VSTFNjaGVtZUhhbmRsZXIg
cmVxdWVzdCBkb24ndCBoYXZlIFJhbmdlIGhlYWRlcnMgZm9yIGN1c3RvbSBzY2hlbWUgdmlkZW9z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3Iu
Y3BwCmluZGV4IGFhZmExYWJjNTRlZDA2MmY4ZTYzYWFjYWIwZmE2NjEwYWZmOTNhN2IuLmYxNTU2
MjE3NTUzZjQzOTMwMjA1ZmRlNGIxNjdkMjE3NWZjYjVmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCkBAIC0zOTYsNiArMzk2
LDggQEAgdm9pZCBXaWR0aEl0ZXJhdG9yOjphcHBseUV4dHJhU3BhY2luZ0FmdGVyU2hhcGluZyhH
bHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2kKICAgICBWZWN0b3I8ZmxvYXQ+IGFkdmFuY2VX
aWR0aHMobV9ydW4ubGVuZ3RoKCksIDApOwogICAgIGZvciAodW5zaWduZWQgaSA9IGdseXBoQnVm
ZmVyU3RhcnRJbmRleDsgaSA8IGdseXBoQnVmZmVyLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGF1
dG8gc3RyaW5nT2Zmc2V0ID0gZ2x5cGhCdWZmZXIuc3RyaW5nT2Zmc2V0QXQoaSk7CisgICAgICAg
IGlmIChzdHJpbmdPZmZzZXQgPCAwIHx8IHN0cmluZ09mZnNldCA+PSBhZHZhbmNlV2lkdGhzLnNp
emUoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBhZHZhbmNlV2lkdGhzW3N0cmlu
Z09mZnNldF0gKz0gd2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKTsKICAgICAgICAgYXV0
byYgZ2x5cGhJbmRleFJhbmdlID0gY2hhcmFjdGVySW5kZXhUb0dseXBoSW5kZXhSYW5nZVtzdHJp
bmdPZmZzZXRdOwogICAgICAgICBpZiAoZ2x5cGhJbmRleFJhbmdlKQpAQCAtNDEwLDggKzQxMiw3
IEBAIHZvaWQgV2lkdGhJdGVyYXRvcjo6YXBwbHlFeHRyYVNwYWNpbmdBZnRlclNoYXBpbmcoR2x5
cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpCiAgICAgICAgICAgICAvLyBBbGwgY2hhcmFjdGVy
cycgYWR2YW5jZXMgZ2V0IHN0cmV0Y2hlZCwgZXhjZXB0IGFwcGFyZW50bHkgdGFiIGNoYXJhY3Rl
cnMuLi4KICAgICAgICAgICAgIC8vIFRoaXMgZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2UsIGJlY2F1
c2UgZXZlbiB0YWIgY2hhcmFjdGVycyBnZXQgbGV0dGVyLXNwYWNpbmcuLi4KICAgICAgICAgICAg
IGF1dG8gc3RyaW5nT2Zmc2V0ID0gZ2x5cGhCdWZmZXIuc3RyaW5nT2Zmc2V0QXQoaSk7Ci0gICAg
ICAgICAgICBhdXRvIGNoYXJhY3RlciA9IG1fcnVuW3N0cmluZ09mZnNldF07Ci0gICAgICAgICAg
ICBpZiAoY2hhcmFjdGVyID09IHRhYkNoYXJhY3RlcikKKyAgICAgICAgICAgIGlmIChzdHJpbmdP
ZmZzZXQgPj0gMCAmJiBzdHJpbmdPZmZzZXQgPCBtX3J1bi5sZW5ndGgoKSAmJiBtX3J1bltzdHJp
bmdPZmZzZXRdID09IHRhYkNoYXJhY3RlcikKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICAgICAgYXV0byBjdXJyZW50QWR2YW5jZSA9IHdpZHRoKGdseXBoQnVmZmVyLmFkdmFu
Y2VBdChpKSk7Cg==
</data>
<flag name="commit-queue"
          id="448287"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427624</attachid>
            <date>2021-05-03 17:11:48 -0700</date>
            <delta_ts>2021-05-03 18:42:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225335-20210503171147.patch</filename>
            <type>text/plain</type>
            <size>2733</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY0MzI3OTBiMTIwMjRj
NzMzYjkzNzQ5NjBiMTg5Nzc1ZTQ1YmI4NC4uZjJiNWVlODEwOWJkYzA5ZTUzMTViZDBmZGM2MzA4
ZmZmMzJhNmQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA1LTAzICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGJvdW5k
cyBjaGVja3MgYXJvdW5kIGNhbGxzIHRvIEdseXBoQnVmZmVyOjpzdHJpbmdPZmZzZXRBdCgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzMzUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1NjYzNjA4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlJ3JlIGdldHRpbmcgY3Jhc2ggcmVwb3J0cyB0aGF0
IGxvb2sgbGlrZSB0aGV5J3JlIGZyb20gc3RyaW5nIG9mZnNldHMgYmVpbmcgb3V0LW9mLWJvdW5k
cy4KKyAgICAgICAgVGhlc2Ugc3RyaW5nIG9mZnNldHMgcm91bmQtdHJpcCB0aHJvdWdoIENvcmUg
VGV4dCwgd2hpY2ggaXMgYWxsb3dlZCB0byBtb2RpZnkgdGhlbSwgd2hpY2gKKyAgICAgICAgY2Fu
IGVuZCB1cCBtYWtpbmcgdGhlbSBvdXQtb2YtYm91bmRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyBiZWNhdXNlIEkgZG9uJ3QgaGF2ZSBhIHJlcHJvZHVjaWJsZSB0ZXN0IGNhc2U7IGp1c3QgY3Jh
c2ggcmVwb3J0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6YXBwbHlFeHRyYVNwYWNpbmdB
ZnRlclNoYXBpbmcpOgorCiAyMDIxLTA1LTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgV0tXZWJWaWV3OiBXS1VSTFNjaGVtZUhhbmRsZXIg
cmVxdWVzdCBkb24ndCBoYXZlIFJhbmdlIGhlYWRlcnMgZm9yIGN1c3RvbSBzY2hlbWUgdmlkZW9z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3Iu
Y3BwCmluZGV4IGFhZmExYWJjNTRlZDA2MmY4ZTYzYWFjYWIwZmE2NjEwYWZmOTNhN2IuLmViMTFi
ZjNkZGY3ZWQzNmY1MzNlYTM5OWIyOGQ0NzA0MzY1YmZlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCkBAIC0zOTYsNiArMzk2
LDggQEAgdm9pZCBXaWR0aEl0ZXJhdG9yOjphcHBseUV4dHJhU3BhY2luZ0FmdGVyU2hhcGluZyhH
bHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2kKICAgICBWZWN0b3I8ZmxvYXQ+IGFkdmFuY2VX
aWR0aHMobV9ydW4ubGVuZ3RoKCksIDApOwogICAgIGZvciAodW5zaWduZWQgaSA9IGdseXBoQnVm
ZmVyU3RhcnRJbmRleDsgaSA8IGdseXBoQnVmZmVyLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGF1
dG8gc3RyaW5nT2Zmc2V0ID0gZ2x5cGhCdWZmZXIuc3RyaW5nT2Zmc2V0QXQoaSk7CisgICAgICAg
IGlmIChzdHJpbmdPZmZzZXQgPCAwIHx8IHN0YXRpY19jYXN0PHNpemVfdD4oc3RyaW5nT2Zmc2V0
KSA+PSBhZHZhbmNlV2lkdGhzLnNpemUoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBhZHZhbmNlV2lkdGhzW3N0cmluZ09mZnNldF0gKz0gd2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5j
ZUF0KGkpKTsKICAgICAgICAgYXV0byYgZ2x5cGhJbmRleFJhbmdlID0gY2hhcmFjdGVySW5kZXhU
b0dseXBoSW5kZXhSYW5nZVtzdHJpbmdPZmZzZXRdOwogICAgICAgICBpZiAoZ2x5cGhJbmRleFJh
bmdlKQpAQCAtNDEwLDggKzQxMiw3IEBAIHZvaWQgV2lkdGhJdGVyYXRvcjo6YXBwbHlFeHRyYVNw
YWNpbmdBZnRlclNoYXBpbmcoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpCiAgICAgICAg
ICAgICAvLyBBbGwgY2hhcmFjdGVycycgYWR2YW5jZXMgZ2V0IHN0cmV0Y2hlZCwgZXhjZXB0IGFw
cGFyZW50bHkgdGFiIGNoYXJhY3RlcnMuLi4KICAgICAgICAgICAgIC8vIFRoaXMgZG9lc24ndCBt
YWtlIG11Y2ggc2Vuc2UsIGJlY2F1c2UgZXZlbiB0YWIgY2hhcmFjdGVycyBnZXQgbGV0dGVyLXNw
YWNpbmcuLi4KICAgICAgICAgICAgIGF1dG8gc3RyaW5nT2Zmc2V0ID0gZ2x5cGhCdWZmZXIuc3Ry
aW5nT2Zmc2V0QXQoaSk7Ci0gICAgICAgICAgICBhdXRvIGNoYXJhY3RlciA9IG1fcnVuW3N0cmlu
Z09mZnNldF07Ci0gICAgICAgICAgICBpZiAoY2hhcmFjdGVyID09IHRhYkNoYXJhY3RlcikKKyAg
ICAgICAgICAgIGlmIChzdHJpbmdPZmZzZXQgPj0gMCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c3RyaW5nT2Zmc2V0KSA8IG1fcnVuLmxlbmd0aCgpICYmIG1fcnVuW3N0cmluZ09mZnNldF0gPT0g
dGFiQ2hhcmFjdGVyKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBh
dXRvIGN1cnJlbnRBZHZhbmNlID0gd2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKTsK
</data>
<flag name="review"
          id="448284"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428094</attachid>
            <date>2021-05-08 15:47:41 -0700</date>
            <delta_ts>2021-05-08 16:04:52 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-225335-20210508154740.patch</filename>
            <type>text/plain</type>
            <size>6972</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJhZDhjNjk3MGZmY2I3
MDg5ZjY3ZTY5ODVlMGJkMTA1MzBkOTI2OC4uYWNhNjMyZTAwYWYwNjIzNjczZjkyNTQ3ODZkMjM4
MTFiMjhkZWY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTA1LTA4ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGJvdW5k
cyBjaGVja3MgYXJvdW5kIGNhbGxzIHRvIEdseXBoQnVmZmVyOjpzdHJpbmdPZmZzZXRBdCgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzMzUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1NjYzNjA4PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEZyYXNlciBhbmQgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgV2UncmUgZ2V0dGluZyBjcmFz
aCByZXBvcnRzIHRoYXQgbG9vayBsaWtlIHRoZXkncmUgZnJvbSBzdHJpbmcgb2Zmc2V0cyBiZWlu
ZyBvdXQtb2YtYm91bmRzLgorICAgICAgICBUaGVzZSBzdHJpbmcgb2Zmc2V0cyByb3VuZC10cmlw
IHRocm91Z2ggQ29yZSBUZXh0LCB3aGljaCBpcyBhbGxvd2VkIHRvIG1vZGlmeSB0aGVtLCB3aGlj
aAorICAgICAgICBjYW4gZW5kIHVwIG1ha2luZyB0aGVtIG91dC1vZi1ib3VuZHMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgSSBkb24ndCBoYXZlIGEgcmVwcm9kdWNpYmxlIHRlc3Qg
Y2FzZTsganVzdCBjcmFzaCByZXBvcnRzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVVuZGVybGluZVR5cGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6dW5jaGVja2VkU3RyaW5nT2Zmc2V0QXQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6OmNoZWNrZWRTdHJpbmdPZmZzZXRBdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6c3RyaW5nT2Zmc2V0QXQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6YXBwbHlGb250VHJhbnNmb3Jtcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjphcHBseUV4dHJhU3BhY2luZ0FmdGVyU2hh
cGluZyk6CisKIDIwMjEtMDUtMDggIFJpY2t5IE1vbmRlbGxvICA8cm1vbmRlbGxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggYSB0eXBvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggZTMxOTMzN2JiYTgyNzBjODliZmJjZDJlMDBm
ZTBjNjg2NDAyZDM0NS4uY2VlYTg0YTI4ZjJlOThjZDg2ZTRiY2IzNDY5ZjA0MjllZDdmNWI5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNw
cApAQCAtMTE1NCwxNSArMTE1NCwxNCBAQCBzdGF0aWMgR2x5cGhVbmRlcmxpbmVUeXBlIGNvbXB1
dGVVbmRlcmxpbmVUeXBlKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEdseQogICAgIC8v
IHNvIHdlIHdhbnQgdG8gZHJhdyB0aHJvdWdoIENKSyBjaGFyYWN0ZXJzIChvbiBhIGNoYXJhY3Rl
ci1ieS1jaGFyYWN0ZXIgYmFzaXMpLgogICAgIC8vIEZJWE1FOiBUaGUgQ1NTIHNwZWMgc2F5cyB0
aGlzIHNob3VsZCBpbnN0ZWFkIGJlIGRvbmUgYnkgdGhlIHVzZXItYWdlbnQgc3R5bGVzaGVldCB1
c2luZyB0aGUgbGFuZz0gYXR0cmlidXRlLgogICAgIFVDaGFyMzIgYmFzZUNoYXJhY3RlcjsKLSAg
ICBhdXRvIG9mZnNldEluU3RyaW5nID0gZ2x5cGhCdWZmZXIuc3RyaW5nT2Zmc2V0QXQoaW5kZXgp
OwotCi0gICAgR2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQgdGV4dFJ1bkxlbmd0aCA9IHRleHRSdW4u
bGVuZ3RoKCk7Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihv
ZmZzZXRJblN0cmluZyA8IHRleHRSdW5MZW5ndGgpOworICAgIGF1dG8gb2Zmc2V0SW5TdHJpbmcg
PSBnbHlwaEJ1ZmZlci5jaGVja2VkU3RyaW5nT2Zmc2V0QXQoaW5kZXgsIHRleHRSdW4ubGVuZ3Ro
KCkpOworICAgIGlmICghb2Zmc2V0SW5TdHJpbmcpCisgICAgICAgIHJldHVybiBHbHlwaFVuZGVy
bGluZVR5cGU6OlNraXBEZXNjZW5kZXJzOwogICAgIAogICAgIGlmICh0ZXh0UnVuLmlzOEJpdCgp
KQotICAgICAgICBiYXNlQ2hhcmFjdGVyID0gdGV4dFJ1bi5jaGFyYWN0ZXJzOCgpW29mZnNldElu
U3RyaW5nXTsKKyAgICAgICAgYmFzZUNoYXJhY3RlciA9IHRleHRSdW4uY2hhcmFjdGVyczgoKVtv
ZmZzZXRJblN0cmluZy52YWx1ZSgpXTsKICAgICBlbHNlCi0gICAgICAgIFUxNl9HRVQodGV4dFJ1
bi5jaGFyYWN0ZXJzMTYoKSwgMCwgb2Zmc2V0SW5TdHJpbmcsIHRleHRSdW5MZW5ndGgsIGJhc2VD
aGFyYWN0ZXIpOworICAgICAgICBVMTZfR0VUKHRleHRSdW4uY2hhcmFjdGVyczE2KCksIDAsIG9m
ZnNldEluU3RyaW5nLnZhbHVlKCksIHRleHRSdW4ubGVuZ3RoKCksIGJhc2VDaGFyYWN0ZXIpOwog
ICAgIAogICAgIC8vIHVfZ2V0SW50UHJvcGVydHlWYWx1ZSB3aXRoIFVDSEFSX0lERU9HUkFQSElD
IGRvZXNuJ3QgcmV0dXJuIHRydWUgZm9yIEphcGFuZXNlIG9yIEtvcmVhbiBjb2RlcG9pbnRzLgog
ICAgIC8vIEluc3RlYWQsIHdlIGNhbiB1c2UgdGhlICJVbmljb2RlIGFsbG9jYXRpb24gYmxvY2si
IGZvciB0aGUgY2hhcmFjdGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR2x5cGhCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dseXBoQnVmZmVyLmgKaW5kZXggODM3ODczMGM4Mzc1ZmFhNjU0MjQ2NTZlOTQ4NDk5MWVmOGM0
YWRkNy4uOWFkMTljN2E0ZjU0MjYwZTFhMDg5YmUwMTg4YjkyZTIwYmU0ODk2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCkBAIC03NCw3ICs3
NCwxNCBAQCBwdWJsaWM6CiAgICAgR2x5cGggZ2x5cGhBdCh1bnNpZ25lZCBpbmRleCkgY29uc3Qg
eyByZXR1cm4gbV9nbHlwaHNbaW5kZXhdOyB9CiAgICAgR2x5cGhCdWZmZXJBZHZhbmNlIGFkdmFu
Y2VBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9hZHZhbmNlc1tpbmRleF07IH0K
ICAgICBHbHlwaEJ1ZmZlck9yaWdpbiBvcmlnaW5BdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyBy
ZXR1cm4gbV9vcmlnaW5zW2luZGV4XTsgfQotICAgIEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0IHN0
cmluZ09mZnNldEF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX29mZnNldHNJblN0
cmluZ1tpbmRleF07IH0KKyAgICBHbHlwaEJ1ZmZlclN0cmluZ09mZnNldCB1bmNoZWNrZWRTdHJp
bmdPZmZzZXRBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXRzSW5TdHJp
bmdbaW5kZXhdOyB9CisgICAgT3B0aW9uYWw8R2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQ+IGNoZWNr
ZWRTdHJpbmdPZmZzZXRBdCh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgc3RyaW5nTGVuZ3RoKSBj
b25zdAorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSB1bmNoZWNrZWRTdHJpbmdPZmZzZXRB
dChpbmRleCk7CisgICAgICAgIGlmIChyZXN1bHQgPCAwIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihyZXN1bHQpID49IHN0cmluZ0xlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogCiAgICAgdm9pZCBzZXRJbml0aWFs
QWR2YW5jZShHbHlwaEJ1ZmZlckFkdmFuY2UgaW5pdGlhbEFkdmFuY2UpIHsgbV9pbml0aWFsQWR2
YW5jZSA9IGluaXRpYWxBZHZhbmNlOyB9CiAgICAgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlJiBp
bml0aWFsQWR2YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbEFkdmFuY2U7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKaW5k
ZXggYWFmYTFhYmM1NGVkMDYyZjhlNjNhYWNhYjBmYTY2MTBhZmY5M2E3Yi4uZGFjNGU2ZjA5NjVj
ZjkwOWQ4NjI0ZmFhZDIxNzc0ODQ0MmQ4NzI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBp
bmxpbmUgZmxvYXQgV2lkdGhJdGVyYXRvcjo6YXBwbHlGb250VHJhbnNmb3JtcyhHbHlwaEJ1ZmZl
ciYgZ2x5cGhCdWZmZXIsIHVuc2lnbgogICAgIH0KIAogICAgIGZvciAodW5zaWduZWQgaSA9IGxh
c3RHbHlwaENvdW50OyBpIDwgZ2x5cGhCdWZmZXJTaXplOyArK2kpIHsKLSAgICAgICAgYXV0byBj
aGFyYWN0ZXJJbmRleCA9IGdseXBoQnVmZmVyLnN0cmluZ09mZnNldEF0KGkpOworICAgICAgICBh
dXRvIGNoYXJhY3RlckluZGV4ID0gZ2x5cGhCdWZmZXIudW5jaGVja2VkU3RyaW5nT2Zmc2V0QXQo
aSk7CiAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBzdGQ6Omxvd2VyX2JvdW5kKGNoYXJhY3RlcnNU
cmVhdGVkQXNTcGFjZS5iZWdpbigpLCBjaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2UuZW5kKCksIGNo
YXJhY3RlckluZGV4LCBbXShjb25zdCBPcmlnaW5hbEFkdmFuY2VzRm9yQ2hhcmFjdGVyVHJlYXRl
ZEFzU3BhY2UmIGwsIEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0IHIpIC0+IGJvb2wgewogICAgICAg
ICAgICAgcmV0dXJuIGwuc3RyaW5nT2Zmc2V0IDwgcjsKICAgICAgICAgfSk7CkBAIC0zOTUsOSAr
Mzk1LDExIEBAIHZvaWQgV2lkdGhJdGVyYXRvcjo6YXBwbHlFeHRyYVNwYWNpbmdBZnRlclNoYXBp
bmcoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpCiAgICAgVmVjdG9yPE9wdGlvbmFsPEds
eXBoSW5kZXhSYW5nZT4+IGNoYXJhY3RlckluZGV4VG9HbHlwaEluZGV4UmFuZ2UobV9ydW4ubGVu
Z3RoKCksIFdURjo6bnVsbG9wdCk7CiAgICAgVmVjdG9yPGZsb2F0PiBhZHZhbmNlV2lkdGhzKG1f
cnVuLmxlbmd0aCgpLCAwKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBnbHlwaEJ1ZmZlclN0YXJ0
SW5kZXg7IGkgPCBnbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvIHN0cmlu
Z09mZnNldCA9IGdseXBoQnVmZmVyLnN0cmluZ09mZnNldEF0KGkpOwotICAgICAgICBhZHZhbmNl
V2lkdGhzW3N0cmluZ09mZnNldF0gKz0gd2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKTsK
LSAgICAgICAgYXV0byYgZ2x5cGhJbmRleFJhbmdlID0gY2hhcmFjdGVySW5kZXhUb0dseXBoSW5k
ZXhSYW5nZVtzdHJpbmdPZmZzZXRdOworICAgICAgICBhdXRvIHN0cmluZ09mZnNldCA9IGdseXBo
QnVmZmVyLmNoZWNrZWRTdHJpbmdPZmZzZXRBdChpLCBtX3J1bi5sZW5ndGgoKSk7CisgICAgICAg
IGlmICghc3RyaW5nT2Zmc2V0KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGFkdmFu
Y2VXaWR0aHNbc3RyaW5nT2Zmc2V0LnZhbHVlKCldICs9IHdpZHRoKGdseXBoQnVmZmVyLmFkdmFu
Y2VBdChpKSk7CisgICAgICAgIGF1dG8mIGdseXBoSW5kZXhSYW5nZSA9IGNoYXJhY3RlckluZGV4
VG9HbHlwaEluZGV4UmFuZ2Vbc3RyaW5nT2Zmc2V0LnZhbHVlKCldOwogICAgICAgICBpZiAoZ2x5
cGhJbmRleFJhbmdlKQogICAgICAgICAgICAgZ2x5cGhJbmRleFJhbmdlLT50cmFpbGluZ0dseXBo
SW5kZXggPSBpOwogICAgICAgICBlbHNlCkBAIC00MDksOSArNDExLDggQEAgdm9pZCBXaWR0aEl0
ZXJhdG9yOjphcHBseUV4dHJhU3BhY2luZ0FmdGVyU2hhcGluZyhHbHlwaEJ1ZmZlciYgZ2x5cGhC
dWZmZXIsIHVuc2kKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZ2x5cGhCdWZmZXJTdGFydElu
ZGV4OyBpIDwgZ2x5cGhCdWZmZXIuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIC8vIEFsbCBj
aGFyYWN0ZXJzJyBhZHZhbmNlcyBnZXQgc3RyZXRjaGVkLCBleGNlcHQgYXBwYXJlbnRseSB0YWIg
Y2hhcmFjdGVycy4uLgogICAgICAgICAgICAgLy8gVGhpcyBkb2Vzbid0IG1ha2UgbXVjaCBzZW5z
ZSwgYmVjYXVzZSBldmVuIHRhYiBjaGFyYWN0ZXJzIGdldCBsZXR0ZXItc3BhY2luZy4uLgotICAg
ICAgICAgICAgYXV0byBzdHJpbmdPZmZzZXQgPSBnbHlwaEJ1ZmZlci5zdHJpbmdPZmZzZXRBdChp
KTsKLSAgICAgICAgICAgIGF1dG8gY2hhcmFjdGVyID0gbV9ydW5bc3RyaW5nT2Zmc2V0XTsKLSAg
ICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gdGFiQ2hhcmFjdGVyKQorICAgICAgICAgICAgYXV0
byBzdHJpbmdPZmZzZXQgPSBnbHlwaEJ1ZmZlci5jaGVja2VkU3RyaW5nT2Zmc2V0QXQoaSwgbV9y
dW4ubGVuZ3RoKCkpOworICAgICAgICAgICAgaWYgKHN0cmluZ09mZnNldCAmJiBtX3J1bltzdHJp
bmdPZmZzZXQudmFsdWUoKV0gPT0gdGFiQ2hhcmFjdGVyKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgICAgICBhdXRvIGN1cnJlbnRBZHZhbmNlID0gd2lkdGgoZ2x5cGhCdWZm
ZXIuYWR2YW5jZUF0KGkpKTsK
</data>
<flag name="commit-queue"
          id="448910"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428095</attachid>
            <date>2021-05-08 15:52:47 -0700</date>
            <delta_ts>2021-05-08 17:14:10 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-225335-20210508155246.patch</filename>
            <type>text/plain</type>
            <size>6995</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJhZDhjNjk3MGZmY2I3
MDg5ZjY3ZTY5ODVlMGJkMTA1MzBkOTI2OC4uYWNhNjMyZTAwYWYwNjIzNjczZjkyNTQ3ODZkMjM4
MTFiMjhkZWY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTA1LTA4ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGJvdW5k
cyBjaGVja3MgYXJvdW5kIGNhbGxzIHRvIEdseXBoQnVmZmVyOjpzdHJpbmdPZmZzZXRBdCgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzMzUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1NjYzNjA4PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEZyYXNlciBhbmQgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgV2UncmUgZ2V0dGluZyBjcmFz
aCByZXBvcnRzIHRoYXQgbG9vayBsaWtlIHRoZXkncmUgZnJvbSBzdHJpbmcgb2Zmc2V0cyBiZWlu
ZyBvdXQtb2YtYm91bmRzLgorICAgICAgICBUaGVzZSBzdHJpbmcgb2Zmc2V0cyByb3VuZC10cmlw
IHRocm91Z2ggQ29yZSBUZXh0LCB3aGljaCBpcyBhbGxvd2VkIHRvIG1vZGlmeSB0aGVtLCB3aGlj
aAorICAgICAgICBjYW4gZW5kIHVwIG1ha2luZyB0aGVtIG91dC1vZi1ib3VuZHMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgSSBkb24ndCBoYXZlIGEgcmVwcm9kdWNpYmxlIHRlc3Qg
Y2FzZTsganVzdCBjcmFzaCByZXBvcnRzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVVuZGVybGluZVR5cGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6dW5jaGVja2VkU3RyaW5nT2Zmc2V0QXQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6OmNoZWNrZWRTdHJpbmdPZmZzZXRBdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6c3RyaW5nT2Zmc2V0QXQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6YXBwbHlGb250VHJhbnNmb3Jtcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjphcHBseUV4dHJhU3BhY2luZ0FmdGVyU2hh
cGluZyk6CisKIDIwMjEtMDUtMDggIFJpY2t5IE1vbmRlbGxvICA8cm1vbmRlbGxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggYSB0eXBvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggZTMxOTMzN2JiYTgyNzBjODliZmJjZDJlMDBm
ZTBjNjg2NDAyZDM0NS4uODdhNDRhNTM0N2FiODZiYThlMTkzMGYwNDIwZTY0NTA5NTYwYjgxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNw
cApAQCAtMTE1NCwxNSArMTE1NCwxNCBAQCBzdGF0aWMgR2x5cGhVbmRlcmxpbmVUeXBlIGNvbXB1
dGVVbmRlcmxpbmVUeXBlKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEdseQogICAgIC8v
IHNvIHdlIHdhbnQgdG8gZHJhdyB0aHJvdWdoIENKSyBjaGFyYWN0ZXJzIChvbiBhIGNoYXJhY3Rl
ci1ieS1jaGFyYWN0ZXIgYmFzaXMpLgogICAgIC8vIEZJWE1FOiBUaGUgQ1NTIHNwZWMgc2F5cyB0
aGlzIHNob3VsZCBpbnN0ZWFkIGJlIGRvbmUgYnkgdGhlIHVzZXItYWdlbnQgc3R5bGVzaGVldCB1
c2luZyB0aGUgbGFuZz0gYXR0cmlidXRlLgogICAgIFVDaGFyMzIgYmFzZUNoYXJhY3RlcjsKLSAg
ICBhdXRvIG9mZnNldEluU3RyaW5nID0gZ2x5cGhCdWZmZXIuc3RyaW5nT2Zmc2V0QXQoaW5kZXgp
OwotCi0gICAgR2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQgdGV4dFJ1bkxlbmd0aCA9IHRleHRSdW4u
bGVuZ3RoKCk7Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihv
ZmZzZXRJblN0cmluZyA8IHRleHRSdW5MZW5ndGgpOworICAgIGF1dG8gb2Zmc2V0SW5TdHJpbmcg
PSBnbHlwaEJ1ZmZlci5jaGVja2VkU3RyaW5nT2Zmc2V0QXQoaW5kZXgsIHRleHRSdW4ubGVuZ3Ro
KCkpOworICAgIGlmICghb2Zmc2V0SW5TdHJpbmcpCisgICAgICAgIHJldHVybiBHbHlwaFVuZGVy
bGluZVR5cGU6OlNraXBEZXNjZW5kZXJzOwogICAgIAogICAgIGlmICh0ZXh0UnVuLmlzOEJpdCgp
KQotICAgICAgICBiYXNlQ2hhcmFjdGVyID0gdGV4dFJ1bi5jaGFyYWN0ZXJzOCgpW29mZnNldElu
U3RyaW5nXTsKKyAgICAgICAgYmFzZUNoYXJhY3RlciA9IHRleHRSdW4uY2hhcmFjdGVyczgoKVtv
ZmZzZXRJblN0cmluZy52YWx1ZSgpXTsKICAgICBlbHNlCi0gICAgICAgIFUxNl9HRVQodGV4dFJ1
bi5jaGFyYWN0ZXJzMTYoKSwgMCwgb2Zmc2V0SW5TdHJpbmcsIHRleHRSdW5MZW5ndGgsIGJhc2VD
aGFyYWN0ZXIpOworICAgICAgICBVMTZfR0VUKHRleHRSdW4uY2hhcmFjdGVyczE2KCksIDAsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihvZmZzZXRJblN0cmluZy52YWx1ZSgpKSwgdGV4dFJ1bi5sZW5n
dGgoKSwgYmFzZUNoYXJhY3Rlcik7CiAgICAgCiAgICAgLy8gdV9nZXRJbnRQcm9wZXJ0eVZhbHVl
IHdpdGggVUNIQVJfSURFT0dSQVBISUMgZG9lc24ndCByZXR1cm4gdHJ1ZSBmb3IgSmFwYW5lc2Ug
b3IgS29yZWFuIGNvZGVwb2ludHMuCiAgICAgLy8gSW5zdGVhZCwgd2UgY2FuIHVzZSB0aGUgIlVu
aWNvZGUgYWxsb2NhdGlvbiBibG9jayIgZm9yIHRoZSBjaGFyYWN0ZXIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAppbmRleCA4Mzc4NzMwYzgzNzVm
YWE2NTQyNDY1NmU5NDg0OTkxZWY4YzRhZGQ3Li45YWQxOWM3YTRmNTQyNjBlMWEwODliZTAxODhi
OTJlMjBiZTQ4OTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HbHlwaEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ds
eXBoQnVmZmVyLmgKQEAgLTc0LDcgKzc0LDE0IEBAIHB1YmxpYzoKICAgICBHbHlwaCBnbHlwaEF0
KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2dseXBoc1tpbmRleF07IH0KICAgICBH
bHlwaEJ1ZmZlckFkdmFuY2UgYWR2YW5jZUF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVy
biBtX2FkdmFuY2VzW2luZGV4XTsgfQogICAgIEdseXBoQnVmZmVyT3JpZ2luIG9yaWdpbkF0KHVu
c2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX29yaWdpbnNbaW5kZXhdOyB9Ci0gICAgR2x5
cGhCdWZmZXJTdHJpbmdPZmZzZXQgc3RyaW5nT2Zmc2V0QXQodW5zaWduZWQgaW5kZXgpIGNvbnN0
IHsgcmV0dXJuIG1fb2Zmc2V0c0luU3RyaW5nW2luZGV4XTsgfQorICAgIEdseXBoQnVmZmVyU3Ry
aW5nT2Zmc2V0IHVuY2hlY2tlZFN0cmluZ09mZnNldEF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7
IHJldHVybiBtX29mZnNldHNJblN0cmluZ1tpbmRleF07IH0KKyAgICBPcHRpb25hbDxHbHlwaEJ1
ZmZlclN0cmluZ09mZnNldD4gY2hlY2tlZFN0cmluZ09mZnNldEF0KHVuc2lnbmVkIGluZGV4LCB1
bnNpZ25lZCBzdHJpbmdMZW5ndGgpIGNvbnN0CisgICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9
IHVuY2hlY2tlZFN0cmluZ09mZnNldEF0KGluZGV4KTsKKyAgICAgICAgaWYgKHJlc3VsdCA8IDAg
fHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3VsdCkgPj0gc3RyaW5nTGVuZ3RoKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CiAKICAgICB2b2lkIHNldEluaXRpYWxBZHZhbmNlKEdseXBoQnVmZmVyQWR2YW5jZSBpbml0aWFs
QWR2YW5jZSkgeyBtX2luaXRpYWxBZHZhbmNlID0gaW5pdGlhbEFkdmFuY2U7IH0KICAgICBjb25z
dCBHbHlwaEJ1ZmZlckFkdmFuY2UmIGluaXRpYWxBZHZhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9p
bml0aWFsQWR2YW5jZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvV2lkdGhJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aEl0ZXJhdG9yLmNwcAppbmRleCBhYWZhMWFiYzU0ZWQwNjJmOGU2M2FhY2FiMGZhNjYx
MGFmZjkzYTdiLi5kYWM0ZTZmMDk2NWNmOTA5ZDg2MjRmYWFkMjE3NzQ4NDQyZDg3MjQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNw
cApAQCAtMTE1LDcgKzExNSw3IEBAIGlubGluZSBmbG9hdCBXaWR0aEl0ZXJhdG9yOjphcHBseUZv
bnRUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduCiAgICAgfQogCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbGFzdEdseXBoQ291bnQ7IGkgPCBnbHlwaEJ1ZmZlclNpemU7
ICsraSkgewotICAgICAgICBhdXRvIGNoYXJhY3RlckluZGV4ID0gZ2x5cGhCdWZmZXIuc3RyaW5n
T2Zmc2V0QXQoaSk7CisgICAgICAgIGF1dG8gY2hhcmFjdGVySW5kZXggPSBnbHlwaEJ1ZmZlci51
bmNoZWNrZWRTdHJpbmdPZmZzZXRBdChpKTsKICAgICAgICAgYXV0byBpdGVyYXRvciA9IHN0ZDo6
bG93ZXJfYm91bmQoY2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlLmJlZ2luKCksIGNoYXJhY3RlcnNU
cmVhdGVkQXNTcGFjZS5lbmQoKSwgY2hhcmFjdGVySW5kZXgsIFtdKGNvbnN0IE9yaWdpbmFsQWR2
YW5jZXNGb3JDaGFyYWN0ZXJUcmVhdGVkQXNTcGFjZSYgbCwgR2x5cGhCdWZmZXJTdHJpbmdPZmZz
ZXQgcikgLT4gYm9vbCB7CiAgICAgICAgICAgICByZXR1cm4gbC5zdHJpbmdPZmZzZXQgPCByOwog
ICAgICAgICB9KTsKQEAgLTM5NSw5ICszOTUsMTEgQEAgdm9pZCBXaWR0aEl0ZXJhdG9yOjphcHBs
eUV4dHJhU3BhY2luZ0FmdGVyU2hhcGluZyhHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2kK
ICAgICBWZWN0b3I8T3B0aW9uYWw8R2x5cGhJbmRleFJhbmdlPj4gY2hhcmFjdGVySW5kZXhUb0ds
eXBoSW5kZXhSYW5nZShtX3J1bi5sZW5ndGgoKSwgV1RGOjpudWxsb3B0KTsKICAgICBWZWN0b3I8
ZmxvYXQ+IGFkdmFuY2VXaWR0aHMobV9ydW4ubGVuZ3RoKCksIDApOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IGdseXBoQnVmZmVyU3RhcnRJbmRleDsgaSA8IGdseXBoQnVmZmVyLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIGF1dG8gc3RyaW5nT2Zmc2V0ID0gZ2x5cGhCdWZmZXIuc3RyaW5nT2Zmc2V0
QXQoaSk7Ci0gICAgICAgIGFkdmFuY2VXaWR0aHNbc3RyaW5nT2Zmc2V0XSArPSB3aWR0aChnbHlw
aEJ1ZmZlci5hZHZhbmNlQXQoaSkpOwotICAgICAgICBhdXRvJiBnbHlwaEluZGV4UmFuZ2UgPSBj
aGFyYWN0ZXJJbmRleFRvR2x5cGhJbmRleFJhbmdlW3N0cmluZ09mZnNldF07CisgICAgICAgIGF1
dG8gc3RyaW5nT2Zmc2V0ID0gZ2x5cGhCdWZmZXIuY2hlY2tlZFN0cmluZ09mZnNldEF0KGksIG1f
cnVuLmxlbmd0aCgpKTsKKyAgICAgICAgaWYgKCFzdHJpbmdPZmZzZXQpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgYWR2YW5jZVdpZHRoc1tzdHJpbmdPZmZzZXQudmFsdWUoKV0gKz0g
d2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKTsKKyAgICAgICAgYXV0byYgZ2x5cGhJbmRl
eFJhbmdlID0gY2hhcmFjdGVySW5kZXhUb0dseXBoSW5kZXhSYW5nZVtzdHJpbmdPZmZzZXQudmFs
dWUoKV07CiAgICAgICAgIGlmIChnbHlwaEluZGV4UmFuZ2UpCiAgICAgICAgICAgICBnbHlwaElu
ZGV4UmFuZ2UtPnRyYWlsaW5nR2x5cGhJbmRleCA9IGk7CiAgICAgICAgIGVsc2UKQEAgLTQwOSw5
ICs0MTEsOCBAQCB2b2lkIFdpZHRoSXRlcmF0b3I6OmFwcGx5RXh0cmFTcGFjaW5nQWZ0ZXJTaGFw
aW5nKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaQogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBnbHlwaEJ1ZmZlclN0YXJ0SW5kZXg7IGkgPCBnbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkg
ewogICAgICAgICAgICAgLy8gQWxsIGNoYXJhY3RlcnMnIGFkdmFuY2VzIGdldCBzdHJldGNoZWQs
IGV4Y2VwdCBhcHBhcmVudGx5IHRhYiBjaGFyYWN0ZXJzLi4uCiAgICAgICAgICAgICAvLyBUaGlz
IGRvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlLCBiZWNhdXNlIGV2ZW4gdGFiIGNoYXJhY3RlcnMgZ2V0
IGxldHRlci1zcGFjaW5nLi4uCi0gICAgICAgICAgICBhdXRvIHN0cmluZ09mZnNldCA9IGdseXBo
QnVmZmVyLnN0cmluZ09mZnNldEF0KGkpOwotICAgICAgICAgICAgYXV0byBjaGFyYWN0ZXIgPSBt
X3J1bltzdHJpbmdPZmZzZXRdOwotICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSB0YWJDaGFy
YWN0ZXIpCisgICAgICAgICAgICBhdXRvIHN0cmluZ09mZnNldCA9IGdseXBoQnVmZmVyLmNoZWNr
ZWRTdHJpbmdPZmZzZXRBdChpLCBtX3J1bi5sZW5ndGgoKSk7CisgICAgICAgICAgICBpZiAoc3Ry
aW5nT2Zmc2V0ICYmIG1fcnVuW3N0cmluZ09mZnNldC52YWx1ZSgpXSA9PSB0YWJDaGFyYWN0ZXIp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGF1dG8gY3VycmVudEFk
dmFuY2UgPSB3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>