<?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>177673</bug_id>
          
          <creation_ts>2017-09-29 11:44:25 -0700</creation_ts>
          <short_desc>http/tests/preconnect/link-rel-preconnect-https.html is flaky</short_desc>
          <delta_ts>2017-09-29 17:36:12 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>177474</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
    
    <cc>jlewis3</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1354624</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-29 11:44:25 -0700</bug_when>
    <thetext>http/tests/preconnect/link-rel-preconnect-https.html is flaky:

diff:
--- /Volumes/Data/slave/ios-simulator-11-debug-tests-wk2/build/layout-test-results/http/tests/preconnect/link-rel-preconnect-https-expected.txt
+++ /Volumes/Data/slave/ios-simulator-11-debug-tests-wk2/build/layout-test-results/http/tests/preconnect/link-rel-preconnect-https-actual.txt
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: Failed to preconnect to https://localhost:8443/. Error: The certificate for this server is invalid. You might be connecting to a server that is pretending to be “localhost” which could put your confidential information at risk.
+CONSOLE MESSAGE: Successfuly preconnected to https://localhost:8443/
 Tests that Link&apos;s rel=preconnect works as expected over HTTPS.

 On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354631</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-29 11:48:52 -0700</bug_when>
    <thetext>Temporarily skipped in &lt;http://trac.webkit.org/changeset/222657&gt;. Working on a fix right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354660</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-29 13:06:44 -0700</bug_when>
    <thetext>Alex, the test is currently inherently flaky because it relies on the state of the SSL certificate on our bots.

I see 2 ways of addressing this:
1. Drop the HTTPS test.
2. Ask the client if the certificate is valid, similarly to resource loads. When the client is WKTR, it will accept invalid certificates and the test will always pass. This would require a bit more code to hand-shake with the WebProcess but it is doable. However, I do not know if it is suitable to ask the client to validate the certificate of the preconnect.

Which one do you prefer? Do you have another proposal?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354662</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-29 13:13:32 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #2)
&gt; Alex, the test is currently inherently flaky because it relies on the state
&gt; of the SSL certificate on our bots.
&gt; 
&gt; I see 2 ways of addressing this:
&gt; 1. Drop the HTTPS test.
&gt; 2. Ask the client if the certificate is valid, similarly to resource loads.
&gt; When the client is WKTR, it will accept invalid certificates and the test
&gt; will always pass. This would require a bit more code to hand-shake with the
&gt; WebProcess but it is doable. However, I do not know if it is suitable to ask
&gt; the client to validate the certificate of the preconnect.
&gt; 
&gt; Which one do you prefer? Do you have another proposal?

Third proposal:
1. When a console message listener is set via internals, report the console message to the listener but do not log it. We leave it up to the test to log the console message or not since we pass the string to the listener.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354711</commentid>
    <comment_count>4</comment_count>
      <attachid>322235</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-29 14:45:39 -0700</bug_when>
    <thetext>Created attachment 322235
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354714</commentid>
    <comment_count>5</comment_count>
      <attachid>322238</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-29 14:50:45 -0700</bug_when>
    <thetext>Created attachment 322238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354729</commentid>
    <comment_count>6</comment_count>
      <attachid>322241</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-29 15:10:19 -0700</bug_when>
    <thetext>Created attachment 322241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354772</commentid>
    <comment_count>7</comment_count>
      <attachid>322241</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-29 16:45:04 -0700</bug_when>
    <thetext>Comment on attachment 322241
Patch

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

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:466
&gt; +void WebLoaderStrategy::preconnectTo(NetworkingContext* context, const WebCore::URL&amp; url, StoredCredentialsPolicy storedCredentialsPolicy, PreconnectCompletionHandler&amp;&amp; completionHandler)

Could we make this take a reference?  If there&apos;s no NetworkingContext, we probably just shouldn&apos;t try to preconnect.

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:475
&gt; +    WebFrameNetworkingContext* webContext = static_cast&lt;WebFrameNetworkingContext*&gt;(context);
&gt; +    WebFrameLoaderClient* webFrameLoaderClient = webContext-&gt;webFrameLoaderClient();
&gt; +    WebFrame* webFrame = webFrameLoaderClient ? webFrameLoaderClient-&gt;webFrame() : nullptr;
&gt; +    WebPage* webPage = webFrame ? webFrame-&gt;page() : nullptr;

I think we should early return if any of these are null instead of trying to connect without a page.  The caller has already verified that a frame exists.

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:477
&gt; +    NetworkResourceLoadParameters parameters;

Could we use an initializer list to make sure we haven&apos;t forgotten any parameters?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354779</commentid>
    <comment_count>8</comment_count>
      <attachid>322241</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-29 16:51:37 -0700</bug_when>
    <thetext>Comment on attachment 322241
Patch

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

&gt;&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:477
&gt;&gt; +    NetworkResourceLoadParameters parameters;
&gt; 
&gt; Could we use an initializer list to make sure we haven&apos;t forgotten any parameters?

NetworkResourceLoadParameters has a lot of members and a parent class. I am definitely not initializing all the members.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354783</commentid>
    <comment_count>9</comment_count>
      <attachid>322257</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-29 16:55:00 -0700</bug_when>
    <thetext>Created attachment 322257
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354795</commentid>
    <comment_count>10</comment_count>
      <attachid>322257</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-29 17:35:27 -0700</bug_when>
    <thetext>Comment on attachment 322257
Patch

Clearing flags on attachment: 322257

Committed r222673: &lt;http://trac.webkit.org/changeset/222673&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354796</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-29 17:35:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354797</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-29 17:36:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/34751394&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322235</attachid>
            <date>2017-09-29 14:45:39 -0700</date>
            <delta_ts>2017-09-29 14:50:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177673-20170929144538.patch</filename>
            <type>text/plain</type>
            <size>34774</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM3MmJjZjY4ODAwNmY4
