<?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>195354</bug_id>
          
          <creation_ts>2019-03-05 21:09:47 -0800</creation_ts>
          <short_desc>[iOS] Frequent 1 second IPC deadlocks when showing a paste callout</short_desc>
          <delta_ts>2020-05-10 20:35:26 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1512989</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-03-05 21:09:47 -0800</bug_when>
    <thetext>&lt;rdar://problem/48624675&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512997</commentid>
    <comment_count>1</comment_count>
      <attachid>363731</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-03-05 21:57:49 -0800</bug_when>
    <thetext>Created attachment 363731
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513007</commentid>
    <comment_count>2</comment_count>
      <attachid>363731</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-03-05 23:07:13 -0800</bug_when>
    <thetext>Comment on attachment 363731
Patch

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

&gt; Source/WebKit/UIProcess/PageClient.h:399
&gt; +    virtual void handleAutocorrectionContextSync(const WebAutocorrectionContext&amp;) = 0;

This name seems ... odd. Mostly because I think I expect the -Sync suffix on things that block on sync IPC, but this isn&apos;t that!

&gt; Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:579
&gt; +    m_process-&gt;send(Messages::WebPage::RequestAutocorrectionContextSync(), m_pageID);

Oh... Even the request one is named wrong! Get rid of all the -Sync; there&apos;s nothing inherently synchronous about this message or functions related to it anymore.

This is just request, the other one is just the reply, and we just *happen* to block on the reply in the UI process.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6375
&gt; +    // FIXME: Computing and sending an autocorrection context is a workaround for the fact that autocorrection context

You know how I feel about this already but it is a clever solution to a problem with no clear alternatives.

&gt; LayoutTests/ChangeLog:10
&gt; +        Most of these tests currently encounter and rely on the 1 second IPC timeout to finish. To test this fix, force
&gt; +        `ignoreSynchronousMessagingTimeouts=true` to make them fail if the processes encounter a deadlock.

Hilarious</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513029</commentid>
    <comment_count>3</comment_count>
      <attachid>363731</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-03-06 07:27:43 -0800</bug_when>
    <thetext>Comment on attachment 363731
Patch

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

&gt;&gt; Source/WebKit/UIProcess/PageClient.h:399
&gt;&gt; +    virtual void handleAutocorrectionContextSync(const WebAutocorrectionContext&amp;) = 0;
&gt; 
&gt; This name seems ... odd. Mostly because I think I expect the -Sync suffix on things that block on sync IPC, but this isn&apos;t that!

Indeed! (see below)

&gt;&gt; Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:579
&gt;&gt; +    m_process-&gt;send(Messages::WebPage::RequestAutocorrectionContextSync(), m_pageID);
&gt; 
&gt; Oh... Even the request one is named wrong! Get rid of all the -Sync; there&apos;s nothing inherently synchronous about this message or functions related to it anymore.
&gt; 
&gt; This is just request, the other one is just the reply, and we just *happen* to block on the reply in the UI process.

That&apos;s a good point! We just happen to waitForAndDispatchImmediately when using these two.

I had named this RequestAutocorrectionContextSync() to avoid conflicting with an existing RequestAutocorrectionContext() message, but now that I think about it some more, having RequestAutocorrectionContext() is redundant. I&apos;ll remove the existing RequestAutocorrectionContext() and then rename what I call RequestAutocorrectionContextSync() here to just RequestAutocorrectionContext().

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6375
&gt;&gt; +    // FIXME: Computing and sending an autocorrection context is a workaround for the fact that autocorrection context
&gt; 
&gt; You know how I feel about this already but it is a clever solution to a problem with no clear alternatives.

