<?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>215928</bug_id>
          
          <creation_ts>2020-08-28 08:36:52 -0700</creation_ts>
          <short_desc>Enable inspection of WebSocket when opening Web Inspector in the middle of the connection like done for the legacy WebSocket implementation</short_desc>
          <delta_ts>2020-09-01 06:25:35 -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>WebCore Misc.</component>
          <version>WebKit Local 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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1683646</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-08-28 08:36:52 -0700</bug_when>
    <thetext>Enable inspection of WebSocket when opening Web Inspector in the middle of the connection</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683648</commentid>
    <comment_count>1</comment_count>
      <attachid>407469</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-08-28 08:41:20 -0700</bug_when>
    <thetext>Created attachment 407469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683664</commentid>
    <comment_count>2</comment_count>
      <attachid>407476</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-08-28 09:27:24 -0700</bug_when>
    <thetext>Created attachment 407476
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683714</commentid>
    <comment_count>3</comment_count>
      <attachid>407476</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-28 11:28:09 -0700</bug_when>
    <thetext>Comment on attachment 407476
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Enable inspection of WebSocket when opening Web Inspector in the middle of the connection

This should already be possible.  Did this functionality regress, or is there something else that this patch enables?

&gt; Source/WebCore/ChangeLog:8
&gt; +        Retrofit API used by Inspector from WebCore::WebSocketChannel  to ThreadableWebSocketChannel.

NIT: double space

&gt; Source/WebCore/ChangeLog:12
&gt; +        Covered by http/tests/websocket/tests/hybi/inspector with NSURLSession WebSocket code path enabled.

Is there any new functionality for this bug?  The title makes me think that there is.  If so, can we add tests to make sure?

&gt; Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h:163
&gt; +    // Dummy implementation of inspector related APIs.

FYI, if you wanted to do worker `WebSocket` inspection I think you&apos;d only need to implement `WorkerNetworkAgent::activeWebSockets` and adjust the logic in `InspectorNetworkAgent::enable` for non-`document`.  See &lt;https://webkit.org/b/168475&gt;.

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:817
&gt; +                continue;

Style: I&apos;d add a newline after this.

&gt; Source/WebCore/inspector/agents/page/PageNetworkAgent.cpp:73
&gt; +        auto* channel = webSocket-&gt;channel().get();

NIT: do we actually want/need the `.get()`?

&gt; Source/WebKit/WebProcess/Network/WebSocketChannel.cpp:208
&gt; +    WebSocketFrame closingFrame(WebSocketFrame::OpCodeClose, true, false, true, nullptr, 0);
&gt; +    m_inspector.didSendWebSocketFrame(m_document.get(), closingFrame);

Why do we want/need this fake websocket frame?

(for my own knowledge) Why should this frame be marked as `masked`?

NIT: you should be able to drop the `nullptr` and `0` at the end.

&gt; Source/WebKit/WebProcess/Network/WebSocketChannel.cpp:328
&gt; +    WebSocketFrame closingFrame(WebSocketFrame::OpCodeClose, true, false, false, nullptr, 0);
&gt; +    m_inspector.didReceiveWebSocketFrame(m_document.get(), closingFrame);

ditto (:207)

&gt; Source/WebKit/WebProcess/Network/WebSocketChannel.cpp:423
&gt; +ResourceRequest WebSocketChannel::clientHandshakeRequest(Function&lt;String(const URL&amp;)&gt;&amp;&amp;) const
&gt; +{
&gt; +    return m_handshakeRequest;
&gt; +}
&gt; +
&gt; +const ResourceResponse&amp; WebSocketChannel::serverHandshakeResponse() const
&gt; +{
&gt; +    return m_handshakeResponse;
&gt;  }

NIT: any reason to not inline these in the header?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683731</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-08-28 11:57:40 -0700</bug_when>
    <thetext>I’ll change the title to mention this is for the new WebSocket code path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684092</commentid>
    <comment_count>5</comment_count>
      <attachid>407476</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-08-31 00:33:43 -0700</bug_when>
    <thetext>Comment on attachment 407476
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        Enable inspection of WebSocket when opening Web Inspector in the middle of the connection
&gt; 
&gt; This should already be possible.  Did this functionality regress, or is there something else that this patch enables?

This is working for the legacy WebSocket implementation but not the new one based on NSURLSession WebSocket.

&gt;&gt; Source/WebCore/ChangeLog:12
&gt;&gt; +        Covered by http/tests/websocket/tests/hybi/inspector with NSURLSession WebSocket code path enabled.
&gt; 
&gt; Is there any new functionality for this bug?  The title makes me think that there is.  If so, can we add tests to make sure?

Plan is to enable the NSURLSession code path soon. These changes will then be covered by the above tests on BigSur bots.

&gt;&gt; Source/WebCore/inspector/agents/page/PageNetworkAgent.cpp:73
&gt;&gt; +        auto* channel = webSocket-&gt;channel().get();
&gt; 
&gt; NIT: do we actually want/need the `.get()`?

Right, will change. Not exactly sure why channel is returning a RefPtr.

&gt;&gt; Source/WebKit/WebProcess/Network/WebSocketChannel.cpp:208
&gt;&gt; +    m_inspector.didSendWebSocketFrame(m_document.get(), closingFrame);
&gt; 
&gt; Why do we want/need this fake websocket frame?
&gt; 
&gt; (for my own knowledge) Why should this frame be marked as `masked`?
&gt; 
&gt; NIT: you should be able to drop the `nullptr` and `0` at the end.

Servers do not mask their frames, only clients do.
Web Inspector is using the masked boolean to decide whether this is a request or response frame.

In legacy code path, WebKit is generating the closing frame and giving it to Web Inspector just before sending it.
NSURLSession is generating the frame for us in NetworkProcess, so we generate it to be on par with legacy code path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684093</commentid>
    <comment_count>6</comment_count>
      <attachid>407592</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-08-31 00:38:34 -0700</bug_when>
    <thetext>Created attachment 407592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684179</commentid>
    <comment_count>7</comment_count>
      <attachid>407592</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-31 10:59:39 -0700</bug_when>
    <thetext>Comment on attachment 407592
Patch

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

r=me

&gt; Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h:86
&gt; +    virtual ResourceRequest clientHandshakeRequest(Function&lt;String(const URL&amp;)&gt;&amp;&amp;) const = 0;

NIT: it&apos;d be nice to create a `using` for this so that it&apos;s clear what it&apos;s for (or include a parameter name):
```
    using RequestHeaderCookieExtractor = Function&lt;String(const URL&amp;)&gt;;
    virtual ResourceRequest clientHandshakeRequest(RequestHeaderCookieExtractor&amp;&amp;) const = 0;
```
(better names welcome 😅)

&gt; Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h:163
&gt; +    // Dummy implementation of inspector related APIs.

please include a comment for the bug for this
```
    // FIXME: &lt;https://webkit.org/b/168475&gt; Web Inspector: Correctly display iframe&apos;s and worker&apos;s WebSockets
```

&gt; Source/WebKit/WebProcess/Network/WebSocketChannel.h:106
&gt; +    WebCore::ResourceRequest clientHandshakeRequest(Function&lt;String(const URL&amp;)&gt;&amp;&amp;) const final { return m_handshakeRequest; }

Will this have the right `Set-Cookie` header in it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684437</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-09-01 05:19:02 -0700</bug_when>
    <thetext>Thanks for the review. Will fix the nits.

&gt; &gt; Source/WebKit/WebProcess/Network/WebSocketChannel.h:106
&gt; &gt; +    WebCore::ResourceRequest clientHandshakeRequest(Function&lt;String(const URL&amp;)&gt;&amp;&amp;) const final { return m_handshakeRequest; }
&gt; 
&gt; Will this have the right `Set-Cookie` header in it?

It should and we should probably filter this header if inspector is not enabled like we do for other requests/responses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684438</commentid>
    <comment_count>9</comment_count>
      <attachid>407673</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-09-01 05:23:23 -0700</bug_when>
    <thetext>Created attachment 407673
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684440</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-01 05:53:48 -0700</bug_when>
    <thetext>Committed r266391: &lt;https://trac.webkit.org/changeset/266391&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407673.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684441</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-01 05:54:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/68138598&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684448</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-09-01 06:25:35 -0700</bug_when>
    <thetext>Ah, I forgot to commit the changes to rename the Function.
Changes included in https://bugs.webkit.org/show_bug.cgi?id=216034</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407469</attachid>
            <date>2020-08-28 08:41:20 -0700</date>
            <delta_ts>2020-08-28 09:27:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215928-20200828174118.patch</filename>
            <type>text/plain</type>
            <size>14737</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjU3NGE4NGMyNmI4YTFi