MTkxMGMyMjE0MzJhNzU3M2JjY2I4Nzk1Ny4uMGU1M2I2YzgxOGQzYWMyMmI3OWU5NDkyMmM3OGE1
ZTUzYzNkYjVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA5LTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgaHR0cC90ZXN0cy9wcmVjb25u
ZWN0L2xpbmstcmVsLXByZWNvbm5lY3QtaHR0cHMuaHRtbCBpcyBmbGFreQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NjczCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB1bnNraXBw
ZWQgdGVzdCB0aGF0IGlzIG5vdyBwYXNzaW5nIGNvbnNpc3RlbnRseS4KKworICAgICAgICAqIGxv
YWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmxvYWRM
aW5rKToKKyAgICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaDoKKwogMjAxNy0wOS0yOCAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBJbWFnZSBwYXN0aW5n
IGlzIG5vdCB3b3JraW5nIG9uIHRpbmV5ZS5jb20gLyBnbWFpbC5jb20gLyBHaXRIdWIuY29tIGR1
ZSB0byBsYWNrIG9mIHN1cHBvcnQgZm9yIERhdGFUcmFuc2Zlci5pdGVtcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBj
ZGE3ZGEzMDA1OWNkMzI2NjI1MmIxNWY2ZWJjZjg4MjUxZGQ4ODBjLi5hYjBhYmUwMDUxYjE5MDFi
YmEzMzc3YTI4MTRmMmYyNmQ3MjU0NmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE3
LTA5LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgaHR0cC90
ZXN0cy9wcmVjb25uZWN0L2xpbmstcmVsLXByZWNvbm5lY3QtaHR0cHMuaHRtbCBpcyBmbGFreQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NjczCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIFBy
ZWNvbm5lY3RUYXNrIHRvIHF1ZXJ5IHRoZSBjbGllbnQgd2hlbiBhIGNlcnRpZmljYXRlIG5lZWRz
IHRvIGJlCisgICAgICAgIHZhbGlkYXRlZC4gVGhpcyBhbGxvd3MgV2ViS2l0VGVzdFJ1bm5lciB0
byBpZ25vcmUgaW52YWxpZCBjZXJ0aWZpY2F0ZXMKKyAgICAgICAgYW5kIHRoaXMgY2F1c2VzIGh0
dHAvdGVzdHMvcHJlY29ubmVjdC9saW5rLXJlbC1wcmVjb25uZWN0LWh0dHBzLmh0bWwKKyAgICAg
ICAgdG8gcGFzcyBjb25zaXN0ZW50bHkuCisKKyAgICAgICAgVG8gYXZvaWQgZHVwbGljYXRpbmcg
Y29kZSwgUHJlY29ubmVjdFRhc2sgbm93IHVzZXMgTmV0d29ya0xvYWQgaW50ZXJuYWxseQorICAg
ICAgICBpbnN0ZWFkIG9mIHVzaW5nIGEgTmV0d29ya0RhdGFUYXNrIGRpcmVjdGx5LgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJlY29ubmVj
dFRvKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpnZW5lcmF0ZUNhbkF1dGhlbnRpY2F0ZUlkZW50aWZpZXIpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25T
cGFjZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjb250aW51ZUNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5l
Y3RUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OlByZWNvbm5lY3RU
YXNrKToKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6On5QcmVjb25uZWN0VGFzayk6
CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OmRpZEZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpQcmVjb25uZWN0VGFzazo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpQcmVjb25uZWN0VGFzazo6ZGlkU2VuZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpQ
cmVjb25uZWN0VGFzazo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5j
KToKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OmNvbnRpbnVlQ2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RU
YXNrOjpmcmFtZUlEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OnBh
Z2VJRCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaDoKKwogMjAxNy0wOS0yOCAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBJbWFnZSBwYXN0aW5n
IGlzIG5vdCB3b3JraW5nIG9uIHRpbmV5ZS5jb20gLyBnbWFpbC5jb20gLyBHaXRIdWIuY29tIGR1
ZSB0byBsYWNrIG9mIHN1cHBvcnQgZm9yIERhdGFUcmFuc2Zlci5pdGVtcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZwppbmRleCBjODE4MGYzYmUzMDgzODU5NGE1MDU4Mzk1YzEyY2NiMTBiYzJmNjM1Li5iN2Y2
ZDgxYmI3MjQ5M2MxMTIwZTZiYzAyNjU5ZTM3NTY4MzFlYzc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTA5LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgaHR0cC90ZXN0cy9wcmVjb25uZWN0L2xpbmstcmVsLXByZWNvbm5l
Y3QtaHR0cHMuaHRtbCBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc3NjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
Y3BwOgorICAgICAgICAoV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwcmVjb25uZWN0VG8pOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oOgorCiAy
MDE3LTA5LTI4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIDxsaW5rIHJlbD1wcmVjb25uZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtM
b2FkZXIuY3BwCmluZGV4IDllM2YyYWE4ZDIzMjNmM2NjMDljMDYyNTZiOTM5Njg4YzJkOWU4MWMu
LmQwMTkyNjZjYTdhYzIxODNjNGJkODZiZjBlZWI2ZjkyOWZhYzA1ZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTI1MywxMiArMjUzLDEyIEBAIGJvb2wgTGlua0xvYWRl
cjo6bG9hZExpbmsoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYgcmVsQXR0cmlidXRlLCBjb25zdCBV
UkwmIGhyZWYsCiAgICAgICAgICAgICBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQo
KS5wcmVmZXRjaEROUyhocmVmLmhvc3QoKSk7CiAgICAgfQogCi0gICAgaWYgKHJlbEF0dHJpYnV0
ZS5pc0xpbmtQcmVjb25uZWN0ICYmIGhyZWYuaXNWYWxpZCgpICYmIGhyZWYucHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgpKSB7CisgICAgaWYgKHJlbEF0dHJpYnV0ZS5pc0xpbmtQcmVjb25uZWN0ICYm
IGhyZWYuaXNWYWxpZCgpICYmIGhyZWYucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmIGRvY3Vt
ZW50LmZyYW1lKCkpIHsKICAgICAgICAgQVNTRVJUKGRvY3VtZW50LnNldHRpbmdzKCkubGlua1By
ZWNvbm5lY3RFbmFibGVkKCkpOwogICAgICAgICBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9y
YWdlQ3JlZGVudGlhbHNQb2xpY3kgPSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOwogICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjcm9zc09yaWdpbiwgImFub255bW91cyIp
ICYmIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzKFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUoaHJlZikpKQogICAgICAgICAgICAgc3RvcmFnZUNyZWRlbnRpYWxzUG9saWN5ID0gU3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlOwotICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+cHJlY29ubmVjdFRvKGRvY3VtZW50LnNlc3Npb25JRCgp
LCBocmVmLCBzdG9yYWdlQ3JlZGVudGlhbHNQb2xpY3ksIFt3ZWFrRG9jdW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVXZWFrUHRyKCksIGhyZWZdKFJlc291cmNlRXJyb3IgZXJyb3IpIHsKKyAgICAgICAg
cGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPnByZWNvbm5lY3RUbyhkb2N1
bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpLCBocmVmLCBzdG9yYWdl
Q3JlZGVudGlhbHNQb2xpY3ksIFt3ZWFrRG9jdW1lbnQgPSBkb2N1bWVudC5jcmVhdGVXZWFrUHRy
KCksIGhyZWZdKFJlc291cmNlRXJyb3IgZXJyb3IpIHsKICAgICAgICAgICAgIGlmICghd2Vha0Rv
Y3VtZW50KQogICAgICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9h
ZGVyU3RyYXRlZ3kuaAppbmRleCA5OGJlZDg0MmVjYWJmYWMxMzk4ZDc5Y2E1OGEzM2VmZDM5OWQy
MjZiLi4yMjY0MzNlOTRjZmFkY2IzNWIxYjE0MWEyYTBjZjc4MWViOWRkNDAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0UGluZ0xvYWQoRnJhbWUmLCBSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBjb25zdCBGZXRjaE9w
dGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYgPSB7IH0pID0gMDsKIAogICAgIHVz
aW5nIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25z
dCBSZXNvdXJjZUVycm9yJik+OwotICAgIHZpcnR1YWwgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0
Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcmVjb25uZWN0VG8o
TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBVUkwmLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwg
UHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBz
dG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBTSEExOjpEaWdlc3QmIGJvZHlLZXksIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXJ0aXRpb24sIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA5NGVjMDBmYjY0
YTQ4NjJlYzBiYTIwMzBhNzg2MzliYTcyZmM4N2YyLi4zYmQxZjcxMzJmNjVmMDNjNTJlNGVmOTMy
ODczODA5ZTRkYWMyZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMjkxLDE0
ICsyOTEsMTQgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJlZmV0Y2hE
TlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKICAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9u
KCkucHJlZmV0Y2hETlMoaG9zdG5hbWUpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJlY29ubmVjdFRvKHVpbnQ2NF90IHByZWNvbm5lY3Rp
b25JZGVudGlmaWVyLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogI2lm
IEVOQUJMRShTRVJWRVJfUFJFQ09OTkVDVCkKLSAgICBuZXcgUHJlY29ubmVjdFRhc2soc2Vzc2lv
bklELCB1cmwsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyID0gcHJlY29ubmVjdGlvbklkZW50aWZpZXJdIChj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgeworICAgIG5ldyBQcmVjb25uZWN0VGFzayhXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBp
ZGVudGlmaWVyID0gcHJlY29ubmVjdGlvbklkZW50aWZpZXJdIChjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikgewogICAgICAgICBkaWRGaW5pc2hQcmVjb25uZWN0aW9uKGlkZW50aWZpZXIsIGVy
cm9yKTsKICAgICB9KTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5KTsKKyAgICBVTlVTRURfUEFSQU0ocGFyYW1ldGVycyk7CiAgICAgZGlkRmluaXNoUHJl
Y29ubmVjdGlvbihwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgaW50ZXJuYWxFcnJvcih1cmwpKTsK
ICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGIxMGRmNTg1ZGQ2OTBmYzU4
ZDQ0OGE5NzE0NzliZTUyNGY5ZjNkMGMuLjNhZWQ3ZWI1YjE0NjUyZmViYjkzY2M2MTViZjgyMmZh
MzhhZGJhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBjbGFzcyBJbmNsdWRlU2VjdXJlQ29va2llczsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIE5ldHdvcmtMb2FkUGFyYW1l
dGVyczsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIE5ldHdvcmtTb2NrZXRT
dHJlYW07CiBjbGFzcyBTeW5jTmV0d29ya1Jlc291cmNlTG9hZGVyOwpAQCAtOTIsNyArOTMsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcGVyZm9ybVN5bmNocm9ub3VzTG9hZChjb25zdCBOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyYsIFJlZjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4mJik7CiAg
ICAgdm9pZCBsb2FkUGluZyhOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBXZWJDb3Jl
OjpIVFRQSGVhZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycyk7CiAgICAgdm9pZCBwcmVm
ZXRjaEROUyhjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Np
b25JRCwgdWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICB2b2lkIHByZWNvbm5l
Y3RUbyh1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgTmV0d29ya0xvYWRQYXJhbWV0
ZXJzJiYpOwogCiAgICAgdm9pZCByZW1vdmVMb2FkSWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyKTsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciwgYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRl
eCBlODVlOTczMjgyNGQwMjliMWI3ZWVkZWYzMDk3M2ZkN2UwYTc2NmRiLi5hYmZiMzBmYmVlYmZh
OWYwZTNiMDQ2Yzg1M2E1YjJiOTMwNmViMDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI4LDcgKzI4LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlbW92ZUxvYWRJZGVu
dGlmaWVyKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIpCiAgICAgU2V0RGVmZXJzTG9h
ZGluZyh1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBib29sIGRlZmVycykKICAgICBQ
cmVmZXRjaEROUyhTdHJpbmcgaG9zdG5hbWUpCi0gICAgUHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6
OlVSTCB1cmwsIGVudW0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kpOworICAgIFByZWNvbm5lY3RUbyh1aW50NjRfdCBwcmVjb25uZWN0aW9u
SWRlbnRpZmllciwgV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBsb2FkUGFy
YW1ldGVycyk7CiAKICAgICBTdGFydERvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCBTdHJpbmcgc3VnZ2VzdGVkTmFtZSkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9h
ZFRvRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBtYWluUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllciwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCmluZGV4IDYy
ODczZTRhMjQ1MDFiZGE1MjE5MjU5NjM3ZDVhOWMxZmJkNzVjODcuLmQ2OTcyOThkYTE2OTIzMzVh
NDBhYmRjMGRkYWYwNjdkNDNkYTc0NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmgKQEAgLTY3LDYgKzY3LDggQEAgcHVibGljOgogICAgIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgY3VycmVudFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX2N1
cnJlbnRSZXF1ZXN0OyB9CiAgICAgdm9pZCBjbGVhckN1cnJlbnRSZXF1ZXN0KCkgeyBtX2N1cnJl
bnRSZXF1ZXN0ID0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0KCk7IH0KIAorICAgIGNvbnN0IE5l
dHdvcmtMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1l
dGVyczsgfQorCiAgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmlu
ZGV4IGQ0NmM2ZjNiMDc1OTRlYWUyZmNlNjBhN2I3MjMzYjRhNTFiNmMwNGYuLjVhMjFjMTMwZDVl
MGZiYTNhNTYyNzk4ZjI5YjUzMGMwZWMwZDhlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC01MDUsMTggKzUwNSw0MiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQpCiB9
CiAgICAgCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoTmV0d29y
a1Jlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYg
cHJvdGVjdGlvblNwYWNlKQorc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlQ2FuQXV0aGVudGljYXRl
SWRlbnRpZmllcigpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGxhc3RMb2FkZXJJRCA9IDA7Ci0g
ICAgdWludDY0X3QgbG9hZGVySUQgPSArK2xhc3RMb2FkZXJJRDsKLSAgICBtX3dhaXRpbmdOZXR3
b3JrUmVzb3VyY2VMb2FkZXJzLnNldChsYXN0TG9hZGVySUQsIGxvYWRlcik7CisgICAgcmV0dXJu
ICsrbGFzdExvYWRlcklEOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5BdXRoZW50aWNh
dGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBj
b25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKK3sKKyAgICB1
aW50NjRfdCBsb2FkZXJJRCA9IGdlbmVyYXRlQ2FuQXV0aGVudGljYXRlSWRlbnRpZmllcigpOwor
ICAgIG1fd2FpdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRlcnMuc2V0KGxvYWRlcklELCBsb2FkZXIp
OwogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OkNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UobG9hZGVy
SUQsIGxvYWRlci5wYWdlSUQoKSwgbG9hZGVyLmZyYW1lSUQoKSwgcHJvdGVjdGlvblNwYWNlKSwg
MCk7CiB9CiAKKyNpZiBFTkFCTEUoU0VSVkVSX1BSRUNPTk5FQ1QpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFByZWNvbm5lY3RUYXNr
JiBwcmVjb25uZWN0VGFzaywgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0
aW9uU3BhY2UpCit7CisgICAgdWludDY0X3QgbG9hZGVySUQgPSBnZW5lcmF0ZUNhbkF1dGhlbnRp
Y2F0ZUlkZW50aWZpZXIoKTsKKyAgICBtX3dhaXRpbmdQcmVjb25uZWN0VGFza3Muc2V0KGxvYWRl
cklELCBwcmVjb25uZWN0VGFzay5jcmVhdGVXZWFrUHRyKCkpOworICAgIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UobG9hZGVySUQsIHByZWNvbm5lY3RUYXNrLnBh
Z2VJRCgpLCBwcmVjb25uZWN0VGFzay5mcmFtZUlEKCksIHByb3RlY3Rpb25TcGFjZSksIDApOwor
fQorI2VuZGlmCisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZSh1aW50NjRfdCBsb2FkZXJJRCwgYm9vbCBjYW5BdXRoZW50
aWNhdGUpCiB7Ci0gICAgbV93YWl0aW5nTmV0d29ya1Jlc291cmNlTG9hZGVycy50YWtlKGxvYWRl
cklEKS52YWx1ZSgpLT5jb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2UoY2FuQXV0aGVudGljYXRlKTsKKyAgICBpZiAoYXV0byByZXNvdXJjZUxvYWRlciA9IG1fd2Fp
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShsb2FkZXJJRCkpIHsKKyAgICAgICAgcmVz
b3VyY2VMb2FkZXIudmFsdWUoKS0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKGNhbkF1dGhlbnRpY2F0ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjaWYg
RU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQorICAgIGlmIChhdXRvIHByZWNvbm5lY3RUYXNrID0g
bV93YWl0aW5nUHJlY29ubmVjdFRhc2tzLnRha2UobG9hZGVySUQpKSB7CisgICAgICAgIHByZWNv
bm5lY3RUYXNrLT5jb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
Y2FuQXV0aGVudGljYXRlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogfQorCiAj
ZW5kaWYKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCkBAIC03MjksNyArNzUzLDEzIEBAIFN0
cmluZyBOZXR3b3JrUHJvY2Vzczo6Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkgY29uc3QKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kpCiB7CiAjaWYgRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQot
ICAgIG5ldyBQcmVjb25uZWN0VGFzayhQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
LCB1cmwsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICBOZXR3b3JrTG9hZFBhcmFtZXRl
cnMgcGFyYW1ldGVyczsKKyAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3Qg
eyB1cmwgfTsKKyAgICBwYXJhbWV0ZXJzLnNlc3Npb25JRCA9IFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCk7CisgICAgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5OworICAgIHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVj
dE9ubHkgPSBQcmVjb25uZWN0T25seTo6WWVzOworCisgICAgbmV3IFByZWNvbm5lY3RUYXNrKFdU
Rk1vdmUocGFyYW1ldGVycykpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odXJsKTsKICAgICBV
TlVTRURfUEFSQU0oc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGI5ZmE3MjA4NGM0ODA5NTEyNzRh
ZjlhNDE0N2JlZWIwNTcxYjhiNTYuLjI0ZjRhMGU4NmZmOWY2ZDE1Y2UzNzk2YTRlYzdjMDBiNzlh
YzE4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAj
aW5jbHVkZSAiV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCkBAIC02MCw2ICs2MSw5IEBAIGNs
YXNzIFVSTDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbk1hbmFn
ZXI7CisjaWYgRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQorY2xhc3MgUHJlY29ubmVjdFRhc2s7
CisjZW5kaWYKIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgTmV0
d29ya1Byb2Nlc3NTdXBwbGVtZW50OwogY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwpAQCAt
MTIzLDYgKzEyNyw5IEBAIHB1YmxpYzoKIAogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhf
Q0FMTEJBQ0spCiAgICAgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYp
OworI2lmIEVOQUJMRShTRVJWRVJfUFJFQ09OTkVDVCkKKyAgICB2b2lkIGNhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoUHJlY29ubmVjdFRhc2smLCBjb25zdCBXZWJDb3JlOjpQ
cm90ZWN0aW9uU3BhY2UmKTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICB2b2lkIHByZWZldGNoRE5T
KGNvbnN0IFN0cmluZyYpOwpAQCAtMjQ4LDYgKzI1NSw5IEBAIHByaXZhdGU6CiAKICAgICBIYXNo
TWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkICgpPj4gbV9zYW5kYm94RXh0ZW5zaW9uRm9yQmxv
YnNDb21wbGV0aW9uSGFuZGxlcnM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcj4+IG1fd2FpdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRlcnM7CisjaWYgRU5B
QkxFKFNFUlZFUl9QUkVDT05ORUNUKQorICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYWtQdHI8UHJl
Y29ubmVjdFRhc2s+PiBtX3dhaXRpbmdQcmVjb25uZWN0VGFza3M7CisjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3ND
b2NvYShjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmNwcAppbmRleCA3MTdiZjg4MmVkNDAxYzFkYmVkNGE1NzVhZTVhZGE5NDIz
MzljM2Q0Li5lOTYzNTc2MmI2NWY1MzI0MTJmYmVmZGQxMTM3NGRjZDNhNTQ5NWQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtNzYsNiArNzYsNyBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ICAgIGVuY29kZXIuZW5jb2RlRW51bShjb250ZW50U25pZmZpbmdQb2xpY3kpOwogICAgIGVuY29k
ZXIuZW5jb2RlRW51bShzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAgICAgZW5jb2Rlci5lbmNv
ZGVFbnVtKGNsaWVudENyZWRlbnRpYWxQb2xpY3kpOworICAgIGVuY29kZXIuZW5jb2RlRW51bShz
aG91bGRQcmVjb25uZWN0T25seSk7CiAgICAgZW5jb2RlciA8PCBzaG91bGRGb2xsb3dSZWRpcmVj
dHM7CiAgICAgZW5jb2RlciA8PCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0OwogICAgIGVuY29kZXIgPDwgZGVmZXJzTG9hZGluZzsKQEAgLTE0NCw2ICsxNDUsOCBAQCBi
b29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBOZXR3b3JrUmVzb3VyYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LmNsaWVudENyZWRlbnRpYWxQb2xpY3kpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LnNob3Vs
ZFByZWNvbm5lY3RPbmx5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LnNob3VsZEZvbGxvd1JlZGlyZWN0cykpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaG91bGRDbGVhclJlZmVycmVy
T25IVFRQU1RvSFRUUFJlZGlyZWN0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QcmVjb25uZWN0VGFzay5jcHAKaW5kZXggY2E4OTMzNDAxMzZhOTUxMDIyNDNhNjlhY2JkZWQ0
OTRhZGZjZGM1NC4uMmUxMGI4Nzg1YjVhMzlkYWNjZmE2MTBmZmM5ODM2Mzg0ODlkZWM5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKQEAg
LTI4LDEwMCArMjgsODIgQEAKIAogI2lmIEVOQUJMRShTRVJWRVJfUFJFQ09OTkVDVCkKIAotI2lu
Y2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJOZXR3b3JrTG9hZC5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkUGFyYW1ldGVycy5o
IgotI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3Mu
aCIKICNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgotI2luY2x1ZGUgIldlYkVycm9ycy5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUg
Ik5ldHdvcmtEYXRhVGFza0NvY29hLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1QcmVjb25uZWN0VGFzazo6UHJlY29ubmVjdFRh
c2soUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCitQcmVjb25uZWN0VGFzazo6UHJlY29ubmVjdFRhc2soTmV0d29ya0xvYWRQ
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlc291cmNlRXJyb3ImKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCi0gICAgLCBtX3RpbWVvdXRUaW1l
cihbdGhpc10geyBkaWRGaW5pc2goUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAwLCBtX3Rhc2st
PmZpcnN0UmVxdWVzdCgpLnVybCgpLCBBU0NJSUxpdGVyYWwoIlByZWNvbm5lY3Rpb24gdGltZWQg
b3V0IiksIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQgfSk7IH0pCisgICAgLCBtX3RpbWVv
dXRUaW1lcihbdGhpc10geyBkaWRGaW5pc2goUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAwLCBt
X25ldHdvcmtMb2FkLT5wYXJhbWV0ZXJzKCkucmVxdWVzdC51cmwoKSwgQVNDSUlMaXRlcmFsKCJQ
cmVjb25uZWN0aW9uIHRpbWVkIG91dCIpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0IH0p
OyB9KQogewotICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gU2Vzc2lvblRyYWNrZXI6Om5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gUHJl
Y29ubmVjdFRhc2s6OlByZWNvbm5lY3RUYXNrKCkiLCB0aGlzKTsKKworICAgIGF1dG8qIG5ldHdv
cmtTZXNzaW9uID0gU2Vzc2lvblRyYWNrZXI6Om5ldHdvcmtTZXNzaW9uKHBhcmFtZXRlcnMuc2Vz
c2lvbklEKTsKICAgICBBU1NFUlQobmV0d29ya1Nlc3Npb24pOwogCi0gICAgUkVMRUFTRV9MT0co
TmV0d29yaywgIiVwIC0gUHJlY29ubmVjdFRhc2s6OlByZWNvbm5lY3RUYXNrKCkiLCB0aGlzKTsK
LSAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICBwYXJhbWV0ZXJzLnJl
cXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QodXJsKTsKLSAgICBwYXJhbWV0ZXJzLnNob3VsZFByZWNv
bm5lY3RPbmx5ID0gUHJlY29ubmVjdE9ubHk6OlllczsKLSAgICBwYXJhbWV0ZXJzLnN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5ID0gc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7Ci0gICAgbV90YXNrID0g
TmV0d29ya0RhdGFUYXNrOjpjcmVhdGUoKm5ldHdvcmtTZXNzaW9uLCAqdGhpcywgcGFyYW1ldGVy
cyk7Ci0gICAgbV90YXNrLT5yZXN1bWUoKTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5zaG91bGRQ
cmVjb25uZWN0T25seSA9PSBQcmVjb25uZWN0T25seTo6WWVzKTsKKyAgICBtX25ldHdvcmtMb2Fk
ID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIFdURk1vdmUocGFyYW1ldGVy
cyksICpuZXR3b3JrU2Vzc2lvbik7CiAKICAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3Qo
NjAwMDBfcyk7CiB9CiAKIFByZWNvbm5lY3RUYXNrOjp+UHJlY29ubmVjdFRhc2soKQogewotICAg
IEFTU0VSVChtX3Rhc2stPmNsaWVudCgpID09IHRoaXMpOwotICAgIG1fdGFzay0+Y2xlYXJDbGll
bnQoKTsKLSAgICBtX3Rhc2stPmNhbmNlbCgpOwogfQogCi12b2lkIFByZWNvbm5lY3RUYXNrOjp3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpCit2
b2lkIFByZWNvbm5lY3RUYXNrOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmLCBSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Ci12b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCithdXRvIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmKSAtPiBTaG91bGRDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZQogewotICAgIGlmIChjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkuYXV0aGVu
dGljYXRpb25TY2hlbWUoKSA9PSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVNl
cnZlclRydXN0RXZhbHVhdGlvblJlcXVlc3RlZCkgewotICAgICAgICBpZiAobV90YXNrICYmIG1f
dGFzay0+YWxsb3dzU3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjaGFsbGVuZ2UpKQot
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgc2VydmVyVHJ1c3RDcmVkZW50aWFsKGNoYWxsZW5nZSkp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2UsIHsgfSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOjpObzsKIH0KIAotdm9pZCBQcmVj
b25uZWN0VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpCit2b2lkIFByZWNv
bm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Ci12b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKQordm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFJF
TEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFByZWNvbm5lY3RUYXNrOjpkaWRGaW5pc2hMb2FkaW5n
IiwgdGhpcyk7CisgICAgZGlkRmluaXNoKHsgfSk7CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6
OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9y
LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQordm9pZCBQcmVjb25uZWN0VGFz
azo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgaWYg
KGVycm9yLmlzTnVsbCgpKQotICAgICAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBQcmVj
b25uZWN0VGFzazo6ZGlkQ29tcGxldGUiLCB0aGlzKTsKLSAgICBlbHNlCi0gICAgICAgIFJFTEVB
U0VfTE9HKE5ldHdvcmssICIlcCAtIFByZWNvbm5lY3RUYXNrOjpkaWRDb21wbGV0ZVdpdGhFcnJv
ciwgZXJyb3JfY29kZTogJWQiLCB0aGlzLCBlcnJvci5lcnJvckNvZGUoKSk7Ci0KKyAgICBSRUxF
QVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBQcmVjb25uZWN0VGFzazo6ZGlkRmFpbExvYWRpbmcsIGVy
cm9yX2NvZGU6ICVkIiwgdGhpcywgZXJyb3IuZXJyb3JDb2RlKCkpOwogICAgIGRpZEZpbmlzaChl
cnJvcik7CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFNlbmREYXRhKHVpbnQ2NF90IHRv
dGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpCit2b2lkIFBy
ZWNvbm5lY3RUYXNrOjpkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1
bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KQogewogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogCi12b2lkIFByZWNvbm5lY3RUYXNrOjp3YXNCbG9ja2VkKCkKK3ZvaWQg
UHJlY29ubmVjdFRhc2s6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3lu
Yyhjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSAgICBSRUxFQVNF
X0xPRyhOZXR3b3JrLCAiJXAgLSBQcmVjb25uZWN0VGFzazo6d2FzQmxvY2tlZCgpIiwgdGhpcyk7
Ci0gICAgZGlkRmluaXNoKGJsb2NrZWRFcnJvcihtX3Rhc2stPmZpcnN0UmVxdWVzdCgpKSk7Cisg
ICAgaWYgKCFwYWdlSUQoKSkgeworICAgICAgICAvLyBUaGUgcHJlY29ubmVjdCB3YXMgc3RhcnRl
ZCBieSB0aGUgVUlQcm9jZXNzLgorICAgICAgICBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2UoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIE5l
dHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlKCp0aGlzLCBwcm90ZWN0aW9uU3BhY2UpOwogfQogCi12b2lkIFByZWNvbm5lY3RUYXNr
OjpjYW5ub3RTaG93VVJMKCkKK3ZvaWQgUHJlY29ubmVjdFRhc2s6OmNvbnRpbnVlQ2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIHJlc3VsdCkKIHsKLSAgICBSRUxFQVNF
X0xPRyhOZXR3b3JrLCAiJXAgLSBQcmVjb25uZWN0VGFzazo6Y2Fubm90U2hvd1VSTCgpIiwgdGhp
cyk7Ci0gICAgZGlkRmluaXNoKGNhbm5vdFNob3dVUkxFcnJvcihtX3Rhc2stPmZpcnN0UmVxdWVz
dCgpKSk7CisgICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKHJlc3VsdCk7CiB9CiAKIHZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZEZp
bmlzaChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTEzMSw2ICsxMTMsMTYgQEAgdm9p
ZCBQcmVjb25uZWN0VGFzazo6ZGlkRmluaXNoKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQog
ICAgIGRlbGV0ZSB0aGlzOwogfQogCit1aW50NjRfdCBQcmVjb25uZWN0VGFzazo6ZnJhbWVJRCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbmV0d29ya0xvYWQtPnBhcmFtZXRlcnMoKS53ZWJGcmFt
ZUlEOworfQorCit1aW50NjRfdCBQcmVjb25uZWN0VGFzazo6cGFnZUlEKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9uZXR3b3JrTG9hZC0+cGFyYW1ldGVycygpLndlYlBhZ2VJRDsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVkVSX1BSRUNPTk5FQ1Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNr
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKaW5kZXgg
YmY5ZTM5NWU4MWViMTI5MjVlMmI4NWQ4ODMwMjU3YjBhOTZjNjEyYi4uODllYWJhYmI1NDA5YmY5
OWMxMWJjYjIxYTVlNTg5ZGFkOTBhZDVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJlY29ubmVjdFRhc2suaApAQCAtMjcsMzcgKzI3LDQ1IEBACiAKICNpZiBFTkFCTEUo
U0VSVkVSX1BSRUNPTk5FQ1QpCiAKLSNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKKyNpbmNs
dWRlICJOZXR3b3JrTG9hZENsaWVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KLQotbmFtZXNwYWNlIFBBTCB7Ci1jbGFz
cyBTZXNzaW9uSUQ7Ci19CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWNsYXNzIFByZWNvbm5lY3RUYXNrIGZpbmFsIDogcHJpdmF0ZSBOZXR3b3JrRGF0
YVRhc2tDbGllbnQgeworY2xhc3MgTmV0d29ya0xvYWQ7CitjbGFzcyBOZXR3b3JrTG9hZFBhcmFt
ZXRlcnM7CisKK2NsYXNzIFByZWNvbm5lY3RUYXNrIGZpbmFsIDogcHVibGljIE5ldHdvcmtMb2Fk
Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBQcmVjb25uZWN0VGFzayhQQUw6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJik+JiYgY29tcGxldGlvbkhhbmRsZXIgPSB7IH0pOworICAgIGV4cGxpY2l0IFByZWNvbm5l
Y3RUYXNrKE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0g
eyB9KTsKICAgICB+UHJlY29ubmVjdFRhc2soKTsKIAorICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBj
b25zdDsKKyAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdDsKKworICAgIHZvaWQgY29udGludWVD
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wpOworCisgICAgV2Vha1B0
cjxQcmVjb25uZWN0VGFzaz4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha0ZhY3Rvcnku
Y3JlYXRlV2Vha1B0cigqdGhpcyk7IH0KKwogcHJpdmF0ZToKLSAgICAvLyBOZXR3b3JrRGF0YVRh
c2tDbGllbnQuCi0gICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nl
c3Npb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7Ci0gICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwg
dWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKLSAgICB2b2lkIHdhc0Js
b2NrZWQoKSBmaW5hbDsKLSAgICB2b2lkIGNhbm5vdFNob3dVUkwoKSBmaW5hbDsKKyAgICAvLyBO
ZXR3b3JrTG9hZENsaWVudC4KKyAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25n
IGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7
CisgICAgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoY29u
c3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJikgZmluYWw7CisgICAgdm9pZCB3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKKyAgICBTaG91bGRDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
KyAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBm
aW5hbDsKIAogICAgIHZvaWQgZGlkRmluaXNoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KTsKIAotICAgIFJlZlB0cjxOZXR3b3JrRGF0YVRhc2s+IG1fdGFzazsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8TmV0d29ya0xvYWQ+IG1fbmV0d29ya0xvYWQ7CiAgICAgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKT4gbV9jb21wbGV0aW9uSGFu
ZGxlcjsKICAgICBXZWJDb3JlOjpUaW1lciBtX3RpbWVvdXRUaW1lcjsKKyAgICBXZWFrUHRyRmFj
dG9yeTxQcmVjb25uZWN0VGFzaz4gbV93ZWFrRmFjdG9yeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDc2ZjE4NjY3NWRkOWJlYjBmNzgwNGQxZGMwOTk2NDUw
YjVlODYwNTkuLmJkNzA4MzlhM2I2YThmNDkxY2Y2NzE1YzA0Y2Y2YTQwYTc5ZWNjN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHAKQEAgLTQ2MywxMiArNDYzLDI2IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmRp
ZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllciwgUmVzb3VyY2VFCiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZXJyb3IpKTsKIH0KIAotdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6VVJMJiB1cmwsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyhOZXR3b3JraW5nQ29u
dGV4dCogY29udGV4dCwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFN0b3JlZENyZWRlbnRpYWxz
UG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRl
bnRpZmllciA9IGdlbmVyYXRlTG9hZElkZW50aWZpZXIoKTsKICAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fcHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVycy5hZGQocHJlY29ubmVjdGlvbklkZW50aWZp
ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
Lm5ldHdvcmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQcmVjb25uZWN0VG8oc2Vzc2lvbklELCBwcmVjb25uZWN0
aW9uSWRlbnRpZmllciwgdXJsLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSksIDApOworCisgICAg
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dCogd2ViQ29udGV4dCA9IHN0YXRpY19jYXN0PFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQqPihjb250ZXh0KTsKKyAgICBXZWJGcmFtZUxvYWRlckNsaWVu
dCogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB3ZWJDb250ZXh0LT53ZWJGcmFtZUxvYWRlckNsaWVu
dCgpOworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2Vi
RnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworICAgIFdlYlBhZ2UqIHdl
YlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOworCisgICAgTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICBwYXJhbWV0ZXJzLnJl
cXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyB1cmwgfTsKKyAgICBwYXJhbWV0ZXJzLndlYlBhZ2VJ
RCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQoKSA6IDA7CisgICAgcGFyYW1ldGVycy53ZWJG
cmFtZUlEID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+ZnJhbWVJRCgpIDogMDsKKyAgICBwYXJhbWV0
ZXJzLnNlc3Npb25JRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CisgICAgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50
aWFsc1BvbGljeSA9IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5OworICAgIHBhcmFtZXRlcnMuc2hv
dWxkUHJlY29ubmVjdE9ubHkgPSBQcmVjb25uZWN0T25seTo6WWVzOworCisgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlByZWNvbm5lY3RUbyhwcmVjb25u
ZWN0aW9uSWRlbnRpZmllciwgV1RGTW92ZShwYXJhbWV0ZXJzKSksIDApOwogfQogCiB2b2lkIFdl
YkxvYWRlclN0cmF0ZWd5OjpkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBSZXNvdXJjZUVycm9yJiYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAppbmRleCA3MjU2
YjVkMzczMDc4MmZmYjk1NWVhY2Y0MTY5YWQwZGI1OWQyZWQ5Li45OTk1YTUyYTY0MmM4ODVlNzM0
NzJhOWVkYmQ1MGM3NmUwZjg0ZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc3RhcnRQaW5nTG9hZChXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVz
dEhlYWRlcnMsIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYsIFBpbmdMb2FkQ29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hQaW5nTG9hZCh1aW50NjRfdCBw
aW5nTG9hZElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik7CiAKLSAgICB2b2lk
IHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5p
c2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiYpOwogCiAgICAgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShj
b25zdCBTSEExOjpEaWdlc3QmIGJvZHlIYXNoLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgcGFydGl0aW9uLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCA3OTc1YmQzZWEzNTlkZTlkZTY2MDI1N2NlYmRkNmE2
ODYwMGE5ODczLi45MDM2OTYxNDE2ODA1Yjc1MTk4ODY0YmZkMGM2YmVjOTVjYzE5MzBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9h
ZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9X
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXUKICAgICBuZXcgUGluZ0hhbmRsZShmcmFtZS5sb2FkZXIoKS5uZXR3b3Jr
aW5nQ29udGV4dCgpLCByZXF1ZXN0LCBvcHRpb25zLmNyZWRlbnRpYWxzICE9IEZldGNoT3B0aW9u
czo6Q3JlZGVudGlhbHM6Ok9taXQsIFBpbmdIYW5kbGU6OlVzZXNBc3luY0NhbGxiYWNrczo6Tm8s
IG9wdGlvbnMucmVkaXJlY3QgPT0gRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6Rm9sbG93LCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyOjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkU2NoZWR1bGVyOjpwcmVjb25uZWN0VG8oTmV0d29ya2luZ0NvbnRleHQqLCBjb25z
dCBVUkwmLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5k
bGVyJiYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1
cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCmluZGV4IGVjZmMxY2ZiMzVl
ZGVjNGUzNGM4YjZlNjY3OTViYzY0OGY1YjFlNzEuLmI0NjMxZDQ2YmVlZjgzMmM2YzdmMGU1MjI1
MTdhM2Y0YTE4OGEyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1
cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaApAQCAtNjEsNyArNjEs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0UGluZ0xvYWQoV2ViQ29yZTo6RnJhbWUmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiwg
Y29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKIAotICAgIHZvaWQgcHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklELCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVj
dENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgcHJlY29ubmVjdFRvKFdlYkNv
cmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5h
bDsKIAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0
JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikg
ZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCAzYzhmMWZiNmJhNjU5MDcwZjcyYThjMzI5MTQ5YjA5YjJhMzJl
MTQ1Li43NzIzZTdkOTYwMzVhZTFiODA1YmQzYjIwMzA4MWMwOTliNGM5NDc5IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMTggQEAKIDIwMTctMDktMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAorICAgICAgICBodHRwL3Rlc3RzL3ByZWNvbm5lY3QvbGluay1yZWwtcHJlY29ubmVjdC1odHRw
cy5odG1sIGlzIGZsYWt5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzc2NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGh0dHAvdGVzdHMvcHJlY29ubmVjdC9saW5rLXJlbC1wcmVjb25uZWN0LWh0dHBz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgUmViYXNlbGluZSB0ZXN0IG5vdyB0aGF0IGl0IGlzIHBh
c3NpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAg
ICAgVXNraXAgdGVzdCBhcyBpdCBzaG91bGQgbm8gbG9uZ2VyIGJlIGZsYWt5LgorCisyMDE3LTA5
LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgVW5yZXZpZXdl
ZCwgdGVtcG9yYXJpbHkgbWFyayBodHRwL3Rlc3RzL3ByZWNvbm5lY3QvbGluay1yZWwtcHJlY29u
bmVjdC1odHRwcy5odG1sIGFzIGZsYWt5LgogCiAgICAgICAgICogcGxhdGZvcm0vd2syL1Rlc3RF
eHBlY3RhdGlvbnM6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByZWNvbm5l
Y3QvbGluay1yZWwtcHJlY29ubmVjdC1odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3ByZWNvbm5lY3QvbGluay1yZWwtcHJlY29ubmVjdC1odHRwcy1leHBlY3RlZC50
eHQKaW5kZXggM2MxNGUyMzNmNzc4Y2YxZjgzYWQwZmFhMWNkMjdmZGQyZWMzZmE0OC4uN2QxZTQ3
ODE5NjEyODJkNjdjYzc0MzQ1ODQzODI5ODNhNzNmYzdlMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wcmVjb25uZWN0L2xpbmstcmVsLXByZWNvbm5lY3QtaHR0cHMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJlY29ubmVjdC9saW5rLXJlbC1w
cmVjb25uZWN0LWh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVT
U0FHRTogRmFpbGVkIHRvIHByZWNvbm5lY3QgdG8gaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0My8uIEVy
cm9yOiBUaGUgY2VydGlmaWNhdGUgZm9yIHRoaXMgc2VydmVyIGlzIGludmFsaWQuIFlvdSBtaWdo
dCBiZSBjb25uZWN0aW5nIHRvIGEgc2VydmVyIHRoYXQgaXMgcHJldGVuZGluZyB0byBiZSDigJxs
b2NhbGhvc3TigJ0gd2hpY2ggY291bGQgcHV0IHlvdXIgY29uZmlkZW50aWFsIGluZm9ybWF0aW9u
IGF0IHJpc2suCitDT05TT0xFIE1FU1NBR0U6IFN1Y2Nlc3NmdWx5IHByZWNvbm5lY3RlZCB0byBo
dHRwczovL2xvY2FsaG9zdDo4NDQzLwogVGVzdHMgdGhhdCBMaW5rJ3MgcmVsPXByZWNvbm5lY3Qg
d29ya3MgYXMgZXhwZWN0ZWQgb3ZlciBIVFRQUy4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAyMzhlODZl
YmMxMTg1YzZmODFkNDRlMzFkMDhjNzlkMmQ5ZGVmOWYzLi5jNjM1MGVmN2QyYTJkMGI5ZjM2YmFm
NmIxYzVmZGIzMDMwMDkwYTkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtNzEyLDcgKzcxMiw1IEBAIHdlYmtpdC5vcmcvYi8xNzQ0NzEgd2VicnRjL2Zp
bHRlcmluZy1pY2UtY2FuZGlkYXRlLWFmdGVyLXJlbG9hZC5odG1sIFsgUGFzcyBUaW1lCiAKIHdl
YmtpdC5vcmcvYi8xNzU2NzggbWVkaWEvVzNDL3ZpZGVvL2V2ZW50cy9ldmVudF9wcm9ncmVzcy5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE3NzY3MyBodHRwL3Rlc3RzL3By
ZWNvbm5lY3QvbGluay1yZWwtcHJlY29ubmVjdC1odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
LQogd2Via2l0Lm9yZy9iLzE3NzQ0MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvYnJvd3NlcnMvb3JpZ2luL3JlbGF4aW5nLXRoZS1zYW1lLW9yaWdpbi1yZXN0cmljdGlvbi9k
b2N1bWVudF9kb21haW5fc2V0dGVyX251bGwudGVudGF0aXZlLmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322238</attachid>
            <date>2017-09-29 14:50:45 -0700</date>
            <delta_ts>2017-09-29 15:10:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177673-20170929145044.patch</filename>
            <type>text/plain</type>
            <size>34871</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM3MmJjZjY4ODAwNmY4
