<?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>212486</bug_id>
          
          <creation_ts>2020-05-28 13:30:14 -0700</creation_ts>
          <short_desc>Use correct encoding when converting a WTF::URL to CFURLRef</short_desc>
          <delta_ts>2020-06-24 10:06:32 -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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1656988</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-28 13:30:14 -0700</bug_when>
    <thetext>Use correct encoding when converting a WTF::URL to CFURLRef</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656990</commentid>
    <comment_count>1</comment_count>
      <attachid>400500</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-28 13:32:47 -0700</bug_when>
    <thetext>Created attachment 400500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656993</commentid>
    <comment_count>2</comment_count>
      <attachid>400500</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-28 13:41:10 -0700</bug_when>
    <thetext>Comment on attachment 400500
Patch

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

&gt; Source/WTF/wtf/cf/CFURLExtras.cpp:34
&gt; +RetainPtr&lt;CFURLRef&gt; createCFURLFromBuffer(const char* data, size_t size, URLBufferEncoding encoding, CFURLRef baseURL)

Why do we need a shared function for this at all? Why not call CFURLCreateAbsoluteURLWithBytes directly at call sites?

&gt; Source/WTF/wtf/cf/CFURLExtras.cpp:45
&gt; +        ASSERT(StringView(data, size).isAllASCII());

The one place this is used is decoding URLs in ArgumentCoders. So it seems the assertion is &quot;trusting&quot; data that came cross process. Would we normally assert something if the guarantee comes from the other side of an XPC boundary?

&gt; Source/WTF/wtf/cf/CFURLExtras.h:38
&gt; +enum class URLBufferEncoding : uint8_t { Latin1, UTF8, ASCII };
&gt; +WTF_EXPORT_PRIVATE RetainPtr&lt;CFURLRef&gt; createCFURLFromBuffer(const char*, size_t, URLBufferEncoding, CFURLRef baseURL = nullptr);

Maybe 3 separate functions instead of an enum? Or no functions at all? Just move the code to there call sites.

Note that we never use UTF-8 or Latin-1 with a base URL.

&gt; Tools/TestWebKitAPI/Tests/WTF/cocoa/URLExtras.mm:221
&gt; +    std::array&lt;LChar, 3&gt; latin1 { 0xC2, 0xB6, 0x00 };
&gt; +    WTF::URL url4(URL(), String(latin1.data()));
&gt; +    EXPECT_FALSE(url4.isValid());
&gt; +    EXPECT_TRUE(url4.string().is8Bit());
&gt; +    EXPECT_STREQ([[url4 absoluteString] UTF8String], &quot;%C3%82%C2%B6&quot;);

This is a behavior change. While the consistency with the 16-bit form of the same string is a plus, I am concerned about whether any code relied on the old &quot;if it looks like UTF-8 treat it like UTF-8&quot; behavior. I hope not but not sure how to verify.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657099</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-28 17:22:04 -0700</bug_when>
    <thetext>This is such an edge case, I&apos;m not worried about the intentional functional change.  This is only for non-ASCII URLs that are invalid according to WTF::URL but valid according to NSURL.  The only record we have of this code path ever having been hit is from a security researcher trying to hit new code paths, and we have no tests so it must&apos;ve been unimportant in the past.
I&apos;ll try your suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657110</commentid>
    <comment_count>4</comment_count>
      <attachid>400529</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-28 17:45:52 -0700</bug_when>
    <thetext>Created attachment 400529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657305</commentid>
    <comment_count>5</comment_count>
      <attachid>400529</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-29 10:11:59 -0700</bug_when>
    <thetext>Comment on attachment 400529
Patch

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

&gt; Source/WebKit/Shared/cf/ArgumentCodersCF.cpp:642
&gt; +    result = adoptCF(CFURLCreateAbsoluteURLWithBytes(nullptr, reinterpret_cast&lt;const UInt8*&gt;(urlBytes.data()), urlBytes.size(), kCFStringEncodingASCII, baseURL.get(), true));

Should we add a check that none of the bytes have their high bit set, and return false if so?

&gt; Tools/TestWebKitAPI/Tests/WTF/cocoa/URLExtras.mm:221
&gt; +    EXPECT_STREQ([[url4 absoluteString] UTF8String], &quot;%C3%82%C2%B6&quot;);

Looks like this test is failing on the bot; please fix before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657315</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-29 10:29:05 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 400529 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=400529&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Shared/cf/ArgumentCodersCF.cpp:642
&gt; &gt; +    result = adoptCF(CFURLCreateAbsoluteURLWithBytes(nullptr, reinterpret_cast&lt;const UInt8*&gt;(urlBytes.data()), urlBytes.size(), kCFStringEncodingASCII, baseURL.get(), true));
&gt; 
&gt; Should we add a check that none of the bytes have their high bit set, and
&gt; return false if so?
I think that would be an unnecessary slowdown.  If a compromised process wants to send a different URL through IPC, they can do so directly without playing any encoding games.

&gt; &gt; Tools/TestWebKitAPI/Tests/WTF/cocoa/URLExtras.mm:221
&gt; &gt; +    EXPECT_STREQ([[url4 absoluteString] UTF8String], &quot;%C3%82%C2%B6&quot;);
&gt; 
&gt; Looks like this test is failing on the bot; please fix before landing.

It looks like the behavior of CFURLCreateAbsoluteURLWithBytes with kCFStringEncodingISOLatin1 changed between Mojave and Catalina, which I verified with this program:

#include &lt;array&gt;
#include &lt;CoreFoundation/CFURL.h&gt;
#include &lt;Foundation/Foundation.h&gt;
int main()
{
    std::array&lt;UInt8, 3&gt; bytes { 0xc2, 0xb6, 0x00 };
    CFURLRef url = CFURLCreateAbsoluteURLWithBytes(nullptr, bytes.data(), 2, kCFStringEncodingISOLatin1, nullptr, true);
    NSLog(@&quot;%@&quot;, url);
    CFRelease(url);
}