NThkZGUyN2UwOGRjMGQwYmJjMzVlZWEzMi4uYjI1ZmJiYzA0NjU3MGE0YzljMDgzYmM5ZTRmZmZh
MjA4ZDU1OWQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA4LTI4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUgaW5zcGVjdGlv
biBvZiBXZWJTb2NrZXQgd2hlbiBvcGVuaW5nIFdlYiBJbnNwZWN0b3IgaW4gdGhlIG1pZGRsZSBv
ZiB0aGUgY29ubmVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE1OTI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmV0cm9maXQgQVBJIHVzZWQgYnkgSW5zcGVjdG9yIGZyb20gV2ViQ29yZTo6V2Vi
U29ja2V0Q2hhbm5lbCAgdG8gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuCisgICAgICAgIE1h
a2UgSW5zcGVjdG9yIGNvZGUgd29yayB3aXRoIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLgor
ICAgICAgICBBZGQgYSBkdW1teSBpbXBsZW1lbnRhdGlvbiBmb3IgV29ya2VyIFdlYlNvY2tldCAo
bm90IHN1cHBvcnRlZCBjdXJyZW50bHkgYnkgV2ViIEluc3BlY3RvcikuCisKKyAgICAgICAgQ292
ZXJlZCBieSBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3RvciB3aXRoIE5T
VVJMU2Vzc2lvbiBXZWJTb2NrZXQgY29kZSBwYXRoIGVuYWJsZWQuCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXRDaGFubmVsOjpjbGllbnRIYW5kc2hha2VSZXF1ZXN0IGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2ViU29ja2V0Rm9yUmVxdWVzdElkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5jcHA6CisKIDIw
MjAtMDgtMjggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBUZXh0RW5jb2RlclN0cmVhbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzMDc4NjFmNDYyMzI5
YzliNWRlZTU1OWJlOGEyMjZlZTZmY2NlZmY1Li4xYWFlYzgzY2YyYmM1NGFmZGZmNmUzODc4ODQy
N2Y2NTYyZmIwNTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA4LTI4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUgaW5zcGVjdGlv
biBvZiBXZWJTb2NrZXQgd2hlbiBvcGVuaW5nIFdlYiBJbnNwZWN0b3IgaW4gdGhlIG1pZGRsZSBv
ZiB0aGUgY29ubmVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE1OTI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50IGluc3BlY3RvciByZWxhdGVkIEFQSSBhbmQgYWRkIGFkZGl0aW9u
YWwgbWVzc2FnZXMgZm9yIFdlYlNvY2tldCBmcmFtZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tl
dENoYW5uZWw6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlk
Q2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRDaGFubmVsOjpkaWRTZW5kSGFuZHNo
YWtlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6OmRpZFJlY2Vp
dmVIYW5kc2hha2VSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6
OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2Nr
ZXRDaGFubmVsOjpzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNvY2tldENoYW5uZWw6OmhhbmRzaGFrZU1vZGUgY29uc3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmg6CisKIDIwMjAtMDgtMjcgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBU
cmFuc2Zvcm1TdHJlYW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggZmMzNzAzNWJi
NDQ0OTZhZWFjNjQ4MGZmMzFiOGVjY2QwNThiM2VlMS4uNmI1OTdkMTc1NjhmMjJmOWFiZWRjMTEz
M2E1ZGFjM2JiYmVjNGE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTMwLDYg
KzMwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2Uu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTQzLDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CiBjbGFzcyBTb2NrZXRQcm92aWRlcjsKIGNsYXNzIFdlYlNvY2tldENoYW5uZWxDbGllbnQ7CkBA
IC04MCw2ICs4MiwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWYoKSB7IHJlZlRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsKCk7IH0KICAgICB2b2lkIGRlcmVmKCkgeyBkZXJlZlRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsKCk7IH0KIAorICAgIC8vIEZJWE1FOiBNZXJnZSBjaGFubmVsSWRlbnRp
ZmllciBhbmQgaWRlbnRpZmllci4KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGNoYW5uZWxJZGVudGlm
aWVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNDcmVhdGVkSGFuZHNoYWtlKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVzb3VyY2VSZXF1ZXN0IGNsaWVudEhhbmRzaGFrZVJl
cXVlc3QoRnVuY3Rpb248U3RyaW5nKGNvbnN0IFVSTCYpPiYmKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdlYlNvY2tldEhhbmRzaGFrZTo6TW9kZSBoYW5kc2hha2VN
b2RlKCkgY29uc3QgPSAwOworCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+VGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHJlZlRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDhiNjkxNGZhYjAxNDhk
N2ZkYTE2MmYyZjg4YTlhNWVjZDYzNjhkNTIuLjNhMzQ1MzA1MTNkMjBiMGQwN2QwNzE1NWU4MDQ5
NzI1ZjgxY2EzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTgzMyw3ICs4MzMsNyBAQCB2b2lkIFdlYlNv
Y2tldENoYW5uZWw6OnNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29u
c3QgY2hhciogZGF0YQogICAgIG1faGFuZGxlLT5zZW5kRGF0YShmcmFtZURhdGEuZGF0YSgpLCBm
cmFtZURhdGEuc2l6ZSgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLVJlc291
cmNlUmVxdWVzdCBXZWJTb2NrZXRDaGFubmVsOjpjbGllbnRIYW5kc2hha2VSZXF1ZXN0KEZ1bmN0
aW9uPFN0cmluZyhjb25zdCBVUkwmKT4mJiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSkK
K1Jlc291cmNlUmVxdWVzdCBXZWJTb2NrZXRDaGFubmVsOjpjbGllbnRIYW5kc2hha2VSZXF1ZXN0
KEZ1bmN0aW9uPFN0cmluZyhjb25zdCBVUkwmKT4mJiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZSkgY29uc3QKIHsKICAgICByZXR1cm4gbV9oYW5kc2hha2UtPmNsaWVudEhhbmRzaGFrZVJl
cXVlc3QoV1RGTW92ZShjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgK
aW5kZXggZGM1Yjk5YzQyMGI5NTYzMjY0ZGUzYzIzYTIxNDA1OTY1ZTcyYzc2NS4uZjAyZTM0YTc0
NmY1NTBmYjNmMjliOGJlYzFlNjg4NGIyMDJkNzg2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC0xMTcsMTAgKzEx
NywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsKEV4Y2VwdGlvbkNvZGUgZXJyb3JDb2Rl
KSBvdmVycmlkZTsKIAogICAgIHVuc2lnbmVkIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXI7IH0KLSAgICBib29sIGhhc0NyZWF0ZWRIYW5kc2hha2UoKSB7IHJldHVybiAh
IW1faGFuZHNoYWtlOyB9Ci0gICAgUmVzb3VyY2VSZXF1ZXN0IGNsaWVudEhhbmRzaGFrZVJlcXVl
c3QoRnVuY3Rpb248U3RyaW5nKGNvbnN0IFVSTCYpPiYmIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKTsKLSAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBzZXJ2ZXJIYW5kc2hha2VSZXNw
b25zZSgpIGNvbnN0OwotICAgIFdlYlNvY2tldEhhbmRzaGFrZTo6TW9kZSBoYW5kc2hha2VNb2Rl
KCkgY29uc3Q7CisgICAgdW5zaWduZWQgY2hhbm5lbElkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBib29sIGhhc0NyZWF0ZWRIYW5kc2hha2UoKSBj
b25zdCBmaW5hbCB7IHJldHVybiAhIW1faGFuZHNoYWtlOyB9CisgICAgUmVzb3VyY2VSZXF1ZXN0
IGNsaWVudEhhbmRzaGFrZVJlcXVlc3QoRnVuY3Rpb248U3RyaW5nKGNvbnN0IFVSTCYpPiYmIGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiBzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0IGZpbmFsOworICAg
IFdlYlNvY2tldEhhbmRzaGFrZTo6TW9kZSBoYW5kc2hha2VNb2RlKCkgY29uc3QgZmluYWw7CiAK
ICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldENoYW5uZWw+OjpyZWY7CiAgICAgdXNpbmcg
UmVmQ291bnRlZDxXZWJTb2NrZXRDaGFubmVsPjo6ZGVyZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDM3M2U3MGU4OWY2ZjgxZDUzNWI5ODRhYzJiZjMwMWU3
OTAwMDVhZjMuLmM1MDIzYmQ2ZWJlMmNmZTg3NDYxNGFhZTYxMzQ2N2EyYmE3OWQ2YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC0xNjAsMTAgKzE2MCwxOSBA
QCBwcml2YXRlOgogCiAgICAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGVEaWRJbml0aWFsaXplVGFz
azsKIAorICAgIC8vIER1bW15IGltcGxlbWVudGF0aW9uIG9mIGluc3BlY3RvciByZWxhdGVkIEFQ
SXMuCisgICAgdW5zaWduZWQgY2hhbm5lbElkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAxOyB9CisgICAgYm9vbCBoYXNDcmVhdGVkSGFuZHNoYWtlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBSZXNvdXJjZVJlcXVlc3QgY2xpZW50SGFuZHNoYWtlUmVxdWVzdChG
dW5jdGlvbjxTdHJpbmcoY29uc3QgVVJMJik+JiYpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faGFu
ZHNoYWtlUmVxdWVzdDsgfQorICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHNlcnZlckhhbmRz
aGFrZVJlc3BvbnNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9oYW5kc2hha2VSZXNwb25zZTsg
fQorICAgIFdlYlNvY2tldEhhbmRzaGFrZTo6TW9kZSBoYW5kc2hha2VNb2RlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpNb2RlOjpOb3JtYWw7IH0K
KwogICAgIFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gbV93b3JrZXJHbG9iYWxTY29wZTsKICAgICBS
ZWY8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiBtX3dvcmtlckNsaWVu
dFdyYXBwZXI7CiAgICAgUmVmUHRyPEJyaWRnZT4gbV9icmlkZ2U7CiAgICAgUmVmPFNvY2tldFBy
b3ZpZGVyPiBtX3NvY2tldFByb3ZpZGVyOworICAgIFJlc291cmNlUmVxdWVzdCBtX2hhbmRzaGFr
ZVJlcXVlc3Q7CisgICAgUmVzb3VyY2VSZXNwb25zZSBtX2hhbmRzaGFrZVJlc3BvbnNlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDhkMDM4MjU5
M2RkOWQ0ZDQ4Mzc2ZWI4MDdlODBiNjU0ZmQxMWQxZDQuLjhiMTI4OGQ1MzVjZDA1ZmYxOGEwNGM5
YWYyNWZiMmU3ODY1MzM0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTgxMiwxMyArODEyLDE1
IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjplbmFibGUoKQogICAgIHsKICAgICAgICAg
TG9ja0hvbGRlciBsb2NrKFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCkpOwog
Ci0gICAgICAgIGZvciAoV2ViU29ja2V0KiB3ZWJTb2NrZXQgOiBhY3RpdmVXZWJTb2NrZXRzKGxv
Y2spKSB7Ci0gICAgICAgICAgICBBU1NFUlQoaXM8V2ViU29ja2V0Q2hhbm5lbD4od2ViU29ja2V0
LT5jaGFubmVsKCkuZ2V0KCkpKTsKLSAgICAgICAgICAgIFdlYlNvY2tldENoYW5uZWwqIGNoYW5u
ZWwgPSBkb3duY2FzdDxXZWJTb2NrZXRDaGFubmVsPih3ZWJTb2NrZXQtPmNoYW5uZWwoKS5nZXQo
KSk7CisgICAgICAgIGZvciAoYXV0byogd2ViU29ja2V0IDogYWN0aXZlV2ViU29ja2V0cyhsb2Nr
KSkgeworICAgICAgICAgICAgaWYgKCFpczxEb2N1bWVudD4od2ViU29ja2V0LT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
YXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKndlYlNvY2tldC0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgICAgIGF1dG8gY2hhbm5lbCA9IHdlYlNvY2tldC0+
Y2hhbm5lbCgpOwogCi0gICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gY2hhbm5lbC0+
aWRlbnRpZmllcigpOworICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllciA9IGNoYW5uZWwt
PmNoYW5uZWxJZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBkaWRDcmVhdGVXZWJTb2NrZXQoaWRl
bnRpZmllciwgd2ViU29ja2V0LT51cmwoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlID0gW2RvY3VtZW50ID0gbWFrZVdlYWtQdHIoY2hhbm5lbC0+ZG9j
dW1lbnQoKSldIChjb25zdCBVUkwmIHVybCkgLT4gU3RyaW5nIHsKKyAgICAgICAgICAgIGF1dG8g
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUgPSBbZG9jdW1lbnQgPSBtYWtlV2Vha1B0cihk
b2N1bWVudCldKGNvbnN0IFVSTCYgdXJsKSAtPiBTdHJpbmcgewogICAgICAgICAgICAgICAgIGlm
ICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5wYWdlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5wYWdlKCktPmNvb2tp
ZUphcigpLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKCpkb2N1bWVudCwgdXJsKTsKQEAg
LTk5MiwxMCArOTk0LDggQEAgV2ViU29ja2V0KiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndlYlNv
Y2tldEZvclJlcXVlc3RJZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKIHsKICAgICBMb2NrSG9s
ZGVyIGxvY2soV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzTXV0ZXgoKSk7CiAKLSAgICBm
b3IgKFdlYlNvY2tldCogd2ViU29ja2V0IDogYWN0aXZlV2ViU29ja2V0cyhsb2NrKSkgewotICAg
ICAgICBBU1NFUlQoaXM8V2ViU29ja2V0Q2hhbm5lbD4od2ViU29ja2V0LT5jaGFubmVsKCkuZ2V0
KCkpKTsKLSAgICAgICAgV2ViU29ja2V0Q2hhbm5lbCogY2hhbm5lbCA9IGRvd25jYXN0PFdlYlNv
Y2tldENoYW5uZWw+KHdlYlNvY2tldC0+Y2hhbm5lbCgpLmdldCgpKTsKLSAgICAgICAgaWYgKElk
ZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGNoYW5uZWwtPmlkZW50aWZpZXIoKSkgPT0gcmVx
dWVzdElkKQorICAgIGZvciAoYXV0byogd2ViU29ja2V0IDogYWN0aXZlV2ViU29ja2V0cyhsb2Nr
KSkgeworICAgICAgICBpZiAoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQod2ViU29ja2V0
LT5jaGFubmVsKCktPmNoYW5uZWxJZGVudGlmaWVyKCkpID09IHJlcXVlc3RJZCkKICAgICAgICAg
ICAgIHJldHVybiB3ZWJTb2NrZXQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5jcHAKaW5kZXggMzQ4
YTQ0ODBkNWJjMjQzNTlkMzkyOThhNDRlOGE5NmYyZTE2ZWYzZC4uYWUyYmIzOTBjZGFmMTUyOGE5
MjM3NmNjOTE1N2QxOWE4MDIzMjFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcApAQCAtNjksMTEgKzY5
LDggQEAgVmVjdG9yPFdlYlNvY2tldCo+IFBhZ2VOZXR3b3JrQWdlbnQ6OmFjdGl2ZVdlYlNvY2tl
dHMoY29uc3QgTG9ja0hvbGRlciYgbG9jaykKIHsKICAgICBWZWN0b3I8V2ViU29ja2V0Kj4gd2Vi
U29ja2V0czsKIAotICAgIGZvciAoV2ViU29ja2V0KiB3ZWJTb2NrZXQgOiBXZWJTb2NrZXQ6OmFs
bEFjdGl2ZVdlYlNvY2tldHMobG9jaykpIHsKLSAgICAgICAgaWYgKCFpczxXZWJTb2NrZXRDaGFu
bmVsPih3ZWJTb2NrZXQtPmNoYW5uZWwoKS5nZXQoKSkpCi0gICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICBhdXRvKiBjaGFubmVsID0gZG93bmNhc3Q8V2ViU29ja2V0Q2hhbm5lbD4od2Vi
U29ja2V0LT5jaGFubmVsKCkuZ2V0KCkpOworICAgIGZvciAoYXV0byogd2ViU29ja2V0IDogV2Vi
U29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzKGxvY2spKSB7CisgICAgICAgIGF1dG8qIGNoYW5u
ZWwgPSB3ZWJTb2NrZXQtPmNoYW5uZWwoKS5nZXQoKTsKICAgICAgICAgaWYgKCFjaGFubmVsKQog
ICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNmUzNzlkOTVlMjg0M2EwZGM3
ODg0MjgxMTcwNDg1MDA5MzdmNzcyOC4uZWQ5MTkxOGVhYjU4MDYzNjg4NmZkM2Q2OTBhYzNlMjY5
NjdmZDEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTIwNCw2ICsyMDQsOSBAQCB2b2lkIFdlYlNvY2tldENo
YW5uZWw6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIAogICAgIEFTU0VS
VChjb2RlID49IDAgfHwgY29kZSA9PSBXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2
ZW50Q29kZU5vdFNwZWNpZmllZCk7CiAKKyAgICBXZWJTb2NrZXRGcmFtZSBjbG9zaW5nRnJhbWUo
V2ViU29ja2V0RnJhbWU6Ok9wQ29kZUNsb3NlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgbnVsbHB0ciwg
MCk7CisgICAgbV9pbnNwZWN0b3IuZGlkU2VuZFdlYlNvY2tldEZyYW1lKG1fZG9jdW1lbnQuZ2V0
KCksIGNsb3NpbmdGcmFtZSk7CisKICAgICBNZXNzYWdlU2VuZGVyOjpzZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrU29ja2V0Q2hhbm5lbDo6Q2xvc2UgeyBjb2RlLCByZWFzb24gfSk7CiB9CiAKQEAgLTMy
MSw2ICszMjQsOCBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZENsb3NlKHVuc2lnbmVkIHNo
b3J0IGNvZGUsIFN0cmluZyYmIHJlYXNvbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAg
IFdlYlNvY2tldEZyYW1lIGNsb3NpbmdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQ2xvc2Us
IHRydWUsIGZhbHNlLCBmYWxzZSwgbnVsbHB0ciwgMCk7CisgICAgbV9pbnNwZWN0b3IuZGlkUmVj
ZWl2ZVdlYlNvY2tldEZyYW1lKG1fZG9jdW1lbnQuZ2V0KCksIGNsb3NpbmdGcmFtZSk7CiAgICAg
bV9pbnNwZWN0b3IuZGlkQ2xvc2VXZWJTb2NrZXQobV9kb2N1bWVudC5nZXQoKSk7CiAKICAgICBi
b29sIHJlY2VpdmVkQ2xvc2luZ0hhbmRzaGFrZSA9IGNvZGUgIT0gV2ViQ29yZTo6V2ViU29ja2V0
Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVBYm5vcm1hbENsb3N1cmU7CkBAIC0zODksNyArMzk0LDkg
QEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRTZW5kSGFuZHNoYWtlUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0KQogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KwogICAgIG1faW5zcGVjdG9yLndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdChtX2Rv
Y3VtZW50LmdldCgpLCByZXF1ZXN0KTsKKyAgICBtX2hhbmRzaGFrZVJlcXVlc3QgPSBXVEZNb3Zl
KHJlcXVlc3QpOwogfQogCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVIYW5kc2hh
a2VSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCkBAIC00MDAsNyArNDA3LDI4
IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZUhhbmRzaGFrZVJlc3BvbnNlKFJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CisKICAgICBtX2luc3BlY3Rvci5kaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2UobV9kb2N1bWVudC5nZXQoKSwgcmVzcG9uc2UpOworICAgIG1faGFuZHNoYWtlUmVzcG9u
c2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsKK30KKworUmVzb3VyY2VSZXF1ZXN0IFdlYlNvY2tldENo
YW5uZWw6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QoRnVuY3Rpb248U3RyaW5nKGNvbnN0IFVSTCYp
PiYmKSBjb25zdAoreworICAgIHJldHVybiBtX2hhbmRzaGFrZVJlcXVlc3Q7Cit9CisKK2NvbnN0
IFJlc291cmNlUmVzcG9uc2UmIFdlYlNvY2tldENoYW5uZWw6OnNlcnZlckhhbmRzaGFrZVJlc3Bv
bnNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9oYW5kc2hha2VSZXNwb25zZTsKK30KKworV2Vi
U29ja2V0SGFuZHNoYWtlOjpNb2RlIFdlYlNvY2tldENoYW5uZWw6OmhhbmRzaGFrZU1vZGUoKSBj
b25zdAoreworICAgIGlmIChtX2hhbmRzaGFrZVJlcXVlc3QuaXNOdWxsKCkpCisgICAgICAgIHJl
dHVybiBXZWJTb2NrZXRIYW5kc2hha2U6Ok1vZGU6OkluY29tcGxldGU7CisgICAgaWYgKG1faGFu
ZHNoYWtlUmVzcG9uc2UuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBXZWJTb2NrZXRIYW5kc2hh
a2U6Ok1vZGU6OkZhaWxlZDsKKyAgICByZXR1cm4gV2ViU29ja2V0SGFuZHNoYWtlOjpNb2RlOjpD
b25uZWN0ZWQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDljNDUwYWM3
MWVhZjYxMWZmMTk2ZThhODFkZTgxM2RiOWQyOWRmN2UuLjBjM2MxMzVmZTQyOGI2MTMwNjA2MjJk
OGQxOGY1NWY2MzJmZjU5NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJN
ZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0SWRlbnRpZmllci5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvTmV0d29ya1NlbmRRdWV1ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvV2ViU29ja2V0Q2hhbm5lbEluc3BlY3Rvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2Vi
U29ja2V0RnJhbWUuaD4KQEAgLTk4LDYgKzEwMCwxMiBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHZvaWQgc2VuZE1lc3NhZ2UoVCYmLCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAg
ICAgdm9pZCBlbnF1ZXVlVGFzayhGdW5jdGlvbjx2b2lkKCk+JiYpOwogCisgICAgdW5zaWduZWQg
Y2hhbm5lbElkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXIudG9V
SW50NjQoKTsgfQorICAgIGJvb2wgaGFzQ3JlYXRlZEhhbmRzaGFrZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICFtX3VybC5pc051bGwoKTsgfQorICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBj
bGllbnRIYW5kc2hha2VSZXF1ZXN0KEZ1bmN0aW9uPFN0cmluZyhjb25zdCBVUkwmKT4mJikgY29u
c3QgZmluYWw7CisgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgc2VydmVySGFu
ZHNoYWtlUmVzcG9uc2UoKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpXZWJTb2NrZXRIYW5k
c2hha2U6Ok1vZGUgaGFuZHNoYWtlTW9kZSgpIGNvbnN0IGZpbmFsOworCiAgICAgV2Vha1B0cjxX
ZWJDb3JlOjpEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBXZWJTb2NrZXRJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKICAgICBXZWFrUHRyPFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWxDbGllbnQ+
IG1fY2xpZW50OwpAQCAtMTEwLDYgKzExOCw4IEBAIHByaXZhdGU6CiAgICAgRGVxdWU8RnVuY3Rp
b248dm9pZCgpPj4gbV9wZW5kaW5nVGFza3M7CiAgICAgV2ViQ29yZTo6TmV0d29ya1NlbmRRdWV1
ZSBtX21lc3NhZ2VRdWV1ZTsKICAgICBXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsSW5zcGVjdG9y
IG1faW5zcGVjdG9yOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2hhbmRzaGFrZVJl
cXVlc3Q7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX2hhbmRzaGFrZVJlc3BvbnNl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407476</attachid>
            <date>2020-08-28 09:27:24 -0700</date>
            <delta_ts>2020-08-31 00:38:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215928-20200828182722.patch</filename>
            <type>text/plain</type>
            <size>16012</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjU3NGE4NGMyNmI4YTFi
