<?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>203830</bug_id>
          
          <creation_ts>2019-11-04 16:03:36 -0800</creation_ts>
          <short_desc>[WebAuthn] Guard towards unexpected -[_WKWebAuthenticationPanel cancel]</short_desc>
          <delta_ts>2019-11-08 17:25:47 -0800</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>
          
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>alex.gaynor</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>jonathan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1587213</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-11-04 16:03:36 -0800</bug_when>
    <thetext>-[_WKWebAuthenticationPanel cancel] can be called by clients in many different scenarios other than to express a real user cancel. We should expect that as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587214</commentid>
    <comment_count>1</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-11-04 16:03:51 -0800</bug_when>
    <thetext>&lt;rdar://problem/56797134&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587220</commentid>
    <comment_count>2</comment_count>
      <attachid>382785</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-11-04 16:18:08 -0800</bug_when>
    <thetext>Created attachment 382785
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587257</commentid>
    <comment_count>3</comment_count>
      <attachid>382785</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-11-04 18:53:07 -0800</bug_when>
    <thetext>Comment on attachment 382785
Patch

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

R=me

&gt; Source/WebKit/ChangeLog:3
&gt; +        [WebAuthn] Guard towards unexpected -[_WKWebAuthenticationPanel cancel]

Guard against

&gt; Source/WebKit/ChangeLog:9
&gt; +        -[_WKWebAuthenticationPanel cancel] was only expected to be called on behave of an

On behalf of

&gt; Source/WebKit/ChangeLog:11
&gt; +        unexpected scenarios as well. We should guard ourselves towards that.

We should guard against that.

