<?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>212918</bug_id>
          
          <creation_ts>2020-06-08 13:43:58 -0700</creation_ts>
          <short_desc>Extended Color: Switch ColorMac.mm&apos;s nsColor() function over to using TinyLRUCache</short_desc>
          <delta_ts>2020-06-09 07:14:21 -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>1660358</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-08 13:43:58 -0700</bug_when>
    <thetext>Extended Color: Switch ColorMac.mm&apos;s nsColor() function over to using TinyLRUCache</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660361</commentid>
    <comment_count>1</comment_count>
      <attachid>401366</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-08 13:47:15 -0700</bug_when>
    <thetext>Created attachment 401366
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660369</commentid>
    <comment_count>2</comment_count>
      <attachid>401366</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-08 14:11:13 -0700</bug_when>
    <thetext>Comment on attachment 401366
Patch

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

&gt; Source/WebCore/platform/graphics/Color.h:192
&gt; +    bool isExtended() const { return !(m_colorData.simpleColorAndFlags &amp; invalidSimpleColor); }

Not sure there is a benefit to this, but I think this can be constexpr.

&gt; Source/WebCore/platform/graphics/Color.h:195
&gt; +    const SimpleColor asSimple() const;

We might even be able to make this a constexpr if we are willing to move it to the header.

&gt; Source/WebCore/platform/graphics/mac/ColorMac.mm:41
&gt; +    return [NSColor colorWithCGColor:cachedCGColor(color)];

Is there a problem with populating both tiny cache each time? I guess not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660370</commentid>
    <comment_count>3</comment_count>
      <attachid>401366</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-08 14:11:34 -0700</bug_when>
    <thetext>Comment on attachment 401366
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/Color.h:192
&gt;&gt; +    bool isExtended() const { return !(m_colorData.simpleColorAndFlags &amp; invalidSimpleColor); }
&gt; 
&gt; Not sure there is a benefit to this, but I think this can be constexpr.

Really tempting to also add isSimple().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660410</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-08 14:50:56 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 401366 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=401366&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/Color.h:192
&gt; &gt; +    bool isExtended() const { return !(m_colorData.simpleColorAndFlags &amp; invalidSimpleColor); }
&gt; 
&gt; Not sure there is a benefit to this, but I think this can be constexpr.
&gt; 

Currently, you can&apos;t make a constexpr Color at all, if I remember correctly due to the way the m_colorData union is initialized (though I might be misremembering this).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660482</commentid>
    <comment_count>5</comment_count>
      <attachid>401397</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-08 16:29:45 -0700</bug_when>
    <thetext>Created attachment 401397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660486</commentid>
    <comment_count>6</comment_count>
      <attachid>401397</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-08 16:33:03 -0700</bug_when>
    <thetext>Comment on attachment 401397
Patch

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

&gt; Source/WebCore/platform/graphics/mac/ColorMac.mm:142
&gt; +    ASSERT(color.isExtended() || color.asSimple().value());

Do we need to write this assertion? Will TinyLRUCache automatically assert the same thing for us?

&gt; Source/WebCore/platform/graphics/mac/ColorMac.mm:145
&gt; +    return cache.get().get(color).get();

&quot;get, get, get&quot;

Better than &quot;kvetch, kvetch, kvetch&quot; I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660533</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-08 18:28:24 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; Comment on attachment 401397 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=401397&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/mac/ColorMac.mm:142
&gt; &gt; +    ASSERT(color.isExtended() || color.asSimple().value());
&gt; 
&gt; Do we need to write this assertion? Will TinyLRUCache automatically assert
&gt; the same thing for us?

Yeah, it will, by virtue of calling cachedCGColor() which is where I copied this assert from. I am actually not sure it is necessary in either place anymore.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/mac/ColorMac.mm:145
&gt; &gt; +    return cache.get().get(color).get();
&gt; 
&gt; &quot;get, get, get&quot;
&gt; 
&gt; Better than &quot;kvetch, kvetch, kvetch&quot; I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660536</commentid>
    <comment_count>8</comment_count>
      <attachid>401406</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-08 18:45:09 -0700</bug_when>
    <thetext>Created attachment 401406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660682</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-09 07:13:39 -0700</bug_when>
    <thetext>Committed r262790: &lt;https://trac.webkit.org/changeset/262790&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401406.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660683</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-09 07:14:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/64162829&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401366</attachid>
            <date>2020-06-08 13:47:15 -0700</date>
            <delta_ts>2020-06-08 16:29:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212918-20200608134715.patch</filename>
            <type>text/plain</type>
            <size>5267</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjczOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDIwLTA2LTA4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvcjogU3dpdGNo