NThkZGUyN2UwOGRjMGQwYmJjMzVlZWEzMi4uYjI1ZmJiYzA0NjU3MGE0YzljMDgzYmM5ZTRmZmZh
MjA4ZDU1OWQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA4LTI4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUgaW5zcGVjdGlv
biBvZiBXZWJTb2NrZXQgd2hlbiBvcGVuaW5nIFdlYiBJbnNwZWN0b3IgaW4gdGhlIG1pZGRsZSBv
ZiB0aGUgY29ubmVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE1OTI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmV0cm9maXQgQVBJIHVzZWQgYnkgSW5zcGVjdG9yIGZyb20gV2ViQ29yZTo6V2Vi
U29ja2V0Q2hhbm5lbCAgdG8gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuCisgICAgICAgIE1h
a2UgSW5zcGVjdG9yIGNvZGUgd29yayB3aXRoIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLgor
ICAgICAgICBBZGQgYSBkdW1teSBpbXBsZW1lbnRhdGlvbiBmb3IgV29ya2VyIFdlYlNvY2tldCAo
bm90IHN1cHBvcnRlZCBjdXJyZW50bHkgYnkgV2ViIEluc3BlY3RvcikuCisKKyAgICAgICAgQ292
ZXJlZCBieSBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3RvciB3aXRoIE5T
VVJMU2Vzc2lvbiBXZWJTb2NrZXQgY29kZSBwYXRoIGVuYWJsZWQuCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXRDaGFubmVsOjpjbGllbnRIYW5kc2hha2VSZXF1ZXN0IGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2ViU29ja2V0Rm9yUmVxdWVzdElkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5jcHA6CisKIDIw
MjAtMDgtMjggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBUZXh0RW5jb2RlclN0cmVhbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzMDc4NjFmNDYyMzI5
YzliNWRlZTU1OWJlOGEyMjZlZTZmY2NlZmY1Li4xYWFlYzgzY2YyYmM1NGFmZGZmNmUzODc4ODQy
N2Y2NTYyZmIwNTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA4LTI4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUgaW5zcGVjdGlv
biBvZiBXZWJTb2NrZXQgd2hlbiBvcGVuaW5nIFdlYiBJbnNwZWN0b3IgaW4gdGhlIG1pZGRsZSBv
ZiB0aGUgY29ubmVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE1OTI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50IGluc3BlY3RvciByZWxhdGVkIEFQSSBhbmQgYWRkIGFkZGl0aW9u
YWwgbWVzc2FnZXMgZm9yIFdlYlNvY2tldCBmcmFtZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tl
dENoYW5uZWw6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlk
Q2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRDaGFubmVsOjpkaWRTZW5kSGFuZHNo
YWtlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6OmRpZFJlY2Vp
dmVIYW5kc2hha2VSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6
OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2Nr
ZXRDaGFubmVsOjpzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNvY2tldENoYW5uZWw6OmhhbmRzaGFrZU1vZGUgY29uc3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmg6CisKIDIwMjAtMDgtMjcgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBU
cmFuc2Zvcm1TdHJlYW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggZmMzNzAzNWJi
NDQ0OTZhZWFjNjQ4MGZmMzFiOGVjY2QwNThiM2VlMS4uYzQyNTNkNmI3ZTFiNGFmNzMwNTdjNjM1
ZDliMWY3OWQyOWQ1ODVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTQzLDYg
KzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTb2NrZXRQcm92aWRlcjsKIGNsYXNzIFdl
YlNvY2tldENoYW5uZWxDbGllbnQ7CkBAIC01NCw4ICs1NSw2IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFdlYlNvY2tldENoYW5uZWxDbGllbnQmLCBTb2NrZXRQcm92aWRlciYpOwogICAg
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCBi
b29sIGlzV2ViU29ja2V0Q2hhbm5lbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KICAgICBl
bnVtIFNlbmRSZXN1bHQgewogICAgICAgICBTZW5kU3VjY2VzcywKICAgICAgICAgU2VuZEZhaWwK
QEAgLTgwLDYgKzc5LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZigpIHsgcmVmVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwoKTsgfQogICAgIHZvaWQgZGVyZWYoKSB7IGRlcmVmVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwoKTsgfQogCisgICAgLy8gRklYTUU6IE1lcmdlIGNoYW5uZWxJZGVu
dGlmaWVyIGFuZCBpZGVudGlmaWVyLgorICAgIHZpcnR1YWwgdW5zaWduZWQgY2hhbm5lbElkZW50
aWZpZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc0NyZWF0ZWRIYW5kc2hha2Uo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQ29ubmVjdGVkKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgUmVzb3VyY2VSZXF1ZXN0IGNsaWVudEhhbmRzaGFrZVJlcXVlc3QoRnVuY3Rp
b248U3RyaW5nKGNvbnN0IFVSTCYpPiYmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiBzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0ID0gMDsKKwog
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgflRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKCkgPSBk
ZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCByZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcAppbmRleCA4YjY5MTRmYWIwMTQ4ZDdmZGExNjJmMmY4OGE5YTVlY2Q2
MzY4ZDUyLi43ODA0ZGY0YTJiZTI3ZWZkNTM1NmMzMjljODNlMTAzNmU1MDZhZWRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwCkBAIC04MzMsNyArODMzLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJh
bWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEKICAgICBt
X2hhbmRsZS0+c2VuZERhdGEoZnJhbWVEYXRhLmRhdGEoKSwgZnJhbWVEYXRhLnNpemUoKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi1SZXNvdXJjZVJlcXVlc3QgV2ViU29ja2V0
Q2hhbm5lbDo6Y2xpZW50SGFuZHNoYWtlUmVxdWVzdChGdW5jdGlvbjxTdHJpbmcoY29uc3QgVVJM
Jik+JiYgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpCitSZXNvdXJjZVJlcXVlc3QgV2Vi
U29ja2V0Q2hhbm5lbDo6Y2xpZW50SGFuZHNoYWtlUmVxdWVzdChGdW5jdGlvbjxTdHJpbmcoY29u
c3QgVVJMJik+JiYgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1faGFuZHNoYWtlLT5jbGllbnRIYW5kc2hha2VSZXF1ZXN0KFdURk1vdmUoY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpKTsKIH0KQEAgLTg0Myw5ICs4NDMsNCBAQCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiBXZWJTb2NrZXRDaGFubmVsOjpzZXJ2ZXJIYW5kc2hha2VSZXNwb25z
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faGFuZHNoYWtlLT5zZXJ2ZXJIYW5kc2hha2VSZXNwb25z
ZSgpOwogfQogCi1XZWJTb2NrZXRIYW5kc2hha2U6Ok1vZGUgV2ViU29ja2V0Q2hhbm5lbDo6aGFu
ZHNoYWtlTW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faGFuZHNoYWtlLT5tb2RlKCk7Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IGRjNWI5OWM0MjBiOTU2MzI2
NGRlM2MyM2EyMTQwNTk2NWU3MmM3NjUuLjE3Zjk1YWUxYTQ1MWNjZjNiYTRlYTVkMmQyODM3Y2Ux
YzZkZjQ3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuaApAQCAtNjQsOCArNjQsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50JiBjbGllbnQsIFNvY2tldFByb3ZpZGVyJiBwcm92aWRlcikgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRDaGFubmVsKGRvY3VtZW50LCBjbGllbnQsIHByb3Zp
ZGVyKSk7IH0KICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRDaGFubmVsKCk7CiAKLSAgICBib29sIGlz
V2ViU29ja2V0Q2hhbm5lbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIGJv
b2wgc2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAogICAgIC8vIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsIGZ1bmN0aW9ucy4KQEAgLTExNywxMCArMTE1LDExIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZEZhaWwoRXhjZXB0aW9uQ29kZSBlcnJvckNvZGUpIG92ZXJyaWRlOwog
CiAgICAgdW5zaWduZWQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsg
fQotICAgIGJvb2wgaGFzQ3JlYXRlZEhhbmRzaGFrZSgpIHsgcmV0dXJuICEhbV9oYW5kc2hha2U7
IH0KLSAgICBSZXNvdXJjZVJlcXVlc3QgY2xpZW50SGFuZHNoYWtlUmVxdWVzdChGdW5jdGlvbjxT
dHJpbmcoY29uc3QgVVJMJik+JiYgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOwotICAg
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKCkgY29uc3Q7
Ci0gICAgV2ViU29ja2V0SGFuZHNoYWtlOjpNb2RlIGhhbmRzaGFrZU1vZGUoKSBjb25zdDsKKyAg
ICB1bnNpZ25lZCBjaGFubmVsSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQorICAgIGJvb2wgaGFzQ3JlYXRlZEhhbmRzaGFrZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICEhbV9oYW5kc2hha2U7IH0KKyAgICBib29sIGlzQ29ubmVjdGVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9oYW5kc2hha2UtPm1vZGUoKSA9PSBXZWJTb2NrZXRIYW5kc2hha2U6Ok1v
ZGU6OkNvbm5lY3RlZDsgfQorICAgIFJlc291cmNlUmVxdWVzdCBjbGllbnRIYW5kc2hha2VSZXF1
ZXN0KEZ1bmN0aW9uPFN0cmluZyhjb25zdCBVUkwmKT4mJiBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZSkgY29uc3QgZmluYWw7CisgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgc2VydmVy
SGFuZHNoYWtlUmVzcG9uc2UoKSBjb25zdCBmaW5hbDsKIAogICAgIHVzaW5nIFJlZkNvdW50ZWQ8
V2ViU29ja2V0Q2hhbm5lbD46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldENo
YW5uZWw+OjpkZXJlZjsKQEAgLTIzMiw3ICsyMzEsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6
OldlYlNvY2tldENoYW5uZWwpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6
OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsJiB0aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCkg
eyByZXR1cm4gdGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaXNXZWJTb2NrZXRDaGFubmVsKCk7
IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmgKaW5kZXggMzczZTcwZTg5ZjZmODFkNTM1Yjk4NGFjMmJmMzAxZTc5MDAw
NWFmMy4uYWYwNjA3N2E0YmY0MGVmN2FlM2VkMTA2YjQ3NzFlODhhZTU0MzQ3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTE2MCwxMCArMTYwLDE5IEBAIHBy
aXZhdGU6CiAKICAgICBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZURpZEluaXRpYWxpemVUYXNrOwog
CisgICAgLy8gRHVtbXkgaW1wbGVtZW50YXRpb24gb2YgaW5zcGVjdG9yIHJlbGF0ZWQgQVBJcy4K
KyAgICB1bnNpZ25lZCBjaGFubmVsSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDE7
IH0KKyAgICBib29sIGhhc0NyZWF0ZWRIYW5kc2hha2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgaXNDb25uZWN0ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIFJlc291cmNlUmVxdWVzdCBjbGllbnRIYW5kc2hha2VSZXF1ZXN0KEZ1bmN0aW9u
PFN0cmluZyhjb25zdCBVUkwmKT4mJikgY29uc3QgZmluYWwgeyByZXR1cm4gbV9oYW5kc2hha2VS
ZXF1ZXN0OyB9CisgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgc2VydmVySGFuZHNoYWtlUmVz
cG9uc2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2hhbmRzaGFrZVJlc3BvbnNlOyB9CisKICAg
ICBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IG1fd29ya2VyR2xvYmFsU2NvcGU7CiAgICAgUmVmPFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gbV93b3JrZXJDbGllbnRXcmFw
cGVyOwogICAgIFJlZlB0cjxCcmlkZ2U+IG1fYnJpZGdlOwogICAgIFJlZjxTb2NrZXRQcm92aWRl
cj4gbV9zb2NrZXRQcm92aWRlcjsKKyAgICBSZXNvdXJjZVJlcXVlc3QgbV9oYW5kc2hha2VSZXF1
ZXN0OworICAgIFJlc291cmNlUmVzcG9uc2UgbV9oYW5kc2hha2VSZXNwb25zZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA4ZDAzODI1OTNkZDlk
NGQ0ODM3NmViODA3ZTgwYjY1NGZkMTFkMWQ0Li43OGY1YWY3YTI0N2E4MmE3YjNjODZmN2ZhZjA1
ZjUyMjM1Njk2ZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC04MTIsMjAgKzgxMiwyMyBAQCB2
b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZW5hYmxlKCkKICAgICB7CiAgICAgICAgIExvY2tI
b2xkZXIgbG9jayhXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tldHNNdXRleCgpKTsKIAotICAg
ICAgICBmb3IgKFdlYlNvY2tldCogd2ViU29ja2V0IDogYWN0aXZlV2ViU29ja2V0cyhsb2NrKSkg
ewotICAgICAgICAgICAgQVNTRVJUKGlzPFdlYlNvY2tldENoYW5uZWw+KHdlYlNvY2tldC0+Y2hh
bm5lbCgpLmdldCgpKSk7Ci0gICAgICAgICAgICBXZWJTb2NrZXRDaGFubmVsKiBjaGFubmVsID0g
ZG93bmNhc3Q8V2ViU29ja2V0Q2hhbm5lbD4od2ViU29ja2V0LT5jaGFubmVsKCkuZ2V0KCkpOwor
ICAgICAgICBmb3IgKGF1dG8qIHdlYlNvY2tldCA6IGFjdGl2ZVdlYlNvY2tldHMobG9jaykpIHsK
KyAgICAgICAgICAgIGlmICghaXM8RG9jdW1lbnQ+KHdlYlNvY2tldC0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGF1dG8m
IGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCp3ZWJTb2NrZXQtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7CisgICAgICAgICAgICBhdXRvIGNoYW5uZWwgPSB3ZWJTb2NrZXQtPmNoYW5u
ZWwoKTsKIAotICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllciA9IGNoYW5uZWwtPmlkZW50
aWZpZXIoKTsKKyAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IGNoYW5uZWwtPmNoYW5uZWxJ
ZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBkaWRDcmVhdGVXZWJTb2NrZXQoaWRlbnRpZmllciwg
d2ViU29ja2V0LT51cmwoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlID0gW2RvY3VtZW50ID0gbWFrZVdlYWtQdHIoY2hhbm5lbC0+ZG9jdW1lbnQoKSld
IChjb25zdCBVUkwmIHVybCkgLT4gU3RyaW5nIHsKKworICAgICAgICAgICAgYXV0byBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSA9IFtkb2N1bWVudCA9IG1ha2VXZWFrUHRyKGRvY3VtZW50
KV0oY29uc3QgVVJMJiB1cmwpIC0+IFN0cmluZyB7CiAgICAgICAgICAgICAgICAgaWYgKCFkb2N1
bWVudCB8fCAhZG9jdW1lbnQtPnBhZ2UoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQtPnBhZ2UoKS0+Y29va2llSmFyKCku
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoKmRvY3VtZW50LCB1cmwpOwogICAgICAgICAg
ICAgfTsKICAgICAgICAgICAgIHdpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdChpZGVu
dGlmaWVyLCBjaGFubmVsLT5jbGllbnRIYW5kc2hha2VSZXF1ZXN0KFdURk1vdmUoY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUpKSk7CiAKLSAgICAgICAgICAgIGlmIChjaGFubmVsLT5oYW5k
c2hha2VNb2RlKCkgPT0gV2ViU29ja2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQpCisgICAgICAgICAg
ICBpZiAoY2hhbm5lbC0+aXNDb25uZWN0ZWQoKSkKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZl
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UoaWRlbnRpZmllciwgY2hhbm5lbC0+c2VydmVySGFu
ZHNoYWtlUmVzcG9uc2UoKSk7CiAKICAgICAgICAgICAgIGlmICh3ZWJTb2NrZXQtPnJlYWR5U3Rh
dGUoKSA9PSBXZWJTb2NrZXQ6OkNMT1NFRCkKQEAgLTk5MiwxMCArOTk1LDggQEAgV2ViU29ja2V0
KiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndlYlNvY2tldEZvclJlcXVlc3RJZChjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2soV2ViU29ja2V0OjphbGxBY3Rp
dmVXZWJTb2NrZXRzTXV0ZXgoKSk7CiAKLSAgICBmb3IgKFdlYlNvY2tldCogd2ViU29ja2V0IDog
YWN0aXZlV2ViU29ja2V0cyhsb2NrKSkgewotICAgICAgICBBU1NFUlQoaXM8V2ViU29ja2V0Q2hh
bm5lbD4od2ViU29ja2V0LT5jaGFubmVsKCkuZ2V0KCkpKTsKLSAgICAgICAgV2ViU29ja2V0Q2hh
bm5lbCogY2hhbm5lbCA9IGRvd25jYXN0PFdlYlNvY2tldENoYW5uZWw+KHdlYlNvY2tldC0+Y2hh
bm5lbCgpLmdldCgpKTsKLSAgICAgICAgaWYgKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElk
KGNoYW5uZWwtPmlkZW50aWZpZXIoKSkgPT0gcmVxdWVzdElkKQorICAgIGZvciAoYXV0byogd2Vi
U29ja2V0IDogYWN0aXZlV2ViU29ja2V0cyhsb2NrKSkgeworICAgICAgICBpZiAoSWRlbnRpZmll
cnNGYWN0b3J5OjpyZXF1ZXN0SWQod2ViU29ja2V0LT5jaGFubmVsKCktPmNoYW5uZWxJZGVudGlm
aWVyKCkpID09IHJlcXVlc3RJZCkKICAgICAgICAgICAgIHJldHVybiB3ZWJTb2NrZXQ7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFn
ZU5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2Uv
UGFnZU5ldHdvcmtBZ2VudC5jcHAKaW5kZXggMzQ4YTQ0ODBkNWJjMjQzNTlkMzkyOThhNDRlOGE5
NmYyZTE2ZWYzZC4uYWUyYmIzOTBjZGFmMTUyOGE5MjM3NmNjOTE1N2QxOWE4MDIzMjFiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3b3Jr
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
TmV0d29ya0FnZW50LmNwcApAQCAtNjksMTEgKzY5LDggQEAgVmVjdG9yPFdlYlNvY2tldCo+IFBh
Z2VOZXR3b3JrQWdlbnQ6OmFjdGl2ZVdlYlNvY2tldHMoY29uc3QgTG9ja0hvbGRlciYgbG9jaykK
IHsKICAgICBWZWN0b3I8V2ViU29ja2V0Kj4gd2ViU29ja2V0czsKIAotICAgIGZvciAoV2ViU29j
a2V0KiB3ZWJTb2NrZXQgOiBXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tldHMobG9jaykpIHsK
LSAgICAgICAgaWYgKCFpczxXZWJTb2NrZXRDaGFubmVsPih3ZWJTb2NrZXQtPmNoYW5uZWwoKS5n
ZXQoKSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBhdXRvKiBjaGFubmVsID0g
ZG93bmNhc3Q8V2ViU29ja2V0Q2hhbm5lbD4od2ViU29ja2V0LT5jaGFubmVsKCkuZ2V0KCkpOwor
ICAgIGZvciAoYXV0byogd2ViU29ja2V0IDogV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRz
KGxvY2spKSB7CisgICAgICAgIGF1dG8qIGNoYW5uZWwgPSB3ZWJTb2NrZXQtPmNoYW5uZWwoKS5n
ZXQoKTsKICAgICAgICAgaWYgKCFjaGFubmVsKQogICAgICAgICAgICAgY29udGludWU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5u
ZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5l
bC5jcHAKaW5kZXggNmUzNzlkOTVlMjg0M2EwZGM3ODg0MjgxMTcwNDg1MDA5MzdmNzcyOC4uOTIw
NTNjZTA5MTdhZDIyYTI0NjBlOWFhYTI5YWRkYmI3MmViYzM2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTIw
NCw2ICsyMDQsOSBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNsb3NlKGludCBjb2RlLCBjb25z
dCBTdHJpbmcmIHJlYXNvbikKIAogICAgIEFTU0VSVChjb2RlID49IDAgfHwgY29kZSA9PSBXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU5vdFNwZWNpZmllZCk7CiAKKyAg
ICBXZWJTb2NrZXRGcmFtZSBjbG9zaW5nRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZUNsb3Nl
LCB0cnVlLCBmYWxzZSwgdHJ1ZSwgbnVsbHB0ciwgMCk7CisgICAgbV9pbnNwZWN0b3IuZGlkU2Vu
ZFdlYlNvY2tldEZyYW1lKG1fZG9jdW1lbnQuZ2V0KCksIGNsb3NpbmdGcmFtZSk7CisKICAgICBN
ZXNzYWdlU2VuZGVyOjpzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Q2xvc2Ug
eyBjb2RlLCByZWFzb24gfSk7CiB9CiAKQEAgLTMyMSw2ICszMjQsOCBAQCB2b2lkIFdlYlNvY2tl
dENoYW5uZWw6OmRpZENsb3NlKHVuc2lnbmVkIHNob3J0IGNvZGUsIFN0cmluZyYmIHJlYXNvbikK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIFdlYlNvY2tldEZyYW1lIGNsb3NpbmdGcmFt
ZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQ2xvc2UsIHRydWUsIGZhbHNlLCBmYWxzZSwgbnVsbHB0
ciwgMCk7CisgICAgbV9pbnNwZWN0b3IuZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKG1fZG9jdW1l
bnQuZ2V0KCksIGNsb3NpbmdGcmFtZSk7CiAgICAgbV9pbnNwZWN0b3IuZGlkQ2xvc2VXZWJTb2Nr
ZXQobV9kb2N1bWVudC5nZXQoKSk7CiAKICAgICBib29sIHJlY2VpdmVkQ2xvc2luZ0hhbmRzaGFr
ZSA9IGNvZGUgIT0gV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVBYm5v
cm1hbENsb3N1cmU7CkBAIC0zODksNyArMzk0LDkgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpk
aWRTZW5kSGFuZHNoYWtlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogICAgICAg
ICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwogICAgIG1faW5zcGVjdG9yLndpbGxTZW5k
V2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdChtX2RvY3VtZW50LmdldCgpLCByZXF1ZXN0KTsKKyAg
ICBtX2hhbmRzaGFrZVJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOwogfQogCiB2b2lkIFdlYlNv
Y2tldENoYW5uZWw6OmRpZFJlY2VpdmVIYW5kc2hha2VSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNl
JiYgcmVzcG9uc2UpCkBAIC00MDAsNyArNDA3LDE5IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6
ZGlkUmVjZWl2ZUhhbmRzaGFrZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkK
ICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAgICBtX2luc3BlY3Rvci5k
aWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UobV9kb2N1bWVudC5nZXQoKSwgcmVz
cG9uc2UpOworICAgIG1faGFuZHNoYWtlUmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsKK30K
KworUmVzb3VyY2VSZXF1ZXN0IFdlYlNvY2tldENoYW5uZWw6OmNsaWVudEhhbmRzaGFrZVJlcXVl
c3QoRnVuY3Rpb248U3RyaW5nKGNvbnN0IFVSTCYpPiYmKSBjb25zdAoreworICAgIHJldHVybiBt
X2hhbmRzaGFrZVJlcXVlc3Q7Cit9CisKK2NvbnN0IFJlc291cmNlUmVzcG9uc2UmIFdlYlNvY2tl
dENoYW5uZWw6OnNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9oYW5kc2hha2VSZXNwb25zZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKaW5k
ZXggOWM0NTBhYzcxZWFmNjExZmYxOTZlOGE4MWRlODEzZGI5ZDI5ZGY3ZS4uOWFmNGYzZjgxYzA2
ODQxMDhjYTQyZTI1ZWU1YzlkMWMwODQwZmU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaApAQCAtMjksNiArMjksOCBAQAog
I2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU2VuZFF1ZXVlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9u
c2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9XZWJTb2NrZXRDaGFubmVsSW5zcGVjdG9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9XZWJTb2NrZXRGcmFtZS5oPgpAQCAtOTgsNiArMTAwLDEyIEBAIHByaXZhdGU6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5kTWVzc2FnZShUJiYsIHNpemVfdCBieXRl
TGVuZ3RoKTsKICAgICB2b2lkIGVucXVldWVUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKKyAg
ICB1bnNpZ25lZCBjaGFubmVsSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faWRl
bnRpZmllci50b1VJbnQ2NCgpOyB9CisgICAgYm9vbCBoYXNDcmVhdGVkSGFuZHNoYWtlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIW1fdXJsLmlzTnVsbCgpOyB9CisgICAgYm9vbCBpc0Nvbm5lY3Rl
ZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2hhbmRzaGFrZVJlc3BvbnNlLmlzTnVsbCgpOyB9
CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IGNsaWVudEhhbmRzaGFrZVJlcXVlc3QoRnVu
Y3Rpb248U3RyaW5nKGNvbnN0IFVSTCYpPiYmKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0IGZp
bmFsOworCiAgICAgV2Vha1B0cjxXZWJDb3JlOjpEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBX
ZWJTb2NrZXRJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBXZWFrUHRyPFdlYkNvcmU6Oldl
YlNvY2tldENoYW5uZWxDbGllbnQ+IG1fY2xpZW50OwpAQCAtMTEwLDYgKzExOCw4IEBAIHByaXZh
dGU6CiAgICAgRGVxdWU8RnVuY3Rpb248dm9pZCgpPj4gbV9wZW5kaW5nVGFza3M7CiAgICAgV2Vi
Q29yZTo6TmV0d29ya1NlbmRRdWV1ZSBtX21lc3NhZ2VRdWV1ZTsKICAgICBXZWJDb3JlOjpXZWJT
b2NrZXRDaGFubmVsSW5zcGVjdG9yIG1faW5zcGVjdG9yOworICAgIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCBtX2hhbmRzaGFrZVJlcXVlc3Q7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSBtX2hhbmRzaGFrZVJlc3BvbnNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407592</attachid>
            <date>2020-08-31 00:38:34 -0700</date>
            <delta_ts>2020-09-01 05:23:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215928-20200831093832.patch</filename>
            <type>text/plain</type>
            <size>15908</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk0YmQ0NjNkMTIyN2Zj