Agreed, this is just a stop gap :(

We really ought to push for &lt;rdar://problem/16207002&gt; (in reality, &lt;rdar://problem/48383001&gt;).

&gt;&gt; LayoutTests/ChangeLog:10
&gt;&gt; +        `ignoreSynchronousMessagingTimeouts=true` to make them fail if the processes encounter a deadlock.
&gt; 
&gt; Hilarious

☠️🔒</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513035</commentid>
    <comment_count>4</comment_count>
      <attachid>363740</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-03-06 08:15:43 -0800</bug_when>
    <thetext>Created attachment 363740
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513036</commentid>
    <comment_count>5</comment_count>
      <attachid>363741</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-03-06 08:18:15 -0800</bug_when>
    <thetext>Created attachment 363741
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513054</commentid>
    <comment_count>6</comment_count>
      <attachid>363741</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-06 09:38:43 -0800</bug_when>
    <thetext>Comment on attachment 363741
Patch for EWS

Clearing flags on attachment: 363741

Committed r242551: &lt;https://trac.webkit.org/changeset/242551&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513055</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-06 09:38:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651109</commentid>
    <comment_count>8</comment_count>
      <attachid>363741</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-10 14:16:50 -0700</bug_when>
    <thetext>Comment on attachment 363741
Patch for EWS

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

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:3613
&gt; +        _page-&gt;process().connection()-&gt;waitForAndDispatchImmediately&lt;Messages::WebPageProxy::HandleAutocorrectionContext&gt;(_page-&gt;pageID(), 1_s, IPC::WaitForOption::InterruptWaitingIfSyncMessageArrives);
&gt; +        [self _invokePendingAutocorrectionContextHandler:WKAutocorrectionContext.emptyAutocorrectionContext];

This makes autocorrection context updating non-deterministic: sometimes UIKit gets valid context data and sometimes it get an empty context, which is indistinguishable from editing an empty element. See &lt;rdar://problem/62605526&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651140</commentid>
    <comment_count>9</comment_count>
      <attachid>363741</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-10 16:42:13 -0700</bug_when>
    <thetext>Comment on attachment 363741
Patch for EWS

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

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:3613
&gt;&gt; +        [self _invokePendingAutocorrectionContextHandler:WKAutocorrectionContext.emptyAutocorrectionContext];
&gt; 
&gt; This makes autocorrection context updating non-deterministic: sometimes UIKit gets valid context data and sometimes it get an empty context, which is indistinguishable from editing an empty element. See &lt;rdar://problem/62605526&gt;.

I assume that the 1 second IPC timeout wasn’t hit while reproducing this bug. If it is, then it seems the real regression is whatever’s causing the web process to deadlock or become otherwise unresponsive while this IPC message is being sent.

In the case where the web process is not hosed, it isn’t clear to me how this change result in non-deterministic behavior, unless `waitForAndDispatchImmediately` sometimes returns *before* invoking the IPC receiver. I’ll first try reverting out this change, to verify that it is the cause.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651170</commentid>
    <comment_count>10</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-10 20:35:26 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #9)
&gt; Comment on attachment 363741 [details]
&gt; Patch for EWS
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=363741&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:3613
&gt; &gt;&gt; +        [self _invokePendingAutocorrectionContextHandler:WKAutocorrectionContext.emptyAutocorrectionContext];
&gt; &gt; 
&gt; &gt; This makes autocorrection context updating non-deterministic: sometimes UIKit gets valid context data and sometimes it get an empty context, which is indistinguishable from editing an empty element. See &lt;rdar://problem/62605526&gt;.
&gt; 
&gt; I assume that the 1 second IPC timeout wasn’t hit while reproducing this
&gt; bug. If it is, then it seems the real regression is whatever’s causing the
&gt; web process to deadlock or become otherwise unresponsive while this IPC
&gt; message is being sent.
&gt; 
&gt; In the case where the web process is not hosed, it isn’t clear to me how
&gt; this change result in non-deterministic behavior, unless
&gt; `waitForAndDispatchImmediately` sometimes returns *before* invoking the IPC
&gt; receiver. I’ll first try reverting out this change, to verify that it is the
&gt; cause.

To follow up — this change does not appear to be the cause of &lt;rdar://problem/62605526&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363731</attachid>
            <date>2019-03-05 21:57:49 -0800</date>
            <delta_ts>2019-03-06 08:18:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195354-20190305215743.patch</filename>
            <type>text/plain</type>
            <size>23448</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDUxNjM1YzIwNDI4NzJjYzE3
YjhhYWRlMTVjNmE3OGFmM2MxZDk0NjguLjc4NzA4Yjg5MjUyNzJmMTBiMjZkNTQ5ODBkZjQ1ZTRj
NjlmMDMyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTktMDMtMDUgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gRnJlcXVlbnQg
MSBzZWNvbmQgSVBDIGRlYWRsb2NrcyB3aGVuIHNob3dpbmcgYSBwYXN0ZSBjYWxsb3V0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUzNTQKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQ4NjI0Njc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gdHJpZ2dlcmluZyBwcm9ncmFtbWF0aWMgcGFzdGUs
IHdlIGZyZXF1ZW50bHkgaGl0IGRlYWRsb2NrcyBkdWUgdG8gc3luYyBJUEMgZ29pbmcgZnJvbSB0
aGUgVUkgcHJvY2VzcyB0byB0aGUKKyAgICAgICAgd2ViIHByb2Nlc3MgYW5kIHZpY2UgdmVyc2Eu
IFdoYXQgaGFwcGVucyBpbiB0aGlzIHNjZW5hcmlvIGlzIHRoYXQgcHJpb3IgdG8gdHJpZ2dlcmlu
ZyBwcm9ncmFtbWF0aWMgcGFzdGUsIHRoZQorICAgICAgICBwYWdlIG1heSB0cnkgdG8gbW92ZSBm
b2N1cyB0byBhIGRpZmZlcmVudCBlbGVtZW50IChlLmcuIGEgaGlkZGVuIGVkaXRhYmxlIGFyZWEp
IGJlZm9yZSBjYWxsaW5nIGBleGVjQ29tbWFuZGAuCisgICAgICAgIFRoaXMgY2F1c2VzIHVzIHRv
IHNlbmQgYW4gRWxlbWVudERpZEZvY3VzIG1lc3NhZ2UgdG8gdGhlIFVJIHByb2Nlc3MsIGZvbGxv
d2VkIGJ5IFJlcXVlc3RET01QYXN0ZUFjY2Vzcy4KKworICAgICAgICBIb3dldmVyLCB1cG9uIHJl
Y2VpdmluZyBFbGVtZW50RGlkRm9jdXMsIHdlIHJlbG9hZCBpbnB1dCB2aWV3cyBhbmQgKGluIHRo
ZSBwcm9jZXNzKSBVSUtpdCByZXF1ZXN0cyB0aGUKKyAgICAgICAgYXV0b2NvcnJlY3Rpb24gY29u
dGV4dCwgd2hpY2ggd2UgaW1wbGVtZW50IGluIFdlYktpdCB1c2luZyBhIHN5bmMgbWVzc2FnZSB0
byB0aGUgd2ViIHByb2Nlc3MgZHVlIHRvCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNjIwNzAw
Mj4gYW5kIGl0cyBibG9ja2luZyBidWcgPHJkYXI6Ly9wcm9ibGVtLzQ4MzgzMDAxPi4gVGhpcyBt
ZWFucyB3ZSdsbCBlbmQgdXAgaW4gYSBzdGF0ZQorICAgICAgICB3aGVyZSBib3RoIHRoZSBVSSBw
cm9jZXNzIGFuZCB3ZWIgcHJvY2VzcyBhcmUgYmxvY2tlZCBvbiBlYWNoIG90aGVyIHdhaXRpbmcg
Zm9yIGEgc3luYyBJUEMgcmVzcG9uc2UsIGFuZCB0aGUgVUkKKyAgICAgICAgcHJvY2VzcyBpcyBo
dW5nIGZvciBhIHNlY29uZCB1bnRpbCB0aGUgSVBDIG1lc3NhZ2UgdGltZXMgb3V0LgorCisgICAg
ICAgIElkZWFsbHksIHdlIHNob3VsZCBmaXggdGhpcyBieSBhZGRyZXNzaW5nIDxyZGFyOi8vcHJv
YmxlbS8xNjIwNzAwMj4uIEhvd2V2ZXIsIHRoaXMgcmVxdWlyZXMgcG90ZW50aWFsbHkgbGFyZ2UK
KyAgICAgICAgY2hhbmdlcyBpbiBVSUtpdCAoPHJkYXI6Ly9wcm9ibGVtLzQ4MzgzMDAxPik7IGZv
ciB0aGUgdGltZSBiZWluZywgd29yayBhcm91bmQgdGhpcyBkZWFkbG9jayBieSByZWZhY3Rvcmlu
ZworICAgICAgICBzeW5jaHJvbm91cyBhdXRvY29ycmVjdGlvbiBjb250ZXh0IHJlcXVlc3RzIHN1
Y2ggdGhhdCB0aGV5IGNhbiBiZSByZXNvbHZlZCBieSBhbiBvdXQtb2YtYmFuZCBJUEMgcmVzcG9u
c2UKKyAgICAgICAgKEhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dFN5bmMpLiBUaGVuIHByaW9y
IHRvIHJlcXVlc3RpbmcgRE9NIHBhc3RlIGFjY2VzcywgcHJlZW1wdGl2ZWx5IHNlbmQgYQorICAg
ICAgICBIYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHRTeW5jIG1lc3NhZ2UgdG8gdGhlIFVJIHBy
b2Nlc3MgdG8gdW5ibG9jayBhbnkgcGVuZGluZyBzeW5jaHJvbm91cyBhdXRvY29ycmVjdGlvbgor
ICAgICAgICBjb250ZXh0IHJlcXVlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmhhbmRsZUF1dG9j
b3JyZWN0aW9uQ29udGV4dFN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLmg6CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSBmb3IgV0tDb250
ZW50VmlldyB0byByZW1lbWJlciBpdHMgY3VycmVudCBwZW5kaW5nIGF1dG9jb3JyZWN0aW9uIGNv
bnRleHQgY29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICBUaGlzIGlzIGludm9rZWQgYW5kIGNs
ZWFyZWQgb3V0IGluIGAtX2ludm9rZVBlbmRpbmdTeW5jaHJvbm91c0F1dG9jb3JyZWN0aW9uQ29u
dGV4dEhhbmRsZXI6YC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9pbnZva2VQZW5kaW5nU3lu
Y2hyb25vdXNBdXRvY29ycmVjdGlvbkNvbnRleHRIYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IHJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2hhbmRsZUF1dG9jb3JyZWN0aW9uQ29u
dGV4dFN5bmM6XSk6CisKKyAgICAgICAgSGFuZGxlIGEgc3luYyBhdXRvY29ycmVjdGlvbiBjb250
ZXh0IHJlc3BvbnNlLiBUaGlzIGlzIGludm9rZWQgd2hlbiB0aGUgd2ViIHByb2Nlc3MgZWl0aGVy
IGhhbmRsZXMgYSBzeW5jCisgICAgICAgIGF1dG9jb3JyZWN0aW9uIGNvbnRleHQgbWVzc2FnZSwg
b3Igd2hlbiBpdCBwcmVlbXB0aXZlbHkgc2VuZHMgYW4gYXV0b2NvcnJlY3Rpb24gY29udGV4dCBi
ZWZvcmUgcmVxdWVzdGluZyBET00KKyAgICAgICAgcGFzdGUgYWNjZXNzLgorCisgICAgICAgICgr
W1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGVtcHR5QXV0b2NvcnJlY3Rpb25Db250ZXh0XSk6CisK
KyAgICAgICAgQWRkIGEgaGVscGVyIHRvIGNyZWF0ZSBhbiBlbXB0eSBhdXRvY29ycmVjdGlvbiBj
b250ZXh0LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4
dFN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZUF1dG9jb3JyZWN0
aW9uQ29udGV4dFN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF1dG9jb3Jy
ZWN0aW9uQ29udGV4dFN5bmMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdERPTVBhc3Rl
QWNjZXNzKToKKworICAgICAgICBTZW5kIFdlYlBhZ2VQcm94eTo6SGFuZGxlQXV0b2NvcnJlY3Rp
b25Db250ZXh0U3luYywgYW5kIGFkZCBhIEZJWE1FIHJlZmVyZW5jaW5nIDxyZGFyOi8vcHJvYmxl
bS8xNjIwNzAwMj4uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCisgICAg
ICAgIFNwbGl0IHRoZSBBdXRvY29ycmVjdGlvbkNvbnRleHRTeW5jIElQQyBtZXNzYWdlIGludG8g
UmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dFN5bmMgYW5kCisgICAgICAgIEhhbmRsZUF1dG9j
b3JyZWN0aW9uQ29udGV4dFN5bmMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RBdXRvY29y
cmVjdGlvbkNvbnRleHRTeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXV0b2NvcnJl
Y3Rpb25Db250ZXh0U3luYyk6IERlbGV0ZWQuCisKIDIwMTktMDMtMDQgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29udGVudENoYW5nZU9ic2VydmVyXSBJbnRy
b2R1Y2UgZml4ZWQgZHVyYXRpb24gY29udGVudCBvYnNlcnZhdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCmluZGV4IDg3ZmUxZDQ4ZGQwYTQzMzdlNWUxMzAwOGZiM2QzODAzODRm
NzJiYzUuLjllYTJmYjQ2YmUwYzRhOWEzYWYwNjQ5NWY3MTcxYmQ0NTJjNzYyMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTEzMCw2ICsxMzAsNyBAQCBlbnVtIGNsYXNz
IENvbnRpbnVlVW5zYWZlTG9hZCA6IGJvb2wgeyBObywgWWVzIH07CiAKIHN0cnVjdCBGb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uOwogc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uOworc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dDsKIHN0cnVjdCBXZWJIaXRUZXN0
UmVzdWx0RGF0YTsKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCkBAIC0zOTQsNiArMzk1LDgg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZUluc3BlY3Rvck5vZGVTZWFyY2go
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCkgPSAw
OworCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dFN5bmMoY29u
c3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0JikgPSAwOwogI2VuZGlmCiAKICAgICAvLyBBdXhp
bGlhcnkgQ2xpZW50IENyZWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IDIxNTVkMTQyZTQ0ZmJhNTQ0NThiYzcxZjUzOTFiZTZlMDliNGU4MDMuLjFlNDU4MDM0
ZTgzNmIzODI1Zjk1ODFmZWQwNTNiYTU0OTcwYzViMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC02NTEsNyArNjUxLDggQEAgcHVibGljOgogICAgIHZvaWQgYXBw
bHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxUZXh0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKTsKICAgICBib29sIGFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3Ry
aW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCk7CiAgICAgdm9pZCBy
ZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQXV0b2Nv
cnJlY3Rpb25Db250ZXh0JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIFdlYkF1dG9j
b3JyZWN0aW9uQ29udGV4dCBhdXRvY29ycmVjdGlvbkNvbnRleHRTeW5jKCk7CisgICAgdm9pZCBy
ZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0U3luYygpOworICAgIHZvaWQgaGFuZGxlQXV0b2Nv
cnJlY3Rpb25Db250ZXh0U3luYyhjb25zdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmKTsKICAg
ICB2b2lkIHJlcXVlc3REaWN0YXRpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOwogICAgIHZvaWQgcmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRl
eHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0ZWRUZXh0
KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlODY0
ZDRhOTZmYjY3ZjlhNTNmMWQ2MDljNjlmNzc2NTIxMzg0YTAwLi41YjAyNDE2NjY5YTIzOTliYjUx
NTI3OGE5MjhlODI1OGQ4MDBjMWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC00MTcsNiArNDE3LDcgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZVByb3h5IHsKICAgICBEaXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpCiAKICAgICBV
cGRhdGVTdHJpbmdGb3JGaW5kKFN0cmluZyBmaW5kU3RyaW5nKQorICAgIEhhbmRsZUF1dG9jb3Jy
ZWN0aW9uQ29udGV4dFN5bmMoc3RydWN0IFdlYktpdDo6V2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0
IGNvbnRleHQpCiAjZW5kaWYKIAogICAgIERpZENoYW5nZUluc3BlY3RvckZyb250ZW5kQ291bnQo
dWludDY0X3QgY291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oCmluZGV4IDlmZWRjNjg5MTAwNTMwMWMxNTExNTMxMjJmM2YxZDQ2ZDVhNzUw
MzQuLjg2Y2RiNDBjMGZmNzhhNTJjMTRkZDFiOTYyNGYxNzk0YzIzODU3YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0yMzYsNiAr
MjM2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZURyYWdDYXJldFJlY3QoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgcHJldmlvdXNDYXJldFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGNhcmV0UmVjdCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAorICAgIHZvaWQgaGFuZGxlQXV0b2Nv
cnJlY3Rpb25Db250ZXh0U3luYyhjb25zdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmKSBmaW5h
bDsKKwogICAgIHZvaWQgZGlkRmluaXNoUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50cygp
IGZpbmFsIHsgfQogCiAjaWYgSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggZDk1NGU3N2FkYzNmZDc0ZWI5
OTc2YzAyMjFjNTNlZDA2NmU1ODE1OC4uYzU3NjUwMWQxZTJmYjYxNDBhNmIwNDMyOWVkZDYxMTZk
ZWE4ZjhlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbQpAQCAtODU3LDYgKzg1NywxMSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpjYW5j
ZWxQb2ludGVyc0Zvckdlc3R1cmVSZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6ZXIqIGdlcwog
fQogI2VuZGlmCiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmhhbmRsZUF1dG9jb3JyZWN0aW9uQ29u
dGV4dFN5bmMoY29uc3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0JiBjb250ZXh0KQoreworICAg
IFttX2NvbnRlbnRWaWV3IF9oYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHRTeW5jOmNvbnRleHRd
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggNzczMDYzYTg3ODIzNzI3MmYwOTE2NzdiMDU1MjBmZGQ2
NTIyNzE5My4uYmVmNTZhNjI1OWNmZmMwN2IzYjJkMjY3ZDIyNWJmZjgxMmM3MGY4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaApAQCAtODUsNiArODUsNyBAQCBjbGFzcyBOYXRpdmVXZWJUb3VjaEV2ZW50OwogY2xh
c3MgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjsKIGNsYXNzIFdlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CitzdHJ1Y3QgV2ViQXV0b2NvcnJl
Y3Rpb25Db250ZXh0OwogfQogCiBAY2xhc3MgX1VJTG9va3VwR2VzdHVyZVJlY29nbml6ZXI7CkBA
IC0zMTgsNiArMzE5LDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKIAogICAgIEJP
T0wgX2hhc1NldFVwSW50ZXJhY3Rpb25zOwogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSk+IF9kb21QYXN0ZVJlcXVlc3RIYW5kbGVyOwor
ICAgIEJsb2NrUHRyPHZvaWQoVUlXS0F1dG9jb3JyZWN0aW9uQ29udGV4dCAqKT4gX3BlbmRpbmdT
eW5jaHJvbm91c0F1dG9jb3JyZWN0aW9uQ29udGV4dEhhbmRsZXI7CiAKICNpZiBFTkFCTEUoREFU
QV9JTlRFUkFDVElPTikKICAgICBXZWJLaXQ6OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZSBfZHJh
Z0Ryb3BJbnRlcmFjdGlvblN0YXRlOwpAQCAtNDY1LDYgKzQ2Nyw4IEBAIEZPUl9FQUNIX1BSSVZB
VEVfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1Jf
V0VCX1ZJRVcpCiAtIChXS0RyYXdpbmdDb29yZGluYXRvciAqKV9kcmF3aW5nQ29vcmRpbmF0b3I7
CiAjZW5kaWYKIAorLSAodm9pZClfaGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0U3luYzooY29u
c3QgV2ViS2l0OjpXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmKWNvbnRleHQ7CisKIEBlbmQKIAog
QGludGVyZmFjZSBXS0NvbnRlbnRWaWV3IChXS1Rlc3RpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAz
N2IzNjIwM2M0ZDExMGZiMmI5NTc5YmU1ZTMxZTA5ZDcyNTc4YWIyLi41MmViNDEwM2MzZDQ5NmQz
ZTI4MTFhZTc2YmUzZjU2ZmUzYThlYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTI3Niw2ICsyNzYs
NyBAQCArIChXS0F1dG9jb3JyZWN0aW9uUmVjdHMgKilhdXRvY29ycmVjdGlvblJlY3RzV2l0aFJl
Y3RzOihDR1JlY3QpZmlyc3RSZWN0IGxhc3RSZQogQGVuZAogCiBAaW50ZXJmYWNlIFdLQXV0b2Nv
cnJlY3Rpb25Db250ZXh0IDogVUlXS0F1dG9jb3JyZWN0aW9uQ29udGV4dAorKyAoV0tBdXRvY29y
cmVjdGlvbkNvbnRleHQgKillbXB0eUF1dG9jb3JyZWN0aW9uQ29udGV4dDsKICsgKFdLQXV0b2Nv
cnJlY3Rpb25Db250ZXh0ICopYXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbnRleHQ6KGNvbnN0
IFdlYktpdDo6V2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Jiljb250ZXh0OwogQGVuZAogCkBAIC0z
NTc5LDYgKzM1ODAsMTUgQEAgLSAodm9pZClhcHBseUF1dG9jb3JyZWN0aW9uOihOU1N0cmluZyAq
KWNvcnJlY3Rpb24gdG9TdHJpbmc6KE5TU3RyaW5nICopaW5wdXQgd2kKICAgICB9KTsKIH0KIAor
LSAoQk9PTClfaW52b2tlUGVuZGluZ1N5bmNocm9ub3VzQXV0b2NvcnJlY3Rpb25Db250ZXh0SGFu
ZGxlcjooV0tBdXRvY29ycmVjdGlvbkNvbnRleHQgKiljb250ZXh0Cit7CisgICAgaWYgKGF1dG8g
aGFuZGxlciA9IFdURk1vdmUoX3BlbmRpbmdTeW5jaHJvbm91c0F1dG9jb3JyZWN0aW9uQ29udGV4
dEhhbmRsZXIpKSB7CisgICAgICAgIGhhbmRsZXIoY29udGV4dCk7CisgICAgICAgIHJldHVybiBZ
RVM7CisgICAgfQorICAgIHJldHVybiBOTzsKK30KKwogLSAodm9pZClyZXF1ZXN0QXV0b2NvcnJl
Y3Rpb25Db250ZXh0V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShVSVdLQXV0b2NvcnJl
Y3Rpb25Db250ZXh0ICphdXRvY29ycmVjdGlvbkNvbnRleHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7
CiAgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikgewpAQCAtMzU4OCw3ICszNTk4LDcgQEAgLSAo
dm9pZClyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShVSVdLQXV0b2NvcnIKIAogI2lmIFVTRShVSUtJVF9LRVlCT0FSRF9BRERJVElPTlMp
CiAgICAgaWYgKFtzZWxmIF9kaXNhYmxlQXV0b21hdGljS2V5Ym9hcmRVSV0pIHsKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoW1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1dG9jb3JyZWN0aW9u
Q29udGV4dFdpdGhDb250ZXh0OihXZWJLaXQ6OldlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCB7IH0p
XSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtXS0F1dG9jb3JyZWN0aW9uQ29udGV4dCBl
bXB0eUF1dG9jb3JyZWN0aW9uQ29udGV4dF0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2Vu
ZGlmCkBAIC0zNTk3LDcgKzM2MDcsMTEgQEAgLSAodm9pZClyZXF1ZXN0QXV0b2NvcnJlY3Rpb25D
b250ZXh0V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShVSVdLQXV0b2NvcnIKICAgICBj
b25zdCBib29sIHVzZVN5bmNSZXF1ZXN0ID0gdHJ1ZTsKIAogICAgIGlmICh1c2VTeW5jUmVxdWVz
dCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbV0tBdXRvY29ycmVjdGlvbkNvbnRleHQg
YXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbnRleHQ6X3BhZ2UtPmF1dG9jb3JyZWN0aW9uQ29u
dGV4dFN5bmMoKV0pOworICAgICAgICBBU1NFUlQoIV9wZW5kaW5nU3luY2hyb25vdXNBdXRvY29y
cmVjdGlvbkNvbnRleHRIYW5kbGVyKTsKKyAgICAgICAgX3BlbmRpbmdTeW5jaHJvbm91c0F1dG9j
b3JyZWN0aW9uQ29udGV4dEhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICAgICAgX3Bh
Z2UtPnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHRTeW5jKCk7CisgICAgICAgIF9wYWdlLT5w
cm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHRTeW5jPihfcGFn
ZS0+cGFnZUlEKCksIDFfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZT
eW5jTWVzc2FnZUFycml2ZXMpOworICAgICAgICBbc2VsZiBfaW52b2tlUGVuZGluZ1N5bmNocm9u
b3VzQXV0b2NvcnJlY3Rpb25Db250ZXh0SGFuZGxlcjpbV0tBdXRvY29ycmVjdGlvbkNvbnRleHQg
ZW1wdHlBdXRvY29ycmVjdGlvbkNvbnRleHRdXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMzYwNiw2ICszNjIwLDExIEBAIC0gKHZvaWQpcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4
dFdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlXS0F1dG9jb3JyCiAgICAgfSk7CiB9
CiAKKy0gKHZvaWQpX2hhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dFN5bmM6KGNvbnN0IFdlYktp
dDo6V2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Jiljb250ZXh0Cit7CisgICAgW3NlbGYgX2ludm9r
ZVBlbmRpbmdTeW5jaHJvbm91c0F1dG9jb3JyZWN0aW9uQ29udGV4dEhhbmRsZXI6W1dLQXV0b2Nv
cnJlY3Rpb25Db250ZXh0IGF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhDb250ZXh0OmNvbnRleHRd
XTsKK30KKwogLy8gVUlXZWJGb3JtQWNjZXNzb3J5RGVsZWdhdGUKIC0gKHZvaWQpYWNjZXNzb3J5
RG9uZQogewpAQCAtNzQxMCw2ICs3NDI5LDExIEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdL
QXV0b2NvcnJlY3Rpb25Db250ZXh0CiAKKysgKFdLQXV0b2NvcnJlY3Rpb25Db250ZXh0ICopZW1w
dHlBdXRvY29ycmVjdGlvbkNvbnRleHQKK3sKKyAgICByZXR1cm4gW3NlbGYgYXV0b2NvcnJlY3Rp
b25Db250ZXh0V2l0aENvbnRleHQ6V2ViS2l0OjpXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQgeyB9
XTsKK30KKwogKyAoV0tBdXRvY29ycmVjdGlvbkNvbnRleHQgKilhdXRvY29ycmVjdGlvbkNvbnRl
eHRXaXRoQ29udGV4dDooY29uc3QgV2ViS2l0OjpXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmKXdl
YkNvbnRleHQKIHsKICAgICBXS0F1dG9jb3JyZWN0aW9uQ29udGV4dCAqY29udGV4dCA9IFtbV0tB
dXRvY29ycmVjdGlvbkNvbnRleHQgYWxsb2NdIGluaXRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNmQxODVmZGYwOTczZDhiZTJhM2I0
YjZkNTM3ZjUwZDg0ZTU4NjhkOC4uMTdhMjU4N2YyNjU5YzA5YmFhMTg3ZDI1OGI1NTQ2ODBiODVk
NDhkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCkBAIC01NzQsMTEgKzU3NCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF1dG9j
b3JyZWN0aW9uQ29udGV4dChGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkF1dG9jb3JyZQogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29u
dGV4dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi1XZWJBdXRvY29ycmVjdGlvbkNvbnRl
eHQgV2ViUGFnZVByb3h5OjphdXRvY29ycmVjdGlvbkNvbnRleHRTeW5jKCkKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0U3luYygpCiB7Ci0gICAgV2ViQXV0
b2NvcnJlY3Rpb25Db250ZXh0IGNvbnRleHQ7Ci0gICAgbV9wcm9jZXNzLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFnZTo6QXV0b2NvcnJlY3Rpb25Db250ZXh0U3luYygpLCBNZXNzYWdlczo6V2Vi
UGFnZTo6QXV0b2NvcnJlY3Rpb25Db250ZXh0U3luYzo6UmVwbHkoY29udGV4dCksIG1fcGFnZUlE
KTsKLSAgICByZXR1cm4gY29udGV4dDsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHRTeW5jKCksIG1fcGFnZUlEKTsKK30K
Kwordm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dFN5bmMoY29u
c3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0JiBjb250ZXh0KQoreworICAgIHBhZ2VDbGllbnQo
KS5oYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHRTeW5jKGNvbnRleHQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggYzM4ODI4MWM0Zjk2MzZkZTk2NzhhZjlkNzliZTllYWRhOTM1
ZjBlMi4uZjU0ZTM2MjE0OWQxMGMwYmJkYjQxNjYzMGY2N2Y2MmQ1NDczZmQwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI2OCw2ICsyNjgs
NyBAQAogI2luY2x1ZGUgIkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmgiCiAjaW5j
bHVkZSAiSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaCIKICNpbmNsdWRlICJSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5oIgorI2luY2x1ZGUgIldlYkF1dG9jb3JyZWN0aW9uQ29udGV4
dC5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ljb24uaD4KICNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJLmg+CkBA
IC02MzcwLDYgKzYzNzEsMTMgQEAgdm9pZCBXZWJQYWdlOjpkaWRDb21wbGV0ZVNoYXJlU2hlZXQo
Ym9vbCB3YXNHcmFudGVkLCBTaGFyZVNoZWV0Q2FsbGJhY2tJRCBjYWxsYmEKIFdlYkNvcmU6OkRP
TVBhc3RlQWNjZXNzUmVzcG9uc2UgV2ViUGFnZTo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0
IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKIHsKICAgICBhdXRvIHJlc3BvbnNlID0gV2ViQ29y
ZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZTsKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorICAgIC8vIEZJWE1FOiBDb21wdXRpbmcgYW5kIHNlbmRpbmcgYW4gYXV0
b2NvcnJlY3Rpb24gY29udGV4dCBpcyBhIHdvcmthcm91bmQgZm9yIHRoZSBmYWN0IHRoYXQgYXV0
b2NvcnJlY3Rpb24gY29udGV4dAorICAgIC8vIHJlcXVlc3RzIG9uIGlPUyBhcmUgY3VycmVudGx5
IHN5bmNocm9ub3VzIGluIHRoZSB3ZWIgcHJvY2Vzcy4gVGhpcyBhbGxvd3MgdXMgdG8gaW1tZWRp
YXRlbHkgZnVsZmlsbCBwZW5kaW5nCisgICAgLy8gYXV0b2NvcnJlY3Rpb24gY29udGV4dCByZXF1
ZXN0cyBpbiB0aGUgVUkgcHJvY2VzcyBvbiBpT1MgdXBvbiBoYW5kbGluZyBhIERPTSBwYXN0ZSBy
ZXF1ZXN0LiBUaGlzIHdvcmthcm91bmQgY2FuCisgICAgLy8gYmUgcmVtb3ZlZCBvbmNlIDxyZGFy
Oi8vcHJvYmxlbS8xNjIwNzAwMj4gaXMgcmVzb2x2ZWQuCisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpIYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHRTeW5jKGF1dG9jb3JyZWN0aW9u
Q29udGV4dCgpKSk7CisjZW5kaWYKICAgICBzZW5kU3luY1dpdGhEZWxheWVkUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdERPTVBhc3RlQWNjZXNzKHJlY3RGb3JFbGVtZW50QXRJ
bnRlcmFjdGlvbkxvY2F0aW9uKCksIG9yaWdpbklkZW50aWZpZXIpLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSZXF1ZXN0RE9NUGFzdGVBY2Nlc3M6OlJlcGx5KHJlc3BvbnNlKSk7CiAgICAgcmV0
dXJuIHJlc3BvbnNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IDI2ZDdhOTljNDdlNjAwMDkxMTllZjE4MDU3NWMyYjkwMTFhMGZmZWMuLmM0MDQ1
OTBmNjg2ZjVlNTczOWE4YmU0NGVhOTIxMGU0Y2EwZGI4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTY0Miw3ICs2NDIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29u
c3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc3luY0FwcGx5
QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9y
aWdpbmFsVGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBy
ZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KENhbGxiYWNrSUQpOwotICAgIHZvaWQgYXV0b2Nv
cnJlY3Rpb25Db250ZXh0U3luYyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dG9jb3JyZWN0
aW9uQ29udGV4dCYmKT4mJik7CisgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0
U3luYygpOwogICAgIHZvaWQgZ2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlv
bkluZm9ybWF0aW9uUmVxdWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb24mJik+JiYpOwogICAgIHZvaWQgcmVxdWVzdFBvc2l0aW9uSW5m
b3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmKTsKICAgICB2b2lk
IHN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCmluZGV4IGNiMGI1NzA5MzM2NGMwZTU1NDI0M2Y5MzA5YzM5MjVkNTQ4
YWY0ZjAuLjllNzcwNGUwY2EzNjE0ODY2NDg1ZGQ4YTViYTdjMmY5ZWY1YmI3YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgpAQCAtNzksNyArNzksNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBBcHBseUF1dG9jb3JyZWN0aW9uKFN0cmluZyBjb3JyZWN0aW9uLCBTdHJpbmcgb3JpZ2lu
YWxUZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBTeW5jQXBwbHlBdXRv
Y29ycmVjdGlvbihTdHJpbmcgY29ycmVjdGlvbiwgU3RyaW5nIG9yaWdpbmFsVGV4dCkgLT4gKGJv
b2wgYXV0b2NvcnJlY3Rpb25BcHBsaWVkKSBEZWxheWVkCiAgICAgUmVxdWVzdEF1dG9jb3JyZWN0
aW9uQ29udGV4dChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBBdXRvY29ycmVj
dGlvbkNvbnRleHRTeW5jKCkgLT4gKHN0cnVjdCBXZWJLaXQ6OldlYkF1dG9jb3JyZWN0aW9uQ29u
dGV4dCBjb250ZXh0KSBEZWxheWVkCisgICAgUmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dFN5
bmMoKQogICAgIFJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbigpIC0+IChWZWN0b3I8
V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0cykgQXN5bmMKICAgICBHZXRQb3NpdGlvbkluZm9ybWF0
aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3Qp
IC0+IChzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBpbmZv
cm1hdGlvbikgRGVsYXllZAogICAgIFJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBX
ZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDAx
MDU3NjgwYjY5ZmNkNDhhNTJiOWVlZmFiMjgwMWI5OGI0ZDgzMGQuLjFiMmQ4ZjQ2NWVkOWQxZTM3
MmFhNDQzN2Y4NjNhZTdiZTUzZjA5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMTY1LDkgKzIxNjUsOSBAQCB2b2lk
IFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QXV0b2NvcnJlY3Rpb25Db250
ZXh0Q2FsbGJhY2soYXV0b2NvcnJlY3Rpb25Db250ZXh0KCksIGNhbGxiYWNrSUQpKTsKIH0KIAot
dm9pZCBXZWJQYWdlOjphdXRvY29ycmVjdGlvbkNvbnRleHRTeW5jKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0U3luYygpCiB7Ci0gICAg
Y29tcGxldGlvbkhhbmRsZXIoYXV0b2NvcnJlY3Rpb25Db250ZXh0KCkpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0U3luYyhhdXRv
Y29ycmVjdGlvbkNvbnRleHQoKSkpOwogfQogCiBzdGF0aWMgSFRNTEFuY2hvckVsZW1lbnQqIGNv
bnRhaW5pbmdMaW5rRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRhODE4NDZlZjNi
YzM1YzYyZTkxOTdlMDA0MDM0ZDliYTNjZjFmNWQuLmExYmUyMDBkNzEwYmY2MjA2ZjBlOGQwZjMx
MTRlYmVhODAzM2VhNjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOS0wMy0wNSAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBGcmVxdWVu
dCAxIHNlY29uZCBJUEMgZGVhZGxvY2tzIHdoZW4gc2hvd2luZyBhIHBhc3RlIGNhbGxvdXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM1NAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDg2MjQ2NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTW9zdCBvZiB0aGVzZSB0ZXN0cyBjdXJyZW50bHkgZW5j
b3VudGVyIGFuZCByZWx5IG9uIHRoZSAxIHNlY29uZCBJUEMgdGltZW91dCB0byBmaW5pc2guIFRv
IHRlc3QgdGhpcyBmaXgsIGZvcmNlCisgICAgICAgIGBpZ25vcmVTeW5jaHJvbm91c01lc3NhZ2lu
Z1RpbWVvdXRzPXRydWVgIHRvIG1ha2UgdGhlbSBmYWlsIGlmIHRoZSBwcm9jZXNzZXMgZW5jb3Vu
dGVyIGEgZGVhZGxvY2suCisKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvaW9zL2RvbS1w
YXN0ZS1jb25maXJtYXRpb24uaHRtbDoKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvaW9z
L2RvbS1wYXN0ZS1jb25zZWN1dGl2ZS1jb25maXJtYXRpb25zLmh0bWw6CisgICAgICAgICogZWRp
dGluZy9wYXN0ZWJvYXJkL2lvcy9kb20tcGFzdGUtcmVqZWN0aW9uLmh0bWw6CisgICAgICAgICog
ZWRpdGluZy9wYXN0ZWJvYXJkL2lvcy9kb20tcGFzdGUtcmVxdWlyZXMtdXNlci1nZXN0dXJlLmh0
bWw6CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2lvcy9kb20tcGFzdGUtc2FtZS1vcmln
aW4uaHRtbDoKKwogMjAxOS0wMy0wNCAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtXZWIgR1BVXSBCbGl0dGluZyBmdW5jdGlvbiBwcm90b3R5cGVzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvaW9zL2RvbS1wYXN0ZS1jb25m
aXJtYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBh
c3RlLWNvbmZpcm1hdGlvbi5odG1sCmluZGV4IDAwYzIzM2Q1MzZlNmQyMThmZThlYzhjN2VjOTYz
OWNlNTRiYTgwOTAuLjQ3MmY5NGQxYjgwNDJhZjdlYmFjNDExZDUxMTMyYjVkZDgxZTk5YWEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBhc3RlLWNv
bmZpcm1hdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3Mv
ZG9tLXBhc3RlLWNvbmZpcm1hdGlvbi5odG1sCkBAIC0xLDQgKzEsNCBAQAotPCFET0NUWVBFIGh0
bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZG9tUGFzdGVBbGxvd2VkPWZhbHNlIHVzZUZs
ZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRl
c3QtcnVubmVyIFsgZG9tUGFzdGVBbGxvd2VkPWZhbHNlIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1
ZSBpZ25vcmVTeW5jaHJvbm91c01lc3NhZ2luZ1RpbWVvdXRzPXRydWUgXSAtLT4KIDxodG1sPgog
PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlh
bC1zY2FsZT0xIj4KIDxoZWFkPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2lvcy9kb20tcGFzdGUtY29uc2VjdXRpdmUtY29uZmlybWF0aW9ucy5odG1sIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2lvcy9kb20tcGFzdGUtY29uc2VjdXRpdmUtY29u
ZmlybWF0aW9ucy5odG1sCmluZGV4IDVjZWViYmQ0MzJkNzFhNWQzNzE4YzhkZTY3ZTMxMGEzMjQ2
NGNiYTkuLmIzZDFhZTY5ZjA4MmRhNThlM2RiZDE4M2U0MzI0YTM4MDM4YWVhNWIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBhc3RlLWNvbnNlY3V0
aXZlLWNvbmZpcm1hdGlvbnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvaW9zL2RvbS1wYXN0ZS1jb25zZWN1dGl2ZS1jb25maXJtYXRpb25zLmh0bWwKQEAgLTEsNCAr
MSw0IEBACi08IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBkb21QYXN0
ZUFsbG93ZWQ9ZmFsc2UgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8IURPQ1RZUEUg
aHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBkb21QYXN0ZUFsbG93ZWQ9ZmFsc2UgdXNl
RmxleGlibGVWaWV3cG9ydD10cnVlIGlnbm9yZVN5bmNocm9ub3VzTWVzc2FnaW5nVGltZW91dHM9
dHJ1ZSBdIC0tPgogPGh0bWw+CiA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9
ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgogPGhlYWQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvaW9zL2RvbS1wYXN0ZS1yZWplY3Rpb24uaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBhc3RlLXJlamVjdGlvbi5o
dG1sCmluZGV4IDczZDJmOGYwNDYyYjAxNjcyMjMyMzY0ZTk1YWE0OGE5YzI0Mjk2M2IuLjM4MzZl
Nzk1ZjJjZjIyN2U4NTdkODE5YjhlN2NmODJjMGE0YzAxZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBhc3RlLXJlamVjdGlvbi5odG1sCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBhc3RlLXJlamVjdGlvbi5o
dG1sCkBAIC0xLDQgKzEsNCBAQAotPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVu
bmVyIFsgZG9tUGFzdGVBbGxvd2VkPWZhbHNlIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0t
PgorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZG9tUGFzdGVBbGxv
d2VkPWZhbHNlIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBpZ25vcmVTeW5jaHJvbm91c01lc3Nh
Z2luZ1RpbWVvdXRzPXRydWUgXSAtLT4KIDxodG1sPgogPG1ldGEgbmFtZT0idmlld3BvcnQiIGNv
bnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KIDxoZWFkPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2lvcy9kb20tcGFzdGUtcmVx
dWlyZXMtdXNlci1nZXN0dXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
aW9zL2RvbS1wYXN0ZS1yZXF1aXJlcy11c2VyLWdlc3R1cmUuaHRtbAppbmRleCBiZGY0ODliZjRh
Zjg4N2ExZDA5Y2NiOThjMTNhZGFjOTBkNDE4YWYzLi5hYzRlN2QzZjFmYTkxMDc1ZWE3NjBlYTgz
MGY2ZTMyN2UxYmEwYzM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvaW9zL2RvbS1wYXN0ZS1yZXF1aXJlcy11c2VyLWdlc3R1cmUuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvaW9zL2RvbS1wYXN0ZS1yZXF1aXJlcy11c2VyLWdlc3R1
cmUuaHRtbApAQCAtMSw0ICsxLDQgQEAKLTwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0
LXJ1bm5lciBbIGRvbVBhc3RlQWxsb3dlZD1mYWxzZSB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUg
XSAtLT4KKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGRvbVBhc3Rl
QWxsb3dlZD1mYWxzZSB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgaWdub3JlU3luY2hyb25vdXNN
ZXNzYWdpbmdUaW1lb3V0cz10cnVlIF0gLS0+CiA8aHRtbD4KIDxtZXRhIG5hbWU9InZpZXdwb3J0
IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CiA8aGVhZD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBhc3Rl
LXNhbWUtb3JpZ2luLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvaW9zL2Rv
bS1wYXN0ZS1zYW1lLW9yaWdpbi5odG1sCmluZGV4IGU5NmEyMzkzMjAzNjRkN2IyNTAxNGJkYzg5
MmY2N2U4MmI1OTcxZWYuLmFjYTBkNjlhMzQzYWEyODk5OGRiMDgxMjk5NmYyNTc2ZmFhNDdhYTMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBhc3Rl
LXNhbWUtb3JpZ2luLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2lv
cy9kb20tcGFzdGUtc2FtZS1vcmlnaW4uaHRtbApAQCAtMSw0ICsxLDQgQEAKLTwhRE9DVFlQRSBo
dG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGRvbVBhc3RlQWxsb3dlZD1mYWxzZSB1c2VG
bGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10
ZXN0LXJ1bm5lciBbIGRvbVBhc3RlQWxsb3dlZD1mYWxzZSB1c2VGbGV4aWJsZVZpZXdwb3J0PXRy
dWUgaWdub3JlU3luY2hyb25vdXNNZXNzYWdpbmdUaW1lb3V0cz10cnVlIF0gLS0+CiA8aHRtbD4K
IDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRp
YWwtc2NhbGU9MSI+CiA8aGVhZD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363740</attachid>
            <date>2019-03-06 08:15:43 -0800</date>
            <delta_ts>2019-03-06 08:18:14 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-195354-20190306081535.patch</filename>
            <type>text/plain</type>
            <size>24596</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU2ZGI1NjBlMTMxODQ1NmJk
NzlkMWU3YzRmOGZmZmM3NTgyNWVkN2EuLjFmNGRkZTMyMmY2NDBkMTk0ODhlYjkyNWEwYmExZjVm
MmE3MTBkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIwMTktMDMtMDYgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gRnJlcXVlbnQg
MSBzZWNvbmQgSVBDIGRlYWRsb2NrcyB3aGVuIHNob3dpbmcgYSBwYXN0ZSBjYWxsb3V0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUzNTQKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQ4NjI0Njc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gdHJpZ2dlcmluZyBwcm9ncmFtbWF0aWMgcGFzdGUs
IHdlIGZyZXF1ZW50bHkgaGl0IGRlYWRsb2NrcyBkdWUgdG8gc3luYyBJUEMgZ29pbmcgZnJvbSB0
aGUgVUkgcHJvY2VzcyB0byB0aGUKKyAgICAgICAgd2ViIHByb2Nlc3MgYW5kIHZpY2UgdmVyc2Eu
IFdoYXQgaGFwcGVucyBpbiB0aGlzIHNjZW5hcmlvIGlzIHRoYXQgcHJpb3IgdG8gdHJpZ2dlcmlu
ZyBwcm9ncmFtbWF0aWMgcGFzdGUsIHRoZQorICAgICAgICBwYWdlIG1heSB0cnkgdG8gbW92ZSBm
b2N1cyB0byBhIGRpZmZlcmVudCBlbGVtZW50IChlLmcuIGEgaGlkZGVuIGVkaXRhYmxlIGFyZWEp
IGJlZm9yZSBjYWxsaW5nIGBleGVjQ29tbWFuZGAuCisgICAgICAgIFRoaXMgY2F1c2VzIHVzIHRv
IHNlbmQgYW4gRWxlbWVudERpZEZvY3VzIG1lc3NhZ2UgdG8gdGhlIFVJIHByb2Nlc3MsIGZvbGxv
d2VkIGJ5IFJlcXVlc3RET01QYXN0ZUFjY2Vzcy4KKworICAgICAgICBIb3dldmVyLCB1cG9uIHJl
Y2VpdmluZyBFbGVtZW50RGlkRm9jdXMsIHdlIHJlbG9hZCBpbnB1dCB2aWV3cyBhbmQgKGluIHRo
ZSBwcm9jZXNzKSBVSUtpdCByZXF1ZXN0cyB0aGUKKyAgICAgICAgYXV0b2NvcnJlY3Rpb24gY29u
dGV4dCwgd2hpY2ggd2UgaW1wbGVtZW50IGluIFdlYktpdCB1c2luZyBhIHN5bmMgbWVzc2FnZSB0
byB0aGUgd2ViIHByb2Nlc3MgZHVlIHRvCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNjIwNzAw
Mj4gYW5kIGl0cyBibG9ja2luZyBidWcgPHJkYXI6Ly9wcm9ibGVtLzQ4MzgzMDAxPi4gVGhpcyBt
ZWFucyB3ZSdsbCBlbmQgdXAgaW4gYSBzdGF0ZQorICAgICAgICB3aGVyZSBib3RoIHRoZSBVSSBw
cm9jZXNzIGFuZCB3ZWIgcHJvY2VzcyBhcmUgYmxvY2tlZCBvbiBlYWNoIG90aGVyIHdhaXRpbmcg
Zm9yIGEgc3luYyBJUEMgcmVzcG9uc2UsIGFuZCB0aGUgVUkKKyAgICAgICAgcHJvY2VzcyBpcyBo
dW5nIGZvciBhIHNlY29uZCB1bnRpbCB0aGUgSVBDIG1lc3NhZ2UgdGltZXMgb3V0LgorCisgICAg
ICAgIElkZWFsbHksIHdlIHNob3VsZCBmaXggdGhpcyBieSBhZGRyZXNzaW5nIDxyZGFyOi8vcHJv
YmxlbS8xNjIwNzAwMj4uIEhvd2V2ZXIsIHRoaXMgcmVxdWlyZXMgcG90ZW50aWFsbHkgbGFyZ2UK
KyAgICAgICAgY2hhbmdlcyBpbiBVSUtpdCAoPHJkYXI6Ly9wcm9ibGVtLzQ4MzgzMDAxPik7IGZv
ciB0aGUgdGltZSBiZWluZywgd29yayBhcm91bmQgdGhpcyBkZWFkbG9jayBieSByZWZhY3Rvcmlu
ZworICAgICAgICBzeW5jaHJvbm91cyBhdXRvY29ycmVjdGlvbiBjb250ZXh0IHJlcXVlc3RzIHN1
Y2ggdGhhdCB0aGV5IGNhbiBiZSByZXNvbHZlZCBieSBhbiBvdXQtb2YtYmFuZCBJUEMgcmVzcG9u
c2UKKyAgICAgICAgKEhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dCkuIFRoZW4gcHJpb3IgdG8g
cmVxdWVzdGluZyBET00gcGFzdGUgYWNjZXNzLCBwcmVlbXB0aXZlbHkgc2VuZCBhCisgICAgICAg
IEhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dCBtZXNzYWdlIHRvIHRoZSBVSSBwcm9jZXNzIHRv
IHVuYmxvY2sgYW55IHBlbmRpbmcgc3luY2hyb25vdXMgYXV0b2NvcnJlY3Rpb24gY29udGV4dAor
ICAgICAgICByZXF1ZXN0cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpoYW5kbGVBdXRvY29ycmVjdGlv
bkNvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLmg6CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSBmb3IgV0tDb250ZW50VmlldyB0byBy
ZW1lbWJlciBpdHMgY3VycmVudCBwZW5kaW5nIGF1dG9jb3JyZWN0aW9uIGNvbnRleHQgY29tcGxl
dGlvbiBoYW5kbGVyLgorICAgICAgICBUaGlzIGlzIGludm9rZWQgYW5kIGNsZWFyZWQgb3V0IGlu
IGAtX2ludm9rZVBlbmRpbmdBdXRvY29ycmVjdGlvbkNvbnRleHRIYW5kbGVyOmAuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfaW52b2tlUGVuZGluZ0F1dG9jb3JyZWN0aW9uQ29udGV4dEhhbmRs
ZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29u
dGV4dFdpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
aGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0Ol0pOgorCisgICAgICAgIEhhbmRsZSBhbiBhdXRv
Y29ycmVjdGlvbiBjb250ZXh0IHJlc3BvbnNlLiBUaGlzIGlzIGludm9rZWQgd2hlbiB0aGUgd2Vi
IHByb2Nlc3MgZWl0aGVyIGhhbmRsZXMgYW4gYXV0b2NvcnJlY3Rpb24KKyAgICAgICAgY29udGV4
dCBtZXNzYWdlLCBvciB3aGVuIGl0IHByZWVtcHRpdmVseSBzZW5kcyBhbiBhdXRvY29ycmVjdGlv
biBjb250ZXh0IGJlZm9yZSByZXF1ZXN0aW5nIERPTSBwYXN0ZSBhY2Nlc3MuCisKKyAgICAgICAg
KCtbV0tBdXRvY29ycmVjdGlvbkNvbnRleHQgZW1wdHlBdXRvY29ycmVjdGlvbkNvbnRleHRdKToK
KworICAgICAgICBBZGQgYSBoZWxwZXIgdG8gY3JlYXRlIGFuIGVtcHR5IGF1dG9jb3JyZWN0aW9u
IGNvbnRleHQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250
ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVBdXRvY29ycmVjdGlv
bkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF1dG9jb3JyZWN0aW9u
Q29udGV4dFN5bmMpOiBEZWxldGVkLgorCisgICAgICAgIFJlbW92ZWQgdGhpcyBzeW5jIHZlcnNp
b24sIHNpbmNlIHdlIG5vdyBvbmx5IGhhdmUgcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dC4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKworICAgICAgICBTZW5kIFdl
YlBhZ2VQcm94eTo6SGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0LCBhbmQgYWRkIGEgRklYTUUg
cmVmZXJlbmNpbmcgPHJkYXI6Ly9wcm9ibGVtLzE2MjA3MDAyPi4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW46CisKKyAgICAgICAgU3BsaXQgQXV0b2NvcnJlY3Rpb25Db250ZXh0
U3luYyBpbnRvIFJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQgYW5kIEhhbmRsZUF1dG9jb3Jy
ZWN0aW9uQ29udGV4dDsgYWRkaXRpb25hbGx5LAorICAgICAgICByZW1vdmUgdGhlIGV4aXN0aW5n
IFJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQgbWVzc2FnZS4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmF1dG9jb3JyZWN0aW9uQ29udGV4dFN5bmMpOiBEZWxldGVkLgorCiAyMDE5LTAzLTA1ICBE
YXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0g
SXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGZvbGxvdyBsaW5rcyB3aXRoICdkb3dubG9hZCcgYXR0
cmlidXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDg3ZmUxZDQ4ZGQw
YTQzMzdlNWUxMzAwOGZiM2QzODAzODRmNzJiYzUuLmQ0NzRhNDliOWYyYzBhOTA3MTFmNTYzMmY5
OGIxMGRmZDhhMzE1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTEz
MCw2ICsxMzAsNyBAQCBlbnVtIGNsYXNzIENvbnRpbnVlVW5zYWZlTG9hZCA6IGJvb2wgeyBObywg
WWVzIH07CiAKIHN0cnVjdCBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uOwogc3RydWN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOworc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uQ29u
dGV4dDsKIHN0cnVjdCBXZWJIaXRUZXN0UmVzdWx0RGF0YTsKIAogI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCkBAIC0zOTQsNiArMzk1LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGVu
YWJsZUluc3BlY3Rvck5vZGVTZWFyY2goKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVJ
bnNwZWN0b3JOb2RlU2VhcmNoKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUF1dG9j
b3JyZWN0aW9uQ29udGV4dChjb25zdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmKSA9IDA7CiAj
ZW5kaWYKIAogICAgIC8vIEF1eGlsaWFyeSBDbGllbnQgQ3JlYXRpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMjE1NWQxNDJlNDRmYmE1NDQ1OGJjNzFmNTM5MWJl
NmUwOWI0ZTgwMy4uZjViMGIxOTU1NDQzMjNhNmM1NmU0NmI1ZjExYzFkNjg5MGFjOTdiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTY1MCw4ICs2NTAsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYg
dGV4dEZvckF1dG9jb3JyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpGbG9hdFJlY3Q+JiwgY29uc3QgU3RyaW5nJiwgZG91YmxlLCB1aW50NjRfdCwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgYXBwbHlBdXRvY29ycmVjdGlvbihjb25z
dCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAg
ICBib29sIGFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25z
dCBTdHJpbmcmIG9yaWdpbmFsVGV4dCk7Ci0gICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25D
b250ZXh0KEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0JiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCBhdXRv
Y29ycmVjdGlvbkNvbnRleHRTeW5jKCk7CisgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25D
b250ZXh0KCk7CisgICAgdm9pZCBoYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQoY29uc3QgV2Vi
QXV0b2NvcnJlY3Rpb25Db250ZXh0Jik7CiAgICAgdm9pZCByZXF1ZXN0RGljdGF0aW9uQ29udGV4
dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIHJlcGxhY2VEaWN0
YXRlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpOwog
ICAgIHZvaWQgcmVwbGFjZVNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0
IFN0cmluZyYgbmV3VGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTg2NGQ0YTk2ZmI2N2Y5YTUzZjFkNjA5YzY5Zjc3NjUy
MTM4NGEwMC4uYWZhMWQ2N2JiMTAxMzA0ODJhMjhjODlkYjJlNjUwNzdlN2JiMTQ3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAt
NDE3LDYgKzQxNyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlzYWJsZUlu
c3BlY3Rvck5vZGVTZWFyY2goKQogCiAgICAgVXBkYXRlU3RyaW5nRm9yRmluZChTdHJpbmcgZmlu
ZFN0cmluZykKKyAgICBIYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQoc3RydWN0IFdlYktpdDo6
V2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0IGNvbnRleHQpCiAjZW5kaWYKIAogICAgIERpZENoYW5n
ZUluc3BlY3RvckZyb250ZW5kQ291bnQodWludDY0X3QgY291bnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDlmZWRjNjg5MTAwNTMw
MWMxNTExNTMxMjJmM2YxZDQ2ZDVhNzUwMzQuLjg1ZWNkZTg0MWVlNGQwY2M4YzIzNjZkZDgwZGNm
NTVjYzA5NjhmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oCkBAIC0yMzYsNiArMjM2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENo
YW5nZURyYWdDYXJldFJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcHJldmlvdXNDYXJldFJl
Y3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNhcmV0UmVjdCkgb3ZlcnJpZGU7CiAjZW5kaWYK
IAorICAgIHZvaWQgaGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0KGNvbnN0IFdlYkF1dG9jb3Jy
ZWN0aW9uQ29udGV4dCYpIGZpbmFsOworCiAgICAgdm9pZCBkaWRGaW5pc2hQcm9jZXNzaW5nQWxs
UGVuZGluZ01vdXNlRXZlbnRzKCkgZmluYWwgeyB9CiAKICNpZiBIQVZFKFBFTkNJTEtJVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRl
eCBkOTU0ZTc3YWRjM2ZkNzRlYjk5NzZjMDIyMWM1M2VkMDY2ZTU4MTU4Li43M2I5YTkzMDBjOTQ2
MzRkYTQzMzUzN2ZmZmEzMTk2ZDJkMjA5MDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC04NTcsNiArODU3LDExIEBAIHZvaWQg
UGFnZUNsaWVudEltcGw6OmNhbmNlbFBvaW50ZXJzRm9yR2VzdHVyZVJlY29nbml6ZXIoVUlHZXN0
dXJlUmVjb2duaXplciogZ2VzCiB9CiAjZW5kaWYKIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6aGFu
ZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0KGNvbnN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCYg
Y29udGV4dCkKK3sKKyAgICBbbV9jb250ZW50VmlldyBfaGFuZGxlQXV0b2NvcnJlY3Rpb25Db250
ZXh0OmNvbnRleHRdOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggNzczMDYzYTg3ODIzNzI3MmYwOTE2
NzdiMDU1MjBmZGQ2NTIyNzE5My4uZDBkYTU3N2RkNmM0ZTJhOWU1M2FlYTUxNzFkMjNiMDRkYmNh
NzYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtODUsNiArODUsNyBAQCBjbGFzcyBOYXRpdmVXZWJUb3Vj
aEV2ZW50OwogY2xhc3MgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjsKIGNsYXNzIFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CitzdHJ1Y3Qg
V2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0OwogfQogCiBAY2xhc3MgX1VJTG9va3VwR2VzdHVyZVJl
Y29nbml6ZXI7CkBAIC0zMTgsNiArMzE5LDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRh
IHsKIAogICAgIEJPT0wgX2hhc1NldFVwSW50ZXJhY3Rpb25zOwogICAgIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSk+IF9kb21QYXN0ZVJlcXVl
c3RIYW5kbGVyOworICAgIEJsb2NrUHRyPHZvaWQoVUlXS0F1dG9jb3JyZWN0aW9uQ29udGV4dCAq
KT4gX3BlbmRpbmdBdXRvY29ycmVjdGlvbkNvbnRleHRIYW5kbGVyOwogCiAjaWYgRU5BQkxFKERB
VEFfSU5URVJBQ1RJT04pCiAgICAgV2ViS2l0OjpEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUgX2Ry
YWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTsKQEAgLTQ2NSw2ICs0NjcsOCBAQCBGT1JfRUFDSF9QUklW
QVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9S
X1dFQl9WSUVXKQogLSAoV0tEcmF3aW5nQ29vcmRpbmF0b3IgKilfZHJhd2luZ0Nvb3JkaW5hdG9y
OwogI2VuZGlmCiAKKy0gKHZvaWQpX2hhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dDooY29uc3Qg
V2ViS2l0OjpXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmKWNvbnRleHQ7CisKIEBlbmQKIAogQGlu
dGVyZmFjZSBXS0NvbnRlbnRWaWV3IChXS1Rlc3RpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAzN2Iz
NjIwM2M0ZDExMGZiMmI5NTc5YmU1ZTMxZTA5ZDcyNTc4YWIyLi40ZWY2ZjUwMzNkZTRkZjJjNWRj
ZWI1MWM0OTE5ODM3MjFjYjcyMjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTI3Niw2ICsyNzYsNyBA
QCArIChXS0F1dG9jb3JyZWN0aW9uUmVjdHMgKilhdXRvY29ycmVjdGlvblJlY3RzV2l0aFJlY3Rz
OihDR1JlY3QpZmlyc3RSZWN0IGxhc3RSZQogQGVuZAogCiBAaW50ZXJmYWNlIFdLQXV0b2NvcnJl
Y3Rpb25Db250ZXh0IDogVUlXS0F1dG9jb3JyZWN0aW9uQ29udGV4dAorKyAoV0tBdXRvY29ycmVj
dGlvbkNvbnRleHQgKillbXB0eUF1dG9jb3JyZWN0aW9uQ29udGV4dDsKICsgKFdLQXV0b2NvcnJl
Y3Rpb25Db250ZXh0ICopYXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbnRleHQ6KGNvbnN0IFdl
YktpdDo6V2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Jiljb250ZXh0OwogQGVuZAogCkBAIC0zNTc5
LDYgKzM1ODAsMTIgQEAgLSAodm9pZClhcHBseUF1dG9jb3JyZWN0aW9uOihOU1N0cmluZyAqKWNv
cnJlY3Rpb24gdG9TdHJpbmc6KE5TU3RyaW5nICopaW5wdXQgd2kKICAgICB9KTsKIH0KIAorLSAo
dm9pZClfaW52b2tlUGVuZGluZ0F1dG9jb3JyZWN0aW9uQ29udGV4dEhhbmRsZXI6KFdLQXV0b2Nv
cnJlY3Rpb25Db250ZXh0ICopY29udGV4dAoreworICAgIGlmIChhdXRvIGhhbmRsZXIgPSBXVEZN
b3ZlKF9wZW5kaW5nQXV0b2NvcnJlY3Rpb25Db250ZXh0SGFuZGxlcikpCisgICAgICAgIGhhbmRs
ZXIoY29udGV4dCk7Cit9CisKIC0gKHZvaWQpcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dFdp
dGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlXS0F1dG9jb3JyZWN0aW9uQ29udGV4dCAq
YXV0b2NvcnJlY3Rpb25Db250ZXh0KSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIGlmICghY29t
cGxldGlvbkhhbmRsZXIpIHsKQEAgLTM1ODgsNyArMzU5NSw3IEBAIC0gKHZvaWQpcmVxdWVzdEF1
dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlXS0F1
dG9jb3JyCiAKICNpZiBVU0UoVUlLSVRfS0VZQk9BUkRfQURESVRJT05TKQogICAgIGlmIChbc2Vs
ZiBfZGlzYWJsZUF1dG9tYXRpY0tleWJvYXJkVUldKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFtXS0F1dG9jb3JyZWN0aW9uQ29udGV4dCBhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29u
dGV4dDooV2ViS2l0OjpXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQgeyB9KV0pOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXS0F1dG9jb3JyZWN0aW9uQ29udGV4dC5lbXB0eUF1dG9jb3JyZWN0
aW9uQ29udGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTM1OTYsMTQg
KzM2MDMsMjEgQEAgLSAodm9pZClyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShVSVdLQXV0b2NvcnIKICAgICAvLyBGSVhNRTogUmVtb3Zl
IHRoZSBzeW5jaHJvbm91cyBjYWxsIHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzE2MjA3MDAyPiBpcyBm
aXhlZC4KICAgICBjb25zdCBib29sIHVzZVN5bmNSZXF1ZXN0ID0gdHJ1ZTsKIAorICAgIFtzZWxm
IF9pbnZva2VQZW5kaW5nQXV0b2NvcnJlY3Rpb25Db250ZXh0SGFuZGxlcjpXS0F1dG9jb3JyZWN0
aW9uQ29udGV4dC5lbXB0eUF1dG9jb3JyZWN0aW9uQ29udGV4dF07CisKKyAgICBfcGVuZGluZ0F1
dG9jb3JyZWN0aW9uQ29udGV4dEhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICBfcGFn
ZS0+cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpOworCiAgICAgaWYgKHVzZVN5bmNSZXF1
ZXN0KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtXS0F1dG9jb3JyZWN0aW9uQ29udGV4
dCBhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29udGV4dDpfcGFnZS0+YXV0b2NvcnJlY3Rpb25D
b250ZXh0U3luYygpXSk7CisgICAgICAgIF9wYWdlLT5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT53
YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5k
bGVBdXRvY29ycmVjdGlvbkNvbnRleHQ+KF9wYWdlLT5wYWdlSUQoKSwgMV9zLCBJUEM6OldhaXRG
b3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CisgICAgICAg
IFtzZWxmIF9pbnZva2VQZW5kaW5nQXV0b2NvcnJlY3Rpb25Db250ZXh0SGFuZGxlcjpXS0F1dG9j
b3JyZWN0aW9uQ29udGV4dC5lbXB0eUF1dG9jb3JyZWN0aW9uQ29udGV4dF07CiAgICAgICAgIHJl
dHVybjsKICAgICB9Cit9CiAKLSAgICBfcGFnZS0+cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4
dChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY29tcGxldGlvbiA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiBjb250ZXh0LCBhdXRvKSB7Ci0gICAgICAg
IGNvbXBsZXRpb24oW1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1dG9jb3JyZWN0aW9uQ29udGV4
dFdpdGhDb250ZXh0OmNvbnRleHRdKTsKLSAgICB9KTsKKy0gKHZvaWQpX2hhbmRsZUF1dG9jb3Jy
ZWN0aW9uQ29udGV4dDooY29uc3QgV2ViS2l0OjpXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmKWNv
bnRleHQKK3sKKyAgICBbc2VsZiBfaW52b2tlUGVuZGluZ0F1dG9jb3JyZWN0aW9uQ29udGV4dEhh
bmRsZXI6W1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhD
b250ZXh0OmNvbnRleHRdXTsKIH0KIAogLy8gVUlXZWJGb3JtQWNjZXNzb3J5RGVsZWdhdGUKQEAg
LTc0MTAsNiArNzQyNCwxMSBAQCBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS0F1dG9jb3JyZWN0
aW9uQ29udGV4dAogCisrIChXS0F1dG9jb3JyZWN0aW9uQ29udGV4dCAqKWVtcHR5QXV0b2NvcnJl
Y3Rpb25Db250ZXh0Cit7CisgICAgcmV0dXJuIFtzZWxmIGF1dG9jb3JyZWN0aW9uQ29udGV4dFdp
dGhDb250ZXh0OldlYktpdDo6V2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0IHsgfV07Cit9CisKICsg
KFdLQXV0b2NvcnJlY3Rpb25Db250ZXh0ICopYXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbnRl
eHQ6KGNvbnN0IFdlYktpdDo6V2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Jil3ZWJDb250ZXh0CiB7
CiAgICAgV0tBdXRvY29ycmVjdGlvbkNvbnRleHQgKmNvbnRleHQgPSBbW1dLQXV0b2NvcnJlY3Rp
b25Db250ZXh0IGFsbG9jXSBpbml0XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDZkMTg1ZmRmMDk3M2Q4YmUyYTNiNGI2ZDUzN2Y1MGQ4
NGU1ODY4ZDguLjIwYWFkMTA0NWI5MjczY2NmZWMzZmVjYWUxOWE1MTlmN2Q0ZGM4MWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtNTYz
LDIyICs1NjMsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0
KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgY28KICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REaWN0YXRpb25Db250ZXh0KGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rp
b25Db250ZXh0KEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Jiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVx
dWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpCiB7Ci0gICAgaWYgKCFpc1ZhbGlkKCkpIHsKLSAg
ICAgICAgY2FsbGJhY2soeyB9LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRh
dGVkKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRv
Y29ycmVjdGlvbkNvbnRleHQoKSwgbV9wYWdlSUQpOwogfQogCi1XZWJBdXRvY29ycmVjdGlvbkNv
bnRleHQgV2ViUGFnZVByb3h5OjphdXRvY29ycmVjdGlvbkNvbnRleHRTeW5jKCkKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpoYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQoY29uc3QgV2ViQXV0b2NvcnJl
Y3Rpb25Db250ZXh0JiBjb250ZXh0KQogewotICAgIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCBj
b250ZXh0OwotICAgIG1fcHJvY2Vzcy0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkF1dG9j
b3JyZWN0aW9uQ29udGV4dFN5bmMoKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkF1dG9jb3JyZWN0aW9u
Q29udGV4dFN5bmM6OlJlcGx5KGNvbnRleHQpLCBtX3BhZ2VJRCk7Ci0gICAgcmV0dXJuIGNvbnRl
eHQ7CisgICAgcGFnZUNsaWVudCgpLmhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dChjb250ZXh0
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkNvbnRleHQoV1RGOjpGdW5j
dGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDBmNzBiM2JiZjAzY2U3ODg4MjJl
ODZiMDA0MmUwNTk4MjI4NTUwMTkuLjUwZTMzMjdkMGNlNzQwNTg1ZTUzMmYwNjc0NjFlZTljZDcx
OTkxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC0yNjgsNiArMjY4LDcgQEAKICNpbmNsdWRlICJJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbi5oIgogI2luY2x1ZGUgIkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCIKKyNpbmNsdWRlICJXZWJBdXRv
Y29ycmVjdGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JY29uLmg+CiAjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9D
b3JlVGV4dFNQSS5oPgpAQCAtNjM3Myw2ICs2Mzc0LDEzIEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29t
cGxldGVTaGFyZVNoZWV0KGJvb2wgd2FzR3JhbnRlZCwgU2hhcmVTaGVldENhbGxiYWNrSUQgY2Fs
bGJhCiBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIFdlYlBhZ2U6OnJlcXVlc3RET01Q
YXN0ZUFjY2Vzcyhjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCiB7CiAgICAgYXV0byBy
ZXNwb25zZSA9IFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1
cmU7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAvLyBGSVhNRTogQ29tcHV0aW5nIGFu
ZCBzZW5kaW5nIGFuIGF1dG9jb3JyZWN0aW9uIGNvbnRleHQgaXMgYSB3b3JrYXJvdW5kIGZvciB0
aGUgZmFjdCB0aGF0IGF1dG9jb3JyZWN0aW9uIGNvbnRleHQKKyAgICAvLyByZXF1ZXN0cyBvbiBp
T1MgYXJlIGN1cnJlbnRseSBzeW5jaHJvbm91cyBpbiB0aGUgd2ViIHByb2Nlc3MuIFRoaXMgYWxs
b3dzIHVzIHRvIGltbWVkaWF0ZWx5IGZ1bGZpbGwgcGVuZGluZworICAgIC8vIGF1dG9jb3JyZWN0
aW9uIGNvbnRleHQgcmVxdWVzdHMgaW4gdGhlIFVJIHByb2Nlc3Mgb24gaU9TIGJlZm9yZSBoYW5k
bGluZyB0aGUgRE9NIHBhc3RlIHJlcXVlc3QuIFRoaXMgd29ya2Fyb3VuZAorICAgIC8vIHNob3Vs
ZCBiZSByZW1vdmVkIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzE2MjA3MDAyPiBpcyByZXNvbHZlZC4K
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9jb3JyZWN0aW9uQ29u
dGV4dChhdXRvY29ycmVjdGlvbkNvbnRleHQoKSkpOworI2VuZGlmCiAgICAgc2VuZFN5bmNXaXRo
RGVsYXllZFJlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RET01QYXN0ZUFjY2Vz
cyhyZWN0Rm9yRWxlbWVudEF0SW50ZXJhY3Rpb25Mb2NhdGlvbigpLCBvcmlnaW5JZGVudGlmaWVy
KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdERPTVBhc3RlQWNjZXNzOjpSZXBseShy
ZXNwb25zZSkpOwogICAgIHJldHVybiByZXNwb25zZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBlNDcxZGYwZGFiMjg4NDI3YTI2MzgyZmRiMjNh
MWI3ZmQ1MTQyMzVhLi4yZGM5ZTUxN2FlMTU4MDMxNjYzMjg3OGFhMDA0OTU0NTYwMjRiNjIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02NDEsOCAr
NjQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25z
dCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBh
cHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5n
JiBvcmlnaW5hbFRleHQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc3luY0FwcGx5QXV0b2NvcnJl
Y3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0QXV0
b2NvcnJlY3Rpb25Db250ZXh0KENhbGxiYWNrSUQpOwotICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25D
b250ZXh0U3luYyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4
dCYmKT4mJik7CisgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCk7CiAgICAg
dm9pZCBnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25S
ZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbiYmKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihjb25z
dCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYpOwogICAgIHZvaWQgc3RhcnRJbnRlcmFj
dGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KaW5kZXggY2IwYjU3MDkzMzY0YzBlNTU0MjQzZjkzMDljMzkyNWQ1NDhhZjRmMC4uY2NlNzcy
MjI2YTU5Yjg3NWFhNjA4YjhmMmE3YTAzMGM2ZjA2ZmYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC03OCw4ICs3
OCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlcXVlc3RB
dXRvY29ycmVjdGlvbkRhdGEoU3RyaW5nIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgQXBwbHlBdXRvY29ycmVjdGlvbihTdHJpbmcgY29y
cmVjdGlvbiwgU3RyaW5nIG9yaWdpbmFsVGV4dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiAgICAgU3luY0FwcGx5QXV0b2NvcnJlY3Rpb24oU3RyaW5nIGNvcnJlY3Rpb24sIFN0cmlu
ZyBvcmlnaW5hbFRleHQpIC0+IChib29sIGF1dG9jb3JyZWN0aW9uQXBwbGllZCkgRGVsYXllZAot
ICAgIFJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCi0gICAgQXV0b2NvcnJlY3Rpb25Db250ZXh0U3luYygpIC0+IChzdHJ1Y3QgV2ViS2l0
OjpXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQgY29udGV4dCkgRGVsYXllZAorICAgIFJlcXVlc3RB
dXRvY29ycmVjdGlvbkNvbnRleHQoKQogICAgIFJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVj
dGlvbigpIC0+IChWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0cykgQXN5bmMKICAgICBH
ZXRQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0IHJlcXVlc3QpIC0+IChzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbiBpbmZvcm1hdGlvbikgRGVsYXllZAogICAgIFJlcXVlc3RQb3NpdGlvbklu
Zm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJl
cXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCmluZGV4IDQyZWU3NTdhMWM2ZmM0YmE2ODJhYjhhNzNiMjFmZWIxMDA0ZjEwMjku
LmFmOGI2NDY5ODM0MjE5OGJiOTBiYjkyYTJhMWMyMDMzMjBlM2RiNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMTU3
LDE0ICsyMTU3LDkgQEAgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0IFdlYlBhZ2U6OmF1dG9jb3Jy
ZWN0aW9uQ29udGV4dCgpCiAgICAgcmV0dXJuIHsgV1RGTW92ZShjb250ZXh0QmVmb3JlKSwgV1RG
TW92ZShtYXJrZWRUZXh0KSwgV1RGTW92ZShzZWxlY3RlZFRleHQpLCBXVEZNb3ZlKGNvbnRleHRB
ZnRlciksIGxvY2F0aW9uLCBsZW5ndGggfTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0
b2NvcnJlY3Rpb25Db250ZXh0KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6
cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhhdXRvY29ycmVjdGlvbkNv
bnRleHQoKSwgY2FsbGJhY2tJRCkpOwotfQotCi12b2lkIFdlYlBhZ2U6OmF1dG9jb3JyZWN0aW9u
Q29udGV4dFN5bmMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJBdXRvY29ycmVjdGlvbkNvbnRl
eHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoYXV0
b2NvcnJlY3Rpb25Db250ZXh0KCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
SGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0KGF1dG9jb3JyZWN0aW9uQ29udGV4dCgpKSk7CiB9
CiAKIHN0YXRpYyBIVE1MQW5jaG9yRWxlbWVudCogY29udGFpbmluZ0xpbmtFbGVtZW50KEVsZW1l
bnQqIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjYwNmM0ZWI5NmU1MDc1YTU3YzFlNjI0NDIwMWY5MjUzM2Y2
MzU5My4uYTNkYWMyM2RjN2VkZmExMjY4YzExNWViNGM5YTYwMjU1YWFmZmVhMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDE5LTAzLTA1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgorCisgICAgICAgIFtpT1NdIEZyZXF1ZW50IDEgc2Vjb25kIElQQyBkZWFkbG9ja3Mg
d2hlbiBzaG93aW5nIGEgcGFzdGUgY2FsbG91dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MzU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODYy
NDY3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
b3N0IG9mIHRoZXNlIHRlc3RzIGN1cnJlbnRseSBlbmNvdW50ZXIgYW5kIHJlbHkgb24gdGhlIDEg
c2Vjb25kIElQQyB0aW1lb3V0IHRvIGZpbmlzaC4gVG8gdGVzdCB0aGlzIGZpeCwgZm9yY2UKKyAg
ICAgICAgYGlnbm9yZVN5bmNocm9ub3VzTWVzc2FnaW5nVGltZW91dHM9dHJ1ZWAgdG8gbWFrZSB0
aGVtIGZhaWwgaWYgdGhlIHByb2Nlc3NlcyBlbmNvdW50ZXIgYSBkZWFkbG9jay4KKworICAgICAg
ICAqIGVkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBhc3RlLWNvbmZpcm1hdGlvbi5odG1sOgor
ICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBhc3RlLWNvbnNlY3V0aXZlLWNv
bmZpcm1hdGlvbnMuaHRtbDoKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvaW9zL2RvbS1w
YXN0ZS1yZWplY3Rpb24uaHRtbDoKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvaW9zL2Rv
bS1wYXN0ZS1yZXF1aXJlcy11c2VyLWdlc3R1cmUuaHRtbDoKKyAgICAgICAgKiBlZGl0aW5nL3Bh
c3RlYm9hcmQvaW9zL2RvbS1wYXN0ZS1zYW1lLW9yaWdpbi5odG1sOgorCiAyMDE5LTAzLTA1ICBF
cmljIExpYW5nICA8ZXJpY2xpYW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogQWRkIHJlbW90
ZSBzZWFyY2ggc3VwcG9ydCBmb3Iga2V5Ym9hcmQgZm9jdXNhYmxlIGVsZW1lbnQgc2VhcmNoIHR5
cGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBh
c3RlLWNvbmZpcm1hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2lv
cy9kb20tcGFzdGUtY29uZmlybWF0aW9uLmh0bWwKaW5kZXggMDBjMjMzZDUzNmU2ZDIxOGZlOGVj
OGM3ZWM5NjM5Y2U1NGJhODA5MC4uNDcyZjk0ZDFiODA0MmFmN2ViYWM0MTFkNTExMzJiNWRkODFl
OTlhYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2lvcy9kb20t
cGFzdGUtY29uZmlybWF0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL2lvcy9kb20tcGFzdGUtY29uZmlybWF0aW9uLmh0bWwKQEAgLTEsNCArMSw0IEBACi08IURP
Q1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBkb21QYXN0ZUFsbG93ZWQ9ZmFs
c2UgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3
ZWJraXQtdGVzdC1ydW5uZXIgWyBkb21QYXN0ZUFsbG93ZWQ9ZmFsc2UgdXNlRmxleGlibGVWaWV3
cG9ydD10cnVlIGlnbm9yZVN5bmNocm9ub3VzTWVzc2FnaW5nVGltZW91dHM9dHJ1ZSBdIC0tPgog
PGh0bWw+CiA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRo
LCBpbml0aWFsLXNjYWxlPTEiPgogPGhlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvaW9zL2RvbS1wYXN0ZS1jb25zZWN1dGl2ZS1jb25maXJtYXRpb25zLmh0
bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvaW9zL2RvbS1wYXN0ZS1jb25zZWN1
dGl2ZS1jb25maXJtYXRpb25zLmh0bWwKaW5kZXggNWNlZWJiZDQzMmQ3MWE1ZDM3MThjOGRlNjdl
MzEwYTMyNDY0Y2JhOS4uYjNkMWFlNjlmMDgyZGE1OGUzZGJkMTgzZTQzMjRhMzgwMzhhZWE1YiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2lvcy9kb20tcGFzdGUt
Y29uc2VjdXRpdmUtY29uZmlybWF0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9pb3MvZG9tLXBhc3RlLWNvbnNlY3V0aXZlLWNvbmZpcm1hdGlvbnMuaHRtbApA
QCAtMSw0ICsxLDQgQEAKLTwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBb
IGRvbVBhc3RlQWxsb3dlZD1mYWxzZSB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzwh
RE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGRvbVBhc3RlQWxsb3dlZD1m
YWxzZSB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgaWdub3JlU3luY2hyb25vdXNNZXNzYWdpbmdU
aW1lb3V0cz10cnVlIF0gLS0+CiA8aHRtbD4KIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50
PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CiA8aGVhZD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBhc3RlLXJlamVjdGlv
bi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2lvcy9kb20tcGFzdGUtcmVq
ZWN0aW9uLmh0bWwKaW5kZXggNzNkMmY4ZjA0NjJiMDE2NzIyMzIzNjRlOTVhYTQ4YTljMjQyOTYz
Yi4uMzgzNmU3OTVmMmNmMjI3ZTg1N2Q4MTliOGU3Y2Y4MmMwYTRjMDFlMyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2lvcy9kb20tcGFzdGUtcmVqZWN0aW9uLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2lvcy9kb20tcGFzdGUtcmVq
ZWN0aW9uLmh0bWwKQEAgLTEsNCArMSw0IEBACi08IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyBkb21QYXN0ZUFsbG93ZWQ9ZmFsc2UgdXNlRmxleGlibGVWaWV3cG9ydD10
cnVlIF0gLS0+Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBkb21Q
YXN0ZUFsbG93ZWQ9ZmFsc2UgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIGlnbm9yZVN5bmNocm9u
b3VzTWVzc2FnaW5nVGltZW91dHM9dHJ1ZSBdIC0tPgogPGh0bWw+CiA8bWV0YSBuYW1lPSJ2aWV3
cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgogPGhl
YWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvaW9zL2RvbS1w
YXN0ZS1yZXF1aXJlcy11c2VyLWdlc3R1cmUuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9pb3MvZG9tLXBhc3RlLXJlcXVpcmVzLXVzZXItZ2VzdHVyZS5odG1sCmluZGV4IGJk
ZjQ4OWJmNGFmODg3YTFkMDljY2I5OGMxM2FkYWM5MGQ0MThhZjMuLmFjNGU3ZDNmMWZhOTEwNzVl
YTc2MGVhODMwZjZlMzI3ZTFiYTBjMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9pb3MvZG9tLXBhc3RlLXJlcXVpcmVzLXVzZXItZ2VzdHVyZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBhc3RlLXJlcXVpcmVzLXVz
ZXItZ2VzdHVyZS5odG1sCkBAIC0xLDQgKzEsNCBAQAotPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Vi
a2l0LXRlc3QtcnVubmVyIFsgZG9tUGFzdGVBbGxvd2VkPWZhbHNlIHVzZUZsZXhpYmxlVmlld3Bv
cnQ9dHJ1ZSBdIC0tPgorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsg
ZG9tUGFzdGVBbGxvd2VkPWZhbHNlIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBpZ25vcmVTeW5j
aHJvbm91c01lc3NhZ2luZ1RpbWVvdXRzPXRydWUgXSAtLT4KIDxodG1sPgogPG1ldGEgbmFtZT0i
dmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4K
IDxoZWFkPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2lvcy9k
b20tcGFzdGUtc2FtZS1vcmlnaW4uaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9pb3MvZG9tLXBhc3RlLXNhbWUtb3JpZ2luLmh0bWwKaW5kZXggZTk2YTIzOTMyMDM2NGQ3YjI1
MDE0YmRjODkyZjY3ZTgyYjU5NzFlZi4uYWNhMGQ2OWEzNDNhYTI4OTk4ZGIwODEyOTk2ZjI1NzZm
YWE0N2FhMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2lvcy9k
b20tcGFzdGUtc2FtZS1vcmlnaW4uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvaW9zL2RvbS1wYXN0ZS1zYW1lLW9yaWdpbi5odG1sCkBAIC0xLDQgKzEsNCBAQAotPCFE
T0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZG9tUGFzdGVBbGxvd2VkPWZh
bHNlIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPCFET0NUWVBFIGh0bWw+IDwhLS0g
d2Via2l0LXRlc3QtcnVubmVyIFsgZG9tUGFzdGVBbGxvd2VkPWZhbHNlIHVzZUZsZXhpYmxlVmll
d3BvcnQ9dHJ1ZSBpZ25vcmVTeW5jaHJvbm91c01lc3NhZ2luZ1RpbWVvdXRzPXRydWUgXSAtLT4K
IDxodG1sPgogPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0
aCwgaW5pdGlhbC1zY2FsZT0xIj4KIDxoZWFkPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363741</attachid>
            <date>2019-03-06 08:18:15 -0800</date>
            <delta_ts>2019-03-06 09:38:43 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-195354-20190306081807.patch</filename>
            <type>text/plain</type>
            <size>24588</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU2ZGI1NjBlMTMxODQ1NmJk
NzlkMWU3YzRmOGZmZmM3NTgyNWVkN2EuLjQ1YTRjZjBjNGE0ODIwZmJlNzUwN2I5MjY2M2YyMTZh
Mjk0NmFmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIwMTktMDMtMDYgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gRnJlcXVlbnQg
MSBzZWNvbmQgSVBDIGRlYWRsb2NrcyB3aGVuIHNob3dpbmcgYSBwYXN0ZSBjYWxsb3V0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUzNTQKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQ4NjI0Njc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24uCisKKyAgICAgICAgV2hlbiB0cmlnZ2VyaW5nIHByb2dyYW1tYXRpYyBwYXN0ZSwgd2Ug
ZnJlcXVlbnRseSBoaXQgZGVhZGxvY2tzIGR1ZSB0byBzeW5jIElQQyBnb2luZyBmcm9tIHRoZSBV
SSBwcm9jZXNzIHRvIHRoZQorICAgICAgICB3ZWIgcHJvY2VzcyBhbmQgdmljZSB2ZXJzYS4gV2hh
dCBoYXBwZW5zIGluIHRoaXMgc2NlbmFyaW8gaXMgdGhhdCBwcmlvciB0byB0cmlnZ2VyaW5nIHBy
b2dyYW1tYXRpYyBwYXN0ZSwgdGhlCisgICAgICAgIHBhZ2UgbWF5IHRyeSB0byBtb3ZlIGZvY3Vz
IHRvIGEgZGlmZmVyZW50IGVsZW1lbnQgKGUuZy4gYSBoaWRkZW4gZWRpdGFibGUgYXJlYSkgYmVm
b3JlIGNhbGxpbmcgYGV4ZWNDb21tYW5kYC4KKyAgICAgICAgVGhpcyBjYXVzZXMgdXMgdG8gc2Vu
ZCBhbiBFbGVtZW50RGlkRm9jdXMgbWVzc2FnZSB0byB0aGUgVUkgcHJvY2VzcywgZm9sbG93ZWQg
YnkgUmVxdWVzdERPTVBhc3RlQWNjZXNzLgorCisgICAgICAgIEhvd2V2ZXIsIHVwb24gcmVjZWl2
aW5nIEVsZW1lbnREaWRGb2N1cywgd2UgcmVsb2FkIGlucHV0IHZpZXdzIGFuZCAoaW4gdGhlIHBy
b2Nlc3MpIFVJS2l0IHJlcXVlc3RzIHRoZQorICAgICAgICBhdXRvY29ycmVjdGlvbiBjb250ZXh0
LCB3aGljaCB3ZSBpbXBsZW1lbnQgaW4gV2ViS2l0IHVzaW5nIGEgc3luYyBtZXNzYWdlIHRvIHRo
ZSB3ZWIgcHJvY2VzcyBkdWUgdG8KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2MjA3MDAyPiBh
bmQgaXRzIGJsb2NraW5nIGJ1ZyA8cmRhcjovL3Byb2JsZW0vNDgzODMwMDE+LiBUaGlzIG1lYW5z
IHdlJ2xsIGVuZCB1cCBpbiBhIHN0YXRlCisgICAgICAgIHdoZXJlIGJvdGggdGhlIFVJIHByb2Nl
c3MgYW5kIHdlYiBwcm9jZXNzIGFyZSBibG9ja2VkIG9uIGVhY2ggb3RoZXIgd2FpdGluZyBmb3Ig
YSBzeW5jIElQQyByZXNwb25zZSwgYW5kIHRoZSBVSQorICAgICAgICBwcm9jZXNzIGlzIGh1bmcg
Zm9yIGEgc2Vjb25kIHVudGlsIHRoZSBJUEMgbWVzc2FnZSB0aW1lcyBvdXQuCisKKyAgICAgICAg
SWRlYWxseSwgd2Ugc2hvdWxkIGZpeCB0aGlzIGJ5IGFkZHJlc3NpbmcgPHJkYXI6Ly9wcm9ibGVt
LzE2MjA3MDAyPi4gSG93ZXZlciwgdGhpcyByZXF1aXJlcyBwb3RlbnRpYWxseSBsYXJnZQorICAg
ICAgICBjaGFuZ2VzIGluIFVJS2l0ICg8cmRhcjovL3Byb2JsZW0vNDgzODMwMDE+KTsgZm9yIHRo
ZSB0aW1lIGJlaW5nLCB3b3JrIGFyb3VuZCB0aGlzIGRlYWRsb2NrIGJ5IHJlZmFjdG9yaW5nCisg
ICAgICAgIHN5bmNocm9ub3VzIGF1dG9jb3JyZWN0aW9uIGNvbnRleHQgcmVxdWVzdHMgc3VjaCB0
aGF0IHRoZXkgY2FuIGJlIHJlc29sdmVkIGJ5IGFuIG91dC1vZi1iYW5kIElQQyByZXNwb25zZQor
ICAgICAgICAoSGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0KS4gVGhlbiBwcmlvciB0byByZXF1
ZXN0aW5nIERPTSBwYXN0ZSBhY2Nlc3MsIHByZWVtcHRpdmVseSBzZW5kIGEKKyAgICAgICAgSGFu
ZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0IG1lc3NhZ2UgdG8gdGhlIFVJIHByb2Nlc3MgdG8gdW5i
bG9jayBhbnkgcGVuZGluZyBzeW5jaHJvbm91cyBhdXRvY29ycmVjdGlvbiBjb250ZXh0CisgICAg
ICAgIHJlcXVlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmhhbmRsZUF1dG9jb3JyZWN0aW9uQ29u
dGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aDoKKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIGZvciBXS0NvbnRlbnRWaWV3IHRvIHJlbWVt
YmVyIGl0cyBjdXJyZW50IHBlbmRpbmcgYXV0b2NvcnJlY3Rpb24gY29udGV4dCBjb21wbGV0aW9u
IGhhbmRsZXIuCisgICAgICAgIFRoaXMgaXMgaW52b2tlZCBhbmQgY2xlYXJlZCBvdXQgaW4gYC1f
aW52b2tlUGVuZGluZ0F1dG9jb3JyZWN0aW9uQ29udGV4dEhhbmRsZXI6YC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IF9pbnZva2VQZW5kaW5nQXV0b2NvcnJlY3Rpb25Db250ZXh0SGFuZGxlcjpd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0
V2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9oYW5k
bGVBdXRvY29ycmVjdGlvbkNvbnRleHQ6XSk6CisKKyAgICAgICAgSGFuZGxlIGFuIGF1dG9jb3Jy
ZWN0aW9uIGNvbnRleHQgcmVzcG9uc2UuIFRoaXMgaXMgaW52b2tlZCB3aGVuIHRoZSB3ZWIgcHJv
Y2VzcyBlaXRoZXIgaGFuZGxlcyBhbiBhdXRvY29ycmVjdGlvbgorICAgICAgICBjb250ZXh0IG1l
c3NhZ2UsIG9yIHdoZW4gaXQgcHJlZW1wdGl2ZWx5IHNlbmRzIGFuIGF1dG9jb3JyZWN0aW9uIGNv
bnRleHQgYmVmb3JlIHJlcXVlc3RpbmcgRE9NIHBhc3RlIGFjY2Vzcy4KKworICAgICAgICAoK1tX
S0F1dG9jb3JyZWN0aW9uQ29udGV4dCBlbXB0eUF1dG9jb3JyZWN0aW9uQ29udGV4dF0pOgorCisg
ICAgICAgIEFkZCBhIGhlbHBlciB0byBjcmVhdGUgYW4gZW1wdHkgYXV0b2NvcnJlY3Rpb24gY29u
dGV4dC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZUF1dG9jb3JyZWN0aW9uQ29u
dGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXV0b2NvcnJlY3Rpb25Db250
ZXh0U3luYyk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVtb3ZlZCB0aGlzIHN5bmMgdmVyc2lvbiwg
c2luY2Ugd2Ugbm93IG9ubHkgaGF2ZSByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0LgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorCisgICAgICAgIFNlbmQgV2ViUGFn
ZVByb3h5OjpIYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQsIGFuZCBhZGQgYSBGSVhNRSByZWZl
cmVuY2luZyA8cmRhcjovL3Byb2JsZW0vMTYyMDcwMDI+LgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbjoKKworICAgICAgICBTcGxpdCBBdXRvY29ycmVjdGlvbkNvbnRleHRTeW5j
IGludG8gUmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCBhbmQgSGFuZGxlQXV0b2NvcnJlY3Rp
b25Db250ZXh0OyBhZGRpdGlvbmFsbHksCisgICAgICAgIHJlbW92ZSB0aGUgZXhpc3RpbmcgUmVx
dWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCBtZXNzYWdlLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpy
ZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
YXV0b2NvcnJlY3Rpb25Db250ZXh0U3luYyk6IERlbGV0ZWQuCisKIDIwMTktMDMtMDUgIERhdmlk
IFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBJdCBz
aG91bGQgYmUgcG9zc2libGUgdG8gZm9sbG93IGxpbmtzIHdpdGggJ2Rvd25sb2FkJyBhdHRyaWJ1
dGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggODdmZTFkNDhkZDBhNDMz
N2U1ZTEzMDA4ZmIzZDM4MDM4NGY3MmJjNS4uZDQ3NGE0OWI5ZjJjMGE5MDcxMWY1NjMyZjk4YjEw
ZGZkOGEzMTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMTMwLDYg
KzEzMCw3IEBAIGVudW0gY2xhc3MgQ29udGludWVVbnNhZmVMb2FkIDogYm9vbCB7IE5vLCBZZXMg
fTsKIAogc3RydWN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb247CiBzdHJ1Y3QgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb247CitzdHJ1Y3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0
Owogc3RydWN0IFdlYkhpdFRlc3RSZXN1bHREYXRhOwogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKQEAgLTM5NCw2ICszOTUsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxl
SW5zcGVjdG9yTm9kZVNlYXJjaCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZUluc3Bl
Y3Rvck5vZGVTZWFyY2goKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQXV0b2NvcnJl
Y3Rpb25Db250ZXh0KGNvbnN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCYpID0gMDsKICNlbmRp
ZgogCiAgICAgLy8gQXV4aWxpYXJ5IENsaWVudCBDcmVhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCAyMTU1ZDE0MmU0NGZiYTU0NDU4YmM3MWY1MzkxYmU2ZTA5
YjRlODAzLi5mNWIwYjE5NTU0NDMyM2E2YzU2ZTQ2YjVmMTFjMWQ2ODkwYWM5N2IxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNjUwLDggKzY1MCw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0
Rm9yQXV0b2NvcnJlY3Rpb24sIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkZsb2F0UmVjdD4mLCBjb25zdCBTdHJpbmcmLCBkb3VibGUsIHVpbnQ2NF90LCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0
cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIFdURjo6RnVuY3Rp
b248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIGJv
b2wgYXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0
cmluZyYgb3JpZ2luYWxUZXh0KTsKLSAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRl
eHQoRnVuY3Rpb248dm9pZChjb25zdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1dG9jb3Jy
ZWN0aW9uQ29udGV4dFN5bmMoKTsKKyAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRl
eHQoKTsKKyAgICB2b2lkIGhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dChjb25zdCBXZWJBdXRv
Y29ycmVjdGlvbkNvbnRleHQmKTsKICAgICB2b2lkIHJlcXVlc3REaWN0YXRpb25Db250ZXh0KFdU
Rjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgcmVwbGFjZURpY3RhdGVk
VGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7CiAgICAg
dm9pZCByZXBsYWNlU2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3Ry
aW5nJiBuZXdUZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgppbmRleCBlODY0ZDRhOTZmYjY3ZjlhNTNmMWQ2MDljNjlmNzc2NTIxMzg0
YTAwLi5hZmExZDY3YmIxMDEzMDQ4MmEyOGM4OWRiMmU2NTA3N2U3YmIxNDcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC00MTcs
NiArNDE3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaXNhYmxlSW5zcGVj
dG9yTm9kZVNlYXJjaCgpCiAKICAgICBVcGRhdGVTdHJpbmdGb3JGaW5kKFN0cmluZyBmaW5kU3Ry
aW5nKQorICAgIEhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dChzdHJ1Y3QgV2ViS2l0OjpXZWJB
dXRvY29ycmVjdGlvbkNvbnRleHQgY29udGV4dCkKICNlbmRpZgogCiAgICAgRGlkQ2hhbmdlSW5z
cGVjdG9yRnJvbnRlbmRDb3VudCh1aW50NjRfdCBjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggOWZlZGM2ODkxMDA1MzAxYzE1
MTE1MzEyMmYzZjFkNDZkNWE3NTAzNC4uODVlY2RlODQxZWU0ZDBjYzhjMjM2NmRkODBkY2Y1NWNj
MDk2OGY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmgKQEAgLTIzNiw2ICsyMzYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdl
RHJhZ0NhcmV0UmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBwcmV2aW91c0NhcmV0UmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2FyZXRSZWN0KSBvdmVycmlkZTsKICNlbmRpZgogCisg
ICAgdm9pZCBoYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQoY29uc3QgV2ViQXV0b2NvcnJlY3Rp
b25Db250ZXh0JikgZmluYWw7CisKICAgICB2b2lkIGRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQZW5k
aW5nTW91c2VFdmVudHMoKSBmaW5hbCB7IH0KIAogI2lmIEhBVkUoUEVOQ0lMS0lUKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGQ5
NTRlNzdhZGMzZmQ3NGViOTk3NmMwMjIxYzUzZWQwNjZlNTgxNTguLjczYjlhOTMwMGM5NDYzNGRh
NDMzNTM3ZmZmYTMxOTZkMmQyMDkwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTg1Nyw2ICs4NTcsMTEgQEAgdm9pZCBQYWdl
Q2xpZW50SW1wbDo6Y2FuY2VsUG9pbnRlcnNGb3JHZXN0dXJlUmVjb2duaXplcihVSUdlc3R1cmVS
ZWNvZ25pemVyKiBnZXMKIH0KICNlbmRpZgogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpoYW5kbGVB
dXRvY29ycmVjdGlvbkNvbnRleHQoY29uc3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0JiBjb250
ZXh0KQoreworICAgIFttX2NvbnRlbnRWaWV3IF9oYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQ6
Y29udGV4dF07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCA3NzMwNjNhODc4MjM3MjcyZjA5MTY3N2Iw
NTUyMGZkZDY1MjI3MTkzLi5kMGRhNTc3ZGQ2YzRlMmE5ZTUzYWVhNTE3MWQyM2IwNGRiY2E3NjI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5oCkBAIC04NSw2ICs4NSw3IEBAIGNsYXNzIE5hdGl2ZVdlYlRvdWNoRXZl
bnQ7CiBjbGFzcyBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOwogY2xhc3MgV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKK3N0cnVjdCBXZWJB
dXRvY29ycmVjdGlvbkNvbnRleHQ7CiB9CiAKIEBjbGFzcyBfVUlMb29rdXBHZXN0dXJlUmVjb2du
aXplcjsKQEAgLTMxOCw2ICszMTksNyBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewog
CiAgICAgQk9PTCBfaGFzU2V0VXBJbnRlcmFjdGlvbnM7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlKT4gX2RvbVBhc3RlUmVxdWVzdEhh
bmRsZXI7CisgICAgQmxvY2tQdHI8dm9pZChVSVdLQXV0b2NvcnJlY3Rpb25Db250ZXh0ICopPiBf
cGVuZGluZ0F1dG9jb3JyZWN0aW9uQ29udGV4dEhhbmRsZXI7CiAKICNpZiBFTkFCTEUoREFUQV9J
TlRFUkFDVElPTikKICAgICBXZWJLaXQ6OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZSBfZHJhZ0Ry
b3BJbnRlcmFjdGlvblN0YXRlOwpAQCAtNDY1LDYgKzQ2Nyw4IEBAIEZPUl9FQUNIX1BSSVZBVEVf
V0tDT05URU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VC
X1ZJRVcpCiAtIChXS0RyYXdpbmdDb29yZGluYXRvciAqKV9kcmF3aW5nQ29vcmRpbmF0b3I7CiAj
ZW5kaWYKIAorLSAodm9pZClfaGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0Oihjb25zdCBXZWJL
aXQ6OldlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCYpY29udGV4dDsKKwogQGVuZAogCiBAaW50ZXJm
YWNlIFdLQ29udGVudFZpZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDM3YjM2MjAz
YzRkMTEwZmIyYjk1NzliZTVlMzFlMDlkNzI1NzhhYjIuLjRlZjZmNTAzM2RlNGRmMmM1ZGNlYjUx
YzQ5MTk4MzcyMWNiNzIyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMjc2LDYgKzI3Niw3IEBAICsg
KFdLQXV0b2NvcnJlY3Rpb25SZWN0cyAqKWF1dG9jb3JyZWN0aW9uUmVjdHNXaXRoUmVjdHM6KENH
UmVjdClmaXJzdFJlY3QgbGFzdFJlCiBAZW5kCiAKIEBpbnRlcmZhY2UgV0tBdXRvY29ycmVjdGlv
bkNvbnRleHQgOiBVSVdLQXV0b2NvcnJlY3Rpb25Db250ZXh0CisrIChXS0F1dG9jb3JyZWN0aW9u
Q29udGV4dCAqKWVtcHR5QXV0b2NvcnJlY3Rpb25Db250ZXh0OwogKyAoV0tBdXRvY29ycmVjdGlv
bkNvbnRleHQgKilhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29udGV4dDooY29uc3QgV2ViS2l0
OjpXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmKWNvbnRleHQ7CiBAZW5kCiAKQEAgLTM1NzksNiAr
MzU4MCwxMiBAQCAtICh2b2lkKWFwcGx5QXV0b2NvcnJlY3Rpb246KE5TU3RyaW5nICopY29ycmVj
dGlvbiB0b1N0cmluZzooTlNTdHJpbmcgKilpbnB1dCB3aQogICAgIH0pOwogfQogCistICh2b2lk
KV9pbnZva2VQZW5kaW5nQXV0b2NvcnJlY3Rpb25Db250ZXh0SGFuZGxlcjooV0tBdXRvY29ycmVj
dGlvbkNvbnRleHQgKiljb250ZXh0Cit7CisgICAgaWYgKGF1dG8gaGFuZGxlciA9IFdURk1vdmUo
X3BlbmRpbmdBdXRvY29ycmVjdGlvbkNvbnRleHRIYW5kbGVyKSkKKyAgICAgICAgaGFuZGxlcihj
b250ZXh0KTsKK30KKwogLSAodm9pZClyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShVSVdLQXV0b2NvcnJlY3Rpb25Db250ZXh0ICphdXRv
Y29ycmVjdGlvbkNvbnRleHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgaWYgKCFjb21wbGV0
aW9uSGFuZGxlcikgewpAQCAtMzU4OCw3ICszNTk1LDcgQEAgLSAodm9pZClyZXF1ZXN0QXV0b2Nv
cnJlY3Rpb25Db250ZXh0V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShVSVdLQXV0b2Nv
cnIKIAogI2lmIFVTRShVSUtJVF9LRVlCT0FSRF9BRERJVElPTlMpCiAgICAgaWYgKFtzZWxmIF9k
aXNhYmxlQXV0b21hdGljS2V5Ym9hcmRVSV0pIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
W1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhDb250ZXh0
OihXZWJLaXQ6OldlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCB7IH0pXSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdLQXV0b2NvcnJlY3Rpb25Db250ZXh0LmVtcHR5QXV0b2NvcnJlY3Rpb25D
b250ZXh0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtMzU5NiwxNCArMzYw
MywyMSBAQCAtICh2b2lkKXJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKFVJV0tBdXRvY29ycgogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhl
IHN5bmNocm9ub3VzIGNhbGwgd2hlbiA8cmRhcjovL3Byb2JsZW0vMTYyMDcwMDI+IGlzIGZpeGVk
LgogICAgIGNvbnN0IGJvb2wgdXNlU3luY1JlcXVlc3QgPSB0cnVlOwogCisgICAgW3NlbGYgX2lu
dm9rZVBlbmRpbmdBdXRvY29ycmVjdGlvbkNvbnRleHRIYW5kbGVyOldLQXV0b2NvcnJlY3Rpb25D
b250ZXh0LmVtcHR5QXV0b2NvcnJlY3Rpb25Db250ZXh0XTsKKworICAgIF9wZW5kaW5nQXV0b2Nv
cnJlY3Rpb25Db250ZXh0SGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyOworICAgIF9wYWdlLT5y
ZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCk7CisKICAgICBpZiAodXNlU3luY1JlcXVlc3Qp
IHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1
dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhDb250ZXh0Ol9wYWdlLT5hdXRvY29ycmVjdGlvbkNvbnRl
eHRTeW5jKCldKTsKKyAgICAgICAgX3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndhaXRG
b3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUF1
dG9jb3JyZWN0aW9uQ29udGV4dD4oX3BhZ2UtPnBhZ2VJRCgpLCAxX3MsIElQQzo6V2FpdEZvck9w
dGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKKyAgICAgICAgW3Nl
bGYgX2ludm9rZVBlbmRpbmdBdXRvY29ycmVjdGlvbkNvbnRleHRIYW5kbGVyOldLQXV0b2NvcnJl
Y3Rpb25Db250ZXh0LmVtcHR5QXV0b2NvcnJlY3Rpb25Db250ZXh0XTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KK30KIAotICAgIF9wYWdlLT5yZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFtw
cm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mIGNvbnRleHQsIGF1dG8pIHsKLSAgICAgICAgY29t
cGxldGlvbihbV0tBdXRvY29ycmVjdGlvbkNvbnRleHQgYXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0
aENvbnRleHQ6Y29udGV4dF0pOwotICAgIH0pOworLSAodm9pZClfaGFuZGxlQXV0b2NvcnJlY3Rp
b25Db250ZXh0Oihjb25zdCBXZWJLaXQ6OldlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCYpY29udGV4
dAoreworICAgIFtzZWxmIF9pbnZva2VQZW5kaW5nQXV0b2NvcnJlY3Rpb25Db250ZXh0SGFuZGxl
cjpbV0tBdXRvY29ycmVjdGlvbkNvbnRleHQgYXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbnRl
eHQ6Y29udGV4dF1dOwogfQogCiAvLyBVSVdlYkZvcm1BY2Nlc3NvcnlEZWxlZ2F0ZQpAQCAtNzQx
MCw2ICs3NDI0LDExIEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLQXV0b2NvcnJlY3Rpb25D
b250ZXh0CiAKKysgKFdLQXV0b2NvcnJlY3Rpb25Db250ZXh0ICopZW1wdHlBdXRvY29ycmVjdGlv
bkNvbnRleHQKK3sKKyAgICByZXR1cm4gW3NlbGYgYXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENv
bnRleHQ6V2ViS2l0OjpXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQgeyB9XTsKK30KKwogKyAoV0tB
dXRvY29ycmVjdGlvbkNvbnRleHQgKilhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29udGV4dDoo
Y29uc3QgV2ViS2l0OjpXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmKXdlYkNvbnRleHQKIHsKICAg
ICBXS0F1dG9jb3JyZWN0aW9uQ29udGV4dCAqY29udGV4dCA9IFtbV0tBdXRvY29ycmVjdGlvbkNv
bnRleHQgYWxsb2NdIGluaXRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KaW5kZXggNmQxODVmZGYwOTczZDhiZTJhM2I0YjZkNTM3ZjUwZDg0ZTU4
NjhkOC4uMjBhYWQxMDQ1YjkyNzNjY2ZlYzNmZWNhZTE5YTUxOWY3ZDRkYzgxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC01NjMsMjIg
KzU2MywxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQoV1RG
OjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBjbwogICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdERpY3RhdGlvbkNvbnRleHQoY2FsbGJhY2tJRCksIG1f
cGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNv
bnRleHQoRnVuY3Rpb248dm9pZChjb25zdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0
QXV0b2NvcnJlY3Rpb25Db250ZXh0KCkKIHsKLSAgICBpZiAoIWlzVmFsaWQoKSkgewotICAgICAg
ICBjYWxsYmFjayh7IH0sIENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChjYWxsYmFja0lEKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEF1dG9jb3Jy
ZWN0aW9uQ29udGV4dCgpLCBtX3BhZ2VJRCk7CiB9CiAKLVdlYkF1dG9jb3JyZWN0aW9uQ29udGV4
dCBXZWJQYWdlUHJveHk6OmF1dG9jb3JyZWN0aW9uQ29udGV4dFN5bmMoKQordm9pZCBXZWJQYWdl
UHJveHk6OmhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dChjb25zdCBXZWJBdXRvY29ycmVjdGlv
bkNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0IGNvbnRl
eHQ7Ci0gICAgbV9wcm9jZXNzLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6QXV0b2NvcnJl
Y3Rpb25Db250ZXh0U3luYygpLCBNZXNzYWdlczo6V2ViUGFnZTo6QXV0b2NvcnJlY3Rpb25Db250
ZXh0U3luYzo6UmVwbHkoY29udGV4dCksIG1fcGFnZUlEKTsKLSAgICByZXR1cm4gY29udGV4dDsK
KyAgICBwYWdlQ2xpZW50KCkuaGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0KGNvbnRleHQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMGY3MGIzYmJmMDNjZTc4ODgyMmU4NmIw
MDQyZTA1OTgyMjg1NTAxOS4uNTBlMzMyN2QwY2U3NDA1ODVlNTMyZjA2NzQ2MWVlOWNkNzE5OTFk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTI2OCw2ICsyNjgsNyBAQAogI2luY2x1ZGUgIkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaCIKICNpbmNs
dWRlICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oIgorI2luY2x1ZGUgIldlYkF1dG9jb3Jy
ZWN0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ljb24uaD4KICNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0NvcmVU
ZXh0U1BJLmg+CkBAIC02MzczLDYgKzYzNzQsMTMgQEAgdm9pZCBXZWJQYWdlOjpkaWRDb21wbGV0
ZVNoYXJlU2hlZXQoYm9vbCB3YXNHcmFudGVkLCBTaGFyZVNoZWV0Q2FsbGJhY2tJRCBjYWxsYmEK
IFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UgV2ViUGFnZTo6cmVxdWVzdERPTVBhc3Rl
QWNjZXNzKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKIHsKICAgICBhdXRvIHJlc3Bv
bnNlID0gV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZTsK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIC8vIEZJWE1FOiBDb21wdXRpbmcgYW5kIHNl
bmRpbmcgYW4gYXV0b2NvcnJlY3Rpb24gY29udGV4dCBpcyBhIHdvcmthcm91bmQgZm9yIHRoZSBm
YWN0IHRoYXQgYXV0b2NvcnJlY3Rpb24gY29udGV4dAorICAgIC8vIHJlcXVlc3RzIG9uIGlPUyBh
cmUgY3VycmVudGx5IHN5bmNocm9ub3VzIGluIHRoZSB3ZWIgcHJvY2Vzcy4gVGhpcyBhbGxvd3Mg
dXMgdG8gaW1tZWRpYXRlbHkgZnVsZmlsbCBwZW5kaW5nCisgICAgLy8gYXV0b2NvcnJlY3Rpb24g
Y29udGV4dCByZXF1ZXN0cyBpbiB0aGUgVUkgcHJvY2VzcyBvbiBpT1MgYmVmb3JlIGhhbmRsaW5n
IHRoZSBET00gcGFzdGUgcmVxdWVzdC4gVGhpcyB3b3JrYXJvdW5kCisgICAgLy8gc2hvdWxkIGJl
IHJlbW92ZWQgb25jZSA8cmRhcjovL3Byb2JsZW0vMTYyMDcwMDI+IGlzIHJlc29sdmVkLgorICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0
KGF1dG9jb3JyZWN0aW9uQ29udGV4dCgpKSk7CisjZW5kaWYKICAgICBzZW5kU3luY1dpdGhEZWxh
eWVkUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdERPTVBhc3RlQWNjZXNzKHJl
Y3RGb3JFbGVtZW50QXRJbnRlcmFjdGlvbkxvY2F0aW9uKCksIG9yaWdpbklkZW50aWZpZXIpLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0RE9NUGFzdGVBY2Nlc3M6OlJlcGx5KHJlc3Bv
bnNlKSk7CiAgICAgcmV0dXJuIHJlc3BvbnNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGU0NzFkZjBkYWIyODg0MjdhMjYzODJmZGIyM2ExYjdm
ZDUxNDIzNWEuLjJkYzllNTE3YWUxNTgwMzE2NjMyODc4YWEwMDQ5NTQ1NjAyNGI2MjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTY0MSw4ICs2NDEs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0
cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGFwcGx5
QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9y
aWdpbmFsVGV4dCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzeW5jQXBwbHlBdXRvY29ycmVjdGlv
bihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RBdXRvY29y
cmVjdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBhdXRvY29ycmVjdGlvbkNvbnRl
eHRTeW5jKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0JiYp
PiYmKTsKKyAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoKTsKICAgICB2b2lk
IGdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVl
c3QmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uJiYpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IElu
dGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBzdGFydEludGVyYWN0aW9u
V2l0aEVsZW1lbnRBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpp
bmRleCBjYjBiNTcwOTMzNjRjMGU1NTQyNDNmOTMwOWMzOTI1ZDU0OGFmNGYwLi5jY2U3NzIyMjZh
NTliODc1YWE2MDhiOGYyYTdhMDMwYzZmMDZmZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTc4LDggKzc4LDcg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVxdWVzdEF1dG9j
b3JyZWN0aW9uRGF0YShTdHJpbmcgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKICAgICBBcHBseUF1dG9jb3JyZWN0aW9uKFN0cmluZyBjb3JyZWN0
aW9uLCBTdHJpbmcgb3JpZ2luYWxUZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICAgICBTeW5jQXBwbHlBdXRvY29ycmVjdGlvbihTdHJpbmcgY29ycmVjdGlvbiwgU3RyaW5nIG9y
aWdpbmFsVGV4dCkgLT4gKGJvb2wgYXV0b2NvcnJlY3Rpb25BcHBsaWVkKSBEZWxheWVkCi0gICAg
UmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKLSAgICBBdXRvY29ycmVjdGlvbkNvbnRleHRTeW5jKCkgLT4gKHN0cnVjdCBXZWJLaXQ6Oldl
YkF1dG9jb3JyZWN0aW9uQ29udGV4dCBjb250ZXh0KSBEZWxheWVkCisgICAgUmVxdWVzdEF1dG9j
b3JyZWN0aW9uQ29udGV4dCgpCiAgICAgUmVxdWVzdEV2YXNpb25SZWN0c0Fib3ZlU2VsZWN0aW9u
KCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3RzKSBBc3luYwogICAgIEdldFBv
c2l0aW9uSW5mb3JtYXRpb24oc3RydWN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJl
cXVlc3QgcmVxdWVzdCkgLT4gKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uIGluZm9ybWF0aW9uKSBEZWxheWVkCiAgICAgUmVxdWVzdFBvc2l0aW9uSW5mb3Jt
YXRpb24oc3RydWN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVz
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KaW5kZXggNDJlZTc1N2ExYzZmYzRiYTY4MmFiOGE3M2IyMWZlYjEwMDRmMTAyOS4uYWY4
YjY0Njk4MzQyMTk4YmI5MGJiOTJhMmExYzIwMzMyMGUzZGI2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTIxNTcsMTQg
KzIxNTcsOSBAQCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQgV2ViUGFnZTo6YXV0b2NvcnJlY3Rp
b25Db250ZXh0KCkKICAgICByZXR1cm4geyBXVEZNb3ZlKGNvbnRleHRCZWZvcmUpLCBXVEZNb3Zl
KG1hcmtlZFRleHQpLCBXVEZNb3ZlKHNlbGVjdGVkVGV4dCksIFdURk1vdmUoY29udGV4dEFmdGVy
KSwgbG9jYXRpb24sIGxlbmd0aCB9OwogfQogCi12b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29y
cmVjdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpyZXF1
ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkF1dG9jb3JyZWN0aW9uQ29udGV4dENhbGxiYWNrKGF1dG9jb3JyZWN0aW9uQ29udGV4
dCgpLCBjYWxsYmFja0lEKSk7Ci19Ci0KLXZvaWQgV2ViUGFnZTo6YXV0b2NvcnJlY3Rpb25Db250
ZXh0U3luYyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihhdXRvY29y
cmVjdGlvbkNvbnRleHQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5k
bGVBdXRvY29ycmVjdGlvbkNvbnRleHQoYXV0b2NvcnJlY3Rpb25Db250ZXh0KCkpKTsKIH0KIAog
c3RhdGljIEhUTUxBbmNob3JFbGVtZW50KiBjb250YWluaW5nTGlua0VsZW1lbnQoRWxlbWVudCog
ZWxlbWVudCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBiNjA2YzRlYjk2ZTUwNzVhNTdjMWU2MjQ0MjAxZjkyNTMzZjYzNTkz
Li5jYTM5N2RhNzVkMTc3NGQ5YmQ1ZGYyODVlNjMxZTUzYjM1ODc4ODBkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTktMDMtMDUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgW2lPU10gRnJlcXVlbnQgMSBzZWNvbmQgSVBDIGRlYWRsb2NrcyB3aGVu
IHNob3dpbmcgYSBwYXN0ZSBjYWxsb3V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTUzNTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4NjI0Njc1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgTW9zdCBvZiB0
aGVzZSB0ZXN0cyBjdXJyZW50bHkgZW5jb3VudGVyIGFuZCByZWx5IG9uIHRoZSAxIHNlY29uZCBJ
UEMgdGltZW91dCB0byBmaW5pc2guIFRvIHRlc3QgdGhpcyBmaXgsIGZvcmNlCisgICAgICAgIGBp
Z25vcmVTeW5jaHJvbm91c01lc3NhZ2luZ1RpbWVvdXRzPXRydWVgIHRvIG1ha2UgdGhlbSBmYWls
IGlmIHRoZSBwcm9jZXNzZXMgZW5jb3VudGVyIGEgZGVhZGxvY2suCisKKyAgICAgICAgKiBlZGl0
aW5nL3Bhc3RlYm9hcmQvaW9zL2RvbS1wYXN0ZS1jb25maXJtYXRpb24uaHRtbDoKKyAgICAgICAg
KiBlZGl0aW5nL3Bhc3RlYm9hcmQvaW9zL2RvbS1wYXN0ZS1jb25zZWN1dGl2ZS1jb25maXJtYXRp
b25zLmh0bWw6CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2lvcy9kb20tcGFzdGUtcmVq
ZWN0aW9uLmh0bWw6CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2lvcy9kb20tcGFzdGUt
cmVxdWlyZXMtdXNlci1nZXN0dXJlLmh0bWw6CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJk
L2lvcy9kb20tcGFzdGUtc2FtZS1vcmlnaW4uaHRtbDoKKwogMjAxOS0wMy0wNSAgRXJpYyBMaWFu
ZyAgPGVyaWNsaWFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IEFkZCByZW1vdGUgc2VhcmNo
IHN1cHBvcnQgZm9yIGtleWJvYXJkIGZvY3VzYWJsZSBlbGVtZW50IHNlYXJjaCB0eXBlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvaW9zL2RvbS1wYXN0ZS1jb25m
aXJtYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBh
c3RlLWNvbmZpcm1hdGlvbi5odG1sCmluZGV4IDAwYzIzM2Q1MzZlNmQyMThmZThlYzhjN2VjOTYz
OWNlNTRiYTgwOTAuLjQ3MmY5NGQxYjgwNDJhZjdlYmFjNDExZDUxMTMyYjVkZDgxZTk5YWEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBhc3RlLWNv
bmZpcm1hdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3Mv
ZG9tLXBhc3RlLWNvbmZpcm1hdGlvbi5odG1sCkBAIC0xLDQgKzEsNCBAQAotPCFET0NUWVBFIGh0
bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZG9tUGFzdGVBbGxvd2VkPWZhbHNlIHVzZUZs
ZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRl
c3QtcnVubmVyIFsgZG9tUGFzdGVBbGxvd2VkPWZhbHNlIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1
ZSBpZ25vcmVTeW5jaHJvbm91c01lc3NhZ2luZ1RpbWVvdXRzPXRydWUgXSAtLT4KIDxodG1sPgog
PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlh
bC1zY2FsZT0xIj4KIDxoZWFkPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2lvcy9kb20tcGFzdGUtY29uc2VjdXRpdmUtY29uZmlybWF0aW9ucy5odG1sIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2lvcy9kb20tcGFzdGUtY29uc2VjdXRpdmUtY29u
ZmlybWF0aW9ucy5odG1sCmluZGV4IDVjZWViYmQ0MzJkNzFhNWQzNzE4YzhkZTY3ZTMxMGEzMjQ2
NGNiYTkuLmIzZDFhZTY5ZjA4MmRhNThlM2RiZDE4M2U0MzI0YTM4MDM4YWVhNWIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBhc3RlLWNvbnNlY3V0
aXZlLWNvbmZpcm1hdGlvbnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvaW9zL2RvbS1wYXN0ZS1jb25zZWN1dGl2ZS1jb25maXJtYXRpb25zLmh0bWwKQEAgLTEsNCAr
MSw0IEBACi08IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBkb21QYXN0
ZUFsbG93ZWQ9ZmFsc2UgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8IURPQ1RZUEUg
aHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBkb21QYXN0ZUFsbG93ZWQ9ZmFsc2UgdXNl
RmxleGlibGVWaWV3cG9ydD10cnVlIGlnbm9yZVN5bmNocm9ub3VzTWVzc2FnaW5nVGltZW91dHM9
dHJ1ZSBdIC0tPgogPGh0bWw+CiA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9
ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgogPGhlYWQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvaW9zL2RvbS1wYXN0ZS1yZWplY3Rpb24uaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBhc3RlLXJlamVjdGlvbi5o
dG1sCmluZGV4IDczZDJmOGYwNDYyYjAxNjcyMjMyMzY0ZTk1YWE0OGE5YzI0Mjk2M2IuLjM4MzZl
Nzk1ZjJjZjIyN2U4NTdkODE5YjhlN2NmODJjMGE0YzAxZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBhc3RlLXJlamVjdGlvbi5odG1sCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBhc3RlLXJlamVjdGlvbi5o
dG1sCkBAIC0xLDQgKzEsNCBAQAotPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVu
bmVyIFsgZG9tUGFzdGVBbGxvd2VkPWZhbHNlIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0t
PgorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZG9tUGFzdGVBbGxv
d2VkPWZhbHNlIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBpZ25vcmVTeW5jaHJvbm91c01lc3Nh
Z2luZ1RpbWVvdXRzPXRydWUgXSAtLT4KIDxodG1sPgogPG1ldGEgbmFtZT0idmlld3BvcnQiIGNv
bnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KIDxoZWFkPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2lvcy9kb20tcGFzdGUtcmVx
dWlyZXMtdXNlci1nZXN0dXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
aW9zL2RvbS1wYXN0ZS1yZXF1aXJlcy11c2VyLWdlc3R1cmUuaHRtbAppbmRleCBiZGY0ODliZjRh
Zjg4N2ExZDA5Y2NiOThjMTNhZGFjOTBkNDE4YWYzLi5hYzRlN2QzZjFmYTkxMDc1ZWE3NjBlYTgz
MGY2ZTMyN2UxYmEwYzM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvaW9zL2RvbS1wYXN0ZS1yZXF1aXJlcy11c2VyLWdlc3R1cmUuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvaW9zL2RvbS1wYXN0ZS1yZXF1aXJlcy11c2VyLWdlc3R1
cmUuaHRtbApAQCAtMSw0ICsxLDQgQEAKLTwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0
LXJ1bm5lciBbIGRvbVBhc3RlQWxsb3dlZD1mYWxzZSB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUg
XSAtLT4KKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGRvbVBhc3Rl
QWxsb3dlZD1mYWxzZSB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgaWdub3JlU3luY2hyb25vdXNN
ZXNzYWdpbmdUaW1lb3V0cz10cnVlIF0gLS0+CiA8aHRtbD4KIDxtZXRhIG5hbWU9InZpZXdwb3J0
IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CiA8aGVhZD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBhc3Rl
LXNhbWUtb3JpZ2luLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvaW9zL2Rv
bS1wYXN0ZS1zYW1lLW9yaWdpbi5odG1sCmluZGV4IGU5NmEyMzkzMjAzNjRkN2IyNTAxNGJkYzg5
MmY2N2U4MmI1OTcxZWYuLmFjYTBkNjlhMzQzYWEyODk5OGRiMDgxMjk5NmYyNTc2ZmFhNDdhYTMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pb3MvZG9tLXBhc3Rl
LXNhbWUtb3JpZ2luLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2lv
cy9kb20tcGFzdGUtc2FtZS1vcmlnaW4uaHRtbApAQCAtMSw0ICsxLDQgQEAKLTwhRE9DVFlQRSBo
dG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGRvbVBhc3RlQWxsb3dlZD1mYWxzZSB1c2VG
bGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10
ZXN0LXJ1bm5lciBbIGRvbVBhc3RlQWxsb3dlZD1mYWxzZSB1c2VGbGV4aWJsZVZpZXdwb3J0PXRy
dWUgaWdub3JlU3luY2hyb25vdXNNZXNzYWdpbmdUaW1lb3V0cz10cnVlIF0gLS0+CiA8aHRtbD4K
IDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRp
YWwtc2NhbGU9MSI+CiA8aGVhZD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>