IENvbG9yTWFjLm1tJ3MgbnNDb2xvcigpIGZ1bmN0aW9uIG92ZXIgdG8gdXNpbmcgVGlueUxSVUNh
Y2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI5
MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6aXNFeHRl
bmRlZCBjb25zdCk6CisgICAgICAgIE1ha2UgYXNTaW1wbGUoKSBwdWJsaWMsIHNvIG5zQ29sb3Io
KSBjYW4gdXNlIGl0LiBUaGlzIGFsc28gYWxsb3dzIHVzIHRvIHVuZnJpZW5kIGNhY2hlZENHQ29s
b3IoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbToKKyAg
ICAgICAgKFdURjo6UmV0YWluUHRyPE5TQ29sb3I+Pjo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAg
ICAgICAoV2ViQ29yZTo6bnNDb2xvcik6CisgICAgICAgIE1pbWljIHRoZSBzdHJ1Y3R1cmUgb2Yg
Y2FjaGVkQ0dDb2xvcigpIGJ5IHN3aXRjaGluZyBvdmVyIHNpbXBsZUNvbG9yIHZhbHVlcyBmb3Ig
Y29tbW9uCisgICAgICAgIGNvbG9ycyBhbmQgdXNpbmcgYSAzMiB2YWx1ZSBUaW55TFJVQ2FjaGUg
Zm9yIHRoZSByZXN0LgorCiAyMDIwLTA2LTA4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0lQQ10gQWRvcHQgZW51bSBjbGFzcyBmb3IgRHJhZ09wZXJhdGlv
bgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lv
biAyNjI3MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzIsNyArMTcyLDYgQEAgcHVibGljOgogI2lmIFVTRShDRykKICAg
ICBXRUJDT1JFX0VYUE9SVCBDb2xvcihDR0NvbG9yUmVmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBD
b2xvcihDR0NvbG9yUmVmLCBTZW1hbnRpY1RhZyk7Ci0gICAgZnJpZW5kIFdFQkNPUkVfRVhQT1JU
IENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYpOwogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShXSU4pCkBAIC0xOTAsMTEgKzE4OSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBTaW1wbGVDb2xvciBjeWFuIHsgMHhGRjAwRkZGRiB9OwogICAgIHN0YXRpYyBjb25z
dGV4cHIgU2ltcGxlQ29sb3IgeWVsbG93IHsgMHhGRkZGRkYwMCB9OwogCi0gICAgYm9vbCBpc0V4
dGVuZGVkKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKG1fY29sb3JEYXRhLnNpbXBs
ZUNvbG9yQW5kRmxhZ3MgJiBpbnZhbGlkU2ltcGxlQ29sb3IpOwotICAgIH0KKyAgICBib29sIGlz
RXh0ZW5kZWQoKSBjb25zdCB7IHJldHVybiAhKG1fY29sb3JEYXRhLnNpbXBsZUNvbG9yQW5kRmxh
Z3MgJiBpbnZhbGlkU2ltcGxlQ29sb3IpOyB9CisKICAgICBjb25zdCBFeHRlbmRlZENvbG9yJiBh
c0V4dGVuZGVkKCkgY29uc3Q7CisgICAgY29uc3QgU2ltcGxlQ29sb3IgYXNTaW1wbGUoKSBjb25z
dDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yJiBvcGVyYXRvcj0oY29uc3QgQ29sb3ImKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciYgb3BlcmF0b3I9KENvbG9yJiYpOwpAQCAtMjExLDgg
KzIwOSw2IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8Q29sb3I+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgU2lt
cGxlQ29sb3IgYXNTaW1wbGUoKSBjb25zdDsKLQogICAgIHZvaWQgc2V0U2ltcGxlQ29sb3IoU2lt
cGxlQ29sb3IpOwogCiAgICAgdm9pZCB0YWdBc1NlbWFudGljKCkgeyBtX2NvbG9yRGF0YS5zaW1w
bGVDb2xvckFuZEZsYWdzIHw9IGlzU2VtYW50aWNTaW1wbGVDb2xvckJpdDsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQkocmV2
aXNpb24gMjYyNzM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiwxNiBAQAogI2ltcG9ydCA8d3Rm
L0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgor
I2ltcG9ydCA8d3RmL1RpbnlMUlVDYWNoZS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxh
dGU8PiBSZXRhaW5QdHI8TlNDb2xvcj4gVGlueUxSVUNhY2hlUG9saWN5PFdlYkNvcmU6OkNvbG9y
LCBSZXRhaW5QdHI8TlNDb2xvcj4+OjpjcmVhdGVWYWx1ZUZvcktleShjb25zdCBXZWJDb3JlOjpD
b2xvciYgY29sb3IpCit7CisgICAgcmV0dXJuIFtOU0NvbG9yIGNvbG9yV2l0aENHQ29sb3I6Y2Fj
aGVkQ0dDb2xvcihjb2xvcildOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0xMTMsNDMgKzEyMiwyOSBAQCBDb2xvciBzZW1hbnRpY0NvbG9yRnJv
bU5TQ29sb3IoTlNDb2xvciAqCiAKIE5TQ29sb3IgKm5zQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQogewotICAgIGlmICghY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIC8vIE5lZWQgdGhpcyB0
byBhdm9pZCByZXR1cm5pbmcgbmlsIGJlY2F1c2UgY2FjaGVkUkdCQVZhbHVlcyB3aWxsIGRlZmF1
bHQgdG8gMC4KLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE5TQ29sb3IgKj4gY2xlYXJD
b2xvciA9IFtbTlNDb2xvciBjb2xvcldpdGhTUkdCUmVkOjAgZ3JlZW46MCBibHVlOjAgYWxwaGE6
MF0gcmV0YWluXTsKLSAgICAgICAgcmV0dXJuIGNsZWFyQ29sb3I7Ci0gICAgfQotCi0gICAgaWYg
KENvbG9yOjppc0JsYWNrQ29sb3IoY29sb3IpKSB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxOU0NvbG9yICo+IGJsYWNrQ29sb3IgPSBbW05TQ29sb3IgY29sb3JXaXRoU1JHQlJlZDow
IGdyZWVuOjAgYmx1ZTowIGFscGhhOjFdIHJldGFpbl07Ci0gICAgICAgIHJldHVybiBibGFja0Nv
bG9yOwotICAgIH0KLQotICAgIGlmIChDb2xvcjo6aXNXaGl0ZUNvbG9yKGNvbG9yKSkgewotICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TlNDb2xvciAqPiB3aGl0ZUNvbG9yID0gW1tOU0Nv
bG9yIGNvbG9yV2l0aFNSR0JSZWQ6MSBncmVlbjoxIGJsdWU6MSBhbHBoYToxXSByZXRhaW5dOwot
ICAgICAgICByZXR1cm4gd2hpdGVDb2xvcjsKKyAgICBpZiAoIWNvbG9yLmlzRXh0ZW5kZWQoKSkg
eworICAgICAgICBzd2l0Y2ggKGNvbG9yLmFzU2ltcGxlKCkudmFsdWUoKSkgeworICAgICAgICBj
YXNlIENvbG9yOjp0cmFuc3BhcmVudC52YWx1ZSgpOiB7CisgICAgICAgICAgICBzdGF0aWMgTlND
b2xvciAqY2xlYXJDb2xvciA9IFtbTlNDb2xvciBjb2xvcldpdGhTUkdCUmVkOjAgZ3JlZW46MCBi
bHVlOjAgYWxwaGE6MF0gcmV0YWluXTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhckNvbG9yOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgQ29sb3I6OmJsYWNrLnZhbHVlKCk6IHsKKyAgICAgICAg
ICAgIHN0YXRpYyBOU0NvbG9yICpibGFja0NvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aFNSR0JS
ZWQ6MCBncmVlbjowIGJsdWU6MCBhbHBoYToxXSByZXRhaW5dOworICAgICAgICAgICAgcmV0dXJu
IGJsYWNrQ29sb3I7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBDb2xvcjo6d2hpdGUudmFsdWUo
KTogeworICAgICAgICAgICAgc3RhdGljIE5TQ29sb3IgKndoaXRlQ29sb3IgPSBbW05TQ29sb3Ig
Y29sb3JXaXRoU1JHQlJlZDoxIGdyZWVuOjEgYmx1ZToxIGFscGhhOjFdIHJldGFpbl07CisgICAg
ICAgICAgICByZXR1cm4gd2hpdGVDb2xvcjsKKyAgICAgICAgfQorICAgICAgICB9CiAgICAgfQog
Ci0gICAgY29uc3QgaW50IGNhY2hlU2l6ZSA9IDMyOwotICAgIHN0YXRpYyB1bnNpZ25lZCBjYWNo
ZWRSR0JBVmFsdWVzW2NhY2hlU2l6ZV07Ci0gICAgc3RhdGljIFJldGFpblB0cjxOU0NvbG9yPiog
Y2FjaGVkQ29sb3JzID0gbmV3IFJldGFpblB0cjxOU0NvbG9yPltjYWNoZVNpemVdOwotCi0gICAg
dW5zaWduZWQgaGFzaCA9IGNvbG9yLmhhc2goKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGNh
Y2hlU2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChjYWNoZWRSR0JBVmFsdWVzW2ldID09IGhhc2gp
Ci0gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ29sb3JzW2ldLmdldCgpOwotICAgIH0KLQotICAg
IE5TQ29sb3IgKnJlc3VsdCA9IFtOU0NvbG9yIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xv
cihjb2xvcildOworICAgIEFTU0VSVChjb2xvci5pc0V4dGVuZGVkKCkgfHwgY29sb3IuYXNTaW1w
bGUoKS52YWx1ZSgpKTsKIAotICAgIHN0YXRpYyBpbnQgY3Vyc29yOwotICAgIGNhY2hlZFJHQkFW
YWx1ZXNbY3Vyc29yXSA9IGhhc2g7Ci0gICAgY2FjaGVkQ29sb3JzW2N1cnNvcl0gPSByZXN1bHQ7
Ci0gICAgaWYgKCsrY3Vyc29yID09IGNhY2hlU2l6ZSkKLSAgICAgICAgY3Vyc29yID0gMDsKLSAg
ICByZXR1cm4gcmVzdWx0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8
Q29sb3IsIFJldGFpblB0cjxOU0NvbG9yPiwgMzI+PiBjYWNoZTsKKyAgICByZXR1cm4gY2FjaGUu
Z2V0KCkuZ2V0KGNvbG9yKS5nZXQoKTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBVU0UoQVBQS0lUKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401397</attachid>
            <date>2020-06-08 16:29:45 -0700</date>
            <delta_ts>2020-06-08 18:45:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212918-20200608162944.patch</filename>
            <type>text/plain</type>
            <size>7480</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mjc0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDIwLTA2LTA4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvcjogU3dpdGNo