N2VjZjgwNjcyMzc4ZGEwNDJlNjliZDM0OC4uODg4NDFjMTVhMTI4YTg3NDhjYmY0N2FmYzE3MTI0
YWUyN2ZjY2ZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA4LTMxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUgaW5zcGVjdGlv
biBvZiBXZWJTb2NrZXQgd2hlbiBvcGVuaW5nIFdlYiBJbnNwZWN0b3IgaW4gdGhlIG1pZGRsZSBv
ZiB0aGUgY29ubmVjdGlvbiBsaWtlIGRvbmUgZm9yIHRoZSBsZWdhY3kgV2ViU29ja2V0IGltcGxl
bWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTU5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZXRyb2ZpdCBBUEkgdXNlZCBieSBJbnNwZWN0b3IgZnJvbSBXZWJDb3JlOjpXZWJTb2NrZXRD
aGFubmVsIHRvIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLgorICAgICAgICBNYWtlIEluc3Bl
Y3RvciBjb2RlIHdvcmsgd2l0aCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC4KKyAgICAgICAg
QWRkIGEgZHVtbXkgaW1wbGVtZW50YXRpb24gZm9yIFdvcmtlciBXZWJTb2NrZXQgKG5vdCBzdXBw
b3J0ZWQgY3VycmVudGx5IGJ5IFdlYiBJbnNwZWN0b3IpLgorCisgICAgICAgIENvdmVyZWQgYnkg
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3Igd2l0aCBOU1VSTFNlc3Np
b24gV2ViU29ja2V0IGNvZGUgcGF0aCBlbmFibGVkLgorCisgICAgICAgICogTW9kdWxlcy93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0Q2hhbm5lbDo6Y2xpZW50SGFuZHNoYWtlUmVxdWVzdCBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndlYlNvY2tldEZvclJlcXVlc3RJZCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwOgorCiAyMDIwLTA4LTMw
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgVGV4dERlY29kZXJTdHJlYW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTRmMDg0MmQxMDU5MzE2NWZkMTkz
YWU0NTQyYjA1ZDc2NDUyOWEzNy4uN2U1ZjQ4OGM3MGI4YzNmYTg0M2IyZWE5ZGNkZDcyNTRhYTQ1
YjMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMC0wOC0zMSAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIGluc3BlY3Rpb24gb2YgV2Vi
U29ja2V0IHdoZW4gb3BlbmluZyBXZWIgSW5zcGVjdG9yIGluIHRoZSBtaWRkbGUgb2YgdGhlIGNv
bm5lY3Rpb24gbGlrZSBkb25lIGZvciB0aGUgbGVnYWN5IFdlYlNvY2tldCBpbXBsZW1lbnRhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1OTI4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVt
ZW50IGluc3BlY3RvciByZWxhdGVkIEFQSSBhbmQgYWRkIGFkZGl0aW9uYWwgbWVzc2FnZXMgZm9y
IFdlYlNvY2tldCBmcmFtZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6OmNsb3Nl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkQ2xvc2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTb2NrZXRDaGFubmVsOjpkaWRTZW5kSGFuZHNoYWtlUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVIYW5kc2hha2VSZXNw
b25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6OmNsaWVudEhhbmRzaGFr
ZVJlcXVlc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRDaGFubmVsOjpzZXJ2
ZXJIYW5kc2hha2VSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENo
YW5uZWw6OmhhbmRzaGFrZU1vZGUgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRDaGFubmVsLmg6CisKIDIwMjAtMDgtMzEgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gRGlzYWJsZSBzbmlmZmluZyBmb3IgV2Vi
U29ja2V0IGhhbmRzaGFrZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggZmMzNzAz
NWJiNDQ0OTZhZWFjNjQ4MGZmMzFiOGVjY2QwNThiM2VlMS4uYzQyNTNkNmI3ZTFiNGFmNzMwNTdj
NjM1ZDliMWY3OWQyOWQ1ODVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTQz
LDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYjsKIGNsYXNzIERvY3Vt
ZW50OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNs
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTb2NrZXRQcm92aWRlcjsKIGNsYXNz
IFdlYlNvY2tldENoYW5uZWxDbGllbnQ7CkBAIC01NCw4ICs1NSw2IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFdlYlNvY2tldENoYW5uZWxDbGllbnQmLCBTb2NrZXRQcm92aWRlciYpOwog
ICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVh
bCBib29sIGlzV2ViU29ja2V0Q2hhbm5lbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KICAg
ICBlbnVtIFNlbmRSZXN1bHQgewogICAgICAgICBTZW5kU3VjY2VzcywKICAgICAgICAgU2VuZEZh
aWwKQEAgLTgwLDYgKzc5LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZigpIHsgcmVmVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwoKTsgfQogICAgIHZvaWQgZGVyZWYoKSB7IGRlcmVmVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwoKTsgfQogCisgICAgLy8gRklYTUU6IE1lcmdlIGNoYW5uZWxJ
ZGVudGlmaWVyIGFuZCBpZGVudGlmaWVyLgorICAgIHZpcnR1YWwgdW5zaWduZWQgY2hhbm5lbElk
ZW50aWZpZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc0NyZWF0ZWRIYW5kc2hh
a2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQ29ubmVjdGVkKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgUmVzb3VyY2VSZXF1ZXN0IGNsaWVudEhhbmRzaGFrZVJlcXVlc3QoRnVu
Y3Rpb248U3RyaW5nKGNvbnN0IFVSTCYpPiYmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiBzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0ID0gMDsK
KwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgflRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKCkg
PSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCByZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA4YjY5MTRmYWIwMTQ4ZDdmZGExNjJmMmY4OGE5YTVl
Y2Q2MzY4ZDUyLi43ODA0ZGY0YTJiZTI3ZWZkNTM1NmMzMjljODNlMTAzNmU1MDZhZWRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwCkBAIC04MzMsNyArODMzLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpzZW5k
RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEKICAg
ICBtX2hhbmRsZS0+c2VuZERhdGEoZnJhbWVEYXRhLmRhdGEoKSwgZnJhbWVEYXRhLnNpemUoKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi1SZXNvdXJjZVJlcXVlc3QgV2ViU29j
a2V0Q2hhbm5lbDo6Y2xpZW50SGFuZHNoYWtlUmVxdWVzdChGdW5jdGlvbjxTdHJpbmcoY29uc3Qg
VVJMJik+JiYgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpCitSZXNvdXJjZVJlcXVlc3Qg
V2ViU29ja2V0Q2hhbm5lbDo6Y2xpZW50SGFuZHNoYWtlUmVxdWVzdChGdW5jdGlvbjxTdHJpbmco
Y29uc3QgVVJMJik+JiYgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1faGFuZHNoYWtlLT5jbGllbnRIYW5kc2hha2VSZXF1ZXN0KFdURk1vdmUoY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpKTsKIH0KQEAgLTg0Myw5ICs4NDMsNCBAQCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiBXZWJTb2NrZXRDaGFubmVsOjpzZXJ2ZXJIYW5kc2hha2VSZXNw
b25zZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faGFuZHNoYWtlLT5zZXJ2ZXJIYW5kc2hha2VSZXNw
b25zZSgpOwogfQogCi1XZWJTb2NrZXRIYW5kc2hha2U6Ok1vZGUgV2ViU29ja2V0Q2hhbm5lbDo6
aGFuZHNoYWtlTW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faGFuZHNoYWtlLT5tb2RlKCk7
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IGRjNWI5OWM0MjBiOTU2
MzI2NGRlM2MyM2EyMTQwNTk2NWU3MmM3NjUuLjE3Zjk1YWUxYTQ1MWNjZjNiYTRlYTVkMmQyODM3
Y2UxYzZkZjQ3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtNjQsOCArNjQsNiBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJT
b2NrZXRDaGFubmVsQ2xpZW50JiBjbGllbnQsIFNvY2tldFByb3ZpZGVyJiBwcm92aWRlcikgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRDaGFubmVsKGRvY3VtZW50LCBjbGllbnQsIHBy
b3ZpZGVyKSk7IH0KICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRDaGFubmVsKCk7CiAKLSAgICBib29s
IGlzV2ViU29ja2V0Q2hhbm5lbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQogICAg
IGJvb2wgc2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAogICAgIC8vIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsIGZ1bmN0aW9ucy4KQEAgLTExNywxMCArMTE1LDExIEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZEZhaWwoRXhjZXB0aW9uQ29kZSBlcnJvckNvZGUpIG92ZXJyaWRl
OwogCiAgICAgdW5zaWduZWQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
cjsgfQotICAgIGJvb2wgaGFzQ3JlYXRlZEhhbmRzaGFrZSgpIHsgcmV0dXJuICEhbV9oYW5kc2hh
a2U7IH0KLSAgICBSZXNvdXJjZVJlcXVlc3QgY2xpZW50SGFuZHNoYWtlUmVxdWVzdChGdW5jdGlv
bjxTdHJpbmcoY29uc3QgVVJMJik+JiYgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOwot
ICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKCkgY29u
c3Q7Ci0gICAgV2ViU29ja2V0SGFuZHNoYWtlOjpNb2RlIGhhbmRzaGFrZU1vZGUoKSBjb25zdDsK
KyAgICB1bnNpZ25lZCBjaGFubmVsSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
aWRlbnRpZmllcjsgfQorICAgIGJvb2wgaGFzQ3JlYXRlZEhhbmRzaGFrZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICEhbV9oYW5kc2hha2U7IH0KKyAgICBib29sIGlzQ29ubmVjdGVkKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9oYW5kc2hha2UtPm1vZGUoKSA9PSBXZWJTb2NrZXRIYW5kc2hha2U6
Ok1vZGU6OkNvbm5lY3RlZDsgfQorICAgIFJlc291cmNlUmVxdWVzdCBjbGllbnRIYW5kc2hha2VS
ZXF1ZXN0KEZ1bmN0aW9uPFN0cmluZyhjb25zdCBVUkwmKT4mJiBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZSkgY29uc3QgZmluYWw7CisgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgc2Vy
dmVySGFuZHNoYWtlUmVzcG9uc2UoKSBjb25zdCBmaW5hbDsKIAogICAgIHVzaW5nIFJlZkNvdW50
ZWQ8V2ViU29ja2V0Q2hhbm5lbD46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tl
dENoYW5uZWw+OjpkZXJlZjsKQEAgLTIzMiw3ICsyMzEsMyBAQCBwcml2YXRlOgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNv
cmU6OldlYlNvY2tldENoYW5uZWwpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNv
cmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsJiB0aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bCkgeyByZXR1cm4gdGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaXNXZWJTb2NrZXRDaGFubmVs
KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggMzczZTcwZTg5ZjZmODFkNTM1Yjk4NGFjMmJmMzAxZTc5
MDAwNWFmMy4uYWYwNjA3N2E0YmY0MGVmN2FlM2VkMTA2YjQ3NzFlODhhZTU0MzQ3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTE2MCwxMCArMTYwLDE5IEBA
IHByaXZhdGU6CiAKICAgICBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZURpZEluaXRpYWxpemVUYXNr
OwogCisgICAgLy8gRHVtbXkgaW1wbGVtZW50YXRpb24gb2YgaW5zcGVjdG9yIHJlbGF0ZWQgQVBJ
cy4KKyAgICB1bnNpZ25lZCBjaGFubmVsSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IDE7IH0KKyAgICBib29sIGhhc0NyZWF0ZWRIYW5kc2hha2UoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgaXNDb25uZWN0ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQorICAgIFJlc291cmNlUmVxdWVzdCBjbGllbnRIYW5kc2hha2VSZXF1ZXN0KEZ1bmN0
aW9uPFN0cmluZyhjb25zdCBVUkwmKT4mJikgY29uc3QgZmluYWwgeyByZXR1cm4gbV9oYW5kc2hh
a2VSZXF1ZXN0OyB9CisgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgc2VydmVySGFuZHNoYWtl
UmVzcG9uc2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2hhbmRzaGFrZVJlc3BvbnNlOyB9CisK
ICAgICBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IG1fd29ya2VyR2xvYmFsU2NvcGU7CiAgICAgUmVm
PFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gbV93b3JrZXJDbGllbnRX
cmFwcGVyOwogICAgIFJlZlB0cjxCcmlkZ2U+IG1fYnJpZGdlOwogICAgIFJlZjxTb2NrZXRQcm92
aWRlcj4gbV9zb2NrZXRQcm92aWRlcjsKKyAgICBSZXNvdXJjZVJlcXVlc3QgbV9oYW5kc2hha2VS
ZXF1ZXN0OworICAgIFJlc291cmNlUmVzcG9uc2UgbV9oYW5kc2hha2VSZXNwb25zZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA4ZDAzODI1OTNk
ZDlkNGQ0ODM3NmViODA3ZTgwYjY1NGZkMTFkMWQ0Li5lMDMzYWMxNzk5NWZiNWEyMWUzNDZjN2U1
YjcyZGI1ZjdhOGI4OTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC04MTIsMjAgKzgxMiwyNCBA
QCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZW5hYmxlKCkKICAgICB7CiAgICAgICAgIExv
Y2tIb2xkZXIgbG9jayhXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tldHNNdXRleCgpKTsKIAot
ICAgICAgICBmb3IgKFdlYlNvY2tldCogd2ViU29ja2V0IDogYWN0aXZlV2ViU29ja2V0cyhsb2Nr
KSkgewotICAgICAgICAgICAgQVNTRVJUKGlzPFdlYlNvY2tldENoYW5uZWw+KHdlYlNvY2tldC0+
Y2hhbm5lbCgpLmdldCgpKSk7Ci0gICAgICAgICAgICBXZWJTb2NrZXRDaGFubmVsKiBjaGFubmVs
ID0gZG93bmNhc3Q8V2ViU29ja2V0Q2hhbm5lbD4od2ViU29ja2V0LT5jaGFubmVsKCkuZ2V0KCkp
OworICAgICAgICBmb3IgKGF1dG8qIHdlYlNvY2tldCA6IGFjdGl2ZVdlYlNvY2tldHMobG9jaykp
IHsKKyAgICAgICAgICAgIGlmICghaXM8RG9jdW1lbnQ+KHdlYlNvY2tldC0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAg
dW5zaWduZWQgaWRlbnRpZmllciA9IGNoYW5uZWwtPmlkZW50aWZpZXIoKTsKKyAgICAgICAgICAg
IGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCp3ZWJTb2NrZXQtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgICAgICBhdXRvIGNoYW5uZWwgPSB3ZWJTb2NrZXQt
PmNoYW5uZWwoKTsKKworICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gY2hhbm5lbC0+Y2hh
bm5lbElkZW50aWZpZXIoKTsKICAgICAgICAgICAgIGRpZENyZWF0ZVdlYlNvY2tldChpZGVudGlm
aWVyLCB3ZWJTb2NrZXQtPnVybCgpKTsKLSAgICAgICAgICAgIGF1dG8gY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUgPSBbZG9jdW1lbnQgPSBtYWtlV2Vha1B0cihjaGFubmVsLT5kb2N1bWVu
dCgpKV0gKGNvbnN0IFVSTCYgdXJsKSAtPiBTdHJpbmcgeworCisgICAgICAgICAgICBhdXRvIGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlID0gW2RvY3VtZW50ID0gbWFrZVdlYWtQdHIoZG9j
dW1lbnQpXShjb25zdCBVUkwmIHVybCkgLT4gU3RyaW5nIHsKICAgICAgICAgICAgICAgICBpZiAo
IWRvY3VtZW50IHx8ICFkb2N1bWVudC0+cGFnZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4geyB9OwogICAgICAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC0+cGFnZSgpLT5jb29raWVK
YXIoKS5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSgqZG9jdW1lbnQsIHVybCk7CiAgICAg
ICAgICAgICB9OwogICAgICAgICAgICAgd2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0
KGlkZW50aWZpZXIsIGNoYW5uZWwtPmNsaWVudEhhbmRzaGFrZVJlcXVlc3QoV1RGTW92ZShjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSkpKTsKIAotICAgICAgICAgICAgaWYgKGNoYW5uZWwt
PmhhbmRzaGFrZU1vZGUoKSA9PSBXZWJTb2NrZXRIYW5kc2hha2U6OkNvbm5lY3RlZCkKKyAgICAg
ICAgICAgIGlmIChjaGFubmVsLT5pc0Nvbm5lY3RlZCgpKQogICAgICAgICAgICAgICAgIGRpZFJl
Y2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZShpZGVudGlmaWVyLCBjaGFubmVsLT5zZXJ2
ZXJIYW5kc2hha2VSZXNwb25zZSgpKTsKIAogICAgICAgICAgICAgaWYgKHdlYlNvY2tldC0+cmVh
ZHlTdGF0ZSgpID09IFdlYlNvY2tldDo6Q0xPU0VEKQpAQCAtOTkyLDEwICs5OTYsOCBAQCBXZWJT
b2NrZXQqIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2ViU29ja2V0Rm9yUmVxdWVzdElkKGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkKQogewogICAgIExvY2tIb2xkZXIgbG9jayhXZWJTb2NrZXQ6OmFs
bEFjdGl2ZVdlYlNvY2tldHNNdXRleCgpKTsKIAotICAgIGZvciAoV2ViU29ja2V0KiB3ZWJTb2Nr
ZXQgOiBhY3RpdmVXZWJTb2NrZXRzKGxvY2spKSB7Ci0gICAgICAgIEFTU0VSVChpczxXZWJTb2Nr
ZXRDaGFubmVsPih3ZWJTb2NrZXQtPmNoYW5uZWwoKS5nZXQoKSkpOwotICAgICAgICBXZWJTb2Nr
ZXRDaGFubmVsKiBjaGFubmVsID0gZG93bmNhc3Q8V2ViU29ja2V0Q2hhbm5lbD4od2ViU29ja2V0
LT5jaGFubmVsKCkuZ2V0KCkpOwotICAgICAgICBpZiAoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1
ZXN0SWQoY2hhbm5lbC0+aWRlbnRpZmllcigpKSA9PSByZXF1ZXN0SWQpCisgICAgZm9yIChhdXRv
KiB3ZWJTb2NrZXQgOiBhY3RpdmVXZWJTb2NrZXRzKGxvY2spKSB7CisgICAgICAgIGlmIChJZGVu
dGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZCh3ZWJTb2NrZXQtPmNoYW5uZWwoKS0+Y2hhbm5lbElk
ZW50aWZpZXIoKSkgPT0gcmVxdWVzdElkKQogICAgICAgICAgICAgcmV0dXJuIHdlYlNvY2tldDsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
cGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcAppbmRleCAzNDhhNDQ4MGQ1YmMyNDM1OWQzOTI5OGE0
NGU4YTk2ZjJlMTZlZjNkLi4yYzY1YjgxMDQ5NGJiZWI3M2Q1MzRlNjYyYWMzMTE5M2Y0MGMzYzY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5l
dHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdl
L1BhZ2VOZXR3b3JrQWdlbnQuY3BwCkBAIC02OSwxMSArNjksOCBAQCBWZWN0b3I8V2ViU29ja2V0
Kj4gUGFnZU5ldHdvcmtBZ2VudDo6YWN0aXZlV2ViU29ja2V0cyhjb25zdCBMb2NrSG9sZGVyJiBs
b2NrKQogewogICAgIFZlY3RvcjxXZWJTb2NrZXQqPiB3ZWJTb2NrZXRzOwogCi0gICAgZm9yIChX
ZWJTb2NrZXQqIHdlYlNvY2tldCA6IFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0cyhsb2Nr
KSkgewotICAgICAgICBpZiAoIWlzPFdlYlNvY2tldENoYW5uZWw+KHdlYlNvY2tldC0+Y2hhbm5l
bCgpLmdldCgpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGF1dG8qIGNoYW5u
ZWwgPSBkb3duY2FzdDxXZWJTb2NrZXRDaGFubmVsPih3ZWJTb2NrZXQtPmNoYW5uZWwoKS5nZXQo
KSk7CisgICAgZm9yIChhdXRvKiB3ZWJTb2NrZXQgOiBXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNv
Y2tldHMobG9jaykpIHsKKyAgICAgICAgYXV0byBjaGFubmVsID0gd2ViU29ja2V0LT5jaGFubmVs
KCk7CiAgICAgICAgIGlmICghY2hhbm5lbCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwu
Y3BwCmluZGV4IDZlMzc5ZDk1ZTI4NDNhMGRjNzg4NDI4MTE3MDQ4NTAwOTM3Zjc3MjguLmFmOTll
OGI0MTczOTE1ZTE3ODMwZDMxMTYzMzRjYTFhY2RmMTMxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0yMDQs
NiArMjA0LDkgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjbG9zZShpbnQgY29kZSwgY29uc3Qg
U3RyaW5nJiByZWFzb24pCiAKICAgICBBU1NFUlQoY29kZSA+PSAwIHx8IGNvZGUgPT0gV2ViQ29y
ZTo6V2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVOb3RTcGVjaWZpZWQpOwogCisgICAg
V2ViU29ja2V0RnJhbWUgY2xvc2luZ0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGVDbG9zZSwg
dHJ1ZSwgZmFsc2UsIHRydWUpOworICAgIG1faW5zcGVjdG9yLmRpZFNlbmRXZWJTb2NrZXRGcmFt
ZShtX2RvY3VtZW50LmdldCgpLCBjbG9zaW5nRnJhbWUpOworCiAgICAgTWVzc2FnZVNlbmRlcjo6
c2VuZChNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OkNsb3NlIHsgY29kZSwgcmVhc29u
IH0pOwogfQogCkBAIC0zMjEsNiArMzI0LDggQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRD
bG9zZSh1bnNpZ25lZCBzaG9ydCBjb2RlLCBTdHJpbmcmJiByZWFzb24pCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKKyAgICBXZWJTb2NrZXRGcmFtZSBjbG9zaW5nRnJhbWUoV2ViU29ja2V0RnJh
bWU6Ok9wQ29kZUNsb3NlLCB0cnVlLCBmYWxzZSwgZmFsc2UpOworICAgIG1faW5zcGVjdG9yLmRp
ZFJlY2VpdmVXZWJTb2NrZXRGcmFtZShtX2RvY3VtZW50LmdldCgpLCBjbG9zaW5nRnJhbWUpOwog
ICAgIG1faW5zcGVjdG9yLmRpZENsb3NlV2ViU29ja2V0KG1fZG9jdW1lbnQuZ2V0KCkpOwogCiAg
ICAgYm9vbCByZWNlaXZlZENsb3NpbmdIYW5kc2hha2UgPSBjb2RlICE9IFdlYkNvcmU6OldlYlNv
Y2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2RlQWJub3JtYWxDbG9zdXJlOwpAQCAtMzg5LDcgKzM5
NCw5IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkU2VuZEhhbmRzaGFrZVJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CisKICAgICBtX2luc3BlY3Rvci53aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Qo
bV9kb2N1bWVudC5nZXQoKSwgcmVxdWVzdCk7CisgICAgbV9oYW5kc2hha2VSZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KTsKIH0KIAogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRSZWNlaXZlSGFu
ZHNoYWtlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQpAQCAtNDAwLDcgKzQw
Nyw5IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZUhhbmRzaGFrZVJlc3BvbnNl
KFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisKICAgICBtX2luc3BlY3Rvci5kaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2UobV9kb2N1bWVudC5nZXQoKSwgcmVzcG9uc2UpOworICAgIG1faGFuZHNoYWtlUmVz
cG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFu
bmVsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVs
LmgKaW5kZXggOWM0NTBhYzcxZWFmNjExZmYxOTZlOGE4MWRlODEzZGI5ZDI5ZGY3ZS4uOTMxZjA5
MDE2ZmM0NDE5NDBiMGExZGY3ZDU4OWY1ZDY3MjJkYzYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaApAQCAtMjksNiArMjks
OCBAQAogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU2VuZFF1ZXVlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJTb2NrZXRDaGFubmVsSW5zcGVjdG9yLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9XZWJTb2NrZXRGcmFtZS5oPgpAQCAtOTgsNiArMTAwLDEyIEBAIHByaXZh
dGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5kTWVzc2FnZShUJiYsIHNpemVf
dCBieXRlTGVuZ3RoKTsKICAgICB2b2lkIGVucXVldWVUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7
CiAKKyAgICB1bnNpZ25lZCBjaGFubmVsSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1faWRlbnRpZmllci50b1VJbnQ2NCgpOyB9CisgICAgYm9vbCBoYXNDcmVhdGVkSGFuZHNoYWtl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1fdXJsLmlzTnVsbCgpOyB9CisgICAgYm9vbCBpc0Nv
bm5lY3RlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2hhbmRzaGFrZVJlc3BvbnNlLmlzTnVs
bCgpOyB9CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IGNsaWVudEhhbmRzaGFrZVJlcXVl
c3QoRnVuY3Rpb248U3RyaW5nKGNvbnN0IFVSTCYpPiYmKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2hhbmRzaGFrZVJlcXVlc3Q7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiBzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faGFuZHNo
YWtlUmVzcG9uc2U7IH0KKwogICAgIFdlYWtQdHI8V2ViQ29yZTo6RG9jdW1lbnQ+IG1fZG9jdW1l
bnQ7CiAgICAgV2ViU29ja2V0SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsQ2xpZW50PiBtX2NsaWVudDsKQEAgLTExMCw2ICsxMTgs
OCBAQCBwcml2YXRlOgogICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQoKT4+IG1fcGVuZGluZ1Rhc2tz
OwogICAgIFdlYkNvcmU6Ok5ldHdvcmtTZW5kUXVldWUgbV9tZXNzYWdlUXVldWU7CiAgICAgV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbEluc3BlY3RvciBtX2luc3BlY3RvcjsKKyAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgbV9oYW5kc2hha2VSZXF1ZXN0OworICAgIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgbV9oYW5kc2hha2VSZXNwb25zZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407673</attachid>
            <date>2020-09-01 05:23:23 -0700</date>
            <delta_ts>2020-09-01 05:53:48 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-215928-20200901142322.patch</filename>
            <type>text/plain</type>
            <size>15916</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDk1ZTAzNGI2NTY1N2E4