MTkxMGMyMjE0MzJhNzU3M2JjY2I4Nzk1Ny4uMGU1M2I2YzgxOGQzYWMyMmI3OWU5NDkyMmM3OGE1
ZTUzYzNkYjVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA5LTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgaHR0cC90ZXN0cy9wcmVjb25u
ZWN0L2xpbmstcmVsLXByZWNvbm5lY3QtaHR0cHMuaHRtbCBpcyBmbGFreQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NjczCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB1bnNraXBw
ZWQgdGVzdCB0aGF0IGlzIG5vdyBwYXNzaW5nIGNvbnNpc3RlbnRseS4KKworICAgICAgICAqIGxv
YWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmxvYWRM
aW5rKToKKyAgICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaDoKKwogMjAxNy0wOS0yOCAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBJbWFnZSBwYXN0aW5n
IGlzIG5vdCB3b3JraW5nIG9uIHRpbmV5ZS5jb20gLyBnbWFpbC5jb20gLyBHaXRIdWIuY29tIGR1
ZSB0byBsYWNrIG9mIHN1cHBvcnQgZm9yIERhdGFUcmFuc2Zlci5pdGVtcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBj
ZGE3ZGEzMDA1OWNkMzI2NjI1MmIxNWY2ZWJjZjg4MjUxZGQ4ODBjLi5hYjBhYmUwMDUxYjE5MDFi
YmEzMzc3YTI4MTRmMmYyNmQ3MjU0NmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE3
LTA5LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgaHR0cC90
ZXN0cy9wcmVjb25uZWN0L2xpbmstcmVsLXByZWNvbm5lY3QtaHR0cHMuaHRtbCBpcyBmbGFreQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NjczCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIFBy
ZWNvbm5lY3RUYXNrIHRvIHF1ZXJ5IHRoZSBjbGllbnQgd2hlbiBhIGNlcnRpZmljYXRlIG5lZWRz
IHRvIGJlCisgICAgICAgIHZhbGlkYXRlZC4gVGhpcyBhbGxvd3MgV2ViS2l0VGVzdFJ1bm5lciB0
byBpZ25vcmUgaW52YWxpZCBjZXJ0aWZpY2F0ZXMKKyAgICAgICAgYW5kIHRoaXMgY2F1c2VzIGh0
dHAvdGVzdHMvcHJlY29ubmVjdC9saW5rLXJlbC1wcmVjb25uZWN0LWh0dHBzLmh0bWwKKyAgICAg
ICAgdG8gcGFzcyBjb25zaXN0ZW50bHkuCisKKyAgICAgICAgVG8gYXZvaWQgZHVwbGljYXRpbmcg
Y29kZSwgUHJlY29ubmVjdFRhc2sgbm93IHVzZXMgTmV0d29ya0xvYWQgaW50ZXJuYWxseQorICAg
ICAgICBpbnN0ZWFkIG9mIHVzaW5nIGEgTmV0d29ya0RhdGFUYXNrIGRpcmVjdGx5LgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJlY29ubmVj
dFRvKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpnZW5lcmF0ZUNhbkF1dGhlbnRpY2F0ZUlkZW50aWZpZXIpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25T
cGFjZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjb250aW51ZUNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5l
Y3RUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OlByZWNvbm5lY3RU
YXNrKToKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6On5QcmVjb25uZWN0VGFzayk6
CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OmRpZEZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpQcmVjb25uZWN0VGFzazo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpQcmVjb25uZWN0VGFzazo6ZGlkU2VuZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpQ
cmVjb25uZWN0VGFzazo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5j
KToKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OmNvbnRpbnVlQ2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RU
YXNrOjpmcmFtZUlEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OnBh
Z2VJRCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaDoKKwogMjAxNy0wOS0yOCAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBJbWFnZSBwYXN0aW5n
IGlzIG5vdCB3b3JraW5nIG9uIHRpbmV5ZS5jb20gLyBnbWFpbC5jb20gLyBHaXRIdWIuY29tIGR1
ZSB0byBsYWNrIG9mIHN1cHBvcnQgZm9yIERhdGFUcmFuc2Zlci5pdGVtcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZwppbmRleCBjODE4MGYzYmUzMDgzODU5NGE1MDU4Mzk1YzEyY2NiMTBiYzJmNjM1Li5iN2Y2
ZDgxYmI3MjQ5M2MxMTIwZTZiYzAyNjU5ZTM3NTY4MzFlYzc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTA5LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgaHR0cC90ZXN0cy9wcmVjb25uZWN0L2xpbmstcmVsLXByZWNvbm5l
Y3QtaHR0cHMuaHRtbCBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc3NjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
Y3BwOgorICAgICAgICAoV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwcmVjb25uZWN0VG8pOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oOgorCiAy
MDE3LTA5LTI4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIDxsaW5rIHJlbD1wcmVjb25uZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtM
b2FkZXIuY3BwCmluZGV4IDllM2YyYWE4ZDIzMjNmM2NjMDljMDYyNTZiOTM5Njg4YzJkOWU4MWMu
LmQwMTkyNjZjYTdhYzIxODNjNGJkODZiZjBlZWI2ZjkyOWZhYzA1ZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTI1MywxMiArMjUzLDEyIEBAIGJvb2wgTGlua0xvYWRl
cjo6bG9hZExpbmsoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYgcmVsQXR0cmlidXRlLCBjb25zdCBV
UkwmIGhyZWYsCiAgICAgICAgICAgICBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQo
KS5wcmVmZXRjaEROUyhocmVmLmhvc3QoKSk7CiAgICAgfQogCi0gICAgaWYgKHJlbEF0dHJpYnV0
ZS5pc0xpbmtQcmVjb25uZWN0ICYmIGhyZWYuaXNWYWxpZCgpICYmIGhyZWYucHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgpKSB7CisgICAgaWYgKHJlbEF0dHJpYnV0ZS5pc0xpbmtQcmVjb25uZWN0ICYm
IGhyZWYuaXNWYWxpZCgpICYmIGhyZWYucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmIGRvY3Vt
ZW50LmZyYW1lKCkpIHsKICAgICAgICAgQVNTRVJUKGRvY3VtZW50LnNldHRpbmdzKCkubGlua1By
ZWNvbm5lY3RFbmFibGVkKCkpOwogICAgICAgICBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9y
YWdlQ3JlZGVudGlhbHNQb2xpY3kgPSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOwogICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjcm9zc09yaWdpbiwgImFub255bW91cyIp
ICYmIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzKFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUoaHJlZikpKQogICAgICAgICAgICAgc3RvcmFnZUNyZWRlbnRpYWxzUG9saWN5ID0gU3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlOwotICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+cHJlY29ubmVjdFRvKGRvY3VtZW50LnNlc3Npb25JRCgp
LCBocmVmLCBzdG9yYWdlQ3JlZGVudGlhbHNQb2xpY3ksIFt3ZWFrRG9jdW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVXZWFrUHRyKCksIGhyZWZdKFJlc291cmNlRXJyb3IgZXJyb3IpIHsKKyAgICAgICAg
cGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPnByZWNvbm5lY3RUbyhkb2N1
bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpLCBocmVmLCBzdG9yYWdl
Q3JlZGVudGlhbHNQb2xpY3ksIFt3ZWFrRG9jdW1lbnQgPSBkb2N1bWVudC5jcmVhdGVXZWFrUHRy
KCksIGhyZWZdKFJlc291cmNlRXJyb3IgZXJyb3IpIHsKICAgICAgICAgICAgIGlmICghd2Vha0Rv
Y3VtZW50KQogICAgICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9h
ZGVyU3RyYXRlZ3kuaAppbmRleCA5OGJlZDg0MmVjYWJmYWMxMzk4ZDc5Y2E1OGEzM2VmZDM5OWQy
MjZiLi4yMjY0MzNlOTRjZmFkY2IzNWIxYjE0MWEyYTBjZjc4MWViOWRkNDAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0UGluZ0xvYWQoRnJhbWUmLCBSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBjb25zdCBGZXRjaE9w
dGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYgPSB7IH0pID0gMDsKIAogICAgIHVz
aW5nIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25z
dCBSZXNvdXJjZUVycm9yJik+OwotICAgIHZpcnR1YWwgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0
Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcmVjb25uZWN0VG8o
TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBVUkwmLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwg
UHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBz
dG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBTSEExOjpEaWdlc3QmIGJvZHlLZXksIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXJ0aXRpb24sIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA5NGVjMDBmYjY0
YTQ4NjJlYzBiYTIwMzBhNzg2MzliYTcyZmM4N2YyLi40ZWFlY2Y3OTA5NWNhZTllYzA4YWMzYjFk
NzllZDU4MzMyODgyNjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMjkxLDE1
ICsyOTEsMTUgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJlZmV0Y2hE
TlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKICAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9u
KCkucHJlZmV0Y2hETlMoaG9zdG5hbWUpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJlY29ubmVjdFRvKHVpbnQ2NF90IHByZWNvbm5lY3Rp
b25JZGVudGlmaWVyLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogI2lm
IEVOQUJMRShTRVJWRVJfUFJFQ09OTkVDVCkKLSAgICBuZXcgUHJlY29ubmVjdFRhc2soc2Vzc2lv
bklELCB1cmwsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyID0gcHJlY29ubmVjdGlvbklkZW50aWZpZXJdIChj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgeworICAgIG5ldyBQcmVjb25uZWN0VGFzayhXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBp
ZGVudGlmaWVyID0gcHJlY29ubmVjdGlvbklkZW50aWZpZXJdIChjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikgewogICAgICAgICBkaWRGaW5pc2hQcmVjb25uZWN0aW9uKGlkZW50aWZpZXIsIGVy
cm9yKTsKICAgICB9KTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5KTsKLSAgICBkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHByZWNvbm5lY3Rpb25JZGVudGlm
aWVyLCBpbnRlcm5hbEVycm9yKHVybCkpOworICAgIFVOVVNFRF9QQVJBTShwYXJhbWV0ZXJzKTsK
KyAgICBkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBpbnRl
cm5hbEVycm9yKHBhcmFtZXRlcnMucmVxdWVzdC51cmwoKSkpOwogI2VuZGlmCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAppbmRleCBiMTBkZjU4NWRkNjkwZmM1OGQ0NDhhOTcxNDc5YmU1MjRm
OWYzZDBjLi4zYWVkN2ViNWIxNDY1MmZlYmI5M2NjNjE1YmY4MjJmYTM4YWRiYTNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCkBAIC00Nyw2ICs0Nyw3IEBAIGVudW0gY2xhc3MgSW5jbHVkZVNl
Y3VyZUNvb2tpZXM7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M7CitjbGFzcyBOZXR3b3JrTG9hZFBhcmFtZXRlcnM7CiBjbGFzcyBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBOZXR3b3JrU29ja2V0U3RyZWFtOwogY2xhc3MgU3lu
Y05ldHdvcmtSZXNvdXJjZUxvYWRlcjsKQEAgLTkyLDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHBlcmZvcm1TeW5jaHJvbm91c0xvYWQoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMmLCBSZWY8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJm
b3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYpOwogICAgIHZvaWQgbG9hZFBpbmco
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYm
IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMpOwogICAgIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3Ry
aW5nJik7Ci0gICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBy
ZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSk7CisgICAgdm9pZCBwcmVjb25uZWN0VG8odWludDY0X3QgcHJl
Y29ubmVjdGlvbklkZW50aWZpZXIsIE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmKTsKIAogICAgIHZv
aWQgcmVtb3ZlTG9hZElkZW50aWZpZXIoUmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiAgICAgdm9p
ZCBzZXREZWZlcnNMb2FkaW5nKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGJvb2wpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZTg1ZTk3MzI4MjRkMDI5
YjFiN2VlZGVmMzA5NzNmZDdlMGE3NjZkYi4uYWJmYjMwZmJlZWJmYTlmMGUzYjA0NmM4NTNhNWIy
YjkzMDZlYjAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CkBAIC0yOCw3ICsyOCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZW1vdmVMb2FkSWRlbnRpZmllcih1aW50NjRfdCBy
ZXNvdXJjZUxvYWRJZGVudGlmaWVyKQogICAgIFNldERlZmVyc0xvYWRpbmcodWludDY0X3QgcmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgYm9vbCBkZWZlcnMpCiAgICAgUHJlZmV0Y2hETlMoU3RyaW5n
IGhvc3RuYW1lKQotICAgIFByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwgdXJsLCBlbnVtIFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsK
KyAgICBQcmVjb25uZWN0VG8odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpOwogCiAgICAg
U3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJ
RCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1
Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIs
IFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCA2Mjg3M2U0YTI0NTAxYmRhNTIx
OTI1OTYzN2Q1YTljMWZiZDc1Yzg3Li5kNjk3Mjk4ZGExNjkyMzM1YTQwYWJkYzBkZGFmMDY3ZDQz
ZGE3NDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCkBA
IC02Nyw2ICs2Nyw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIGN1cnJlbnRSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50UmVxdWVzdDsgfQog
ICAgIHZvaWQgY2xlYXJDdXJyZW50UmVxdWVzdCgpIHsgbV9jdXJyZW50UmVxdWVzdCA9IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCgpOyB9CiAKKyAgICBjb25zdCBOZXR3b3JrTG9hZFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KKwogICAgIHZv
aWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwog
ICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBkNDZjNmYzYjA3NTk0
ZWFlMmZjZTYwYTdiNzIzM2I0YTUxYjZjMDRmLi41YTIxYzEzMGQ1ZTBmYmEzYTU2Mjc5OGYyOWI1
MzBjMGVjMGQ4ZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcApAQCAtNTA1LDE4ICs1MDUsNDIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
Y2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElEKQogfQogICAgIAogI2lmIFVTRShQ
Uk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYg
bG9hZGVyLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkK
K3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUNhbkF1dGhlbnRpY2F0ZUlkZW50aWZpZXIoKQogewog
ICAgIHN0YXRpYyB1aW50NjRfdCBsYXN0TG9hZGVySUQgPSAwOwotICAgIHVpbnQ2NF90IGxvYWRl
cklEID0gKytsYXN0TG9hZGVySUQ7Ci0gICAgbV93YWl0aW5nTmV0d29ya1Jlc291cmNlTG9hZGVy
cy5zZXQobGFzdExvYWRlcklELCBsb2FkZXIpOworICAgIHJldHVybiArK2xhc3RMb2FkZXJJRDsK
K30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZShOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgV2ViQ29yZTo6UHJv
dGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCit7CisgICAgdWludDY0X3QgbG9hZGVySUQg
PSBnZW5lcmF0ZUNhbkF1dGhlbnRpY2F0ZUlkZW50aWZpZXIoKTsKKyAgICBtX3dhaXRpbmdOZXR3
b3JrUmVzb3VyY2VMb2FkZXJzLnNldChsb2FkZXJJRCwgbG9hZGVyKTsKICAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpDYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGxvYWRlcklELCBsb2FkZXIucGFnZUlE
KCksIGxvYWRlci5mcmFtZUlEKCksIHByb3RlY3Rpb25TcGFjZSksIDApOwogfQogCisjaWYgRU5B
QkxFKFNFUlZFUl9QUkVDT05ORUNUKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShQcmVjb25uZWN0VGFzayYgcHJlY29ubmVjdFRhc2ss
IGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQoreworICAg
IHVpbnQ2NF90IGxvYWRlcklEID0gZ2VuZXJhdGVDYW5BdXRoZW50aWNhdGVJZGVudGlmaWVyKCk7
CisgICAgbV93YWl0aW5nUHJlY29ubmVjdFRhc2tzLnNldChsb2FkZXJJRCwgcHJlY29ubmVjdFRh
c2suY3JlYXRlV2Vha1B0cigpKTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKGxvYWRlcklELCBwcmVjb25uZWN0VGFzay5wYWdlSUQoKSwgcHJlY29ubmVj
dFRhc2suZnJhbWVJRCgpLCBwcm90ZWN0aW9uU3BhY2UpLCAwKTsKK30KKyNlbmRpZgorCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UodWludDY0X3QgbG9hZGVySUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKQogewotICAgIG1f
d2FpdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShsb2FkZXJJRCkudmFsdWUoKS0+Y29u
dGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNhbkF1dGhlbnRpY2F0
ZSk7CisgICAgaWYgKGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBtX3dhaXRpbmdOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXJzLnRha2UobG9hZGVySUQpKSB7CisgICAgICAgIHJlc291cmNlTG9hZGVyLnZhbHVl
KCktPmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjYW5BdXRo
ZW50aWNhdGUpOworICAgICAgICByZXR1cm47CisgICAgfQorI2lmIEVOQUJMRShTRVJWRVJfUFJF
Q09OTkVDVCkKKyAgICBpZiAoYXV0byBwcmVjb25uZWN0VGFzayA9IG1fd2FpdGluZ1ByZWNvbm5l
Y3RUYXNrcy50YWtlKGxvYWRlcklEKSkgeworICAgICAgICBwcmVjb25uZWN0VGFzay0+Y29udGlu
dWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNhbkF1dGhlbnRpY2F0ZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKIH0KKwogI2VuZGlmCiAKICNpZiBVU0Uo
TkVUV09SS19TRVNTSU9OKQpAQCAtNzI5LDcgKzc1MywxMyBAQCBTdHJpbmcgTmV0d29ya1Byb2Nl
c3M6OmNhY2hlU3RvcmFnZURpcmVjdG9yeShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIGNvbnN0
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8oY29uc3QgV2ViQ29yZTo6VVJMJiB1
cmwsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5KQogewogI2lmIEVOQUJMRShTRVJWRVJfUFJFQ09OTkVDVCkKLSAgICBuZXcgUHJlY29ubmVj
dFRhc2soUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgdXJsLCBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSk7CisgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Cisg
ICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgdXJsIH07CisgICAgcGFy
YW1ldGVycy5zZXNzaW9uSUQgPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwor
ICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeTsKKyAgICBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5ID0gUHJlY29ubmVj
dE9ubHk6OlllczsKKworICAgIG5ldyBQcmVjb25uZWN0VGFzayhXVEZNb3ZlKHBhcmFtZXRlcnMp
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHVybCk7CiAgICAgVU5VU0VEX1BBUkFNKHN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAppbmRleCBiOWZhNzIwODRjNDgwOTUxMjc0YWY5YTQxNDdiZWViMDU3MWI4
YjU2Li4yNGY0YTBlODZmZjlmNmQxNWNlMzc5NmE0ZWM3YzAwYjc5YWMxODJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zNyw2ICszNyw3
IEBACiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgIldlYlNRTGl0
ZURhdGFiYXNlVHJhY2tlci5oIgpAQCAtNjAsNiArNjEsOSBAQCBjbGFzcyBVUkw7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgQXV0aGVudGljYXRpb25NYW5hZ2VyOworI2lmIEVOQUJMRShT
RVJWRVJfUFJFQ09OTkVDVCkKK2NsYXNzIFByZWNvbm5lY3RUYXNrOworI2VuZGlmCiBjbGFzcyBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzU3VwcGxl
bWVudDsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKQEAgLTEyMyw2ICsxMjcsOSBAQCBw
dWJsaWM6CiAKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogICAgIHZv
aWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShOZXR3b3JrUmVzb3VyY2VM
b2FkZXImLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKTsKKyNpZiBFTkFCTEUoU0VS
VkVSX1BSRUNPTk5FQ1QpCisgICAgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlKFByZWNvbm5lY3RUYXNrJiwgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJik7
CisjZW5kaWYKICNlbmRpZgogCiAgICAgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmKTsK
QEAgLTI0OCw2ICsyNTUsOSBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgRnVu
Y3Rpb248dm9pZCAoKT4+IG1fc2FuZGJveEV4dGVuc2lvbkZvckJsb2JzQ29tcGxldGlvbkhhbmRs
ZXJzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+PiBt
X3dhaXRpbmdOZXR3b3JrUmVzb3VyY2VMb2FkZXJzOworI2lmIEVOQUJMRShTRVJWRVJfUFJFQ09O
TkVDVCkKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXZWFrUHRyPFByZWNvbm5lY3RUYXNrPj4gbV93
YWl0aW5nUHJlY29ubmVjdFRhc2tzOworI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29uc3QgTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAK
aW5kZXggNzE3YmY4ODJlZDQwMWMxZGJlZDRhNTc1YWU1YWRhOTQyMzM5YzNkNC4uZTk2MzU3NjJi
NjVmNTMyNDEyZmJlZmRkMTEzNzRkY2QzYTU0OTVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5jcHAKQEAgLTc2LDYgKzc2LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
czo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyLmVuY29k
ZUVudW0oY29udGVudFNuaWZmaW5nUG9saWN5KTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0oc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShjbGllbnRDcmVk
ZW50aWFsUG9saWN5KTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0oc2hvdWxkUHJlY29ubmVjdE9u
bHkpOwogICAgIGVuY29kZXIgPDwgc2hvdWxkRm9sbG93UmVkaXJlY3RzOwogICAgIGVuY29kZXIg
PDwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdDsKICAgICBlbmNvZGVy
IDw8IGRlZmVyc0xvYWRpbmc7CkBAIC0xNDQsNiArMTQ1LDggQEAgYm9vbCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Jl
c291cmMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVt
KHJlc3VsdC5jbGllbnRDcmVkZW50aWFsUG9saWN5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3VsdC5zaG91bGRQcmVjb25uZWN0T25seSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5z
aG91bGRGb2xsb3dSZWRpcmVjdHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRp
cmVjdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5l
Y3RUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2su
Y3BwCmluZGV4IGNhODkzMzQwMTM2YTk1MTAyMjQzYTY5YWNiZGVkNDk0YWRmY2RjNTQuLjJlMTBi
ODc4NWI1YTM5ZGFjY2ZhNjEwZmZjOTgzNjM4NDg5ZGVjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC0yOCwxMDAgKzI4LDgyIEBA
CiAKICNpZiBFTkFCTEUoU0VSVkVSX1BSRUNPTk5FQ1QpCiAKLSNpbmNsdWRlICJBdXRoZW50aWNh
dGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0xv
YWQuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlICJOZXR3
b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiU2Vz
c2lvblRyYWNrZXIuaCIKLSNpbmNsdWRlICJXZWJFcnJvcnMuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVy
cm9yLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2tD
b2NvYS5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAotUHJlY29ubmVjdFRhc2s6OlByZWNvbm5lY3RUYXNrKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorUHJl
Y29ubmVjdFRhc2s6OlByZWNvbm5lY3RUYXNrKE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZUVycm9yJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKQotICAgICwgbV90aW1lb3V0VGltZXIoW3RoaXNdIHsgZGlkRmlu
aXNoKFJlc291cmNlRXJyb3IgeyBTdHJpbmcoKSwgMCwgbV90YXNrLT5maXJzdFJlcXVlc3QoKS51
cmwoKSwgQVNDSUlMaXRlcmFsKCJQcmVjb25uZWN0aW9uIHRpbWVkIG91dCIpLCBSZXNvdXJjZUVy
cm9yOjpUeXBlOjpUaW1lb3V0IH0pOyB9KQorICAgICwgbV90aW1lb3V0VGltZXIoW3RoaXNdIHsg
ZGlkRmluaXNoKFJlc291cmNlRXJyb3IgeyBTdHJpbmcoKSwgMCwgbV9uZXR3b3JrTG9hZC0+cGFy
YW1ldGVycygpLnJlcXVlc3QudXJsKCksIEFTQ0lJTGl0ZXJhbCgiUHJlY29ubmVjdGlvbiB0aW1l
ZCBvdXQiKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6VGltZW91dCB9KTsgfSkKIHsKLSAgICBhdXRv
KiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpuZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpOworICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFByZWNvbm5lY3RUYXNrOjpQcmVj
b25uZWN0VGFzaygpIiwgdGhpcyk7CisKKyAgICBhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Np
b25UcmFja2VyOjpuZXR3b3JrU2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCk7CiAgICAgQVNT
RVJUKG5ldHdvcmtTZXNzaW9uKTsKIAotICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFBy
ZWNvbm5lY3RUYXNrOjpQcmVjb25uZWN0VGFzaygpIiwgdGhpcyk7Ci0gICAgTmV0d29ya0xvYWRQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gUmVzb3VyY2VS
ZXF1ZXN0KHVybCk7Ci0gICAgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9IFByZWNv
bm5lY3RPbmx5OjpZZXM7Ci0gICAgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5OwotICAgIG1fdGFzayA9IE5ldHdvcmtEYXRhVGFzazo6
Y3JlYXRlKCpuZXR3b3JrU2Vzc2lvbiwgKnRoaXMsIHBhcmFtZXRlcnMpOwotICAgIG1fdGFzay0+
cmVzdW1lKCk7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPT0g
UHJlY29ubmVjdE9ubHk6Olllcyk7CisgICAgbV9uZXR3b3JrTG9hZCA9IHN0ZDo6bWFrZV91bmlx
dWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Np
b24pOwogCiAgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KDYwMDAwX3MpOwogfQogCiBQ
cmVjb25uZWN0VGFzazo6flByZWNvbm5lY3RUYXNrKCkKIHsKLSAgICBBU1NFUlQobV90YXNrLT5j
bGllbnQoKSA9PSB0aGlzKTsKLSAgICBtX3Rhc2stPmNsZWFyQ2xpZW50KCk7Ci0gICAgbV90YXNr
LT5jYW5jZWwoKTsKIH0KIAotdm9pZCBQcmVjb25uZWN0VGFzazo6d2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKQordm9pZCBQcmVjb25uZWN0VGFz
azo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBQcmVjb25uZWN0
VGFzazo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgY2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQorYXV0byBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UmJikgLT4gU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UKIHsKLSAg
ICBpZiAoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkg
PT0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVTZXJ2ZXJUcnVzdEV2YWx1YXRp
b25SZXF1ZXN0ZWQpIHsKLSAgICAgICAgaWYgKG1fdGFzayAmJiBtX3Rhc2stPmFsbG93c1NwZWNp
ZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY2hhbGxlbmdlKSkKLSAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRl
bnRpYWwsIHNlcnZlclRydXN0Q3JlZGVudGlhbChjaGFsbGVuZ2UpKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlLCB7IH0pOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTaG91bGRDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZTo6Tm87CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJl
Y2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKQordm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBQcmVjb25uZWN0
VGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQg
UHJlY29ubmVjdFRhc2s6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBSRUxFQVNFX0xPRyhOZXR3b3Jr
LCAiJXAgLSBQcmVjb25uZWN0VGFzazo6ZGlkRmluaXNoTG9hZGluZyIsIHRoaXMpOworICAgIGRp
ZEZpbmlzaCh7IH0pOwogfQogCi12b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRDb21wbGV0ZVdpdGhF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgV2ViQ29yZTo6
TmV0d29ya0xvYWRNZXRyaWNzJikKK3ZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZEZhaWxMb2FkaW5n
KGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGlmIChlcnJvci5pc051bGwoKSkK
LSAgICAgICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gUHJlY29ubmVjdFRhc2s6OmRpZENv
bXBsZXRlIiwgdGhpcyk7Ci0gICAgZWxzZQotICAgICAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAi
JXAgLSBQcmVjb25uZWN0VGFzazo6ZGlkQ29tcGxldGVXaXRoRXJyb3IsIGVycm9yX2NvZGU6ICVk
IiwgdGhpcywgZXJyb3IuZXJyb3JDb2RlKCkpOwotCisgICAgUkVMRUFTRV9MT0coTmV0d29yaywg
IiVwIC0gUHJlY29ubmVjdFRhc2s6OmRpZEZhaWxMb2FkaW5nLCBlcnJvcl9jb2RlOiAlZCIsIHRo
aXMsIGVycm9yLmVycm9yQ29kZSgpKTsKICAgICBkaWRGaW5pc2goZXJyb3IpOwogfQogCi12b2lk
IFByZWNvbm5lY3RUYXNrOjpkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWlu
dDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKQordm9pZCBQcmVjb25uZWN0VGFzazo6ZGlk
U2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25n
IHRvdGFsQnl0ZXNUb0JlU2VudCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAot
dm9pZCBQcmVjb25uZWN0VGFzazo6d2FzQmxvY2tlZCgpCit2b2lkIFByZWNvbm5lY3RUYXNrOjpj
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoY29uc3QgUHJvdGVjdGlv
blNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0gICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVw
IC0gUHJlY29ubmVjdFRhc2s6Ondhc0Jsb2NrZWQoKSIsIHRoaXMpOwotICAgIGRpZEZpbmlzaChi
bG9ja2VkRXJyb3IobV90YXNrLT5maXJzdFJlcXVlc3QoKSkpOworICAgIGlmICghcGFnZUlEKCkp
IHsKKyAgICAgICAgLy8gVGhlIHByZWNvbm5lY3Qgd2FzIHN0YXJ0ZWQgYnkgdGhlIFVJUHJvY2Vz
cy4KKyAgICAgICAgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBOZXR3b3JrUHJvY2Vzczo6c2lu
Z2xldG9uKCkuY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSgqdGhpcywgcHJv
dGVjdGlvblNwYWNlKTsKIH0KIAotdm9pZCBQcmVjb25uZWN0VGFzazo6Y2Fubm90U2hvd1VSTCgp
Cit2b2lkIFByZWNvbm5lY3RUYXNrOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2UoYm9vbCByZXN1bHQpCiB7Ci0gICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVw
IC0gUHJlY29ubmVjdFRhc2s6OmNhbm5vdFNob3dVUkwoKSIsIHRoaXMpOwotICAgIGRpZEZpbmlz
aChjYW5ub3RTaG93VVJMRXJyb3IobV90YXNrLT5maXJzdFJlcXVlc3QoKSkpOworICAgIG1fbmV0
d29ya0xvYWQtPmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShy
ZXN1bHQpOwogfQogCiB2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRGaW5pc2goY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCkBAIC0xMzEsNiArMTEzLDE2IEBAIHZvaWQgUHJlY29ubmVjdFRhc2s6
OmRpZEZpbmlzaChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBkZWxldGUgdGhpczsK
IH0KIAordWludDY0X3QgUHJlY29ubmVjdFRhc2s6OmZyYW1lSUQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX25ldHdvcmtMb2FkLT5wYXJhbWV0ZXJzKCkud2ViRnJhbWVJRDsKK30KKwordWludDY0
X3QgUHJlY29ubmVjdFRhc2s6OnBhZ2VJRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbmV0d29y
a0xvYWQtPnBhcmFtZXRlcnMoKS53ZWJQYWdlSUQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCmluZGV4IGJmOWUzOTVlODFlYjEyOTI1
ZTJiODVkODgzMDI1N2IwYTk2YzYxMmIuLjg5ZWFiYWJiNTQwOWJmOTljMTFiY2IyMWE1ZTU4OWRh
ZDkwYWQ1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29u
bmVjdFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmgKQEAgLTI3LDM3ICsyNyw0NSBAQAogCiAjaWYgRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNU
KQogCi0jaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCisjaW5jbHVkZSAiTmV0d29ya0xvYWRD
bGllbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+Ci0KLW5hbWVzcGFjZSBQQUwgewotY2xhc3MgU2Vzc2lvbklEOwotfQor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBQ
cmVjb25uZWN0VGFzayBmaW5hbCA6IHByaXZhdGUgTmV0d29ya0RhdGFUYXNrQ2xpZW50IHsKK2Ns
YXNzIE5ldHdvcmtMb2FkOworY2xhc3MgTmV0d29ya0xvYWRQYXJhbWV0ZXJzOworCitjbGFzcyBQ
cmVjb25uZWN0VGFzayBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrTG9hZENsaWVudCB7CiBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgUHJlY29ubmVjdFRhc2soUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyID0geyB9KTsKKyAgICBleHBsaWNpdCBQcmVjb25uZWN0VGFzayhOZXR3b3JrTG9h
ZFBhcmFtZXRlcnMmJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IHsgfSk7CiAgICAgflByZWNv
bm5lY3RUYXNrKCk7CiAKKyAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3Q7CisgICAgdWludDY0
X3QgcGFnZUlEKCkgY29uc3Q7CisKKyAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZShib29sKTsKKworICAgIFdlYWtQdHI8UHJlY29ubmVjdFRhc2s+
IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRo
aXMpOyB9CisKIHByaXZhdGU6Ci0gICAgLy8gTmV0d29ya0RhdGFUYXNrQ2xpZW50LgotICAgIHZv
aWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5h
bDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OwotICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwotICAgIHZv
aWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0
ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7Ci0gICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7Ci0g
ICAgdm9pZCBjYW5ub3RTaG93VVJMKCkgZmluYWw7CisgICAgLy8gTmV0d29ya0xvYWRDbGllbnQu
CisgICAgYm9vbCBpc1N5bmNocm9ub3VzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsOworICAgIHZvaWQgY2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKGNvbnN0IFdlYkNvcmU6OlByb3Rl
Y3Rpb25TcGFjZSYpIGZpbmFsOworICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVk
aXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSkgZmluYWw7CisgICAgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJikgZmluYWw7CisgICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBkaWRGYWls
TG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKICAgICB2b2lk
IGRpZEZpbmlzaChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKLSAgICBSZWZQdHI8
TmV0d29ya0RhdGFUYXNrPiBtX3Rhc2s7CisgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2Fk
PiBtX25ldHdvcmtMb2FkOwogICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiAgICAgV2ViQ29y
ZTo6VGltZXIgbV90aW1lb3V0VGltZXI7CisgICAgV2Vha1B0ckZhY3Rvcnk8UHJlY29ubmVjdFRh
c2s+IG1fd2Vha0ZhY3Rvcnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cAppbmRleCA3NmYxODY2NzVkZDliZWIwZjc4MDRkMWRjMDk5NjQ1MGI1ZTg2MDU5Li5iZDcwODM5
YTNiNmE4ZjQ5MWNmNjcxNWMwNGNmNmE0MGE3OWVjYzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC00NjMs
MTIgKzQ2MywyNiBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpkaWRGaW5pc2hQaW5nTG9hZCh1
aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIsIFJlc291cmNlRQogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGVycm9yKSk7CiB9CiAKLXZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnBy
ZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
dXJsLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJl
Y29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkxv
YWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgdWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIgPSBnZW5lcmF0
ZUxvYWRJZGVudGlmaWVyKCk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3ByZWNvbm5lY3RDb21w
bGV0aW9uSGFuZGxlcnMuYWRkKHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UHJlY29ubmVjdFRvKHNlc3Npb25JRCwgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIHVy
bCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpLCAwKTsKKworICAgIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQqIHdlYkNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0Kj4oY29udGV4dCk7CisgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVy
Q2xpZW50ID0gd2ViQ29udGV4dC0+d2ViRnJhbWVMb2FkZXJDbGllbnQoKTsKKyAgICBXZWJGcmFt
ZSogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50
LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gd2ViRnJhbWUg
PyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKKworICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gUmVzb3VyY2VS
ZXF1ZXN0IHsgdXJsIH07CisgICAgcGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdlID8gd2Vi
UGFnZS0+cGFnZUlEKCkgOiAwOworICAgIHBhcmFtZXRlcnMud2ViRnJhbWVJRCA9IHdlYkZyYW1l
ID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6IDA7CisgICAgcGFyYW1ldGVycy5zZXNzaW9uSUQgPSB3
ZWJQYWdlID8gd2ViUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpOworICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeTsKKyAgICBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5
ID0gUHJlY29ubmVjdE9ubHk6OlllczsKKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5l
dHdvcmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpQcmVjb25uZWN0VG8ocHJlY29ubmVjdGlvbklkZW50aWZpZXIs
IFdURk1vdmUocGFyYW1ldGVycykpLCAwKTsKIH0KIAogdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
ZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwg
UmVzb3VyY2VFcnJvciYmIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKaW5kZXggNzI1NmI1ZDM3MzA3ODJmZmI5NTVl
YWNmNDE2OWFkMGRiNTlkMmVkOS4uOTk5NWE1MmE2NDJjODg1ZTczNDcyYTllZGJkNTBjNzZlMGY4
NGQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJM
b2FkZXJTdHJhdGVneS5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0
UGluZ0xvYWQoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBjb25zdCBX
ZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG8oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9p
ZCBwcmVjb25uZWN0VG8oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoUHJlY29ubmVjdGlvbih1
aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYm
KTsKIAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0
JiBib2R5SGFzaCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhcnRpdGlvbiwg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5j
cHAKaW5kZXggNzk3NWJkM2VhMzU5ZGU5ZGU2NjAyNTdjZWJkZDZhNjg2MDBhOTg3My4uOTAzNjk2
MTQxNjgwNWI3NTE5ODg2NGJmZDBjNmJlYzk1Y2MxOTMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcApAQCAtMzY5LDcgKzM2OSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyOjpzdGFydFBpbmdMb2FkKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1CiAg
ICAgbmV3IFBpbmdIYW5kbGUoZnJhbWUubG9hZGVyKCkubmV0d29ya2luZ0NvbnRleHQoKSwgcmVx
dWVzdCwgb3B0aW9ucy5jcmVkZW50aWFscyAhPSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpP
bWl0LCBQaW5nSGFuZGxlOjpVc2VzQXN5bmNDYWxsYmFja3M6Ok5vLCBvcHRpb25zLnJlZGlyZWN0
ID09IEZldGNoT3B0aW9uczo6UmVkaXJlY3Q6OkZvbGxvdywgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cHJlY29ubmVjdFRv
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJl
Y29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpCit2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxl
cjo6cHJlY29ubmVjdFRvKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgVVJMJiwgU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYmKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNl
TG9hZFNjaGVkdWxlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCBlY2ZjMWNmYjM1ZWRlYzRlMzRjOGI2ZTY2Nzk1
YmM2NDhmNWIxZTcxLi5iNDYzMWQ0NmJlZWY4MzJjNmM3ZjBlNTIyNTE3YTNmNGExODhhMmQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNl
TG9hZFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQv
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzdGFydFBpbmdMb2FkKFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYsIGNvbnN0IFdlYkNvcmU6OkZl
dGNoT3B0aW9ucyYsIFBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAKLSAgICB2
b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpOZXR3b3JraW5nQ29u
dGV4dCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAKICAgICB2b2lkIHN0
b3JlRGVyaXZlZERhdGFUb0NhY2hlKGNvbnN0IFNIQTE6OkRpZ2VzdCYsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsIHsgfQogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggM2M4ZjFmYjZiYTY1OTA3MGY3MmE4YzMyOTE0OWIwOWIyYTMyZTE0NS4uNzcyM2U3ZDk2MDM1
YWUxYjgwNWJkM2IyMDMwODFjMDk5YjRjOTQ3OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE4IEBACiAyMDE3
LTA5LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgaHR0cC90
ZXN0cy9wcmVjb25uZWN0L2xpbmstcmVsLXByZWNvbm5lY3QtaHR0cHMuaHRtbCBpcyBmbGFreQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NjczCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3ByZWNvbm5lY3QvbGluay1yZWwtcHJlY29ubmVjdC1odHRwcy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgIFJlYmFzZWxpbmUgdGVzdCBub3cgdGhhdCBpdCBpcyBwYXNzaW5nLgorCisgICAgICAg
ICogcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgIFVza2lwIHRlc3QgYXMg
aXQgc2hvdWxkIG5vIGxvbmdlciBiZSBmbGFreS4KKworMjAxNy0wOS0yOSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFVucmV2aWV3ZWQsIHRlbXBvcmFyaWx5IG1h
cmsgaHR0cC90ZXN0cy9wcmVjb25uZWN0L2xpbmstcmVsLXByZWNvbm5lY3QtaHR0cHMuaHRtbCBh
cyBmbGFreS4KIAogICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcmVjb25uZWN0L2xpbmstcmVsLXByZWNv
bm5lY3QtaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcmVjb25u
ZWN0L2xpbmstcmVsLXByZWNvbm5lY3QtaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDNjMTRlMjMz
Zjc3OGNmMWY4M2FkMGZhYTFjZDI3ZmRkMmVjM2ZhNDguLjdkMWU0NzgxOTYxMjgyZDY3Y2M3NDM0
NTg0MzgyOTgzYTczZmM3ZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJl
Y29ubmVjdC9saW5rLXJlbC1wcmVjb25uZWN0LWh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3ByZWNvbm5lY3QvbGluay1yZWwtcHJlY29ubmVjdC1odHRwcy1l
eHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6IEZhaWxlZCB0byBw
cmVjb25uZWN0IHRvIGh0dHBzOi8vbG9jYWxob3N0Ojg0NDMvLiBFcnJvcjogVGhlIGNlcnRpZmlj
YXRlIGZvciB0aGlzIHNlcnZlciBpcyBpbnZhbGlkLiBZb3UgbWlnaHQgYmUgY29ubmVjdGluZyB0
byBhIHNlcnZlciB0aGF0IGlzIHByZXRlbmRpbmcgdG8gYmUg4oCcbG9jYWxob3N04oCdIHdoaWNo
IGNvdWxkIHB1dCB5b3VyIGNvbmZpZGVudGlhbCBpbmZvcm1hdGlvbiBhdCByaXNrLgorQ09OU09M
RSBNRVNTQUdFOiBTdWNjZXNzZnVseSBwcmVjb25uZWN0ZWQgdG8gaHR0cHM6Ly9sb2NhbGhvc3Q6
ODQ0My8KIFRlc3RzIHRoYXQgTGluaydzIHJlbD1wcmVjb25uZWN0IHdvcmtzIGFzIGV4cGVjdGVk
IG92ZXIgSFRUUFMuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMjM4ZTg2ZWJjMTE4NWM2ZjgxZDQ0ZTMx
ZDA4Yzc5ZDJkOWRlZjlmMy4uYzYzNTBlZjdkMmEyZDBiOWYzNmJhZjZiMWM1ZmRiMzAzMDA5MGE5
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTcxMiw3
ICs3MTIsNSBAQCB3ZWJraXQub3JnL2IvMTc0NDcxIHdlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRp
ZGF0ZS1hZnRlci1yZWxvYWQuaHRtbCBbIFBhc3MgVGltZQogCiB3ZWJraXQub3JnL2IvMTc1Njc4
IG1lZGlhL1czQy92aWRlby9ldmVudHMvZXZlbnRfcHJvZ3Jlc3MuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCiAKLXdlYmtpdC5vcmcvYi8xNzc2NzMgaHR0cC90ZXN0cy9wcmVjb25uZWN0L2xpbmstcmVs
LXByZWNvbm5lY3QtaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8x
Nzc0NDAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdp
bi9yZWxheGluZy10aGUtc2FtZS1vcmlnaW4tcmVzdHJpY3Rpb24vZG9jdW1lbnRfZG9tYWluX3Nl
dHRlcl9udWxsLnRlbnRhdGl2ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322241</attachid>
            <date>2017-09-29 15:10:19 -0700</date>
            <delta_ts>2017-09-29 16:54:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177673-20170929151018.patch</filename>
            <type>text/plain</type>
            <size>34399</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzdkMDAzOWI1Y2I4Nzk0
