<?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>211388</bug_id>
          
          <creation_ts>2020-05-04 10:08:26 -0700</creation_ts>
          <short_desc>ResourceLoadStatisticsDatabaseStore checks &apos;hasHadUserInteraction&apos; without ensuring the domain has been added to the ITP database</short_desc>
          <delta_ts>2020-05-04 15:00: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>WebKit Misc.</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="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1648591</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-05-04 10:08:26 -0700</bug_when>
    <thetext>While debugging another problem, I noticed that this code in ResourceLoadStatisticsDatabaseStore::hasHadUserInteraction:

    if (m_hadUserInteractionStatement.bindText(1, domain.string()) != SQLITE_OK
        || m_hadUserInteractionStatement.step() != SQLITE_ROW) {
        RELEASE_LOG_ERROR_IF_ALLOWED(m_sessionID, &quot;%p - ResourceLoadStatisticsDatabaseStore::m_hadUserInteractionStatement failed, error message: %{private}s&quot;, this, m_database.lastErrorMsg());

This generates error logging for the expected case that a particular domain did not have user interaction.

We should avoid generating logging for normal program flow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648592</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-04 10:08:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/62849919&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648612</commentid>
    <comment_count>2</comment_count>
      <attachid>398389</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-05-04 10:33:36 -0700</bug_when>
    <thetext>Created attachment 398389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648617</commentid>
    <comment_count>3</comment_count>
      <attachid>398391</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-05-04 10:50:05 -0700</bug_when>
    <thetext>Created attachment 398391
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648622</commentid>
    <comment_count>4</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-04 11:00:02 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #0)
&gt; While debugging another problem, I noticed that this code in
&gt; ResourceLoadStatisticsDatabaseStore::hasHadUserInteraction:
&gt; 
&gt;     if (m_hadUserInteractionStatement.bindText(1, domain.string()) !=
&gt; SQLITE_OK
&gt;         || m_hadUserInteractionStatement.step() != SQLITE_ROW) {
&gt;         RELEASE_LOG_ERROR_IF_ALLOWED(m_sessionID, &quot;%p -
&gt; ResourceLoadStatisticsDatabaseStore::m_hadUserInteractionStatement failed,
&gt; error message: %{private}s&quot;, this, m_database.lastErrorMsg());
&gt; 
&gt; This generates error logging for the expected case that a particular domain
&gt; did not have user interaction.

I think this error should only arise if the domain does not exist in the ObservedDomains table, otherwise the row will exist with a userInteraction value of 0. Are you seeing this in logs? It might indicate a deeper issue if we are checking user interaction for a domain we haven&apos;t inserted yet.

&gt; 
&gt; We should avoid generating logging for normal program flow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648639</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-05-04 11:31:21 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #4)
&gt; &gt; This generates error logging for the expected case that a particular domain
&gt; &gt; did not have user interaction.
&gt; 
&gt; I think this error should only arise if the domain does not exist in the
&gt; ObservedDomains table, otherwise the row will exist with a userInteraction
&gt; value of 0. Are you seeing this in logs? It might indicate a deeper issue if
&gt; we are checking user interaction for a domain we haven&apos;t inserted yet.

Yes, I encountered the following error while debugging an unrelated issue with Google docs:

0x10a7fa000 - ResourceLoadStatisticsDatabaseStore::0x10a7fa000 - ResourceLoadStatisticsDatabaseStore::m_hadUserInteractionStatement failed, error message: no more rows available

From your comments, it sounds like this should be impossible (so the error logging is correct).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648658</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-05-04 11:59:45 -0700</bug_when>
    <thetext>One possible source is this:

void ResourceLoadStatisticsDatabaseStore::logUserInteraction(const TopFrameDomain&amp; domain, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)
{
    ASSERT(!RunLoop::isMain());

    bool didHavePreviousUserInteraction = hasHadUserInteraction(domain, OperatingDatesWindow::Long);
    auto result = ensureResourceStatisticsForRegistrableDomain(domain);
    if (!result.second) {


We do a &apos;hasHadUserInteraction&apos; check before the &apos;ensureResource...&apos; call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648661</commentid>
    <comment_count>7</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-04 12:01:07 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #6)
&gt; One possible source is this:
&gt; 
&gt; void ResourceLoadStatisticsDatabaseStore::logUserInteraction(const
&gt; TopFrameDomain&amp; domain, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)
&gt; {
&gt;     ASSERT(!RunLoop::isMain());
&gt; 
&gt;     bool didHavePreviousUserInteraction = hasHadUserInteraction(domain,
&gt; OperatingDatesWindow::Long);
&gt;     auto result = ensureResourceStatisticsForRegistrableDomain(domain);
&gt;     if (!result.second) {
&gt; 
&gt; 
&gt; We do a &apos;hasHadUserInteraction&apos; check before the &apos;ensureResource...&apos; call.

That seems like a bug, and could explain the error you&apos;re seeing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648662</commentid>
    <comment_count>8</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-05-04 12:03:17 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #6)
&gt; One possible source is this:
&gt; 
&gt; void ResourceLoadStatisticsDatabaseStore::logUserInteraction(const
&gt; TopFrameDomain&amp; domain, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)
&gt; {
&gt;     ASSERT(!RunLoop::isMain());
&gt; 
&gt;     bool didHavePreviousUserInteraction = hasHadUserInteraction(domain,
&gt; OperatingDatesWindow::Long);
&gt;     auto result = ensureResourceStatisticsForRegistrableDomain(domain);
&gt;     if (!result.second) {
&gt; 
&gt; 
&gt; We do a &apos;hasHadUserInteraction&apos; check before the &apos;ensureResource...&apos; call.

Could we just switch the two lines? That would make it behave like the in-memory store version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648667</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-05-04 12:07:13 -0700</bug_when>
    <thetext>Retitling to address the actual bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648669</commentid>
    <comment_count>10</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-04 12:12:54 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #8)
&gt; (In reply to Brent Fulgham from comment #6)
&gt; &gt; One possible source is this:
&gt; &gt; 
&gt; &gt; void ResourceLoadStatisticsDatabaseStore::logUserInteraction(const
&gt; &gt; TopFrameDomain&amp; domain, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)
&gt; &gt; {
&gt; &gt;     ASSERT(!RunLoop::isMain());
&gt; &gt; 
&gt; &gt;     bool didHavePreviousUserInteraction = hasHadUserInteraction(domain,
&gt; &gt; OperatingDatesWindow::Long);
&gt; &gt;     auto result = ensureResourceStatisticsForRegistrableDomain(domain);
&gt; &gt;     if (!result.second) {
&gt; &gt; 
&gt; &gt; 
&gt; &gt; We do a &apos;hasHadUserInteraction&apos; check before the &apos;ensureResource...&apos; call.
&gt; 
&gt; Could we just switch the two lines? That would make it behave like the
&gt; in-memory store version.

Yes, I think a switch is a good idea</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648670</commentid>
    <comment_count>11</comment_count>
      <attachid>398398</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-05-04 12:14:29 -0700</bug_when>
    <thetext>Created attachment 398398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648690</commentid>
    <comment_count>12</comment_count>
      <attachid>398398</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-04 12:57:41 -0700</bug_when>
    <thetext>Comment on attachment 398398
Patch

Good catch! This change matches the order in the memory store:
    auto&amp; statistics = ensureResourceStatisticsForRegistrableDomain(domain);
    bool didHavePreviousUserInteraction = statistics.hadUserInteraction;
    statistics.hadUserInteraction = true;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648753</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-04 15:00:31 -0700</bug_when>
    <thetext>Committed r261115: &lt;https://trac.webkit.org/changeset/261115&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398398.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398389</attachid>
            <date>2020-05-04 10:33:36 -0700</date>
            <delta_ts>2020-05-04 10:50:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211388-20200504103335.patch</filename>
            <type>text/plain</type>
            <size>4028</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVlNTYwOTZlMTdiZjUzZTRm
ZGY1MGM4Yzc2ZjVmNGUwMWE2NDE3YzguLmY1MzMxNWFhNjkyOWZjMmZmOWFhZTQ4ODdiMGQwNTgy
MjhiZGMzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDUtMDQgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29kZSBpbiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSB0cmVhdHMgJ25vIG1vcmUgcm93cycgYXMgYW4gZXJy
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTM4
OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjI4NDk5MTk+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmV2aXNlIGxvZ2ljIHNsaWdobHkgdG8gYXZv
aWQgY3JlYXRpbmcgc3B1cmlvdXMgbG9nIG1lc3NhZ2VzIGZvciB0aGUgbm9ybWFsIGNhc2UKKyAg
ICAgICAgb2YgYSBxdWVyeSByZXR1cm5pbmcgbm8gcmVzdWx0cy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6cmVsYXRpb25zaGlwRXhpc3RzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbikKKwogMjAy
MC0wNC0zMCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtX
ZWJBdXRobl0gT3B0aW1pemUgTG9jYWxBdXRoZW50aWNhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCA0NjI4MDI4NTc5
YTRmNDE0NjA4N2I1NjA1YTI3ZGE2YjViMjdmMmVmLi40NmIwNjNkNjkzZjVhYWMxNDk4NmRhZWZk
NmE2MGYyNzAwNzFjNTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzMyLDEzICs3MzIsMTUgQEAgYm9vbCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVsYXRpb25zaGlwRXhpc3RzKFdlYkNvcmU6OlNR
TGl0ZVN0YXQKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlmIChzdGF0
ZW1lbnQuYmluZEludCgxLCAqZmlyc3REb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8
IHN0YXRlbWVudC5iaW5kVGV4dCgyLCBzZWNvbmREb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9P
SwotICAgICAgICB8fCBzdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAgICAgICAg
fHwgc3RhdGVtZW50LmJpbmRUZXh0KDIsIHNlY29uZERvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRF
X09LKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQs
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWxhdGlvbnNoaXBF
eGlzdHMgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGJvb2wgcmVsYXRpb25zaGlwRXhp
c3RzID0gISFzdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApOworCisgICAgYm9vbCByZWxhdGlvbnNo
aXBFeGlzdHMgPSBmYWxzZTsKKyAgICBpZiAoc3RhdGVtZW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9X
KQorICAgICAgICByZWxhdGlvbnNoaXBFeGlzdHMgPSAhIXN0YXRlbWVudC5nZXRDb2x1bW5JbnQo
MCk7CiAKICAgICBpbnQgcmVzZXRSZXN1bHQgPSBzdGF0ZW1lbnQucmVzZXQoKTsKICAgICBBU1NF
UlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwpAQCAtMTg5
NSwxNiArMTg5NywxOCBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibAogewogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgaWYgKG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVt
ZW50LmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8
IG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptX2hhZFVzZXJJbnRlcmFjdGlvblN0
YXRlbWVudCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgaWYgKG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVt
ZW50LmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVu
dCBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKIAogICAgICAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2hh
ZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5yZXNldCgpOwogICAgICAgICBBU1NFUlRfVU5VU0VE
KHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24gPSAhIW1faGFkVXNl
ckludGVyYWN0aW9uU3RhdGVtZW50LmdldENvbHVtbkludCgwKTsKKyAgICBib29sIGhhZFVzZXJJ
bnRlcmFjdGlvbiA9IGZhbHNlOworICAgIGlmIChtX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVu
dC5zdGVwKCkgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgaGFkVXNlckludGVyYWN0aW9uID0gISFt
X2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7CisKICAgICBpZiAo
IWhhZFVzZXJJbnRlcmFjdGlvbikgewogICAgICAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2hhZFVz
ZXJJbnRlcmFjdGlvblN0YXRlbWVudC5yZXNldCgpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJl
c2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398391</attachid>
            <date>2020-05-04 10:50:05 -0700</date>
            <delta_ts>2020-05-04 12:14:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211388-20200504105004.patch</filename>
            <type>text/plain</type>
            <size>5224</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVlNTYwOTZlMTdiZjUzZTRm
ZGY1MGM4Yzc2ZjVmNGUwMWE2NDE3YzguLmY1MzMxNWFhNjkyOWZjMmZmOWFhZTQ4ODdiMGQwNTgy
MjhiZGMzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDUtMDQgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29kZSBpbiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSB0cmVhdHMgJ25vIG1vcmUgcm93cycgYXMgYW4gZXJy
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTM4
OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjI4NDk5MTk+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmV2aXNlIGxvZ2ljIHNsaWdobHkgdG8gYXZv
aWQgY3JlYXRpbmcgc3B1cmlvdXMgbG9nIG1lc3NhZ2VzIGZvciB0aGUgbm9ybWFsIGNhc2UKKyAg
ICAgICAgb2YgYSBxdWVyeSByZXR1cm5pbmcgbm8gcmVzdWx0cy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6cmVsYXRpb25zaGlwRXhpc3RzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbikKKwogMjAy
MC0wNC0zMCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtX
ZWJBdXRobl0gT3B0aW1pemUgTG9jYWxBdXRoZW50aWNhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCA0NjI4MDI4NTc5
YTRmNDE0NjA4N2I1NjA1YTI3ZGE2YjViMjdmMmVmLi5iYmQ2YmM5MTIxZjcyYjJlOWRiZTAyYWI2
YjZiZjE3NjM4MWU4YzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzI0LDYgKzcyNCwxMSBAQCBib29sIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRPYnNlcnZlZERvbWFpbihjb25zdCBSZXNv
dXJjZUxvYQogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgYm9vbCBzdGF0ZW1lbnREaWRT
dWNjZWVkKGludCByZXN1bHQpCit7CisgICAgcmV0dXJuIHJlc3VsdCA9PSBTUUxJVEVfT0sgfHwg
cmVzdWx0ID09IFNRTElURV9ET05FIHx8IHJlc3VsdCA9PSBTUUxJVEVfUk9XOworfQorCiBib29s
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWxhdGlvbnNoaXBFeGlzdHMo
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50JiBzdGF0ZW1lbnQsIE9wdGlvbmFsPHVuc2lnbmVkPiBm
aXJzdERvbWFpbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc2Vjb25kRG9tYWluKSBjb25z
dAogewogICAgIGlmICghZmlyc3REb21haW5JRCkKQEAgLTczMiwxMyArNzM3LDIyIEBAIGJvb2wg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbGF0aW9uc2hpcEV4aXN0cyhX
ZWJDb3JlOjpTUUxpdGVTdGF0CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAg
ICBpZiAoc3RhdGVtZW50LmJpbmRJbnQoMSwgKmZpcnN0RG9tYWluSUQpICE9IFNRTElURV9PSwot
ICAgICAgICB8fCBzdGF0ZW1lbnQuYmluZFRleHQoMiwgc2Vjb25kRG9tYWluLnN0cmluZygpKSAh
PSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7
CisgICAgICAgIHx8IHN0YXRlbWVudC5iaW5kVGV4dCgyLCBzZWNvbmREb21haW4uc3RyaW5nKCkp
ICE9IFNRTElURV9PSykgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1f
c2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVs
YXRpb25zaGlwRXhpc3RzIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9
cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBib29sIHJlbGF0
aW9uc2hpcEV4aXN0cyA9ICEhc3RhdGVtZW50LmdldENvbHVtbkludCgwKTsKKworICAgIGF1dG8g
cmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKTsKKyAgICBpZiAoIXN0YXRlbWVudERpZFN1Y2NlZWQo
cmVzdWx0KSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lv
bklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVsYXRpb25z
aGlwRXhpc3RzIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBib29sIHJlbGF0aW9uc2hpcEV4aXN0
cyA9IGZhbHNlOworICAgIGlmIChyZXN1bHQgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgcmVsYXRp
b25zaGlwRXhpc3RzID0gISFzdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApOwogCiAgICAgaW50IHJl
c2V0UmVzdWx0ID0gc3RhdGVtZW50LnJlc2V0KCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNldFJl
c3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKQEAgLTE4OTUsMTYgKzE5MDksMjcgQEAg
Ym9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNlckludGVy
YWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmwKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIAotICAgIGlmIChtX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5iaW5kVGV4dCgxLCBk
b21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2hhZFVzZXJJbnRlcmFj
dGlvblN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewotICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6bV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQgZmFpbGVkLCBl
cnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOworICAgIGlmIChtX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5iaW5kVGV4dCgxLCBk
b21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6bV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQgZmFpbGVkIHRvIGJpbmQs
IGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7CiAKICAgICAgICAgaW50IHJlc2V0UmVzdWx0ID0gbV9oYWRVc2VySW50ZXJhY3Rpb25T
dGF0ZW1lbnQucmVzZXQoKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVz
ZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIGJvb2wgaGFkVXNlckludGVyYWN0aW9uID0gISFtX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRl
bWVudC5nZXRDb2x1bW5JbnQoMCk7CisgICAgYXV0byByZXN1bHQgPSBtX2hhZFVzZXJJbnRlcmFj
dGlvblN0YXRlbWVudC5zdGVwKCk7CisgICAgaWYgKCFzdGF0ZW1lbnREaWRTdWNjZWVkKHJlc3Vs
dCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwg
IiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbGF0aW9uc2hpcEV4
aXN0cyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CisKKyAgICAgICAgaW50IHJlc2V0UmVzdWx0ID0gbV9oYWRVc2Vy
SW50ZXJhY3Rpb25TdGF0ZW1lbnQucmVzZXQoKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXNl
dFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGJvb2wgaGFkVXNlckludGVyYWN0aW9uID0gZmFsc2U7CisgICAgaWYg
KHJlc3VsdCA9PSBTUUxJVEVfUk9XKQorICAgICAgICBoYWRVc2VySW50ZXJhY3Rpb24gPSAhIW1f
aGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50LmdldENvbHVtbkludCgwKTsKKwogICAgIGlmICgh
aGFkVXNlckludGVyYWN0aW9uKSB7CiAgICAgICAgIGludCByZXNldFJlc3VsdCA9IG1faGFkVXNl
ckludGVyYWN0aW9uU3RhdGVtZW50LnJlc2V0KCk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVz
ZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398398</attachid>
            <date>2020-05-04 12:14:29 -0700</date>
            <delta_ts>2020-05-04 15:00:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211388-20200504121428.patch</filename>
            <type>text/plain</type>
            <size>2461</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhiNDUzNjRhN2EyZWVkZjBj
OWRkYjE1YmFlMWFkMWNmM2MzZWIwM2MuLjEzOTNjNDBkZTRkY2FlZThjZjZjZmZmNzkxNGZjMWVj
MjE3YWZlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDUtMDQgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAoSmF6emtv
bkUpOiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSBjaGVja3MgJ2hhc0hhZFVz
ZXJJbnRlcmFjdGlvbicgd2l0aG91dCBlbnN1cmluZyB0aGUgZG9tYWluIGhhcyBiZWVuIGFkZGVk
IHRvIHRoZSBJVFAgZGF0YWJhc2UgKDIxMTM4OCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTM4OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjI4
NDk5MTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QSBzcHVyaW91cyBsb2cgZW50cnkgaXMgY3JlYXRlZCBpZiB3ZSBjaGVjayAnaGFzSGFkVXNlcklu
dGVyYWN0aW9uJyBiZWZvcmUgaW5zZXJ0aW5nIGEgcm93IGZvciB0aGUgZG9tYWluCisgICAgICAg
IGJlaW5nIGNoZWNrZWQgKGlmIHRoYXQgZG9tYWluIGhhZCBub3QgcHJldmlvc2x5IGJlZW4gb2Jz
ZXJ2ZWQpLiBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIG9yZGVyIG9mIHRoZSB0d28KKyAgICAgICAg
Y29tbWFuZHMgdG8gYXZvaWQgdGhpcyBwb3NzaWJpbGl0eS4gVGhpcyBtYWtlcyB0aGUgZGF0YWJh
c2UgaW1wbGVtZW50YXRpb24gYmVoYXZlIGxpa2UgdGhlIGluLW1lbW9yeSB2ZXJzaW9uLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpsb2dVc2VySW50ZXJhY3Rpb24pOgorCiAyMDIwLTA1LTA0ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVGVzdFdl
YktpdEFQSS5XZWJLaXQuQ3VzdG9tRGlzcGxheU5hbWUgaXMgYSBmbGFreSB0aW1lb3V0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApp
bmRleCA0NjI4MDI4NTc5YTRmNDE0NjA4N2I1NjA1YTI3ZGE2YjViMjdmMmVmLi40YjI0Y2U1MTIx
MWVmMWMyMmY2MGEwNmUyYjNmMTNlY2MyZWRjNTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTE4NTIsMTIgKzE4NTIs
MTIgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bG9nVXNlcklu
dGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIAotICAgIGJvb2wgZGlkSGF2ZVByZXZpb3VzVXNlckludGVyYWN0aW9uID0gaGFz
SGFkVXNlckludGVyYWN0aW9uKGRvbWFpbiwgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6OkxvbmcpOwog
ICAgIGF1dG8gcmVzdWx0ID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVE
b21haW4oZG9tYWluKTsKICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsKICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmxvZ1VzZXJJbnRlcmFjdGlvbiB3YXMgbm90IGNvbXBsZXRl
ZCBkdWUgdG8gZmFpbGVkIGluc2VydCBhdHRlbXB0IiwgdGhpcyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CisgICAgYm9vbCBkaWRIYXZlUHJldmlvdXNVc2VySW50ZXJhY3Rpb24gPSBoYXNIYWRV
c2VySW50ZXJhY3Rpb24oZG9tYWluLCBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6TG9uZyk7CiAgICAg
c2V0VXNlckludGVyYWN0aW9uKGRvbWFpbiwgdHJ1ZSwgV2FsbFRpbWU6Om5vdygpKTsKICAgICBp
ZiAoZGlkSGF2ZVByZXZpb3VzVXNlckludGVyYWN0aW9uKSB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>