On Mojave it prints %C2%B6 and on Catalina is prints %C3%82%C2%B6
So I guess that behavior is expected on Mojave.  I&apos;ll make platform-specific expectations on the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657316</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-29 10:32:49 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #6)
&gt; (In reply to Darin Adler from comment #5)
&gt; &gt; Should we add a check that none of the bytes have their high bit set, and
&gt; &gt; return false if so?
&gt; I think that would be an unnecessary slowdown.

OK.

I think we should better document our strategy on what to check in IPC. Until now I thought that generally consistency checks were valuable even if they weren’t obviously directly exploitable; instead it seems that an accurate explanation of our philosophy is that certain consistency checks are important, but others gratuitous and unimportant. You’ve pointed that out to both Kilzer about enumerations and me about these URL characters. This makes sense to me, but I would like this to be crystal clear for contributors.

&gt; It looks like the behavior of CFURLCreateAbsoluteURLWithBytes with
&gt; kCFStringEncodingISOLatin1 changed between Mojave and Catalina

And, just to confirm, you are saying it’s OK that WebKit will change behavior because this is an unimportant edge case and either behavior is OK on Mojave?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657319</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-29 10:35:06 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; And, just to confirm, you are saying it’s OK that WebKit will change
&gt; behavior because this is an unimportant edge case and either behavior is OK
&gt; on Mojave?
Correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657320</commentid>
    <comment_count>9</comment_count>
      <attachid>400599</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-29 10:35:35 -0700</bug_when>
    <thetext>Created attachment 400599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657322</commentid>
    <comment_count>10</comment_count>
      <attachid>400599</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-29 10:36:17 -0700</bug_when>
    <thetext>Comment on attachment 400599
Patch

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

&gt; Source/WTF/wtf/cocoa/URLCocoa.mm:78
&gt; +        WTFLogAlways(&quot;BEGIN&quot;);
&gt; +        for (size_t i = 0; i &lt; utf8.length(); i++)
&gt; +            WTFLogAlways(&quot;BYTE %x&quot;, utf8.data()[i]);

Should re-upload without this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657577</commentid>
    <comment_count>11</comment_count>
      <attachid>400651</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-29 23:14:57 -0700</bug_when>
    <thetext>Created attachment 400651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657585</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-29 23:59:25 -0700</bug_when>
    <thetext>Committed r262341: &lt;https://trac.webkit.org/changeset/262341&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 400651.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657586</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-30 00:00:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/63785975&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665780</commentid>
    <comment_count>14</comment_count>
      <attachid>400651</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-24 10:06:32 -0700</bug_when>
    <thetext>Comment on attachment 400651
Patch

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

&gt; Source/WebKit/Shared/cf/ArgumentCodersCF.cpp:642
&gt; +    result = adoptCF(CFURLCreateAbsoluteURLWithBytes(nullptr, reinterpret_cast&lt;const UInt8*&gt;(urlBytes.data()), urlBytes.size(), kCFStringEncodingASCII, baseURL.get(), true));

This wasn&apos;t so great after all.  See https://bugs.webkit.org/show_bug.cgi?id=213565</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400500</attachid>
            <date>2020-05-28 13:32:47 -0700</date>
            <delta_ts>2020-05-28 17:45:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212486-20200528133246.patch</filename>
            <type>text/plain</type>
            <size>8928</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjIyNTMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTI4ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGNvcnJlY3QgZW5jb2Rpbmcg
d2hlbiBjb252ZXJ0aW5nIGEgV1RGOjpVUkwgdG8gQ0ZVUkxSZWYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL2NmL0NGVVJMRXh0cmFzLmNwcDoK
KyAgICAgICAgKFdURjo6Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKToKKyAgICAgICAgKiB3dGYvY2Yv
Q0ZVUkxFeHRyYXMuaDoKKyAgICAgICAgKiB3dGYvY2YvVVJMQ0YuY3BwOgorICAgICAgICAoV1RG
OjpVUkw6OmNyZWF0ZUNGVVJMIGNvbnN0KToKKyAgICAgICAgKiB3dGYvY29jb2EvVVJMQ29jb2Eu
bW06CisgICAgICAgIChXVEY6OlVSTDo6Y3JlYXRlQ0ZVUkwgY29uc3QpOgorCiAyMDIwLTA1LTI3
ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIGZvci1v
ZiBzaG91bGQgY2hlY2sgdGhlIGl0ZXJhYmxlIGlzIGEgSlNBcnJheSBmb3IgRmFzdEFycmF5IGlu
IERGRyBpdGVyYXRvcl9vcGVuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCShyZXZp
c2lvbiAyNjIyNTMpCisrKyBTb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDE2ICszMSwyMiBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotUmV0YWlu
UHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IHNpemUsIENGVVJMUmVmIGJhc2VVUkwpCitSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNG
VVJMRnJvbUJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSwgVVJMQnVmZmVyRW5j
b2RpbmcgZW5jb2RpbmcsIENGVVJMUmVmIGJhc2VVUkwpCiB7Ci0gICAgLy8gTk9URTogV2UgdXNl
IFVURi04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2VkIHdoZW4gY29tcHV0aW5nIHN0
cmluZ3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKLSAgICAvLyAoZS5nIGNhbGxzIHRv
IE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBub3QgdG9sZXJhbnQgb2Yg
aWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCi0gICAgLy8gY291bGQgZWl0aGVyIGJlIGEg
bWFsZm9ybWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVudCBlbmNvZGluZywgbGlrZSBT
aGlmdC1KSVMsIHNvIHdlIGZhbGwgYmFjawotICAgIC8vIG9udG8gdXNpbmcgSVNPIExhdGluLTEg
aW4gdGhvc2UgY2FzZXMuCi0gICAgUmV0YWluUHRyPENGVVJMUmVmPiByZXN1bHQgPSBhZG9wdENG
KENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVSW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGJhc2VV
UkwsIHRydWUpKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihD
RlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUludDgqPihkYXRhKSwgc2l6ZSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGJh
c2VVUkwsIHRydWUpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIENGU3RyaW5nRW5jb2Rpbmcg
c3RyaW5nRW5jb2RpbmcgPSBrQ0ZTdHJpbmdFbmNvZGluZ1VURjg7CisgICAgc3dpdGNoIChlbmNv
ZGluZykgeworICAgIGNhc2UgVVJMQnVmZmVyRW5jb2Rpbmc6OkxhdGluMToKKyAgICAgICAgc3Ry
aW5nRW5jb2RpbmcgPSBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBVUkxCdWZmZXJFbmNvZGluZzo6VVRGODoKKyAgICAgICAgc3RyaW5nRW5jb2Rp
bmcgPSBrQ0ZTdHJpbmdFbmNvZGluZ1VURjg7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVVJM
QnVmZmVyRW5jb2Rpbmc6OkFTQ0lJOgorICAgICAgICBBU1NFUlQoU3RyaW5nVmlldyhkYXRhLCBz
aXplKS5pc0FsbEFTQ0lJKCkpOworICAgICAgICBzdHJpbmdFbmNvZGluZyA9IGtDRlN0cmluZ0Vu
Y29kaW5nQVNDSUk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gYWRvcHRDRihD
RlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUludDgqPihkYXRhKSwgc2l6ZSwgc3RyaW5nRW5jb2RpbmcsIGJhc2VVUkwsIHRydWUp
KTsKIH0KIAogdm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiB1cmwsIFVSTENoYXJCdWZmZXImIHJl
c3VsdCkKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuaAkocmV2aXNpb24gMjYyMjUzKQorKysg
U291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyAr
MzQsOCBAQCBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFVSTDsKIHR5cGVkZWYgVmVjdG9yPGNoYXIs
IDUxMj4gVVJMQ2hhckJ1ZmZlcjsKIAotV1RGX0VYUE9SVF9QUklWQVRFIFJldGFpblB0cjxDRlVS
TFJlZj4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QsIENGVVJMUmVm
IGJhc2VVUkwgPSBudWxscHRyKTsKK2VudW0gY2xhc3MgVVJMQnVmZmVyRW5jb2RpbmcgOiB1aW50
OF90IHsgTGF0aW4xLCBVVEY4LCBBU0NJSSB9OworV1RGX0VYUE9SVF9QUklWQVRFIFJldGFpblB0
cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QsIFVS
TEJ1ZmZlckVuY29kaW5nLCBDRlVSTFJlZiBiYXNlVVJMID0gbnVsbHB0cik7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiwgVVJMQ2hhckJ1ZmZlciYpOwogV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIENTdHJpbmcmKTsKIApJ
bmRleDogU291cmNlL1dURi93dGYvY2YvVVJMQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL2NmL1VSTENGLmNwcAkocmV2aXNpb24gMjYyMjUzKQorKysgU291cmNlL1dURi93dGYv
Y2YvVVJMQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMCArNTIsMTAgQEAgUmV0YWluUHRy
PENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJMKCkgYwogewogICAgIFJldGFpblB0cjxDRlVSTFJl
Zj4gY2ZVUkw7CiAgICAgaWYgKExJS0VMWShtX3N0cmluZy5pczhCaXQoKSkpCi0gICAgICAgIGNm
VVJMID0gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4obV9zdHJpbmcuY2hhcmFjdGVyczgoKSksIG1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAg
ICAgY2ZVUkwgPSBXVEY6OmNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihtX3N0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbV9zdHJpbmcubGVuZ3RoKCksIFVS
TEJ1ZmZlckVuY29kaW5nOjpMYXRpbjEpOwogICAgIGVsc2UgewogICAgICAgICBDU3RyaW5nIHV0
ZjggPSBtX3N0cmluZy51dGY4KCk7Ci0gICAgICAgIGNmVVJMID0gV1RGOjpjcmVhdGVDRlVSTEZy
b21CdWZmZXIodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgICAgICBjZlVSTCA9IFdU
Rjo6Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpLCBVUkxC
dWZmZXJFbmNvZGluZzo6VVRGOCk7CiAgICAgfQogCiAgICAgaWYgKHByb3RvY29sSXNJbkhUVFBG
YW1pbHkoKSAmJiAhaXNDRlVSTFNhbWVPcmlnaW4oY2ZVUkwuZ2V0KCksICp0aGlzKSkKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL2NvY29hL1VSTENvY29hLm1tCShyZXZpc2lvbiAyNjIyNTMpCisrKyBTb3VyY2UvV1RG
L3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzAsMTAgKzcwLDEwIEBA
IFJldGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVDRlVSTCgpIGMKIAogICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gY2ZVUkw7CiAgICAgaWYgKExJS0VMWShtX3N0cmluZy5pczhCaXQoKSkpCi0g
ICAgICAgIGNmVVJMID0gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4obV9zdHJpbmcuY2hhcmFjdGVyczgoKSksIG1fc3RyaW5nLmxlbmd0aCgp
KTsKKyAgICAgICAgY2ZVUkwgPSBXVEY6OmNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihtX3N0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbV9zdHJpbmcubGVu
Z3RoKCksIFVSTEJ1ZmZlckVuY29kaW5nOjpMYXRpbjEpOwogICAgIGVsc2UgewogICAgICAgICBD
U3RyaW5nIHV0ZjggPSBtX3N0cmluZy51dGY4KCk7Ci0gICAgICAgIGNmVVJMID0gV1RGOjpjcmVh
dGVDRlVSTEZyb21CdWZmZXIodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgICAgICBj
ZlVSTCA9IFdURjo6Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0
aCgpLCBVUkxCdWZmZXJFbmNvZGluZzo6VVRGOCk7CiAgICAgfQogCiAgICAgaWYgKHByb3RvY29s
SXNJbkhUVFBGYW1pbHkoKSAmJiAhV1RGOjppc0NGVVJMU2FtZU9yaWdpbihjZlVSTC5nZXQoKSwg
KnRoaXMpKQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjI1MykKKysrIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDUtMjggIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2Ug
Y29ycmVjdCBlbmNvZGluZyB3aGVuIGNvbnZlcnRpbmcgYSBXVEY6OlVSTCB0byBDRlVSTFJlZgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvY2YvV0tVUkxDRi5tbToKKyAgICAgICAgKFdLVVJMQ29weUNGVVJMKToKKyAgICAgICAg
KiBTaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZSk6
CisKIDIwMjAtMDUtMjggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlYWRhYmxlQnl0ZVN0cmVhbSBzaG91bGQgYmUgZW5hYmxlZC9kaXNhYmxlZCBpbiBzZXJ2
aWNlIHdvcmtlcnMgYXMgZG9uZSBpbiBwYWdlcwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvY2YvV0tVUkxDRi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9jZi9XS1VSTENGLm1tCShyZXZpc2lvbiAyNjIyNTMpCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NSw1ICs2NSw1IEBA
IENGVVJMUmVmIFdLVVJMQ29weUNGVVJMKENGQWxsb2NhdG9yUmVmIGEKICAgICAvLyBVVEYtOCB3
aGljaCB1c2VzIGxlc3MgbWVtb3J5IGFuZCBpcyB3aGF0IFdlYktpdCBjbGllbnRzIG1pZ2h0IGV4
cGVjdC4KIAogICAgIENTdHJpbmcgYnVmZmVyID0gV2ViS2l0Ojp0b0ltcGwoVVJMUmVmKS0+c3Ry
aW5nKCkudXRmOCgpOwotICAgIHJldHVybiBXVEY6OmNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZm
ZXIuZGF0YSgpLCBidWZmZXIubGVuZ3RoKCksIDApLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV1RG
OjpjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpLCBV
UkxCdWZmZXJFbmNvZGluZzo6VVRGOCkubGVha1JlZigpOwogfQpJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAJKHJldmlzaW9uIDI2MjI1MykKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MzksNyArNjM5LDcgQEAgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0
YWluUHRyPAogICAgIH0KICNlbmRpZgogCi0gICAgcmVzdWx0ID0gV1RGOjpjcmVhdGVDRlVSTEZy
b21CdWZmZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJsQnl0ZXMuZGF0YSgpKSwg
dXJsQnl0ZXMuc2l6ZSgpLCBiYXNlVVJMLmdldCgpKTsKKyAgICByZXN1bHQgPSBXVEY6OmNyZWF0
ZUNGVVJMRnJvbUJ1ZmZlcihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPih1cmxCeXRlcy5k
YXRhKCkpLCB1cmxCeXRlcy5zaXplKCksIFdURjo6VVJMQnVmZmVyRW5jb2Rpbmc6OkFTQ0lJLCBi
YXNlVVJMLmdldCgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjIyNTUpCisr
KyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0w
NS0yOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIFVzZSBjb3JyZWN0IGVuY29kaW5nIHdoZW4gY29udmVydGluZyBhIFdURjo6VVJMIHRvIENG
VVJMUmVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTI0ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2NvY29hL1VSTEV4dHJhcy5tbToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIwLTA1LTI4ICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIG1ha2VWYWx1ZVJlZkZvclZhbHVlIHNob3VsZCBi
ZSByb2J1c3QgYWdhaW5zdCB0aGUgdHlwZSBlbmNvZGluZyBvZiBhIE5TTnVtYmVyIGJhY2tlZCBi
eSBhIGJvb2xlYW4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2NvY29hL1VS
TEV4dHJhcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9j
b2NvYS9VUkxFeHRyYXMubW0JKHJldmlzaW9uIDI2MjI1MykKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL2NvY29hL1VSTEV4dHJhcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjA3LDYg
KzIwNywxOSBAQCBURVNUKFdURl9VUkxFeHRyYXMsIFVSTEV4dHJhc19QYXJzaW5nRXJyCiAKICAg
ICBXVEY6OlVSTCB1cmwyKFVSTCgpLCB1dGYxNlN0cmluZyh1Imh0dHA6Ly9cdTIyNjdcdTIyMkVc
dUZFNjMiKSk7CiAgICAgRVhQRUNUX1NUUkVRKFtbdXJsMiBhYnNvbHV0ZVN0cmluZ10gVVRGOFN0
cmluZ10sICJodHRwOi8vJUUyJTg5JUE3JUUyJTg4JUFFJUVGJUI5JUEzIik7CisKKyAgICBzdGQ6
OmFycmF5PFVDaGFyLCAzPiB1dGYxNiB7IDB4QzIsIDB4QjYsIDB4MDAgfTsKKyAgICBXVEY6OlVS
TCB1cmwzKFVSTCgpLCBTdHJpbmcodXRmMTYuZGF0YSgpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVy
bDMuc3RyaW5nKCkuaXM4Qml0KCkpOworICAgIEVYUEVDVF9GQUxTRSh1cmwzLmlzVmFsaWQoKSk7
CisgICAgRVhQRUNUX1NUUkVRKFtbdXJsMyBhYnNvbHV0ZVN0cmluZ10gVVRGOFN0cmluZ10sICIl
QzMlODIlQzIlQjYiKTsKKyAgICAKKyAgICBzdGQ6OmFycmF5PExDaGFyLCAzPiBsYXRpbjEgeyAw
eEMyLCAweEI2LCAweDAwIH07CisgICAgV1RGOjpVUkwgdXJsNChVUkwoKSwgU3RyaW5nKGxhdGlu
MS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXJsNC5pc1ZhbGlkKCkpOworICAgIEVYUEVD
VF9UUlVFKHVybDQuc3RyaW5nKCkuaXM4Qml0KCkpOworICAgIEVYUEVDVF9TVFJFUShbW3VybDQg
YWJzb2x1dGVTdHJpbmddIFVURjhTdHJpbmddLCAiJUMzJTgyJUMyJUI2Iik7CisgICAgCiB9CiAK
IFRFU1QoV1RGX1VSTEV4dHJhcywgVVJMRXh0cmFzX05pbCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400529</attachid>
            <date>2020-05-28 17:45:52 -0700</date>
            <delta_ts>2020-05-29 10:35:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212486-20200528174551.patch</filename>
            <type>text/plain</type>
            <size>8366</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjIyNTMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTI4ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGNvcnJlY3QgZW5jb2Rpbmcg
d2hlbiBjb252ZXJ0aW5nIGEgV1RGOjpVUkwgdG8gQ0ZVUkxSZWYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL2NmL0NGVVJMRXh0cmFzLmNwcDoK
KyAgICAgICAgKFdURjo6Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKToKKyAgICAgICAgKiB3dGYvY2Yv
Q0ZVUkxFeHRyYXMuaDoKKyAgICAgICAgKiB3dGYvY2YvVVJMQ0YuY3BwOgorICAgICAgICAoV1RG
OjpVUkw6OmNyZWF0ZUNGVVJMIGNvbnN0KToKKyAgICAgICAgKiB3dGYvY29jb2EvVVJMQ29jb2Eu
bW06CisgICAgICAgIChXVEY6OlVSTDo6Y3JlYXRlQ0ZVUkwgY29uc3QpOgorCiAyMDIwLTA1LTI3
ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIGZvci1v
ZiBzaG91bGQgY2hlY2sgdGhlIGl0ZXJhYmxlIGlzIGEgSlNBcnJheSBmb3IgRmFzdEFycmF5IGlu
IERGRyBpdGVyYXRvcl9vcGVuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCShyZXZp
c2lvbiAyNjIyNTMpCisrKyBTb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDE4ICszMSw2IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1SZXRhaW5Q
dHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3Qgc2l6ZSwgQ0ZVUkxSZWYgYmFzZVVSTCkKLXsKLSAgICAvLyBOT1RFOiBXZSB1c2UgVVRGLTgg
aGVyZSBzaW5jZSB0aGlzIGVuY29kaW5nIGlzIHVzZWQgd2hlbiBjb21wdXRpbmcgc3RyaW5ncyB3
aGVuIHJldHVybmluZyBVUkwgY29tcG9uZW50cwotICAgIC8vIChlLmcgY2FsbHMgdG8gTlNVUkwg
LXBhdGgpLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB0b2xlcmFudCBvZiBpbGxlZ2Fs
IFVURi04IHNlcXVlbmNlcywgd2hpY2gKLSAgICAvLyBjb3VsZCBlaXRoZXIgYmUgYSBtYWxmb3Jt
ZWQgc3RyaW5nIG9yIGJ5dGVzIGluIGEgZGlmZmVyZW50IGVuY29kaW5nLCBsaWtlIFNoaWZ0LUpJ
Uywgc28gd2UgZmFsbCBiYWNrCi0gICAgLy8gb250byB1c2luZyBJU08gTGF0aW4tMSBpbiB0aG9z
ZSBjYXNlcy4KLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxD
cmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0
IFVJbnQ4Kj4oZGF0YSksIHNpemUsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgYmFzZVVSTCwgdHJ1
ZSkpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXN1bHQgPSBhZG9wdENGKENGVVJMQ3Jl
YXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBV
SW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgYmFzZVVSTCwg
dHJ1ZSkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxS
ZWYgdXJsLCBVUkxDaGFyQnVmZmVyJiByZXN1bHQpCiB7CiAgICAgQ0ZJbmRleCBieXRlc0xlbmd0
aCA9IENGVVJMR2V0Qnl0ZXModXJsLCBudWxscHRyLCAwKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L2NmL0NGVVJMRXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvY2YvQ0ZVUkxF
eHRyYXMuaAkocmV2aXNpb24gMjYyMjUzKQorKysgU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRy
YXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNiBAQCBuYW1lc3BhY2UgV1RGIHsKIGNs
YXNzIFVSTDsKIHR5cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4gVVJMQ2hhckJ1ZmZlcjsKIAotV1RG
X0VYUE9SVF9QUklWQVRFIFJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVy
KGNvbnN0IGNoYXIqLCBzaXplX3QsIENGVVJMUmVmIGJhc2VVUkwgPSBudWxscHRyKTsKIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGdldFVSTEJ5dGVzKENGVVJMUmVmLCBVUkxDaGFyQnVmZmVyJik7
CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiwgQ1N0cmluZyYp
OwogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvY2YvVVJMQ0YuY3BwCShyZXZpc2lvbiAyNjIyNTMpCisrKyBTb3VyY2UvV1RG
L3d0Zi9jZi9VUkxDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDEwICs1MiwxMCBAQCBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IFVSTDo6Y3JlYXRlQ0ZVUkwoKSBjCiB7CiAgICAgUmV0YWluUHRyPENG
VVJMUmVmPiBjZlVSTDsKICAgICBpZiAoTElLRUxZKG1fc3RyaW5nLmlzOEJpdCgpKSkKLSAgICAg
ICAgY2ZVUkwgPSBXVEY6OmNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihtX3N0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbV9zdHJpbmcubGVuZ3RoKCkpOwor
ICAgICAgICBjZlVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhu
dWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4obV9zdHJpbmcuY2hhcmFjdGVy
czgoKSksIG1fc3RyaW5nLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVs
bHB0ciwgdHJ1ZSkpOwogICAgIGVsc2UgewogICAgICAgICBDU3RyaW5nIHV0ZjggPSBtX3N0cmlu
Zy51dGY4KCk7Ci0gICAgICAgIGNmVVJMID0gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIodXRm
OC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgICAgICBjZlVSTCA9IGFkb3B0Q0YoQ0ZVUkxD
cmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0
IFVJbnQ4Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VU
RjgsIG51bGxwdHIsIHRydWUpKTsKICAgICB9CiAKICAgICBpZiAocHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpICYmICFpc0NGVVJMU2FtZU9yaWdpbihjZlVSTC5nZXQoKSwgKnRoaXMpKQpJbmRleDog
U291cmNlL1dURi93dGYvY29jb2EvVVJMQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvY29jb2EvVVJMQ29jb2EubW0JKHJldmlzaW9uIDI2MjI1MykKKysrIFNvdXJjZS9XVEYv
d3RmL2NvY29hL1VSTENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MCwxMCArNzAsMTAgQEAg
UmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJMKCkgYwogCiAgICAgUmV0YWluUHRy
PENGVVJMUmVmPiBjZlVSTDsKICAgICBpZiAoTElLRUxZKG1fc3RyaW5nLmlzOEJpdCgpKSkKLSAg
ICAgICAgY2ZVUkwgPSBXVEY6OmNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihtX3N0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbV9zdHJpbmcubGVuZ3RoKCkp
OworICAgICAgICBjZlVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRl
cyhudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4obV9zdHJpbmcuY2hhcmFj
dGVyczgoKSksIG1fc3RyaW5nLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwg
bnVsbHB0ciwgdHJ1ZSkpOwogICAgIGVsc2UgewogICAgICAgICBDU3RyaW5nIHV0ZjggPSBtX3N0
cmluZy51dGY4KCk7Ci0gICAgICAgIGNmVVJMID0gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIo
dXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgICAgICBjZlVSTCA9IGFkb3B0Q0YoQ0ZV
UkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCByZWludGVycHJldF9jYXN0PGNv
bnN0IFVJbnQ4Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGlu
Z1VURjgsIG51bGxwdHIsIHRydWUpKTsKICAgICB9CiAKICAgICBpZiAocHJvdG9jb2xJc0luSFRU
UEZhbWlseSgpICYmICFXVEY6OmlzQ0ZVUkxTYW1lT3JpZ2luKGNmVVJMLmdldCgpLCAqdGhpcykp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMjUzKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNS0yOCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBjb3JyZWN0
IGVuY29kaW5nIHdoZW4gY29udmVydGluZyBhIFdURjo6VVJMIHRvIENGVVJMUmVmCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9j
Zi9XS1VSTENGLm1tOgorICAgICAgICAoV0tVUkxDb3B5Q0ZVUkwpOgorICAgICAgICAqIFNoYXJl
ZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlKToKKwogMjAy
MC0wNS0yOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVh
ZGFibGVCeXRlU3RyZWFtIHNob3VsZCBiZSBlbmFibGVkL2Rpc2FibGVkIGluIHNlcnZpY2Ugd29y
a2VycyBhcyBkb25lIGluIHBhZ2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9j
Zi9XS1VSTENGLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2Nm
L1dLVVJMQ0YubW0JKHJldmlzaW9uIDI2MjI1MykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL2NmL1dLVVJMQ0YubW0JKHdvcmtpbmcgY29weSkKQEAgLTY1LDUgKzY1LDUgQEAgQ0ZVUkxS
ZWYgV0tVUkxDb3B5Q0ZVUkwoQ0ZBbGxvY2F0b3JSZWYgYQogICAgIC8vIFVURi04IHdoaWNoIHVz
ZXMgbGVzcyBtZW1vcnkgYW5kIGlzIHdoYXQgV2ViS2l0IGNsaWVudHMgbWlnaHQgZXhwZWN0Lgog
CiAgICAgQ1N0cmluZyBidWZmZXIgPSBXZWJLaXQ6OnRvSW1wbChVUkxSZWYpLT5zdHJpbmcoKS51
dGY4KCk7Ci0gICAgcmV0dXJuIFdURjo6Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZlci5kYXRh
KCksIGJ1ZmZlci5sZW5ndGgoKSwgMCkubGVha1JlZigpOworICAgIHJldHVybiBDRlVSTENyZWF0
ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUlu
dDgqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VU
RjgsIG51bGxwdHIsIHRydWUpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJn
dW1lbnRDb2RlcnNDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvY2Yv
QXJndW1lbnRDb2RlcnNDRi5jcHAJKHJldmlzaW9uIDI2MjI1MykKKysrIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzksNyAr
NjM5LDcgQEAgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPAogICAgIH0K
ICNlbmRpZgogCi0gICAgcmVzdWx0ID0gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJsQnl0ZXMuZGF0YSgpKSwgdXJsQnl0ZXMuc2l6ZSgp
LCBiYXNlVVJMLmdldCgpKTsKKyAgICByZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1
dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHVy
bEJ5dGVzLmRhdGEoKSksIHVybEJ5dGVzLnNpemUoKSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSwg
YmFzZVVSTC5nZXQoKSwgdHJ1ZSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5kZXg6IFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2
MjI1NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA1LTI4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgVXNlIGNvcnJlY3QgZW5jb2Rpbmcgd2hlbiBjb252ZXJ0aW5nIGEgV1RGOjpV
UkwgdG8gQ0ZVUkxSZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMjQ4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvY29jb2EvVVJMRXh0cmFzLm1tOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMDUtMjggIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgbWFrZVZhbHVlUmVmRm9yVmFsdWUg
c2hvdWxkIGJlIHJvYnVzdCBhZ2FpbnN0IHRoZSB0eXBlIGVuY29kaW5nIG9mIGEgTlNOdW1iZXIg
YmFja2VkIGJ5IGEgYm9vbGVhbgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
Y29jb2EvVVJMRXh0cmFzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL2NvY29hL1VSTEV4dHJhcy5tbQkocmV2aXNpb24gMjYyMjUzKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvY29jb2EvVVJMRXh0cmFzLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDcsNiArMjA3LDE5IEBAIFRFU1QoV1RGX1VSTEV4dHJhcywgVVJMRXh0cmFzX1BhcnNpbmdF
cnIKIAogICAgIFdURjo6VVJMIHVybDIoVVJMKCksIHV0ZjE2U3RyaW5nKHUiaHR0cDovL1x1MjI2
N1x1MjIyRVx1RkU2MyIpKTsKICAgICBFWFBFQ1RfU1RSRVEoW1t1cmwyIGFic29sdXRlU3RyaW5n
XSBVVEY4U3RyaW5nXSwgImh0dHA6Ly8lRTIlODklQTclRTIlODglQUUlRUYlQjklQTMiKTsKKwor
ICAgIHN0ZDo6YXJyYXk8VUNoYXIsIDM+IHV0ZjE2IHsgMHhDMiwgMHhCNiwgMHgwMCB9OworICAg
IFdURjo6VVJMIHVybDMoVVJMKCksIFN0cmluZyh1dGYxNi5kYXRhKCkpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UodXJsMy5zdHJpbmcoKS5pczhCaXQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVybDMuaXNW
YWxpZCgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoW1t1cmwzIGFic29sdXRlU3RyaW5nXSBVVEY4U3Ry
aW5nXSwgIiVDMyU4MiVDMiVCNiIpOworICAgIAorICAgIHN0ZDo6YXJyYXk8TENoYXIsIDM+IGxh
dGluMSB7IDB4QzIsIDB4QjYsIDB4MDAgfTsKKyAgICBXVEY6OlVSTCB1cmw0KFVSTCgpLCBTdHJp
bmcobGF0aW4xLmRhdGEoKSkpOworICAgIEVYUEVDVF9GQUxTRSh1cmw0LmlzVmFsaWQoKSk7Cisg
ICAgRVhQRUNUX1RSVUUodXJsNC5zdHJpbmcoKS5pczhCaXQoKSk7CisgICAgRVhQRUNUX1NUUkVR
KFtbdXJsNCBhYnNvbHV0ZVN0cmluZ10gVVRGOFN0cmluZ10sICIlQzMlODIlQzIlQjYiKTsKKyAg
ICAKIH0KIAogVEVTVChXVEZfVVJMRXh0cmFzLCBVUkxFeHRyYXNfTmlsKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400599</attachid>
            <date>2020-05-29 10:35:35 -0700</date>
            <delta_ts>2020-05-29 23:14:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212486-20200529103534.patch</filename>
            <type>text/plain</type>
            <size>8766</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjIyNTMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTI5ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGNvcnJlY3QgZW5jb2Rpbmcg
d2hlbiBjb252ZXJ0aW5nIGEgV1RGOjpVUkwgdG8gQ0ZVUkxSZWYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogd3RmL2NmL0NGVVJMRXh0cmFzLmNwcDoKKyAg
ICAgICAgKFdURjo6Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKToKKyAgICAgICAgKiB3dGYvY2YvQ0ZV
UkxFeHRyYXMuaDoKKyAgICAgICAgKiB3dGYvY2YvVVJMQ0YuY3BwOgorICAgICAgICAoV1RGOjpV
Ukw6OmNyZWF0ZUNGVVJMIGNvbnN0KToKKyAgICAgICAgKiB3dGYvY29jb2EvVVJMQ29jb2EubW06
CisgICAgICAgIChXVEY6OlVSTDo6Y3JlYXRlQ0ZVUkwgY29uc3QpOgorCiAyMDIwLTA1LTI3ICBL
ZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIGZvci1vZiBz
aG91bGQgY2hlY2sgdGhlIGl0ZXJhYmxlIGlzIGEgSlNBcnJheSBmb3IgRmFzdEFycmF5IGluIERG
RyBpdGVyYXRvcl9vcGVuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCShyZXZpc2lv
biAyNjIyNTMpCisrKyBTb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDE4ICszMSw2IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1SZXRhaW5QdHI8
Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
c2l6ZSwgQ0ZVUkxSZWYgYmFzZVVSTCkKLXsKLSAgICAvLyBOT1RFOiBXZSB1c2UgVVRGLTggaGVy
ZSBzaW5jZSB0aGlzIGVuY29kaW5nIGlzIHVzZWQgd2hlbiBjb21wdXRpbmcgc3RyaW5ncyB3aGVu
IHJldHVybmluZyBVUkwgY29tcG9uZW50cwotICAgIC8vIChlLmcgY2FsbHMgdG8gTlNVUkwgLXBh
dGgpLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB0b2xlcmFudCBvZiBpbGxlZ2FsIFVU
Ri04IHNlcXVlbmNlcywgd2hpY2gKLSAgICAvLyBjb3VsZCBlaXRoZXIgYmUgYSBtYWxmb3JtZWQg
c3RyaW5nIG9yIGJ5dGVzIGluIGEgZGlmZmVyZW50IGVuY29kaW5nLCBsaWtlIFNoaWZ0LUpJUywg
c28gd2UgZmFsbCBiYWNrCi0gICAgLy8gb250byB1c2luZyBJU08gTGF0aW4tMSBpbiB0aG9zZSBj
YXNlcy4KLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVh
dGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJ
bnQ4Kj4oZGF0YSksIHNpemUsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgYmFzZVVSTCwgdHJ1ZSkp
OwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRl
QWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50
OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgYmFzZVVSTCwgdHJ1
ZSkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYg
dXJsLCBVUkxDaGFyQnVmZmVyJiByZXN1bHQpCiB7CiAgICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9
IENGVVJMR2V0Qnl0ZXModXJsLCBudWxscHRyLCAwKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2Nm
L0NGVVJMRXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRy
YXMuaAkocmV2aXNpb24gMjYyMjUzKQorKysgU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNiBAQCBuYW1lc3BhY2UgV1RGIHsKIGNsYXNz
IFVSTDsKIHR5cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4gVVJMQ2hhckJ1ZmZlcjsKIAotV1RGX0VY
UE9SVF9QUklWQVRFIFJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNv
bnN0IGNoYXIqLCBzaXplX3QsIENGVVJMUmVmIGJhc2VVUkwgPSBudWxscHRyKTsKIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIGdldFVSTEJ5dGVzKENGVVJMUmVmLCBVUkxDaGFyQnVmZmVyJik7CiBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiwgQ1N0cmluZyYpOwog
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvY2YvVVJMQ0YuY3BwCShyZXZpc2lvbiAyNjIyNTMpCisrKyBTb3VyY2UvV1RGL3d0
Zi9jZi9VUkxDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDEwICs1MiwxMCBAQCBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IFVSTDo6Y3JlYXRlQ0ZVUkwoKSBjCiB7CiAgICAgUmV0YWluUHRyPENGVVJM
UmVmPiBjZlVSTDsKICAgICBpZiAoTElLRUxZKG1fc3RyaW5nLmlzOEJpdCgpKSkKLSAgICAgICAg
Y2ZVUkwgPSBXVEY6OmNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihtX3N0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbV9zdHJpbmcubGVuZ3RoKCkpOworICAg
ICAgICBjZlVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxs
cHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4obV9zdHJpbmcuY2hhcmFjdGVyczgo
KSksIG1fc3RyaW5nLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0
ciwgdHJ1ZSkpOwogICAgIGVsc2UgewogICAgICAgICBDU3RyaW5nIHV0ZjggPSBtX3N0cmluZy51
dGY4KCk7Ci0gICAgICAgIGNmVVJMID0gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIodXRmOC5k
YXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgICAgICBjZlVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVh
dGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJ
bnQ4Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgs
IG51bGxwdHIsIHRydWUpKTsKICAgICB9CiAKICAgICBpZiAocHJvdG9jb2xJc0luSFRUUEZhbWls
eSgpICYmICFpc0NGVVJMU2FtZU9yaWdpbihjZlVSTC5nZXQoKSwgKnRoaXMpKQpJbmRleDogU291
cmNlL1dURi93dGYvY29jb2EvVVJMQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvY29jb2EvVVJMQ29jb2EubW0JKHJldmlzaW9uIDI2MjI1MykKKysrIFNvdXJjZS9XVEYvd3Rm
L2NvY29hL1VSTENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MCwxMCArNzAsMTMgQEAgUmV0
YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJMKCkgYwogCiAgICAgUmV0YWluUHRyPENG
VVJMUmVmPiBjZlVSTDsKICAgICBpZiAoTElLRUxZKG1fc3RyaW5nLmlzOEJpdCgpKSkKLSAgICAg
ICAgY2ZVUkwgPSBXVEY6OmNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihtX3N0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbV9zdHJpbmcubGVuZ3RoKCkpOwor
ICAgICAgICBjZlVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhu
dWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4obV9zdHJpbmcuY2hhcmFjdGVy
czgoKSksIG1fc3RyaW5nLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVs
bHB0ciwgdHJ1ZSkpOwogICAgIGVsc2UgewogICAgICAgICBDU3RyaW5nIHV0ZjggPSBtX3N0cmlu
Zy51dGY4KCk7Ci0gICAgICAgIGNmVVJMID0gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIodXRm
OC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgICAgICBXVEZMb2dBbHdheXMoIkJFR0lOIik7
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdXRmOC5sZW5ndGgoKTsgaSsrKQorICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJCWVRFICV4IiwgdXRmOC5kYXRhKClbaV0pOworICAgICAg
ICBjZlVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRy
LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0
aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUpKTsKICAgICB9CiAKICAg
ICBpZiAocHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFXVEY6OmlzQ0ZVUkxTYW1lT3JpZ2lu
KGNmVVJMLmdldCgpLCAqdGhpcykpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMjUzKQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAor
MjAyMC0wNS0yOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgor
CisgICAgICAgIFVzZSBjb3JyZWN0IGVuY29kaW5nIHdoZW4gY29udmVydGluZyBhIFdURjo6VVJM
IHRvIENGVVJMUmVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTI0ODYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICAqIFNoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tOgorICAgICAgICAoV0tVUkxDb3B5Q0ZVUkwp
OgorICAgICAgICAqIFNoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcDoKKyAgICAgICAgKElQ
Qzo6ZGVjb2RlKToKKwogMjAyMC0wNS0yOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVhZGFibGVCeXRlU3RyZWFtIHNob3VsZCBiZSBlbmFibGVkL2Rpc2Fi
bGVkIGluIHNlcnZpY2Ugd29ya2VycyBhcyBkb25lIGluIHBhZ2VzCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW0JKHJldmlzaW9uIDI2MjI1MykKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW0JKHdvcmtpbmcgY29weSkKQEAgLTY1
LDUgKzY1LDUgQEAgQ0ZVUkxSZWYgV0tVUkxDb3B5Q0ZVUkwoQ0ZBbGxvY2F0b3JSZWYgYQogICAg
IC8vIFVURi04IHdoaWNoIHVzZXMgbGVzcyBtZW1vcnkgYW5kIGlzIHdoYXQgV2ViS2l0IGNsaWVu
dHMgbWlnaHQgZXhwZWN0LgogCiAgICAgQ1N0cmluZyBidWZmZXIgPSBXZWJLaXQ6OnRvSW1wbChV
UkxSZWYpLT5zdHJpbmcoKS51dGY4KCk7Ci0gICAgcmV0dXJuIFdURjo6Y3JlYXRlQ0ZVUkxGcm9t
QnVmZmVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5sZW5ndGgoKSwgMCkubGVha1JlZigpOworICAg
IHJldHVybiBDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVUludDgqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLmxlbmd0aCgpLCBr
Q0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUpOwogfQpJbmRleDogU291cmNlL1dl
YktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAJKHJldmlzaW9uIDI2MjI1MykK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MzksNyArNjM5LDcgQEAgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
UmV0YWluUHRyPAogICAgIH0KICNlbmRpZgogCi0gICAgcmVzdWx0ID0gV1RGOjpjcmVhdGVDRlVS
TEZyb21CdWZmZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJsQnl0ZXMuZGF0YSgp
KSwgdXJsQnl0ZXMuc2l6ZSgpLCBiYXNlVVJMLmdldCgpKTsKKyAgICByZXN1bHQgPSBhZG9wdENG
KENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVSW50OCo+KHVybEJ5dGVzLmRhdGEoKSksIHVybEJ5dGVzLnNpemUoKSwga0NGU3Ry
aW5nRW5jb2RpbmdBU0NJSSwgYmFzZVVSTC5nZXQoKSwgdHJ1ZSkpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI2MjI1NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA1LTI5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGNvcnJlY3QgZW5jb2Rpbmcgd2hlbiBj
b252ZXJ0aW5nIGEgV1RGOjpVUkwgdG8gQ0ZVUkxSZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4NgorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvY29jb2EvVVJM
RXh0cmFzLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMDUtMjgg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgbWFrZVZh
bHVlUmVmRm9yVmFsdWUgc2hvdWxkIGJlIHJvYnVzdCBhZ2FpbnN0IHRoZSB0eXBlIGVuY29kaW5n
IG9mIGEgTlNOdW1iZXIgYmFja2VkIGJ5IGEgYm9vbGVhbgpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvY29jb2EvVVJMRXh0cmFzLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL2NvY29hL1VSTEV4dHJhcy5tbQkocmV2aXNpb24gMjYyMjUz
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvY29jb2EvVVJMRXh0cmFzLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDcsNiArMjA3LDI0IEBAIFRFU1QoV1RGX1VSTEV4dHJhcywgVVJM
RXh0cmFzX1BhcnNpbmdFcnIKIAogICAgIFdURjo6VVJMIHVybDIoVVJMKCksIHV0ZjE2U3RyaW5n
KHUiaHR0cDovL1x1MjI2N1x1MjIyRVx1RkU2MyIpKTsKICAgICBFWFBFQ1RfU1RSRVEoW1t1cmwy
IGFic29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSwgImh0dHA6Ly8lRTIlODklQTclRTIlODglQUUl
RUYlQjklQTMiKTsKKworICAgIHN0ZDo6YXJyYXk8VUNoYXIsIDM+IHV0ZjE2IHsgMHhDMiwgMHhC
NiwgMHgwMCB9OworICAgIFdURjo6VVJMIHVybDMoVVJMKCksIFN0cmluZyh1dGYxNi5kYXRhKCkp
KTsKKyAgICBFWFBFQ1RfRkFMU0UodXJsMy5zdHJpbmcoKS5pczhCaXQoKSk7CisgICAgRVhQRUNU
X0ZBTFNFKHVybDMuaXNWYWxpZCgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoW1t1cmwzIGFic29sdXRl
U3RyaW5nXSBVVEY4U3RyaW5nXSwgIiVDMyU4MiVDMiVCNiIpOworICAgIAorICAgIHN0ZDo6YXJy
YXk8TENoYXIsIDM+IGxhdGluMSB7IDB4QzIsIDB4QjYsIDB4MDAgfTsKKyAgICBXVEY6OlVSTCB1
cmw0KFVSTCgpLCBTdHJpbmcobGF0aW4xLmRhdGEoKSkpOworICAgIEVYUEVDVF9GQUxTRSh1cmw0
LmlzVmFsaWQoKSk7CisgICAgRVhQRUNUX1RSVUUodXJsNC5zdHJpbmcoKS5pczhCaXQoKSk7Cisj
aWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMDE1
MDAKKyAgICAvLyBDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzIGhhcyBpbmNvcnJlY3Qg
YmVoYXZpb3Igb24gTW9qYXZlCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTI0ODYjYzYKKyAgICBFWFBFQ1RfU1RSRVEoW1t1cmw0IGFic29sdXRl
U3RyaW5nXSBVVEY4U3RyaW5nXSwgIiVDMiVCNiIpOworI2Vsc2UKKyAgICBFWFBFQ1RfU1RSRVEo
W1t1cmw0IGFic29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSwgIiVDMyU4MiVDMiVCNiIpOworI2Vu
ZGlmCiB9CiAKIFRFU1QoV1RGX1VSTEV4dHJhcywgVVJMRXh0cmFzX05pbCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400651</attachid>
            <date>2020-05-29 23:14:57 -0700</date>
            <delta_ts>2020-05-29 23:59:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212486-20200529231456.patch</filename>
            <type>text/plain</type>
            <size>8544</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjIzMzMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTI5ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGNvcnJlY3QgZW5jb2Rpbmcg
d2hlbiBjb252ZXJ0aW5nIGEgV1RGOjpVUkwgdG8gQ0ZVUkxSZWYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogd3RmL2NmL0NGVVJMRXh0cmFzLmNwcDoKKyAg
ICAgICAgKFdURjo6Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKToKKyAgICAgICAgKiB3dGYvY2YvQ0ZV
UkxFeHRyYXMuaDoKKyAgICAgICAgKiB3dGYvY2YvVVJMQ0YuY3BwOgorICAgICAgICAoV1RGOjpV
Ukw6OmNyZWF0ZUNGVVJMIGNvbnN0KToKKyAgICAgICAgKiB3dGYvY29jb2EvVVJMQ29jb2EubW06
CisgICAgICAgIChXVEY6OlVSTDo6Y3JlYXRlQ0ZVUkwgY29uc3QpOgorCiAyMDIwLTA1LTI5ICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gSW1w
cm92ZSBsb2dnaW5nIHF1YWxpdHkgZm9yIG5vbi1lcGhlbWVyYWwgc2Vzc2lvbnMKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAJKHJldmlzaW9uIDI2MjMzMykKKysrIFNvdXJjZS9XVEYv
d3RmL2NmL0NGVVJMRXh0cmFzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTggKzMxLDYgQEAK
IAogbmFtZXNwYWNlIFdURiB7CiAKLVJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkxGcm9t
QnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplLCBDRlVSTFJlZiBiYXNlVVJMKQot
ewotICAgIC8vIE5PVEU6IFdlIHVzZSBVVEYtOCBoZXJlIHNpbmNlIHRoaXMgZW5jb2RpbmcgaXMg
dXNlZCB3aGVuIGNvbXB1dGluZyBzdHJpbmdzIHdoZW4gcmV0dXJuaW5nIFVSTCBjb21wb25lbnRz
Ci0gICAgLy8gKGUuZyBjYWxscyB0byBOU1VSTCAtcGF0aCkuIEhvd2V2ZXIsIHRoaXMgZnVuY3Rp
b24gaXMgbm90IHRvbGVyYW50IG9mIGlsbGVnYWwgVVRGLTggc2VxdWVuY2VzLCB3aGljaAotICAg
IC8vIGNvdWxkIGVpdGhlciBiZSBhIG1hbGZvcm1lZCBzdHJpbmcgb3IgYnl0ZXMgaW4gYSBkaWZm
ZXJlbnQgZW5jb2RpbmcsIGxpa2UgU2hpZnQtSklTLCBzbyB3ZSBmYWxsIGJhY2sKLSAgICAvLyBv
bnRvIHVzaW5nIElTTyBMYXRpbi0xIGluIHRob3NlIGNhc2VzLgotICAgIFJldGFpblB0cjxDRlVS
TFJlZj4gcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51
bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKSwgc2l6ZSwga0NGU3Ry
aW5nRW5jb2RpbmdVVEY4LCBiYXNlVVJMLCB0cnVlKSk7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAg
ICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxs
cHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0YSksIHNpemUsIGtDRlN0cmlu
Z0VuY29kaW5nSVNPTGF0aW4xLCBiYXNlVVJMLCB0cnVlKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQogdm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiB1cmwsIFVSTENoYXJCdWZmZXImIHJlc3Vs
dCkKIHsKICAgICBDRkluZGV4IGJ5dGVzTGVuZ3RoID0gQ0ZVUkxHZXRCeXRlcyh1cmwsIG51bGxw
dHIsIDApOwpJbmRleDogU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5oCShyZXZpc2lvbiAyNjIzMzMpCisr
KyBTb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3
ICszNCw2IEBAIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgVVJMOwogdHlwZWRlZiBWZWN0b3I8Y2hh
ciwgNTEyPiBVUkxDaGFyQnVmZmVyOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgUmV0YWluUHRyPENG
VVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCwgQ0ZVUkxS
ZWYgYmFzZVVSTCA9IG51bGxwdHIpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZ2V0VVJMQnl0
ZXMoQ0ZVUkxSZWYsIFVSTENoYXJCdWZmZXImKTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGdl
dFVSTEJ5dGVzKENGVVJMUmVmLCBDU3RyaW5nJik7CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2Nm
L1VSTENGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAJKHJl
dmlzaW9uIDI2MjMzMykKKysrIFNvdXJjZS9XVEYvd3RmL2NmL1VSTENGLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTIsMTAgKzUyLDEwIEBAIFJldGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVD
RlVSTCgpIGMKIHsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMOwogICAgIGlmIChMSUtF
TFkobV9zdHJpbmcuaXM4Qml0KCkpKQotICAgICAgICBjZlVSTCA9IFdURjo6Y3JlYXRlQ0ZVUkxG
cm9tQnVmZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG1fc3RyaW5nLmNoYXJhY3Rl
cnM4KCkpLCBtX3N0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIGNmVVJMID0gYWRvcHRDRihDRlVS
TENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUludDgqPihtX3N0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbV9zdHJpbmcubGVuZ3RoKCksIGtD
RlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyLCB0cnVlKSk7CiAgICAgZWxzZSB7CiAg
ICAgICAgIENTdHJpbmcgdXRmOCA9IG1fc3RyaW5nLnV0ZjgoKTsKLSAgICAgICAgY2ZVUkwgPSBX
VEY6OmNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcih1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7Cisg
ICAgICAgIGNmVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51
bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPih1dGY4LmRhdGEoKSksIHV0Zjgu
bGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSkpOwogICAgIH0K
IAogICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIWlzQ0ZVUkxTYW1lT3JpZ2lu
KGNmVVJMLmdldCgpLCAqdGhpcykpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQkocmV2
aXNpb24gMjYyMzMzKQorKysgU291cmNlL1dURi93dGYvY29jb2EvVVJMQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTcwLDEwICs3MCwxMCBAQCBSZXRhaW5QdHI8Q0ZVUkxSZWY+IFVSTDo6Y3Jl
YXRlQ0ZVUkwoKSBjCiAKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMOwogICAgIGlmIChM
SUtFTFkobV9zdHJpbmcuaXM4Qml0KCkpKQotICAgICAgICBjZlVSTCA9IFdURjo6Y3JlYXRlQ0ZV
UkxGcm9tQnVmZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG1fc3RyaW5nLmNoYXJh
Y3RlcnM4KCkpLCBtX3N0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIGNmVVJMID0gYWRvcHRDRihD
RlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUludDgqPihtX3N0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbV9zdHJpbmcubGVuZ3RoKCks
IGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyLCB0cnVlKSk7CiAgICAgZWxzZSB7
CiAgICAgICAgIENTdHJpbmcgdXRmOCA9IG1fc3RyaW5nLnV0ZjgoKTsKLSAgICAgICAgY2ZVUkwg
PSBXVEY6OmNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcih1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7
CisgICAgICAgIGNmVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVz
KG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPih1dGY4LmRhdGEoKSksIHV0
ZjgubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSkpOwogICAg
IH0KIAogICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIVdURjo6aXNDRlVSTFNh
bWVPcmlnaW4oY2ZVUkwuZ2V0KCksICp0aGlzKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjIz
MzMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE1IEBACisyMDIwLTA1LTI5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVXNlIGNvcnJlY3QgZW5jb2Rpbmcgd2hlbiBjb252ZXJ0aW5nIGEg
V1RGOjpVUkwgdG8gQ0ZVUkxSZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMjQ4NgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW06CisgICAgICAgIChXS1VSTENv
cHlDRlVSTCk6CisgICAgICAgICogU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAg
ICAgICAoSVBDOjpkZWNvZGUpOgorCiAyMDIwLTA1LTI5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gSW1wcm92ZSBsb2dnaW5nIHF1YWxpdHkg
Zm9yIG5vbi1lcGhlbWVyYWwgc2Vzc2lvbnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL2NmL1dLVVJMQ0YubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvY2YvV0tVUkxDRi5tbQkocmV2aXNpb24gMjYyMzMzKQorKysgU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvY2YvV0tVUkxDRi5tbQkod29ya2luZyBjb3B5KQpAQCAtNjUsNSArNjUsNSBAQCBD
RlVSTFJlZiBXS1VSTENvcHlDRlVSTChDRkFsbG9jYXRvclJlZiBhCiAgICAgLy8gVVRGLTggd2hp
Y2ggdXNlcyBsZXNzIG1lbW9yeSBhbmQgaXMgd2hhdCBXZWJLaXQgY2xpZW50cyBtaWdodCBleHBl
Y3QuCiAKICAgICBDU3RyaW5nIGJ1ZmZlciA9IFdlYktpdDo6dG9JbXBsKFVSTFJlZiktPnN0cmlu
ZygpLnV0ZjgoKTsKLSAgICByZXR1cm4gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpLCAwKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIENGVVJM
Q3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBVSW50OCo+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29k
aW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9j
Zi9Bcmd1bWVudENvZGVyc0NGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAkocmV2aXNpb24gMjYyMzMzKQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYz
OSw3ICs2MzksNyBAQCBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8CiAg
ICAgfQogI2VuZGlmCiAKLSAgICByZXN1bHQgPSBXVEY6OmNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPih1cmxCeXRlcy5kYXRhKCkpLCB1cmxCeXRlcy5z
aXplKCksIGJhc2VVUkwuZ2V0KCkpOworICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVB
YnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4
Kj4odXJsQnl0ZXMuZGF0YSgpKSwgdXJsQnl0ZXMuc2l6ZSgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0FT
Q0lJLCBiYXNlVVJMLmdldCgpLCB0cnVlKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApJbmRl
eDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNp
b24gMjYyMzMzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMjAtMDUtMjkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KKworICAgICAgICBVc2UgY29ycmVjdCBlbmNvZGluZyB3aGVuIGNvbnZlcnRpbmcgYSBX
VEY6OlVSTCB0byBDRlVSTFJlZgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEyNDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9jb2NvYS9VUkxFeHRyYXMubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMC0wNS0yOSAgQW5keSBFc3RlcyAg
PGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW0FwcGxlIFBheV0gUmVtb3ZlIGNvbmRpdGlv
bmFscyBmb3IgRU5BQkxFX0FQUExFX1BBWV9TRVNTSU9OX1YoM3w0KQpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvY29jb2EvVVJMRXh0cmFzLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2NvY29hL1VSTEV4dHJhcy5tbQkocmV2aXNpb24g
MjYyMzMzKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvY29jb2EvVVJMRXh0cmFz
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsNiArMjA3LDI0IEBAIFRFU1QoV1RGX1VSTEV4dHJh
cywgVVJMRXh0cmFzX1BhcnNpbmdFcnIKIAogICAgIFdURjo6VVJMIHVybDIoVVJMKCksIHV0ZjE2
U3RyaW5nKHUiaHR0cDovL1x1MjI2N1x1MjIyRVx1RkU2MyIpKTsKICAgICBFWFBFQ1RfU1RSRVEo
W1t1cmwyIGFic29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSwgImh0dHA6Ly8lRTIlODklQTclRTIl
ODglQUUlRUYlQjklQTMiKTsKKworICAgIHN0ZDo6YXJyYXk8VUNoYXIsIDM+IHV0ZjE2IHsgMHhD
MiwgMHhCNiwgMHgwMCB9OworICAgIFdURjo6VVJMIHVybDMoVVJMKCksIFN0cmluZyh1dGYxNi5k
YXRhKCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXJsMy5zdHJpbmcoKS5pczhCaXQoKSk7CisgICAg
RVhQRUNUX0ZBTFNFKHVybDMuaXNWYWxpZCgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoW1t1cmwzIGFi
c29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSwgIiVDMyU4MiVDMiVCNiIpOworICAgIAorICAgIHN0
ZDo6YXJyYXk8TENoYXIsIDM+IGxhdGluMSB7IDB4QzIsIDB4QjYsIDB4MDAgfTsKKyAgICBXVEY6
OlVSTCB1cmw0KFVSTCgpLCBTdHJpbmcobGF0aW4xLmRhdGEoKSkpOworICAgIEVYUEVDVF9GQUxT
RSh1cmw0LmlzVmFsaWQoKSk7CisgICAgRVhQRUNUX1RSVUUodXJsNC5zdHJpbmcoKS5pczhCaXQo
KSk7CisjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQg
PCAxMDE1MDAKKyAgICAvLyBDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzIGhhcyBpbmNv
cnJlY3QgYmVoYXZpb3Igb24gTW9qYXZlCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODYjYzYKKyAgICBFWFBFQ1RfU1RSRVEoW1t1cmw0IGFi
c29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSwgIiVDMiVCNiIpOworI2Vsc2UKKyAgICBFWFBFQ1Rf
U1RSRVEoW1t1cmw0IGFic29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSwgIiVDMyU4MiVDMiVCNiIp
OworI2VuZGlmCiB9CiAKIFRFU1QoV1RGX1VSTEV4dHJhcywgVVJMRXh0cmFzX05pbCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>