NTdhMDM5ZDY0NTg5Y2JkN2NiMzc4ZDExYi4uMDM5ZmI5NmM2NjhiNGI4Y2JkMWM2MTQwMGY4NmIz
N2EzODQ1ZDlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA5LTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgaHR0cC90ZXN0cy9wcmVjb25u
ZWN0L2xpbmstcmVsLXByZWNvbm5lY3QtaHR0cHMuaHRtbCBpcyBmbGFreQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NjczCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB1bnNraXBw
ZWQgdGVzdCB0aGF0IGlzIG5vdyBwYXNzaW5nIGNvbnNpc3RlbnRseS4KKworICAgICAgICAqIGxv
YWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmxvYWRM
aW5rKToKKyAgICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaDoKKwogMjAxNy0wOS0yOSAg
QmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29ueS5jb20+CiAKICAgICAgICAgW0N1cmxd
IEV4dHJhY3QgYSBmZWF0dXJlcyB0byBtYW5hZ2UgSFRUUCBjb21tdW5pY2F0aW9uIGZyb20gUmVz
b3VyY2VIYW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMWM1MzQ3NThjZjBiZWFjNzc0Yzc1ODZhMDAyYTcwNjRi
MDE1MjMyNS4uOWFmZGMwMmM0MzY0MWNjM2RkM2EwNmMxOGM2NGE4MDRmNjYyNmRhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsNSArMSw1MiBAQAogMjAxNy0wOS0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCisgICAgICAgIGh0dHAvdGVzdHMvcHJlY29ubmVjdC9saW5rLXJlbC1wcmVjb25u
ZWN0LWh0dHBzLmh0bWwgaXMgZmxha3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NzY3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZSBQcmVjb25uZWN0VGFzayB0byBxdWVyeSB0aGUgY2xpZW50
IHdoZW4gYSBjZXJ0aWZpY2F0ZSBuZWVkcyB0byBiZQorICAgICAgICB2YWxpZGF0ZWQuIFRoaXMg
YWxsb3dzIFdlYktpdFRlc3RSdW5uZXIgdG8gaWdub3JlIGludmFsaWQgY2VydGlmaWNhdGVzCisg
ICAgICAgIGFuZCB0aGlzIGNhdXNlcyBodHRwL3Rlc3RzL3ByZWNvbm5lY3QvbGluay1yZWwtcHJl
Y29ubmVjdC1odHRwcy5odG1sCisgICAgICAgIHRvIHBhc3MgY29uc2lzdGVudGx5LgorCisgICAg
ICAgIFRvIGF2b2lkIGR1cGxpY2F0aW5nIGNvZGUsIFByZWNvbm5lY3RUYXNrIG5vdyB1c2VzIE5l
dHdvcmtMb2FkIGludGVybmFsbHkKKyAgICAgICAgaW5zdGVhZCBvZiB1c2luZyBhIE5ldHdvcmtE
YXRhVGFzayBkaXJlY3RseS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnByZWNvbm5lY3RUbyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVDYW5BdXRoZW50aWNh
dGVJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBy
ZWNvbm5lY3RUYXNrOjpQcmVjb25uZWN0VGFzayk6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5l
Y3RUYXNrOjp+UHJlY29ubmVjdFRhc2spOgorICAgICAgICAoV2ViS2l0OjpQcmVjb25uZWN0VGFz
azo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5l
Y3RUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpQcmVjb25uZWN0
VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNr
OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OmRp
ZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OmRpZFNlbmRE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OmNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RU
YXNrOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOgorICAg
ICAgICAoV2ViS2l0OjpQcmVjb25uZWN0VGFzazo6ZnJhbWVJRCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjpwYWdlSUQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1ByZWNvbm5lY3RUYXNrLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6
OnByZWNvbm5lY3RUbyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5Lmg6CisKKzIwMTctMDktMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KwogICAgICAgICBbV0syXVtORVRXT1JLX1NFU1NJT05dIE1vdmUgc29tZSBhdXRoZW50aWNhdGlv
bi1yZWxhdGVkIGNvZGUgdG8gYXZvaWQgZHVwbGljYXRpb24KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzY2NwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmlu
ZGV4IGM4MTgwZjNiZTMwODM4NTk0YTUwNTgzOTVjMTJjY2IxMGJjMmY2MzUuLmI3ZjZkODFiYjcy
NDkzYzExMjBlNmJjMDI2NTllMzc1NjgzMWVjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTctMDktMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBodHRwL3Rlc3RzL3ByZWNvbm5lY3QvbGluay1yZWwtcHJlY29ubmVjdC1odHRw
cy5odG1sIGlzIGZsYWt5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzc2NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6Cisg
ICAgICAgIChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnByZWNvbm5lY3RUbyk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6CisKIDIwMTctMDkt
MjggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgPGxpbmsgcmVsPXByZWNvbm5lY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5j
cHAKaW5kZXggOWUzZjJhYThkMjMyM2YzY2MwOWMwNjI1NmI5Mzk2ODhjMmQ5ZTgxYy4uZDAxOTI2
NmNhN2FjMjE4M2M0YmQ4NmJmMGVlYjZmOTI5ZmFjMDVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
aW5rTG9hZGVyLmNwcApAQCAtMjUzLDEyICsyNTMsMTIgQEAgYm9vbCBMaW5rTG9hZGVyOjpsb2Fk
TGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFVSTCYgaHJl
ZiwKICAgICAgICAgICAgIGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLnByZWZl
dGNoRE5TKGhyZWYuaG9zdCgpKTsKICAgICB9CiAKLSAgICBpZiAocmVsQXR0cmlidXRlLmlzTGlu
a1ByZWNvbm5lY3QgJiYgaHJlZi5pc1ZhbGlkKCkgJiYgaHJlZi5wcm90b2NvbElzSW5IVFRQRmFt
aWx5KCkpIHsKKyAgICBpZiAocmVsQXR0cmlidXRlLmlzTGlua1ByZWNvbm5lY3QgJiYgaHJlZi5p
c1ZhbGlkKCkgJiYgaHJlZi5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgZG9jdW1lbnQuZnJh
bWUoKSkgewogICAgICAgICBBU1NFUlQoZG9jdW1lbnQuc2V0dGluZ3MoKS5saW5rUHJlY29ubmVj
dEVuYWJsZWQoKSk7CiAgICAgICAgIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JhZ2VDcmVk
ZW50aWFsc1BvbGljeSA9IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U7CiAgICAgICAgIGlm
IChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNyb3NzT3JpZ2luLCAiYW5vbnltb3VzIikgJiYgZG9j
dW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3MoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSho
cmVmKSkpCiAgICAgICAgICAgICBzdG9yYWdlQ3JlZGVudGlhbHNQb2xpY3kgPSBTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTo6RG9Ob3RVc2U7Ci0gICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5s
b2FkZXJTdHJhdGVneSgpLT5wcmVjb25uZWN0VG8oZG9jdW1lbnQuc2Vzc2lvbklEKCksIGhyZWYs
IHN0b3JhZ2VDcmVkZW50aWFsc1BvbGljeSwgW3dlYWtEb2N1bWVudCA9IGRvY3VtZW50LmNyZWF0
ZVdlYWtQdHIoKSwgaHJlZl0oUmVzb3VyY2VFcnJvciBlcnJvcikgeworICAgICAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+cHJlY29ubmVjdFRvKGRvY3VtZW50LmZy
YW1lKCktPmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCksIGhyZWYsIHN0b3JhZ2VDcmVkZW50
aWFsc1BvbGljeSwgW3dlYWtEb2N1bWVudCA9IGRvY3VtZW50LmNyZWF0ZVdlYWtQdHIoKSwgaHJl
Zl0oUmVzb3VyY2VFcnJvciBlcnJvcikgewogICAgICAgICAgICAgaWYgKCF3ZWFrRG9jdW1lbnQp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJh
dGVneS5oCmluZGV4IDk4YmVkODQyZWNhYmZhYzEzOThkNzljYTU4YTMzZWZkMzk5ZDIyNmIuLjIy
NjQzM2U5NGNmYWRjYjM1YjFiMTQxYTJhMGNmNzgxZWI5ZGQ0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Mb2FkZXJTdHJhdGVneS5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc3RhcnRQaW5nTG9hZChGcmFtZSYsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEhU
VFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGNvbnN0IEZldGNoT3B0aW9ucyYs
IFBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXImJiA9IHsgfSkgPSAwOwogCiAgICAgdXNpbmcgUHJl
Y29ubmVjdENvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291
cmNlRXJyb3ImKT47Ci0gICAgdmlydHVhbCB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0
aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByZWNvbm5lY3RUbyhOZXR3b3Jr
aW5nQ29udGV4dCosIGNvbnN0IFVSTCYsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25u
ZWN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN0b3JlRGVy
aXZlZERhdGFUb0NhY2hlKGNvbnN0IFNIQTE6OkRpZ2VzdCYgYm9keUtleSwgY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhcnRpdGlvbiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikg
PSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDk0ZWMwMGZiNjRhNDg2MmVj
MGJhMjAzMGE3ODYzOWJhNzJmYzg3ZjIuLjRlYWVjZjc5MDk1Y2FlOWVjMDhhYzNiMWQ3OWVkNTgz
MzI4ODI2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0yOTEsMTUgKzI5MSwx
NSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwcmVmZXRjaEROUyhjb25z
dCBTdHJpbmcmIGhvc3RuYW1lKQogICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5wcmVm
ZXRjaEROUyhob3N0bmFtZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHByZWNv
bm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpwcmVjb25uZWN0VG8odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50
aWZpZXIsIE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAjaWYgRU5BQkxF
KFNFUlZFUl9QUkVDT05ORUNUKQotICAgIG5ldyBQcmVjb25uZWN0VGFzayhzZXNzaW9uSUQsIHVy
bCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGlkZW50aWZpZXIgPSBwcmVjb25uZWN0aW9uSWRlbnRpZmllcl0gKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKSB7CisgICAgbmV3IFByZWNvbm5lY3RUYXNrKFdURk1vdmUocGFy
YW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZp
ZXIgPSBwcmVjb25uZWN0aW9uSWRlbnRpZmllcl0gKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KSB7CiAgICAgICAgIGRpZEZpbmlzaFByZWNvbm5lY3Rpb24oaWRlbnRpZmllciwgZXJyb3IpOwog
ICAgIH0pOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kp
OwotICAgIGRpZEZpbmlzaFByZWNvbm5lY3Rpb24ocHJlY29ubmVjdGlvbklkZW50aWZpZXIsIGlu
dGVybmFsRXJyb3IodXJsKSk7CisgICAgVU5VU0VEX1BBUkFNKHBhcmFtZXRlcnMpOworICAgIGRp
ZEZpbmlzaFByZWNvbm5lY3Rpb24ocHJlY29ubmVjdGlvbklkZW50aWZpZXIsIGludGVybmFsRXJy
b3IocGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCmluZGV4IGIxMGRmNTg1ZGQ2OTBmYzU4ZDQ0OGE5NzE0NzliZTUyNGY5ZjNkMGMu
LjNhZWQ3ZWI1YjE0NjUyZmViYjkzY2M2MTViZjgyMmZhMzhhZGJhM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51bSBjbGFzcyBJbmNsdWRlU2VjdXJlQ29v
a2llczsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzczsKK2NsYXNzIE5ldHdvcmtMb2FkUGFyYW1ldGVyczsKIGNsYXNzIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjsKIGNsYXNzIE5ldHdvcmtTb2NrZXRTdHJlYW07CiBjbGFzcyBTeW5jTmV0d29y
a1Jlc291cmNlTG9hZGVyOwpAQCAtOTIsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVy
Zm9ybVN5bmNocm9ub3VzTG9hZChjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYs
IFJlZjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5j
aHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4mJik7CiAgICAgdm9pZCBsb2FkUGluZyhOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiYgb3JpZ2lu
YWxSZXF1ZXN0SGVhZGVycyk7CiAgICAgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmKTsK
LSAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcHJlY29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5KTsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyh1aW50NjRfdCBwcmVjb25uZWN0
aW9uSWRlbnRpZmllciwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYpOwogCiAgICAgdm9pZCByZW1v
dmVMb2FkSWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKICAgICB2b2lkIHNldERl
ZmVyc0xvYWRpbmcoUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgYm9vbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlODVlOTczMjgyNGQwMjliMWI3ZWVk
ZWYzMDk3M2ZkN2UwYTc2NmRiLi5hYmZiMzBmYmVlYmZhOWYwZTNiMDQ2Yzg1M2E1YjJiOTMwNmVi
MDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI4
LDcgKzI4LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogICAgIFJlbW92ZUxvYWRJZGVudGlmaWVyKHVpbnQ2NF90IHJlc291cmNl
TG9hZElkZW50aWZpZXIpCiAgICAgU2V0RGVmZXJzTG9hZGluZyh1aW50NjRfdCByZXNvdXJjZUxv
YWRJZGVudGlmaWVyLCBib29sIGRlZmVycykKICAgICBQcmVmZXRjaEROUyhTdHJpbmcgaG9zdG5h
bWUpCi0gICAgUHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
cHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCB1cmwsIGVudW0gV2ViQ29yZTo6
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOworICAgIFBy
ZWNvbm5lY3RUbyh1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycyk7CiAKICAgICBTdGFydERv
d25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25s
b2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgc3VnZ2VzdGVk
TmFtZSkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgV2ViS2l0
OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCmluZGV4IDYyODczZTRhMjQ1MDFiZGE1MjE5MjU5NjM3
ZDVhOWMxZmJkNzVjODcuLmQ2OTcyOThkYTE2OTIzMzVhNDBhYmRjMGRkYWYwNjdkNDNkYTc0NjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKQEAgLTY3LDYg
KzY3LDggQEAgcHVibGljOgogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgY3Vy
cmVudFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRSZXF1ZXN0OyB9CiAgICAgdm9p
ZCBjbGVhckN1cnJlbnRSZXF1ZXN0KCkgeyBtX2N1cnJlbnRSZXF1ZXN0ID0gV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0KCk7IH0KIAorICAgIGNvbnN0IE5ldHdvcmtMb2FkUGFyYW1ldGVycyYgcGFy
YW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQorCiAgICAgdm9pZCBjb250
aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9p
ZCBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGQ0NmM2ZjNiMDc1OTRlYWUyZmNl
NjBhN2I3MjMzYjRhNTFiNmMwNGYuLjVhMjFjMTMwZDVlMGZiYTNhNTYyNzk4ZjI5YjUzMGMwZWMw
ZDhlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCkBAIC01MDUsMTggKzUwNSw0MiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxE
b3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQpCiB9CiAgICAgCiAjaWYgVVNFKFBST1RFQ1RJ
T05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIs
IGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQorc3RhdGlj
IHVpbnQ2NF90IGdlbmVyYXRlQ2FuQXV0aGVudGljYXRlSWRlbnRpZmllcigpCiB7CiAgICAgc3Rh
dGljIHVpbnQ2NF90IGxhc3RMb2FkZXJJRCA9IDA7Ci0gICAgdWludDY0X3QgbG9hZGVySUQgPSAr
K2xhc3RMb2FkZXJJRDsKLSAgICBtX3dhaXRpbmdOZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnNldChs
YXN0TG9hZGVySUQsIGxvYWRlcik7CisgICAgcmV0dXJuICsrbGFzdExvYWRlcklEOworfQorCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9u
U3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKK3sKKyAgICB1aW50NjRfdCBsb2FkZXJJRCA9IGdlbmVy
YXRlQ2FuQXV0aGVudGljYXRlSWRlbnRpZmllcigpOworICAgIG1fd2FpdGluZ05ldHdvcmtSZXNv
dXJjZUxvYWRlcnMuc2V0KGxvYWRlcklELCBsb2FkZXIpOwogICAgIHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UobG9hZGVySUQsIGxvYWRlci5wYWdlSUQoKSwgbG9h
ZGVyLmZyYW1lSUQoKSwgcHJvdGVjdGlvblNwYWNlKSwgMCk7CiB9CiAKKyNpZiBFTkFCTEUoU0VS
VkVSX1BSRUNPTk5FQ1QpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlKFByZWNvbm5lY3RUYXNrJiBwcmVjb25uZWN0VGFzaywgY29uc3Qg
V2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCit7CisgICAgdWludDY0
X3QgbG9hZGVySUQgPSBnZW5lcmF0ZUNhbkF1dGhlbnRpY2F0ZUlkZW50aWZpZXIoKTsKKyAgICBt
X3dhaXRpbmdQcmVjb25uZWN0VGFza3Muc2V0KGxvYWRlcklELCBwcmVjb25uZWN0VGFzay5jcmVh
dGVXZWFrUHRyKCkpOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UobG9hZGVySUQsIHByZWNvbm5lY3RUYXNrLnBhZ2VJRCgpLCBwcmVjb25uZWN0VGFzay5m
cmFtZUlEKCksIHByb3RlY3Rpb25TcGFjZSksIDApOworfQorI2VuZGlmCisKIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSh1
aW50NjRfdCBsb2FkZXJJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpCiB7Ci0gICAgbV93YWl0aW5n
TmV0d29ya1Jlc291cmNlTG9hZGVycy50YWtlKGxvYWRlcklEKS52YWx1ZSgpLT5jb250aW51ZUNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY2FuQXV0aGVudGljYXRlKTsKKyAg
ICBpZiAoYXV0byByZXNvdXJjZUxvYWRlciA9IG1fd2FpdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRl
cnMudGFrZShsb2FkZXJJRCkpIHsKKyAgICAgICAgcmVzb3VyY2VMb2FkZXIudmFsdWUoKS0+Y29u
dGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNhbkF1dGhlbnRpY2F0
ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjaWYgRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNU
KQorICAgIGlmIChhdXRvIHByZWNvbm5lY3RUYXNrID0gbV93YWl0aW5nUHJlY29ubmVjdFRhc2tz
LnRha2UobG9hZGVySUQpKSB7CisgICAgICAgIHByZWNvbm5lY3RUYXNrLT5jb250aW51ZUNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY2FuQXV0aGVudGljYXRlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogfQorCiAjZW5kaWYKIAogI2lmIFVTRShORVRXT1JL
X1NFU1NJT04pCkBAIC03MjksNyArNzUzLDEzIEBAIFN0cmluZyBOZXR3b3JrUHJvY2Vzczo6Y2Fj
aGVTdG9yYWdlRGlyZWN0b3J5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgY29uc3QKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpCiB7
CiAjaWYgRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQotICAgIG5ldyBQcmVjb25uZWN0VGFzayhQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB1cmwsIHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5KTsKKyAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICBwYXJh
bWV0ZXJzLnJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyB1cmwgfTsKKyAgICBwYXJhbWV0ZXJz
LnNlc3Npb25JRCA9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CisgICAgcGFy
YW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
OworICAgIHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPSBQcmVjb25uZWN0T25seTo6
WWVzOworCisgICAgbmV3IFByZWNvbm5lY3RUYXNrKFdURk1vdmUocGFyYW1ldGVycykpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0odXJsKTsKICAgICBVTlVTRURfUEFSQU0oc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCmluZGV4IGI5ZmE3MjA4NGM0ODA5NTEyNzRhZjlhNDE0N2JlZWIwNTcxYjhiNTYuLjI0
ZjRhMGU4NmZmOWY2ZDE1Y2UzNzk2YTRlYzdjMDBiNzlhYzE4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNp
bmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSAiV2ViU1FMaXRlRGF0YWJh
c2VUcmFja2VyLmgiCkBAIC02MCw2ICs2MSw5IEBAIGNsYXNzIFVSTDsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbk1hbmFnZXI7CisjaWYgRU5BQkxFKFNFUlZFUl9Q
UkVDT05ORUNUKQorY2xhc3MgUHJlY29ubmVjdFRhc2s7CisjZW5kaWYKIGNsYXNzIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50Owog
Y2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwpAQCAtMTIzLDYgKzEyNyw5IEBAIHB1YmxpYzoK
IAogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiAgICAgdm9pZCBjYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYs
IGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpOworI2lmIEVOQUJMRShTRVJWRVJfUFJF
Q09OTkVDVCkKKyAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
UHJlY29ubmVjdFRhc2smLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKTsKKyNlbmRp
ZgogI2VuZGlmCiAKICAgICB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYpOwpAQCAtMjQ4
LDYgKzI1NSw5IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2
b2lkICgpPj4gbV9zYW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0aW9uSGFuZGxlcnM7CiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4+IG1fd2FpdGlu
Z05ldHdvcmtSZXNvdXJjZUxvYWRlcnM7CisjaWYgRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQor
ICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYWtQdHI8UHJlY29ubmVjdFRhc2s+PiBtX3dhaXRpbmdQ
cmVjb25uZWN0VGFza3M7CisjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQg
cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCA3
MTdiZjg4MmVkNDAxYzFkYmVkNGE1NzVhZTVhZGE5NDIzMzljM2Q0Li5lOTYzNTc2MmI2NWY1MzI0
MTJmYmVmZGQxMTM3NGRjZDNhNTQ5NWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApA
QCAtNzYsNiArNzYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNv
ZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIuZW5jb2RlRW51bShj
b250ZW50U25pZmZpbmdQb2xpY3kpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSk7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGNsaWVudENyZWRlbnRpYWxQ
b2xpY3kpOworICAgIGVuY29kZXIuZW5jb2RlRW51bShzaG91bGRQcmVjb25uZWN0T25seSk7CiAg
ICAgZW5jb2RlciA8PCBzaG91bGRGb2xsb3dSZWRpcmVjdHM7CiAgICAgZW5jb2RlciA8PCBzaG91
bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OwogICAgIGVuY29kZXIgPDwgZGVm
ZXJzTG9hZGluZzsKQEAgLTE0NCw2ICsxNDUsOCBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUmVzb3VyYwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0
LmNsaWVudENyZWRlbnRpYWxQb2xpY3kpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LnNob3VsZFByZWNvbm5lY3RPbmx5KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNob3VsZEZv
bGxvd1JlZGlyZWN0cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2su
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKaW5k
ZXggODY4M2M5MDQyYzVhNGM0ZmI1OWQxNTU3ZWY2NGEzNDg4YTMzY2I3NS4uMmUxMGI4Nzg1YjVh
MzlkYWNjZmE2MTBmZmM5ODM2Mzg0ODlkZWM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKQEAgLTI4LDkzICsyOCw4MiBAQAogCiAjaWYg
RU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQogCi0jaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCiAj
aW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAiTmV0d29ya1Nlc3Np
b24uaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlNlc3Npb25UcmFj
a2VyLmgiCi0jaW5jbHVkZSAiV2ViRXJyb3JzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgog
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrQ29jb2EuaCIK
LSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLVByZWNvbm5lY3RUYXNrOjpQcmVjb25uZWN0VGFzayhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK1ByZWNvbm5lY3RU
YXNrOjpQcmVjb25uZWN0VGFzayhOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VFcnJvciYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSkKLSAgICAsIG1fdGltZW91dFRpbWVyKFt0aGlzXSB7IGRpZEZpbmlzaChSZXNv
dXJjZUVycm9yIHsgU3RyaW5nKCksIDAsIG1fdGFzay0+Zmlyc3RSZXF1ZXN0KCkudXJsKCksIEFT
Q0lJTGl0ZXJhbCgiUHJlY29ubmVjdGlvbiB0aW1lZCBvdXQiKSwgUmVzb3VyY2VFcnJvcjo6VHlw
ZTo6VGltZW91dCB9KTsgfSkKKyAgICAsIG1fdGltZW91dFRpbWVyKFt0aGlzXSB7IGRpZEZpbmlz
aChSZXNvdXJjZUVycm9yIHsgU3RyaW5nKCksIDAsIG1fbmV0d29ya0xvYWQtPnBhcmFtZXRlcnMo
KS5yZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwoIlByZWNvbm5lY3Rpb24gdGltZWQgb3V0Iiks
IFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQgfSk7IH0pCiB7Ci0gICAgYXV0byogbmV0d29y
a1Nlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAg
ICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBQcmVjb25uZWN0VGFzazo6UHJlY29ubmVjdFRh
c2soKSIsIHRoaXMpOworCisgICAgYXV0byogbmV0d29ya1Nlc3Npb24gPSBTZXNzaW9uVHJhY2tl
cjo6bmV0d29ya1Nlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpOwogICAgIEFTU0VSVChuZXR3
b3JrU2Vzc2lvbik7CiAKLSAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBQcmVjb25uZWN0
VGFzazo6UHJlY29ubmVjdFRhc2soKSIsIHRoaXMpOwotICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzOwotICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCh1
cmwpOwotICAgIHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPSBQcmVjb25uZWN0T25s
eTo6WWVzOwotICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzdG9yZWRD
cmVkZW50aWFsc1BvbGljeTsKLSAgICBtX3Rhc2sgPSBOZXR3b3JrRGF0YVRhc2s6OmNyZWF0ZSgq
bmV0d29ya1Nlc3Npb24sICp0aGlzLCBwYXJhbWV0ZXJzKTsKLSAgICBtX3Rhc2stPnJlc3VtZSgp
OworICAgIEFTU0VSVChwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5ID09IFByZWNvbm5l
Y3RPbmx5OjpZZXMpOworICAgIG1fbmV0d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdv
cmtMb2FkPigqdGhpcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKIAog
ICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdCg2MDAwMF9zKTsKIH0KIAogUHJlY29ubmVj
dFRhc2s6On5QcmVjb25uZWN0VGFzaygpCiB7Ci0gICAgQVNTRVJUKG1fdGFzay0+Y2xpZW50KCkg
PT0gdGhpcyk7Ci0gICAgbV90YXNrLT5jbGVhckNsaWVudCgpOwotICAgIG1fdGFzay0+Y2FuY2Vs
KCk7CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikKK3ZvaWQgUHJlY29ubmVjdFRhc2s6OndpbGxT
ZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVxdWVzdCYm
IHJlZGlyZWN0UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6OmRp
ZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
IGNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxl
cikKK2F1dG8gUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3Bv
bnNlJiYpIC0+IFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlCiB7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlOjpObzsKIH0KIAotdm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0
d29ya1Nlc3Npb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpCit2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxT
aGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZl
RGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKQordm9pZCBQcmVjb25uZWN0VGFzazo6
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFByZWNvbm5l
Y3RUYXNrOjpkaWRGaW5pc2hMb2FkaW5nIiwgdGhpcyk7CisgICAgZGlkRmluaXNoKHsgfSk7CiB9
CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MmKQordm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpCiB7Ci0gICAgaWYgKGVycm9yLmlzTnVsbCgpKQotICAgICAgICBSRUxFQVNF
X0xPRyhOZXR3b3JrLCAiJXAgLSBQcmVjb25uZWN0VGFzazo6ZGlkQ29tcGxldGUiLCB0aGlzKTsK
LSAgICBlbHNlCi0gICAgICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFByZWNvbm5lY3RU
YXNrOjpkaWRDb21wbGV0ZVdpdGhFcnJvciwgZXJyb3JfY29kZTogJWQiLCB0aGlzLCBlcnJvci5l
cnJvckNvZGUoKSk7Ci0KKyAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBQcmVjb25uZWN0
VGFzazo6ZGlkRmFpbExvYWRpbmcsIGVycm9yX2NvZGU6ICVkIiwgdGhpcywgZXJyb3IuZXJyb3JD
b2RlKCkpOwogICAgIGRpZEZpbmlzaChlcnJvcik7CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6
OmRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVz
RXhwZWN0ZWRUb1NlbmQpCit2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRTZW5kRGF0YSh1bnNpZ25l
ZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVT
ZW50KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFByZWNvbm5lY3RU
YXNrOjp3YXNCbG9ja2VkKCkKK3ZvaWQgUHJlY29ubmVjdFRhc2s6OmNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rp
b25TcGFjZSkKIHsKLSAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBQcmVjb25uZWN0VGFz
azo6d2FzQmxvY2tlZCgpIiwgdGhpcyk7Ci0gICAgZGlkRmluaXNoKGJsb2NrZWRFcnJvcihtX3Rh
c2stPmZpcnN0UmVxdWVzdCgpKSk7CisgICAgaWYgKCFwYWdlSUQoKSkgeworICAgICAgICAvLyBU
aGUgcHJlY29ubmVjdCB3YXMgc3RhcnRlZCBieSB0aGUgVUlQcm9jZXNzLgorICAgICAgICBjb250
aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoZmFsc2UpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKCp0aGlzLCBwcm90ZWN0aW9uU3BhY2UpOwog
fQogCi12b2lkIFByZWNvbm5lY3RUYXNrOjpjYW5ub3RTaG93VVJMKCkKK3ZvaWQgUHJlY29ubmVj
dFRhc2s6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29s
IHJlc3VsdCkKIHsKLSAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBQcmVjb25uZWN0VGFz
azo6Y2Fubm90U2hvd1VSTCgpIiwgdGhpcyk7Ci0gICAgZGlkRmluaXNoKGNhbm5vdFNob3dVUkxF
cnJvcihtX3Rhc2stPmZpcnN0UmVxdWVzdCgpKSk7CisgICAgbV9uZXR3b3JrTG9hZC0+Y29udGlu
dWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHJlc3VsdCk7CiB9CiAKIHZv
aWQgUHJlY29ubmVjdFRhc2s6OmRpZEZpbmlzaChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
QEAgLTEyNCw2ICsxMTMsMTYgQEAgdm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkRmluaXNoKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGRlbGV0ZSB0aGlzOwogfQogCit1aW50NjRfdCBQ
cmVjb25uZWN0VGFzazo6ZnJhbWVJRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbmV0d29ya0xv
YWQtPnBhcmFtZXRlcnMoKS53ZWJGcmFtZUlEOworfQorCit1aW50NjRfdCBQcmVjb25uZWN0VGFz
azo6cGFnZUlEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9uZXR3b3JrTG9hZC0+cGFyYW1ldGVy
cygpLndlYlBhZ2VJRDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBF
TkFCTEUoU0VSVkVSX1BSRUNPTk5FQ1QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByZWNvbm5lY3RUYXNrLmgKaW5kZXggYmY5ZTM5NWU4MWViMTI5MjVlMmI4NWQ4ODMwMjU3YjBh
OTZjNjEyYi4uODllYWJhYmI1NDA5YmY5OWMxMWJjYjIxYTVlNTg5ZGFkOTBhZDVjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaApAQCAtMjcsMzcg
KzI3LDQ1IEBACiAKICNpZiBFTkFCTEUoU0VSVkVSX1BSRUNPTk5FQ1QpCiAKLSNpbmNsdWRlICJO
ZXR3b3JrRGF0YVRhc2suaCIKKyNpbmNsdWRlICJOZXR3b3JrTG9hZENsaWVudC5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
LQotbmFtZXNwYWNlIFBBTCB7Ci1jbGFzcyBTZXNzaW9uSUQ7Ci19CisjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFByZWNvbm5lY3RUYXNrIGZp
bmFsIDogcHJpdmF0ZSBOZXR3b3JrRGF0YVRhc2tDbGllbnQgeworY2xhc3MgTmV0d29ya0xvYWQ7
CitjbGFzcyBOZXR3b3JrTG9hZFBhcmFtZXRlcnM7CisKK2NsYXNzIFByZWNvbm5lY3RUYXNrIGZp
bmFsIDogcHVibGljIE5ldHdvcmtMb2FkQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBQ
cmVjb25uZWN0VGFzayhQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik+JiYgY29tcGxldGlvbkhhbmRsZXIgPSB7IH0p
OworICAgIGV4cGxpY2l0IFByZWNvbm5lY3RUYXNrKE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyID0geyB9KTsKICAgICB+UHJlY29ubmVjdFRhc2soKTsKIAor
ICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdDsKKyAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25z
dDsKKworICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlKGJvb2wpOworCisgICAgV2Vha1B0cjxQcmVjb25uZWN0VGFzaz4gY3JlYXRlV2Vha1B0cigp
IHsgcmV0dXJuIG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyk7IH0KKwogcHJpdmF0
ZToKLSAgICAvLyBOZXR3b3JrRGF0YVRhc2tDbGllbnQuCi0gICAgdm9pZCB3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZv
aWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7Ci0gICAgdm9pZCBkaWRD
b21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7Ci0gICAgdm9pZCBkaWRTZW5kRGF0YSh1
aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5k
KSBmaW5hbDsKLSAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKLSAgICB2b2lkIGNhbm5vdFNo
b3dVUkwoKSBmaW5hbDsKKyAgICAvLyBOZXR3b3JrTG9hZENsaWVudC4KKyAgICBib29sIGlzU3lu
Y2hyb25vdXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgZGlkU2Vu
ZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CisgICAgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlQXN5bmMoY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJikgZmlu
YWw7CisgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKKyAgICBT
aG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpIGZpbmFsOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkRmluaXNoKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAotICAgIFJlZlB0cjxOZXR3b3JrRGF0YVRhc2s+
IG1fdGFzazsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xvYWQ+IG1fbmV0d29ya0xvYWQ7
CiAgICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKICAgICBXZWJDb3JlOjpUaW1lciBtX3RpbWVv
dXRUaW1lcjsKKyAgICBXZWFrUHRyRmFjdG9yeTxQcmVjb25uZWN0VGFzaz4gbV93ZWFrRmFjdG9y
eTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDc2ZjE4NjY3
NWRkOWJlYjBmNzgwNGQxZGMwOTk2NDUwYjVlODYwNTkuLmJkNzA4MzlhM2I2YThmNDkxY2Y2NzE1
YzA0Y2Y2YTQwYTc5ZWNjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTQ2MywxMiArNDYzLDI2IEBAIHZv
aWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2Fk
SWRlbnRpZmllciwgUmVzb3VyY2VFCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
ZXJyb3IpKTsKIH0KIAotdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFN0b3JlZENyZWRl
bnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnBy
ZWNvbm5lY3RUbyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQ
cmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB1
aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciA9IGdlbmVyYXRlTG9hZElkZW50aWZpZXIo
KTsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVycy5h
ZGQocHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
ICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQcmVjb25uZWN0
VG8oc2Vzc2lvbklELCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgdXJsLCBzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSksIDApOworCisgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dCogd2ViQ29u
dGV4dCA9IHN0YXRpY19jYXN0PFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQqPihjb250ZXh0KTsK
KyAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB3ZWJDb250
ZXh0LT53ZWJGcmFtZUxvYWRlckNsaWVudCgpOworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdl
YkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBu
dWxscHRyOworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdl
KCkgOiBudWxscHRyOworCisgICAgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcGFyYW1l
dGVyczsKKyAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyB1cmwgfTsK
KyAgICBwYXJhbWV0ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQoKSA6
IDA7CisgICAgcGFyYW1ldGVycy53ZWJGcmFtZUlEID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+ZnJh
bWVJRCgpIDogMDsKKyAgICBwYXJhbWV0ZXJzLnNlc3Npb25JRCA9IHdlYlBhZ2UgPyB3ZWJQYWdl
LT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CisgICAg
cGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5OworICAgIHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPSBQcmVjb25uZWN0T25s
eTo6WWVzOworCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlByZWNvbm5lY3RUbyhwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgV1RGTW92ZShwYXJhbWV0
ZXJzKSksIDApOwogfQogCiB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpkaWRGaW5pc2hQcmVjb25u
ZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBSZXNvdXJjZUVycm9yJiYg
ZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJM
b2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuaAppbmRleCA3MjU2YjVkMzczMDc4MmZmYjk1NWVhY2Y0MTY5YWQwZGI1OWQy
ZWQ5Li45OTk1YTUyYTY0MmM4ODVlNzM0NzJhOWVkYmQ1MGM3NmUwZjg0ZDYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgK
QEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRQaW5nTG9hZChXZWJDb3Jl
OjpGcmFtZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkhUVFBI
ZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0
aW9ucyYsIFBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRG
aW5pc2hQaW5nTG9hZCh1aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNv
bm5lY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhX
ZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOwogCiAgICAgdm9pZCBz
dG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBTSEExOjpEaWdlc3QmIGJvZHlIYXNoLCBjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFydGl0aW9uLCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1
cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCA3OTc1YmQz
ZWEzNTlkZTlkZTY2MDI1N2NlYmRkNmE2ODYwMGE5ODczLi45MDM2OTYxNDE2ODA1Yjc1MTk4ODY0
YmZkMGM2YmVjOTVjYzE5MzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNv
cmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC0z
NjksNyArMzY5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnN0YXJ0UGluZ0xv
YWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXUKICAgICBuZXcgUGluZ0hhbmRs
ZShmcmFtZS5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpLCByZXF1ZXN0LCBvcHRpb25zLmNy
ZWRlbnRpYWxzICE9IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQsIFBpbmdIYW5kbGU6
OlVzZXNBc3luY0NhbGxiYWNrczo6Tm8sIG9wdGlvbnMucmVkaXJlY3QgPT0gRmV0Y2hPcHRpb25z
OjpSZWRpcmVjdDo6Rm9sbG93LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZv
aWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFVSTCYsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlv
bkhhbmRsZXImJikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwcmVjb25uZWN0VG8o
TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBVUkwmLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwg
UHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5oCmluZGV4IGVjZmMxY2ZiMzVlZGVjNGUzNGM4YjZlNjY3OTViYzY0OGY1YjFlNzEuLmI0
NjMxZDQ2YmVlZjgzMmM2YzdmMGU1MjI1MTdhM2Y0YTE4OGEyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0UGlu
Z0xvYWQoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgUGlu
Z0xvYWRDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKIAotICAgIHZvaWQgcHJlY29ubmVjdFRv
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAg
IHZvaWQgcHJlY29ubmVjdFRvKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKIAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRv
Q2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzYzhmMWZiNmJhNjU5
MDcwZjcyYThjMzI5MTQ5YjA5YjJhMzJlMTQ1Li43NzIzZTdkOTYwMzVhZTFiODA1YmQzYjIwMzA4
MWMwOTliNGM5NDc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTggQEAKIDIwMTctMDktMjkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBodHRwL3Rlc3RzL3ByZWNvbm5lY3Qv
bGluay1yZWwtcHJlY29ubmVjdC1odHRwcy5odG1sIGlzIGZsYWt5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc2NzMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcHJlY29ubmVjdC9s
aW5rLXJlbC1wcmVjb25uZWN0LWh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgUmViYXNlbGlu
ZSB0ZXN0IG5vdyB0aGF0IGl0IGlzIHBhc3NpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93azIv
VGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgVXNraXAgdGVzdCBhcyBpdCBzaG91bGQgbm8gbG9u
Z2VyIGJlIGZsYWt5LgorCisyMDE3LTA5LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKICAgICAgICAgVW5yZXZpZXdlZCwgdGVtcG9yYXJpbHkgbWFyayBodHRwL3Rlc3RzL3By
ZWNvbm5lY3QvbGluay1yZWwtcHJlY29ubmVjdC1odHRwcy5odG1sIGFzIGZsYWt5LgogCiAgICAg
ICAgICogcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnM6CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3ByZWNvbm5lY3QvbGluay1yZWwtcHJlY29ubmVjdC1odHRwcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByZWNvbm5lY3QvbGluay1yZWwtcHJl
Y29ubmVjdC1odHRwcy1leHBlY3RlZC50eHQKaW5kZXggM2MxNGUyMzNmNzc4Y2YxZjgzYWQwZmFh
MWNkMjdmZGQyZWMzZmE0OC4uN2QxZTQ3ODE5NjEyODJkNjdjYzc0MzQ1ODQzODI5ODNhNzNmYzdl
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcmVjb25uZWN0L2xpbmstcmVs
LXByZWNvbm5lY3QtaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcHJlY29ubmVjdC9saW5rLXJlbC1wcmVjb25uZWN0LWh0dHBzLWV4cGVjdGVkLnR4dApAQCAt
MSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogRmFpbGVkIHRvIHByZWNvbm5lY3QgdG8gaHR0
cHM6Ly9sb2NhbGhvc3Q6ODQ0My8uIEVycm9yOiBUaGUgY2VydGlmaWNhdGUgZm9yIHRoaXMgc2Vy
dmVyIGlzIGludmFsaWQuIFlvdSBtaWdodCBiZSBjb25uZWN0aW5nIHRvIGEgc2VydmVyIHRoYXQg
aXMgcHJldGVuZGluZyB0byBiZSDigJxsb2NhbGhvc3TigJ0gd2hpY2ggY291bGQgcHV0IHlvdXIg
Y29uZmlkZW50aWFsIGluZm9ybWF0aW9uIGF0IHJpc2suCitDT05TT0xFIE1FU1NBR0U6IFN1Y2Nl
c3NmdWx5IHByZWNvbm5lY3RlZCB0byBodHRwczovL2xvY2FsaG9zdDo4NDQzLwogVGVzdHMgdGhh
dCBMaW5rJ3MgcmVsPXByZWNvbm5lY3Qgd29ya3MgYXMgZXhwZWN0ZWQgb3ZlciBIVFRQUy4KIAog
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCAyMzhlODZlYmMxMTg1YzZmODFkNDRlMzFkMDhjNzlkMmQ5ZGVmOWYz
Li5jNjM1MGVmN2QyYTJkMGI5ZjM2YmFmNmIxYzVmZGIzMDMwMDkwYTkzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzEyLDcgKzcxMiw1IEBAIHdlYmtp
dC5vcmcvYi8xNzQ0NzEgd2VicnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRlLWFmdGVyLXJlbG9h
ZC5odG1sIFsgUGFzcyBUaW1lCiAKIHdlYmtpdC5vcmcvYi8xNzU2NzggbWVkaWEvVzNDL3ZpZGVv
L2V2ZW50cy9ldmVudF9wcm9ncmVzcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9y
Zy9iLzE3NzY3MyBodHRwL3Rlc3RzL3ByZWNvbm5lY3QvbGluay1yZWwtcHJlY29ubmVjdC1odHRw
cy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzE3NzQ0MCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL3JlbGF4aW5nLXRoZS1z
YW1lLW9yaWdpbi1yZXN0cmljdGlvbi9kb2N1bWVudF9kb21haW5fc2V0dGVyX251bGwudGVudGF0
aXZlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322257</attachid>
            <date>2017-09-29 16:55:00 -0700</date>
            <delta_ts>2017-09-29 17:35:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177673-20170929165459.patch</filename>
            <type>text/plain</type>
            <size>34667</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzdkMDAzOWI1Y2I4Nzk0