&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:182
&gt; +    if (m_pendingRequestData.frameID) {

If (auto* pendingFrameID = m_pendingRequestData.frameID)

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:62
&gt; +    // Call delegates in the next run loop to prevent clients&apos; reentrance that would potentially modify the states

State should be singular in this use.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:63
&gt; +    // of current run loop in unexpected ways.

Of the current

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:94
&gt; +    // of current run loop in unexpected ways.

Ditto for both prior comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587263</commentid>
    <comment_count>4</comment_count>
      <attachid>382785</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-11-04 19:05:22 -0800</bug_when>
    <thetext>Comment on attachment 382785
Patch

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

Thanks Brent for r+ this patch.

&gt;&gt; Source/WebKit/ChangeLog:3
&gt;&gt; +        [WebAuthn] Guard towards unexpected -[_WKWebAuthenticationPanel cancel]
&gt; 
&gt; Guard against

Fixed.

&gt;&gt; Source/WebKit/ChangeLog:9
&gt;&gt; +        -[_WKWebAuthenticationPanel cancel] was only expected to be called on behave of an
&gt; 
&gt; On behalf of

Fixed.

&gt;&gt; Source/WebKit/ChangeLog:11
&gt;&gt; +        unexpected scenarios as well. We should guard ourselves towards that.
&gt; 
&gt; We should guard against that.

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:182
&gt;&gt; +    if (m_pendingRequestData.frameID) {
&gt; 
&gt; If (auto* pendingFrameID = m_pendingRequestData.frameID)

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:62
&gt;&gt; +    // Call delegates in the next run loop to prevent clients&apos; reentrance that would potentially modify the states
&gt; 
&gt; State should be singular in this use.

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:63
&gt;&gt; +    // of current run loop in unexpected ways.
&gt; 
&gt; Of the current

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:94
&gt;&gt; +    // of current run loop in unexpected ways.
&gt; 
&gt; Ditto for both prior comments.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587265</commentid>
    <comment_count>5</comment_count>
      <attachid>382785</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-11-04 19:10:29 -0800</bug_when>
    <thetext>Comment on attachment 382785
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:182
&gt;&gt;&gt; +    if (m_pendingRequestData.frameID) {
&gt;&gt; 
&gt;&gt; If (auto* pendingFrameID = m_pendingRequestData.frameID)
&gt; 
&gt; Fixed.

m_pendingRequestData.frameID is of type Optional&lt;&gt;. So I modified it to auto pendingFrameID = m_pendingRequestData.frameID.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587269</commentid>
    <comment_count>6</comment_count>
      <attachid>382797</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-11-04 19:20:24 -0800</bug_when>
    <thetext>Created attachment 382797
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587293</commentid>
    <comment_count>7</comment_count>
      <attachid>382797</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-04 20:05:15 -0800</bug_when>
    <thetext>Comment on attachment 382797
Patch for landing

Clearing flags on attachment: 382797

Committed r252035: &lt;https://trac.webkit.org/changeset/252035&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588918</commentid>
    <comment_count>8</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-11-08 17:25:47 -0800</bug_when>
    <thetext>*** Bug 204034 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382785</attachid>
            <date>2019-11-04 16:18:08 -0800</date>
            <delta_ts>2019-11-04 18:53:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203830-20191104161807.patch</filename>
            <type>text/plain</type>
            <size>13997</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFiZTU3Mjk0OTBlZTdjNzUy
NzZkNzY1NjBhMGYwMjUxNGM0MTNlYzguLmUwMjM5YzAwZDk0MzAyNzMyMDQ2NDNjNmRkMTIxOWRm
ZGQ4OTY0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTktMTEtMDQgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEd1YXJkIHRv
d2FyZHMgdW5leHBlY3RlZCAtW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY2FuY2VsXQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzODMwCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81Njc5NzEzND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAtW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY2FuY2Vs
XSB3YXMgb25seSBleHBlY3RlZCB0byBiZSBjYWxsZWQgb24gYmVoYXZlIG9mIGFuCisgICAgICAg
IGV4cGxpY2l0IHVzZXIgY2FuY2VsIGZyb20gdGhlIFVJLiBIb3dldmVyLCBjbGllbnRzIG1heSBj
YWxsIGl0IGluIGRpZmZlcmVudCBvdGhlcgorICAgICAgICB1bmV4cGVjdGVkIHNjZW5hcmlvcyBh
cyB3ZWxsLiBXZSBzaG91bGQgZ3VhcmQgb3Vyc2VsdmVzIHRvd2FyZHMgdGhhdC4KKworICAgICAg
ICBUbyBkbyBzbywgdHdvIGNvdW50ZXIgd2F5cyBhcmUgaW1wbGVtZW50ZWQ6CisgICAgICAgIDEp
IEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0IGlzIGNoYW5nZWQgdG8gaW52b2tl
IHRoZSBwZW5kaW5nIHJlcXVlc3QgaWYgdGhlcmUKKyAgICAgICAgaXMgbm8gR2xvYmFsRnJhbWVJ
RC4gVGhpcyBjYXNlIGNhbiBvbmx5IGJlIHJlYWNoZWQgdmlhIGNhbGxpbmcgLVtfV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsIGNhbmNlbF0KKyAgICAgICAgYmVmb3JlIEF1dGhlbnRpY2F0b3JNYW5h
Z2VyOjpjYW5jZWxSZXF1ZXN0LgorICAgICAgICAyKSBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50Ojp1cGRhdGVQYW5lbCBhbmQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6ZGlzbWlz
c1BhbmVsCisgICAgICAgIHdpbGwgY2FsbCBkZWxlZ2F0ZSBtZXRob2RzIGluIHRoZSBuZXh0IHJ1
biBsb29wIHRvIHByZXZlbnQgLVtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGNhbmNlbF0KKyAg
ICAgICAgYmVpbmcgY2FsbGVkIGluIHRoZSBkZWxlZ2F0ZXMuCisKKyAgICAgICAgQ292ZXJlZCBi
eSBuZXcgQVBJIHRlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRv
ck1hbmFnZXI6OmNhbmNlbFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9y
TWFuYWdlcjo6Y3JlYXRlU2VydmljZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRp
Y2F0b3JNYW5hZ2VyOjppbnZva2VQZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVs
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50
Ojp1cGRhdGVQYW5lbCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQ6OmRpc21pc3NQYW5lbCBjb25zdCk6CisKIDIwMTktMTEtMDMgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIEN0YXBBdXRo
ZW50aWNhdG9yOjp0cnlEb3duZ3JhZGUgc2hvdWxkIGRpc3Rpbmd1aXNoIHJlcXVlc3REYXRhKCku
b3B0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCmluZGV4IGNjZTgzNzk2
ZjEzOGJiZjdjZmYzMGJlM2FiZjJkNjIxNDgxZmU3MjMuLmY3YjBiZTNjNjMwNGZiMGI3NWY0Mjgz
YjA4YWZkODI1ZmM2MDY2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAK
QEAgLTE3NSwxNSArMTc1LDE2IEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmhhbmRsZVJl
cXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYmIGRhdGEsIENhCiAgICAgcnVuUGFu
ZWwoKTsKIH0KIAotdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y2FuY2VsUmVxdWVzdChjb25z
dCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciYgcGFnZUlELCBjb25zdCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+JiBmcmFtZUlEKQordm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y2FuY2VsUmVx
dWVzdChjb25zdCBQYWdlSWRlbnRpZmllciYgcGFnZUlELCBjb25zdCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+JiBmcmFtZUlEKQogewogICAgIGlmICghbV9wZW5kaW5nQ29tcGxldGlvbkhhbmRs
ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQobV9wZW5kaW5nUmVxdWVzdERhdGEuZnJh
bWVJRCk7Ci0gICAgaWYgKG1fcGVuZGluZ1JlcXVlc3REYXRhLmZyYW1lSUQtPnBhZ2VJRCAhPSBw
YWdlSUQpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoZnJhbWVJRCAmJiBmcmFtZUlEICE9IG1f
cGVuZGluZ1JlcXVlc3REYXRhLmZyYW1lSUQtPmZyYW1lSUQpCi0gICAgICAgIHJldHVybjsKKyAg
ICBpZiAobV9wZW5kaW5nUmVxdWVzdERhdGEuZnJhbWVJRCkgeworICAgICAgICBpZiAobV9wZW5k
aW5nUmVxdWVzdERhdGEuZnJhbWVJRC0+cGFnZUlEICE9IHBhZ2VJRCkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgaWYgKGZyYW1lSUQgJiYgZnJhbWVJRCAhPSBtX3BlbmRpbmdSZXF1ZXN0
RGF0YS5mcmFtZUlELT5mcmFtZUlEKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBp
bnZva2VQZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRF
cnJvciwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIl9zIH0pOwogICAgIGNsZWFyU3RhdGUoKTsKICAg
ICBtX3JlcXVlc3RUaW1lT3V0VGltZXIuc3RvcCgpOwpAQCAtMTk0LDYgKzE5NSw3IEBAIHZvaWQg
QXV0aGVudGljYXRvck1hbmFnZXI6OmNhbmNlbFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXImIHBhZ2VJRCwKIC8vICJJZiB0aGUgdXNlciBleGVyY2lzZXMgYSB1c2VyIGFnZW50
IHVzZXItaW50ZXJmYWNlIG9wdGlvbiB0byBjYW5jZWwgdGhlIHByb2Nlc3MsIi4KIHZvaWQgQXV0
aGVudGljYXRvck1hbmFnZXI6OmNhbmNlbFJlcXVlc3QoY29uc3QgQVBJOjpXZWJBdXRoZW50aWNh
dGlvblBhbmVsJiBwYW5lbCkKIHsKKyAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgaWYgKCFtX3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlciB8fCBtX3BlbmRpbmdSZXF1
ZXN0RGF0YS5wYW5lbC5nZXQoKSAhPSAmcGFuZWwpCiAgICAgICAgIHJldHVybjsKICAgICByZXNl
dFN0YXRlKCk7CkBAIC0yNjcsNyArMjY5LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6
YXV0aGVudGljYXRvclN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRpb25TdGF0dXMgc3QKICAg
ICAgICAgcGFuZWwtPmNsaWVudCgpLnVwZGF0ZVBhbmVsKHN0YXR1cyk7CiB9CiAKLVVuaXF1ZVJl
ZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gQXV0aGVudGljYXRvck1hbmFnZXI6OmNy
ZWF0ZVNlcnZpY2UoV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydCB0cmFuc3BvcnQsIEF1
dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlOjpPYnNlcnZlciYgb2JzZXJ2ZXIpIGNvbnN0CitV
bmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IEF1dGhlbnRpY2F0b3JNYW5h
Z2VyOjpjcmVhdGVTZXJ2aWNlKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQgdHJhbnNwb3J0LCBBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6T2JzZXJ2ZXImIG9ic2VydmVyKSBjb25zdAogewog
ICAgIHJldHVybiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6Y3JlYXRlKHRyYW5zcG9y
dCwgb2JzZXJ2ZXIpOwogfQpAQCAtMzQzLDE2ICszNDUsMTUgQEAgdm9pZCBBdXRoZW50aWNhdG9y
TWFuYWdlcjo6cnVuUGFuZWwoKQogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6aW52b2tlUGVu
ZGluZ0NvbXBsZXRpb25IYW5kbGVyKFJlc3BvbmQmJiByZXNwb25kKQogewogICAgIGlmIChhdXRv
ICpwYW5lbCA9IG1fcGVuZGluZ1JlcXVlc3REYXRhLnBhbmVsLmdldCgpKSB7Ci0gICAgICAgIFdU
Rjo6c3dpdGNoT24ocmVzcG9uZCwgWyZdKGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRp
YWxEYXRhJikgeworICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3BvbmQsIFsmXShjb25zdCBQdWJs
aWNLZXlDcmVkZW50aWFsRGF0YSYpIHsKICAgICAgICAgICAgIHBhbmVsLT5jbGllbnQoKS5kaXNt
aXNzUGFuZWwoV2ViQXV0aGVudGljYXRpb25SZXN1bHQ6OlN1Y2NlZWRlZCk7Ci0gICAgICAgIH0s
IFsmXShjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJikgeworICAgICAgICB9LCBbJl0oY29u
c3QgRXhjZXB0aW9uRGF0YSYpIHsKICAgICAgICAgICAgIHBhbmVsLT5jbGllbnQoKS5kaXNtaXNz
UGFuZWwoV2ViQXV0aGVudGljYXRpb25SZXN1bHQ6OkZhaWxlZCk7CiAgICAgICAgIH0pOwogICAg
IH0KICAgICBtX3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3BvbmQpKTsKIH0K
IAotCiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXNldFN0YXRlKCkKIHsKICAgICBtX2F1
dGhlbnRpY2F0b3JzLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0
aGVudGljYXRpb25QYW5lbENsaWVudC5tbQppbmRleCAzYTQwMzAzYTZkZTc2M2NkZjBhMmU3Mjcw
NjhhODFjMmJmOTdhOGQ4Li5mMmU1YjNlOTJjZDIyODE2ZDFmMjk5MDRjY2U4YWI3MzJmNzBjMzVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxD
bGllbnQubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiV2ViQXV0aGVudGljYXRpb25G
bGFncy5oIgogI2ltcG9ydCAiX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIgorI2ltcG9ydCA8
d3RmL1J1bkxvb3AuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTU4LDE0ICs1OSwyMSBA
QCBzdGF0aWMgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZSB3a1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWxVcGRhdGUoV2ViQXV0aGVudAogCiB2b2lkIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxD
bGllbnQ6OnVwZGF0ZVBhbmVsKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzIHN0YXR1cykgY29uc3QK
IHsKLSAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLnBhbmVsVXBkYXRlV2ViQXV0aGVudGljYXRp
b25QYW5lbCkKLSAgICAgICAgcmV0dXJuOworICAgIC8vIENhbGwgZGVsZWdhdGVzIGluIHRoZSBu
ZXh0IHJ1biBsb29wIHRvIHByZXZlbnQgY2xpZW50cycgcmVlbnRyYW5jZSB0aGF0IHdvdWxkIHBv
dGVudGlhbGx5IG1vZGlmeSB0aGUgc3RhdGVzCisgICAgLy8gb2YgY3VycmVudCBydW4gbG9vcCBp
biB1bmV4cGVjdGVkIHdheXMuCisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpcywgc3RhdHVzXSB7CisgICAgICAgIGlmICghd2Vh
a1RoaXMpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGRlbGVnYXRlID0gbV9kZWxl
Z2F0ZS5nZXQoKTsKLSAgICBpZiAoIWRlbGVnYXRlKQotICAgICAgICByZXR1cm47CisgICAgICAg
IGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxVcGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVs
KQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgdXBk
YXRlV2ViQXV0aGVudGljYXRpb25QYW5lbDp3a1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGUo
c3RhdHVzKV07CisgICAgICAgIGF1dG8gZGVsZWdhdGUgPSBtX2RlbGVnYXRlLmdldCgpOworICAg
ICAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFtkZWxl
Z2F0ZSBwYW5lbDptX3BhbmVsIHVwZGF0ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6d2tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsVXBkYXRlKHN0YXR1cyldOworICAgIH0pOwogfQogCiBzdGF0aWMgX1dL
V2ViQXV0aGVudGljYXRpb25SZXN1bHQgd2tXZWJBdXRoZW50aWNhdGlvblJlc3VsdChXZWJBdXRo
ZW50aWNhdGlvblJlc3VsdCByZXN1bHQpCkBAIC04MiwxNCArOTAsMjEgQEAgc3RhdGljIF9XS1dl
YkF1dGhlbnRpY2F0aW9uUmVzdWx0IHdrV2ViQXV0aGVudGljYXRpb25SZXN1bHQoV2ViQXV0aGVu
dGljYXRpb25SZXMKIAogdm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpkaXNtaXNz
UGFuZWwoV2ViQXV0aGVudGljYXRpb25SZXN1bHQgcmVzdWx0KSBjb25zdAogewotICAgIGlmICgh
bV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxEaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhS
ZXN1bHQpCi0gICAgICAgIHJldHVybjsKKyAgICAvLyBDYWxsIGRlbGVnYXRlcyBpbiB0aGUgbmV4
dCBydW4gbG9vcCB0byBwcmV2ZW50IGNsaWVudHMnIHJlZW50cmFuY2UgdGhhdCB3b3VsZCBwb3Rl
bnRpYWxseSBtb2RpZnkgdGhlIHN0YXRlcworICAgIC8vIG9mIGN1cnJlbnQgcnVuIGxvb3AgaW4g
dW5leHBlY3RlZCB3YXlzLgorICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXMsIHJlc3VsdF0geworICAgICAgICBpZiAoIXdlYWtU
aGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhv
ZHMucGFuZWxEaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQpCisgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIGRlbGVnYXRlID0gbV9kZWxlZ2F0ZS5nZXQoKTsKLSAg
ICBpZiAoIWRlbGVnYXRlKQotICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8gZGVsZWdhdGUg
PSBtX2RlbGVnYXRlLmdldCgpOworICAgICAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgZGlzbWlzc1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxXaXRoUmVzdWx0OndrV2ViQXV0aGVudGljYXRpb25SZXN1bHQocmVzdWx0KV07
CisgICAgICAgIFtkZWxlZ2F0ZSBwYW5lbDptX3BhbmVsIGRpc21pc3NXZWJBdXRoZW50aWNhdGlv
blBhbmVsV2l0aFJlc3VsdDp3a1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KHJlc3VsdCldOworICAg
IH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyMjRkNDAxNDQ4ODMxMDNkNDNjMDcxNWZlMTA1
NWYzOGUwYmNkMGU0Li4yYTgwOTEyNWJkN2NkMGRjMDdhNzg0YzQ1NGY3YjZjZjZmYzQ2NDAwIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTktMTEtMDQgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4K
KworICAgICAgICBbV2ViQXV0aG5dIEd1YXJkIHRvd2FyZHMgdW5leHBlY3RlZCAtW19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwgY2FuY2VsXQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAzODMwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81Njc5NzEz
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bToKKyAgICAgICAgKC1bVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBwYW5lbDp1
cGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsOl0pOgorICAgICAgICAoLVtUZXN0V2ViQXV0aGVu
dGljYXRpb25QYW5lbERlbGVnYXRlIHBhbmVsOmRpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVs
V2l0aFJlc3VsdDpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE5LTEx
LTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgRmxha3kgQVBJIFRlc3QgVGVzdFdlYktpdEFQSS5XZWJLaXQuVXBsb2FkRGlyZWN0b3J5CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggNDFlYTRjZTMzZTY0YTllMGZk
YmNjM2U5MzJiNDY3ZDI3ZDE4OTY3OS4uZjIzY2ZjNzkzMTZhMzEzN2E2OTVjZDU5YTMxNzIyNzFh
MDI5NTAwZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtNDQsNiAr
NDQsNyBAQCBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsRmFpbGVkID0gZmFsc2U7
CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsU3VjY2VkZWQgPSBmYWxzZTsKIHN0
YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVNdWx0aXBsZU5GQ1RhZ3NQcmVz
ZW50ID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTm9D
cmVkZW50aWFsc0ZvdW5kID0gZmFsc2U7CitzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2FuY2VsSW1tZWRpYXRlbHkgPSBmYWxzZTsKIAogQGludGVyZmFjZSBUZXN0V2ViQXV0aGVu
dGljYXRpb25QYW5lbERlbGVnYXRlIDogTlNPYmplY3QgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxEZWxlZ2F0ZT4KIEBlbmQKQEAgLTUzLDYgKzU0LDkgQEAgQGltcGxlbWVudGF0aW9uIFRlc3RX
ZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwgKilwYW5lbCB1cGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsOihfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKXVwZGF0ZQogewogICAgIEFTU0VSVF9ORShwYW5l
bCwgbmlsKTsKKyAgICBpZiAod2ViQXV0aGVudGljYXRpb25QYW5lbENhbmNlbEltbWVkaWF0ZWx5
KQorICAgICAgICBbcGFuZWwgY2FuY2VsXTsKKwogICAgIGlmICh1cGRhdGUgPT0gX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbFVwZGF0ZU11bHRpcGxlTkZDVGFnc1ByZXNlbnQpIHsKICAgICAgICAg
d2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZU11bHRpcGxlTkZDVGFnc1ByZXNlbnQgPSB0cnVl
OwogICAgICAgICByZXR1cm47CkBAIC02Niw2ICs3MCw5IEBAIC0gKHZvaWQpcGFuZWw6KF9XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB1cGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVs
OihfCiAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgZGlz
bWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0OihfV0tXZWJBdXRoZW50aWNhdGlv
blJlc3VsdClyZXN1bHQKIHsKICAgICBBU1NFUlRfTkUocGFuZWwsIG5pbCk7CisgICAgaWYgKHdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxDYW5jZWxJbW1lZGlhdGVseSkKKyAgICAgICAgW3BhbmVsIGNh
bmNlbF07CisKICAgICBpZiAocmVzdWx0ID09IF9XS1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0RmFp
bGVkKSB7CiAgICAgICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxGYWlsZWQgPSB0cnVlOwogICAg
ICAgICByZXR1cm47CkBAIC0xODksNiArMTk2LDcgQEAgc3RhdGljIHZvaWQgcmVzZXQoKQogICAg
IHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4gPSBmYWxzZTsKICAgICB3ZWJBdXRoZW50aWNhdGlv
blBhbmVsRmFpbGVkID0gZmFsc2U7CiAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFN1Y2NlZGVk
ID0gZmFsc2U7CisgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbENhbmNlbEltbWVkaWF0ZWx5ID0g
ZmFsc2U7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrUGFuZWwoX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbCAqcGFuZWwsIE5TU3RyaW5nICpyZWx5aW5nUGFydHlJRCwgTlNBcnJheSAqdHJhbnNwb3J0
cywgX1dLV2ViQXV0aGVudGljYXRpb25UeXBlIHR5cGUpCkBAIC02ODAsNiArNjg4LDU5IEBAIFRF
U1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUGFuZWxNdWx0aXBsZU5GQ1RhZ3NQcmVzZW50KQog
fQogI2VuZGlmCiAKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUGFuZWxIaWRDYW5jZWxS
ZWxvYWROb0NyYXNoKQoreworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0
VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50
aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwiIHdpdGhFeHRlbnNpb246QCJodG1sIiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAqY29u
ZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25X
aXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBj
b25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVu
Y2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNh
dGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVz
dFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dl
YlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAg
ICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4pOworICAgIFtbZGVsZWdhdGUg
cGFuZWxdIGNhbmNlbF07CisgICAgW3dlYlZpZXcgcmVsb2FkXTsKKyAgICBbd2ViVmlldyB3YWl0
Rm9yTWVzc2FnZTpAIk9wZXJhdGlvbiB0aW1lZCBvdXQuIl07Cit9CisKK1RFU1QoV2ViQXV0aGVu
dGljYXRpb25QYW5lbCwgUGFuZWxIaWRTdWNjZXNzQ2FuY2VsTm9DcmFzaCkKK3sKKyAgICByZXNl
dCgpOworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQi
IHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291
cmNlcyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0
aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nl
c3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAg
W1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVu
dGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQo
KV07CisgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbENhbmNlbEltbWVkaWF0ZWx5ID0gdHJ1ZTsK
KworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
dGVzdFVSTC5nZXQoKV1dOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2VlZGVk
ISJdOworfQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFBhbmVsSGlkQ3RhcE5vQ3Jl
ZGVudGlhbHNGb3VuZENhbmNlbE5vQ3Jhc2gpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5Q
dHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAid2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLW5vLWNyZWRlbnRpYWxzIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXTsKKworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNz
UGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtb
Y29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRh
bEZlYXR1cmU6d2ViQXV0aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOworCisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBh
bGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCld
OworICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYW5jZWxJbW1lZGlhdGVseSA9IHRydWU7CisK
KyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRl
c3RVUkwuZ2V0KCldXTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRh
dGVOb0NyZWRlbnRpYWxzRm91bmQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQo=
</data>
<flag name="review"
          id="398546"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
    <flag name="commit-queue"
          id="398559"
          type_id="3"
          status="-"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382797</attachid>
            <date>2019-11-04 19:20:24 -0800</date>
            <delta_ts>2019-11-04 20:05:15 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-203830-20191104192023.patch</filename>
            <type>text/plain</type>
            <size>13987</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFiZTU3Mjk0OTBlZTdjNzUy
NzZkNzY1NjBhMGYwMjUxNGM0MTNlYzguLjI4MTk3YmJiZGJlN2I0NjllZGYxNDE0ODNjMmM2Mzlm
YjVmZGM2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTktMTEtMDQgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEd1YXJkIGFn
YWluc3QgdW5leHBlY3RlZCAtW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY2FuY2VsXQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzODMwCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81Njc5NzEzND4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVu
dCBGdWxnaGFtIC4KKworICAgICAgICAtW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY2FuY2Vs
XSB3YXMgb25seSBleHBlY3RlZCB0byBiZSBjYWxsZWQgb24gYmVoYWxmIG9mIGFuCisgICAgICAg
IGV4cGxpY2l0IHVzZXIgY2FuY2VsIGZyb20gdGhlIFVJLiBIb3dldmVyLCBjbGllbnRzIG1heSBj
YWxsIGl0IGluIGRpZmZlcmVudCBvdGhlcgorICAgICAgICB1bmV4cGVjdGVkIHNjZW5hcmlvcyBh
cyB3ZWxsLiBXZSBzaG91bGQgZ3VhcmQgYWdhaW5zdCB0aGF0LgorCisgICAgICAgIFRvIGRvIHNv
LCB0d28gY291bnRlciB3YXlzIGFyZSBpbXBsZW1lbnRlZDoKKyAgICAgICAgMSkgQXV0aGVudGlj
YXRvck1hbmFnZXI6OmNhbmNlbFJlcXVlc3QgaXMgY2hhbmdlZCB0byBpbnZva2UgdGhlIHBlbmRp
bmcgcmVxdWVzdCBpZiB0aGVyZQorICAgICAgICBpcyBubyBHbG9iYWxGcmFtZUlELiBUaGlzIGNh
c2UgY2FuIG9ubHkgYmUgcmVhY2hlZCB2aWEgY2FsbGluZyAtW19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwgY2FuY2VsXQorICAgICAgICBiZWZvcmUgQXV0aGVudGljYXRvck1hbmFnZXI6OmNhbmNl
bFJlcXVlc3QuCisgICAgICAgIDIpIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OnVwZGF0
ZVBhbmVsIGFuZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpkaXNtaXNzUGFuZWwKKyAg
ICAgICAgd2lsbCBjYWxsIGRlbGVnYXRlIG1ldGhvZHMgaW4gdGhlIG5leHQgcnVuIGxvb3AgdG8g
cHJldmVudCAtW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY2FuY2VsXQorICAgICAgICBiZWlu
ZyBjYWxsZWQgaW4gdGhlIGRlbGVnYXRlcy4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkg
dGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRvck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6
Y2FuY2VsUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpj
cmVhdGVTZXJ2aWNlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFn
ZXI6Omludm9rZVBlbmRpbmdDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW06
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OnVwZGF0ZVBh
bmVsIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVu
dDo6ZGlzbWlzc1BhbmVsIGNvbnN0KToKKwogMjAxOS0xMS0wMyAgSmlld2VuIFRhbiAgPGppZXdl
bl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gQ3RhcEF1dGhlbnRpY2F0b3I6
OnRyeURvd25ncmFkZSBzaG91bGQgZGlzdGluZ3Vpc2ggcmVxdWVzdERhdGEoKS5vcHRpb25zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggY2NlODM3OTZmMTM4YmJmN2Nm
ZjMwYmUzYWJmMmQ2MjE0ODFmZTcyMy4uNmYzNzFkN2UzNmZhMWZhNDJmY2RmZjQzZWYxZDg2MDgw
NjYxMjVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMTc1LDE1
ICsxNzUsMTYgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6aGFuZGxlUmVxdWVzdChXZWJB
dXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYgZGF0YSwgQ2EKICAgICBydW5QYW5lbCgpOwogfQog
Ci12b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyJiBwYWdlSUQsIGNvbnN0IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4m
IGZyYW1lSUQpCit2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0KGNvbnN0
IFBhZ2VJZGVudGlmaWVyJiBwYWdlSUQsIGNvbnN0IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4m
IGZyYW1lSUQpCiB7CiAgICAgaWYgKCFtX3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlcikKICAgICAg
ICAgcmV0dXJuOwotICAgIEFTU0VSVChtX3BlbmRpbmdSZXF1ZXN0RGF0YS5mcmFtZUlEKTsKLSAg
ICBpZiAobV9wZW5kaW5nUmVxdWVzdERhdGEuZnJhbWVJRC0+cGFnZUlEICE9IHBhZ2VJRCkKLSAg
ICAgICAgcmV0dXJuOwotICAgIGlmIChmcmFtZUlEICYmIGZyYW1lSUQgIT0gbV9wZW5kaW5nUmVx
dWVzdERhdGEuZnJhbWVJRC0+ZnJhbWVJRCkKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChhdXRv
IHBlbmRpbmdGcmFtZUlEID0gbV9wZW5kaW5nUmVxdWVzdERhdGEuZnJhbWVJRCkgeworICAgICAg
ICBpZiAocGVuZGluZ0ZyYW1lSUQtPnBhZ2VJRCAhPSBwYWdlSUQpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGlmIChmcmFtZUlEICYmIGZyYW1lSUQgIT0gcGVuZGluZ0ZyYW1lSUQtPmZy
YW1lSUQpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQogICAgIGludm9rZVBlbmRpbmdDb21w
bGV0aW9uSGFuZGxlcihFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiT3BlcmF0aW9u
IHRpbWVkIG91dC4iX3MgfSk7CiAgICAgY2xlYXJTdGF0ZSgpOwogICAgIG1fcmVxdWVzdFRpbWVP
dXRUaW1lci5zdG9wKCk7CkBAIC0xOTQsNiArMTk1LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFu
YWdlcjo6Y2FuY2VsUmVxdWVzdChjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciYgcGFnZUlE
LAogLy8gIklmIHRoZSB1c2VyIGV4ZXJjaXNlcyBhIHVzZXIgYWdlbnQgdXNlci1pbnRlcmZhY2Ug
b3B0aW9uIHRvIGNhbmNlbCB0aGUgcHJvY2VzcywiLgogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdl
cjo6Y2FuY2VsUmVxdWVzdChjb25zdCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmVs
KQogeworICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBpZiAoIW1f
cGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyIHx8IG1fcGVuZGluZ1JlcXVlc3REYXRhLnBhbmVsLmdl
dCgpICE9ICZwYW5lbCkKICAgICAgICAgcmV0dXJuOwogICAgIHJlc2V0U3RhdGUoKTsKQEAgLTI2
Nyw3ICsyNjksNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjphdXRoZW50aWNhdG9yU3Rh
dHVzVXBkYXRlZChXZWJBdXRoZW50aWNhdGlvblN0YXR1cyBzdAogICAgICAgICBwYW5lbC0+Y2xp
ZW50KCkudXBkYXRlUGFuZWwoc3RhdHVzKTsKIH0KIAotVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JU
cmFuc3BvcnRTZXJ2aWNlPiBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3JlYXRlU2VydmljZShXZWJD
b3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0IHRyYW5zcG9ydCwgQXV0aGVudGljYXRvclRyYW5z
cG9ydFNlcnZpY2U6Ok9ic2VydmVyJiBvYnNlcnZlcikgY29uc3QKK1VuaXF1ZVJlZjxBdXRoZW50
aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gQXV0aGVudGljYXRvck1hbmFnZXI6OmNyZWF0ZVNlcnZp
Y2UoQXV0aGVudGljYXRvclRyYW5zcG9ydCB0cmFuc3BvcnQsIEF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnRTZXJ2aWNlOjpPYnNlcnZlciYgb2JzZXJ2ZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEF1dGhl
bnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlOjpjcmVhdGUodHJhbnNwb3J0LCBvYnNlcnZlcik7CiB9
CkBAIC0zNDMsMTYgKzM0NSwxNSBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpydW5QYW5l
bCgpCiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjppbnZva2VQZW5kaW5nQ29tcGxldGlvbkhh
bmRsZXIoUmVzcG9uZCYmIHJlc3BvbmQpCiB7CiAgICAgaWYgKGF1dG8gKnBhbmVsID0gbV9wZW5k
aW5nUmVxdWVzdERhdGEucGFuZWwuZ2V0KCkpIHsKLSAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXNw
b25kLCBbJl0oY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmKSB7CisgICAg
ICAgIFdURjo6c3dpdGNoT24ocmVzcG9uZCwgWyZdKGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxE
YXRhJikgewogICAgICAgICAgICAgcGFuZWwtPmNsaWVudCgpLmRpc21pc3NQYW5lbChXZWJBdXRo
ZW50aWNhdGlvblJlc3VsdDo6U3VjY2VlZGVkKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGEmKSB7CisgICAgICAgIH0sIFsmXShjb25zdCBFeGNlcHRpb25EYXRh
JikgewogICAgICAgICAgICAgcGFuZWwtPmNsaWVudCgpLmRpc21pc3NQYW5lbChXZWJBdXRoZW50
aWNhdGlvblJlc3VsdDo6RmFpbGVkKTsKICAgICAgICAgfSk7CiAgICAgfQogICAgIG1fcGVuZGlu
Z0NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzcG9uZCkpOwogfQogCi0KIHZvaWQgQXV0aGVu
dGljYXRvck1hbmFnZXI6OnJlc2V0U3RhdGUoKQogewogICAgIG1fYXV0aGVudGljYXRvcnMuY2xl
YXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVs
Q2xpZW50Lm1tCmluZGV4IDNhNDAzMDNhNmRlNzYzY2RmMGEyZTcyNzA2OGE4MWMyYmY5N2E4ZDgu
LjM1ZWY2NWJlZWY2MWJiZTVlYTUxMzllODMzMGNhNzM5ODVmZTQxMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQpAQCAtMzAs
NiArMzAsNyBAQAogCiAjaW1wb3J0ICJXZWJBdXRoZW50aWNhdGlvbkZsYWdzLmgiCiAjaW1wb3J0
ICJfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgiCisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTgsMTQgKzU5LDIxIEBAIHN0YXRpYyBfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsVXBkYXRlIHdrV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZShX
ZWJBdXRoZW50CiAKIHZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6dXBkYXRlUGFu
ZWwoV2ViQXV0aGVudGljYXRpb25TdGF0dXMgc3RhdHVzKSBjb25zdAogewotICAgIGlmICghbV9k
ZWxlZ2F0ZU1ldGhvZHMucGFuZWxVcGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsKQotICAgICAg
ICByZXR1cm47CisgICAgLy8gQ2FsbCBkZWxlZ2F0ZXMgaW4gdGhlIG5leHQgcnVuIGxvb3AgdG8g
cHJldmVudCBjbGllbnRzJyByZWVudHJhbmNlIHRoYXQgd291bGQgcG90ZW50aWFsbHkgbW9kaWZ5
IHRoZSBzdGF0ZQorICAgIC8vIG9mIHRoZSBjdXJyZW50IHJ1biBsb29wIGluIHVuZXhwZWN0ZWQg
d2F5cy4KKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpLCB0aGlzLCBzdGF0dXNdIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZGVsZWdhdGUgPSBtX2RlbGVnYXRlLmdldCgpOwot
ICAgIGlmICghZGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFtX2RlbGVn
YXRlTWV0aG9kcy5wYW5lbFVwZGF0ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwpCisgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICBbZGVsZWdhdGUgcGFuZWw6bV9wYW5lbCB1cGRhdGVXZWJBdXRoZW50
aWNhdGlvblBhbmVsOndrV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZShzdGF0dXMpXTsKKyAg
ICAgICAgYXV0byBkZWxlZ2F0ZSA9IG1fZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGlmICghZGVs
ZWdhdGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgW2RlbGVnYXRlIHBhbmVsOm1f
cGFuZWwgdXBkYXRlV2ViQXV0aGVudGljYXRpb25QYW5lbDp3a1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVcGRhdGUoc3RhdHVzKV07CisgICAgfSk7CiB9CiAKIHN0YXRpYyBfV0tXZWJBdXRoZW50aWNh
dGlvblJlc3VsdCB3a1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KFdlYkF1dGhlbnRpY2F0aW9uUmVz
dWx0IHJlc3VsdCkKQEAgLTgyLDE0ICs5MCwyMSBAQCBzdGF0aWMgX1dLV2ViQXV0aGVudGljYXRp
b25SZXN1bHQgd2tXZWJBdXRoZW50aWNhdGlvblJlc3VsdChXZWJBdXRoZW50aWNhdGlvblJlcwog
CiB2b2lkIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OmRpc21pc3NQYW5lbChXZWJBdXRo
ZW50aWNhdGlvblJlc3VsdCByZXN1bHQpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2RlbGVnYXRlTWV0
aG9kcy5wYW5lbERpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdCkKLSAgICAg
ICAgcmV0dXJuOworICAgIC8vIENhbGwgZGVsZWdhdGVzIGluIHRoZSBuZXh0IHJ1biBsb29wIHRv
IHByZXZlbnQgY2xpZW50cycgcmVlbnRyYW5jZSB0aGF0IHdvdWxkIHBvdGVudGlhbGx5IG1vZGlm
eSB0aGUgc3RhdGUKKyAgICAvLyBvZiB0aGUgY3VycmVudCBydW4gbG9vcCBpbiB1bmV4cGVjdGVk
IHdheXMuCisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKSwgdGhpcywgcmVzdWx0XSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbERp
c21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdCkKKyAgICAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8gZGVsZWdhdGUgPSBtX2RlbGVnYXRlLmdldCgpOwotICAgIGlmICghZGVs
ZWdhdGUpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgYXV0byBkZWxlZ2F0ZSA9IG1fZGVsZWdh
dGUuZ2V0KCk7CisgICAgICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgICAgICByZXR1cm47CiAK
LSAgICBbZGVsZWdhdGUgcGFuZWw6bV9wYW5lbCBkaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5l
bFdpdGhSZXN1bHQ6d2tXZWJBdXRoZW50aWNhdGlvblJlc3VsdChyZXN1bHQpXTsKKyAgICAgICAg
W2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRo
UmVzdWx0OndrV2ViQXV0aGVudGljYXRpb25SZXN1bHQocmVzdWx0KV07CisgICAgfSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDIyNGQ0MDE0NDg4MzEwM2Q0M2MwNzE1ZmUxMDU1ZjM4ZTBiY2Qw
ZTQuLjNhYjk0ZWUxMTIxNDRiZDVkZmJmNDExOWI3Zjc1MTg2MmU4ZGFjNWEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxOS0xMS0wNCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAg
IFtXZWJBdXRobl0gR3VhcmQgYWdhaW5zdCB1bmV4cGVjdGVkIC1bX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbCBjYW5jZWxdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDM4MzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2Nzk3MTM0PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0gLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgorICAgICAg
ICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIHBhbmVsOnVwZGF0ZVdlYkF1
dGhlbnRpY2F0aW9uUGFuZWw6XSk6CisgICAgICAgICgtW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBh
bmVsRGVsZWdhdGUgcGFuZWw6ZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0
Ol0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTktMTEtMDQgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGbGFreSBB
UEkgVGVzdCBUZXN0V2ViS2l0QVBJLldlYktpdC5VcGxvYWREaXJlY3RvcnkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCA0MWVhNGNlMzNlNjRhOWUwZmRiY2MzZTkzMmI0
NjdkMjdkMTg5Njc5Li5mMjNjZmM3OTMxNmEzMTM3YTY5NWNkNTlhMzE3MjI3MWEwMjk1MDBmIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC00NCw2ICs0NCw3IEBAIHN0
YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxGYWlsZWQgPSBmYWxzZTsKIHN0YXRpYyBi
b29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxTdWNjZWRlZCA9IGZhbHNlOwogc3RhdGljIGJvb2wg
d2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZU11bHRpcGxlTkZDVGFnc1ByZXNlbnQgPSBmYWxz
ZTsKIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVOb0NyZWRlbnRpYWxz
Rm91bmQgPSBmYWxzZTsKK3N0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYW5jZWxJ
bW1lZGlhdGVseSA9IGZhbHNlOwogCiBAaW50ZXJmYWNlIFRlc3RXZWJBdXRoZW50aWNhdGlvblBh
bmVsRGVsZWdhdGUgOiBOU09iamVjdCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRl
PgogQGVuZApAQCAtNTMsNiArNTQsOSBAQCBAaW1wbGVtZW50YXRpb24gVGVzdFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxEZWxlZ2F0ZQogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbCAqKXBhbmVsIHVwZGF0ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6KF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxVcGRhdGUpdXBkYXRlCiB7CiAgICAgQVNTRVJUX05FKHBhbmVsLCBuaWwpOwor
ICAgIGlmICh3ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FuY2VsSW1tZWRpYXRlbHkpCisgICAgICAg
IFtwYW5lbCBjYW5jZWxdOworCiAgICAgaWYgKHVwZGF0ZSA9PSBfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsVXBkYXRlTXVsdGlwbGVORkNUYWdzUHJlc2VudCkgewogICAgICAgICB3ZWJBdXRoZW50
aWNhdGlvblBhbmVsVXBkYXRlTXVsdGlwbGVORkNUYWdzUHJlc2VudCA9IHRydWU7CiAgICAgICAg
IHJldHVybjsKQEAgLTY2LDYgKzcwLDkgQEAgLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbCAqKXBhbmVsIHVwZGF0ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6KF8KIC0gKHZv
aWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBkaXNtaXNzV2ViQXV0
aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQ6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KXJl
c3VsdAogewogICAgIEFTU0VSVF9ORShwYW5lbCwgbmlsKTsKKyAgICBpZiAod2ViQXV0aGVudGlj
YXRpb25QYW5lbENhbmNlbEltbWVkaWF0ZWx5KQorICAgICAgICBbcGFuZWwgY2FuY2VsXTsKKwog
ICAgIGlmIChyZXN1bHQgPT0gX1dLV2ViQXV0aGVudGljYXRpb25SZXN1bHRGYWlsZWQpIHsKICAg
ICAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbEZhaWxlZCA9IHRydWU7CiAgICAgICAgIHJldHVy
bjsKQEAgLTE4OSw2ICsxOTYsNyBAQCBzdGF0aWMgdm9pZCByZXNldCgpCiAgICAgd2ViQXV0aGVu
dGljYXRpb25QYW5lbFJhbiA9IGZhbHNlOwogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxGYWls
ZWQgPSBmYWxzZTsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsU3VjY2VkZWQgPSBmYWxzZTsK
KyAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FuY2VsSW1tZWRpYXRlbHkgPSBmYWxzZTsKIH0K
IAogc3RhdGljIHZvaWQgY2hlY2tQYW5lbChfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICpwYW5l
bCwgTlNTdHJpbmcgKnJlbHlpbmdQYXJ0eUlELCBOU0FycmF5ICp0cmFuc3BvcnRzLCBfV0tXZWJB
dXRoZW50aWNhdGlvblR5cGUgdHlwZSkKQEAgLTY4MCw2ICs2ODgsNTkgQEAgVEVTVChXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLCBQYW5lbE11bHRpcGxlTkZDVGFnc1ByZXNlbnQpCiB9CiAjZW5kaWYK
IAorVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQYW5lbEhpZENhbmNlbFJlbG9hZE5vQ3Jh
c2gpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLWdl
dC1hc3NlcnRpb24taGlkLWNhbmNlbCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9u
ID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1
Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpT
Q0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRF
bmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJp
bWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVu
dGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRV
SURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFV0aWw6OnJ1
bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbik7CisgICAgW1tkZWxlZ2F0ZSBwYW5lbF0gY2Fu
Y2VsXTsKKyAgICBbd2ViVmlldyByZWxvYWRdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdl
OkAiT3BlcmF0aW9uIHRpbWVkIG91dC4iXTsKK30KKworVEVTVChXZWJBdXRoZW50aWNhdGlvblBh
bmVsLCBQYW5lbEhpZFN1Y2Nlc3NDYW5jZWxOb0NyYXNoKQoreworICAgIHJlc2V0KCk7CisgICAg
UmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZCIgd2l0aEV4dGVu
c2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisK
KyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3Rf
Y29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldp
dGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3Vy
YXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJl
OndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVy
b1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICB3
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FuY2VsSW1tZWRpYXRlbHkgPSB0cnVlOworCisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdl
dCgpXV07CisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07Cit9CisK
K1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUGFuZWxIaWRDdGFwTm9DcmVkZW50aWFsc0Zv
dW5kQ2FuY2VsTm9DcmFzaCkKK3sKKyAgICByZXNldCgpOworICAgIFJldGFpblB0cjxOU1VSTD4g
dGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0
aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbm8tY3JlZGVudGlhbHMiIHdpdGhFeHRlbnNp
b246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisg
ICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2Nv
bmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRo
SW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgW1tjb25maWd1cmF0
aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3
ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9S
ZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0
XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgd2Vi
QXV0aGVudGljYXRpb25QYW5lbENhbmNlbEltbWVkaWF0ZWx5ID0gdHJ1ZTsKKworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQo
KV1dOworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZU5vQ3JlZGVu
dGlhbHNGb3VuZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlm
IC8vIEVOQUJMRShXRUJfQVVUSE4pCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>