<?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>201746</bug_id>
          
          <creation_ts>2019-09-12 18:00:56 -0700</creation_ts>
          <short_desc>AuxiliaryProcessProxy::sendWithAsyncReply should queue up messages if sent while the process is starting like it does messages without replies</short_desc>
          <delta_ts>2019-09-13 09:07:07 -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>cdumez</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1570452</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-12 18:00:56 -0700</bug_when>
    <thetext>AuxiliaryProcessProxy::sendWithAsyncReply should queue up messages if sent while the process is starting like it does messages without replies</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570453</commentid>
    <comment_count>1</comment_count>
      <attachid>378696</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-12 18:01:07 -0700</bug_when>
    <thetext>Created attachment 378696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570456</commentid>
    <comment_count>2</comment_count>
      <attachid>378696</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-12 18:11:28 -0700</bug_when>
    <thetext>Comment on attachment 378696
Patch

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

&gt; Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:152
&gt; +        if (auto&amp;&amp; info = WTFMove(asyncReplyInfo))

Not sure why this isn&apos;t simply:
if (asyncReplyInfo)

&gt; Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:222
&gt; +        if (auto&amp;&amp; info = WTFMove(pendingMessage.asyncReplyInfo))

ditto.

&gt; Source/WebKit/UIProcess/AuxiliaryProcessProxy.h:175
&gt; +    sendMessage(WTFMove(encoder), sendOptions, {{ [completionHandler = WTFMove(completionHandler)] (IPC::Decoder* decoder) mutable {

If sendMessage() returns false (because the process has been terminated, it looks to me that the completion handler will never be called. We should probably T::cancelReply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570457</commentid>
    <comment_count>3</comment_count>
      <attachid>378696</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-12 18:17:40 -0700</bug_when>
    <thetext>Comment on attachment 378696
Patch

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

&gt; Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:153
&gt; +            IPC::addAsyncReplyHandler(*connection(), info-&gt;second, WTFMove(info-&gt;first));

and then WTFMove(asyncReplyInfo-&gt;first) here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570507</commentid>
    <comment_count>4</comment_count>
      <attachid>378716</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-12 22:42:42 -0700</bug_when>
    <thetext>Created attachment 378716
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570555</commentid>
    <comment_count>5</comment_count>
      <attachid>378716</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-13 05:26:44 -0700</bug_when>
    <thetext>Comment on attachment 378716
Patch

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

&gt; Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:213
&gt; +        OptionSet&lt;IPC::SendOption&gt; sendOptions = pendingMessage.sendOptions;

both can be auto.

&gt; Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:230
&gt;          m_connection-&gt;sendMessage(WTFMove(message), sendOptions);

I guess sendMessage can only return true here.
I would assert it though. In theory, we could add the async reply handler that would only complete once the connection is destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570585</commentid>
    <comment_count>6</comment_count>
      <attachid>378716</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-13 08:28:29 -0700</bug_when>
    <thetext>Comment on attachment 378716
Patch

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

&gt; Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:211
&gt; +    for (auto&amp;&amp; pendingMessage : std::exchange(m_pendingMessages, { })) {

Why auto&amp;&amp; and not auto? You&apos;re doing a std::exchange().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570597</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-13 09:01:25 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; Comment on attachment 378716 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=378716&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:211
&gt; &gt; +    for (auto&amp;&amp; pendingMessage : std::exchange(m_pendingMessages, { })) {
&gt; 
&gt; Why auto&amp;&amp; and not auto? You&apos;re doing a std::exchange().

Otherwise I get this:
error: call to implicitly-deleted copy constructor of &apos;WebKit::AuxiliaryProcessProxy::PendingMessage&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570599</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-13 09:03:29 -0700</bug_when>
    <thetext>http://trac.webkit.org/r249835</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570600</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-13 09:04:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/55340747&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570601</commentid>
    <comment_count>10</comment_count>
      <attachid>378716</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-13 09:07:07 -0700</bug_when>
    <thetext>Comment on attachment 378716
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:211
&gt;&gt;&gt; +    for (auto&amp;&amp; pendingMessage : std::exchange(m_pendingMessages, { })) {
&gt;&gt; 
&gt;&gt; Why auto&amp;&amp; and not auto? You&apos;re doing a std::exchange().
&gt; 
&gt; Otherwise I get this:
&gt; error: call to implicitly-deleted copy constructor of &apos;WebKit::AuxiliaryProcessProxy::PendingMessage&apos;

Ah, should probably be auto&amp; then. I missed that it was a for() and not an if().</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378696</attachid>
            <date>2019-09-12 18:01:07 -0700</date>
            <delta_ts>2019-09-12 22:42:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201746-20190912180107.patch</filename>
            <type>text/plain</type>
            <size>6867</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk4MjMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE5LTA5LTEyICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5OjpzZW5kV2l0aEFzeW5jUmVwbHkgc2hvdWxkIHF1ZXVlIHVwIG1lc3NhZ2VzIGlm
IHNlbnQgd2hpbGUgdGhlIHByb2Nlc3MgaXMgc3RhcnRpbmcgbGlrZSBpdCBkb2VzIG1lc3NhZ2Vz
IHdpdGhvdXQgcmVwbGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAxNzQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChX
ZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1JlcGx5KToKKwogMjAxOS0wOS0x
MiAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMjQ5ODAxLgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNDk3NzYpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDAsMTUgKzE0MCwxNyBAQCBib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6
aXNSdW5uaW5nUHJvCiAjZW5kaWYKIH0KIAotYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNl
bmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29kZXIsIE9wdGlvblNl
dDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zKQorYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJv
eHk6OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29kZXIsIE9w
dGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3lu
Y1JlcGx5SW5mbykKIHsKICAgICBzd2l0Y2ggKHN0YXRlKCkpIHsKICAgICBjYXNlIFN0YXRlOjpM
YXVuY2hpbmc6CiAgICAgICAgIC8vIElmIHdlJ3JlIHdhaXRpbmcgZm9yIHRoZSBjaGlsZCBwcm9j
ZXNzIHRvIGxhdW5jaCwgd2UgbmVlZCB0byBzdGFzaCBhd2F5IHRoZSBtZXNzYWdlcyBzbyB3ZSBj
YW4gc2VuZCB0aGVtIG9uY2Ugd2UgaGF2ZSBhIGNvbm5lY3Rpb24uCi0gICAgICAgIG1fcGVuZGlu
Z01lc3NhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0
aW9ucykpOworICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQoeyBXVEZNb3ZlKGVuY29k
ZXIpLCBzZW5kT3B0aW9ucywgV1RGTW92ZShhc3luY1JlcGx5SW5mbykgfSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgY2FzZSBTdGF0ZTo6UnVubmluZzoKKyAgICAgICAgaWYgKGF1dG8m
JiBpbmZvID0gV1RGTW92ZShhc3luY1JlcGx5SW5mbykpCisgICAgICAgICAgICBJUEM6OmFkZEFz
eW5jUmVwbHlIYW5kbGVyKCpjb25uZWN0aW9uKCksIGluZm8tPnNlY29uZCwgV1RGTW92ZShpbmZv
LT5maXJzdCkpOwogICAgICAgICByZXR1cm4gY29ubmVjdGlvbigpLT5zZW5kTWVzc2FnZShXVEZN
b3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CiAKICAgICBjYXNlIFN0YXRlOjpUZXJtaW5hdGVk
OgpAQCAtMjAwLDkgKzIwMiw5IEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpkaWRGaW5p
c2hMYXUKICAgICBjb25uZWN0aW9uV2lsbE9wZW4oKm1fY29ubmVjdGlvbik7CiAgICAgbV9jb25u
ZWN0aW9uLT5vcGVuKCk7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcGVuZGluZ01l
c3NhZ2VzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKG1fcGVuZGluZ01lc3NhZ2VzW2ldLmZpcnN0KTsKLSAgICAg
ICAgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSBtX3BlbmRpbmdNZXNz
YWdlc1tpXS5zZWNvbmQ7CisgICAgZm9yIChhdXRvJiYgcGVuZGluZ01lc3NhZ2UgOiBzdGQ6OmV4
Y2hhbmdlKG1fcGVuZGluZ01lc3NhZ2VzLCB7IH0pKSB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBlbmRpbmdNZXNzYWdlLmVuY29kZXIp
OworICAgICAgICBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHBlbmRp
bmdNZXNzYWdlLnNlbmRPcHRpb25zOwogI2lmIEhBVkUoU0FOREJPWF9JU1NVRV9NQUNIX0VYVEVO
U0lPTl9UT19QUk9DRVNTX0JZX1BJRCkKICAgICAgICAgaWYgKG1lc3NhZ2UtPm1lc3NhZ2VOYW1l
KCkgPT0gIkxvYWRSZXF1ZXN0V2FpdGluZ0ZvclBJRCIpIHsKICAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gbWVzc2FnZS0+YnVmZmVyKCk7CkBAIC0yMTcsMTAgKzIxOSwxMCBAQCB2b2lkIEF1eGls
aWFyeVByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICNlbmRpZgorICAgICAgICBpZiAoYXV0byYmIGluZm8gPSBXVEZNb3ZlKHBlbmRpbmdNZXNzYWdl
LmFzeW5jUmVwbHlJbmZvKSkKKyAgICAgICAgICAgIElQQzo6YWRkQXN5bmNSZXBseUhhbmRsZXIo
KmNvbm5lY3Rpb24oKSwgaW5mby0+c2Vjb25kLCBXVEZNb3ZlKGluZm8tPmZpcnN0KSk7CiAgICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSwgc2VuZE9wdGlv
bnMpOwogICAgIH0KLQotICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiB9CiAKIHZvaWQg
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzaHV0RG93blByb2Nlc3MoKQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI0
OTc3NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6
OlJlcGx5JiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywg
T3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4gdm9pZCBzZW5kV2l0aEFz
eW5jUmVwbHkoVCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFyZ3MuLi4pPiYmKTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPiB2b2lkIHNlbmRXaXRoQXN5bmNS
ZXBseShUJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXJncy4uLik+JiYsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQgPSAwLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiA9IHsgfSk7CiAgICAg
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KICAgICBib29sIHNlbmQoVCYm
IG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PElQ
Qzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pCkBAIC0xMDIsNyArMTAyLDcgQEAgcHVi
bGljOgogICAgIFByb2Nlc3NJRCBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvY2Vzc0xhdW5jaGVyID8gbV9wcm9jZXNzTGF1bmNoZXItPnByb2Nlc3NJZGVudGlmaWVyKCkg
OiAwOyB9CiAKICAgICBib29sIGNhblNlbmRNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gc3RhdGUo
KSAhPSBTdGF0ZTo6VGVybWluYXRlZDt9Ci0gICAgYm9vbCBzZW5kTWVzc2FnZShzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4pOworICAgIGJv
b2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4sIE9wdGlvblNldDxJ
UEM6OlNlbmRPcHRpb24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbyA9IFdURjo6bnVs
bG9wdCk7CiAKICAgICB2b2lkIHNodXREb3duUHJvY2VzcygpOwogCkBAIC0xMjUsNyArMTI1LDEz
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NXaWxsU2h1dERvd24oSVBDOjpD
b25uZWN0aW9uJikgPSAwOwogICAgIHN0YXRpYyBib29sIGlzUnVubmluZ1Byb2Nlc3NQSUQoUHJv
Y2Vzc0lEKTsKIAotICAgIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4sIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+Pj4gbV9wZW5kaW5nTWVzc2FnZXM7Cisg
ICAgc3RydWN0IFBlbmRpbmdNZXNzYWdlIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4gZW5jb2RlcjsKKyAgICAgICAgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2Vu
ZE9wdGlvbnM7CisgICAgICAgIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiBhc3luY1JlcGx5SW5mbzsKKyAgICB9Owor
ICAgIAorICAgIFZlY3RvcjxQZW5kaW5nTWVzc2FnZT4gbV9wZW5kaW5nTWVzc2FnZXM7CiAgICAg
UmVmUHRyPFByb2Nlc3NMYXVuY2hlcj4gbV9wcm9jZXNzTGF1bmNoZXI7CiAgICAgUmVmUHRyPElQ
Qzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFw
IG1fbWVzc2FnZVJlY2VpdmVyTWFwOwpAQCAtMTU4LDE0ICsxNjQsMjAgQEAgYm9vbCBBdXhpbGlh
cnlQcm9jZXNzUHJveHk6OnNlbmRTeW5jKFUmJgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZS4uLiBBcmdzPgotdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5
bmNSZXBseShUJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBcmdzLi4uKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kV2l0aEFz
eW5jUmVwbHkoVCYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXJncy4uLik+JiYg
Y29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJUEM6
OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zKQogewotICAgIGlmICghbV9jb25uZWN0aW9uKSB7Ci0g
ICAgICAgIFQ6OmNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01l
c3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShz
dGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1l
KCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9
IElQQzo6bmV4dEFzeW5jUmVwbHlIYW5kbGVySUQoKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUobGlz
dGVuZXJJRCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOworICAg
IHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zLCB7eyBbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKElQQzo6RGVjb2RlciogZGVj
b2RlcikgbXV0YWJsZSB7CisgICAgICAgIGlmIChkZWNvZGVyICYmICFkZWNvZGVyLT5pc0ludmFs
aWQoKSkKKyAgICAgICAgICAgIFQ6OmNhbGxSZXBseSgqZGVjb2RlciwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBUOjpjYW5jZWxSZXBseShX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSwgbGlzdGVuZXJJRCB9fSk7CiB9CiAg
ICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378716</attachid>
            <date>2019-09-12 22:42:42 -0700</date>
            <delta_ts>2019-09-13 05:26:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201746-20190912224241.patch</filename>
            <type>text/plain</type>
            <size>7169</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk4MjMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE5LTA5LTEyICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5OjpzZW5kV2l0aEFzeW5jUmVwbHkgc2hvdWxkIHF1ZXVlIHVwIG1lc3NhZ2VzIGlm
IHNlbnQgd2hpbGUgdGhlIHByb2Nlc3MgaXMgc3RhcnRpbmcgbGlrZSBpdCBkb2VzIG1lc3NhZ2Vz
IHdpdGhvdXQgcmVwbGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAxNzQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChX
ZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1JlcGx5KToKKwogMjAxOS0wOS0x
MiAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMjQ5ODAxLgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNDk3NzYpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDAsMjEgKzE0MCwyOSBAQCBib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6
aXNSdW5uaW5nUHJvCiAjZW5kaWYKIH0KIAotYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNl
bmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29kZXIsIE9wdGlvblNl
dDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zKQorYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJv
eHk6OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29kZXIsIE9w
dGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3lu
Y1JlcGx5SW5mbykKIHsKICAgICBzd2l0Y2ggKHN0YXRlKCkpIHsKICAgICBjYXNlIFN0YXRlOjpM
YXVuY2hpbmc6CiAgICAgICAgIC8vIElmIHdlJ3JlIHdhaXRpbmcgZm9yIHRoZSBjaGlsZCBwcm9j
ZXNzIHRvIGxhdW5jaCwgd2UgbmVlZCB0byBzdGFzaCBhd2F5IHRoZSBtZXNzYWdlcyBzbyB3ZSBj
YW4gc2VuZCB0aGVtIG9uY2Ugd2UgaGF2ZSBhIGNvbm5lY3Rpb24uCi0gICAgICAgIG1fcGVuZGlu
Z01lc3NhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0
aW9ucykpOworICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQoeyBXVEZNb3ZlKGVuY29k
ZXIpLCBzZW5kT3B0aW9ucywgV1RGTW92ZShhc3luY1JlcGx5SW5mbykgfSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgY2FzZSBTdGF0ZTo6UnVubmluZzoKLSAgICAgICAgcmV0dXJuIGNv
bm5lY3Rpb24oKS0+c2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwor
ICAgICAgICBpZiAoY29ubmVjdGlvbigpLT5zZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBz
ZW5kT3B0aW9ucykpIHsKKyAgICAgICAgICAgIGlmIChhc3luY1JlcGx5SW5mbykKKyAgICAgICAg
ICAgICAgICBJUEM6OmFkZEFzeW5jUmVwbHlIYW5kbGVyKCpjb25uZWN0aW9uKCksIGFzeW5jUmVw
bHlJbmZvLT5zZWNvbmQsIFdURk1vdmUoYXN5bmNSZXBseUluZm8tPmZpcnN0KSk7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKIAogICAgIGNhc2Ug
U3RhdGU6OlRlcm1pbmF0ZWQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYnJlYWs7
CiAgICAgfQogCisgICAgaWYgKGFzeW5jUmVwbHlJbmZvKQorICAgICAgICBhc3luY1JlcGx5SW5m
by0+Zmlyc3QobnVsbHB0cik7CisgICAgCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0yMDAs
OSArMjA4LDkgQEAgdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdQogICAg
IGNvbm5lY3Rpb25XaWxsT3BlbigqbV9jb25uZWN0aW9uKTsKICAgICBtX2Nvbm5lY3Rpb24tPm9w
ZW4oKTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wZW5kaW5nTWVzc2FnZXMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gbWVzc2Fn
ZSA9IFdURk1vdmUobV9wZW5kaW5nTWVzc2FnZXNbaV0uZmlyc3QpOwotICAgICAgICBPcHRpb25T
ZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IG1fcGVuZGluZ01lc3NhZ2VzW2ldLnNl
Y29uZDsKKyAgICBmb3IgKGF1dG8mJiBwZW5kaW5nTWVzc2FnZSA6IHN0ZDo6ZXhjaGFuZ2UobV9w
ZW5kaW5nTWVzc2FnZXMsIHsgfSkpIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4gbWVzc2FnZSA9IFdURk1vdmUocGVuZGluZ01lc3NhZ2UuZW5jb2Rlcik7CisgICAgICAg
IE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0gcGVuZGluZ01lc3NhZ2Uu
c2VuZE9wdGlvbnM7CiAjaWYgSEFWRShTQU5EQk9YX0lTU1VFX01BQ0hfRVhURU5TSU9OX1RPX1BS
T0NFU1NfQllfUElEKQogICAgICAgICBpZiAobWVzc2FnZS0+bWVzc2FnZU5hbWUoKSA9PSAiTG9h
ZFJlcXVlc3RXYWl0aW5nRm9yUElEIikgewogICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtZXNz
YWdlLT5idWZmZXIoKTsKQEAgLTIxNywxMCArMjI1LDEwIEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5OjpkaWRGaW5pc2hMYXUKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2VuZGlmCisg
ICAgICAgIGlmIChwZW5kaW5nTWVzc2FnZS5hc3luY1JlcGx5SW5mbykKKyAgICAgICAgICAgIElQ
Qzo6YWRkQXN5bmNSZXBseUhhbmRsZXIoKmNvbm5lY3Rpb24oKSwgcGVuZGluZ01lc3NhZ2UuYXN5
bmNSZXBseUluZm8tPnNlY29uZCwgV1RGTW92ZShwZW5kaW5nTWVzc2FnZS5hc3luY1JlcGx5SW5m
by0+Zmlyc3QpKTsKICAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kTWVzc2FnZShXVEZNb3ZlKG1l
c3NhZ2UpLCBzZW5kT3B0aW9ucyk7CiAgICAgfQotCi0gICAgbV9wZW5kaW5nTWVzc2FnZXMuY2xl
YXIoKTsKIH0KIAogdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNodXREb3duUHJvY2Vzcygp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJv
eHkuaAkocmV2aXNpb24gMjQ5Nzc2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxp
YXJ5UHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGlj
OgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9u
cyA9IHsgfSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3luYyhUJiYgbWVz
c2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25k
cyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNP
cHRpb25zID0geyB9KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdz
PiB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXJn
cy4uLik+JiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+IHZv
aWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBcmdzLi4u
KT4mJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDAsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRp
b24+ID0geyB9KTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgog
ICAgIGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlv
bklELCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKQEAgLTEw
Miw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgUHJvY2Vzc0lEIHByb2Nlc3NJZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9wcm9jZXNzTGF1bmNoZXIgPyBtX3Byb2Nlc3NMYXVuY2hlci0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSA6IDA7IH0KIAogICAgIGJvb2wgY2FuU2VuZE1lc3NhZ2UoKSBjb25z
dCB7IHJldHVybiBzdGF0ZSgpICE9IFN0YXRlOjpUZXJtaW5hdGVkO30KLSAgICBib29sIHNlbmRN
ZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+LCBPcHRpb25TZXQ8SVBDOjpTZW5k
T3B0aW9uPik7CisgICAgYm9vbCBzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVw
bHlJbmZvID0gV1RGOjpudWxsb3B0KTsKIAogICAgIHZvaWQgc2h1dERvd25Qcm9jZXNzKCk7CiAK
QEAgLTEyNSw3ICsxMjUsMTMgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1dp
bGxTaHV0RG93bihJUEM6OkNvbm5lY3Rpb24mKSA9IDA7CiAgICAgc3RhdGljIGJvb2wgaXNSdW5u
aW5nUHJvY2Vzc1BJRChQcm9jZXNzSUQpOwogCi0gICAgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4+PiBtX3Bl
bmRpbmdNZXNzYWdlczsKKyAgICBzdHJ1Y3QgUGVuZGluZ01lc3NhZ2UgeworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBlbmNvZGVyOworICAgICAgICBPcHRpb25TZXQ8SVBD
OjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9uczsKKyAgICAgICAgT3B0aW9uYWw8c3RkOjpwYWlyPENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+IGFzeW5jUmVw
bHlJbmZvOworICAgIH07CisgICAgCisgICAgVmVjdG9yPFBlbmRpbmdNZXNzYWdlPiBtX3BlbmRp
bmdNZXNzYWdlczsKICAgICBSZWZQdHI8UHJvY2Vzc0xhdW5jaGVyPiBtX3Byb2Nlc3NMYXVuY2hl
cjsKICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXJNYXAgbV9tZXNzYWdlUmVjZWl2ZXJNYXA7CkBAIC0xNTgsMTQgKzE2NCwy
MCBAQCBib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFN5bmMoVSYmCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+Ci12b2lkIEF1eGlsaWFyeVByb2Nlc3NQ
cm94eTo6c2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEFyZ3MuLi4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBBdXhpbGlhcnlQcm9jZXNz
UHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChBcmdzLi4uKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpCiB7Ci0gICAgaWYgKCFt
X2Nvbm5lY3Rpb24pIHsKLSAgICAgICAgVDo6Y2FuY2VsUmVwbHkoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIENPTVBJTEVfQVNTRVJUKCFU
Ojppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAotICAgIGNvbm5lY3Rpb24oKS0+c2Vu
ZFdpdGhBc3luY1JlcGx5KHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVy
PihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICB1aW50
NjRfdCBsaXN0ZW5lcklEID0gSVBDOjpuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOworICAgIGVu
Y29kZXItPmVuY29kZShsaXN0ZW5lcklEKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5h
cmd1bWVudHMoKSk7CisgICAgc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlv
bnMsIHt7IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
SVBDOjpEZWNvZGVyKiBkZWNvZGVyKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGRlY29kZXIgJiYg
IWRlY29kZXItPmlzSW52YWxpZCgpKQorICAgICAgICAgICAgVDo6Y2FsbFJlcGx5KCpkZWNvZGVy
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IFQ6OmNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9LCBsaXN0
ZW5lcklEIH19KTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="394351"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
      

    </bug>

</bugzilla>