IENvbG9yTWFjLm1tJ3MgbnNDb2xvcigpIGZ1bmN0aW9uIG92ZXIgdG8gdXNpbmcgVGlueUxSVUNh
Y2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI5
MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6aXNFeHRl
bmRlZCBjb25zdCk6CisgICAgICAgIE1ha2UgYXNTaW1wbGUoKSBwdWJsaWMsIHNvIG5zQ29sb3Io
KSBjYW4gdXNlIGl0LiBUaGlzIGFsc28gYWxsb3dzIHVzIHRvIHVuZnJpZW5kIGNhY2hlZENHQ29s
b3IoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbToKKyAg
ICAgICAgKFdURjo6UmV0YWluUHRyPE5TQ29sb3I+Pjo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAg
ICAgICAoV2ViQ29yZTo6bnNDb2xvcik6CisgICAgICAgIE1pbWljIHRoZSBzdHJ1Y3R1cmUgb2Yg
Y2FjaGVkQ0dDb2xvcigpIGJ5IHN3aXRjaGluZyBvdmVyIHNpbXBsZUNvbG9yIHZhbHVlcyBmb3Ig
Y29tbW9uCisgICAgICAgIGNvbG9ycyBhbmQgdXNpbmcgYSAzMiB2YWx1ZSBUaW55TFJVQ2FjaGUg
Zm9yIHRoZSByZXN0LgorCiAyMDIwLTA2LTA4ICBQaW5raSBHeWFuY2hhbmRhbmkgIDxwZ3lhbmNo
YW5kYW5pQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWxlYXNlIEFzc2VydCBAIFdlYkNvcmU6OlJl
bmRlclRyZWVCdWlsZGVyOjpSZW5kZXJUcmVlQnVpbGRlcgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNpb24gMjYyNzQ3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDMsNyArMTAzLDcgQEAgU3RyaW5nIENvbG9yOjpuYW1lRm9yUmVuZGVyVHJlZUFzVGV4dCgpIAog
Q29sb3IgQ29sb3I6OmxpZ2h0ZW4oKSBjb25zdAogewogICAgIC8vIEhhcmRjb2RlIHRoaXMgY29t
bW9uIGNhc2UgZm9yIHNwZWVkLgotICAgIGlmICghaXNFeHRlbmRlZCgpICYmIGFzU2ltcGxlKCkg
PT0gYmxhY2spCisgICAgaWYgKGlzU2ltcGxlKCkgJiYgYXNTaW1wbGUoKSA9PSBibGFjaykKICAg
ICAgICAgcmV0dXJuIGxpZ2h0ZW5lZEJsYWNrOwogCiAgICAgYXV0byBbciwgZywgYiwgYV0gPSB0
b1NSR0JBQ29tcG9uZW50c0xvc3N5KCk7CkBAIC0xMjAsNyArMTIwLDcgQEAgQ29sb3IgQ29sb3I6
OmxpZ2h0ZW4oKSBjb25zdAogQ29sb3IgQ29sb3I6OmRhcmtlbigpIGNvbnN0CiB7CiAgICAgLy8g
SGFyZGNvZGUgdGhpcyBjb21tb24gY2FzZSBmb3Igc3BlZWQuCi0gICAgaWYgKCFpc0V4dGVuZGVk
KCkgJiYgYXNTaW1wbGUoKSA9PSB3aGl0ZSkKKyAgICBpZiAoaXNTaW1wbGUoKSAmJiBhc1NpbXBs
ZSgpID09IHdoaXRlKQogICAgICAgICByZXR1cm4gZGFya2VuZWRXaGl0ZTsKICAgICAKICAgICBh
dXRvIFtyLCBnLCBiLCBhXSA9IHRvU1JHQkFDb21wb25lbnRzTG9zc3koKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAkocmV2aXNpb24gMjYyNzQ3KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMTYyLDcgKzE2Miw3IEBAIHB1YmxpYzoKICAgICBDb2xvciBzZW1hbnRpY0NvbG9yKCkgY29u
c3Q7CiAKICAgICAvLyBUcnVlIGlmIHRoZSBjb2xvciBvcmlnaW5hdGVkIGZyb20gYSBDU1Mgc2Vt
YW50aWMgY29sb3IgbmFtZS4KLSAgICBib29sIGlzU2VtYW50aWMoKSBjb25zdCB7IHJldHVybiAh
aXNFeHRlbmRlZCgpICYmIChtX2NvbG9yRGF0YS5zaW1wbGVDb2xvckFuZEZsYWdzICYgaXNTZW1h
bnRpY1NpbXBsZUNvbG9yQml0KTsgfQorICAgIGJvb2wgaXNTZW1hbnRpYygpIGNvbnN0IHsgcmV0
dXJuIGlzU2ltcGxlKCkgJiYgKG1fY29sb3JEYXRhLnNpbXBsZUNvbG9yQW5kRmxhZ3MgJiBpc1Nl
bWFudGljU2ltcGxlQ29sb3JCaXQpOyB9CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgQ29sb3Io
Y29uc3QgR2RrUkdCQSYpOwpAQCAtMTcyLDcgKzE3Miw2IEBAIHB1YmxpYzoKICNpZiBVU0UoQ0cp
CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IoQ0dDb2xvclJlZik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgQ29sb3IoQ0dDb2xvclJlZiwgU2VtYW50aWNUYWcpOwotICAgIGZyaWVuZCBXRUJDT1JFX0VY
UE9SVCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImKTsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oV0lOKQpAQCAtMTkwLDExICsxODksMTEgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgY3lhbiB7IDB4RkYwMEZGRkYgfTsKICAgICBzdGF0aWMg
Y29uc3RleHByIFNpbXBsZUNvbG9yIHllbGxvdyB7IDB4RkZGRkZGMDAgfTsKIAotICAgIGJvb2wg
aXNFeHRlbmRlZCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gIShtX2NvbG9yRGF0YS5z
aW1wbGVDb2xvckFuZEZsYWdzICYgaW52YWxpZFNpbXBsZUNvbG9yKTsKLSAgICB9CisgICAgYm9v
bCBpc0V4dGVuZGVkKCkgY29uc3QgeyByZXR1cm4gIShtX2NvbG9yRGF0YS5zaW1wbGVDb2xvckFu
ZEZsYWdzICYgaW52YWxpZFNpbXBsZUNvbG9yKTsgfQorICAgIGJvb2wgaXNTaW1wbGUoKSBjb25z
dCB7IHJldHVybiAhaXNFeHRlbmRlZCgpOyB9CisKICAgICBjb25zdCBFeHRlbmRlZENvbG9yJiBh
c0V4dGVuZGVkKCkgY29uc3Q7CisgICAgY29uc3QgU2ltcGxlQ29sb3IgYXNTaW1wbGUoKSBjb25z
dDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yJiBvcGVyYXRvcj0oY29uc3QgQ29sb3ImKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciYgb3BlcmF0b3I9KENvbG9yJiYpOwpAQCAtMjExLDgg
KzIxMCw2IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8Q29sb3I+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgU2lt
cGxlQ29sb3IgYXNTaW1wbGUoKSBjb25zdDsKLQogICAgIHZvaWQgc2V0U2ltcGxlQ29sb3IoU2lt
cGxlQ29sb3IpOwogCiAgICAgdm9pZCB0YWdBc1NlbWFudGljKCkgeyBtX2NvbG9yRGF0YS5zaW1w
bGVDb2xvckFuZEZsYWdzIHw9IGlzU2VtYW50aWNTaW1wbGVDb2xvckJpdDsgfQpAQCAtMzE2LDcg
KzMxMyw3IEBAIGlubGluZSBjb25zdCBFeHRlbmRlZENvbG9yJiBDb2xvcjo6YXNFeHQKIAogaW5s
aW5lIGNvbnN0IFNpbXBsZUNvbG9yIENvbG9yOjphc1NpbXBsZSgpIGNvbnN0CiB7Ci0gICAgQVNT
RVJUKCFpc0V4dGVuZGVkKCkpOworICAgIEFTU0VSVChpc1NpbXBsZSgpKTsKICAgICByZXR1cm4g
eyBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9jb2xvckRhdGEuc2ltcGxlQ29sb3JBbmRGbGFncyA+
PiAzMikgfTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Q29sb3JDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JDRy5jcHAJKHJldmlzaW9uIDI2Mjc0NykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyAr
MTI4LDcgQEAgc3RhdGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sbwogCiBDR0Nv
bG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAgIGlmICghY29s
b3IuaXNFeHRlbmRlZCgpKSB7CisgICAgaWYgKGNvbG9yLmlzU2ltcGxlKCkpIHsKICAgICAgICAg
c3dpdGNoIChjb2xvci5hc1NpbXBsZSgpLnZhbHVlKCkpIHsKICAgICAgICAgY2FzZSBDb2xvcjo6
dHJhbnNwYXJlbnQudmFsdWUoKTogewogICAgICAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgdHJh
bnNwYXJlbnRDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQkocmV2aXNpb24gMjYy
NzQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiwxNiBAQAogI2ltcG9ydCA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgotI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8
d3RmL1RpbnlMUlVDYWNoZS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBSZXRh
aW5QdHI8TlNDb2xvcj4gVGlueUxSVUNhY2hlUG9saWN5PFdlYkNvcmU6OkNvbG9yLCBSZXRhaW5Q
dHI8TlNDb2xvcj4+OjpjcmVhdGVWYWx1ZUZvcktleShjb25zdCBXZWJDb3JlOjpDb2xvciYgY29s
b3IpCit7CisgICAgcmV0dXJuIFtOU0NvbG9yIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xv
cihjb2xvcildOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0xMTMsNDMgKzEyMiwyOSBAQCBDb2xvciBzZW1hbnRpY0NvbG9yRnJvbU5TQ29sb3Io
TlNDb2xvciAqCiAKIE5TQ29sb3IgKm5zQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAg
IGlmICghY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIC8vIE5lZWQgdGhpcyB0byBhdm9pZCBy
ZXR1cm5pbmcgbmlsIGJlY2F1c2UgY2FjaGVkUkdCQVZhbHVlcyB3aWxsIGRlZmF1bHQgdG8gMC4K
LSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE5TQ29sb3IgKj4gY2xlYXJDb2xvciA9IFtb
TlNDb2xvciBjb2xvcldpdGhTUkdCUmVkOjAgZ3JlZW46MCBibHVlOjAgYWxwaGE6MF0gcmV0YWlu
XTsKLSAgICAgICAgcmV0dXJuIGNsZWFyQ29sb3I7Ci0gICAgfQotCi0gICAgaWYgKENvbG9yOjpp
c0JsYWNrQ29sb3IoY29sb3IpKSB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxOU0Nv
bG9yICo+IGJsYWNrQ29sb3IgPSBbW05TQ29sb3IgY29sb3JXaXRoU1JHQlJlZDowIGdyZWVuOjAg
Ymx1ZTowIGFscGhhOjFdIHJldGFpbl07Ci0gICAgICAgIHJldHVybiBibGFja0NvbG9yOwotICAg
IH0KLQotICAgIGlmIChDb2xvcjo6aXNXaGl0ZUNvbG9yKGNvbG9yKSkgewotICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8TlNDb2xvciAqPiB3aGl0ZUNvbG9yID0gW1tOU0NvbG9yIGNvbG9y
V2l0aFNSR0JSZWQ6MSBncmVlbjoxIGJsdWU6MSBhbHBoYToxXSByZXRhaW5dOwotICAgICAgICBy
ZXR1cm4gd2hpdGVDb2xvcjsKKyAgICBpZiAoY29sb3IuaXNTaW1wbGUoKSgpKSB7CisgICAgICAg
IHN3aXRjaCAoY29sb3IuYXNTaW1wbGUoKS52YWx1ZSgpKSB7CisgICAgICAgIGNhc2UgQ29sb3I6
OnRyYW5zcGFyZW50LnZhbHVlKCk6IHsKKyAgICAgICAgICAgIHN0YXRpYyBOU0NvbG9yICpjbGVh
ckNvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MCBncmVlbjowIGJsdWU6MCBhbHBo
YTowXSByZXRhaW5dOworICAgICAgICAgICAgcmV0dXJuIGNsZWFyQ29sb3I7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBDb2xvcjo6YmxhY2sudmFsdWUoKTogeworICAgICAgICAgICAgc3RhdGlj
IE5TQ29sb3IgKmJsYWNrQ29sb3IgPSBbW05TQ29sb3IgY29sb3JXaXRoU1JHQlJlZDowIGdyZWVu
OjAgYmx1ZTowIGFscGhhOjFdIHJldGFpbl07CisgICAgICAgICAgICByZXR1cm4gYmxhY2tDb2xv
cjsKKyAgICAgICAgfQorICAgICAgICBjYXNlIENvbG9yOjp3aGl0ZS52YWx1ZSgpOiB7CisgICAg
ICAgICAgICBzdGF0aWMgTlNDb2xvciAqd2hpdGVDb2xvciA9IFtbTlNDb2xvciBjb2xvcldpdGhT
UkdCUmVkOjEgZ3JlZW46MSBibHVlOjEgYWxwaGE6MV0gcmV0YWluXTsKKyAgICAgICAgICAgIHJl
dHVybiB3aGl0ZUNvbG9yOworICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKLSAgICBjb25z
dCBpbnQgY2FjaGVTaXplID0gMzI7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGNhY2hlZFJHQkFWYWx1
ZXNbY2FjaGVTaXplXTsKLSAgICBzdGF0aWMgUmV0YWluUHRyPE5TQ29sb3I+KiBjYWNoZWRDb2xv
cnMgPSBuZXcgUmV0YWluUHRyPE5TQ29sb3I+W2NhY2hlU2l6ZV07Ci0KLSAgICB1bnNpZ25lZCBo
YXNoID0gY29sb3IuaGFzaCgpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2FjaGVTaXplOyAr
K2kpIHsKLSAgICAgICAgaWYgKGNhY2hlZFJHQkFWYWx1ZXNbaV0gPT0gaGFzaCkKLSAgICAgICAg
ICAgIHJldHVybiBjYWNoZWRDb2xvcnNbaV0uZ2V0KCk7Ci0gICAgfQotCi0gICAgTlNDb2xvciAq
cmVzdWx0ID0gW05TQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yKV07
CisgICAgQVNTRVJUKGNvbG9yLmlzRXh0ZW5kZWQoKSB8fCBjb2xvci5hc1NpbXBsZSgpLnZhbHVl
KCkpOwogCi0gICAgc3RhdGljIGludCBjdXJzb3I7Ci0gICAgY2FjaGVkUkdCQVZhbHVlc1tjdXJz
b3JdID0gaGFzaDsKLSAgICBjYWNoZWRDb2xvcnNbY3Vyc29yXSA9IHJlc3VsdDsKLSAgICBpZiAo
KytjdXJzb3IgPT0gY2FjaGVTaXplKQotICAgICAgICBjdXJzb3IgPSAwOwotICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRpbnlMUlVDYWNoZTxDb2xvciwgUmV0
YWluUHRyPE5TQ29sb3I+LCAzMj4+IGNhY2hlOworICAgIHJldHVybiBjYWNoZS5nZXQoKS5nZXQo
Y29sb3IpLmdldCgpOwogfQogCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IFVTRShBUFBLSVQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401406</attachid>
            <date>2020-06-08 18:45:09 -0700</date>
            <delta_ts>2020-06-09 07:13:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212918-20200608184508.patch</filename>
            <type>text/plain</type>
            <size>7440</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mjc2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDIwLTA2LTA4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvcjogU3dpdGNo