ODcwNzhhMTk3OWM4MGYzNDAyZDg4NGFiNS4uZDgzZWU4MmI0NDc0Yzk0ZDgzNTQxYjUyZGUzYThj
N2JiMzhkY2U3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA5LTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUgaW5zcGVjdGlv
biBvZiBXZWJTb2NrZXQgd2hlbiBvcGVuaW5nIFdlYiBJbnNwZWN0b3IgaW4gdGhlIG1pZGRsZSBv
ZiB0aGUgY29ubmVjdGlvbiBsaWtlIGRvbmUgZm9yIHRoZSBsZWdhY3kgV2ViU29ja2V0IGltcGxl
bWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTU5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAg
UmV0cm9maXQgQVBJIHVzZWQgYnkgSW5zcGVjdG9yIGZyb20gV2ViQ29yZTo6V2ViU29ja2V0Q2hh
bm5lbCB0byBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC4KKyAgICAgICAgTWFrZSBJbnNwZWN0
b3IgY29kZSB3b3JrIHdpdGggVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuCisgICAgICAgIEFk
ZCBhIGR1bW15IGltcGxlbWVudGF0aW9uIGZvciBXb3JrZXIgV2ViU29ja2V0IChub3Qgc3VwcG9y
dGVkIGN1cnJlbnRseSBieSBXZWIgSW5zcGVjdG9yKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGh0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yIHdpdGggTlNVUkxTZXNzaW9u
IFdlYlNvY2tldCBjb2RlIHBhdGggZW5hYmxlZC4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29j
a2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dENoYW5uZWw6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTmV0d29ya0FnZW50Ojp3ZWJTb2NrZXRGb3JSZXF1ZXN0SWQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcDoKKwogMjAyMC0wOC0zMSAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIGEg
QysrIGNoYWluIG9mIG9wZXJhdGlvbnMgaW4gUlRDUGVlckNvbm5lY3Rpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
ZDVhMGRkMTU0YzgxNTk1MGM2MTJjMGMxZTFkNzJkNjkxOGY3MDJlOS4uYzgzMGMwNDZkYzU0N2Y0
OWI1YzhkOGI3MGExZDIwNGFhYTQzZTA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAy
MC0wOS0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgRW5h
YmxlIGluc3BlY3Rpb24gb2YgV2ViU29ja2V0IHdoZW4gb3BlbmluZyBXZWIgSW5zcGVjdG9yIGlu
IHRoZSBtaWRkbGUgb2YgdGhlIGNvbm5lY3Rpb24gbGlrZSBkb25lIGZvciB0aGUgbGVnYWN5IFdl
YlNvY2tldCBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE1OTI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3Nv
LgorCisgICAgICAgIEltcGxlbWVudCBpbnNwZWN0b3IgcmVsYXRlZCBBUEkgYW5kIGFkZCBhZGRp
dGlvbmFsIG1lc3NhZ2VzIGZvciBXZWJTb2NrZXQgZnJhbWVzLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
b2NrZXRDaGFubmVsOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6
OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkU2VuZEhh
bmRzaGFrZVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRDaGFubmVsOjpkaWRS
ZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRDaGFu
bmVsOjpjbGllbnRIYW5kc2hha2VSZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U29ja2V0Q2hhbm5lbDo6c2VydmVySGFuZHNoYWtlUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb2NrZXRDaGFubmVsOjpoYW5kc2hha2VNb2RlIGNvbnN0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oOgorCiAyMDIwLTA4LTMwICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1
bnVzZWQgZWRpdGFibGUgaW1hZ2UgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRl
eCBmYzM3MDM1YmI0NDQ5NmFlYWM2NDgwZmYzMWI4ZWNjZDA1OGIzZWUxLi5jNDI1M2Q2YjdlMWI0
YWY3MzA1N2M2MzVkOWIxZjc5ZDI5ZDU4NWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aApAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iOwogY2xh
c3MgRG9jdW1lbnQ7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNvY2tldFByb3ZpZGVy
OwogY2xhc3MgV2ViU29ja2V0Q2hhbm5lbENsaWVudDsKQEAgLTU0LDggKzU1LDYgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCYsIFNvY2tldFByb3Zp
ZGVyJik7CiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKSA9IGRlZmF1bHQ7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNXZWJTb2NrZXRDaGFubmVsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLQogICAgIGVudW0gU2VuZFJlc3VsdCB7CiAgICAgICAgIFNlbmRTdWNjZXNzLAogICAgICAg
ICBTZW5kRmFpbApAQCAtODAsNiArNzksMTMgQEAgcHVibGljOgogICAgIHZvaWQgcmVmKCkgeyBy
ZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpOyB9CiAgICAgdm9pZCBkZXJlZigpIHsgZGVy
ZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpOyB9CiAKKyAgICAvLyBGSVhNRTogTWVyZ2Ug
Y2hhbm5lbElkZW50aWZpZXIgYW5kIGlkZW50aWZpZXIuCisgICAgdmlydHVhbCB1bnNpZ25lZCBj
aGFubmVsSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ3JlYXRl
ZEhhbmRzaGFrZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb25uZWN0ZWQoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZXNvdXJjZVJlcXVlc3QgY2xpZW50SGFuZHNoYWtlUmVx
dWVzdChGdW5jdGlvbjxTdHJpbmcoY29uc3QgVVJMJik+JiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKCkgY29u
c3QgPSAwOworCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHJlZlRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDhiNjkxNGZhYjAxNDhkN2ZkYTE2MmYy
Zjg4YTlhNWVjZDYzNjhkNTIuLjc4MDRkZjRhMmJlMjdlZmQ1MzU2YzMyOWM4M2UxMDM2ZTUwNmFl
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKQEAgLTgzMyw3ICs4MzMsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OnNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciog
ZGF0YQogICAgIG1faGFuZGxlLT5zZW5kRGF0YShmcmFtZURhdGEuZGF0YSgpLCBmcmFtZURhdGEu
c2l6ZSgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLVJlc291cmNlUmVxdWVz
dCBXZWJTb2NrZXRDaGFubmVsOjpjbGllbnRIYW5kc2hha2VSZXF1ZXN0KEZ1bmN0aW9uPFN0cmlu
Zyhjb25zdCBVUkwmKT4mJiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSkKK1Jlc291cmNl
UmVxdWVzdCBXZWJTb2NrZXRDaGFubmVsOjpjbGllbnRIYW5kc2hha2VSZXF1ZXN0KEZ1bmN0aW9u
PFN0cmluZyhjb25zdCBVUkwmKT4mJiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9oYW5kc2hha2UtPmNsaWVudEhhbmRzaGFrZVJlcXVlc3QoV1RG
TW92ZShjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSkpOwogfQpAQCAtODQzLDkgKzg0Myw0
IEBAIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIFdlYlNvY2tldENoYW5uZWw6OnNlcnZlckhhbmRz
aGFrZVJlc3BvbnNlKCkgY29uc3QKICAgICByZXR1cm4gbV9oYW5kc2hha2UtPnNlcnZlckhhbmRz
aGFrZVJlc3BvbnNlKCk7CiB9CiAKLVdlYlNvY2tldEhhbmRzaGFrZTo6TW9kZSBXZWJTb2NrZXRD
aGFubmVsOjpoYW5kc2hha2VNb2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9oYW5kc2hha2Ut
Pm1vZGUoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggZGM1Yjk5
YzQyMGI5NTYzMjY0ZGUzYzIzYTIxNDA1OTY1ZTcyYzc2NS4uMTdmOTVhZTFhNDUxY2NmM2JhNGVh
NWQyZDI4MzdjZTFjNmRmNDc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC02NCw4ICs2NCw2IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPFdlYlNvY2tldENoYW5uZWw+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQmIGNsaWVudCwgU29ja2V0UHJvdmlkZXImIHByb3Zp
ZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNvY2tldENoYW5uZWwoZG9jdW1lbnQsIGNs
aWVudCwgcHJvdmlkZXIpKTsgfQogICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWwoKTsKIAot
ICAgIGJvb2wgaXNXZWJTb2NrZXRDaGFubmVsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQotCiAgICAgYm9vbCBzZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogCiAgICAg
Ly8gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwgZnVuY3Rpb25zLgpAQCAtMTE3LDEwICsxMTUs
MTEgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmFpbChFeGNlcHRpb25Db2RlIGVycm9yQ29kZSkg
b3ZlcnJpZGU7CiAKICAgICB1bnNpZ25lZCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9Ci0gICAgYm9vbCBoYXNDcmVhdGVkSGFuZHNoYWtlKCkgeyByZXR1cm4gISFt
X2hhbmRzaGFrZTsgfQotICAgIFJlc291cmNlUmVxdWVzdCBjbGllbnRIYW5kc2hha2VSZXF1ZXN0
KEZ1bmN0aW9uPFN0cmluZyhjb25zdCBVUkwmKT4mJiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZSk7Ci0gICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgc2VydmVySGFuZHNoYWtlUmVzcG9u
c2UoKSBjb25zdDsKLSAgICBXZWJTb2NrZXRIYW5kc2hha2U6Ok1vZGUgaGFuZHNoYWtlTW9kZSgp
IGNvbnN0OworICAgIHVuc2lnbmVkIGNoYW5uZWxJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgYm9vbCBoYXNDcmVhdGVkSGFuZHNoYWtlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gISFtX2hhbmRzaGFrZTsgfQorICAgIGJvb2wgaXNDb25uZWN0ZWQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2hhbmRzaGFrZS0+bW9kZSgpID09IFdlYlNvY2tldEhh
bmRzaGFrZTo6TW9kZTo6Q29ubmVjdGVkOyB9CisgICAgUmVzb3VyY2VSZXF1ZXN0IGNsaWVudEhh
bmRzaGFrZVJlcXVlc3QoRnVuY3Rpb248U3RyaW5nKGNvbnN0IFVSTCYpPiYmIGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiBzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgdXNpbmcg
UmVmQ291bnRlZDxXZWJTb2NrZXRDaGFubmVsPjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8
V2ViU29ja2V0Q2hhbm5lbD46OmRlcmVmOwpAQCAtMjMyLDcgKzIzMSwzIEBAIHByaXZhdGU6CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbCkKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29u
c3QgV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwmIHRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsKSB7IHJldHVybiB0aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5pc1dlYlNvY2tl
dENoYW5uZWwoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCAzNzNlNzBlODlmNmY4MWQ1MzViOTg0YWMy
YmYzMDFlNzkwMDA1YWYzLi5hZjA2MDc3YTRiZjQwZWY3YWUzZWQxMDZiNDc3MWU4OGFlNTQzNDdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtMTYwLDEwICsx
NjAsMTkgQEAgcHJpdmF0ZToKIAogICAgIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlRGlkSW5pdGlh
bGl6ZVRhc2s7CiAKKyAgICAvLyBEdW1teSBpbXBsZW1lbnRhdGlvbiBvZiBpbnNwZWN0b3IgcmVs
YXRlZCBBUElzLgorICAgIHVuc2lnbmVkIGNoYW5uZWxJZGVudGlmaWVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gMTsgfQorICAgIGJvb2wgaGFzQ3JlYXRlZEhhbmRzaGFrZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0Nvbm5lY3RlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgUmVzb3VyY2VSZXF1ZXN0IGNsaWVudEhhbmRzaGFrZVJlcXVl
c3QoRnVuY3Rpb248U3RyaW5nKGNvbnN0IFVSTCYpPiYmKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2hhbmRzaGFrZVJlcXVlc3Q7IH0KKyAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBzZXJ2ZXJI
YW5kc2hha2VSZXNwb25zZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faGFuZHNoYWtlUmVzcG9u
c2U7IH0KKwogICAgIFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gbV93b3JrZXJHbG9iYWxTY29wZTsK
ICAgICBSZWY8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiBtX3dvcmtl
ckNsaWVudFdyYXBwZXI7CiAgICAgUmVmUHRyPEJyaWRnZT4gbV9icmlkZ2U7CiAgICAgUmVmPFNv
Y2tldFByb3ZpZGVyPiBtX3NvY2tldFByb3ZpZGVyOworICAgIFJlc291cmNlUmVxdWVzdCBtX2hh
bmRzaGFrZVJlcXVlc3Q7CisgICAgUmVzb3VyY2VSZXNwb25zZSBtX2hhbmRzaGFrZVJlc3BvbnNl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDhk
MDM4MjU5M2RkOWQ0ZDQ4Mzc2ZWI4MDdlODBiNjU0ZmQxMWQxZDQuLmUwMzNhYzE3OTk1ZmI1YTIx
ZTM0NmM3ZTViNzJkYjVmN2E4Yjg5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTgxMiwyMCAr
ODEyLDI0IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjplbmFibGUoKQogICAgIHsKICAg
ICAgICAgTG9ja0hvbGRlciBsb2NrKFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c011dGV4
KCkpOwogCi0gICAgICAgIGZvciAoV2ViU29ja2V0KiB3ZWJTb2NrZXQgOiBhY3RpdmVXZWJTb2Nr
ZXRzKGxvY2spKSB7Ci0gICAgICAgICAgICBBU1NFUlQoaXM8V2ViU29ja2V0Q2hhbm5lbD4od2Vi
U29ja2V0LT5jaGFubmVsKCkuZ2V0KCkpKTsKLSAgICAgICAgICAgIFdlYlNvY2tldENoYW5uZWwq
IGNoYW5uZWwgPSBkb3duY2FzdDxXZWJTb2NrZXRDaGFubmVsPih3ZWJTb2NrZXQtPmNoYW5uZWwo
KS5nZXQoKSk7CisgICAgICAgIGZvciAoYXV0byogd2ViU29ja2V0IDogYWN0aXZlV2ViU29ja2V0
cyhsb2NrKSkgeworICAgICAgICAgICAgaWYgKCFpczxEb2N1bWVudD4od2ViU29ja2V0LT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gY2hhbm5lbC0+aWRlbnRpZmllcigpOworICAg
ICAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKndlYlNvY2tldC0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgICAgIGF1dG8gY2hhbm5lbCA9IHdl
YlNvY2tldC0+Y2hhbm5lbCgpOworCisgICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBjaGFu
bmVsLT5jaGFubmVsSWRlbnRpZmllcigpOwogICAgICAgICAgICAgZGlkQ3JlYXRlV2ViU29ja2V0
KGlkZW50aWZpZXIsIHdlYlNvY2tldC0+dXJsKCkpOwotICAgICAgICAgICAgYXV0byBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSA9IFtkb2N1bWVudCA9IG1ha2VXZWFrUHRyKGNoYW5uZWwt
PmRvY3VtZW50KCkpXSAoY29uc3QgVVJMJiB1cmwpIC0+IFN0cmluZyB7CisKKyAgICAgICAgICAg
IGF1dG8gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUgPSBbZG9jdW1lbnQgPSBtYWtlV2Vh
a1B0cihkb2N1bWVudCldKGNvbnN0IFVSTCYgdXJsKSAtPiBTdHJpbmcgewogICAgICAgICAgICAg
ICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5wYWdlKCkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5wYWdlKCkt
PmNvb2tpZUphcigpLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKCpkb2N1bWVudCwgdXJs
KTsKICAgICAgICAgICAgIH07CiAgICAgICAgICAgICB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFr
ZVJlcXVlc3QoaWRlbnRpZmllciwgY2hhbm5lbC0+Y2xpZW50SGFuZHNoYWtlUmVxdWVzdChXVEZN
b3ZlKGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKSkpOwogCi0gICAgICAgICAgICBpZiAo
Y2hhbm5lbC0+aGFuZHNoYWtlTW9kZSgpID09IFdlYlNvY2tldEhhbmRzaGFrZTo6Q29ubmVjdGVk
KQorICAgICAgICAgICAgaWYgKGNoYW5uZWwtPmlzQ29ubmVjdGVkKCkpCiAgICAgICAgICAgICAg
ICAgZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKGlkZW50aWZpZXIsIGNoYW5u
ZWwtPnNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKCkpOwogCiAgICAgICAgICAgICBpZiAod2ViU29j
a2V0LT5yZWFkeVN0YXRlKCkgPT0gV2ViU29ja2V0OjpDTE9TRUQpCkBAIC05OTIsMTAgKzk5Niw4
IEBAIFdlYlNvY2tldCogSW5zcGVjdG9yTmV0d29ya0FnZW50Ojp3ZWJTb2NrZXRGb3JSZXF1ZXN0
SWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrKFdlYlNv
Y2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCkpOwogCi0gICAgZm9yIChXZWJTb2NrZXQq
IHdlYlNvY2tldCA6IGFjdGl2ZVdlYlNvY2tldHMobG9jaykpIHsKLSAgICAgICAgQVNTRVJUKGlz
PFdlYlNvY2tldENoYW5uZWw+KHdlYlNvY2tldC0+Y2hhbm5lbCgpLmdldCgpKSk7Ci0gICAgICAg
IFdlYlNvY2tldENoYW5uZWwqIGNoYW5uZWwgPSBkb3duY2FzdDxXZWJTb2NrZXRDaGFubmVsPih3
ZWJTb2NrZXQtPmNoYW5uZWwoKS5nZXQoKSk7Ci0gICAgICAgIGlmIChJZGVudGlmaWVyc0ZhY3Rv
cnk6OnJlcXVlc3RJZChjaGFubmVsLT5pZGVudGlmaWVyKCkpID09IHJlcXVlc3RJZCkKKyAgICBm
b3IgKGF1dG8qIHdlYlNvY2tldCA6IGFjdGl2ZVdlYlNvY2tldHMobG9jaykpIHsKKyAgICAgICAg
aWYgKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKHdlYlNvY2tldC0+Y2hhbm5lbCgpLT5j
aGFubmVsSWRlbnRpZmllcigpKSA9PSByZXF1ZXN0SWQpCiAgICAgICAgICAgICByZXR1cm4gd2Vi
U29ja2V0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDM0OGE0NDgwZDViYzI0MzU5
ZDM5Mjk4YTQ0ZThhOTZmMmUxNmVmM2QuLjJjNjViODEwNDk0YmJlYjczZDUzNGU2NjJhYzMxMTkz
ZjQwYzNjNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5jcHAKQEAgLTY5LDExICs2OSw4IEBAIFZlY3RvcjxX
ZWJTb2NrZXQqPiBQYWdlTmV0d29ya0FnZW50OjphY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tI
b2xkZXImIGxvY2spCiB7CiAgICAgVmVjdG9yPFdlYlNvY2tldCo+IHdlYlNvY2tldHM7CiAKLSAg
ICBmb3IgKFdlYlNvY2tldCogd2ViU29ja2V0IDogV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2Nr
ZXRzKGxvY2spKSB7Ci0gICAgICAgIGlmICghaXM8V2ViU29ja2V0Q2hhbm5lbD4od2ViU29ja2V0
LT5jaGFubmVsKCkuZ2V0KCkpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgYXV0
byogY2hhbm5lbCA9IGRvd25jYXN0PFdlYlNvY2tldENoYW5uZWw+KHdlYlNvY2tldC0+Y2hhbm5l
bCgpLmdldCgpKTsKKyAgICBmb3IgKGF1dG8qIHdlYlNvY2tldCA6IFdlYlNvY2tldDo6YWxsQWN0
aXZlV2ViU29ja2V0cyhsb2NrKSkgeworICAgICAgICBhdXRvIGNoYW5uZWwgPSB3ZWJTb2NrZXQt
PmNoYW5uZWwoKTsKICAgICAgICAgaWYgKCFjaGFubmVsKQogICAgICAgICAgICAgY29udGludWU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0
Q2hhbm5lbC5jcHAKaW5kZXggNmUzNzlkOTVlMjg0M2EwZGM3ODg0MjgxMTcwNDg1MDA5MzdmNzcy
OC4uYWY5OWU4YjQxNzM5MTVlMTc4MzBkMzExNjMzNGNhMWFjZGYxMzFhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAK
QEAgLTIwNCw2ICsyMDQsOSBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNsb3NlKGludCBjb2Rl
LCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIAogICAgIEFTU0VSVChjb2RlID49IDAgfHwgY29kZSA9
PSBXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU5vdFNwZWNpZmllZCk7
CiAKKyAgICBXZWJTb2NrZXRGcmFtZSBjbG9zaW5nRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29k
ZUNsb3NlLCB0cnVlLCBmYWxzZSwgdHJ1ZSk7CisgICAgbV9pbnNwZWN0b3IuZGlkU2VuZFdlYlNv
Y2tldEZyYW1lKG1fZG9jdW1lbnQuZ2V0KCksIGNsb3NpbmdGcmFtZSk7CisKICAgICBNZXNzYWdl
U2VuZGVyOjpzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Q2xvc2UgeyBjb2Rl
LCByZWFzb24gfSk7CiB9CiAKQEAgLTMyMSw2ICszMjQsOCBAQCB2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OmRpZENsb3NlKHVuc2lnbmVkIHNob3J0IGNvZGUsIFN0cmluZyYmIHJlYXNvbikKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAorICAgIFdlYlNvY2tldEZyYW1lIGNsb3NpbmdGcmFtZShXZWJT
b2NrZXRGcmFtZTo6T3BDb2RlQ2xvc2UsIHRydWUsIGZhbHNlLCBmYWxzZSk7CisgICAgbV9pbnNw
ZWN0b3IuZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKG1fZG9jdW1lbnQuZ2V0KCksIGNsb3NpbmdG
cmFtZSk7CiAgICAgbV9pbnNwZWN0b3IuZGlkQ2xvc2VXZWJTb2NrZXQobV9kb2N1bWVudC5nZXQo
KSk7CiAKICAgICBib29sIHJlY2VpdmVkQ2xvc2luZ0hhbmRzaGFrZSA9IGNvZGUgIT0gV2ViQ29y
ZTo6V2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVBYm5vcm1hbENsb3N1cmU7CkBAIC0z
ODksNyArMzk0LDkgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRTZW5kSGFuZHNoYWtlUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogICAgICAgICB9KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KKwogICAgIG1faW5zcGVjdG9yLndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdChtX2RvY3VtZW50LmdldCgpLCByZXF1ZXN0KTsKKyAgICBtX2hhbmRzaGFrZVJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpOwogfQogCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFJl
Y2VpdmVIYW5kc2hha2VSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCkBAIC00
MDAsNyArNDA3LDkgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRSZWNlaXZlSGFuZHNoYWtl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQogICAgICAgICB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKwogICAgIG1faW5zcGVjdG9yLmRpZFJlY2VpdmVXZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZShtX2RvY3VtZW50LmdldCgpLCByZXNwb25zZSk7CisgICAgbV9oYW5k
c2hha2VSZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNv
Y2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dENoYW5uZWwuaAppbmRleCA5YzQ1MGFjNzFlYWY2MTFmZjE5NmU4YTgxZGU4MTNkYjlkMjlkZjdl
Li45MzFmMDkwMTZmYzQ0MTk0MGIwYTFkZjdkNTg5ZjVkNjcyMmRjNjFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC0y
OSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIldlYlNv
Y2tldElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTZW5kUXVldWUuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYlNvY2tldENoYW5uZWxJbnNwZWN0b3Iu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYlNvY2tldEZyYW1lLmg+CkBAIC05OCw2ICsxMDAsMTIg
QEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRNZXNzYWdlKFQm
Jiwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogICAgIHZvaWQgZW5xdWV1ZVRhc2soRnVuY3Rpb248dm9p
ZCgpPiYmKTsKIAorICAgIHVuc2lnbmVkIGNoYW5uZWxJZGVudGlmaWVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9pZGVudGlmaWVyLnRvVUludDY0KCk7IH0KKyAgICBib29sIGhhc0NyZWF0ZWRI
YW5kc2hha2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV91cmwuaXNOdWxsKCk7IH0KKyAgICBi
b29sIGlzQ29ubmVjdGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1faGFuZHNoYWtlUmVzcG9u
c2UuaXNOdWxsKCk7IH0KKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY2xpZW50SGFuZHNo
YWtlUmVxdWVzdChGdW5jdGlvbjxTdHJpbmcoY29uc3QgVVJMJik+JiYpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1faGFuZHNoYWtlUmVxdWVzdDsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9oYW5kc2hha2VSZXNwb25zZTsgfQorCiAgICAgV2Vha1B0cjxXZWJDb3JlOjpEb2N1bWVudD4g
bV9kb2N1bWVudDsKICAgICBXZWJTb2NrZXRJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBX
ZWFrUHRyPFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWxDbGllbnQ+IG1fY2xpZW50OwpAQCAtMTEw
LDYgKzExOCw4IEBAIHByaXZhdGU6CiAgICAgRGVxdWU8RnVuY3Rpb248dm9pZCgpPj4gbV9wZW5k
aW5nVGFza3M7CiAgICAgV2ViQ29yZTo6TmV0d29ya1NlbmRRdWV1ZSBtX21lc3NhZ2VRdWV1ZTsK
ICAgICBXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsSW5zcGVjdG9yIG1faW5zcGVjdG9yOworICAg
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2hhbmRzaGFrZVJlcXVlc3Q7CisgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSBtX2hhbmRzaGFrZVJlc3BvbnNlOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>