NTdhMDM5ZDY0NTg5Y2JkN2NiMzc4ZDExYi4uODY0NWQ2YTEzNjU4ZDM3M2RmNzBlNzE1Y2I1Mzc4
ZmEwM2Y5Y2FmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA5LTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgaHR0cC90ZXN0cy9wcmVjb25u
ZWN0L2xpbmstcmVsLXByZWNvbm5lY3QtaHR0cHMuaHRtbCBpcyBmbGFreQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NjczCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHVuc2tp
cHBlZCB0ZXN0IHRoYXQgaXMgbm93IHBhc3NpbmcgY29uc2lzdGVudGx5LgorCisgICAgICAgICog
bG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGlua0xvYWRlcjo6bG9h
ZExpbmspOgorICAgICAgICAqIGxvYWRlci9Mb2FkZXJTdHJhdGVneS5oOgorCiAyMDE3LTA5LTI5
ICBCYXN1a2UgU3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNvbT4KIAogICAgICAgICBbQ3Vy
bF0gRXh0cmFjdCBhIGZlYXR1cmVzIHRvIG1hbmFnZSBIVFRQIGNvbW11bmljYXRpb24gZnJvbSBS
ZXNvdXJjZUhhbmRsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxYzUzNDc1OGNmMGJlYWM3NzRjNzU4NmEwMDJhNzA2
NGIwMTUyMzI1Li43YzZhNmZmMDUyZTBhZGJmNWE0YjM4M2ViYjI2NzdiZmNmYWRhY2ZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDUyIEBACiAyMDE3LTA5LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKKyAgICAgICAgaHR0cC90ZXN0cy9wcmVjb25uZWN0L2xpbmstcmVsLXByZWNv
bm5lY3QtaHR0cHMuaHRtbCBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJp
c3RlbnNlbi4KKworICAgICAgICBVcGRhdGUgUHJlY29ubmVjdFRhc2sgdG8gcXVlcnkgdGhlIGNs
aWVudCB3aGVuIGEgY2VydGlmaWNhdGUgbmVlZHMgdG8gYmUKKyAgICAgICAgdmFsaWRhdGVkLiBU
aGlzIGFsbG93cyBXZWJLaXRUZXN0UnVubmVyIHRvIGlnbm9yZSBpbnZhbGlkIGNlcnRpZmljYXRl
cworICAgICAgICBhbmQgdGhpcyBjYXVzZXMgaHR0cC90ZXN0cy9wcmVjb25uZWN0L2xpbmstcmVs
LXByZWNvbm5lY3QtaHR0cHMuaHRtbAorICAgICAgICB0byBwYXNzIGNvbnNpc3RlbnRseS4KKwor
ICAgICAgICBUbyBhdm9pZCBkdXBsaWNhdGluZyBjb2RlLCBQcmVjb25uZWN0VGFzayBub3cgdXNl
cyBOZXR3b3JrTG9hZCBpbnRlcm5hbGx5CisgICAgICAgIGluc3RlYWQgb2YgdXNpbmcgYSBOZXR3
b3JrRGF0YVRhc2sgZGlyZWN0bHkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpwcmVjb25uZWN0VG8pOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlQ2FuQXV0aGVu
dGljYXRlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8pOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0
OjpQcmVjb25uZWN0VGFzazo6UHJlY29ubmVjdFRhc2spOgorICAgICAgICAoV2ViS2l0OjpQcmVj
b25uZWN0VGFzazo6flByZWNvbm5lY3RUYXNrKToKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVj
dFRhc2s6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQcmVj
b25uZWN0VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6UHJlY29u
bmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpQcmVjb25uZWN0
VGFzazo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNr
OjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjpkaWRT
ZW5kRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjpjYW5BdXRoZW50aWNh
dGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpQcmVjb25u
ZWN0VGFzazo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKToK
KyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OmZyYW1lSUQgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpQcmVjb25uZWN0VGFzazo6cGFnZUlEIGNvbnN0KToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0
ZWd5OjpwcmVjb25uZWN0VG8pOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5oOgorCisyMDE3LTA5LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKICAgICAgICAgW1dLMl1bTkVUV09SS19TRVNTSU9OXSBNb3ZlIHNvbWUgYXV0aGVudGlj
YXRpb24tcmVsYXRlZCBjb2RlIHRvIGF2b2lkIGR1cGxpY2F0aW9uCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc2NjcKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZwppbmRleCBjODE4MGYzYmUzMDgzODU5NGE1MDU4Mzk1YzEyY2NiMTBiYzJmNjM1Li40ZThmM2I4
NjMyMDk4NWMwYmM4MWZmNTRhZDgwNzY2NDg4NTE3ZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDE3LTA5LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgaHR0cC90ZXN0cy9wcmVjb25uZWN0L2xpbmstcmVsLXByZWNvbm5lY3Qt
aHR0cHMuaHRtbCBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc3NjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNl
bi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5j
cHA6CisgICAgICAgIChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnByZWNvbm5lY3RUbyk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6CisKIDIw
MTctMDktMjggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgPGxpbmsgcmVsPXByZWNvbm5lY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xv
YWRlci5jcHAKaW5kZXggOWUzZjJhYThkMjMyM2YzY2MwOWMwNjI1NmI5Mzk2ODhjMmQ5ZTgxYy4u
ZjdjYzU3OTk4MDBmY2ZjNDU4MGNjNjU2NTU4NjI2ZjU5Y2I1NTU5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9MaW5rTG9hZGVyLmNwcApAQCAtMjUzLDEyICsyNTMsMTMgQEAgYm9vbCBMaW5rTG9hZGVy
Ojpsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFVS
TCYgaHJlZiwKICAgICAgICAgICAgIGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgp
LnByZWZldGNoRE5TKGhyZWYuaG9zdCgpKTsKICAgICB9CiAKLSAgICBpZiAocmVsQXR0cmlidXRl
LmlzTGlua1ByZWNvbm5lY3QgJiYgaHJlZi5pc1ZhbGlkKCkgJiYgaHJlZi5wcm90b2NvbElzSW5I
VFRQRmFtaWx5KCkpIHsKKyAgICBpZiAocmVsQXR0cmlidXRlLmlzTGlua1ByZWNvbm5lY3QgJiYg
aHJlZi5pc1ZhbGlkKCkgJiYgaHJlZi5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgZG9jdW1l
bnQuZnJhbWUoKSkgewogICAgICAgICBBU1NFUlQoZG9jdW1lbnQuc2V0dGluZ3MoKS5saW5rUHJl
Y29ubmVjdEVuYWJsZWQoKSk7CiAgICAgICAgIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3Jh
Z2VDcmVkZW50aWFsc1BvbGljeSA9IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U7CiAgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNyb3NzT3JpZ2luLCAiYW5vbnltb3VzIikg
JiYgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3MoU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShocmVmKSkpCiAgICAgICAgICAgICBzdG9yYWdlQ3JlZGVudGlhbHNQb2xpY3kgPSBTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2U7Ci0gICAgICAgIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5sb2FkZXJTdHJhdGVneSgpLT5wcmVjb25uZWN0VG8oZG9jdW1lbnQuc2Vzc2lvbklEKCks
IGhyZWYsIHN0b3JhZ2VDcmVkZW50aWFsc1BvbGljeSwgW3dlYWtEb2N1bWVudCA9IGRvY3VtZW50
LmNyZWF0ZVdlYWtQdHIoKSwgaHJlZl0oUmVzb3VyY2VFcnJvciBlcnJvcikgeworICAgICAgICBB
U1NFUlQoZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkubmV0d29ya2luZ0NvbnRleHQoKSk7Cisg
ICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5wcmVjb25uZWN0
VG8oKmRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCksIGhyZWYs
IHN0b3JhZ2VDcmVkZW50aWFsc1BvbGljeSwgW3dlYWtEb2N1bWVudCA9IGRvY3VtZW50LmNyZWF0
ZVdlYWtQdHIoKSwgaHJlZl0oUmVzb3VyY2VFcnJvciBlcnJvcikgewogICAgICAgICAgICAgaWYg
KCF3ZWFrRG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IDk4YmVkODQyZWNhYmZhYzEzOThkNzljYTU4YTMz
ZWZkMzk5ZDIyNmIuLmI1N2NmOTU2NTIzZjM0NGE3MDgzZDAzNTExYjE3ODVkNjQ5ZjFiMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCkBAIC02OSw3ICs2OSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQaW5nTG9hZChGcmFtZSYsIFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGNvbnN0
IEZldGNoT3B0aW9ucyYsIFBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXImJiA9IHsgfSkgPSAwOwog
CiAgICAgdXNpbmcgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2
b2lkKGNvbnN0IFJlc291cmNlRXJyb3ImKT47Ci0gICAgdmlydHVhbCB2b2lkIHByZWNvbm5lY3RU
byhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFBy
ZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByZWNv
bm5lY3RUbyhOZXR3b3JraW5nQ29udGV4dCYsIGNvbnN0IFVSTCYsIFN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogCiAgICAgdmlydHVh
bCB2b2lkIHN0b3JlRGVyaXZlZERhdGFUb0NhY2hlKGNvbnN0IFNIQTE6OkRpZ2VzdCYgYm9keUtl
eSwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhcnRpdGlvbiwgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDk0
ZWMwMGZiNjRhNDg2MmVjMGJhMjAzMGE3ODYzOWJhNzJmYzg3ZjIuLjRlYWVjZjc5MDk1Y2FlOWVj
MDhhYzNiMWQ3OWVkNTgzMzI4ODI2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBA
IC0yOTEsMTUgKzI5MSwxNSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpw
cmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogICAgIE5ldHdvcmtQcm9jZXNzOjpz
aW5nbGV0b24oKS5wcmVmZXRjaEROUyhob3N0bmFtZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwcmVjb25uZWN0VG8odWludDY0X3QgcHJl
Y29ubmVjdGlvbklkZW50aWZpZXIsIE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiB7CiAjaWYgRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQotICAgIG5ldyBQcmVjb25uZWN0VGFz
ayhzZXNzaW9uSUQsIHVybCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIgPSBwcmVjb25uZWN0aW9uSWRlbnRp
Zmllcl0gKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7CisgICAgbmV3IFByZWNvbm5lY3RU
YXNrKFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGlkZW50aWZpZXIgPSBwcmVjb25uZWN0aW9uSWRlbnRpZmllcl0gKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKSB7CiAgICAgICAgIGRpZEZpbmlzaFByZWNvbm5lY3Rpb24oaWRlbnRp
ZmllciwgZXJyb3IpOwogICAgIH0pOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kpOwotICAgIGRpZEZpbmlzaFByZWNvbm5lY3Rpb24ocHJlY29ubmVjdGlv
bklkZW50aWZpZXIsIGludGVybmFsRXJyb3IodXJsKSk7CisgICAgVU5VU0VEX1BBUkFNKHBhcmFt
ZXRlcnMpOworICAgIGRpZEZpbmlzaFByZWNvbm5lY3Rpb24ocHJlY29ubmVjdGlvbklkZW50aWZp
ZXIsIGludGVybmFsRXJyb3IocGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpKSk7CiAjZW5kaWYKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGIxMGRmNTg1ZGQ2OTBmYzU4ZDQ0OGE5NzE0
NzliZTUyNGY5ZjNkMGMuLjNhZWQ3ZWI1YjE0NjUyZmViYjkzY2M2MTViZjgyMmZhMzhhZGJhM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51bSBjbGFzcyBJ
bmNsdWRlU2VjdXJlQ29va2llczsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIE5ldHdvcmtMb2FkUGFyYW1ldGVyczsKIGNs
YXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIE5ldHdvcmtTb2NrZXRTdHJlYW07CiBj
bGFzcyBTeW5jTmV0d29ya1Jlc291cmNlTG9hZGVyOwpAQCAtOTIsNyArOTMsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcGVyZm9ybVN5bmNocm9ub3VzTG9hZChjb25zdCBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycyYsIFJlZjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4mJik7CiAgICAgdm9pZCBs
b2FkUGluZyhOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBXZWJDb3JlOjpIVFRQSGVh
ZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycyk7CiAgICAgdm9pZCBwcmVmZXRjaEROUyhj
b25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyh1aW50
NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYpOwog
CiAgICAgdm9pZCByZW1vdmVMb2FkSWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsK
ICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgYm9vbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlODVlOTcz
MjgyNGQwMjliMWI3ZWVkZWYzMDk3M2ZkN2UwYTc2NmRiLi5hYmZiMzBmYmVlYmZhOWYwZTNiMDQ2
Yzg1M2E1YjJiOTMwNmViMDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTI4LDcgKzI4LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlbW92ZUxvYWRJZGVudGlmaWVyKHVp
bnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIpCiAgICAgU2V0RGVmZXJzTG9hZGluZyh1aW50
NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBib29sIGRlZmVycykKICAgICBQcmVmZXRjaERO
UyhTdHJpbmcgaG9zdG5hbWUpCi0gICAgUHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCB1cmws
IGVudW0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kpOworICAgIFByZWNvbm5lY3RUbyh1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmll
ciwgV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycyk7
CiAKICAgICBTdGFydERvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpE
b3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBT
dHJpbmcgc3VnZ2VzdGVkTmFtZSkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxv
YWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRl
bnRpZmllciwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCmluZGV4IDYyODczZTRhMjQ1
MDFiZGE1MjE5MjU5NjM3ZDVhOWMxZmJkNzVjODcuLmQ2OTcyOThkYTE2OTIzMzVhNDBhYmRjMGRk
YWYwNjdkNDNkYTc0NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmgKQEAgLTY3LDYgKzY3LDggQEAgcHVibGljOgogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgY3VycmVudFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRSZXF1
ZXN0OyB9CiAgICAgdm9pZCBjbGVhckN1cnJlbnRSZXF1ZXN0KCkgeyBtX2N1cnJlbnRSZXF1ZXN0
ID0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0KCk7IH0KIAorICAgIGNvbnN0IE5ldHdvcmtMb2Fk
UGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQor
CiAgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJik7CiAgICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGQ0NmM2
ZjNiMDc1OTRlYWUyZmNlNjBhN2I3MjMzYjRhNTFiNmMwNGYuLjVhMjFjMTMwZDVlMGZiYTNhNTYy
Nzk4ZjI5YjUzMGMwZWMwZDhlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC01MDUsMTggKzUwNSw0MiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpjYW5jZWxEb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQpCiB9CiAgICAgCiAj
aWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLXZvaWQgTmV0d29ya1Byb2Nl
c3M6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoTmV0d29ya1Jlc291cmNl
TG9hZGVyJiBsb2FkZXIsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlv
blNwYWNlKQorc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlQ2FuQXV0aGVudGljYXRlSWRlbnRpZmll
cigpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGxhc3RMb2FkZXJJRCA9IDA7Ci0gICAgdWludDY0
X3QgbG9hZGVySUQgPSArK2xhc3RMb2FkZXJJRDsKLSAgICBtX3dhaXRpbmdOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXJzLnNldChsYXN0TG9hZGVySUQsIGxvYWRlcik7CisgICAgcmV0dXJuICsrbGFzdExv
YWRlcklEOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBXZWJD
b3JlOjpQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKK3sKKyAgICB1aW50NjRfdCBs
b2FkZXJJRCA9IGdlbmVyYXRlQ2FuQXV0aGVudGljYXRlSWRlbnRpZmllcigpOworICAgIG1fd2Fp
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRlcnMuc2V0KGxvYWRlcklELCBsb2FkZXIpOwogICAgIHBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OkNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UobG9hZGVySUQsIGxvYWRl
ci5wYWdlSUQoKSwgbG9hZGVyLmZyYW1lSUQoKSwgcHJvdGVjdGlvblNwYWNlKSwgMCk7CiB9CiAK
KyNpZiBFTkFCTEUoU0VSVkVSX1BSRUNPTk5FQ1QpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFByZWNvbm5lY3RUYXNrJiBwcmVjb25u
ZWN0VGFzaywgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2Up
Cit7CisgICAgdWludDY0X3QgbG9hZGVySUQgPSBnZW5lcmF0ZUNhbkF1dGhlbnRpY2F0ZUlkZW50
aWZpZXIoKTsKKyAgICBtX3dhaXRpbmdQcmVjb25uZWN0VGFza3Muc2V0KGxvYWRlcklELCBwcmVj
b25uZWN0VGFzay5jcmVhdGVXZWFrUHRyKCkpOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2UobG9hZGVySUQsIHByZWNvbm5lY3RUYXNrLnBhZ2VJRCgpLCBw
cmVjb25uZWN0VGFzay5mcmFtZUlEKCksIHByb3RlY3Rpb25TcGFjZSksIDApOworfQorI2VuZGlm
CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZSh1aW50NjRfdCBsb2FkZXJJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpCiB7
Ci0gICAgbV93YWl0aW5nTmV0d29ya1Jlc291cmNlTG9hZGVycy50YWtlKGxvYWRlcklEKS52YWx1
ZSgpLT5jb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY2FuQXV0
aGVudGljYXRlKTsKKyAgICBpZiAoYXV0byByZXNvdXJjZUxvYWRlciA9IG1fd2FpdGluZ05ldHdv
cmtSZXNvdXJjZUxvYWRlcnMudGFrZShsb2FkZXJJRCkpIHsKKyAgICAgICAgcmVzb3VyY2VMb2Fk
ZXIudmFsdWUoKS0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KGNhbkF1dGhlbnRpY2F0ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjaWYgRU5BQkxFKFNF
UlZFUl9QUkVDT05ORUNUKQorICAgIGlmIChhdXRvIHByZWNvbm5lY3RUYXNrID0gbV93YWl0aW5n
UHJlY29ubmVjdFRhc2tzLnRha2UobG9hZGVySUQpKSB7CisgICAgICAgIHByZWNvbm5lY3RUYXNr
LT5jb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY2FuQXV0aGVu
dGljYXRlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogfQorCiAjZW5kaWYKIAog
I2lmIFVTRShORVRXT1JLX1NFU1NJT04pCkBAIC03MjksNyArNzUzLDEzIEBAIFN0cmluZyBOZXR3
b3JrUHJvY2Vzczo6Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkgY29uc3QKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhjb25zdCBXZWJDb3Jl
OjpVUkwmIHVybCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kpCiB7CiAjaWYgRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQotICAgIG5ldyBQ
cmVjb25uZWN0VGFzayhQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB1cmwsIHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1l
dGVyczsKKyAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyB1cmwgfTsK
KyAgICBwYXJhbWV0ZXJzLnNlc3Npb25JRCA9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCk7CisgICAgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5OworICAgIHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPSBQ
cmVjb25uZWN0T25seTo6WWVzOworCisgICAgbmV3IFByZWNvbm5lY3RUYXNrKFdURk1vdmUocGFy
YW1ldGVycykpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odXJsKTsKICAgICBVTlVTRURfUEFS
QU0oc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGI5ZmE3MjA4NGM0ODA5NTEyNzRhZjlhNDE0N2Jl
ZWIwNTcxYjhiNTYuLjI0ZjRhMGU4NmZmOWY2ZDE1Y2UzNzk2YTRlYzdjMDBiNzlhYzE4MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSAi
V2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCkBAIC02MCw2ICs2MSw5IEBAIGNsYXNzIFVSTDsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbk1hbmFnZXI7CisjaWYg
RU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQorY2xhc3MgUHJlY29ubmVjdFRhc2s7CisjZW5kaWYK
IGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgTmV0d29ya1Byb2Nl
c3NTdXBwbGVtZW50OwogY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwpAQCAtMTIzLDYgKzEy
Nyw5IEBAIHB1YmxpYzoKIAogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sp
CiAgICAgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKE5ldHdvcmtS
ZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpOworI2lmIEVO
QUJMRShTRVJWRVJfUFJFQ09OTkVDVCkKKyAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2UoUHJlY29ubmVjdFRhc2smLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9u
U3BhY2UmKTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0
cmluZyYpOwpAQCAtMjQ4LDYgKzI1NSw5IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPHVpbnQ2
NF90LCBGdW5jdGlvbjx2b2lkICgpPj4gbV9zYW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0
aW9uSGFuZGxlcnM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPE5ldHdvcmtSZXNvdXJjZUxv
YWRlcj4+IG1fd2FpdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRlcnM7CisjaWYgRU5BQkxFKFNFUlZF
Ul9QUkVDT05ORUNUKQorICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYWtQdHI8UHJlY29ubmVjdFRh
c2s+PiBtX3dhaXRpbmdQcmVjb25uZWN0VGFza3M7CisjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYShjb25z
dCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmNwcAppbmRleCA3MTdiZjg4MmVkNDAxYzFkYmVkNGE1NzVhZTVhZGE5NDIzMzljM2Q0Li5l
OTYzNTc2MmI2NWY1MzI0MTJmYmVmZGQxMTM3NGRjZDNhNTQ5NWQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmNwcApAQCAtNzYsNiArNzYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29k
ZXIuZW5jb2RlRW51bShjb250ZW50U25pZmZpbmdQb2xpY3kpOwogICAgIGVuY29kZXIuZW5jb2Rl
RW51bShzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGNs
aWVudENyZWRlbnRpYWxQb2xpY3kpOworICAgIGVuY29kZXIuZW5jb2RlRW51bShzaG91bGRQcmVj
b25uZWN0T25seSk7CiAgICAgZW5jb2RlciA8PCBzaG91bGRGb2xsb3dSZWRpcmVjdHM7CiAgICAg
ZW5jb2RlciA8PCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OwogICAg
IGVuY29kZXIgPDwgZGVmZXJzTG9hZGluZzsKQEAgLTE0NCw2ICsxNDUsOCBAQCBib29sIE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBO
ZXR3b3JrUmVzb3VyYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZUVudW0ocmVzdWx0LmNsaWVudENyZWRlbnRpYWxQb2xpY3kpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LnNob3VsZFByZWNvbm5l
Y3RPbmx5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LnNob3VsZEZvbGxvd1JlZGlyZWN0cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25u
ZWN0VGFzay5jcHAKaW5kZXggODY4M2M5MDQyYzVhNGM0ZmI1OWQxNTU3ZWY2NGEzNDg4YTMzY2I3
NS4uMmUxMGI4Nzg1YjVhMzlkYWNjZmE2MTBmZmM5ODM2Mzg0ODlkZWM5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKQEAgLTI4LDkzICsy
OCw4MiBAQAogCiAjaWYgRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQogCi0jaW5jbHVkZSAiQXV0
aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5l
dHdvcmtMb2FkLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgiCi0jaW5jbHVk
ZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1
ZGUgIlNlc3Npb25UcmFja2VyLmgiCi0jaW5jbHVkZSAiV2ViRXJyb3JzLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VFcnJvci5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiTmV0d29ya0Rh
dGFUYXNrQ29jb2EuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLVByZWNvbm5lY3RUYXNrOjpQcmVjb25uZWN0VGFzayhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK1ByZWNvbm5lY3RUYXNrOjpQcmVjb25uZWN0VGFzayhOZXR3b3JrTG9hZFBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VF
cnJvciYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAsIG1fdGltZW91dFRpbWVyKFt0aGlzXSB7
IGRpZEZpbmlzaChSZXNvdXJjZUVycm9yIHsgU3RyaW5nKCksIDAsIG1fdGFzay0+Zmlyc3RSZXF1
ZXN0KCkudXJsKCksIEFTQ0lJTGl0ZXJhbCgiUHJlY29ubmVjdGlvbiB0aW1lZCBvdXQiKSwgUmVz
b3VyY2VFcnJvcjo6VHlwZTo6VGltZW91dCB9KTsgfSkKKyAgICAsIG1fdGltZW91dFRpbWVyKFt0
aGlzXSB7IGRpZEZpbmlzaChSZXNvdXJjZUVycm9yIHsgU3RyaW5nKCksIDAsIG1fbmV0d29ya0xv
YWQtPnBhcmFtZXRlcnMoKS5yZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwoIlByZWNvbm5lY3Rp
b24gdGltZWQgb3V0IiksIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQgfSk7IH0pCiB7Ci0g
ICAgYXV0byogbmV0d29ya1Nlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6bmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKTsKKyAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBQcmVjb25uZWN0VGFz
azo6UHJlY29ubmVjdFRhc2soKSIsIHRoaXMpOworCisgICAgYXV0byogbmV0d29ya1Nlc3Npb24g
PSBTZXNzaW9uVHJhY2tlcjo6bmV0d29ya1Nlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpOwog
ICAgIEFTU0VSVChuZXR3b3JrU2Vzc2lvbik7CiAKLSAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAi
JXAgLSBQcmVjb25uZWN0VGFzazo6UHJlY29ubmVjdFRhc2soKSIsIHRoaXMpOwotICAgIE5ldHdv
cmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFJl
c291cmNlUmVxdWVzdCh1cmwpOwotICAgIHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHkg
PSBQcmVjb25uZWN0T25seTo6WWVzOwotICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgPSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKLSAgICBtX3Rhc2sgPSBOZXR3b3JrRGF0
YVRhc2s6OmNyZWF0ZSgqbmV0d29ya1Nlc3Npb24sICp0aGlzLCBwYXJhbWV0ZXJzKTsKLSAgICBt
X3Rhc2stPnJlc3VtZSgpOworICAgIEFTU0VSVChwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RP
bmx5ID09IFByZWNvbm5lY3RPbmx5OjpZZXMpOworICAgIG1fbmV0d29ya0xvYWQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdv
cmtTZXNzaW9uKTsKIAogICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdCg2MDAwMF9zKTsK
IH0KIAogUHJlY29ubmVjdFRhc2s6On5QcmVjb25uZWN0VGFzaygpCiB7Ci0gICAgQVNTRVJUKG1f
dGFzay0+Y2xpZW50KCkgPT0gdGhpcyk7Ci0gICAgbV90YXNrLT5jbGVhckNsaWVudCgpOwotICAg
IG1fdGFzay0+Y2FuY2VsKCk7CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6OndpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikKK3ZvaWQgUHJlY29u
bmVjdFRhc2s6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJl
c291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGly
ZWN0UmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgUHJl
Y29ubmVjdFRhc2s6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBj
b21wbGV0aW9uSGFuZGxlcikKK2F1dG8gUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZVJlc3BvbnNlJiYpIC0+IFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFNob3VsZENvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlOjpObzsKIH0KIAotdm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBS
ZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpCit2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFByZWNvbm5lY3RU
YXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKQordm9pZCBQ
cmVjb25uZWN0VGFzazo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFJFTEVBU0VfTE9HKE5ldHdvcmss
ICIlcCAtIFByZWNvbm5lY3RUYXNrOjpkaWRGaW5pc2hMb2FkaW5nIiwgdGhpcyk7CisgICAgZGlk
RmluaXNoKHsgfSk7CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZENvbXBsZXRlV2l0aEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MmKQordm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkRmFpbExvYWRpbmco
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgaWYgKGVycm9yLmlzTnVsbCgpKQot
ICAgICAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBQcmVjb25uZWN0VGFzazo6ZGlkQ29t
cGxldGUiLCB0aGlzKTsKLSAgICBlbHNlCi0gICAgICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIl
cCAtIFByZWNvbm5lY3RUYXNrOjpkaWRDb21wbGV0ZVdpdGhFcnJvciwgZXJyb3JfY29kZTogJWQi
LCB0aGlzLCBlcnJvci5lcnJvckNvZGUoKSk7Ci0KKyAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAi
JXAgLSBQcmVjb25uZWN0VGFzazo6ZGlkRmFpbExvYWRpbmcsIGVycm9yX2NvZGU6ICVkIiwgdGhp
cywgZXJyb3IuZXJyb3JDb2RlKCkpOwogICAgIGRpZEZpbmlzaChlcnJvcik7CiB9CiAKLXZvaWQg
UHJlY29ubmVjdFRhc2s6OmRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpCit2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRT
ZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcg
dG90YWxCeXRlc1RvQmVTZW50KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12
b2lkIFByZWNvbm5lY3RUYXNrOjp3YXNCbG9ja2VkKCkKK3ZvaWQgUHJlY29ubmVjdFRhc2s6OmNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBQcm90ZWN0aW9u
U3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAg
LSBQcmVjb25uZWN0VGFzazo6d2FzQmxvY2tlZCgpIiwgdGhpcyk7Ci0gICAgZGlkRmluaXNoKGJs
b2NrZWRFcnJvcihtX3Rhc2stPmZpcnN0UmVxdWVzdCgpKSk7CisgICAgaWYgKCFwYWdlSUQoKSkg
eworICAgICAgICAvLyBUaGUgcHJlY29ubmVjdCB3YXMgc3RhcnRlZCBieSB0aGUgVUlQcm9jZXNz
LgorICAgICAgICBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
ZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5n
bGV0b24oKS5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKCp0aGlzLCBwcm90
ZWN0aW9uU3BhY2UpOwogfQogCi12b2lkIFByZWNvbm5lY3RUYXNrOjpjYW5ub3RTaG93VVJMKCkK
K3ZvaWQgUHJlY29ubmVjdFRhc2s6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZShib29sIHJlc3VsdCkKIHsKLSAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAg
LSBQcmVjb25uZWN0VGFzazo6Y2Fubm90U2hvd1VSTCgpIiwgdGhpcyk7Ci0gICAgZGlkRmluaXNo
KGNhbm5vdFNob3dVUkxFcnJvcihtX3Rhc2stPmZpcnN0UmVxdWVzdCgpKSk7CisgICAgbV9uZXR3
b3JrTG9hZC0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHJl
c3VsdCk7CiB9CiAKIHZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZEZpbmlzaChjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKQEAgLTEyNCw2ICsxMTMsMTYgQEAgdm9pZCBQcmVjb25uZWN0VGFzazo6
ZGlkRmluaXNoKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGRlbGV0ZSB0aGlzOwog
fQogCit1aW50NjRfdCBQcmVjb25uZWN0VGFzazo6ZnJhbWVJRCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fbmV0d29ya0xvYWQtPnBhcmFtZXRlcnMoKS53ZWJGcmFtZUlEOworfQorCit1aW50NjRf
dCBQcmVjb25uZWN0VGFzazo6cGFnZUlEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9uZXR3b3Jr
TG9hZC0+cGFyYW1ldGVycygpLndlYlBhZ2VJRDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVkVSX1BSRUNPTk5FQ1QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKaW5kZXggYmY5ZTM5NWU4MWViMTI5MjVl
MmI4NWQ4ODMwMjU3YjBhOTZjNjEyYi4uODllYWJhYmI1NDA5YmY5OWMxMWJjYjIxYTVlNTg5ZGFk
OTBhZDVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25u
ZWN0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRh
c2suaApAQCAtMjcsMzcgKzI3LDQ1IEBACiAKICNpZiBFTkFCTEUoU0VSVkVSX1BSRUNPTk5FQ1Qp
CiAKLSNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKKyNpbmNsdWRlICJOZXR3b3JrTG9hZENs
aWVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KLQotbmFtZXNwYWNlIFBBTCB7Ci1jbGFzcyBTZXNzaW9uSUQ7Ci19Cisj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFBy
ZWNvbm5lY3RUYXNrIGZpbmFsIDogcHJpdmF0ZSBOZXR3b3JrRGF0YVRhc2tDbGllbnQgeworY2xh
c3MgTmV0d29ya0xvYWQ7CitjbGFzcyBOZXR3b3JrTG9hZFBhcmFtZXRlcnM7CisKK2NsYXNzIFBy
ZWNvbm5lY3RUYXNrIGZpbmFsIDogcHVibGljIE5ldHdvcmtMb2FkQ2xpZW50IHsKIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBQcmVjb25uZWN0VGFzayhQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik+JiYgY29tcGxldGlv
bkhhbmRsZXIgPSB7IH0pOworICAgIGV4cGxpY2l0IFByZWNvbm5lY3RUYXNrKE5ldHdvcmtMb2Fk
UGFyYW1ldGVycyYmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0geyB9KTsKICAgICB+UHJlY29u
bmVjdFRhc2soKTsKIAorICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdDsKKyAgICB1aW50NjRf
dCBwYWdlSUQoKSBjb25zdDsKKworICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlKGJvb2wpOworCisgICAgV2Vha1B0cjxQcmVjb25uZWN0VGFzaz4g
Y3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhp
cyk7IH0KKwogcHJpdmF0ZToKLSAgICAvLyBOZXR3b3JrRGF0YVRhc2tDbGllbnQuCi0gICAgdm9p
ZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYp
IGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7
Ci0gICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRl
c0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKLSAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKLSAg
ICB2b2lkIGNhbm5vdFNob3dVUkwoKSBmaW5hbDsKKyAgICAvLyBOZXR3b3JrTG9hZENsaWVudC4K
KyAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWdu
ZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CisgICAgdm9pZCBjYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoY29uc3QgV2ViQ29yZTo6UHJvdGVj
dGlvblNwYWNlJikgZmluYWw7CisgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRp
cmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
KSBmaW5hbDsKKyAgICBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZhaWxM
b2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIAogICAgIHZvaWQg
ZGlkRmluaXNoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAotICAgIFJlZlB0cjxO
ZXR3b3JrRGF0YVRhc2s+IG1fdGFzazsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xvYWQ+
IG1fbmV0d29ya0xvYWQ7CiAgICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKICAgICBXZWJDb3Jl
OjpUaW1lciBtX3RpbWVvdXRUaW1lcjsKKyAgICBXZWFrUHRyRmFjdG9yeTxQcmVjb25uZWN0VGFz
az4gbV93ZWFrRmFjdG9yeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
CmluZGV4IDc2ZjE4NjY3NWRkOWJlYjBmNzgwNGQxZGMwOTk2NDUwYjVlODYwNTkuLjJmMTViM2Q5
YTE0MTZkMWFmNmE1MDJhYjc5YWE4MDU2N2ZkOGJiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTQ2Mywx
MiArNDYzLDM4IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmRpZEZpbmlzaFBpbmdMb2FkKHVp
bnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllciwgUmVzb3VyY2VFCiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoZXJyb3IpKTsKIH0KIAotdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJl
Y29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiB1
cmwsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVj
b25uZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyhOZXR3b3JraW5nQ29udGV4dCYgY29udGV4dCwgY29u
c3QgV2ViQ29yZTo6VVJMJiB1cmwsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICB1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciA9IGdlbmVyYXRl
TG9hZElkZW50aWZpZXIoKTsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcHJlY29ubmVjdENvbXBs
ZXRpb25IYW5kbGVycy5hZGQocHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQcmVjb25uZWN0VG8oc2Vzc2lvbklELCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgdXJs
LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSksIDApOworCisgICAgYXV0byYgd2ViQ29udGV4dCA9
IHN0YXRpY19jYXN0PFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQmPihjb250ZXh0KTsKKyAgICBh
dXRvKiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHdlYkNvbnRleHQud2ViRnJhbWVMb2FkZXJDbGll
bnQoKTsKKyAgICBpZiAoIXdlYkZyYW1lTG9hZGVyQ2xpZW50KSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGludGVybmFsRXJyb3IodXJsKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgYXV0byogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKTsKKyAg
ICBpZiAoIXdlYkZyYW1lKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGludGVybmFsRXJy
b3IodXJsKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byogd2ViUGFnZSA9IHdl
YkZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGludGVybmFsRXJyb3IodXJsKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgIHBhcmFtZXRl
cnMucmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IHVybCB9OworICAgIHBhcmFtZXRlcnMud2Vi
UGFnZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnBhZ2VJRCgpIDogMDsKKyAgICBwYXJhbWV0ZXJz
LndlYkZyYW1lSUQgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5mcmFtZUlEKCkgOiAwOworICAgIHBh
cmFtZXRlcnMuc2Vzc2lvbklEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnNlc3Npb25JRCgpIDogUEFM
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKKyAgICBwYXJhbWV0ZXJzLnN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5ID0gc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7CisgICAgcGFyYW1ldGVy
cy5zaG91bGRQcmVjb25uZWN0T25seSA9IFByZWNvbm5lY3RPbmx5OjpZZXM7CisKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UHJlY29ubmVjdFRvKHBy
ZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSwgMCk7CiB9CiAKIHZv
aWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmRpZEZpbmlzaFByZWNvbm5lY3Rpb24odWludDY0X3QgcHJl
Y29ubmVjdGlvbklkZW50aWZpZXIsIFJlc291cmNlRXJyb3ImJiBlcnJvcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4
IDcyNTZiNWQzNzMwNzgyZmZiOTU1ZWFjZjQxNjlhZDBkYjU5ZDJlZDkuLjgwMzBlNjkxNDM1MjRh
YTRjOGJmZmJmNTc0MTBmZjQwZjU3Mjg3OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtNjIsNyArNjIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzdGFydFBpbmdMb2FkKFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYgb3JpZ2luYWxS
ZXF1ZXN0SGVhZGVycywgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgUGluZ0xvYWRDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2
NF90IHBpbmdMb2FkSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAotICAg
IHZvaWQgcHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmLCBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOworICAgIHZvaWQgcHJlY29ubmVjdFRvKFdlYkNvcmU6Ok5ldHdvcmtpbmdD
b250ZXh0JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRp
ZEZpbmlzaFByZWNvbm5lY3Rpb24odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImJik7CiAKICAgICB2b2lkIHN0b3JlRGVyaXZlZERhdGFUb0Nh
Y2hlKGNvbnN0IFNIQTE6OkRpZ2VzdCYgYm9keUhhc2gsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBwYXJ0aXRpb24sIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDc5NzViZDNlYTM1OWRlOWRlNjYwMjU3Y2Vi
ZGQ2YTY4NjAwYTk4NzMuLjFhN2UxYWY4OThjM2M4Y2VhMmU0MDJmYzQxMDQxNTdhYzAxNTE5ODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBw
b3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTM2OSw3ICszNjksNyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c3RhcnRQaW5nTG9hZChGcmFtZSYgZnJhbWUsIFJl
c291cmNlUmVxdWVzdCYgcmVxdQogICAgIG5ldyBQaW5nSGFuZGxlKGZyYW1lLmxvYWRlcigpLm5l
dHdvcmtpbmdDb250ZXh0KCksIHJlcXVlc3QsIG9wdGlvbnMuY3JlZGVudGlhbHMgIT0gRmV0Y2hP
cHRpb25zOjpDcmVkZW50aWFsczo6T21pdCwgUGluZ0hhbmRsZTo6VXNlc0FzeW5jQ2FsbGJhY2tz
OjpObywgb3B0aW9ucy5yZWRpcmVjdCA9PSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0OjpGb2xsb3cs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXI6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgU3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYmKQordm9pZCBX
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnByZWNvbm5lY3RUbyhOZXR3b3JraW5nQ29udGV4dCYs
IGNvbnN0IFVSTCYsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlv
bkhhbmRsZXImJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJD
b3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggZWNmYzFj
ZmIzNWVkZWM0ZTM0YzhiNmU2Njc5NWJjNjQ4ZjViMWU3MS4uYTBiYzE2N2FhMTY1NTUyNGVlZmJi
NDY0NjljZDQ1NjQ3MzA1MmY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJD
b3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCkBAIC02MSw3
ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnRQaW5nTG9hZChXZWJDb3JlOjpGcmFt
ZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJN
YXAmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVj
b25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBwcmVjb25uZWN0VG8o
V2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYp
IGZpbmFsOwogCiAgICAgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBTSEExOjpE
aWdlc3QmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImKSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNjOGYxZmI2YmE2NTkwNzBmNzJhOGMzMjkxNDliMDli
MmEzMmUxNDUuLmZlNWE1OWZkMjA4MzRjYzI2NjlmMmJjMTk4ZGJiMzc5MmQ0Yzg4YmMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsNSArMSwxOCBAQAogMjAxNy0wOS0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCisgICAgICAgIGh0dHAvdGVzdHMvcHJlY29ubmVjdC9saW5rLXJlbC1wcmVjb25uZWN0
LWh0dHBzLmh0bWwgaXMgZmxha3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NzY3MworCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5z
ZW4uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3ByZWNvbm5lY3QvbGluay1yZWwtcHJlY29ubmVj
dC1odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgIFJlYmFzZWxpbmUgdGVzdCBub3cgdGhhdCBp
dCBpcyBwYXNzaW5nLgorCisgICAgICAgICogcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnM6
CisgICAgICAgIFVza2lwIHRlc3QgYXMgaXQgc2hvdWxkIG5vIGxvbmdlciBiZSBmbGFreS4KKwor
MjAxNy0wOS0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHRlbXBvcmFyaWx5IG1hcmsgaHR0cC90ZXN0cy9wcmVjb25uZWN0L2xpbmstcmVs
LXByZWNvbm5lY3QtaHR0cHMuaHRtbCBhcyBmbGFreS4KIAogICAgICAgICAqIHBsYXRmb3JtL3dr
Mi9UZXN0RXhwZWN0YXRpb25zOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9w
cmVjb25uZWN0L2xpbmstcmVsLXByZWNvbm5lY3QtaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9wcmVjb25uZWN0L2xpbmstcmVsLXByZWNvbm5lY3QtaHR0cHMtZXhw
ZWN0ZWQudHh0CmluZGV4IDNjMTRlMjMzZjc3OGNmMWY4M2FkMGZhYTFjZDI3ZmRkMmVjM2ZhNDgu
LjdkMWU0NzgxOTYxMjgyZDY3Y2M3NDM0NTg0MzgyOTgzYTczZmM3ZTAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcHJlY29ubmVjdC9saW5rLXJlbC1wcmVjb25uZWN0LWh0dHBz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByZWNvbm5lY3QvbGlu
ay1yZWwtcHJlY29ubmVjdC1odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1DT05T
T0xFIE1FU1NBR0U6IEZhaWxlZCB0byBwcmVjb25uZWN0IHRvIGh0dHBzOi8vbG9jYWxob3N0Ojg0
NDMvLiBFcnJvcjogVGhlIGNlcnRpZmljYXRlIGZvciB0aGlzIHNlcnZlciBpcyBpbnZhbGlkLiBZ
b3UgbWlnaHQgYmUgY29ubmVjdGluZyB0byBhIHNlcnZlciB0aGF0IGlzIHByZXRlbmRpbmcgdG8g
YmUg4oCcbG9jYWxob3N04oCdIHdoaWNoIGNvdWxkIHB1dCB5b3VyIGNvbmZpZGVudGlhbCBpbmZv
cm1hdGlvbiBhdCByaXNrLgorQ09OU09MRSBNRVNTQUdFOiBTdWNjZXNzZnVseSBwcmVjb25uZWN0
ZWQgdG8gaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0My8KIFRlc3RzIHRoYXQgTGluaydzIHJlbD1wcmVj
b25uZWN0IHdvcmtzIGFzIGV4cGVjdGVkIG92ZXIgSFRUUFMuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
MjM4ZTg2ZWJjMTE4NWM2ZjgxZDQ0ZTMxZDA4Yzc5ZDJkOWRlZjlmMy4uYzYzNTBlZjdkMmEyZDBi
OWYzNmJhZjZiMWM1ZmRiMzAzMDA5MGE5MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTcxMiw3ICs3MTIsNSBAQCB3ZWJraXQub3JnL2IvMTc0NDcxIHdl
YnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxvYWQuaHRtbCBbIFBhc3MgVGlt
ZQogCiB3ZWJraXQub3JnL2IvMTc1Njc4IG1lZGlhL1czQy92aWRlby9ldmVudHMvZXZlbnRfcHJv
Z3Jlc3MuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xNzc2NzMgaHR0cC90
ZXN0cy9wcmVjb25uZWN0L2xpbmstcmVsLXByZWNvbm5lY3QtaHR0cHMuaHRtbCBbIFBhc3MgRmFp
bHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8xNzc0NDAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9yZWxheGluZy10aGUtc2FtZS1vcmlnaW4tcmVzdHJp
Y3Rpb24vZG9jdW1lbnRfZG9tYWluX3NldHRlcl9udWxsLnRlbnRhdGl2ZS5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>