IENvbG9yTWFjLm1tJ3MgbnNDb2xvcigpIGZ1bmN0aW9uIG92ZXIgdG8gdXNpbmcgVGlueUxSVUNh
Y2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI5
MTgKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6aXNFeHRlbmRl
ZCBjb25zdCk6CisgICAgICAgIE1ha2UgYXNTaW1wbGUoKSBwdWJsaWMsIHNvIG5zQ29sb3IoKSBj
YW4gdXNlIGl0LiBUaGlzIGFsc28gYWxsb3dzIHVzIHRvIHVuZnJpZW5kIGNhY2hlZENHQ29sb3Io
KS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbToKKyAgICAg
ICAgKFdURjo6UmV0YWluUHRyPE5TQ29sb3I+Pjo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6bnNDb2xvcik6CisgICAgICAgIE1pbWljIHRoZSBzdHJ1Y3R1cmUgb2YgY2Fj
aGVkQ0dDb2xvcigpIGJ5IHN3aXRjaGluZyBvdmVyIHNpbXBsZUNvbG9yIHZhbHVlcyBmb3IgY29t
bW9uCisgICAgICAgIGNvbG9ycyBhbmQgdXNpbmcgYSAzMiB2YWx1ZSBUaW55TFJVQ2FjaGUgZm9y
IHRoZSByZXN0LgorCiAyMDIwLTA2LTA4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4K
IAogICAgICAgICBFeHRlbmRlZCBDb2xvcjogUmVuYW1lIENvbG9yOjpsaWdodGVuKCkgYW5kIENv
bG9yOjpkYXJrZW4oKSB0byBDb2xvcjo6bGlnaHRlbmVkKCkgYW5kIENvbG9yOjpkYXJrZW5lZCgp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCShyZXZp
c2lvbiAyNjI3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBTdHJpbmcgQ29sb3I6Om5hbWVG
b3JSZW5kZXJUcmVlQXNUZXh0KCkgCiBDb2xvciBDb2xvcjo6bGlnaHRlbigpIGNvbnN0CiB7CiAg
ICAgLy8gSGFyZGNvZGUgdGhpcyBjb21tb24gY2FzZSBmb3Igc3BlZWQuCi0gICAgaWYgKCFpc0V4
dGVuZGVkKCkgJiYgYXNTaW1wbGUoKSA9PSBibGFjaykKKyAgICBpZiAoaXNTaW1wbGUoKSAmJiBh
c1NpbXBsZSgpID09IGJsYWNrKQogICAgICAgICByZXR1cm4gbGlnaHRlbmVkQmxhY2s7CiAKICAg
ICBhdXRvIFtyLCBnLCBiLCBhXSA9IHRvU1JHQkFDb21wb25lbnRzTG9zc3koKTsKQEAgLTEyMCw3
ICsxMjAsNyBAQCBDb2xvciBDb2xvcjo6bGlnaHRlbigpIGNvbnN0CiBDb2xvciBDb2xvcjo6ZGFy
a2VuKCkgY29uc3QKIHsKICAgICAvLyBIYXJkY29kZSB0aGlzIGNvbW1vbiBjYXNlIGZvciBzcGVl
ZC4KLSAgICBpZiAoIWlzRXh0ZW5kZWQoKSAmJiBhc1NpbXBsZSgpID09IHdoaXRlKQorICAgIGlm
IChpc1NpbXBsZSgpICYmIGFzU2ltcGxlKCkgPT0gd2hpdGUpCiAgICAgICAgIHJldHVybiBkYXJr
ZW5lZFdoaXRlOwogICAgIAogICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gdG9TUkdCQUNvbXBvbmVu
dHNMb3NzeSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5o
CShyZXZpc2lvbiAyNjI3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNyArMTYyLDcgQEAgcHVibGljOgogICAgIENv
bG9yIHNlbWFudGljQ29sb3IoKSBjb25zdDsKIAogICAgIC8vIFRydWUgaWYgdGhlIGNvbG9yIG9y
aWdpbmF0ZWQgZnJvbSBhIENTUyBzZW1hbnRpYyBjb2xvciBuYW1lLgotICAgIGJvb2wgaXNTZW1h
bnRpYygpIGNvbnN0IHsgcmV0dXJuICFpc0V4dGVuZGVkKCkgJiYgKG1fY29sb3JEYXRhLnNpbXBs
ZUNvbG9yQW5kRmxhZ3MgJiBpc1NlbWFudGljU2ltcGxlQ29sb3JCaXQpOyB9CisgICAgYm9vbCBp
c1NlbWFudGljKCkgY29uc3QgeyByZXR1cm4gaXNTaW1wbGUoKSAmJiAobV9jb2xvckRhdGEuc2lt
cGxlQ29sb3JBbmRGbGFncyAmIGlzU2VtYW50aWNTaW1wbGVDb2xvckJpdCk7IH0KIAogI2lmIFBM
QVRGT1JNKEdUSykKICAgICBDb2xvcihjb25zdCBHZGtSR0JBJik7CkBAIC0xNzIsNyArMTcyLDYg
QEAgcHVibGljOgogI2lmIFVTRShDRykKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvcihDR0NvbG9y
UmVmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvcihDR0NvbG9yUmVmLCBTZW1hbnRpY1RhZyk7
Ci0gICAgZnJpZW5kIFdFQkNPUkVfRVhQT1JUIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25z
dCBDb2xvciYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pCkBAIC0xOTAsMTEgKzE4OSwx
MSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBjeWFuIHsgMHhG
RjAwRkZGRiB9OwogICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgeWVsbG93IHsgMHhG
RkZGRkYwMCB9OwogCi0gICAgYm9vbCBpc0V4dGVuZGVkKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiAhKG1fY29sb3JEYXRhLnNpbXBsZUNvbG9yQW5kRmxhZ3MgJiBpbnZhbGlkU2ltcGxl
Q29sb3IpOwotICAgIH0KKyAgICBib29sIGlzRXh0ZW5kZWQoKSBjb25zdCB7IHJldHVybiAhKG1f
Y29sb3JEYXRhLnNpbXBsZUNvbG9yQW5kRmxhZ3MgJiBpbnZhbGlkU2ltcGxlQ29sb3IpOyB9Cisg
ICAgYm9vbCBpc1NpbXBsZSgpIGNvbnN0IHsgcmV0dXJuICFpc0V4dGVuZGVkKCk7IH0KKwogICAg
IGNvbnN0IEV4dGVuZGVkQ29sb3ImIGFzRXh0ZW5kZWQoKSBjb25zdDsKKyAgICBjb25zdCBTaW1w
bGVDb2xvciBhc1NpbXBsZSgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3ImIG9w
ZXJhdG9yPShjb25zdCBDb2xvciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yJiBvcGVyYXRv
cj0oQ29sb3ImJik7CkBAIC0yMTEsOCArMjEwLDYgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxDb2xvcj4gZGVjb2RlKERlY29kZXImKTsKIAog
cHJpdmF0ZToKLSAgICBjb25zdCBTaW1wbGVDb2xvciBhc1NpbXBsZSgpIGNvbnN0OwotCiAgICAg
dm9pZCBzZXRTaW1wbGVDb2xvcihTaW1wbGVDb2xvcik7CiAKICAgICB2b2lkIHRhZ0FzU2VtYW50
aWMoKSB7IG1fY29sb3JEYXRhLnNpbXBsZUNvbG9yQW5kRmxhZ3MgfD0gaXNTZW1hbnRpY1NpbXBs
ZUNvbG9yQml0OyB9CkBAIC0zMTYsNyArMzEzLDcgQEAgaW5saW5lIGNvbnN0IEV4dGVuZGVkQ29s
b3ImIENvbG9yOjphc0V4dAogCiBpbmxpbmUgY29uc3QgU2ltcGxlQ29sb3IgQ29sb3I6OmFzU2lt
cGxlKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIWlzRXh0ZW5kZWQoKSk7CisgICAgQVNTRVJUKGlz
U2ltcGxlKCkpOwogICAgIHJldHVybiB7IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2NvbG9yRGF0
YS5zaW1wbGVDb2xvckFuZEZsYWdzID4+IDMyKSB9OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAkocmV2aXNpb24gMjYyNzQ3
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgQ0dDb2xvclJlZiBsZWFrQ0dD
b2xvcihjb25zdCBDb2xvCiAKIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYg
Y29sb3IpCiB7Ci0gICAgaWYgKCFjb2xvci5pc0V4dGVuZGVkKCkpIHsKKyAgICBpZiAoY29sb3Iu
aXNTaW1wbGUoKSkgewogICAgICAgICBzd2l0Y2ggKGNvbG9yLmFzU2ltcGxlKCkudmFsdWUoKSkg
ewogICAgICAgICBjYXNlIENvbG9yOjp0cmFuc3BhcmVudC52YWx1ZSgpOiB7CiAgICAgICAgICAg
ICBzdGF0aWMgQ0dDb2xvclJlZiB0cmFuc3BhcmVudENHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xv
cik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bG9yTWFjLm1tCShyZXZpc2lvbiAyNjI3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvQ29sb3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDE2IEBA
CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvVGlueUxSVUNhY2hlLmg+CisKK25hbWVzcGFjZSBX
VEYgeworCit0ZW1wbGF0ZTw+IFJldGFpblB0cjxOU0NvbG9yPiBUaW55TFJVQ2FjaGVQb2xpY3k8
V2ViQ29yZTo6Q29sb3IsIFJldGFpblB0cjxOU0NvbG9yPj46OmNyZWF0ZVZhbHVlRm9yS2V5KGNv
bnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3sKKyAgICByZXR1cm4gW05TQ29sb3IgY29sb3JX
aXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yKV07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdU
RgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExMyw0MyArMTIyLDI3IEBAIENvbG9yIHNl
bWFudGljQ29sb3JGcm9tTlNDb2xvcihOU0NvbG9yICoKIAogTlNDb2xvciAqbnNDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCiB7Ci0gICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkpIHsKLSAgICAgICAg
Ly8gTmVlZCB0aGlzIHRvIGF2b2lkIHJldHVybmluZyBuaWwgYmVjYXVzZSBjYWNoZWRSR0JBVmFs
dWVzIHdpbGwgZGVmYXVsdCB0byAwLgotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TlND
b2xvciAqPiBjbGVhckNvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MCBncmVlbjow
IGJsdWU6MCBhbHBoYTowXSByZXRhaW5dOwotICAgICAgICByZXR1cm4gY2xlYXJDb2xvcjsKLSAg
ICB9Ci0KLSAgICBpZiAoQ29sb3I6OmlzQmxhY2tDb2xvcihjb2xvcikpIHsKLSAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPE5TQ29sb3IgKj4gYmxhY2tDb2xvciA9IFtbTlNDb2xvciBjb2xv
cldpdGhTUkdCUmVkOjAgZ3JlZW46MCBibHVlOjAgYWxwaGE6MV0gcmV0YWluXTsKLSAgICAgICAg
cmV0dXJuIGJsYWNrQ29sb3I7CisgICAgaWYgKGNvbG9yLmlzU2ltcGxlKCkpIHsKKyAgICAgICAg
c3dpdGNoIChjb2xvci5hc1NpbXBsZSgpLnZhbHVlKCkpIHsKKyAgICAgICAgY2FzZSBDb2xvcjo6
dHJhbnNwYXJlbnQudmFsdWUoKTogeworICAgICAgICAgICAgc3RhdGljIE5TQ29sb3IgKmNsZWFy
Q29sb3IgPSBbW05TQ29sb3IgY29sb3JXaXRoU1JHQlJlZDowIGdyZWVuOjAgYmx1ZTowIGFscGhh
OjBdIHJldGFpbl07CisgICAgICAgICAgICByZXR1cm4gY2xlYXJDb2xvcjsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIENvbG9yOjpibGFjay52YWx1ZSgpOiB7CisgICAgICAgICAgICBzdGF0aWMg
TlNDb2xvciAqYmxhY2tDb2xvciA9IFtbTlNDb2xvciBjb2xvcldpdGhTUkdCUmVkOjAgZ3JlZW46
MCBibHVlOjAgYWxwaGE6MV0gcmV0YWluXTsKKyAgICAgICAgICAgIHJldHVybiBibGFja0NvbG9y
OworICAgICAgICB9CisgICAgICAgIGNhc2UgQ29sb3I6OndoaXRlLnZhbHVlKCk6IHsKKyAgICAg
ICAgICAgIHN0YXRpYyBOU0NvbG9yICp3aGl0ZUNvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aFNS
R0JSZWQ6MSBncmVlbjoxIGJsdWU6MSBhbHBoYToxXSByZXRhaW5dOworICAgICAgICAgICAgcmV0
dXJuIHdoaXRlQ29sb3I7CisgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChD
b2xvcjo6aXNXaGl0ZUNvbG9yKGNvbG9yKSkgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8TlNDb2xvciAqPiB3aGl0ZUNvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MSBn
cmVlbjoxIGJsdWU6MSBhbHBoYToxXSByZXRhaW5dOwotICAgICAgICByZXR1cm4gd2hpdGVDb2xv
cjsKLSAgICB9Ci0KLSAgICBjb25zdCBpbnQgY2FjaGVTaXplID0gMzI7Ci0gICAgc3RhdGljIHVu
c2lnbmVkIGNhY2hlZFJHQkFWYWx1ZXNbY2FjaGVTaXplXTsKLSAgICBzdGF0aWMgUmV0YWluUHRy
PE5TQ29sb3I+KiBjYWNoZWRDb2xvcnMgPSBuZXcgUmV0YWluUHRyPE5TQ29sb3I+W2NhY2hlU2l6
ZV07Ci0KLSAgICB1bnNpZ25lZCBoYXNoID0gY29sb3IuaGFzaCgpOwotICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgY2FjaGVTaXplOyArK2kpIHsKLSAgICAgICAgaWYgKGNhY2hlZFJHQkFWYWx1ZXNb
aV0gPT0gaGFzaCkKLSAgICAgICAgICAgIHJldHVybiBjYWNoZWRDb2xvcnNbaV0uZ2V0KCk7Ci0g
ICAgfQotCi0gICAgTlNDb2xvciAqcmVzdWx0ID0gW05TQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpj
YWNoZWRDR0NvbG9yKGNvbG9yKV07Ci0KLSAgICBzdGF0aWMgaW50IGN1cnNvcjsKLSAgICBjYWNo
ZWRSR0JBVmFsdWVzW2N1cnNvcl0gPSBoYXNoOwotICAgIGNhY2hlZENvbG9yc1tjdXJzb3JdID0g
cmVzdWx0OwotICAgIGlmICgrK2N1cnNvciA9PSBjYWNoZVNpemUpCi0gICAgICAgIGN1cnNvciA9
IDA7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxS
VUNhY2hlPENvbG9yLCBSZXRhaW5QdHI8TlNDb2xvcj4sIDMyPj4gY2FjaGU7CisgICAgcmV0dXJu
IGNhY2hlLmdldCgpLmdldChjb2xvcikuZ2V0KCk7CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gVVNFKEFQUEtJVCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>