<?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>210451</bug_id>
          
          <creation_ts>2020-04-13 13:04:27 -0700</creation_ts>
          <short_desc>Enable service workers for app-bound domains</short_desc>
          <delta_ts>2020-04-21 08:56:50 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1641055</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-13 13:04:27 -0700</bug_when>
    <thetext>We should allow the use of service workers for app-bound domain navigations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641057</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-13 13:05:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/61479474&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642044</commentid>
    <comment_count>2</comment_count>
      <attachid>396591</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-15 16:54:35 -0700</bug_when>
    <thetext>Created attachment 396591
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642291</commentid>
    <comment_count>3</comment_count>
      <attachid>396657</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-16 09:46:20 -0700</bug_when>
    <thetext>Created attachment 396657
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642328</commentid>
    <comment_count>4</comment_count>
      <attachid>396657</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-04-16 10:45:20 -0700</bug_when>
    <thetext>Comment on attachment 396657
Patch

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

&gt; Source/WebKit/ChangeLog:10
&gt; +        Service workers should be disabled otherwise.

The goal as I understand it is to allow an app to register service workers from a specific domain.
This could be handled at two point in time:
- when importing service workers. Can we pass that information straight to the network process as part of website data store parameters? If so, the importing of service workers would filter out non app-bound registrations
- when registering a service worker in web process. Registering a service worker from a document not app-bound would be rejected.

It might also be good to only expose the service worker API for apps with entitlements or app bound apps.

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:431
&gt; +    auto allowServiceWorkersForAppBoundDomain = loader.parameters().isNavigatingToAppBoundDomain &amp;&amp; *loader.parameters().isNavigatingToAppBoundDomain == NavigatingToAppBoundDomain::Yes;

s/auto/bool

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:1052
&gt; +WebSWServerConnection&amp; NetworkConnectionToWebProcess::swConnection(bool allowServiceWorkersForAppBoundDomain)

We are passing this boolean only for ASSERTs so I am wondering whether this is actually worth it.
Maybe we could just remove the ASSERTs

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:169
&gt; +    WebSWServerConnection&amp; swConnection(bool);

This bool is mysterious.
I would remove it if possible and use otherwise an enum class bool.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:446
&gt; +        addServiceWorkerSession(sessionID);

We might add more than one website data store so this needs to be a map instead of direct NetworkProcess member fields.
Why cannot we reuse m_serviceWorkerInfo?
addServiceWorkerSession is not doing a lot of things except registering in a map and creating a folder if needed.
Maybe we could just remove the if (parentProcessHasServiceWorkerEntitlement()) check.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1554
&gt; +    if (!path.isEmpty() &amp;&amp; websiteDataTypes.contains(WebsiteDataType::ServiceWorkerRegistrations) &amp;&amp; !sessionID.isEphemeral())

It seems we should do the query to m_serviceWorkerInfo at the end of the if check.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:-267
&gt; -    if (auto* registration = m_loader.connectionToWebProcess().swConnection().server().getRegistration(m_serviceWorkerRegistrationIdentifier))

If we have a registration and are doing a service worker fetch task, we are actually allowed to use service worker.
No need to recompute it here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642338</commentid>
    <comment_count>5</comment_count>
      <attachid>396657</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-16 11:02:54 -0700</bug_when>
    <thetext>Comment on attachment 396657
Patch

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

&gt;&gt; Source/WebKit/ChangeLog:10
&gt;&gt; +        Service workers should be disabled otherwise.
&gt; 
&gt; The goal as I understand it is to allow an app to register service workers from a specific domain.
&gt; This could be handled at two point in time:
&gt; - when importing service workers. Can we pass that information straight to the network process as part of website data store parameters? If so, the importing of service workers would filter out non app-bound registrations
&gt; - when registering a service worker in web process. Registering a service worker from a document not app-bound would be rejected.
&gt; 
&gt; It might also be good to only expose the service worker API for apps with entitlements or app bound apps.

Yes, this is correct. This patch checks in both the web process and network process for whether the domain is app-bound. Maybe this isn&apos;t necessary, and I&apos;m wondering if we can remove the entitlement check and app-bound domain check from either the network process or the web process completely. Not sure which is better.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:431
&gt;&gt; +    auto allowServiceWorkersForAppBoundDomain = loader.parameters().isNavigatingToAppBoundDomain &amp;&amp; *loader.parameters().isNavigatingToAppBoundDomain == NavigatingToAppBoundDomain::Yes;
&gt; 
&gt; s/auto/bool

will change.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:1052
&gt;&gt; +WebSWServerConnection&amp; NetworkConnectionToWebProcess::swConnection(bool allowServiceWorkersForAppBoundDomain)
&gt; 
&gt; We are passing this boolean only for ASSERTs so I am wondering whether this is actually worth it.
&gt; Maybe we could just remove the ASSERTs

Ok. I wasn&apos;t sure if they were added for some debugging reason.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:169
&gt;&gt; +    WebSWServerConnection&amp; swConnection(bool);
&gt; 
&gt; This bool is mysterious.
&gt; I would remove it if possible and use otherwise an enum class bool.

Will do, or the parameter is maybe not even needed if we remove the asserts.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:446
&gt;&gt; +        addServiceWorkerSession(sessionID);
&gt; 
&gt; We might add more than one website data store so this needs to be a map instead of direct NetworkProcess member fields.
&gt; Why cannot we reuse m_serviceWorkerInfo?
&gt; addServiceWorkerSession is not doing a lot of things except registering in a map and creating a folder if needed.
&gt; Maybe we could just remove the if (parentProcessHasServiceWorkerEntitlement()) check.

Ok. So to clarify, we can add a service worker session regardless of whether the entitlement is present?

Do we need to check parentProcessHasServiceWorkerEntitlement() in the network process at all if we check it in the web process (from your first comment I am interpreting that if we restrict it in the web process we don&apos;t need to also check for the entitlement in the network process).

&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1554
&gt;&gt; +    if (!path.isEmpty() &amp;&amp; websiteDataTypes.contains(WebsiteDataType::ServiceWorkerRegistrations) &amp;&amp; !sessionID.isEphemeral())
&gt; 
&gt; It seems we should do the query to m_serviceWorkerInfo at the end of the if check.

Ok, why is that better than the beginning?

&gt;&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:-267
&gt;&gt; -    if (auto* registration = m_loader.connectionToWebProcess().swConnection().server().getRegistration(m_serviceWorkerRegistrationIdentifier))
&gt; 
&gt; If we have a registration and are doing a service worker fetch task, we are actually allowed to use service worker.
&gt; No need to recompute it here.

Ok. So this can be if (auto* registration = m_loader.connectionToWebProcess().swConnection(true).server().getRegistration(m_serviceWorkerRegistrationIdentifier)) ? Again, maybe not needed if we remove the ASSERTs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642372</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-04-16 11:39:38 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #5)
&gt; Comment on attachment 396657 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=396657&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/ChangeLog:10
&gt; &gt;&gt; +        Service workers should be disabled otherwise.
&gt; &gt; 
&gt; &gt; The goal as I understand it is to allow an app to register service workers from a specific domain.
&gt; &gt; This could be handled at two point in time:
&gt; &gt; - when importing service workers. Can we pass that information straight to the network process as part of website data store parameters? If so, the importing of service workers would filter out non app-bound registrations
&gt; &gt; - when registering a service worker in web process. Registering a service worker from a document not app-bound would be rejected.
&gt; &gt; 
&gt; &gt; It might also be good to only expose the service worker API for apps with entitlements or app bound apps.
&gt; 
&gt; Yes, this is correct. This patch checks in both the web process and network
&gt; process for whether the domain is app-bound. Maybe this isn&apos;t necessary, and
&gt; I&apos;m wondering if we can remove the entitlement check and app-bound domain
&gt; check from either the network process or the web process completely. Not
&gt; sure which is better.

Ideally, we should be able to keep everything in UIProcess and NetworkProcess, UIProcess to set the runtime flag and NetworkProcess to filter registrations.
- If no entitlement, no service worker API exposed, no service worker imported, ServiceWorker mode should be none for all loads
- If app bound, network process gets the list of allowed service worker registration domains and will reject any imported registration/new registration that is not in the list
- If entitlement, all domains are allowed.

If we can pass the list of allowed domains to NetworkProcess/SWServer, we could do the checks in SWServer::scheduleJob and SWServer:: addRegistrationFromStore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642377</commentid>
    <comment_count>7</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-16 11:47:49 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #6)
&gt; (In reply to katherine_cheney from comment #5)
&gt; &gt; Comment on attachment 396657 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=396657&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit/ChangeLog:10
&gt; &gt; &gt;&gt; +        Service workers should be disabled otherwise.
&gt; &gt; &gt; 
&gt; &gt; &gt; The goal as I understand it is to allow an app to register service workers from a specific domain.
&gt; &gt; &gt; This could be handled at two point in time:
&gt; &gt; &gt; - when importing service workers. Can we pass that information straight to the network process as part of website data store parameters? If so, the importing of service workers would filter out non app-bound registrations
&gt; &gt; &gt; - when registering a service worker in web process. Registering a service worker from a document not app-bound would be rejected.
&gt; &gt; &gt; 
&gt; &gt; &gt; It might also be good to only expose the service worker API for apps with entitlements or app bound apps.
&gt; &gt; 
&gt; &gt; Yes, this is correct. This patch checks in both the web process and network
&gt; &gt; process for whether the domain is app-bound. Maybe this isn&apos;t necessary, and
&gt; &gt; I&apos;m wondering if we can remove the entitlement check and app-bound domain
&gt; &gt; check from either the network process or the web process completely. Not
&gt; &gt; sure which is better.
&gt; 
&gt; Ideally, we should be able to keep everything in UIProcess and
&gt; NetworkProcess, UIProcess to set the runtime flag and NetworkProcess to
&gt; filter registrations.
&gt; - If no entitlement, no service worker API exposed, no service worker
&gt; imported, ServiceWorker mode should be none for all loads

If there is no entitlement in the UIProcess, don&apos;t we also need to check for an app-bound domain to expose SWs for them? Or is this not needed?

&gt; - If app bound, network process gets the list of allowed service worker
&gt; registration domains and will reject any imported registration/new
&gt; registration that is not in the list
&gt; - If entitlement, all domains are allowed.
&gt; 
&gt; If we can pass the list of allowed domains to NetworkProcess/SWServer, we
&gt; could do the checks in SWServer::scheduleJob and SWServer::
&gt; addRegistrationFromStore.

OK. I&apos;ll look into this. My only concern is this requires IPC from the UIProcess to get these domains. Is this simpler than checking for an app-bound domain in NetworkConnectionToWebProcess::createFetchTask(), where the information already exists to determine whether it is app bound?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642383</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-04-16 11:56:55 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #7)
&gt; (In reply to youenn fablet from comment #6)
&gt; &gt; (In reply to katherine_cheney from comment #5)
&gt; &gt; &gt; Comment on attachment 396657 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=396657&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt; Source/WebKit/ChangeLog:10
&gt; &gt; &gt; &gt;&gt; +        Service workers should be disabled otherwise.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; The goal as I understand it is to allow an app to register service workers from a specific domain.
&gt; &gt; &gt; &gt; This could be handled at two point in time:
&gt; &gt; &gt; &gt; - when importing service workers. Can we pass that information straight to the network process as part of website data store parameters? If so, the importing of service workers would filter out non app-bound registrations
&gt; &gt; &gt; &gt; - when registering a service worker in web process. Registering a service worker from a document not app-bound would be rejected.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; It might also be good to only expose the service worker API for apps with entitlements or app bound apps.
&gt; &gt; &gt; 
&gt; &gt; &gt; Yes, this is correct. This patch checks in both the web process and network
&gt; &gt; &gt; process for whether the domain is app-bound. Maybe this isn&apos;t necessary, and
&gt; &gt; &gt; I&apos;m wondering if we can remove the entitlement check and app-bound domain
&gt; &gt; &gt; check from either the network process or the web process completely. Not
&gt; &gt; &gt; sure which is better.
&gt; &gt; 
&gt; &gt; Ideally, we should be able to keep everything in UIProcess and
&gt; &gt; NetworkProcess, UIProcess to set the runtime flag and NetworkProcess to
&gt; &gt; filter registrations.
&gt; &gt; - If no entitlement, no service worker API exposed, no service worker
&gt; &gt; imported, ServiceWorker mode should be none for all loads
&gt; 
&gt; If there is no entitlement in the UIProcess, don&apos;t we also need to check for
&gt; an app-bound domain to expose SWs for them? Or is this not needed?

I think it is simpler to expose service worker API to all pages rendered by an app-bound page. Bur registration will fail for some domains, maybe as if quota for those domains was zero.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642437</commentid>
    <comment_count>9</comment_count>
      <attachid>396701</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-16 14:49:42 -0700</bug_when>
    <thetext>Created attachment 396701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642444</commentid>
    <comment_count>10</comment_count>
      <attachid>396704</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-16 15:09:09 -0700</bug_when>
    <thetext>Created attachment 396704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642447</commentid>
    <comment_count>11</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-16 15:15:30 -0700</bug_when>
    <thetext>Ok, this patch is much simpler after making some of your suggestions.

I am not sure I fully understand what you had in mind, but this patch enables the service worker runtime flag in the UI Process if the entitlement is present or the navigation is app-bound. It disables it if the entitlement is not present and the navigation is not app-bound.

In the Network process, it checks for an app-bound domain in NetworkConnectionToWebProcess (where the information is already available) and does not allow a service worker load if the entitlement is not present and the domain is not app-bound. I thought this was simpler than trying to send the appBoundDomains list over from the UI Process and storing it in the Network Process when the information was already there on a per-load basis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642607</commentid>
    <comment_count>12</comment_count>
      <attachid>396704</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-04-17 01:49:01 -0700</bug_when>
    <thetext>Comment on attachment 396704
Patch

This looks indeed better.

If we can, I would like to see whether we can pass to NetworkProcess, as part of WebsiteDataStore parameters, the app bound domain information.
SWServer would then be taught about the domains for which service worker registrations would be allowed (SWServer::scheduleJob and SWServer::addRegistrationFromStore).

The additional benefit is that we would no longer need the network process to trust web process it is providing the right isNavigatingToAppBoundDomain information.

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

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:428
&gt;  

We are currently creating a SWServer at creation of the NetworkConnectionToWebProcess (see establishSWServerConnection) based on parent entitlement.
We should probably update that code if we want things to work.

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:431
&gt; +    auto allowServiceWorkersForAppBoundDomain = loader.parameters().isNavigatingToAppBoundDomain &amp;&amp; *loader.parameters().isNavigatingToAppBoundDomain == NavigatingToAppBoundDomain::Yes;

Are we correctly updating loader.parameters().isNavigatingToAppBoundDomain upon redirection?

Another approach would be to set loadParameters.serviceWorkersMode to ServiceWorkerMode::None in WebLoaderStrategy based on navigation app bound value.
No change needed here or we could then return early here by checking the mode if we do not want to create a swConnection().

Ultimately, it seems better though to leave that code as is and instead control which service workers can be registered/imported.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3154
&gt; +#endif

The issue here is that the preferences are process wide.
If we end up with two pages on the same process, the preference will be set correctly for one page, not the other.

Instead, we could have a simple approach where the API is available but service worker registration would fail for some domains, as if quota is null.

Also, if a top level page is app bound, I am not sure we want third party iframes to have access to service workers.
It would be nice to have a test for that.

On the other side of it, if we have something like a control scheme top level frame which embeds a frame from the app bound domain, we might want to allow service worker?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642698</commentid>
    <comment_count>13</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-17 08:48:50 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #12)
&gt; Comment on attachment 396704 [details]
&gt; Patch
&gt; 

&gt; This looks indeed better.
&gt; 
&gt; If we can, I would like to see whether we can pass to NetworkProcess, as
&gt; part of WebsiteDataStore parameters, the app bound domain information.
&gt; SWServer would then be taught about the domains for which service worker
&gt; registrations would be allowed (SWServer::scheduleJob and
&gt; SWServer::addRegistrationFromStore).

The app bound domain information is read off the background thread, and would require a completion handler in WebsiteDataStore::platformSetNetworkParameters, which does not seem feasible because of all the call sites for this function. I think passing this to the network process would require separate IPC and a completion handler somewhere in NetworkConnectionToWebProcess when creating the SW server.

&gt; 
&gt; The additional benefit is that we would no longer need the network process
&gt; to trust web process it is providing the right isNavigatingToAppBoundDomain
&gt; information.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=396704&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:428
&gt; &gt;  
&gt; 
&gt; We are currently creating a SWServer at creation of the
&gt; NetworkConnectionToWebProcess (see establishSWServerConnection) based on
&gt; parent entitlement.
&gt; We should probably update that code if we want things to work.

When calling swConnection(), establishSWServerConnection() will be called if there is no connection. So we can remove this call from the constructor, but I assumed eagerly establishing the connection had some benefits.

&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:431
&gt; &gt; +    auto allowServiceWorkersForAppBoundDomain = loader.parameters().isNavigatingToAppBoundDomain &amp;&amp; *loader.parameters().isNavigatingToAppBoundDomain == NavigatingToAppBoundDomain::Yes;
&gt; 
&gt; Are we correctly updating loader.parameters().isNavigatingToAppBoundDomain
&gt; upon redirection?
&gt; 

From testing this, I think so. But where can I look for redirects in code so I can make sure?

&gt; Another approach would be to set loadParameters.serviceWorkersMode to
&gt; ServiceWorkerMode::None in WebLoaderStrategy based on navigation app bound
&gt; value.
&gt; No change needed here or we could then return early here by checking the
&gt; mode if we do not want to create a swConnection().
&gt; 

This seems like a good idea.

&gt; Ultimately, it seems better though to leave that code as is and instead
&gt; control which service workers can be registered/imported.

If I can figure out a way to easily send the app bound domain information to the network process, I will try to do this. As mentioned above, I&apos;m not sure it is possible in WebsiteDataStoreParameters.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3154
&gt; &gt; +#endif
&gt; 
&gt; The issue here is that the preferences are process wide.
&gt; If we end up with two pages on the same process, the preference will be set
&gt; correctly for one page, not the other.

This is news to me. Good to know.

&gt; 
&gt; Instead, we could have a simple approach where the API is available but
&gt; service worker registration would fail for some domains, as if quota is null.
&gt; 

I agree that would be simpler. Does this mean I can remove all changes from WebPageProxy.cpp/Webpage.cpp?

&gt; Also, if a top level page is app bound, I am not sure we want third party
&gt; iframes to have access to service workers.
&gt; It would be nice to have a test for that.
&gt; 

Good idea. I&apos;ll add a test for this.

&gt; On the other side of it, if we have something like a control scheme top
&gt; level frame which embeds a frame from the app bound domain, we might want to
&gt; allow service worker?

This is also an interesting idea. It might be better in a followup patch.



Thank you for the comments!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642701</commentid>
    <comment_count>14</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-17 09:01:35 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #13)
&gt; (In reply to youenn fablet from comment #12)
&gt; &gt; Comment on attachment 396704 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; 
&gt; &gt; This looks indeed better.
&gt; &gt; 
&gt; &gt; If we can, I would like to see whether we can pass to NetworkProcess, as
&gt; &gt; part of WebsiteDataStore parameters, the app bound domain information.
&gt; &gt; SWServer would then be taught about the domains for which service worker
&gt; &gt; registrations would be allowed (SWServer::scheduleJob and
&gt; &gt; SWServer::addRegistrationFromStore).
&gt; 
&gt; The app bound domain information is read off the background thread, and
&gt; would require a completion handler in
&gt; WebsiteDataStore::platformSetNetworkParameters, which does not seem feasible
&gt; because of all the call sites for this function. I think passing this to the
&gt; network process would require separate IPC and a completion handler
&gt; somewhere in NetworkConnectionToWebProcess when creating the SW server.
&gt; 
**I meant NetworkProcess when creating the SW server.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642713</commentid>
    <comment_count>15</comment_count>
      <attachid>396704</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-04-17 09:40:54 -0700</bug_when>
    <thetext>Comment on attachment 396704
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3154
&gt;&gt;&gt; +#endif
&gt;&gt; 
&gt;&gt; The issue here is that the preferences are process wide.
&gt;&gt; If we end up with two pages on the same process, the preference will be set correctly for one page, not the other.
&gt;&gt; 
&gt;&gt; Instead, we could have a simple approach where the API is available but service worker registration would fail for some domains, as if quota is null.
&gt;&gt; 
&gt;&gt; Also, if a top level page is app bound, I am not sure we want third party iframes to have access to service workers.
&gt;&gt; It would be nice to have a test for that.
&gt;&gt; 
&gt;&gt; On the other side of it, if we have something like a control scheme top level frame which embeds a frame from the app bound domain, we might want to allow service worker?
&gt; 
&gt; This is news to me. Good to know.

I don&apos;t think child frames within app bound domains is in scope for this change, but an interesting idea for a future improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642792</commentid>
    <comment_count>16</comment_count>
      <attachid>396786</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-17 13:08:12 -0700</bug_when>
    <thetext>Created attachment 396786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642794</commentid>
    <comment_count>17</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-17 13:10:00 -0700</bug_when>
    <thetext>OK, I think this patch is getting closer. The SW API is now available for all WebViews, but in SWServer the service worker registration is filtered by the list of app-bound domains (or the presence of the entitlement).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642824</commentid>
    <comment_count>18</comment_count>
      <attachid>396786</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-04-17 14:07:19 -0700</bug_when>
    <thetext>Comment on attachment 396786
Patch

Overall looks good to me, a few comments.

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

&gt; Source/WebKit/ChangeLog:9
&gt; +        Exposes the service worker API to all WebViews and only restricts access

I don&apos;t think we want to expose the service worker API for apps that are neither appboud nor without entitlement.

&gt; Source/WebCore/workers/service/server/SWServer.cpp:159
&gt; +    getAppBoundDomains([this, weakThis = makeWeakPtr(this), data = WTFMove(data)] () mutable {

check weakThis

&gt; Source/WebCore/workers/service/server/SWServer.cpp:331
&gt; +void SWServer::getAppBoundDomains(CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)

Sounds good like this.
Another approach would be something like: void SWServer::validateRegistrationDomain(const URL&amp;, CompletionHandler&lt;void(bool)&gt;&amp;&amp;). or CompletionHandler&lt;void(Error)&gt;&amp;&amp;

&gt; Source/WebCore/workers/service/server/SWServer.cpp:333
&gt; +    if (!m_appBoundDomains.isEmpty()) {

No need to fetch if we have the entitlement.
Also, we should fetch these values only once, which might not be the case if m_appBoundDomains is empty.

&gt; Source/WebCore/workers/service/server/SWServer.cpp:338
&gt; +    m_appBoundDomainsCallback([this, weakThis = makeWeakPtr(this), completionHandler = WTFMove(completionHandler)](auto&amp;&amp; appBoundDomains) mutable {

Add a weakThis check.

&gt; Source/WebCore/workers/service/server/SWServer.cpp:349
&gt; +    getAppBoundDomains([this, weakThis = makeWeakPtr(this), jobData = WTFMove(jobData)] () mutable {

weakThis check

&gt; Source/WebCore/workers/service/server/SWServer.cpp:350
&gt; +        if (m_hasServiceWorkerEntitlement || m_appBoundDomains.contains(WebCore::RegistrableDomain(jobData.scriptURL))) {

If this is not allowed, we should probably fail the job and add a test displaying the error the page will see.

&gt; Source/WebCore/workers/service/server/SWServer.h:129
&gt; +    using AppBoundDomainsCallback = Function&lt;void(CompletionHandler&lt;void(HashSet&lt;WebCore::RegistrableDomain&gt;&amp;&amp;)&gt;&amp;&amp;)&gt;;

Should be a CompletionHandler I believe.

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:453
&gt;  #endif

replace by #else #endif

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:527
&gt; +    pageConfiguration-&gt;preferences()-&gt;setServiceWorkerEntitlementDisabledForTesting(!![_configuration preferences]._serviceWorkerEntitlementDisabledForTesting);

I think we want to keep something like:
if (!WTF::processHasEntitlement(&quot;com.apple.developer.WebKit.ServiceWorkers&quot;) &amp;&amp; !isAppBound)
     pageConfiguration-&gt;preferences()-&gt;setServiceWorkersEnabled(false);

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1468
&gt; +            completionHandler(WTFMove(appBoundDomainsCopy));

Can we just write completionHandler(appBoundDomains)?

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1469
&gt; +        });

return early.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642849</commentid>
    <comment_count>19</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-17 14:34:43 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #18)
&gt; Comment on attachment 396786 [details]
&gt; Patch
&gt; 
&gt; Overall looks good to me, a few comments.
&gt; 

Thank you. Working on these changes now.

Two questions:

1) Exposing the service worker API is just setting the runtimeEnabledFeature flag, correct?

2) If we expose the SW APIs to pages which are app-bound or have the entitlement, non-app bound service worker requests will never make it to the SWServer check, so isn&apos;t it unnecessary to have both the API gated and the network process check?

(I am unsure how I would have a test which checks the SWServer error message if the API is disabled for SW loads).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642851</commentid>
    <comment_count>20</comment_count>
      <attachid>396786</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-17 14:43:07 -0700</bug_when>
    <thetext>Comment on attachment 396786
Patch

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

&gt;&gt; Source/WebCore/workers/service/server/SWServer.cpp:333
&gt;&gt; +    if (!m_appBoundDomains.isEmpty()) {
&gt; 
&gt; No need to fetch if we have the entitlement.
&gt; Also, we should fetch these values only once, which might not be the case if m_appBoundDomains is empty.

Good catch

&gt;&gt; Source/WebCore/workers/service/server/SWServer.h:129
&gt;&gt; +    using AppBoundDomainsCallback = Function&lt;void(CompletionHandler&lt;void(HashSet&lt;WebCore::RegistrableDomain&gt;&amp;&amp;)&gt;&amp;&amp;)&gt;;
&gt; 
&gt; Should be a CompletionHandler I believe.

Not sure what you mean here. I think it needs to be a function so it can take the sessionID from the Network Process?

&gt;&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1468
&gt;&gt; +            completionHandler(WTFMove(appBoundDomainsCopy));
&gt; 
&gt; Can we just write completionHandler(appBoundDomains)?

I don&apos;t think so, because appBoundDomains is a reference to a class member variable. I am not an expert at WTFMove() though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642893</commentid>
    <comment_count>21</comment_count>
      <attachid>396814</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-17 16:21:12 -0700</bug_when>
    <thetext>Created attachment 396814
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642896</commentid>
    <comment_count>22</comment_count>
      <attachid>396816</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-17 16:30:18 -0700</bug_when>
    <thetext>Created attachment 396816
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642904</commentid>
    <comment_count>23</comment_count>
      <attachid>396818</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-17 17:03:59 -0700</bug_when>
    <thetext>Created attachment 396818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642909</commentid>
    <comment_count>24</comment_count>
      <attachid>396818</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-04-17 17:19:00 -0700</bug_when>
    <thetext>Comment on attachment 396818
Patch

Thanks for taking this on -- I think this looks great! We can polish more this week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642912</commentid>
    <comment_count>25</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-17 17:54:46 -0700</bug_when>
    <thetext>Committed r260303: &lt;https://trac.webkit.org/changeset/260303&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 396818.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643502</commentid>
    <comment_count>26</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-04-20 10:25:42 -0700</bug_when>
    <thetext>Note: A MacCatalyst build fix was needed:

https://trac.webkit.org/changeset/260372/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643886</commentid>
    <comment_count>27</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-21 08:56:50 -0700</bug_when>
    <thetext>Note: Another MacCatalyst build fix was needed

https://trac.webkit.org/changeset/260405/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396591</attachid>
            <date>2020-04-15 16:54:35 -0700</date>
            <delta_ts>2020-04-16 09:46:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210451-20200415165434.patch</filename>
            <type>text/plain</type>
            <size>48764</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZhZTNkNDNhNGNiZmY5N2Iw
MTk1OTExNDkyNjJkOTQzZmU4ZWUzZTMuLjMxYzA1NTM5OTMwM2EwMDZiMGMyZjU2Zjc4OGExNmNl
NTU5NjgyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE3IEBACisyMDIwLTA0LTE1ICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBzZXJ2
aWNlIHdvcmtlcnMgZm9yIGFwcC1ib3VuZCBkb21haW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA0NTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzYxNDc5NDc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEVuYWJsZSBzZXJ2aWNlIHdvcmtlcnMgZm9yIFdlYlZpZXdzIG5hdmlnYXRpbmcgdG8gYW4g
YXBwLWJvdW5kIGRvbWFpbi4KKyAgICAgICAgU2VydmljZSB3b3JrZXJzIHNob3VsZCBiZSBkaXNh
YmxlZCBvdGhlcndpc2UuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGVGZXRjaFRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnN3Q29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgRXN0YWJsaXNoZXMgYSBTVyBjb25uZWN0aW9u
IGhlcmUgaWYgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0LCBiZWNhdXNlCisgICAgICAgIGl0IGlz
IHByZXZpb3VzbHkgZXN0YWJsaXNoZWQgaW4gdGhlIGNvbnN0cnVjdG9yIGJlZm9yZSBrbm93aW5n
IHdoZXRoZXIKKyAgICAgICAgdGhlIGxvYWQgaXMgZm9yIGFuIGFwcC1ib3VuZCBkb21haW4uIFRo
aXMgYWxzbyB0aHJlYWRzIGEgcGFyYW1ldGVyCisgICAgICAgIHRocm91Z2ggYW55IGZ1bmN0aW9u
IHdoaWNoIGNoZWNrcyBmb3IgdGhlIHNlcnZpY2Ugd29ya2VyIGVudGl0bGVtZW50CisgICAgICAg
IHRvIGFsc28gY2hlY2sgaWYgdGhlIGxvYWQgaXMgZm9yIGFuIGFwcC1ib3VuZCBkb21haW4gaW4g
dGhlIGNhc2Ugd2hlcmUKKyAgICAgICAgdGhlIGVudGl0bGVtZW50IGlzIG1pc3NpbmcuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbik6CisgICAgICAg
IFN0b3JlcyB0aGUgZnVuY3Rpb24gcGFyYW1ldGVycyB3aGVuIGFkZGluZyBhIG5ldyBXZWJzaXRl
RGF0YVN0b3JlIG9yCisgICAgICAgIGluaXRpYWxpemluZyB0aGUgTmV0d29ya1Byb2Nlc3Mgc28g
d2UgY2FuIGFkZCBhIHNlcnZpY2Ugd29ya2VyIHNlc3Npb24KKyAgICAgICAgYXQgbmF2aWdhdGlv
biBpZiB0aGUgZGVzdGluYXRpb24gZG9tYWluIGlzIGFwcC1ib3VuZC4KKyAgICAgICAgCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgor
ICAgICAgICBDaGVjayBpZiB0aGUgcGF0aCBpcyBlbXB0eSBoZXJlIGJlZm9yZSBhdHRlbXB0aW5n
IHRvIGZldGNoIGEgc2VydmljZQorICAgICAgICB3b3JrZXIgc2Vzc2lvbiBiZWNhdXNlIHRoZXJl
IGlzIG5vIGd1YXJhbnRlZSB0aGF0IG9uZSBoYXMgYmVlbiBjcmVhdGVkCisgICAgICAgIHlldC4K
KworICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJTV1NlcnZlckNvbm5l
Y3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6c29mdFVwZGF0ZUlm
TmVlZGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICBUaHJlYWRzIGEgcGFy
YW1ldGVyIHRocm91Z2ggYW55IGZ1bmN0aW9uIHdoaWNoIGNoZWNrcyBmb3IgdGhlIHNlcnZpY2UK
KyAgICAgICAgd29ya2VyIGVudGl0bGVtZW50IHRvIGFsc28gY2hlY2sgaWYgdGhlIGxvYWQgaXMg
Zm9yIGFuIGFwcC1ib3VuZCBkb21haW4KKyAgICAgICAgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIGVu
dGl0bGVtZW50IGlzIG1pc3NpbmcuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0
d29ya1Byb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwYXJl
bnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnRPdmVycmlkZSk6CisgICAgICAgIEluIG9yZGVyIHRvIHRlc3QgdGhpcyB0aG9yb3VnaGx5
LCBUZXN0V2ViS2l0QVBJIG5lZWRlZCBhIHdheSB0bworICAgICAgICB0ZW1wb3JhcmlseSBkaXNh
YmxlIHRoZSBzZXJ2aWNlIHdvcmtlciBlbnRpdGxlbWVudC4gVGhpcyBmdW5jdGlvbgorICAgICAg
ICBvdmVycmlkZXMgdGhlIGNoZWNrIGZvciB0aGUgZW50aXRsZW1lbnQgaWYgdGhlIGJvb2wgaXMg
c2V0LCBkaXNhYmxpbmcKKyAgICAgICAgdGhlIGNoZWNrIGZvciB0aGUgZW50aXRsZW1lbnQuCisK
KyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW06CisgICAgICAgICgtW1dLUHJlZmVyZW5jZXMg
X3NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZ10pOgorICAgICAgICAo
LVtXS1ByZWZlcmVuY2VzIF9zZXRTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRl
c3Rpbmc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJp
dmF0ZS5oOgorICAgICAgICBBZGRlZCB0d28gbmV3IHdlYiBwcmVmZXJlbmNlcy4gQWxsb3dTZXJ2
aWNlV29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluCisgICAgICAgIGlzIG5lZWRlZCB0byBub3RpZnkg
dGhlIFdlYlBhZ2UgdGhhdCBhbiBhcHAtYm91bmQgbmF2aWdhdGlvbiBoYXMKKyAgICAgICAgb2Nj
dXJlZCBhbmQgc2VydmljZSB3b3JrZXJzIGNhbiBiZSB1c2VkLgorICAgICAgICBTZXJ2aWNlV29y
a2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3RpbmcgZGlzYWJsZXMgdGhlIGVudGl0bGVtZW50
CisgICAgICAgIGZvciBUZXN0V2ViS2l0QVBJIGFzIGRlc2NyaWJlZCBhYm92ZS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NldHVwUGFnZUNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgIERpc2FibGUgc2VydmljZSB3
b3JrZXJzIGhlcmUgaWYgdGhlIHRlc3QgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIKKyAgICAgICAg
aXMgc2V0IHRvIGRpc2FibGUgdGhlIGVudGl0bGVtZW50LCBzbyB3ZSBzdGFydCB0aGUgdGVzdCBh
cyBpZiB3ZQorICAgICAgICBuZXZlciBoYWQgYW4gZW50aXRsZW1lbnQuCisKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9zZXJ2aWNlV29ya2Vyc0VuYWJsZWQ6XSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBfY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZTpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgU1BJcyBmb3Ig
dGVzdGluZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICBTZW5kIElQQyB0byB0aGUgTmV0d29ya1Byb2Nlc3MgdG8gZGlzYWJsZSB0aGUgZW50aXRsZW1l
bnQuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKToKKyAgICAgICAgVGhlIG1haW4gY2hhbmdlIGlzIGhlcmUuIFRoaXMgZW5h
Ymxlcy9kaXNhYmxlcyBzZXJ2aWNlIHdvcmtlcnMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50SW5OZXR3b3JrUHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnRPdmVycmlkZSk6CisgICAgICAgIEluIG9yZGVyIHRvIHRlc3QgdGhpcyB0aG9yb3VnaGx5
LCBUZXN0V2ViS2l0QVBJIG5lZWRlZCBhIHdheSB0bworICAgICAgICB0ZW1wb3JhcmlseSBkaXNh
YmxlIHRoZSBzZXJ2aWNlIHdvcmtlciBlbnRpdGxlbWVudC4gVGhpcyBmdW5jdGlvbgorICAgICAg
ICBvdmVycmlkZXMgdGhlIGNoZWNrIGZvciB0aGUgZW50aXRsZW1lbnQgaWYgdGhlIGJvb2wgaXMg
c2V0LCBkaXNhYmxpbmcKKyAgICAgICAgdGhlIGNoZWNrIGZvciB0aGUgZW50aXRsZW1lbnQuCisK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwcmVmZXJlbmNlc0RpZENoYW5nZSk6Cisg
ICAgICAgIFdoZW4gc2VydmljZSB3b3JrZXJzIGFyZSBlbmFibGVkL2Rpc2FibGVkIG9uIG5hdmln
YXRpb24sIHRoaXMgdXBkYXRlcworICAgICAgICBXZWJQcmVmZXJlbmNlcyB0byBub3RlIHRoYXQg
c2VydmljZSB3b3JrZXJzIGFyZSBub3cgYWxsb3dlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICBEaXNhYmxlIHRoZSBlbnRp
dGxlbWVudCBiZWZvcmUgY2hlY2tpbmcvdXBkYXRpbmcgc2VydmljZSB3b3JrZXIgZmxhZ3MKKyAg
ICAgICAgdG8gbWFrZSBzdXJlIHRoaXMgYmVoYXZpb3Igd29ya3MgcHJvcGVybHkgd2l0aCBubyBl
bnRpdGxlbWVudC4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaXNhYmxlU2VydmljZVdv
cmtlckVudGl0bGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xlYXJTZXJ2aWNl
V29ya2VyRW50aXRsZW1lbnRPdmVycmlkZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwYXJlbnRQcm9jZXNzSGFz
U2VydmljZVdvcmtlckVudGl0bGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6ZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUpOgorICAgICAgICBP
dmVycmlkZSB0aGUgZW50aXRsZW1lbnQgYXMgZGVzY3JpYmVkIGFib3ZlLgorCiAyMDIwLTA0LTEz
ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBS
ZW1vdmUgdW51c2VkIFVUVHlwZSBzd2l6emxlciBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCmluZGV4IGVlMTI1ZTU3ZTAxY2U2Mjg5Y2VhYzgyM2NjNDc3NTM0NzkyMjc2NWYuLjZiZTA3
ZTE2N2Q3YjFlNDcyNDdjODU0ZmI3NjMwNTU4YTliOTYwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC00MjgsMTcgKzQyOCwyOCBAQCBib29sIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjppc1NlcnZpY2VXb3JrZXJBbGxvd2VkKCkgY29uc3QKIAogc3RkOjp1bmlxdWVf
cHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjcmVhdGVGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBpZiAoIWlzU2VydmljZVdvcmtlckFsbG93
ZWQoKSkKKyAgICBhdXRvIGFsbG93U2VydmljZVdvcmtlcnNGb3JBcHBCb3VuZERvbWFpbiA9IGxv
YWRlci5wYXJhbWV0ZXJzKCkuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiAmJiAqbG9hZGVy
LnBhcmFtZXRlcnMoKS5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID09IE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOjpZZXM7CisKKyAgICBpZiAoIWlzU2VydmljZVdvcmtlckFsbG93ZWQo
KSAmJiAhYWxsb3dTZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3dDb25uZWN0aW9uKCkuY3JlYXRlRmV0Y2hUYXNrKGxv
YWRlciwgcmVxdWVzdCk7CisKKyAgICBpZiAoYWxsb3dTZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5k
RG9tYWluICYmICFtX3N3Q29ubmVjdGlvbikKKyAgICAgICAgZXN0YWJsaXNoU1dTZXJ2ZXJDb25u
ZWN0aW9uKGFsbG93U2VydmljZVdvcmtlcnNGb3JBcHBCb3VuZERvbWFpbik7CisKKyAgICByZXR1
cm4gc3dDb25uZWN0aW9uKGFsbG93U2VydmljZVdvcmtlcnNGb3JBcHBCb3VuZERvbWFpbikuY3Jl
YXRlRmV0Y2hUYXNrKGxvYWRlciwgcmVxdWVzdCk7CiB9CiAjZW5kaWYKIAogdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQoTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKIHsKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJBbGxvd2VkID0gdGhpcy0+aXNTZXJ2
aWNlV29ya2VyQWxsb3dlZCgpOworICAgIGF1dG8gYWxsb3dTZXJ2aWNlV29ya2Vyc0ZvckFwcEJv
dW5kRG9tYWluID0gbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiAm
JiAqbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9PSBOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVzOworICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyQWxsb3dl
ZCA9IHRoaXMtPmlzU2VydmljZVdvcmtlckFsbG93ZWQoKSB8fCBhbGxvd1NlcnZpY2VXb3JrZXJz
Rm9yQXBwQm91bmREb21haW47CisKICAgICBpZiAoaXNTZXJ2aWNlV29ya2VyQWxsb3dlZCkgewor
ICAgICAgICBpZiAoYWxsb3dTZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluKQorICAgICAg
ICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YWRkU2VydmljZVdvcmtlclNlc3Npb24obV9zZXNzaW9u
SUQpOworCiAgICAgICAgIGF1dG8mIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVy
Rm9yU2Vzc2lvbihtX3Nlc3Npb25JRCk7CiAgICAgICAgIGlmICghc2VydmVyLmlzSW1wb3J0Q29t
cGxldGVkKCkpIHsKICAgICAgICAgICAgIHNlcnZlci53aGVuSW1wb3J0SXNDb21wbGV0ZWQoW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbG9hZFBhcmFtZXRlcnMgPSBXVEZN
b3ZlKGxvYWRQYXJhbWV0ZXJzKV0oKSBtdXRhYmxlIHsKQEAgLTEwMDksMTMgKzEwMjAsMTMgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlv
bigpCiAgICAgICAgIG1fc3dDb25uZWN0aW9uLT5zZXJ2ZXIoKS5yZW1vdmVDb25uZWN0aW9uKG1f
c3dDb25uZWN0aW9uLT5pZGVudGlmaWVyKCkpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKGJvb2wg
YWxsb3dTZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluKQogewogICAgIGlmIChtX3N3Q29u
bmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgc2VydmVyID0gbV9uZXR3b3Jr
UHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uKG1fc2Vzc2lvbklEKTsKLSAgICBhdXRvIGNvbm5l
Y3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4obV9uZXR3b3JrUHJvY2Vz
cywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOwor
ICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPiht
X25ldHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgbV93ZWJQcm9jZXNz
SWRlbnRpZmllciwgYWxsb3dTZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluKTsKIAogICAg
IG1fc3dDb25uZWN0aW9uID0gbWFrZVdlYWtQdHIoKmNvbm5lY3Rpb24pOwogICAgIHNlcnZlci5h
ZGRDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpOwpAQCAtMTA0MSwxMSArMTA1MiwxMSBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uTm9Mb25nZXJOZWVkZWQoKQogICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxw
dHI7CiB9CiAKLVdlYlNXU2VydmVyQ29ubmVjdGlvbiYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnN3Q29ubmVjdGlvbigpCitXZWJTV1NlcnZlckNvbm5lY3Rpb24mIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpzd0Nvbm5lY3Rpb24oYm9vbCBhbGxvd1NlcnZpY2VXb3JrZXJz
Rm9yQXBwQm91bmREb21haW4pCiB7Ci0gICAgQVNTRVJUKGlzU2VydmljZVdvcmtlckFsbG93ZWQo
KSk7CisgICAgQVNTRVJUKGlzU2VydmljZVdvcmtlckFsbG93ZWQoKSB8fCBhbGxvd1NlcnZpY2VX
b3JrZXJzRm9yQXBwQm91bmREb21haW4pOwogICAgIGlmICghbV9zd0Nvbm5lY3Rpb24pCi0gICAg
ICAgIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpOworICAgICAgICBlc3RhYmxpc2hTV1Nl
cnZlckNvbm5lY3Rpb24oYWxsb3dTZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluKTsKICAg
ICByZXR1cm4gKm1fc3dDb25uZWN0aW9uOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKaW5kZXggMDM4OGIxYWRmYzUwYWE3NzliODVlYzVhZjdkYTQ3YjUzNjNlMWY4Yi4uOGE5NjAw
ODMzMzI1ODg0NjBjOGE4ZWVjMGJlMjlkYjI1YTkwNmIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaApAQCAtMTY2LDcgKzE2Niw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICB2b2lkIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCgp
OwotICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgc3dDb25uZWN0aW9uKCk7CisgICAgV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uJiBzd0Nvbm5lY3Rpb24oYm9vbCk7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IGNyZWF0ZUZldGNoVGFzayhOZXR3b3JrUmVzb3VyY2VM
b2FkZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgogCkBAIC0y
MzIsNyArMjMyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVF1b3RhQmFzZWRPblNwYWNl
VXNhZ2VGb3JUZXN0aW5nKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9u
KCk7CisgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oYm9vbCA9IGZhbHNlKTsK
ICAgICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsb3Nl
U1dDb250ZXh0Q29ubmVjdGlvbigpOwogICAgIHZvaWQgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApp
bmRleCA1MmMwMTI5N2IzZDRmNDU1MTY5YTM0YTQwMzBkMDQ2ZWE5OTY2N2E5Li4yYmE3NjhmZDM0
MDI5ZWRiNjJhNGI5ZTEzNDJlZTgzNzljMDczNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzQ1LDEwICszNDUsMTEgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotICAgIGlmIChwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkpIHsK
LSAgICAgICAgYm9vbCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVk
ID0gdHJ1ZTsKLSAgICAgICAgYWRkU2VydmljZVdvcmtlclNlc3Npb24oUEFMOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSwgc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
RW5hYmxlZCwgV1RGTW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkpLCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOwotICAgIH0KKyAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRp
b25EZWxheUVuYWJsZWQgPSB0cnVlOworICAgIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSA9IFdURk1vdmUocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5KTsKKyAgICBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUgPSBXVEZNb3ZlKHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNl
V29ya2VyRW50aXRsZW1lbnQoKSkKKyAgICAgICAgYWRkU2VydmljZVdvcmtlclNlc3Npb24oUEFM
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAjZW5kaWYKIAogICAgIG1fc3RvcmFn
ZU1hbmFnZXJTZXQtPmFkZChzZXNzaW9uSUQsIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3Rv
cmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CkBAIC00
MzgsOCArNDM5LDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUo
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRp
b25EZWxheUVuYWJsZWQgPSBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRp
b25EZWxheUVuYWJsZWQ7CisgICAgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
ID0gV1RGTW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnkp
OworICAgIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSA9IFdURk1vdmUocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBpZiAocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJF
bnRpdGxlbWVudCgpKQotICAgICAgICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihzZXNzaW9uSUQs
IHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwg
V1RGTW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBw
YXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpOworICAgICAgICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihzZXNzaW9uSUQpOwogI2VuZGlm
CiAKICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5hZGQoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLmxv
Y2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOwpAQCAtMTU0Niw3ICsxNTUwLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2kKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbnMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICBhdXRvIHBhdGggPSBtX3Nl
cnZpY2VXb3JrZXJJbmZvLmdldChzZXNzaW9uSUQpLmRhdGFiYXNlUGF0aDsKKyAgICBpZiAoIXBh
dGguaXNFbXB0eSgpICYmIHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgp
KQogICAgICAgICBzd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKS5jbGVhckFsbChbY2xlYXJU
YXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsgfSk7CiAjZW5kaWYK
IApAQCAtMTY2MSw3ICsxNjY2LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KICNlbmRpZgog
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpICYmICFz
ZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgeworICAgIGF1dG8gcGF0aCA9IG1fc2VydmljZVdvcmtl
ckluZm8uZ2V0KHNlc3Npb25JRCkuZGF0YWJhc2VQYXRoOworICAgIGlmICghcGF0aC5pc0VtcHR5
KCkgJiYgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25zKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKICAgICAg
ICAgYXV0byYgc2VydmVyID0gc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7CiAgICAgICAg
IGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQogICAgICAgICAgICAgc2VydmVy
LmNsZWFyKG9yaWdpbkRhdGEsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVy
LmNvcHlSZWYoKV0geyB9KTsKQEAgLTI0NzMsOSArMjQ3OSw5IEBAIFdlYlNXT3JpZ2luU3RvcmUq
IE5ldHdvcmtQcm9jZXNzOjpleGlzdGluZ1NXT3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vz
c2lvbklECiAgICAgcmV0dXJuICZzdGF0aWNfY2FzdDxXZWJTV09yaWdpblN0b3JlJj4oc3dTZXJ2
ZXItPm9yaWdpblN0b3JlKCkpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclNX
U2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGJvb2wgYWxsb3dTZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5k
RG9tYWluKQogewotICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0
bGVtZW50KCkpOworICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0
bGVtZW50KCkgfHwgYWxsb3dTZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluKTsKICAgICBh
dXRvKiBzdG9yZSA9IGV4aXN0aW5nU1dPcmlnaW5TdG9yZUZvclNlc3Npb24oY29ubmVjdGlvbi5z
ZXNzaW9uSUQoKSk7CiAgICAgQVNTRVJUKHN0b3JlKTsKICAgICBpZiAoc3RvcmUpCkBAIC0yNDg4
LDE1ICsyNDk0LDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnVucmVnaXN0ZXJTV1NlcnZlckNv
bm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0CiAgICAgICAgIHN0b3JlLT51
bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjphZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiBzZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmIGhhbmRsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFNlcnZpY2VXb3JrZXJTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBTZXJ2aWNlV29ya2VySW5mbyBpbmZv
IHsKLSAgICAgICAgV1RGTW92ZShzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KSwK
LSAgICAgICAgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkCisgICAgICAgIG1fc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkCiAgICAgfTsKICAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fc2VydmljZVdvcmtlckluZm8uYWRkKHNlc3Npb25JRCwgV1RGTW92ZShpbmZvKSk7CiAgICAg
aWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNv
bnN1bWVQZXJtYW5lbnRseShoYW5kbGUpOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25z
dW1lUGVybWFuZW50bHkobV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKICAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmRhdGFi
YXNlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBwb3N0U3RvcmFnZVRhc2soY3JlYXRlQ3Jv
c3NUaHJlYWRUYXNrKCp0aGlzLCAmTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVBhdGhFeGlzdHMsIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZGF0YWJhc2VQYXRoKSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDA2NGJiMWNkY2M4
YTI3MmEwMmM0Y2Y3NzNkMDJkYTQ2NTIzZDBlZmIuLmYxYjI2NGMwOTEyMzY5OTU3MmZlNDA1NDE5
ZjI1ZjBlNzJkODY1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmgKQEAgLTI5Nyw3ICsyOTcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIFdlYkNvcmU6OlNXU2VydmVyKiBzd1NlcnZlckZvclNlc3Npb25JZkV4
aXN0cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIHsgcmV0dXJuIG1fc3dTZXJ2ZXJzLmdldChz
ZXNzaW9uSUQpOyB9CiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXImIHN3U2VydmVyRm9yU2Vzc2lvbihQ
QUw6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCByZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJT
V1NlcnZlckNvbm5lY3Rpb24mKTsKKyAgICB2b2lkIHJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9u
KFdlYlNXU2VydmVyQ29ubmVjdGlvbiYsIGJvb2wpOwogICAgIHZvaWQgdW5yZWdpc3RlclNXU2Vy
dmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mKTsKICAgICAKICAgICB2b2lkIGZv
ckVhY2hTV1NlcnZlcihjb25zdCBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlNXU2VydmVyJik+Jik7
CkBAIC0zMDUsNiArMzA1LDggQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSBjb25z
dDsKKyAgICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKTsKKyAgICB2b2lk
IGNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICNlbHNlCiAgICAgYm9vbCBwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtl
ckVudGl0bGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCkBAIC0zNTAsNiAr
MzUyLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoUEFM
OjpTZXNzaW9uSUQsIEpTQzo6TWVzc2FnZVNvdXJjZSwgSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgdm9p
ZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7CisjZW5kaWYKKwogcHJp
dmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gcGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKSBjb25zdDsKQEAgLTQ2Myw4ICs0NjksNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpOwogICAgIAogICAg
IFdlYlNXT3JpZ2luU3RvcmUqIGV4aXN0aW5nU1dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFMOjpT
ZXNzaW9uSUQpIGNvbnN0OwotCi0gICAgdm9pZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6
OlNlc3Npb25JRCwgYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYm
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYpOwogI2VuZGlmCiAKICAgICB2b2lkIHBvc3RTdG9yYWdlVGFzayhDcm9zc1Ro
cmVhZFRhc2smJik7CkBAIC01NjksNiArNTczLDkgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIEhh
c2hNYXA8UEFMOjpTZXNzaW9uSUQsIFNlcnZpY2VXb3JrZXJJbmZvPiBtX3NlcnZpY2VXb3JrZXJJ
bmZvOwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTV1NlcnZlcj4+IG1fc3dTZXJ2ZXJzOworICAgIFN0cmluZyBtX3NlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3Rvcnk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG1fc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBib29sIG1f
c2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZDsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyMTlkMzkxYjRmY2VmYjM5NjQy
OGY2YjJiNjEzZTM3NzNjODBjMzUyLi44NTc2YjQ2NDZjYTNhMWY3OGNiZTM2MTEzNDI2ZTFmM2Q3
NGY3YzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE3Miw0ICsxNzIsOSBAQCBtZXNzYWdlcyAtPiBO
ZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgCiAgICAgSGFzQXBwQm91bmRTZXNz
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wgaGFzQXBwQm91bmRTZXNzaW9u
KSBBc3luYwogICAgIFNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgYm9vbCB2YWx1ZSkgLT4gKCkgQXN5bmMKKworI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisgICAgRGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpCisgICAgQ2xlYXJT
ZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZSgpIC0+ICgpIEFzeW5jCisjZW5kaWYKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCAzZmRhNzVmOWNj
N2Q2NjVjODQ3OGI5Y2UxYjkwZmE3M2FmYzZiODJkLi4xYjEyM2QzZjhmODg1YTAwYTJiOTIzMzc5
MWVhOTZiOGFiZDViOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
Y3BwCkBAIC0yNjQsNyArMjY0LDEwIEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6c29m
dFVwZGF0ZUlmTmVlZGVkKCkKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzb2Z0VXBkYXRl
SWZOZWVkZWQ6IChtX3Nob3VsZFNvZnRVcGRhdGU9JWQpIiwgbV9zaG91bGRTb2Z0VXBkYXRlKTsK
ICAgICBpZiAoIW1fc2hvdWxkU29mdFVwZGF0ZSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChh
dXRvKiByZWdpc3RyYXRpb24gPSBtX2xvYWRlci5jb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuc3dD
b25uZWN0aW9uKCkuc2VydmVyKCkuZ2V0UmVnaXN0cmF0aW9uKG1fc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIpKQorCisgICAgYXV0byBhbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBw
Qm91bmREb21haW4gPSBtX2xvYWRlci5wYXJhbWV0ZXJzKCkuaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiAmJiAqbV9sb2FkZXIucGFyYW1ldGVycygpLmlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4gPT0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllczsKKworICAgIGlmIChhdXRv
KiByZWdpc3RyYXRpb24gPSBtX2xvYWRlci5jb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuc3dDb25u
ZWN0aW9uKGFsbG93U2VydmljZVdvcmtlcnNGb3JBcHBCb3VuZERvbWFpbikuc2VydmVyKCkuZ2V0
UmVnaXN0cmF0aW9uKG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpKQogICAg
ICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxlU29mdFVwZGF0ZSgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDYwMjNmZjRlNzI3YjIwNjFiOTRjYTAz
NDllODRlZjQ3MTlhY2Q5OWIuLmJmYjJhNmM5YTdjOTIxODMxOWFiM2U2MTFhM2YwMGIwZThiZDk0
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC02NCwxMiAr
NjQsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAjZGVmaW5lIFNXU0VSVkVSQ09OTkVD
VElPTl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihzZXNz
aW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdvcmtlciwgIiVwIC0g
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKICNkZWZp
bmUgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoZm10LCAu
Li4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKHNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpLCBTZXJ2aWNlV29ya2VyLCAiJXAgLSBXZWJTV1NlcnZlckNvbm5lY3Rpb246OiIgZm10
LCB0aGlzLCAjI19fVkFfQVJHU19fKQogCi1XZWJTV1NlcnZlckNvbm5lY3Rpb246OldlYlNXU2Vy
dmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFNXU2VydmVyJiBz
ZXJ2ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUHJvY2Vzc0lkZW50aWZpZXIgcHJv
Y2Vzc0lkZW50aWZpZXIpCitXZWJTV1NlcnZlckNvbm5lY3Rpb246OldlYlNXU2VydmVyQ29ubmVj
dGlvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFNXU2VydmVyJiBzZXJ2ZXIsIElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50
aWZpZXIsIGJvb2wgYWxsb3dTZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluKQogICAgIDog
U1dTZXJ2ZXI6OkNvbm5lY3Rpb24oc2VydmVyLCBwcm9jZXNzSWRlbnRpZmllcikKICAgICAsIG1f
Y29udGVudENvbm5lY3Rpb24oY29ubmVjdGlvbikKICAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0
d29ya1Byb2Nlc3MpCiB7Ci0gICAgbmV0d29ya1Byb2Nlc3MucmVnaXN0ZXJTV1NlcnZlckNvbm5l
Y3Rpb24oKnRoaXMpOworICAgIG5ldHdvcmtQcm9jZXNzLnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0
aW9uKCp0aGlzLCBhbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBwQm91bmREb21haW4pOwogfQogCiBX
ZWJTV1NlcnZlckNvbm5lY3Rpb246On5XZWJTV1NlcnZlckNvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IGM4MzM3MDFjMTg4YjhhZTQ1NmQ0YjNkMTA3
NDA1N2Q5NjY5ODFkYzUuLjM0NjkzNzUwZTcyZjEzYjU1NGI2OTQzNDI4Y2MzOWFmNDY1ZmJjZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTYzLDcgKzYzLDcgQEAg
Y2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKIAogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uIDogcHVibGljIFdlYkNvcmU6OlNXU2VydmVyOjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpN
ZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAg
IFdlYlNXU2VydmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlNXU2VydmVy
JiwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIFdl
YlNXU2VydmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlNXU2VydmVyJiwg
SVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIGJvb2wpOwogICAg
IFdlYlNXU2VydmVyQ29ubmVjdGlvbihjb25zdCBXZWJTV1NlcnZlckNvbm5lY3Rpb24mKSA9IGRl
bGV0ZTsKICAgICB+V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KaW5k
ZXggZTE5MmY1MDNmNDQ1ZmU1MTAwODEwMmU2MzU5NjBlYTFlMTdjZWY1Mi4uMTBhYjMyNDRkMWM5
MTFiMjc0Njk4OWI3YTJkZGZkNGU1ZWE3N2EwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KQEAgLTc0LDEyICs3NCwy
OCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAorc3RhdGljIGJvb2wgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudFRlc3RpbmdPdmVycmlkZTsKKwogYm9vbCBOZXR3b3JrUHJvY2Vzczo6cGFyZW50UHJvY2Vz
c0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpIGNvbnN0CiB7CisgICAgaWYgKGRpc2FibGVT
ZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRUZXN0aW5nT3ZlcnJpZGUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKwogICAgIHN0YXRpYyBib29sIGhhc0VudGl0bGVtZW50ID0gV1RGOjpoYXNFbnRpdGxl
bWVudChwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCksICJjb20uYXBw
bGUuZGV2ZWxvcGVyLldlYktpdC5TZXJ2aWNlV29ya2VycyIpOwogICAgIHJldHVybiBoYXNFbnRp
dGxlbWVudDsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlzYWJsZVNlcnZpY2VXb3JrZXJF
bnRpdGxlbWVudCgpCit7CisgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudFRlc3Rp
bmdPdmVycmlkZSA9IHRydWU7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyU2Vydmlj
ZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRU
ZXN0aW5nT3ZlcnJpZGUgPSBmYWxzZTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCBmNTQ0ODM3NmEzN2Vl
YjQwMjgzOTlkMTczNDc0OTJiNDMxMzMwZTU2Li5kZmFhM2NjZDdhMDk4OWVkM2U1MDc2NDIxODEz
OGZjNDA4NWU4N2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJl
bmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwK
QEAgLTEyODAsNiArMTI4MCwxNiBAQCBOZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6CiAg
ICAgd2ViY29yZUJpbmRpbmc6IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMKICAgICBjYXRlZ29yeTog
ZGVidWcKIAorQWxsb3dTZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluOgorICAgIHR5cGU6
IGJvb2wKKyAgICBkZWZhdWx0VmFsdWU6IGZhbHNlCisgICAgd2ViY29yZUJpbmRpbmc6IG5vbmUK
KyAgICAKK1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZzoKKyAgICB0
eXBlOiBib29sCisgICAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICAgIHdlYmNvcmVCaW5kaW5nOiBu
b25lCisKICMgRm9yIGV4cGVyaW1lbnRhbCBmZWF0dXJlczoKICMgVGhlIHR5cGUgc2hvdWxkIGJl
IGJvb2xlYW4uCiAjIFlvdSBtdXN0IHByb3ZpZGUgYSBodW1hblJlYWRhYmxlTmFtZSBhbmQgaHVt
YW5SZWFkYWJsZURlc2NyaXB0aW9uIGZvciBhbGwgZXhwZXJpbWVudGFsIGZlYXR1cmVzLiBUaGV5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJl
bmNlcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2Vz
Lm1tCmluZGV4IDlhYWJhMGY4NzBhZTk0OTg4MWJlMDdhZjk1MDMwZmVlZTE0OWQyNTkuLmQwYWYz
YmY4YzZlYmI4MGZmZGNkMzU3N2ZmYzkzYWJjMjNiYjVkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBAIC05MjMsNiArOTIz
LDE2IEBAIC0gKEJPT0wpX2lzSVRQRGF0YWJhc2VFbmFibGVkCiAgICAgcmV0dXJuIF9wcmVmZXJl
bmNlcy0+aXNJVFBEYXRhYmFzZUVuYWJsZWQoKTsKIH0KIAorLSAoQk9PTClfc2VydmljZVdvcmtl
ckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nCit7CisgICAgcmV0dXJuIF9wcmVmZXJlbmNl
cy0+c2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nKCk7Cit9CisKKy0g
KHZvaWQpX3NldFNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZzooQk9P
TClkaXNhYmxlCit7CisgICAgX3ByZWZlcmVuY2VzLT5zZXRTZXJ2aWNlV29ya2VyRW50aXRsZW1l
bnREaXNhYmxlZEZvclRlc3RpbmcoZGlzYWJsZSk7Cit9CisKICNpZiBQTEFURk9STShNQUMpCiAt
ICh2b2lkKV9zZXRKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXM6KEJPT0wpZW5hYmxlZAogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNl
c1ByaXZhdGUuaAppbmRleCA3Y2QwNTE4N2Y5NDBiYjY3ZjlhYjBjMjFmODlhNzk5MDA3ZDRhNWM0
Li42NzU2Nzg5M2Y0NGI2YmY4ZTA5NjkwZjU1MTYxNjJkNDMzYjkxNTBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZh
dGUuaApAQCAtMTY1LDYgKzE2NSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0Vk
aXRhYmxlTGlua0JlaGF2aW9yKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZDopIEJPT0wgX2FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlvcyhXS19JT1NfVEJB
KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRSZXF1ZXN0QW5pbWF0aW9uRnJh
bWVFbmFibGVkOikgQk9PTCBfcmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9pc0lUUERhdGFiYXNlRW5hYmxlZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0U2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JU
ZXN0aW5nOikgQk9PTCBfc2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5n
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAK
ICNpZiAhVEFSR0VUX09TX0lQSE9ORQogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0
V2ViR0xFbmFibGVkOikgQk9PTCBfd2ViR0xFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTMuNCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KaW5kZXggNzA4YjQ5NmI3ZTE5YTMwYzliMDJhNGUwZTlmYmRjNTIxMDc1YTBhMC4uNmVl
ZGM3ZjU0Y2Y4ZjlmMmE0ZGE1MjRjNGViYWI3ZTkyZmQ4M2UwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMjEsNiArMTIxLDcgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
bGF0Zm9ybVNjcmVlbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVj
a3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0
dGluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CkBAIC01MjQsOCArNTI1
LDkgQEAgLSAodm9pZClfc2V0dXBQYWdlQ29uZmlndXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb24+JilwYWdlQ29uZmlndXJhdGlvbgogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKCFXVEY6OnByb2Nlc3NI
YXNFbnRpdGxlbWVudCgiY29tLmFwcGxlLmRldmVsb3Blci5XZWJLaXQuU2VydmljZVdvcmtlcnMi
KSkKKyAgICBpZiAoIVdURjo6cHJvY2Vzc0hhc0VudGl0bGVtZW50KCJjb20uYXBwbGUuZGV2ZWxv
cGVyLldlYktpdC5TZXJ2aWNlV29ya2VycyIpIHx8IFtfY29uZmlndXJhdGlvbiBwcmVmZXJlbmNl
c10uX3NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZykKICAgICAgICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFNlcnZpY2VXb3JrZXJzRW5hYmxl
ZChmYWxzZSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFNlcnZp
Y2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZyghIVtfY29uZmlndXJhdGlvbiBw
cmVmZXJlbmNlc10uX3NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZyk7
CiAjZW5kaWYKIAogICAgIGlmICghbGlua2VkT25PckFmdGVyKFdlYktpdDo6U0RLVmVyc2lvbjo6
Rmlyc3RXaGVyZVNpdGVTcGVjaWZpY1F1aXJrc0FyZUVuYWJsZWRCeURlZmF1bHQpKQpAQCAtMjcz
OCw2ICsyNzQwLDE5IEBAIC0gKHZvaWQpX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46KHZv
aWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKICAgICB9KTsKIH0KIAorLSAodm9pZClfc2Vy
dmljZVdvcmtlcnNFbmFibGVkOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7Cisg
ICAgYXV0byBlbmFibGVkID0gW19jb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS0+X3ByZWZlcmVu
Y2VzLmdldCgpLT5zZXJ2aWNlV29ya2Vyc0VuYWJsZWQoKSB8fCBXZWJDb3JlOjpSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNlcnZpY2VXb3JrZXJFbmFibGVkKCk7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIoZW5hYmxlZCk7Cit9CisKKy0gKHZvaWQpX2NsZWFyU2Vydmlj
ZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGU6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5k
bGVyCit7CisgICAgX3BhZ2UtPmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUo
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCiAtIChpZCA8X1dLSW5w
dXREZWxlZ2F0ZT4pX2lucHV0RGVsZWdhdGUKIHsKICAgICByZXR1cm4gX2lucHV0RGVsZWdhdGUu
Z2V0QXV0b3JlbGVhc2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCBjZDYyMzQzZTJkNGM2OWRkN2M0Y2U0ZjVm
NzZlNWFlYmJmZWJlNjdmLi44NGQ4N2VmOTJlODBiZTQ3ZGI4YWE2MTYyMjgyMjNmZGMyMzUxZjYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgKQEAgLTM0Nyw2ICszNDcsOCBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIAogLSAo
dm9pZClfZ3JhbnRBY2Nlc3NUb1ByZWZlcmVuY2VTZXJ2aWNlIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpX3NlcnZpY2VXb3Jr
ZXJzRW5hYmxlZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfY2xlYXJT
ZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZToodm9pZCAoXikodm9pZCkpY29tcGxldGlv
bkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKIEBlbmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGM5N2UwYWU3OTVhOTE3N2JiM2Y1NmQwZDAxZGE5NjEz
YWFkZjJjNTAuLmVkODViNzYyZDBjOTc1ZTU0MTBiYTAxODlkYzBjMmY1MWVjNGFkY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTc5LDYgKzE3OSw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
V3JpdGluZ0RpcmVjdGlvbi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL0Nh
bGxiYWNrQWdncmVnYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CkBAIC01
MTYsNiArNTE3LDkgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFn
ZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBSZWYKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXREaXNhYmxlU2NyZWVu
U2l6ZU92ZXJyaWRlKG1fcHJlZmVyZW5jZXMtPmRpc2FibGVTY3JlZW5TaXplT3ZlcnJpZGUoKSk7
CisgICAgCisgICAgaWYgKG1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2VydmljZVdv
cmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nKCkpCisgICAgICAgIGRpc2FibGVTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnRJbk5ldHdvcmtQcm9jZXNzKCk7CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQpAQCAtMzEzNCwxMCArMzEzOCwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihib29sIGlzTWFpbkZyYW1lLCBjb25zdCBV
UkwmCiAgICAgICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPnNldFdlYlZpZXdDYXRlZ29yeShXZWJW
aWV3Q2F0ZWdvcnk6OkluQXBwQnJvd3Nlcik7CiAgICAgICAgICAgICBtX2lzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4gPSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm87CiAgICAgICAg
ICAgICBtX2hhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4gPSBOYXZpZ2F0ZWRBd2F5
RnJvbUFwcEJvdW5kRG9tYWluOjpZZXM7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAg
ICAgICAgICAgbV9wcmVmZXJlbmNlcy0+c2V0U2VydmljZVdvcmtlcnNFbmFibGVkKGZhbHNlKTsK
KyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG1fY29uZmln
dXJhdGlvbi0+c2V0V2ViVmlld0NhdGVnb3J5KFdlYlZpZXdDYXRlZ29yeTo6QXBwQm91bmREb21h
aW4pOwogICAgICAgICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbjo6WWVzOworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICAg
ICAgbV9wcmVmZXJlbmNlcy0+c2V0U2VydmljZVdvcmtlcnNFbmFibGVkKHRydWUpOworI2VuZGlm
CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXNNYWluRnJhbWUpOwpAQCAtMzE1MSw2
ICszMTYxLDM5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojppc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIobV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluICYmICgqbV9pc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluID09IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXMpKTsKIH0KIAor
dm9pZCBXZWJQYWdlUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRJbk5ldHdv
cmtQcm9jZXNzKCkKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmIChhdXRvKiBu
ZXR3b3JrUHJvY2VzcyA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5uZXR3b3JrUHJvY2Vzcygp
KSB7CisgICAgICAgIGlmICghbmV0d29ya1Byb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6RGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpLCAwKTsKKyAg
ICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisjZW5kaWYKK30KKwordm9pZCBX
ZWJQYWdlUHJveHk6OmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3Jl
Z2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpDbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVu
dE92ZXJyaWRlKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29w
eVJlZigpXSB7IH0pOworICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IG1fcHJvY2Vzcy0+
cHJvY2Vzc1Bvb2woKS5uZXR3b3JrUHJvY2VzcygpKSB7CisgICAgICAgIGlmICghbmV0d29ya1By
b2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbmV0d29ya1Byb2Nl
c3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNsZWFyU2Vy
dmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoKSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNh
bGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQorICAgIG1fcHJlZmVyZW5j
ZXMtPnNldFNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZyhmYWxzZSk7
CisgICAgbV9wcmVmZXJlbmNlcy0+c2V0U2VydmljZVdvcmtlcnNFbmFibGVkKHRydWUpOworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIFVOVVNFRF9QQVJBTShjb21wbGV0aW9u
SGFuZGxlcik7CisjZW5kaWYKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdh
dGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdh
dGlvbiogbmF2aWdhdGlvbiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgUmVmUHRyPEFQSTo6V2Vi
c2l0ZVBvbGljaWVzPiYmIHBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2Vu
ZGVyKQogewogICAgIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiB3ZWJzaXRlRGF0YVN0b3JlID0gbV93
ZWJzaXRlRGF0YVN0b3JlLmNvcHlSZWYoKTsKQEAgLTQyMjQsNiArNDI2NywxMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogCiAgICAgcGFnZUNsaWVudCgpLnBy
ZWZlcmVuY2VzRGlkQ2hhbmdlKCk7CiAKKyAgICBpZiAobV9pc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluICYmICgqbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID09IE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOjpZZXMpKQorICAgICAgICBtX3ByZWZlcmVuY2VzLT5zZXRBbGxvd1Nl
cnZpY2VXb3JrZXJzRm9yQXBwQm91bmREb21haW4odHJ1ZSk7CisgICAgZWxzZQorICAgICAgICBt
X3ByZWZlcmVuY2VzLT5zZXRBbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBwQm91bmREb21haW4oZmFs
c2UpOworCiAgICAgLy8gRklYTUU6IEl0IHByb2JhYmx5IG1ha2VzIG1vcmUgc2Vuc2UgdG8gc2Vu
ZCBpbmRpdmlkdWFsIHByZWZlcmVuY2UgY2hhbmdlcy4KICAgICAvLyBIb3dldmVyLCBXZWJLaXRU
ZXN0UnVubmVyIGRlcGVuZHMgb24gZ2V0dGluZyBhIHByZWZlcmVuY2UgY2hhbmdlIG5vdGlmaWNh
dGlvbgogICAgIC8vIGV2ZW4gaWYgbm90aGluZyBjaGFuZ2VkIGluIFVJIHByb2Nlc3MsIHNvIHRo
YXQgb3ZlcnJpZGVzIGdldCByZW1vdmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCAyNmVhMzZmYjNmMDAxMzYzMzNkNDQ5NTFjZmZiYmE5NzQxNThlNjQwLi4yZDRh
ZTQxZTdlOTA1YTRiZmRmMzJlMzBkYjYyMzQ3ZmM4NTQ3ODc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTcxOSw2ICsxNzE5LDkgQEAgcHVibGljOgogICAgIHZv
aWQgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpblRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7IHJldHVybiBtX2lzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW47IH0KIAorICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJF
bnRpdGxlbWVudEluTmV0d29ya1Byb2Nlc3MoKTsKKyAgICB2b2lkIGNsZWFyU2VydmljZVdvcmtl
ckVudGl0bGVtZW50T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICAg
ICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBncmFudEFjY2Vzc1RvQ3VycmVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDAzOGQ4MTVj
YjJmZDEwYjQ4OWU4MDk5MmU3NzY2MGIyOWFiNzU4NGMuLjQxNzZjNGRkMDJmYjQzNTUxOTU1YjZj
YTBkYWJkNDg1YzBkZmRiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0zNjY1LDExICszNjY1LDE2IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRl
UHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9y
S2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZv
clRlc3RpbmdLZXkoKSkpCisgICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQo
KTsKKwogICAgIGlmIChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6
OnNlcnZpY2VXb3JrZXJzRW5hYmxlZEtleSgpKSkgewotICAgICAgICBBU1NFUlQocGFyZW50UHJv
Y2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKTsKLSAgICAgICAgaWYgKCFwYXJlbnRQ
cm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkpCisgICAgICAgIGF1dG8gYWxsb3dT
ZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluID0gc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5OjphbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBwQm91bmREb21haW5L
ZXkoKSk7CisgICAgICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0
bGVtZW50KCkgfHwgYWxsb3dTZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluKTsKKyAgICAg
ICAgaWYgKCFwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgJiYgIWFs
bG93U2VydmljZVdvcmtlcnNGb3JBcHBCb3VuZERvbWFpbikKICAgICAgICAgICAgIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2VydmljZVdvcmtlckVuYWJsZWQo
ZmFsc2UpOwotICAgIH0KKyAgICB9IGVsc2UgaWYgKCFwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdv
cmtlckVudGl0bGVtZW50KCkpCisgICAgICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkuc2V0U2VydmljZVdvcmtlckVuYWJsZWQoZmFsc2UpOwogI2VuZGlmCiAKICAg
ICBzZXR0aW5ncy5zZXRMYXlvdXRWaWV3cG9ydEhlaWdodEV4cGFuc2lvbkZhY3RvcihzdG9yZS5n
ZXREb3VibGVWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6bGF5b3V0Vmlld3BvcnRIZWln
aHRFeHBhbnNpb25GYWN0b3JLZXkoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCmluZGV4IDE5N2NjNzk5ZTA4MTJmMGZhZTg5NThiNTMyNTBhNjAyOGUzZWI5
NDIuLmU1NmU2NmVkMmRiZWNiMjAwN2JjYTgzMTZkNGViYTg5ZGZkODFkOGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1MDcsOCArMTUwNywxMiBA
QCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIHBhcmVudFBy
b2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSBjb25zdDsKKyAgICB2b2lkIGRpc2Fi
bGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKTsKKyAgICB2b2lkIGNsZWFyU2VydmljZVdvcmtl
ckVudGl0bGVtZW50T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbHNl
CiAgICAgYm9vbCBwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudCgpIHsgfQorICAgIHZvaWQgY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlk
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIHsgY29tcGxldGlvbkhhbmRsZXIoKTsgfQog
I2VuZGlmCiAKICAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uJiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KaW5kZXggMDc2YzFmYWYyZTQ0YzBjNzdiOTQ5YmU5ZWI3OTNkMjZiMzVhMGY2Mi4uYzI2ZDY3
NTliMWE5MmEwYmIwYjEyZmNjMWJmMmQ1MjI1ZGE0OTFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xMjEsNiAr
MTIxLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2Vi
S2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBTZXRTaG91bGRSZXZlYWxDdXJy
ZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24oYm9vbCBzaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0
aW9uQWZ0ZXJJbnNlcnRpb24pCiAgICAgSW5zZXJ0VGV4dFBsYWNlaG9sZGVyKFdlYkNvcmU6Oklu
dFNpemUgc2l6ZSkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBwbGFjZWhv
bGRlcikgQXN5bmMKICAgICBSZW1vdmVUZXh0UGxhY2Vob2xkZXIoc3RydWN0IFdlYkNvcmU6OkVs
ZW1lbnRDb250ZXh0IHBsYWNlaG9sZGVyKSAtPiAoKSBBc3luYworICAgIENsZWFyU2VydmljZVdv
cmtlckVudGl0bGVtZW50T3ZlcnJpZGUoKSAtPiAoKSBBc3luYwogI2VuZGlmCiAKICAgICBTZXRD
b250cm9sbGVkQnlBdXRvbWF0aW9uKGJvb2wgY29udHJvbGxlZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNjZhNGM1YWZh
M2Q4ZDVmNTA0MmMxYTZiNTQ4MmUyOWNkMjhhZTc5Zi4uZmUyNDgzOTc5OTMwNTUxOWU1MzY0ZGEx
MTI0NjZlZWE4MTRiNDY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQ4NywxMiArNDg3LDI4IEBAIGJvb2wgV2ViUGFn
ZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAg
cmV0dXJuIHNlbmRSZXN1bHQgJiYgZXZlbnRXYXNIYW5kbGVkOwogfQogCitzdGF0aWMgYm9vbCBk
aXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVzdGluZ092ZXJyaWRlOworCiBib29sIFdl
YlBhZ2U6OnBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSBjb25zdAog
eworICAgIGlmIChkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVzdGluZ092ZXJyaWRl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBzdGF0aWMgYm9vbCBoYXNFbnRpdGxlbWVu
dCA9IFdURjo6aGFzRW50aXRsZW1lbnQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlvbigpLCAiY29tLmFwcGxlLmRldmVsb3Blci5X
ZWJLaXQuU2VydmljZVdvcmtlcnMiKTsKICAgICByZXR1cm4gaGFzRW50aXRsZW1lbnQ7CiB9CiAK
K3ZvaWQgV2ViUGFnZTo6ZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpCit7CisgICAg
ZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudFRlc3RpbmdPdmVycmlkZSA9IHRydWU7Cit9
CisKK3ZvaWQgV2ViUGFnZTo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgZGlz
YWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudFRlc3RpbmdPdmVycmlkZSA9IGZhbHNlOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKIHZvaWQgV2ViUGFnZTo6c2VuZENvbXBsZXhUZXh0
SW5wdXRUb1BsdWdpbih1aW50NjRfdCwgY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDkwNDY0M2NlZmM4YWNkZWQyNjlmN2Y3MzU2MjQxYTZjMWNlNGM3MDUuLjdjYjRjYzU4Mzc4
NGNkZDY2Njk2NGViOTUwMDRhYzJjZDc4ZTI0MGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMC0wNC0xNSAgS2F0
ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUg
c2VydmljZSB3b3JrZXJzIGZvciBhcHAtYm91bmQgZG9tYWlucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNDUxCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82MTQ3OTQ3ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRzIDMgdGVzdCBjYXNlczoKKyAgICAgICAgMSkgU2VydmljZSB3b3JrZXJzIHdv
cmsgcHJvcGVybHkgZm9yIGFwcC1ib3VuZCBkb21haW5zCisgICAgICAgIDIpIFNlcnZpY2Ugd29y
a2VycyBhcmUgZGlzYWJsZWQgZm9yIG5vbi1hcHAgYm91bmQgZG9tYWlucy4gVGhpcworICAgICAg
ICBpcyB0ZXN0ZWQgYnkgY2hlY2tpbmcgYSBuZXcgU1BJLCBiZWNhdXNlIG1lc3NhZ2UgaGFuZGxl
cnMgYXJlIGRpc2FibGVkCisgICAgICAgIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbnMuCisgICAg
ICAgIDMpIExvYWRpbmcgY29udGVudCBvbiBhIG5vbi1hcHAtYm91bmQgZG9tYWluIHRoZW4gbmF2
aWdhdGluZyB0byBhbgorICAgICAgICBhcHAgYm91bmQgZG9tYWluIGFuZCB1c2luZyBhIHNlcnZp
Y2Ugd29ya2VyIGJlaGF2ZXMgY29ycmVjdGx5LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tOgorICAgICAgICAoLVtTV0lu
QXBwQnJvd3NlclByaXZhY3lNZXNzYWdlSGFuZGxlciB1c2VyQ29udGVudENvbnRyb2xsZXI6ZGlk
UmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6CisKIDIwMjAtMDQtMTMgIFBlciBBcm5lIFZvbGxhbiAg
PHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFJlbW92ZSB1bnVzZWQgVVRUeXBl
IHN3aXp6bGVyIGNvZGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA2OGJlODFiMWI5MzUz
Y2IwMTFlMTY4YzFkYzRjYTg0ODllZTg5NjhkLi4xZGRhOTNjNWQ0OGYwYmVkZWQxNDExMGVhN2Qz
ZThhYjA2YTQ3OGNkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNp
bXBvcnQgIlNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmll
d0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKQEAgLTc0Myw2ICs3NDQsMTk5IEBAIFRFU1QoSW5BcHBC
cm93c2VyUHJpdmFjeSwgR2V0Q29va2llRm9yVVJMRmFpbHMpCiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKIH0KIAorQGludGVyZmFjZSBTV0luQXBwQnJvd3NlclByaXZhY3lN
ZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgorQGVuZAor
CitAaW1wbGVtZW50YXRpb24gU1dJbkFwcEJyb3dzZXJQcml2YWN5TWVzc2FnZUhhbmRsZXIKKy0g
KHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVz
ZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNz
YWdlICopbWVzc2FnZQoreworICAgIEVYUEVDVF9XS19TVFJFUShAIk1lc3NhZ2UgZnJvbSB3b3Jr
ZXI6IFNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6IEhlbGxvIGZyb20gYW4gYXBwLWJvdW5kIGRvbWFp
biIsIFttZXNzYWdlIGJvZHldKTsKKyAgICBpc0RvbmUgPSB0cnVlOworfQorQGVuZAorCitzdGF0
aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAorPHNjcmlwdD4KKworZnVu
Y3Rpb24gbG9nKG1zZykKK3sKKyAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5zdy5w
b3N0TWVzc2FnZShtc2cpOworfQorCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExp
c3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBsb2coIk1lc3NhZ2UgZnJv
bSB3b3JrZXI6ICIgKyBldmVudC5kYXRhKTsKK30pOworCit0cnkgeworCituYXZpZ2F0b3Iuc2Vy
dmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKKyAgICB3
b3JrZXIgPSByZWcuaW5zdGFsbGluZyA/IHJlZy5pbnN0YWxsaW5nIDogcmVnLmFjdGl2ZTsKKyAg
ICB3b3JrZXIucG9zdE1lc3NhZ2UoIkhlbGxvIGZyb20gYW4gYXBwLWJvdW5kIGRvbWFpbiIpOwor
fSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAgICBsb2coIlJlZ2lzdHJhdGlvbiBmYWlsZWQg
d2l0aDogIiArIGVycm9yKTsKK30pOworfSBjYXRjaChlKSB7CisgICAgbG9nKCJFeGNlcHRpb246
ICIgKyBlKTsKK30KKworPC9zY3JpcHQ+CispU1dSRVNPVVJDRSI7CisKK3N0YXRpYyBjb25zdCBj
aGFyKiBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKKworc2VsZi5hZGRFdmVudExpc3RlbmVy
KCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CisgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJT
ZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiAiICsgZXZlbnQuZGF0YSk7Cit9KTsKKworKVNXUkVTT1VS
Q0UiOworCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2Vy
dmljZVdvcmtlcnMpCit7CisgICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0
dGluZ3MoKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0
byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV0luQXBwQnJvd3NlclByaXZhY3lNZXNzYWdl
SGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENv
bnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5h
bWU6QCJzdyJdOworICAgIFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS5fc2VydmljZVdvcmtl
ckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nID0gWUVTOworCisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAg
IFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIgc2VydmVyMSh7CisgICAgICAgIHsgInRleHQvaHRtbCIs
IG1haW5CeXRlcyB9LAorICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0
Qnl0ZXN9LAorICAgIH0pOworCisgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRl
RGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKKworICAgIC8vIFN0YXJ0IHdpdGggYSBjbGVhbiBz
bGF0ZSBkYXRhIHN0b3JlCisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9y
ZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5
cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVy
Ol4oKSB7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIAorICAgIC8v
IEV4cGVjdCB0aGUgc2VydmljZSB3b3JrZXIgbG9hZCB0byBjb21wbGV0ZSBzdWNjZXNzZnVsbHku
CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyMS5yZXF1ZXN0V2l0aExvY2FsaG9zdCgp
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgaXNEb25lID0g
ZmFsc2U7CisKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBmZXRj
aERhdGFSZWNvcmRzT2ZUeXBlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpXS1dlYnNpdGVEYXRhVHlw
ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zXSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8
V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqd2Vic2l0ZURhdGFSZWNvcmRzKSB7CisgICAgICAgIEVY
UEVDVF9FUSgxdSwgW3dlYnNpdGVEYXRhUmVjb3JkcyBjb3VudF0pOworICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEod2Vic2l0ZURhdGFSZWNvcmRzWzBdLmRpc3BsYXlOYW1lLCAibG9jYWxob3N0Iik7
CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7CisgICAgaXNEb25lID0gZmFsc2U7CisKKyAgICAvLyBSZXNldCBz
ZXJ2aWNlIHdvcmtlciBlbnRpdGxlbWVudC4KKyAgICBbd2ViVmlldyBfY2xlYXJTZXJ2aWNlV29y
a2VyRW50aXRsZW1lbnRPdmVycmlkZTpeKHZvaWQpIHsKKyAgICAgICAgY2xlYW5VcEluQXBwQnJv
d3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgaXNEb25lID0g
ZmFsc2U7Cit9CisKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5E
b2VzTm90QWxsb3dTZXJ2aWNlV29ya2VycykKK3sKKyAgICBpbml0aWFsaXplSW5BcHBCcm93c2Vy
UHJpdmFjeVRlc3RTZXR0aW5ncygpOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKKyAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbSW5BcHBCcm93c2VyU2No
ZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVt
ZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJpbi1hcHAtYnJvd3Nl
ciJdOworICAgIFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS5fc2VydmljZVdvcmtlckVudGl0
bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nID0gWUVTOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIC8vIExv
YWQgYSBub24tYXBwIGJvdW5kIGRvbWFpbi4KKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4tYXBw
LWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc3R5bGUtc2hlZXRz
Il1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFt3ZWJWaWV3IF90
ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIC8vIEV4cGVjdCB0aGF0IHNl
cnZpY2Ugd29ya2VycyBhcmUgZGlzYWJsZWQgZm9yIHRoaXMgd2ViVmlldy4KKyAgICBpc0RvbmUg
PSBmYWxzZTsKKyAgICBbd2ViVmlldyBfc2VydmljZVdvcmtlcnNFbmFibGVkOl4oQk9PTCBlbmFi
bGVkKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShlbmFibGVkKTsKKyAgICAgICAgaXNEb25lID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cisg
ICAgCisgICAgLy8gUmVzZXQgc2VydmljZSB3b3JrZXIgZW50aXRsZW1lbnQuCisgICAgW3dlYlZp
ZXcgX2NsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGU6Xih2b2lkKSB7CisgICAg
ICAgIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CisgICAgICAgIGlz
RG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0Rv
bmUpOworICAgIGlzRG9uZSA9IGZhbHNlOworfQorCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ks
IE5vbkFwcEJvdW5kRG9tYWluVG9BcHBCb3VuZEFsbG93U2VydmljZVdvcmtlcnMpCit7CisgICAg
aW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICBpc0RvbmUg
PSBmYWxzZTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRv
cHROUyhbW0luQXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbY29u
ZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJM
U2NoZW1lOkAiaW4tYXBwLWJyb3dzZXIiXTsKKyAgICAvLyBEaXNhYmxlIGVudGl0bGVtZW50IHdo
aWNoIGFsbG93cyBzZXJ2aWNlIHdvcmtlcnMuCisgICAgW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5j
ZXNdLl9zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3RpbmcgPSBZRVM7CisK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOworCisgICAgU2VydmljZVdvcmtlclRDUFNlcnZlciBzZXJ2ZXIoeworICAgICAg
ICB7ICJ0ZXh0L2h0bWwiLCBtYWluQnl0ZXMgfSwKKyAgICAgICAgeyAiYXBwbGljYXRpb24vamF2
YXNjcmlwdCIsIHNjcmlwdEJ5dGVzfSwKKyAgICB9KTsKKworICAgIFtXS1dlYnNpdGVEYXRhU3Rv
cmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisKKyAgICAvLyBTdGFy
dCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQorICAgIFtbV0tXZWJzaXRlRGF0YVN0b3Jl
IGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUg
YWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBj
b21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIC8vIExvYWQgYSBu
b24tYXBwIGJvdW5kIGRvbWFpbi4KKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4tYXBwLWJyb3dz
ZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc3R5bGUtc2hlZXRzIl1dOwor
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dh
aXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIC8vIEV4cGVjdCB0aGF0IHNlcnZpY2Ug
d29ya2VycyBhcmUgZGlzYWJsZWQgZm9yIHRoaXMgd2ViVmlldy4KKyAgICBpc0RvbmUgPSBmYWxz
ZTsKKyAgICBbd2ViVmlldyBfc2VydmljZVdvcmtlcnNFbmFibGVkOl4oQk9PTCBlbmFibGVkKSB7
CisgICAgICAgIEVYUEVDVF9GQUxTRShlbmFibGVkKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsK
KyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgaXNE
b25lID0gZmFsc2U7CisKKyAgICAvLyBFeHBlY3QgdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQgZm9y
IGFuIGFwcC1ib3VuZCBkb21haW4gdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgorICAgIC8vIFNp
bmNlIG1lc3NhZ2UgaGFuZGxlcnMgYXJlIGVuYWJsZWQgYWZ0ZXIgbmF2aWdhdGluZyB0byBhIG5v
bi1hcHAtYm91bmQgZG9tYWluLAorICAgIC8vIHdlIGNhbm5vdCBleHBlY3QgYSBtZXNzYWdlIGZy
b20gdGhlIHNlcnZpY2Ugd29ya2VyIGhlcmUuCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2Vy
dmVyLnJlcXVlc3QoKV07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmln
YXRpb25dOworCisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gZmV0
Y2hEYXRhUmVjb3Jkc09mVHlwZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6V0tXZWJzaXRlRGF0YVR5
cGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uc10gY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5
PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKndlYnNpdGVEYXRhUmVjb3JkcykgeworICAgICAgICBF
WFBFQ1RfRVEoMXUsIFt3ZWJzaXRlRGF0YVJlY29yZHMgY291bnRdKTsKKyAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKHdlYnNpdGVEYXRhUmVjb3Jkc1swXS5kaXNwbGF5TmFtZSwgIjEyNy4wLjAuMSIp
OworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIAorICAgIC8vIFJl
c2V0IHNlcnZpY2Ugd29ya2VyIGVudGl0bGVtZW50LgorICAgIFt3ZWJWaWV3IF9jbGVhclNlcnZp
Y2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlOl4odm9pZCkgeworICAgICAgICBjbGVhblVwSW5B
cHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOworICAgICAgICBpc0RvbmUgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICBpc0Rv
bmUgPSBmYWxzZTsKK30KKwogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396657</attachid>
            <date>2020-04-16 09:46:20 -0700</date>
            <delta_ts>2020-04-16 14:49:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210451-20200416094619.patch</filename>
            <type>text/plain</type>
            <size>48999</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ5ZTQxMjNjYzU2ZjAzZDgx
Nzk1Nzg3M2ExYjAwYjJlOWMyNWI0YTcuLmMwZDA3NmJjZDlkZThmNjYxZmU2Mjk1NTZmZjAxNDdk
NmMyNDU2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI0IEBACisyMDIwLTA0LTE2ICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBzZXJ2
aWNlIHdvcmtlcnMgZm9yIGFwcC1ib3VuZCBkb21haW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA0NTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzYxNDc5NDc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEVuYWJsZSBzZXJ2aWNlIHdvcmtlcnMgZm9yIFdlYlZpZXdzIG5hdmlnYXRpbmcgdG8gYW4g
YXBwLWJvdW5kIGRvbWFpbi4KKyAgICAgICAgU2VydmljZSB3b3JrZXJzIHNob3VsZCBiZSBkaXNh
YmxlZCBvdGhlcndpc2UuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGVGZXRjaFRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnN3Q29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgVGhyZWFkcyBhIHBhcmFtZXRlciB0aHJvdWdo
IGFueSBmdW5jdGlvbiB3aGljaCBjaGVja3MgZm9yIHRoZSBzZXJ2aWNlCisgICAgICAgIHdvcmtl
ciBlbnRpdGxlbWVudCB0byBhbHNvIGNoZWNrIGlmIHRoZSBsb2FkIGlzIGZvciBhbiBhcHAtYm91
bmQgZG9tYWluCisgICAgICAgIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBlbnRpdGxlbWVudCBpcyBt
aXNzaW5nLgorCisgICAgICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlZHVs
ZVJlc291cmNlTG9hZCBlbnN1cmVzIGEgc2VydmljZQorICAgICAgICB3b3JrZXIgc2Vzc2lvbiBm
b3IgYW55IGFwcC1ib3VuZCBkb21haW4gbmF2aWdhdGlvbnMsIHNpbmNlIGFueSBjYWxscworICAg
ICAgICB0byBjcmVhdGUgc2VydmljZSB3b3JrZXIgc2Vzc2lvbnMgcHJpb3Igd2VyZSBvbmx5IGV4
ZWN1dGVkIGlmIHRoZQorICAgICAgICBlbnRpdGxlbWVudCB3YXMgcHJlc2VudC4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKToKKyAgICAgICAgU3Rv
cmVzIHNlcnZpY2Ugd29ya2VyIGluZm9ybWF0aW9uIHdoZW4gYWRkaW5nIGEgbmV3IFdlYnNpdGVE
YXRhU3RvcmUgb3IKKyAgICAgICAgaW5pdGlhbGl6aW5nIHRoZSBOZXR3b3JrUHJvY2VzcyBzbyB3
ZSBjYW4gYWRkIGEgc2VydmljZSB3b3JrZXIgc2Vzc2lvbgorICAgICAgICBhdCBuYXZpZ2F0aW9u
IGlmIHRoZSBkZXN0aW5hdGlvbiBkb21haW4gaXMgYXBwLWJvdW5kLgorCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICBD
aGVjayBpZiB0aGUgcGF0aCBpcyBlbXB0eSBoZXJlIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGZldGNo
IGEgc2VydmljZQorICAgICAgICB3b3JrZXIgc2Vzc2lvbiBiZWNhdXNlIHRoZXJlIGlzIG5vIGd1
YXJhbnRlZSB0aGF0IG9uZSBoYXMgYmVlbiBjcmVhdGVkCisgICAgICAgIHlldC4gUHJldmlvdXNs
eSB3ZSBkaWQgbm90IG5lZWQgdG8gY2hlY2sgdGhpcyBiZWNhdXNlIGFkZGluZyBhIHdlYnNpdGUK
KyAgICAgICAgZGF0YSBzdG9yZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYSBuZXcgc2VydmljZSB3
b3JrZXIgc2Vzc2lvbi4KKworICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVnaXN0
ZXJTV1NlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFz
azo6c29mdFVwZGF0ZUlmTmVlZGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAg
ICBUaHJlYWRzIGEgcGFyYW1ldGVyIHRocm91Z2ggYW55IGZ1bmN0aW9uIHdoaWNoIGNoZWNrcyBm
b3IgdGhlIHNlcnZpY2UKKyAgICAgICAgd29ya2VyIGVudGl0bGVtZW50IHRvIGFsc28gY2hlY2sg
aWYgdGhlIGxvYWQgaXMgZm9yIGFuIGFwcC1ib3VuZCBkb21haW4KKyAgICAgICAgaW4gdGhlIGNh
c2Ugd2hlcmUgdGhlIGVudGl0bGVtZW50IGlzIG1pc3NpbmcuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50IGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpc2FibGVTZXJ2aWNlV29ya2Vy
RW50aXRsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZSk6CisgICAgICAgIEluIG9yZGVyIHRvIHRlc3Qg
dGhpcyB0aG9yb3VnaGx5LCBUZXN0V2ViS2l0QVBJIG5lZWRlZCBhIHdheSB0bworICAgICAgICB0
ZW1wb3JhcmlseSBkaXNhYmxlIHRoZSBzZXJ2aWNlIHdvcmtlciBlbnRpdGxlbWVudC4gVGhpcyBm
dW5jdGlvbgorICAgICAgICBvdmVycmlkZXMgdGhlIGNoZWNrIGZvciB0aGUgZW50aXRsZW1lbnQg
aWYgdGhlIGJvb2wgaXMgc2V0LCBkaXNhYmxpbmcKKyAgICAgICAgdGhlIGVudGl0bGVtZW50Lgor
CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2Vz
IF9zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3RpbmddKToKKyAgICAgICAg
KC1bV0tQcmVmZXJlbmNlcyBfc2V0U2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JU
ZXN0aW5nOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1By
aXZhdGUuaDoKKyAgICAgICAgQWRkZWQgdHdvIG5ldyB3ZWIgcHJlZmVyZW5jZXMuIEFsbG93U2Vy
dmljZVdvcmtlcnNGb3JBcHBCb3VuZERvbWFpbgorICAgICAgICBpcyBuZWVkZWQgdG8gbm90aWZ5
IHRoZSBXZWJQYWdlIHRoYXQgYW4gYXBwLWJvdW5kIG5hdmlnYXRpb24gaGFzCisgICAgICAgIG9j
Y3VyZWQgYW5kIHNlcnZpY2Ugd29ya2VycyBjYW4gYmUgdXNlZC4KKyAgICAgICAgU2VydmljZVdv
cmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nIGRpc2FibGVzIHRoZSBlbnRpdGxlbWVu
dAorICAgICAgICBmb3IgVGVzdFdlYktpdEFQSSBhcyBkZXNjcmliZWQgYWJvdmUuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zZXR1cFBhZ2VDb25maWd1cmF0aW9uOl0pOgorICAgICAgICBEaXNhYmxlIHNlcnZpY2Ug
d29ya2VycyBoZXJlIGlmIHRoZSB0ZXN0IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyCisgICAgICAg
IGlzIHNldCB0byBkaXNhYmxlIHRoZSBlbnRpdGxlbWVudCwgc28gd2Ugc3RhcnQgdGhlIHRlc3Qg
YXMgaWYgd2UKKyAgICAgICAgbmV2ZXIgaGFkIGFuIGVudGl0bGVtZW50LgorCisgICAgICAgICgt
W1dLV2ViVmlldyBfc2VydmljZVdvcmtlcnNFbmFibGVkOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX2NsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGU6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgIFNQSXMgZm9y
IHRlc3RpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgU2VuZCBJUEMgdG8gdGhlIE5ldHdvcmtQcm9jZXNzIHRvIGRpc2FibGUgdGhlIGVudGl0bGVt
ZW50LgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbik6CisgICAgICAgIFRoZSBtYWluIGNoYW5nZSBvZiB0aGlzIHBhdGNoIGlz
IGhlcmUuIFRoaXMgZW5hYmxlcy9kaXNhYmxlcyBzZXJ2aWNlIHdvcmtlcnMKKyAgICAgICAgYmFz
ZWQgb24gbmF2aWdhdGlvbiB0by9hd2F5IGZyb20gYW4gYXBwLWJvdW5kIGRvbWFpbi4KKworICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1l
bnRJbk5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbGVh
clNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKToKKyAgICAgICAgQXMgZGVzY3JpYmVk
IGFib3ZlLCB0aGlzIGlzIGEgd2F5IGZvciBUZXN0V2ViS2l0QVBJIHRvCisgICAgICAgIHRlbXBv
cmFyaWx5IGRpc2FibGUgdGhlIHNlcnZpY2Ugd29ya2VyIGVudGl0bGVtZW50LiBDbGVhcmluZyB0
aGUKKyAgICAgICAgZW50aXRsZW1lbnQgdGVzdGluZyBvdmVycmlkZSBzZXRzIHNlcnZpY2VXb3Jr
ZXJzRW5hYmxlZCB0byB0cnVlIHRvCisgICAgICAgIHJldHVybiB0byB0aGUgZGVmYXVsdCBzdGF0
ZSBvZiBUZXN0V2ViS2l0QVBJIHdpdGggdGhlIHNlcnZpY2Ugd29ya2VyCisgICAgICAgIGVudGl0
bGVtZW50LgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJlZmVyZW5jZXNEaWRD
aGFuZ2UpOgorICAgICAgICBXaGVuIHNlcnZpY2Ugd29ya2VycyBhcmUgZW5hYmxlZC9kaXNhYmxl
ZCBvbiBuYXZpZ2F0aW9uLCB1cGRhdGUKKyAgICAgICAgV2ViUHJlZmVyZW5jZXMgc28gdGhlIFdl
YlBhZ2UgY2FuIGNoZWNrIHRoaXMgdmFsdWUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgRGlzYWJsZSB0aGUgZW50aXRsZW1l
bnQgYmVmb3JlIGNoZWNraW5nL3VwZGF0aW5nIHNlcnZpY2Ugd29ya2VyIGZsYWdzCisgICAgICAg
IHRvIG1ha2Ugc3VyZSB0aGlzIGJlaGF2aW9yIHdvcmtzIHByb3Blcmx5IHdpdGggbm8gZW50aXRs
ZW1lbnQgaW4gdGhlCisgICAgICAgIHRlc3QgY2FzZS4gQWRkcyBhbiBlbHNlIGNsYXVzZSBiZWNh
dXNlIHNlcnZpY2Ugd29ya2VycyBjYW4gbm93IGJlCisgICAgICAgIGVuYWJsZWQvZGlzYWJsZWQg
bW9yZSB0aGFuIG9uY2UuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlzYWJsZVNlcnZp
Y2VXb3JrZXJFbnRpdGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsZWFyU2Vy
dmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGFyZW50UHJvY2Vz
c0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpjbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKToKKyAgICAg
ICAgT3ZlcnJpZGUgdGhlIGVudGl0bGVtZW50IGFzIGRlc2NyaWJlZCBhYm92ZS4KKwogMjAyMC0w
NC0xNiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OIChyMjU5ODk4KTogV2ViS2l0LWJhc2VkIEJvb2tzIHZpZXdzIGFyZSBhbGwgYmxh
bmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZWUxMjVlNTdlMDFjZTYyODljZWFj
ODIzY2M0Nzc1MzQ3OTIyNzY1Zi4uMTc0MmE2MjM0MjEyMWUwNmVlNjZjMjVkZDIyNDMxZDEwZmIy
OTViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTQyOCwxNyArNDI4LDI1IEBA
IGJvb2wgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmlzU2VydmljZVdvcmtlckFsbG93
ZWQoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUZldGNoVGFzayhOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAg
IGlmICghaXNTZXJ2aWNlV29ya2VyQWxsb3dlZCgpKQorICAgIGF1dG8gYWxsb3dTZXJ2aWNlV29y
a2Vyc0ZvckFwcEJvdW5kRG9tYWluID0gbG9hZGVyLnBhcmFtZXRlcnMoKS5pc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluICYmICpsb2FkZXIucGFyYW1ldGVycygpLmlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4gPT0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllczsKKworICAgIGlm
ICghaXNTZXJ2aWNlV29ya2VyQWxsb3dlZCgpICYmICFhbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBw
Qm91bmREb21haW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzd0Nvbm5l
Y3Rpb24oKS5jcmVhdGVGZXRjaFRhc2sobG9hZGVyLCByZXF1ZXN0KTsKKworICAgIHJldHVybiBz
d0Nvbm5lY3Rpb24oYWxsb3dTZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluKS5jcmVhdGVG
ZXRjaFRhc2sobG9hZGVyLCByZXF1ZXN0KTsKIH0KICNlbmRpZgogCiB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICBib29sIGlzU2VydmljZVdvcmtlckFsbG93ZWQgPSB0aGlzLT5pc1NlcnZpY2VX
b3JrZXJBbGxvd2VkKCk7CisgICAgYXV0byBhbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBwQm91bmRE
b21haW4gPSBsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluICYmICps
b2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID09IE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOjpZZXM7CisgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJBbGxvd2VkID0g
dGhpcy0+aXNTZXJ2aWNlV29ya2VyQWxsb3dlZCgpIHx8IGFsbG93U2VydmljZVdvcmtlcnNGb3JB
cHBCb3VuZERvbWFpbjsKKwogICAgIGlmIChpc1NlcnZpY2VXb3JrZXJBbGxvd2VkKSB7CisgICAg
ICAgIGlmIChhbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBwQm91bmREb21haW4pCisgICAgICAgICAg
ICBtX25ldHdvcmtQcm9jZXNzLT5hZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihtX3Nlc3Npb25JRCk7
CisKICAgICAgICAgYXV0byYgc2VydmVyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JT
ZXNzaW9uKG1fc2Vzc2lvbklEKTsKICAgICAgICAgaWYgKCFzZXJ2ZXIuaXNJbXBvcnRDb21wbGV0
ZWQoKSkgewogICAgICAgICAgICAgc2VydmVyLndoZW5JbXBvcnRJc0NvbXBsZXRlZChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBsb2FkUGFyYW1ldGVycyA9IFdURk1vdmUo
bG9hZFBhcmFtZXRlcnMpXSgpIG11dGFibGUgewpAQCAtMTAwOSwxMyArMTAxNywxMyBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCkK
ICAgICAgICAgbV9zd0Nvbm5lY3Rpb24tPnNlcnZlcigpLnJlbW92ZUNvbm5lY3Rpb24obV9zd0Nv
bm5lY3Rpb24tPmlkZW50aWZpZXIoKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpCit2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oYm9vbCBhbGxv
d1NlcnZpY2VXb3JrZXJzRm9yQXBwQm91bmREb21haW4pCiB7CiAgICAgaWYgKG1fc3dDb25uZWN0
aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBzZXJ2ZXIgPSBtX25ldHdvcmtQcm9j
ZXNzLT5zd1NlcnZlckZvclNlc3Npb24obV9zZXNzaW9uSUQpOwotICAgIGF1dG8gY29ubmVjdGlv
biA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNzLCBz
ZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7CisgICAg
YXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0
d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVu
dGlmaWVyLCBhbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBwQm91bmREb21haW4pOwogCiAgICAgbV9z
d0Nvbm5lY3Rpb24gPSBtYWtlV2Vha1B0cigqY29ubmVjdGlvbik7CiAgICAgc2VydmVyLmFkZENv
bm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSk7CkBAIC0xMDQxLDExICsxMDQ5LDExIEBAIHZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25Ob0xvbmdlck5lZWRlZCgpCiAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsK
IH0KIAotV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6c3dDb25uZWN0aW9uKCkKK1dlYlNXU2VydmVyQ29ubmVjdGlvbiYgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnN3Q29ubmVjdGlvbihib29sIGFsbG93U2VydmljZVdvcmtlcnNGb3JB
cHBCb3VuZERvbWFpbikKIHsKLSAgICBBU1NFUlQoaXNTZXJ2aWNlV29ya2VyQWxsb3dlZCgpKTsK
KyAgICBBU1NFUlQoaXNTZXJ2aWNlV29ya2VyQWxsb3dlZCgpIHx8IGFsbG93U2VydmljZVdvcmtl
cnNGb3JBcHBCb3VuZERvbWFpbik7CiAgICAgaWYgKCFtX3N3Q29ubmVjdGlvbikKLSAgICAgICAg
ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKCk7CisgICAgICAgIGVzdGFibGlzaFNXU2VydmVy
Q29ubmVjdGlvbihhbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBwQm91bmREb21haW4pOwogICAgIHJl
dHVybiAqbV9zd0Nvbm5lY3Rpb247CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApp
bmRleCAwMzg4YjFhZGZjNTBhYTc3OWI4NWVjNWFmN2RhNDdiNTM2M2UxZjhiLi44YTk2MDA4MzMz
MjU4ODQ2MGM4YThlZWMwYmUyOWRiMjVhOTA2YjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CkBAIC0xNjYsNyArMTY2LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7Ci0g
ICAgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBzd0Nvbm5lY3Rpb24oKTsKKyAgICBXZWJTV1NlcnZl
ckNvbm5lY3Rpb24mIHN3Q29ubmVjdGlvbihib29sKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Vy
dmljZVdvcmtlckZldGNoVGFzaz4gY3JlYXRlRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRl
ciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCiAKQEAgLTIzMiw3
ICsyMzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2Fn
ZUZvclRlc3RpbmcoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsK
KyAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihib29sID0gZmFsc2UpOwogICAg
IHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xvc2VTV0Nv
bnRleHRDb25uZWN0aW9uKCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4
IDUyYzAxMjk3YjNkNGY0NTUxNjlhMzRhNDAzMGQwNDZlYTk5NjY3YTkuLjJiYTc2OGZkMzQwMjll
ZGI2MmE0YjllMTM0MmVlODM3OWMwNzM0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0zNDUsMTAgKzM0NSwxMSBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmJgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgaWYgKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSkgewotICAg
ICAgICBib29sIHNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQgPSB0
cnVlOwotICAgICAgICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFi
bGVkLCBXVEZNb3ZlKHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eSksIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7Ci0gICAgfQorICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRl
bGF5RW5hYmxlZCA9IHRydWU7CisgICAgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5ID0gV1RGTW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkpOworICAgIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSA9IFdURk1vdmUocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudCgpKQorICAgICAgICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKICNlbmRpZgogCiAgICAgbV9zdG9yYWdlTWFu
YWdlclNldC0+YWRkKHNlc3Npb25JRCwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1l
dGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKQEAgLTQzOCw4
ICs0MzksMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZShXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQorICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRl
bGF5RW5hYmxlZCA9IHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRl
bGF5RW5hYmxlZDsKKyAgICBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBX
VEZNb3ZlKHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSk7Cisg
ICAgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0g
V1RGTW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOwogICAgIGlmIChwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0
bGVtZW50KCkpCi0gICAgICAgIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKHNlc3Npb25JRCwgcGFy
YW1ldGVycy5zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBXVEZN
b3ZlKHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSksIHBhcmFt
ZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7
CisgICAgICAgIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKHNlc3Npb25JRCk7CiAjZW5kaWYKIAog
ICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmFkZChzZXNzaW9uSUQsIHBhcmFtZXRlcnMubG9jYWxT
dG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7CkBAIC0xNTQ2LDcgKzE1NTAsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxl
dGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQog
I2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHdlYnNpdGVEYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
cykgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQorICAgIGF1dG8gcGF0aCA9IG1fc2Vydmlj
ZVdvcmtlckluZm8uZ2V0KHNlc3Npb25JRCkuZGF0YWJhc2VQYXRoOworICAgIGlmICghcGF0aC5p
c0VtcHR5KCkgJiYgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAg
ICAgICAgIHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLmNsZWFyQWxsKFtjbGVhclRhc2tz
SGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKICNlbmRpZgogCkBA
IC0xNjYxLDcgKzE2NjYsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpbwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYgIXNlc3Np
b25JRC5pc0VwaGVtZXJhbCgpKSB7CisgICAgYXV0byBwYXRoID0gbV9zZXJ2aWNlV29ya2VySW5m
by5nZXQoc2Vzc2lvbklEKS5kYXRhYmFzZVBhdGg7CisgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSAm
JiB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbnMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewogICAgICAgICBh
dXRvJiBzZXJ2ZXIgPSBzd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKTsKICAgICAgICAgZm9y
IChhdXRvJiBvcmlnaW5EYXRhIDogb3JpZ2luRGF0YXMpCiAgICAgICAgICAgICBzZXJ2ZXIuY2xl
YXIob3JpZ2luRGF0YSwgW2NsZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29w
eVJlZigpXSB7IH0pOwpAQCAtMjQ3Myw5ICsyNDc5LDkgQEAgV2ViU1dPcmlnaW5TdG9yZSogTmV0
d29ya1Byb2Nlc3M6OmV4aXN0aW5nU1dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFMOjpTZXNzaW9u
SUQKICAgICByZXR1cm4gJnN0YXRpY19jYXN0PFdlYlNXT3JpZ2luU3RvcmUmPihzd1NlcnZlci0+
b3JpZ2luU3RvcmUoKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2
ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgYm9vbCBhbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBwQm91bmREb21h
aW4pCiB7Ci0gICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1l
bnQoKSk7CisgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1l
bnQoKSB8fCBhbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBwQm91bmREb21haW4pOwogICAgIGF1dG8q
IHN0b3JlID0gZXhpc3RpbmdTV09yaWdpblN0b3JlRm9yU2Vzc2lvbihjb25uZWN0aW9uLnNlc3Np
b25JRCgpKTsKICAgICBBU1NFUlQoc3RvcmUpOwogICAgIGlmIChzdG9yZSkKQEAgLTI0ODgsMTUg
KzI0OTQsMTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6dW5yZWdpc3RlclNXU2VydmVyQ29ubmVj
dGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3QKICAgICAgICAgc3RvcmUtPnVucmVn
aXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgTmV0d29ya1By
b2Nlc3M6OmFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Ym9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYg
aGFuZGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkU2VydmljZVdvcmtlclNlc3Npb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIFNlcnZpY2VXb3JrZXJJbmZvIGluZm8gewot
ICAgICAgICBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLAotICAg
ICAgICBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQKKyAgICAgICAgbV9zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LAorICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNz
VGVybWluYXRpb25EZWxheUVuYWJsZWQKICAgICB9OwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9z
ZXJ2aWNlV29ya2VySW5mby5hZGQoc2Vzc2lvbklELCBXVEZNb3ZlKGluZm8pKTsKICAgICBpZiAo
YWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3Vt
ZVBlcm1hbmVudGx5KGhhbmRsZSk7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQ
ZXJtYW5lbnRseShtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogICAgICAgICBpZiAoIWFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZGF0YWJhc2VQ
YXRoLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHBvc3RTdG9yYWdlVGFzayhjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soKnRoaXMsICZOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlUGF0aEV4aXN0cywgYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZS5kYXRhYmFzZVBhdGgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggMDY0YmIxY2RjYzhhMjcy
YTAyYzRjZjc3M2QwMmRhNDY1MjNkMGVmYi4uZjFiMjY0YzA5MTIzNjk5NTcyZmU0MDU0MTlmMjVm
MGU3MmQ4NjU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaApAQCAtMjk3LDcgKzI5Nyw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXIqIHN3U2VydmVyRm9yU2Vzc2lvbklmRXhpc3Rz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgeyByZXR1cm4gbV9zd1NlcnZlcnMuZ2V0KHNlc3Np
b25JRCk7IH0KICAgICBXZWJDb3JlOjpTV1NlcnZlciYgc3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6
U2Vzc2lvbklEKTsKLSAgICB2b2lkIHJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbiYpOworICAgIHZvaWQgcmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uJiwgYm9vbCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dTZXJ2ZXJD
b25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwogICAgIAogICAgIHZvaWQgZm9yRWFj
aFNXU2VydmVyKGNvbnN0IEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6U1dTZXJ2ZXImKT4mKTsKQEAg
LTMwNSw2ICszMDUsOCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGJvb2wgcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpIGNvbnN0Owor
ICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpOworICAgIHZvaWQgY2xl
YXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogI2Vsc2UKICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKQEAgLTM1MCw2ICszNTIs
MTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBicm9hZGNhc3RDb25zb2xlTWVzc2FnZShQQUw6OlNl
c3Npb25JRCwgSlNDOjpNZXNzYWdlU291cmNlLCBKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKTsKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lkIGFk
ZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vz
c2lvbigpIGNvbnN0OwpAQCAtNDYzLDggKzQ2OSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNh
YmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCk7CiAgICAgCiAgICAgV2Vi
U1dPcmlnaW5TdG9yZSogZXhpc3RpbmdTV09yaWdpblN0b3JlRm9yU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCkgY29uc3Q7Ci0KLSAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBBTDo6U2Vz
c2lvbklELCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJik7CiAjZW5kaWYKIAogICAgIHZvaWQgcG9zdFN0b3JhZ2VUYXNrKENyb3NzVGhyZWFk
VGFzayYmKTsKQEAgLTU2OSw2ICs1NzMsOSBAQCBwcml2YXRlOgogICAgIH07CiAgICAgSGFzaE1h
cDxQQUw6OlNlc3Npb25JRCwgU2VydmljZVdvcmtlckluZm8+IG1fc2VydmljZVdvcmtlckluZm87
CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNX
U2VydmVyPj4gbV9zd1NlcnZlcnM7CisgICAgU3RyaW5nIG1fc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbV9zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGJvb2wgbV9zZXJ2
aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkOwogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDIxOWQzOTFiNGZjZWZiMzk2NDI4ZjZi
MmI2MTNlMzc3M2M4MGMzNTIuLjg1NzZiNDY0NmNhM2ExZjc4Y2JlMzYxMTM0MjZlMWYzZDc0Zjdj
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTcyLDQgKzE3Miw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdv
cmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICAKICAgICBIYXNBcHBCb3VuZFNlc3Npb24o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24pIEFz
eW5jCiAgICAgU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBib29sIHZhbHVlKSAtPiAoKSBBc3luYworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICBEaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkKKyAgICBDbGVhclNlcnZp
Y2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKCkgLT4gKCkgQXN5bmMKKyNlbmRpZgogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IDNmZGE3NWY5Y2M3ZDY2
NWM4NDc4YjljZTFiOTBmYTczYWZjNmI4MmQuLjFiMTIzZDNmOGY4ODVhMDBhMmI5MjMzNzkxZWE5
NmI4YWJkNWI5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAK
QEAgLTI2NCw3ICsyNjQsMTAgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzb2Z0VXBk
YXRlSWZOZWVkZWQoKQogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNvZnRVcGRhdGVJZk5l
ZWRlZDogKG1fc2hvdWxkU29mdFVwZGF0ZT0lZCkiLCBtX3Nob3VsZFNvZnRVcGRhdGUpOwogICAg
IGlmICghbV9zaG91bGRTb2Z0VXBkYXRlKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKGF1dG8q
IHJlZ2lzdHJhdGlvbiA9IG1fbG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5zd0Nvbm5l
Y3Rpb24oKS5zZXJ2ZXIoKS5nZXRSZWdpc3RyYXRpb24obV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllcikpCisKKyAgICBhdXRvIGFsbG93U2VydmljZVdvcmtlcnNGb3JBcHBCb3Vu
ZERvbWFpbiA9IG1fbG9hZGVyLnBhcmFtZXRlcnMoKS5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluICYmICptX2xvYWRlci5wYXJhbWV0ZXJzKCkuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biA9PSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVzOworCisgICAgaWYgKGF1dG8qIHJl
Z2lzdHJhdGlvbiA9IG1fbG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5zd0Nvbm5lY3Rp
b24oYWxsb3dTZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluKS5zZXJ2ZXIoKS5nZXRSZWdp
c3RyYXRpb24obV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikpCiAgICAgICAg
IHJlZ2lzdHJhdGlvbi0+c2NoZWR1bGVTb2Z0VXBkYXRlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNjAyM2ZmNGU3MjdiMjA2MWI5NGNhMDM0OWU4
NGVmNDcxOWFjZDk5Yi4uYmZiMmE2YzlhN2M5MjE4MzE5YWIzZTYxMWEzZjAwYjBlOGJkOTQ0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTY0LDEyICs2NCwx
MiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICNkZWZpbmUgU1dTRVJWRVJDT05ORUNUSU9O
X1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKHNlc3Npb25J
RCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBTZXJ2aWNlV29ya2VyLCAiJXAgLSBXZWJT
V1NlcnZlckNvbm5lY3Rpb246OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBT
V1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikg
UkVMRUFTRV9MT0dfRVJST1JfSUYoc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQsIHRo
aXMsICMjX19WQV9BUkdTX18pCiAKLVdlYlNXU2VydmVyQ29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgU1dTZXJ2ZXImIHNlcnZl
ciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNz
SWRlbnRpZmllcikKK1dlYlNXU2VydmVyQ29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
KE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgU1dTZXJ2ZXImIHNlcnZlciwgSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmll
ciwgYm9vbCBhbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBwQm91bmREb21haW4pCiAgICAgOiBTV1Nl
cnZlcjo6Q29ubmVjdGlvbihzZXJ2ZXIsIHByb2Nlc3NJZGVudGlmaWVyKQogICAgICwgbV9jb250
ZW50Q29ubmVjdGlvbihjb25uZWN0aW9uKQogICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3Jr
UHJvY2VzcykKIHsKLSAgICBuZXR3b3JrUHJvY2Vzcy5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlv
bigqdGhpcyk7CisgICAgbmV0d29ya1Byb2Nlc3MucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24o
KnRoaXMsIGFsbG93U2VydmljZVdvcmtlcnNGb3JBcHBCb3VuZERvbWFpbik7CiB9CiAKIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjo6fldlYlNXU2VydmVyQ29ubmVjdGlvbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggYzgzMzcwMWMxODhiOGFlNDU2ZDRiM2QxMDc0MDU3
ZDk2Njk4MWRjNS4uMzQ2OTM3NTBlNzJmMTNiNTU0YjY5NDM0MjhjYzM5YWY0NjVmYmNmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtNjMsNyArNjMsNyBAQCBjbGFz
cyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogCiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb24g
OiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6U1dTZXJ2ZXImLCBJ
UEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisgICAgV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6U1dTZXJ2ZXImLCBJUEM6
OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgYm9vbCk7CiAgICAgV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uKGNvbnN0IFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpID0gZGVsZXRl
OwogICAgIH5XZWJTV1NlcnZlckNvbm5lY3Rpb24oKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQppbmRleCBl
MTkyZjUwM2Y0NDVmZTUxMDA4MTAyZTYzNTk2MGVhMWUxN2NlZjUyLi4xMGFiMzI0NGQxYzkxMWIy
NzQ2OTg5YjdhMmRkZmQ0ZTVlYTc3YTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQpAQCAtNzQsMTIgKzc0LDI4IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCitzdGF0aWMgYm9vbCBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50
VGVzdGluZ092ZXJyaWRlOworCiBib29sIE5ldHdvcmtQcm9jZXNzOjpwYXJlbnRQcm9jZXNzSGFz
U2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgY29uc3QKIHsKKyAgICBpZiAoZGlzYWJsZVNlcnZp
Y2VXb3JrZXJFbnRpdGxlbWVudFRlc3RpbmdPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCiAgICAgc3RhdGljIGJvb2wgaGFzRW50aXRsZW1lbnQgPSBXVEY6Omhhc0VudGl0bGVtZW50
KHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSwgImNvbS5hcHBsZS5k
ZXZlbG9wZXIuV2ViS2l0LlNlcnZpY2VXb3JrZXJzIik7CiAgICAgcmV0dXJuIGhhc0VudGl0bGVt
ZW50OwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaXNhYmxlU2VydmljZVdvcmtlckVudGl0
bGVtZW50KCkKK3sKKyAgICBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVzdGluZ092
ZXJyaWRlID0gdHJ1ZTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJTZXJ2aWNlV29y
a2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudFRlc3Rp
bmdPdmVycmlkZSA9IGZhbHNlOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IGI2ZWIxMTRhYjkyMTVjYjEw
ZDk0NTk2Yzg2ZWJhZDcxZWNlZTc3ZmYuLjFhN2FkZDdjYTZiZWYyNmM2MjI5ZTAwZTViMmYwYzNj
ODNlZjUyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2Vz
LnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAt
MTI3Myw2ICsxMjczLDE2IEBAIE5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczoKICAgICB3
ZWJjb3JlQmluZGluZzogUnVudGltZUVuYWJsZWRGZWF0dXJlcwogICAgIGNhdGVnb3J5OiBkZWJ1
ZwogCitBbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBwQm91bmREb21haW46CisgICAgdHlwZTogYm9v
bAorICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UKKyAgICB3ZWJjb3JlQmluZGluZzogbm9uZQorICAg
IAorU2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nOgorICAgIHR5cGU6
IGJvb2wKKyAgICBkZWZhdWx0VmFsdWU6IGZhbHNlCisgICAgd2ViY29yZUJpbmRpbmc6IG5vbmUK
KwogIyBGb3IgZXhwZXJpbWVudGFsIGZlYXR1cmVzOgogIyBUaGUgdHlwZSBzaG91bGQgYmUgYm9v
bGVhbi4KICMgWW91IG11c3QgcHJvdmlkZSBhIGh1bWFuUmVhZGFibGVOYW1lIGFuZCBodW1hblJl
YWRhYmxlRGVzY3JpcHRpb24gZm9yIGFsbCBleHBlcmltZW50YWwgZmVhdHVyZXMuIFRoZXkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2Vz
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0K
aW5kZXggOWFhYmEwZjg3MGFlOTQ5ODgxYmUwN2FmOTUwMzBmZWVlMTQ5ZDI1OS4uZDBhZjNiZjhj
NmViYjgwZmZkY2QzNTc3ZmZjOTNhYmMyM2JiNWRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KQEAgLTkyMyw2ICs5MjMsMTYg
QEAgLSAoQk9PTClfaXNJVFBEYXRhYmFzZUVuYWJsZWQKICAgICByZXR1cm4gX3ByZWZlcmVuY2Vz
LT5pc0lUUERhdGFiYXNlRW5hYmxlZCgpOwogfQogCistIChCT09MKV9zZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnREaXNhYmxlZEZvclRlc3RpbmcKK3sKKyAgICByZXR1cm4gX3ByZWZlcmVuY2VzLT5z
ZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3RpbmcoKTsKK30KKworLSAodm9p
ZClfc2V0U2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nOihCT09MKWRp
c2FibGUKK3sKKyAgICBfcHJlZmVyZW5jZXMtPnNldFNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERp
c2FibGVkRm9yVGVzdGluZyhkaXNhYmxlKTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykKIC0gKHZv
aWQpX3NldEphdmFFbmFibGVkRm9yTG9jYWxGaWxlczooQk9PTCllbmFibGVkCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJp
dmF0ZS5oCmluZGV4IDdjZDA1MTg3Zjk0MGJiNjdmOWFiMGMyMWY4OWE3OTkwMDdkNGE1YzQuLjY3
NTY3ODkzZjQ0YjZiZjhlMDk2OTBmNTUxNjE2MmQ0MzNiOTE1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5o
CkBAIC0xNjUsNiArMTY1LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLRWRpdGFi
bGVMaW5rQmVoYXZpb3IpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkOikgQk9PTCBfYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Vu
YWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKFdLX0lPU19UQkEpKTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFJlcXVlc3RBbmltYXRpb25GcmFtZUVu
YWJsZWQ6KSBCT09MIF9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIEJPT0wgX2lzSVRQRGF0YWJhc2VFbmFibGVkIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgc2V0dGVyPV9zZXRTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3Rp
bmc6KSBCT09MIF9zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3RpbmcgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lm
ICFUQVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRXZWJH
TEVuYWJsZWQ6KSBCT09MIF93ZWJHTEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
My40KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQppbmRleCA0ODNjYTZhZjJkOTA1NTFlOWE1YjUyNGI3ODFhYzFjOTE5ZThiMzBlLi5iN2IzMjhm
ODBlMmJlM2NiNDQ3MTg0OWE5NDMzMjMyM2M3MDZlOWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTEyMSw2ICsxMjEsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRm
b3JtU2NyZWVuLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5o
PgorI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5n
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KQEAgLTUyNCw4ICs1MjUsOSBA
QCAtICh2b2lkKV9zZXR1cFBhZ2VDb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJh
dGlvbj4mKXBhZ2VDb25maWd1cmF0aW9uCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoIVdURjo6cHJvY2Vzc0hhc0Vu
dGl0bGVtZW50KCJjb20uYXBwbGUuZGV2ZWxvcGVyLldlYktpdC5TZXJ2aWNlV29ya2VycyIpKQor
ICAgIGlmICghV1RGOjpwcm9jZXNzSGFzRW50aXRsZW1lbnQoImNvbS5hcHBsZS5kZXZlbG9wZXIu
V2ViS2l0LlNlcnZpY2VXb3JrZXJzIikgfHwgW19jb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS5f
c2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nKQogICAgICAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0U2VydmljZVdvcmtlcnNFbmFibGVkKGZh
bHNlKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0U2VydmljZVdv
cmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nKCEhW19jb25maWd1cmF0aW9uIHByZWZl
cmVuY2VzXS5fc2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nKTsKICNl
bmRpZgogCiAgICAgaWYgKCFsaW5rZWRPbk9yQWZ0ZXIoV2ViS2l0OjpTREtWZXJzaW9uOjpGaXJz
dFdoZXJlU2l0ZVNwZWNpZmljUXVpcmtzQXJlRW5hYmxlZEJ5RGVmYXVsdCkpCkBAIC0yNzM4LDYg
KzI3NDAsMTkgQEAgLSAodm9pZClfaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjoodm9pZChe
KShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogICAgIH0pOwogfQogCistICh2b2lkKV9zZXJ2aWNl
V29ya2Vyc0VuYWJsZWQ6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBh
dXRvIGVuYWJsZWQgPSBbX2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLT5fcHJlZmVyZW5jZXMu
Z2V0KCktPnNlcnZpY2VXb3JrZXJzRW5hYmxlZCgpIHx8IFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2VydmljZVdvcmtlckVuYWJsZWQoKTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihlbmFibGVkKTsKK30KKworLSAodm9pZClfY2xlYXJTZXJ2aWNlV29y
a2VyRW50aXRsZW1lbnRPdmVycmlkZToodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIK
K3sKKyAgICBfcGFnZS0+Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShbY29t
cGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7Cit9CisKIC0gKGlkIDxfV0tJbnB1dERl
bGVnYXRlPilfaW5wdXREZWxlZ2F0ZQogewogICAgIHJldHVybiBfaW5wdXREZWxlZ2F0ZS5nZXRB
dXRvcmVsZWFzZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGNkNjIzNDNlMmQ0YzY5ZGQ3YzRjZTRmNWY3NmU1
YWViYmZlYmU2N2YuLjg0ZDg3ZWY5MmU4MGJlNDdkYjhhYTYxNjIyODIyM2ZkYzIzNTFmNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaApAQCAtMzQ3LDYgKzM0Nyw4IEBAIGZvciB0aGlzIHByb3BlcnR5LgogCiAtICh2b2lk
KV9ncmFudEFjY2Vzc1RvUHJlZmVyZW5jZVNlcnZpY2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAodm9pZClfc2VydmljZVdvcmtlcnNF
bmFibGVkOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9jbGVhclNlcnZp
Y2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFu
ZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwogQGVuZAogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKaW5kZXggYzdmMTY4NjhmMGMzOWE0NDAwOTNmYTg2ZTA3Yzg2ZmM4YjYz
Y2I5Ni4uMjViMjMwMWE2OGFjNGY3NmZhOThlMDRhMTZiYWE5MDY5YThhYTlkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNzksNiArMTc5LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Xcml0
aW5nRGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx3dGYvQ2FsbGJh
Y2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KQEAgLTUyMCw2
ICs1MjEsOSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xp
ZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldERpc2FibGVTY3JlZW5TaXpl
T3ZlcnJpZGUobV9wcmVmZXJlbmNlcy0+ZGlzYWJsZVNjcmVlblNpemVPdmVycmlkZSgpKTsKKyAg
ICAKKyAgICBpZiAobV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXJ2aWNlV29ya2Vy
RW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3RpbmcoKSkKKyAgICAgICAgZGlzYWJsZVNlcnZpY2VX
b3JrZXJFbnRpdGxlbWVudEluTmV0d29ya1Byb2Nlc3MoKTsKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCkBAIC0zMTM4LDEwICszMTQyLDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJ
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGJvb2wgaXNNYWluRnJhbWUsIGNvbnN0IFVSTCYK
ICAgICAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+c2V0V2ViVmlld0NhdGVnb3J5KFdlYlZpZXdD
YXRlZ29yeTo6SW5BcHBCcm93c2VyKTsKICAgICAgICAgICAgIG1faXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObzsKICAgICAgICAgICAg
IG1faGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiA9IE5hdmlnYXRlZEF3YXlGcm9t
QXBwQm91bmREb21haW46OlllczsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgICAg
ICAgICBtX3ByZWZlcmVuY2VzLT5zZXRTZXJ2aWNlV29ya2Vyc0VuYWJsZWQoZmFsc2UpOworI2Vu
ZGlmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbV9jb25maWd1cmF0
aW9uLT5zZXRXZWJWaWV3Q2F0ZWdvcnkoV2ViVmlld0NhdGVnb3J5OjpBcHBCb3VuZERvbWFpbik7
CiAgICAgICAgIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluOjpZZXM7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgICAgICBt
X3ByZWZlcmVuY2VzLT5zZXRTZXJ2aWNlV29ya2Vyc0VuYWJsZWQodHJ1ZSk7CisjZW5kaWYKICAg
ICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpc01haW5GcmFtZSk7CkBAIC0zMTU1LDYgKzMx
NjUsMzYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5U
ZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm8KICAgICBjb21wbGV0aW9uSGFuZGxlciht
X2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gJiYgKCptX2lzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4gPT0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllcykpOwogfQogCit2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudEluTmV0d29ya1By
b2Nlc3MoKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKGF1dG8qIG5ldHdv
cmtQcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLm5ldHdvcmtQcm9jZXNzKCkpIHsK
KyAgICAgICAgaWYgKCFuZXR3b3JrUHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpEaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KCksIDApOworICAgIH0K
KyNlbmRpZgorfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVn
YXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkNsZWFyU2Vy
dmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoKSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNh
bGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtQ
cm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLm5ldHdvcmtQcm9jZXNzKCkpIHsKKyAg
ICAgICAgaWYgKCFuZXR3b3JrUHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6Q2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZSgpLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAg
ICB9CisgICAgbV9wcmVmZXJlbmNlcy0+c2V0U2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJs
ZWRGb3JUZXN0aW5nKGZhbHNlKTsKKyAgICBtX3ByZWZlcmVuY2VzLT5zZXRTZXJ2aWNlV29ya2Vy
c0VuYWJsZWQodHJ1ZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjb21wbGV0aW9uSGFuZGxl
cik7CisjZW5kaWYKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBv
bGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiog
bmF2aWdhdGlvbiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBv
bGljaWVzPiYmIHBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyKQog
ewogICAgIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiB3ZWJzaXRlRGF0YVN0b3JlID0gbV93ZWJzaXRl
RGF0YVN0b3JlLmNvcHlSZWYoKTsKQEAgLTQyMjgsNiArNDI2OCwxMSBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogCiAgICAgcGFnZUNsaWVudCgpLnByZWZlcmVu
Y2VzRGlkQ2hhbmdlKCk7CiAKKyAgICBpZiAobV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
ICYmICgqbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID09IE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluOjpZZXMpKQorICAgICAgICBtX3ByZWZlcmVuY2VzLT5zZXRBbGxvd1NlcnZpY2VX
b3JrZXJzRm9yQXBwQm91bmREb21haW4odHJ1ZSk7CisgICAgZWxzZQorICAgICAgICBtX3ByZWZl
cmVuY2VzLT5zZXRBbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBwQm91bmREb21haW4oZmFsc2UpOwor
CiAgICAgLy8gRklYTUU6IEl0IHByb2JhYmx5IG1ha2VzIG1vcmUgc2Vuc2UgdG8gc2VuZCBpbmRp
dmlkdWFsIHByZWZlcmVuY2UgY2hhbmdlcy4KICAgICAvLyBIb3dldmVyLCBXZWJLaXRUZXN0UnVu
bmVyIGRlcGVuZHMgb24gZ2V0dGluZyBhIHByZWZlcmVuY2UgY2hhbmdlIG5vdGlmaWNhdGlvbgog
ICAgIC8vIGV2ZW4gaWYgbm90aGluZyBjaGFuZ2VkIGluIFVJIHByb2Nlc3MsIHNvIHRoYXQgb3Zl
cnJpZGVzIGdldCByZW1vdmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCA5NThmYzNlOTc4MGFlMzBjYzMwZjU5MjhjOWMwMjViYjFlZGFkNGIzLi5kMWFjN2RkODZi
MzA1NzYzYTg4ODI0MjI4NTA5YTMyN2RhYWFkOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtMTcyNyw2ICsxNzI3LDkgQEAgcHVibGljOgogICAgIHZvaWQgaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpblRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CiAgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7IHJldHVybiBtX2lzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW47IH0KIAorICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudEluTmV0d29ya1Byb2Nlc3MoKTsKKyAgICB2b2lkIGNsZWFyU2VydmljZVdvcmtlckVudGl0
bGVtZW50T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICAgICAgCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBncmFudEFjY2Vzc1RvQ3VycmVudFBhc3RlYm9h
cmREYXRhKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDhlYTdkNDU1YjRmMWE3
YTc0NTY1MTRiOGRiN2UxN2UyZWQ5NDgwMzEuLjlkY2UyMGRhMGZkMGE5OTk1ODQ0ZWJkM2QxZjFj
MjNlM2U3MzgyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCkBAIC0zNjcyLDExICszNjcyLDE2IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVy
ZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdl
YlByZWZlcmVuY2VzS2V5OjpzZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3Rp
bmdLZXkoKSkpCisgICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKTsKKwog
ICAgIGlmIChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnNlcnZp
Y2VXb3JrZXJzRW5hYmxlZEtleSgpKSkgewotICAgICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0hh
c1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKTsKLSAgICAgICAgaWYgKCFwYXJlbnRQcm9jZXNz
SGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkpCisgICAgICAgIGF1dG8gYWxsb3dTZXJ2aWNl
V29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluID0gc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlBy
ZWZlcmVuY2VzS2V5OjphbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBwQm91bmREb21haW5LZXkoKSk7
CisgICAgICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50
KCkgfHwgYWxsb3dTZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluKTsKKyAgICAgICAgaWYg
KCFwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgJiYgIWFsbG93U2Vy
dmljZVdvcmtlcnNGb3JBcHBCb3VuZERvbWFpbikKICAgICAgICAgICAgIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2VydmljZVdvcmtlckVuYWJsZWQoZmFsc2Up
OwotICAgIH0KKyAgICB9IGVsc2UgaWYgKCFwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVu
dGl0bGVtZW50KCkpCisgICAgICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuc2V0U2VydmljZVdvcmtlckVuYWJsZWQoZmFsc2UpOwogI2VuZGlmCiAKICAgICBzZXR0
aW5ncy5zZXRMYXlvdXRWaWV3cG9ydEhlaWdodEV4cGFuc2lvbkZhY3RvcihzdG9yZS5nZXREb3Vi
bGVWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6bGF5b3V0Vmlld3BvcnRIZWlnaHRFeHBh
bnNpb25GYWN0b3JLZXkoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IGQ3ZDdiODk5MWFmODE3NzE3NGJkYjFiZTc5YjU2MTMxMzlhM2Q4ODQuLjgw
MTE0NGNhZTgxNWQ4ZTkzNGUxMzBjMzAxMjQzNmM5NTYzYmI2ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1MTgsOCArMTUxOCwxMiBAQCBwcml2
YXRlOgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIHBhcmVudFByb2Nlc3NI
YXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSBjb25zdDsKKyAgICB2b2lkIGRpc2FibGVTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnQoKTsKKyAgICB2b2lkIGNsZWFyU2VydmljZVdvcmtlckVudGl0
bGVtZW50T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbHNlCiAgICAg
Ym9vbCBwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgp
IHsgfQorICAgIHZvaWQgY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoKTsgfQogI2VuZGlmCiAKICAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeURlY2lz
aW9uJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KaW5kZXggYjczZTRkYzAyMTM1OGIxNmFmMjVhNDBlZmY1MzU2YmE5N2Uy
ZDc1ZS4uMjEzNTU5ZjNmMmQxZmY5ZWMzNDE1ZDQ5OWUyZWE5ZjUwYTFmMzdjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CkBAIC0xMjEsNiArMTIxLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVt
OnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBTZXRTaG91
bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24oYm9vbCBzaG91bGRSZXZlYWxD
dXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24pCiAgICAgSW5zZXJ0VGV4dFBsYWNlaG9sZGVy
KFdlYkNvcmU6OkludFNpemUgc2l6ZSkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250
ZXh0PiBwbGFjZWhvbGRlcikgQXN5bmMKICAgICBSZW1vdmVUZXh0UGxhY2Vob2xkZXIoc3RydWN0
IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IHBsYWNlaG9sZGVyKSAtPiAoKSBBc3luYworICAgIENs
ZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoKSAtPiAoKSBBc3luYwogI2VuZGlm
CiAKICAgICBTZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGJvb2wgY29udHJvbGxlZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5k
ZXggYjJiOWU3OGQ5YTVmZjQ2YTIzZTYwMzhlNDA5Y2FmMDNiZTBkMzVhZi4uY2UwYTZmZDBlNzli
NThkMmQ2MGE1YzJlMGZlM2IxMGIwNzU5YWFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQ4NywxMiArNDg3LDI4IEBA
IGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYg
ZXZlbnQpCiAgICAgcmV0dXJuIHNlbmRSZXN1bHQgJiYgZXZlbnRXYXNIYW5kbGVkOwogfQogCitz
dGF0aWMgYm9vbCBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVzdGluZ092ZXJyaWRl
OworCiBib29sIFdlYlBhZ2U6OnBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1l
bnQoKSBjb25zdAogeworICAgIGlmIChkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVz
dGluZ092ZXJyaWRlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBzdGF0aWMgYm9vbCBo
YXNFbnRpdGxlbWVudCA9IFdURjo6aGFzRW50aXRsZW1lbnQoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlvbigpLCAiY29tLmFwcGxl
LmRldmVsb3Blci5XZWJLaXQuU2VydmljZVdvcmtlcnMiKTsKICAgICByZXR1cm4gaGFzRW50aXRs
ZW1lbnQ7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6ZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVu
dCgpCit7CisgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudFRlc3RpbmdPdmVycmlk
ZSA9IHRydWU7Cit9CisKK3ZvaWQgV2ViUGFnZTo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1l
bnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudFRlc3RpbmdPdmVycmlkZSA9
IGZhbHNlOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKIHZvaWQgV2ViUGFnZTo6c2Vu
ZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdpbih1aW50NjRfdCwgY29uc3QgU3RyaW5nJikKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDllYmJhNmU2Mzc1MDI3YjBiODZiNGU0NmNjN2FiNGQyMTY4Yzc3NjYu
LjVjZjk3N2RkMjliZWMxMmI5OTdjMmMyYTgxMGQzODRlMGFmYjZmMWUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAy
MC0wNC0xNiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAg
ICAgICBFbmFibGUgc2VydmljZSB3b3JrZXJzIGZvciBhcHAtYm91bmQgZG9tYWlucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNDUxCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MTQ3OTQ3ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRzIDMgdGVzdCBjYXNlczoKKyAgICAgICAgMSkgU2Vydmlj
ZSB3b3JrZXJzIHdvcmsgcHJvcGVybHkgZm9yIGFwcC1ib3VuZCBkb21haW5zCisgICAgICAgIDIp
IFNlcnZpY2Ugd29ya2VycyBhcmUgZGlzYWJsZWQgZm9yIG5vbi1hcHAgYm91bmQgZG9tYWlucy4g
VGhpcworICAgICAgICBpcyB0ZXN0ZWQgYnkgY2hlY2tpbmcgYSBuZXcgU1BJLCBiZWNhdXNlIG1l
c3NhZ2UgaGFuZGxlcnMgYXJlIGRpc2FibGVkCisgICAgICAgIGZvciBub24tYXBwIGJvdW5kIGRv
bWFpbnMuCisgICAgICAgIDMpIExvYWRpbmcgY29udGVudCBvbiBhIG5vbi1hcHAtYm91bmQgZG9t
YWluIHRoZW4gdXNpbmcgYSBzZXJ2aWNlIHdvcmtlcgorICAgICAgICBmb3IgYW4gYXBwLWJvdW5k
IGRvbWFpbiBiZWhhdmVzIGNvcnJlY3RseS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbToKKyAgICAgICAgKC1bU1dJbkFw
cEJyb3dzZXJQcml2YWN5TWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJl
Y2VpdmVTY3JpcHRNZXNzYWdlOl0pOgorCiAyMDIwLTA0LTE2ICBQaGlsaXBwZSBOb3JtYW5kICA8
cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBHVEsgY2xlYW4gYnVp
bGQgZml4IGFmdGVyIHIyNjAxMzIuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggNjhiZTgx
YjFiOTM1M2NiMDExZTE2OGMxZGM0Y2E4NDg5ZWU4OTY4ZC4uMWRkYTkzYzVkNDhmMGJlZGVkMTQx
MTBlYTdkM2U4YWIwNmE0NzhjZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMjYsNiAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCisjaW1wb3J0ICJTZXJ2aWNlV29ya2VyVENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0TmF2
aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJX
S1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCkBAIC03NDMsNiArNzQ0LDE5OSBAQCBURVNU
KEluQXBwQnJvd3NlclByaXZhY3ksIEdldENvb2tpZUZvclVSTEZhaWxzKQogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CiAKK0BpbnRlcmZhY2UgU1dJbkFwcEJyb3dzZXJQ
cml2YWN5TWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4K
K0BlbmQKKworQGltcGxlbWVudGF0aW9uIFNXSW5BcHBCcm93c2VyUHJpdmFjeU1lc3NhZ2VIYW5k
bGVyCistICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2Ny
aXB0TWVzc2FnZSAqKW1lc3NhZ2UKK3sKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJNZXNzYWdlIGZy
b20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3Vu
ZCBkb21haW4iLCBbbWVzc2FnZSBib2R5XSk7CisgICAgaXNEb25lID0gdHJ1ZTsKK30KK0BlbmQK
Kworc3RhdGljIGNvbnN0IGNoYXIqIG1haW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgKKzxzY3JpcHQ+
CisKK2Z1bmN0aW9uIGxvZyhtc2cpCit7CisgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxl
cnMuc3cucG9zdE1lc3NhZ2UobXNnKTsKK30KKworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRk
RXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgbG9nKCJNZXNz
YWdlIGZyb20gd29ya2VyOiAiICsgZXZlbnQuZGF0YSk7Cit9KTsKKwordHJ5IHsKKworbmF2aWdh
dG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7
CisgICAgd29ya2VyID0gcmVnLmluc3RhbGxpbmcgPyByZWcuaW5zdGFsbGluZyA6IHJlZy5hY3Rp
dmU7CisgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21h
aW4iKTsKK30pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7CisgICAgbG9nKCJSZWdpc3RyYXRpb24g
ZmFpbGVkIHdpdGg6ICIgKyBlcnJvcik7Cit9KTsKK30gY2F0Y2goZSkgeworICAgIGxvZygiRXhj
ZXB0aW9uOiAiICsgZSk7Cit9CisKKzwvc2NyaXB0PgorKVNXUkVTT1VSQ0UiOworCitzdGF0aWMg
Y29uc3QgY2hhciogc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCisKK3NlbGYuYWRkRXZlbnRM
aXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4geworICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVz
c2FnZSgiU2VydmljZVdvcmtlciByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOworfSk7CisKKylT
V1JFU09VUkNFIjsKKworVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFs
bG93c1NlcnZpY2VXb3JrZXJzKQoreworICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5
VGVzdFNldHRpbmdzKCk7CisgICAgaXNEb25lID0gZmFsc2U7CisKKyAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
ICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dJbkFwcEJyb3dzZXJQcml2YWN5
TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNv
bnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5n
ZXQoKSBuYW1lOkAic3ciXTsKKyAgICBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10uX3NlcnZp
Y2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZyA9IFlFUzsKKworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CisKKyAgICBTZXJ2aWNlV29ya2VyVENQU2VydmVyIHNlcnZlcjEoeworICAgICAgICB7ICJ0ZXh0
L2h0bWwiLCBtYWluQnl0ZXMgfSwKKyAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIs
IHNjcmlwdEJ5dGVzfSwKKyAgICB9KTsKKworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93
V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisKKyAgICAvLyBTdGFydCB3aXRoIGEg
Y2xlYW4gc2xhdGUgZGF0YSBzdG9yZQorICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0
ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgeworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICAK
KyAgICAvLyBFeHBlY3QgdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUgc3VjY2Vz
c2Z1bGx5LgorICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlcjEucmVxdWVzdFdpdGhMb2Nh
bGhvc3QoKV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIGlz
RG9uZSA9IGZhbHNlOworCisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9y
ZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6V0tXZWJzaXRl
RGF0YVR5cGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uc10gY29tcGxldGlvbkhhbmRsZXI6XihO
U0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKndlYnNpdGVEYXRhUmVjb3JkcykgeworICAg
ICAgICBFWFBFQ1RfRVEoMXUsIFt3ZWJzaXRlRGF0YVJlY29yZHMgY291bnRdKTsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKHdlYnNpdGVEYXRhUmVjb3Jkc1swXS5kaXNwbGF5TmFtZSwgImxvY2Fs
aG9zdCIpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgLy8g
UmVzZXQgc2VydmljZSB3b3JrZXIgZW50aXRsZW1lbnQuCisgICAgW3dlYlZpZXcgX2NsZWFyU2Vy
dmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGU6Xih2b2lkKSB7CisgICAgICAgIGNsZWFuVXBJ
bkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7
CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIGlz
RG9uZSA9IGZhbHNlOworfQorCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5k
RG9tYWluRG9lc05vdEFsbG93U2VydmljZVdvcmtlcnMpCit7CisgICAgaW5pdGlhbGl6ZUluQXBw
QnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKworICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CisgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW0luQXBwQnJv
d3NlclNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRV
UkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiaW4tYXBw
LWJyb3dzZXIiXTsKKyAgICBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10uX3NlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZyA9IFlFUzsKKworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAg
ICAvLyBMb2FkIGEgbm9uLWFwcCBib3VuZCBkb21haW4uCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1
ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
ImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXN0eWxl
LXNoZWV0cyJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBbd2Vi
VmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICAvLyBFeHBlY3Qg
dGhhdCBzZXJ2aWNlIHdvcmtlcnMgYXJlIGRpc2FibGVkIGZvciB0aGlzIHdlYlZpZXcuCisgICAg
aXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3NlcnZpY2VXb3JrZXJzRW5hYmxlZDpeKEJP
T0wgZW5hYmxlZCkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoZW5hYmxlZCk7CisgICAgICAgIGlz
RG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0Rv
bmUpOworICAgIAorICAgIC8vIFJlc2V0IHNlcnZpY2Ugd29ya2VyIGVudGl0bGVtZW50LgorICAg
IFt3ZWJWaWV3IF9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlOl4odm9pZCkg
eworICAgICAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOworICAg
ICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmaXNEb25lKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKK30KKworVEVTVChJbkFwcEJyb3dzZXJQ
cml2YWN5LCBOb25BcHBCb3VuZERvbWFpblRvQXBwQm91bmRBbGxvd1NlcnZpY2VXb3JrZXJzKQor
eworICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CisgICAg
aXNEb25lID0gZmFsc2U7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gc2NoZW1lSGFuZGxl
ciA9IGFkb3B0TlMoW1tJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7Cisg
ICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgp
IGZvclVSTFNjaGVtZTpAImluLWFwcC1icm93c2VyIl07CisgICAgLy8gRGlzYWJsZSBlbnRpdGxl
bWVudCB3aGljaCBhbGxvd3Mgc2VydmljZSB3b3JrZXJzLgorICAgIFtjb25maWd1cmF0aW9uIHBy
ZWZlcmVuY2VzXS5fc2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nID0g
WUVTOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKKworICAgIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIgc2VydmVyKHsK
KyAgICAgICAgeyAidGV4dC9odG1sIiwgbWFpbkJ5dGVzIH0sCisgICAgICAgIHsgImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRlc30sCisgICAgfSk7CisKKyAgICBbV0tXZWJzaXRl
RGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOworCisgICAg
Ly8gU3RhcnQgd2l0aCBhIGNsZWFuIHNsYXRlIGRhdGEgc3RvcmUKKyAgICBbW1dLV2Vic2l0ZURh
dGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0
YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50
UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICAvLyBM
b2FkIGEgbm9uLWFwcCBib3VuZCBkb21haW4uCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0g
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFw
cC1icm93c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0
cyJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBbd2ViVmlldyBf
dGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICAvLyBFeHBlY3QgdGhhdCBz
ZXJ2aWNlIHdvcmtlcnMgYXJlIGRpc2FibGVkIGZvciB0aGlzIHdlYlZpZXcuCisgICAgaXNEb25l
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3NlcnZpY2VXb3JrZXJzRW5hYmxlZDpeKEJPT0wgZW5h
YmxlZCkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoZW5hYmxlZCk7CisgICAgICAgIGlzRG9uZSA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwor
ICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgLy8gRXhwZWN0IHRoZSBzZXJ2aWNlIHdvcmtlciBs
b2FkIGZvciBhbiBhcHAtYm91bmQgZG9tYWluIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KKyAg
ICAvLyBTaW5jZSBtZXNzYWdlIGhhbmRsZXJzIGFyZSBlbmFibGVkIGFmdGVyIG5hdmlnYXRpbmcg
dG8gYSBub24tYXBwLWJvdW5kIGRvbWFpbiwKKyAgICAvLyB3ZSBjYW5ub3QgZXhwZWN0IGEgbWVz
c2FnZSBmcm9tIHRoZSBzZXJ2aWNlIHdvcmtlciBoZXJlLgorICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5p
c2hOYXZpZ2F0aW9uXTsKKworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3Rv
cmVdIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0OldLV2Vic2l0
ZURhdGFUeXBlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnNdIGNvbXBsZXRpb25IYW5kbGVyOl4o
TlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICp3ZWJzaXRlRGF0YVJlY29yZHMpIHsKKyAg
ICAgICAgRVhQRUNUX0VRKDF1LCBbd2Vic2l0ZURhdGFSZWNvcmRzIGNvdW50XSk7CisgICAgICAg
IEVYUEVDVF9XS19TVFJFUSh3ZWJzaXRlRGF0YVJlY29yZHNbMF0uZGlzcGxheU5hbWUsICIxMjcu
MC4wLjEiKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICAKKyAg
ICAvLyBSZXNldCBzZXJ2aWNlIHdvcmtlciBlbnRpdGxlbWVudC4KKyAgICBbd2ViVmlldyBfY2xl
YXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZTpeKHZvaWQpIHsKKyAgICAgICAgY2xl
YW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICAgICAgaXNEb25lID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cisg
ICAgaXNEb25lID0gZmFsc2U7Cit9CisKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396701</attachid>
            <date>2020-04-16 14:49:42 -0700</date>
            <delta_ts>2020-04-16 15:09:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210451-20200416144941.patch</filename>
            <type>text/plain</type>
            <size>36636</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ5ZTQxMjNjYzU2ZjAzZDgx
Nzk1Nzg3M2ExYjAwYjJlOWMyNWI0YTcuLjQwNmJjMDVjZDAxODIwZTdkYzI4NmIwYTNmYjdjYzAw
ZDcwMDgwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTggQEAKKzIwMjAtMDQtMTYgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIHNlcnZp
Y2Ugd29ya2VycyBmb3IgYXBwLWJvdW5kIGRvbWFpbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQ1MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjE0Nzk0NzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVGZXRj
aFRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
c2NoZWR1bGVSZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c3dDb25uZWN0aW9uKToKKyAgICAgICAgQ2hlY2sgaWYgdGhlIGxvYWQg
aXMgYW4gYXBwLWJvdW5kIGRvbWFpbi4gSWYgc28sIGFsbG93IHNlcnZpY2UKKyAgICAgICAgd29y
a2Vycy4gUmVtb3ZlIHRoZSBBU1NFUlQgZnJvbSBzd0Nvbm5lY3Rpb24oKSBzaW5jZSB0aGUgY2hl
Y2sgZm9yIGlmCisgICAgICAgIHNlcnZpY2Ugd29ya2VycyBhcmUgYWxsb3dlZCBpcyBkb25lIGlu
IGNyZWF0ZUZldGNoVGFzaygpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5l
dHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNp
dGVEYXRhU3RvcmUpOgorICAgICAgICBSZW1vdmUgdGhlIGNoZWNrIGZvciBwYXJlbnRQcm9jZXNz
SGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgYmVmb3JlCisgICAgICAgIGFkZGluZyBhIHNl
cnZpY2VXb3JrZXJTZXNzaW9uLiBUaGlzIGRvZXNuJ3QgZG8gYW55dGhpbmcgZXhjZXB0IGFkZCBh
bgorICAgICAgICBlbnRyeSB0byBhIG1hcCwgYW5kIHNpbXBsaWZpZXMgdGhlIGNhc2Ugd2hlcmUg
d2UgbmVlZCBhIHNlc3Npb24gZm9yCisgICAgICAgIGFwcC1ib3VuZCBpbnN0YW5jZXMgd2hpY2gg
c2hvdWxkIGhhdmUgc2VydmljZSB3b3JrZXJzIGJ1dCBoYXZlIG5vIGVudGl0bGVtZW50LgorCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlv
bik6CisgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBBU1NFUlQgc2luY2UgdGhpcyBjYWxsIGNh
bm5vdCBiZSBtYWRlIHdpdGhvdXQgY2hlY2tpbmcgaWYKKyAgICAgICAgc2VydmljZSB3b3JrZXJz
IGFyZSBlbmFibGVkIG9yIHRoZSBkb21haW4gaXMgYXBwLWJvdW5kLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3Mv
TmV0d29ya1Byb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpw
YXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnRPdmVycmlkZSk6CisgICAgICAgIEluIG9yZGVyIHRvIHRlc3QgdGhpcyB0aG9yb3Vn
aGx5LCBUZXN0V2ViS2l0QVBJIG5lZWRlZCBhIHdheSB0bworICAgICAgICB0ZW1wb3JhcmlseSBk
aXNhYmxlIHRoZSBzZXJ2aWNlIHdvcmtlciBlbnRpdGxlbWVudC4gVGhpcyBmdW5jdGlvbgorICAg
ICAgICBvdmVycmlkZXMgdGhlIGNoZWNrIGZvciB0aGUgZW50aXRsZW1lbnQgaWYgdGhlIGJvb2wg
aXMgc2V0LCBkaXNhYmxpbmcKKyAgICAgICAgdGhlIGVudGl0bGVtZW50LgorCisgICAgICAgICog
U2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9zZXJ2aWNlV29y
a2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3RpbmddKToKKyAgICAgICAgKC1bV0tQcmVmZXJl
bmNlcyBfc2V0U2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAg
ICAgICAgQWRkZWQgdHdvIG5ldyB3ZWIgcHJlZmVyZW5jZXMuIEFsbG93U2VydmljZVdvcmtlcnNG
b3JBcHBCb3VuZERvbWFpbgorICAgICAgICBpcyBuZWVkZWQgdG8gbm90aWZ5IHRoZSBXZWJQYWdl
IHRoYXQgYW4gYXBwLWJvdW5kIG5hdmlnYXRpb24gaGFzCisgICAgICAgIG9jY3VyZWQgYW5kIHNl
cnZpY2Ugd29ya2VycyBjYW4gYmUgdXNlZC4KKyAgICAgICAgU2VydmljZVdvcmtlckVudGl0bGVt
ZW50RGlzYWJsZWRGb3JUZXN0aW5nIGRpc2FibGVzIHRoZSBlbnRpdGxlbWVudAorICAgICAgICBm
b3IgVGVzdFdlYktpdEFQSSBhcyBkZXNjcmliZWQgYWJvdmUuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXR1cFBh
Z2VDb25maWd1cmF0aW9uOl0pOgorICAgICAgICBEaXNhYmxlIHNlcnZpY2Ugd29ya2VycyBoZXJl
IGlmIHRoZSB0ZXN0IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyCisgICAgICAgIGlzIHNldCB0byBk
aXNhYmxlIHRoZSBlbnRpdGxlbWVudCwgc28gd2Ugc3RhcnQgdGhlIHRlc3QgYXMgaWYgd2UKKyAg
ICAgICAgbmV2ZXIgaGFkIGFuIGVudGl0bGVtZW50LgorCisgICAgICAgICgtW1dLV2ViVmlldyBf
c2VydmljZVdvcmtlcnNFbmFibGVkOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NsZWFyU2Vy
dmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgIFNQSXMgZm9yIHRlc3RpbmcuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgU2VuZCBJUEMg
dG8gdGhlIE5ldHdvcmtQcm9jZXNzIHRvIGRpc2FibGUgdGhlIGVudGl0bGVtZW50LgorCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bik6CisgICAgICAgIEVuYWJsZXMvZGlzYWJsZXMgc2VydmljZSB3b3JrZXJzIHJ1bnRpbWUgZW5h
YmxlZCBmZWF0dXJlIGJhc2VkIG9uCisgICAgICAgIG5hdmlnYXRpb24gdG8vYXdheSBmcm9tIGFu
IGFwcC1ib3VuZCBkb21haW4uCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNh
YmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50SW5OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlk
ZSk6CisgICAgICAgIEFzIGRlc2NyaWJlZCBhYm92ZSwgdGhpcyBpcyBhIHdheSBmb3IgVGVzdFdl
YktpdEFQSSB0bworICAgICAgICB0ZW1wb3JhcmlseSBkaXNhYmxlIHRoZSBzZXJ2aWNlIHdvcmtl
ciBlbnRpdGxlbWVudC4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByZWZlcmVu
Y2VzRGlkQ2hhbmdlKToKKyAgICAgICAgV2hlbiBzZXJ2aWNlIHdvcmtlcnMgYXJlIGVuYWJsZWQv
ZGlzYWJsZWQgb24gbmF2aWdhdGlvbiwgdXBkYXRlCisgICAgICAgIFdlYlByZWZlcmVuY2VzIHNv
IHRoZSBXZWJQYWdlIGNhbiBjaGVjayB0aGlzIHZhbHVlLgorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIERpc2FibGUgdGhlIGVu
dGl0bGVtZW50IGJlZm9yZSBjaGVja2luZy91cGRhdGluZyBzZXJ2aWNlIHdvcmtlciBmbGFncwor
ICAgICAgICB0byBtYWtlIHN1cmUgdGhpcyBiZWhhdmlvciB3b3JrcyBwcm9wZXJseSB3aXRoIG5v
IGVudGl0bGVtZW50IGluIHRoZQorICAgICAgICB0ZXN0IGNhc2UuIEFkZHMgYW4gZWxzZSBjbGF1
c2UgYmVjYXVzZSBzZXJ2aWNlIHdvcmtlcnMgY2FuIG5vdyBiZQorICAgICAgICBlbmFibGVkL2Rp
c2FibGVkIG1vcmUgdGhhbiBvbmNlLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpc2Fi
bGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpj
bGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBhcmVu
dFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZSk6
CisgICAgICAgIE92ZXJyaWRlIHRoZSBlbnRpdGxlbWVudCBhcyBkZXNjcmliZWQgYWJvdmUuCisK
IDIwMjAtMDQtMTYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTiAocjI1OTg5OCk6IFdlYktpdC1iYXNlZCBCb29rcyB2aWV3cyBhcmUg
YWxsIGJsYW5rCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGVlMTI1ZTU3ZTAxY2U2
Mjg5Y2VhYzgyM2NjNDc3NTM0NzkyMjc2NWYuLmNmMmJhM2Y1ZDBjOWI1Nzc3YzA3Y2ZkZTZhYTUz
NzJmNmY3YTFjNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00MjgsOCArNDI4
LDExIEBAIGJvb2wgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmlzU2VydmljZVdvcmtl
ckFsbG93ZWQoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFz
az4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUZldGNoVGFzayhOZXR3b3Jr
UmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQog
ewotICAgIGlmICghaXNTZXJ2aWNlV29ya2VyQWxsb3dlZCgpKQorICAgIGF1dG8gYWxsb3dTZXJ2
aWNlV29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluID0gbG9hZGVyLnBhcmFtZXRlcnMoKS5pc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluICYmICpsb2FkZXIucGFyYW1ldGVycygpLmlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4gPT0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllczsKKwor
ICAgIGlmICghaXNTZXJ2aWNlV29ya2VyQWxsb3dlZCgpICYmICFhbGxvd1NlcnZpY2VXb3JrZXJz
Rm9yQXBwQm91bmREb21haW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgcmV0dXJu
IHN3Q29ubmVjdGlvbigpLmNyZWF0ZUZldGNoVGFzayhsb2FkZXIsIHJlcXVlc3QpOwogfQogI2Vu
ZGlmCkBAIC00MzcsNyArNDQwLDkgQEAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVGZXQKIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VMb2FkKE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiB7CiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyQWxsb3dlZCA9IHRoaXMtPmlz
U2VydmljZVdvcmtlckFsbG93ZWQoKTsKKyAgICBhdXRvIGFsbG93U2VydmljZVdvcmtlcnNGb3JB
cHBCb3VuZERvbWFpbiA9IGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4gJiYgKmxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPT0gTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllczsKKyAgICBib29sIGlzU2VydmljZVdvcmtlckFs
bG93ZWQgPSB0aGlzLT5pc1NlcnZpY2VXb3JrZXJBbGxvd2VkKCkgfHwgYWxsb3dTZXJ2aWNlV29y
a2Vyc0ZvckFwcEJvdW5kRG9tYWluOworCiAgICAgaWYgKGlzU2VydmljZVdvcmtlckFsbG93ZWQp
IHsKICAgICAgICAgYXV0byYgc2VydmVyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JT
ZXNzaW9uKG1fc2Vzc2lvbklEKTsKICAgICAgICAgaWYgKCFzZXJ2ZXIuaXNJbXBvcnRDb21wbGV0
ZWQoKSkgewpAQCAtMTA0Myw3ICsxMDQ4LDYgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCkKIAogV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uJiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3dDb25u
ZWN0aW9uKCkKIHsKLSAgICBBU1NFUlQoaXNTZXJ2aWNlV29ya2VyQWxsb3dlZCgpKTsKICAgICBp
ZiAoIW1fc3dDb25uZWN0aW9uKQogICAgICAgICBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24o
KTsKICAgICByZXR1cm4gKm1fc3dDb25uZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA1MmMwMTI5N2IzZDRmNDU1MTY5YTM0
YTQwMzBkMDQ2ZWE5OTY2N2E5Li4yZTU4OTg0YjUzODcyOTIzYThhYzQzODA0OGUwZjQ0ZGZlMjYw
ZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcApAQCAtMzQ1LDEwICszNDUsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXpl
TmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJgogI2VuZGlm
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHBhcmVudFByb2Nlc3NIYXNT
ZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSkgewotICAgICAgICBib29sIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQgPSB0cnVlOwotICAgICAgICBhZGRTZXJ2aWNl
V29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBXVEZNb3ZlKHBhcmFtZXRlcnMu
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSksIHBhcmFtZXRlcnMuc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgfQorICAgIGJv
b2wgc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA9IHRydWU7Cisg
ICAgYWRkU2VydmljZVdvcmtlclNlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSwgc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92
ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBwYXJhbWV0
ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwog
I2VuZGlmCiAKICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5hZGQoc2Vzc2lvbklELCBwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFy
YW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOwpAQCAtNDM4LDggKzQzNiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAocGFyZW50
UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKQotICAgICAgICBhZGRTZXJ2aWNl
V29ya2VyU2Vzc2lvbihzZXNzaW9uSUQsIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclByb2Nlc3NU
ZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9u
KHNlc3Npb25JRCwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVs
YXlFbmFibGVkLCBXVEZNb3ZlKHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSksIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYKIAogICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmFkZChz
ZXNzaW9uSUQsIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxv
Y2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CkBAIC0yNDc1LDcgKzI0NzIsNiBA
QCBXZWJTV09yaWdpblN0b3JlKiBOZXR3b3JrUHJvY2Vzczo6ZXhpc3RpbmdTV09yaWdpblN0b3Jl
Rm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3Rl
clNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7
Ci0gICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSk7
CiAgICAgYXV0byogc3RvcmUgPSBleGlzdGluZ1NXT3JpZ2luU3RvcmVGb3JTZXNzaW9uKGNvbm5l
Y3Rpb24uc2Vzc2lvbklEKCkpOwogICAgIEFTU0VSVChzdG9yZSk7CiAgICAgaWYgKHN0b3JlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDA2
NGJiMWNkY2M4YTI3MmEwMmM0Y2Y3NzNkMDJkYTQ2NTIzZDBlZmIuLmQ3ZDZmOTY5ZjVmZTRiOTE1
M2M4NjMwOGQ1YzE3ZmFiOTk3OGU4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTMwNSw2ICszMDUsOCBAQCBwdWJsaWM6CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudCgpIGNvbnN0OworICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRp
dGxlbWVudCgpOworICAgIHZvaWQgY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlk
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2Vsc2UKICAgICBib29sIHBhcmVudFBy
b2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDIxOWQzOTFiNGZjZWZiMzk2NDI4ZjZiMmI2MTNl
Mzc3M2M4MGMzNTIuLjg1NzZiNDY0NmNhM2ExZjc4Y2JlMzYxMTM0MjZlMWYzZDc0ZjdjOWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtMTcyLDQgKzE3Miw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9j
ZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICAKICAgICBIYXNBcHBCb3VuZFNlc3Npb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24pIEFzeW5jCiAg
ICAgU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBib29sIHZhbHVlKSAtPiAoKSBBc3luYworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICBEaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkKKyAgICBDbGVhclNlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudE92ZXJyaWRlKCkgLT4gKCkgQXN5bmMKKyNlbmRpZgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQpp
bmRleCBlMTkyZjUwM2Y0NDVmZTUxMDA4MTAyZTYzNTk2MGVhMWUxN2NlZjUyLi4xMGFiMzI0NGQx
YzkxMWIyNzQ2OTg5YjdhMmRkZmQ0ZTVlYTc3YTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQpAQCAtNzQsMTIgKzc0
LDI4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCitzdGF0aWMgYm9vbCBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0
bGVtZW50VGVzdGluZ092ZXJyaWRlOworCiBib29sIE5ldHdvcmtQcm9jZXNzOjpwYXJlbnRQcm9j
ZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgY29uc3QKIHsKKyAgICBpZiAoZGlzYWJs
ZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudFRlc3RpbmdPdmVycmlkZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCiAgICAgc3RhdGljIGJvb2wgaGFzRW50aXRsZW1lbnQgPSBXVEY6Omhhc0VudGl0
bGVtZW50KHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSwgImNvbS5h
cHBsZS5kZXZlbG9wZXIuV2ViS2l0LlNlcnZpY2VXb3JrZXJzIik7CiAgICAgcmV0dXJuIGhhc0Vu
dGl0bGVtZW50OwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaXNhYmxlU2VydmljZVdvcmtl
ckVudGl0bGVtZW50KCkKK3sKKyAgICBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVz
dGluZ092ZXJyaWRlID0gdHJ1ZTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVu
dFRlc3RpbmdPdmVycmlkZSA9IGZhbHNlOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IGI2ZWIxMTRhYjky
MTVjYjEwZDk0NTk2Yzg2ZWJhZDcxZWNlZTc3ZmYuLjFhN2FkZDdjYTZiZWYyNmM2MjI5ZTAwZTVi
MmYwYzNjODNlZjUyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZl
cmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFt
bApAQCAtMTI3Myw2ICsxMjczLDE2IEBAIE5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczoK
ICAgICB3ZWJjb3JlQmluZGluZzogUnVudGltZUVuYWJsZWRGZWF0dXJlcwogICAgIGNhdGVnb3J5
OiBkZWJ1ZwogCitBbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBwQm91bmREb21haW46CisgICAgdHlw
ZTogYm9vbAorICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UKKyAgICB3ZWJjb3JlQmluZGluZzogbm9u
ZQorICAgIAorU2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nOgorICAg
IHR5cGU6IGJvb2wKKyAgICBkZWZhdWx0VmFsdWU6IGZhbHNlCisgICAgd2ViY29yZUJpbmRpbmc6
IG5vbmUKKwogIyBGb3IgZXhwZXJpbWVudGFsIGZlYXR1cmVzOgogIyBUaGUgdHlwZSBzaG91bGQg
YmUgYm9vbGVhbi4KICMgWW91IG11c3QgcHJvdmlkZSBhIGh1bWFuUmVhZGFibGVOYW1lIGFuZCBo
dW1hblJlYWRhYmxlRGVzY3JpcHRpb24gZm9yIGFsbCBleHBlcmltZW50YWwgZmVhdHVyZXMuIFRo
ZXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZl
cmVuY2VzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5j
ZXMubW0KaW5kZXggOWFhYmEwZjg3MGFlOTQ5ODgxYmUwN2FmOTUwMzBmZWVlMTQ5ZDI1OS4uZDBh
ZjNiZjhjNmViYjgwZmZkY2QzNTc3ZmZjOTNhYmMyM2JiNWRmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KQEAgLTkyMyw2ICs5
MjMsMTYgQEAgLSAoQk9PTClfaXNJVFBEYXRhYmFzZUVuYWJsZWQKICAgICByZXR1cm4gX3ByZWZl
cmVuY2VzLT5pc0lUUERhdGFiYXNlRW5hYmxlZCgpOwogfQogCistIChCT09MKV9zZXJ2aWNlV29y
a2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3RpbmcKK3sKKyAgICByZXR1cm4gX3ByZWZlcmVu
Y2VzLT5zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3RpbmcoKTsKK30KKwor
LSAodm9pZClfc2V0U2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nOihC
T09MKWRpc2FibGUKK3sKKyAgICBfcHJlZmVyZW5jZXMtPnNldFNlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudERpc2FibGVkRm9yVGVzdGluZyhkaXNhYmxlKTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykK
IC0gKHZvaWQpX3NldEphdmFFbmFibGVkRm9yTG9jYWxGaWxlczooQk9PTCllbmFibGVkCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNl
c1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVu
Y2VzUHJpdmF0ZS5oCmluZGV4IDdjZDA1MTg3Zjk0MGJiNjdmOWFiMGMyMWY4OWE3OTkwMDdkNGE1
YzQuLjY3NTY3ODkzZjQ0YjZiZjhlMDk2OTBmNTUxNjE2MmQ0MzNiOTE1MGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJp
dmF0ZS5oCkBAIC0xNjUsNiArMTY1LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dL
RWRpdGFibGVMaW5rQmVoYXZpb3IpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkOikgQk9PTCBfYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKFdLX0lPU19U
QkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFJlcXVlc3RBbmltYXRpb25G
cmFtZUVuYWJsZWQ6KSBCT09MIF9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX2lzSVRQRGF0YWJhc2VFbmFibGVkIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgc2V0dGVyPV9zZXRTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZv
clRlc3Rpbmc6KSBCT09MIF9zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3Rp
bmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
IAogI2lmICFUQVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9z
ZXRXZWJHTEVuYWJsZWQ6KSBCT09MIF93ZWJHTEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xMy40KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQppbmRleCA0ODNjYTZhZjJkOTA1NTFlOWE1YjUyNGI3ODFhYzFjOTE5ZThiMzBlLi5i
N2IzMjhmODBlMmJlM2NiNDQ3MTg0OWE5NDMzMjMyM2M3MDZlOWM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTEyMSw2ICsxMjEsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1BsYXRmb3JtU2NyZWVuLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
ZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KQEAgLTUyNCw4ICs1
MjUsOSBAQCAtICh2b2lkKV9zZXR1cFBhZ2VDb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29u
ZmlndXJhdGlvbj4mKXBhZ2VDb25maWd1cmF0aW9uCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoIVdURjo6cHJvY2Vz
c0hhc0VudGl0bGVtZW50KCJjb20uYXBwbGUuZGV2ZWxvcGVyLldlYktpdC5TZXJ2aWNlV29ya2Vy
cyIpKQorICAgIGlmICghV1RGOjpwcm9jZXNzSGFzRW50aXRsZW1lbnQoImNvbS5hcHBsZS5kZXZl
bG9wZXIuV2ViS2l0LlNlcnZpY2VXb3JrZXJzIikgfHwgW19jb25maWd1cmF0aW9uIHByZWZlcmVu
Y2VzXS5fc2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nKQogICAgICAg
ICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0U2VydmljZVdvcmtlcnNFbmFi
bGVkKGZhbHNlKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0U2Vy
dmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nKCEhW19jb25maWd1cmF0aW9u
IHByZWZlcmVuY2VzXS5fc2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5n
KTsKICNlbmRpZgogCiAgICAgaWYgKCFsaW5rZWRPbk9yQWZ0ZXIoV2ViS2l0OjpTREtWZXJzaW9u
OjpGaXJzdFdoZXJlU2l0ZVNwZWNpZmljUXVpcmtzQXJlRW5hYmxlZEJ5RGVmYXVsdCkpCkBAIC0y
NzM4LDYgKzI3NDAsMTkgQEAgLSAodm9pZClfaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjoo
dm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogICAgIH0pOwogfQogCistICh2b2lkKV9z
ZXJ2aWNlV29ya2Vyc0VuYWJsZWQ6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sK
KyAgICBhdXRvIGVuYWJsZWQgPSBbX2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLT5fcHJlZmVy
ZW5jZXMuZ2V0KCktPnNlcnZpY2VXb3JrZXJzRW5hYmxlZCgpIHx8IFdlYkNvcmU6OlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2VydmljZVdvcmtlckVuYWJsZWQoKTsK
KyAgICBjb21wbGV0aW9uSGFuZGxlcihlbmFibGVkKTsKK30KKworLSAodm9pZClfY2xlYXJTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZToodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhh
bmRsZXIKK3sKKyAgICBfcGFnZS0+Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlk
ZShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7Cit9CisKIC0gKGlkIDxfV0tJ
bnB1dERlbGVnYXRlPilfaW5wdXREZWxlZ2F0ZQogewogICAgIHJldHVybiBfaW5wdXREZWxlZ2F0
ZS5nZXRBdXRvcmVsZWFzZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGNkNjIzNDNlMmQ0YzY5ZGQ3YzRjZTRm
NWY3NmU1YWViYmZlYmU2N2YuLjg0ZDg3ZWY5MmU4MGJlNDdkYjhhYTYxNjIyODIyM2ZkYzIzNTFm
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaApAQCAtMzQ3LDYgKzM0Nyw4IEBAIGZvciB0aGlzIHByb3BlcnR5LgogCiAt
ICh2b2lkKV9ncmFudEFjY2Vzc1RvUHJlZmVyZW5jZVNlcnZpY2UgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAodm9pZClfc2VydmljZVdv
cmtlcnNFbmFibGVkOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9jbGVh
clNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlOih2b2lkICheKSh2b2lkKSljb21wbGV0
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwogQGVuZAogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYzdmMTY4NjhmMGMzOWE0NDAwOTNmYTg2ZTA3Yzg2
ZmM4YjYzY2I5Ni4uMjViMjMwMWE2OGFjNGY3NmZhOThlMDRhMTZiYWE5MDY5YThhYTlkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNzksNiArMTc5LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Xcml0aW5nRGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx3dGYv
Q2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KQEAg
LTUyMCw2ICs1MjEsOSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBw
YWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldERpc2FibGVTY3Jl
ZW5TaXplT3ZlcnJpZGUobV9wcmVmZXJlbmNlcy0+ZGlzYWJsZVNjcmVlblNpemVPdmVycmlkZSgp
KTsKKyAgICAKKyAgICBpZiAobV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXJ2aWNl
V29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3RpbmcoKSkKKyAgICAgICAgZGlzYWJsZVNl
cnZpY2VXb3JrZXJFbnRpdGxlbWVudEluTmV0d29ya1Byb2Nlc3MoKTsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCkBAIC0zMTM4LDEwICszMTQyLDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGJvb2wgaXNNYWluRnJhbWUsIGNvbnN0
IFVSTCYKICAgICAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+c2V0V2ViVmlld0NhdGVnb3J5KFdl
YlZpZXdDYXRlZ29yeTo6SW5BcHBCcm93c2VyKTsKICAgICAgICAgICAgIG1faXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObzsKICAgICAg
ICAgICAgIG1faGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiA9IE5hdmlnYXRlZEF3
YXlGcm9tQXBwQm91bmREb21haW46OlllczsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisg
ICAgICAgICAgICBtX3ByZWZlcmVuY2VzLT5zZXRTZXJ2aWNlV29ya2Vyc0VuYWJsZWQoZmFsc2Up
OworI2VuZGlmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbV9jb25m
aWd1cmF0aW9uLT5zZXRXZWJWaWV3Q2F0ZWdvcnkoV2ViVmlld0NhdGVnb3J5OjpBcHBCb3VuZERv
bWFpbik7CiAgICAgICAgIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluOjpZZXM7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAg
ICAgICBtX3ByZWZlcmVuY2VzLT5zZXRTZXJ2aWNlV29ya2Vyc0VuYWJsZWQodHJ1ZSk7CisjZW5k
aWYKICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpc01haW5GcmFtZSk7CkBAIC0zMTU1
LDYgKzMxNjUsMzYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW5UZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm8KICAgICBjb21wbGV0aW9uSGFu
ZGxlcihtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gJiYgKCptX2lzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4gPT0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllcykpOwogfQog
Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudEluTmV0
d29ya1Byb2Nlc3MoKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKGF1dG8q
IG5ldHdvcmtQcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLm5ldHdvcmtQcm9jZXNz
KCkpIHsKKyAgICAgICAgaWYgKCFuZXR3b3JrUHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpEaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KCksIDApOwor
ICAgIH0KKyNlbmRpZgorfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJTZXJ2aWNlV29ya2Vy
RW50aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBhdXRvIGNhbGxiYWNr
QWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkNs
ZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoKSwgW2NhbGxiYWNrQWdncmVnYXRv
ciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgaWYgKGF1dG8qIG5l
dHdvcmtQcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLm5ldHdvcmtQcm9jZXNzKCkp
IHsKKyAgICAgICAgaWYgKCFuZXR3b3JrUHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkgeworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6Q2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZSgp
LCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9
KTsKKyAgICB9CisgICAgbV9wcmVmZXJlbmNlcy0+c2V0U2VydmljZVdvcmtlckVudGl0bGVtZW50
RGlzYWJsZWRGb3JUZXN0aW5nKGZhbHNlKTsKKyAgICBtX3ByZWZlcmVuY2VzLT5zZXRTZXJ2aWNl
V29ya2Vyc0VuYWJsZWQodHJ1ZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjb21wbGV0aW9u
SGFuZGxlcik7CisjZW5kaWYKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdh
dGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdh
dGlvbiogbmF2aWdhdGlvbiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgUmVmUHRyPEFQSTo6V2Vi
c2l0ZVBvbGljaWVzPiYmIHBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2Vu
ZGVyKQogewogICAgIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiB3ZWJzaXRlRGF0YVN0b3JlID0gbV93
ZWJzaXRlRGF0YVN0b3JlLmNvcHlSZWYoKTsKQEAgLTQyMjgsNiArNDI2OCwxMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogCiAgICAgcGFnZUNsaWVudCgpLnBy
ZWZlcmVuY2VzRGlkQ2hhbmdlKCk7CiAKKyAgICBpZiAobV9pc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluICYmICgqbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID09IE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOjpZZXMpKQorICAgICAgICBtX3ByZWZlcmVuY2VzLT5zZXRBbGxvd1Nl
cnZpY2VXb3JrZXJzRm9yQXBwQm91bmREb21haW4odHJ1ZSk7CisgICAgZWxzZQorICAgICAgICBt
X3ByZWZlcmVuY2VzLT5zZXRBbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBwQm91bmREb21haW4oZmFs
c2UpOworCiAgICAgLy8gRklYTUU6IEl0IHByb2JhYmx5IG1ha2VzIG1vcmUgc2Vuc2UgdG8gc2Vu
ZCBpbmRpdmlkdWFsIHByZWZlcmVuY2UgY2hhbmdlcy4KICAgICAvLyBIb3dldmVyLCBXZWJLaXRU
ZXN0UnVubmVyIGRlcGVuZHMgb24gZ2V0dGluZyBhIHByZWZlcmVuY2UgY2hhbmdlIG5vdGlmaWNh
dGlvbgogICAgIC8vIGV2ZW4gaWYgbm90aGluZyBjaGFuZ2VkIGluIFVJIHByb2Nlc3MsIHNvIHRo
YXQgb3ZlcnJpZGVzIGdldCByZW1vdmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCA5NThmYzNlOTc4MGFlMzBjYzMwZjU5MjhjOWMwMjViYjFlZGFkNGIzLi5kMWFj
N2RkODZiMzA1NzYzYTg4ODI0MjI4NTA5YTMyN2RhYWFkOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTcyNyw2ICsxNzI3LDkgQEAgcHVibGljOgogICAgIHZv
aWQgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpblRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7IHJldHVybiBtX2lzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW47IH0KIAorICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJF
bnRpdGxlbWVudEluTmV0d29ya1Byb2Nlc3MoKTsKKyAgICB2b2lkIGNsZWFyU2VydmljZVdvcmtl
ckVudGl0bGVtZW50T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICAg
ICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBncmFudEFjY2Vzc1RvQ3VycmVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDhlYTdkNDU1
YjRmMWE3YTc0NTY1MTRiOGRiN2UxN2UyZWQ5NDgwMzEuLjlkY2UyMGRhMGZkMGE5OTk1ODQ0ZWJk
M2QxZjFjMjNlM2U3MzgyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0zNjcyLDExICszNjcyLDE2IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRl
UHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9y
S2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZv
clRlc3RpbmdLZXkoKSkpCisgICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQo
KTsKKwogICAgIGlmIChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6
OnNlcnZpY2VXb3JrZXJzRW5hYmxlZEtleSgpKSkgewotICAgICAgICBBU1NFUlQocGFyZW50UHJv
Y2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKTsKLSAgICAgICAgaWYgKCFwYXJlbnRQ
cm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkpCisgICAgICAgIGF1dG8gYWxsb3dT
ZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluID0gc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5OjphbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBwQm91bmREb21haW5L
ZXkoKSk7CisgICAgICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0
bGVtZW50KCkgfHwgYWxsb3dTZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluKTsKKyAgICAg
ICAgaWYgKCFwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgJiYgIWFs
bG93U2VydmljZVdvcmtlcnNGb3JBcHBCb3VuZERvbWFpbikKICAgICAgICAgICAgIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2VydmljZVdvcmtlckVuYWJsZWQo
ZmFsc2UpOwotICAgIH0KKyAgICB9IGVsc2UgaWYgKCFwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdv
cmtlckVudGl0bGVtZW50KCkpCisgICAgICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkuc2V0U2VydmljZVdvcmtlckVuYWJsZWQoZmFsc2UpOwogI2VuZGlmCiAKICAg
ICBzZXR0aW5ncy5zZXRMYXlvdXRWaWV3cG9ydEhlaWdodEV4cGFuc2lvbkZhY3RvcihzdG9yZS5n
ZXREb3VibGVWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6bGF5b3V0Vmlld3BvcnRIZWln
aHRFeHBhbnNpb25GYWN0b3JLZXkoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCmluZGV4IGQ3ZDdiODk5MWFmODE3NzE3NGJkYjFiZTc5YjU2MTMxMzlhM2Q4
ODQuLjgwMTE0NGNhZTgxNWQ4ZTkzNGUxMzBjMzAxMjQzNmM5NTYzYmI2ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1MTgsOCArMTUxOCwxMiBA
QCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIHBhcmVudFBy
b2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSBjb25zdDsKKyAgICB2b2lkIGRpc2Fi
bGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKTsKKyAgICB2b2lkIGNsZWFyU2VydmljZVdvcmtl
ckVudGl0bGVtZW50T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbHNl
CiAgICAgYm9vbCBwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudCgpIHsgfQorICAgIHZvaWQgY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlk
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoKTsgfQogI2VuZGlmCiAKICAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGlj
eURlY2lzaW9uJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYjczZTRkYzAyMTM1OGIxNmFmMjVhNDBlZmY1MzU2
YmE5N2UyZDc1ZS4uMjEzNTU5ZjNmMmQxZmY5ZWMzNDE1ZDQ5OWUyZWE5ZjUwYTFmMzdjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCkBAIC0xMjEsNiArMTIxLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBT
ZXRTaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24oYm9vbCBzaG91bGRS
ZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24pCiAgICAgSW5zZXJ0VGV4dFBsYWNl
aG9sZGVyKFdlYkNvcmU6OkludFNpemUgc2l6ZSkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1l
bnRDb250ZXh0PiBwbGFjZWhvbGRlcikgQXN5bmMKICAgICBSZW1vdmVUZXh0UGxhY2Vob2xkZXIo
c3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IHBsYWNlaG9sZGVyKSAtPiAoKSBBc3luYwor
ICAgIENsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoKSAtPiAoKSBBc3luYwog
I2VuZGlmCiAKICAgICBTZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGJvb2wgY29udHJvbGxlZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KaW5kZXggYjJiOWU3OGQ5YTVmZjQ2YTIzZTYwMzhlNDA5Y2FmMDNiZTBkMzVhZi4uY2UwYTZm
ZDBlNzliNThkMmQ2MGE1YzJlMGZlM2IxMGIwNzU5YWFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQ4NywxMiArNDg3
LDI4IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRF
dmVudCYgZXZlbnQpCiAgICAgcmV0dXJuIHNlbmRSZXN1bHQgJiYgZXZlbnRXYXNIYW5kbGVkOwog
fQogCitzdGF0aWMgYm9vbCBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVzdGluZ092
ZXJyaWRlOworCiBib29sIFdlYlBhZ2U6OnBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnQoKSBjb25zdAogeworICAgIGlmIChkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVt
ZW50VGVzdGluZ092ZXJyaWRlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBzdGF0aWMg
Ym9vbCBoYXNFbnRpdGxlbWVudCA9IFdURjo6aGFzRW50aXRsZW1lbnQoV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlvbigpLCAiY29t
LmFwcGxlLmRldmVsb3Blci5XZWJLaXQuU2VydmljZVdvcmtlcnMiKTsKICAgICByZXR1cm4gaGFz
RW50aXRsZW1lbnQ7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6ZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRp
dGxlbWVudCgpCit7CisgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudFRlc3RpbmdP
dmVycmlkZSA9IHRydWU7Cit9CisKK3ZvaWQgV2ViUGFnZTo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudFRlc3RpbmdPdmVy
cmlkZSA9IGZhbHNlOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKIHZvaWQgV2ViUGFn
ZTo6c2VuZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdpbih1aW50NjRfdCwgY29uc3QgU3RyaW5nJikK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDllYmJhNmU2Mzc1MDI3YjBiODZiNGU0NmNjN2FiNGQyMTY4
Yzc3NjYuLjVjZjk3N2RkMjliZWMxMmI5OTdjMmMyYTgxMGQzODRlMGFmYjZmMWUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBA
QAorMjAyMC0wNC0xNiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4K
KworICAgICAgICBFbmFibGUgc2VydmljZSB3b3JrZXJzIGZvciBhcHAtYm91bmQgZG9tYWlucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNDUxCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTQ3OTQ3ND4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIDMgdGVzdCBjYXNlczoKKyAgICAgICAgMSkg
U2VydmljZSB3b3JrZXJzIHdvcmsgcHJvcGVybHkgZm9yIGFwcC1ib3VuZCBkb21haW5zCisgICAg
ICAgIDIpIFNlcnZpY2Ugd29ya2VycyBhcmUgZGlzYWJsZWQgZm9yIG5vbi1hcHAgYm91bmQgZG9t
YWlucy4gVGhpcworICAgICAgICBpcyB0ZXN0ZWQgYnkgY2hlY2tpbmcgYSBuZXcgU1BJLCBiZWNh
dXNlIG1lc3NhZ2UgaGFuZGxlcnMgYXJlIGRpc2FibGVkCisgICAgICAgIGZvciBub24tYXBwIGJv
dW5kIGRvbWFpbnMuCisgICAgICAgIDMpIExvYWRpbmcgY29udGVudCBvbiBhIG5vbi1hcHAtYm91
bmQgZG9tYWluIHRoZW4gdXNpbmcgYSBzZXJ2aWNlIHdvcmtlcgorICAgICAgICBmb3IgYW4gYXBw
LWJvdW5kIGRvbWFpbiBiZWhhdmVzIGNvcnJlY3RseS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbToKKyAgICAgICAgKC1b
U1dJbkFwcEJyb3dzZXJQcml2YWN5TWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVy
OmRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOl0pOgorCiAyMDIwLTA0LTE2ICBQaGlsaXBwZSBOb3Jt
YW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBHVEsgY2xl
YW4gYnVpbGQgZml4IGFmdGVyIHIyNjAxMzIuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXgg
NjhiZTgxYjFiOTM1M2NiMDExZTE2OGMxZGM0Y2E4NDg5ZWU4OTY4ZC4uMWRkYTkzYzVkNDhmMGJl
ZGVkMTQxMTBlYTdkM2U4YWIwNmE0NzhjZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAt
MjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAKICNpbXBvcnQgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCisjaW1wb3J0ICJTZXJ2aWNlV29ya2VyVENQU2VydmVyLmgiCiAjaW1wb3J0ICJU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1w
b3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCkBAIC03NDMsNiArNzQ0LDE5OSBA
QCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEdldENvb2tpZUZvclVSTEZhaWxzKQogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CiAKK0BpbnRlcmZhY2UgU1dJbkFwcEJy
b3dzZXJQcml2YWN5TWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFu
ZGxlcj4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFNXSW5BcHBCcm93c2VyUHJpdmFjeU1lc3Nh
Z2VIYW5kbGVyCistICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENv
bnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6
KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UKK3sKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJNZXNz
YWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFw
cC1ib3VuZCBkb21haW4iLCBbbWVzc2FnZSBib2R5XSk7CisgICAgaXNEb25lID0gdHJ1ZTsKK30K
K0BlbmQKKworc3RhdGljIGNvbnN0IGNoYXIqIG1haW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgKKzxz
Y3JpcHQ+CisKK2Z1bmN0aW9uIGxvZyhtc2cpCit7CisgICAgd2luZG93LndlYmtpdC5tZXNzYWdl
SGFuZGxlcnMuc3cucG9zdE1lc3NhZ2UobXNnKTsKK30KKworbmF2aWdhdG9yLnNlcnZpY2VXb3Jr
ZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgbG9n
KCJNZXNzYWdlIGZyb20gd29ya2VyOiAiICsgZXZlbnQuZGF0YSk7Cit9KTsKKwordHJ5IHsKKwor
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24o
cmVnKSB7CisgICAgd29ya2VyID0gcmVnLmluc3RhbGxpbmcgPyByZWcuaW5zdGFsbGluZyA6IHJl
Zy5hY3RpdmU7CisgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJIZWxsbyBmcm9tIGFuIGFwcC1ib3Vu
ZCBkb21haW4iKTsKK30pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7CisgICAgbG9nKCJSZWdpc3Ry
YXRpb24gZmFpbGVkIHdpdGg6ICIgKyBlcnJvcik7Cit9KTsKK30gY2F0Y2goZSkgeworICAgIGxv
ZygiRXhjZXB0aW9uOiAiICsgZSk7Cit9CisKKzwvc2NyaXB0PgorKVNXUkVTT1VSQ0UiOworCitz
dGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCisKK3NlbGYuYWRk
RXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4geworICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgiU2VydmljZVdvcmtlciByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOworfSk7
CisKKylTV1JFU09VUkNFIjsKKworVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERv
bWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQoreworICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQ
cml2YWN5VGVzdFNldHRpbmdzKCk7CisgICAgaXNEb25lID0gZmFsc2U7CisKKyAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dJbkFwcEJyb3dzZXJQ
cml2YWN5TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24g
dXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFu
ZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKKyAgICBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10u
X3NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZyA9IFlFUzsKKworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CisKKyAgICBTZXJ2aWNlV29ya2VyVENQU2VydmVyIHNlcnZlcjEoeworICAgICAgICB7
ICJ0ZXh0L2h0bWwiLCBtYWluQnl0ZXMgfSwKKyAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNj
cmlwdCIsIHNjcmlwdEJ5dGVzfSwKKyAgICB9KTsKKworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUg
X2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisKKyAgICAvLyBTdGFydCB3
aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQorICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRl
ZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxs
V2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21w
bGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsK
KyAgICAKKyAgICAvLyBFeHBlY3QgdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUg
c3VjY2Vzc2Z1bGx5LgorICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlcjEucmVxdWVzdFdp
dGhMb2NhbGhvc3QoKV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwor
ICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERh
dGFTdG9yZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6V0tX
ZWJzaXRlRGF0YVR5cGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uc10gY29tcGxldGlvbkhhbmRs
ZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKndlYnNpdGVEYXRhUmVjb3Jkcykg
eworICAgICAgICBFWFBFQ1RfRVEoMXUsIFt3ZWJzaXRlRGF0YVJlY29yZHMgY291bnRdKTsKKyAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKHdlYnNpdGVEYXRhUmVjb3Jkc1swXS5kaXNwbGF5TmFtZSwg
ImxvY2FsaG9zdCIpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIGlzRG9uZSA9IGZhbHNlOworCisg
ICAgLy8gUmVzZXQgc2VydmljZSB3b3JrZXIgZW50aXRsZW1lbnQuCisgICAgW3dlYlZpZXcgX2Ns
ZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGU6Xih2b2lkKSB7CisgICAgICAgIGNs
ZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CisgICAgICAgIGlzRG9uZSA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwor
ICAgIGlzRG9uZSA9IGZhbHNlOworfQorCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFw
cEJvdW5kRG9tYWluRG9lc05vdEFsbG93U2VydmljZVdvcmtlcnMpCit7CisgICAgaW5pdGlhbGl6
ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsK
KworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW0lu
QXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlv
biBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAi
aW4tYXBwLWJyb3dzZXIiXTsKKyAgICBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10uX3NlcnZp
Y2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZyA9IFlFUzsKKworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CisKKyAgICAvLyBMb2FkIGEgbm9uLWFwcCBib3VuZCBkb21haW4uCisgICAgTlNVUkxSZXF1ZXN0
ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2Vy
LXN0eWxlLXNoZWV0cyJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAg
ICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICAvLyBF
eHBlY3QgdGhhdCBzZXJ2aWNlIHdvcmtlcnMgYXJlIGRpc2FibGVkIGZvciB0aGlzIHdlYlZpZXcu
CisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3NlcnZpY2VXb3JrZXJzRW5hYmxl
ZDpeKEJPT0wgZW5hYmxlZCkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoZW5hYmxlZCk7CisgICAg
ICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOworICAgIAorICAgIC8vIFJlc2V0IHNlcnZpY2Ugd29ya2VyIGVudGl0bGVtZW50
LgorICAgIFt3ZWJWaWV3IF9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlOl4o
dm9pZCkgeworICAgICAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygp
OworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKK30KKworVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpblRvQXBwQm91bmRBbGxvd1NlcnZpY2VXb3Jr
ZXJzKQoreworICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7
CisgICAgaXNEb25lID0gZmFsc2U7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gc2NoZW1l
SGFuZGxlciA9IGFkb3B0TlMoW1tJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0
XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVy
LmdldCgpIGZvclVSTFNjaGVtZTpAImluLWFwcC1icm93c2VyIl07CisgICAgLy8gRGlzYWJsZSBl
bnRpdGxlbWVudCB3aGljaCBhbGxvd3Mgc2VydmljZSB3b3JrZXJzLgorICAgIFtjb25maWd1cmF0
aW9uIHByZWZlcmVuY2VzXS5fc2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0
aW5nID0gWUVTOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIgc2Vy
dmVyKHsKKyAgICAgICAgeyAidGV4dC9odG1sIiwgbWFpbkJ5dGVzIH0sCisgICAgICAgIHsgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRlc30sCisgICAgfSk7CisKKyAgICBbV0tX
ZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwor
CisgICAgLy8gU3RhcnQgd2l0aCBhIGNsZWFuIHNsYXRlIGRhdGEgc3RvcmUKKyAgICBbW1dLV2Vi
c2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJz
aXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBk
aXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgaXNEb25lID0gdHJ1
ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAg
ICAvLyBMb2FkIGEgbm9uLWFwcCBib3VuZCBkb21haW4uCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1
ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
ImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXN0eWxl
LXNoZWV0cyJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBbd2Vi
VmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICAvLyBFeHBlY3Qg
dGhhdCBzZXJ2aWNlIHdvcmtlcnMgYXJlIGRpc2FibGVkIGZvciB0aGlzIHdlYlZpZXcuCisgICAg
aXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3NlcnZpY2VXb3JrZXJzRW5hYmxlZDpeKEJP
T0wgZW5hYmxlZCkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoZW5hYmxlZCk7CisgICAgICAgIGlz
RG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0Rv
bmUpOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgLy8gRXhwZWN0IHRoZSBzZXJ2aWNlIHdv
cmtlciBsb2FkIGZvciBhbiBhcHAtYm91bmQgZG9tYWluIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxs
eS4KKyAgICAvLyBTaW5jZSBtZXNzYWdlIGhhbmRsZXJzIGFyZSBlbmFibGVkIGFmdGVyIG5hdmln
YXRpbmcgdG8gYSBub24tYXBwLWJvdW5kIGRvbWFpbiwKKyAgICAvLyB3ZSBjYW5ub3QgZXhwZWN0
IGEgbWVzc2FnZSBmcm9tIHRoZSBzZXJ2aWNlIHdvcmtlciBoZXJlLgorICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JE
aWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0OldL
V2Vic2l0ZURhdGFUeXBlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnNdIGNvbXBsZXRpb25IYW5k
bGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICp3ZWJzaXRlRGF0YVJlY29yZHMp
IHsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBbd2Vic2l0ZURhdGFSZWNvcmRzIGNvdW50XSk7Cisg
ICAgICAgIEVYUEVDVF9XS19TVFJFUSh3ZWJzaXRlRGF0YVJlY29yZHNbMF0uZGlzcGxheU5hbWUs
ICIxMjcuMC4wLjEiKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAg
ICAKKyAgICAvLyBSZXNldCBzZXJ2aWNlIHdvcmtlciBlbnRpdGxlbWVudC4KKyAgICBbd2ViVmll
dyBfY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZTpeKHZvaWQpIHsKKyAgICAg
ICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICAgICAgaXNE
b25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CisgICAgaXNEb25lID0gZmFsc2U7Cit9CisKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396704</attachid>
            <date>2020-04-16 15:09:09 -0700</date>
            <delta_ts>2020-04-17 13:08:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210451-20200416150908.patch</filename>
            <type>text/plain</type>
            <size>36663</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM1ZWExZWFjOGI3ZjM3MDJh
NDNlY2VjMGJkZGE1M2JiNzFmMGJhODcuLmEwOGRjYTE0MjRkMzFiM2UwYTgwYzdiMzZkMjM2MzZj
ZDNmM2E4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTggQEAKKzIwMjAtMDQtMTYgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIHNlcnZp
Y2Ugd29ya2VycyBmb3IgYXBwLWJvdW5kIGRvbWFpbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQ1MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjE0Nzk0NzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVGZXRj
aFRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
c2NoZWR1bGVSZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c3dDb25uZWN0aW9uKToKKyAgICAgICAgQ2hlY2sgaWYgdGhlIGxvYWQg
aXMgYW4gYXBwLWJvdW5kIGRvbWFpbi4gSWYgc28sIGFsbG93IHNlcnZpY2UKKyAgICAgICAgd29y
a2Vycy4gUmVtb3ZlIHRoZSBBU1NFUlQgZnJvbSBzd0Nvbm5lY3Rpb24oKSBzaW5jZSB0aGUgY2hl
Y2sgZm9yIGlmCisgICAgICAgIHNlcnZpY2Ugd29ya2VycyBhcmUgYWxsb3dlZCBpcyBkb25lIGlu
IGNyZWF0ZUZldGNoVGFzaygpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5l
dHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNp
dGVEYXRhU3RvcmUpOgorICAgICAgICBSZW1vdmUgdGhlIGNoZWNrIGZvciBwYXJlbnRQcm9jZXNz
SGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgYmVmb3JlCisgICAgICAgIGFkZGluZyBhIHNl
cnZpY2VXb3JrZXJTZXNzaW9uLiBUaGlzIGRvZXNuJ3QgZG8gYW55dGhpbmcgZXhjZXB0IGFkZCBh
bgorICAgICAgICBlbnRyeSB0byBhIG1hcCwgYW5kIHNpbXBsaWZpZXMgdGhlIGNhc2Ugd2hlcmUg
d2UgbmVlZCBhIHNlc3Npb24gZm9yCisgICAgICAgIGFwcC1ib3VuZCBpbnN0YW5jZXMgd2hpY2gg
c2hvdWxkIGhhdmUgc2VydmljZSB3b3JrZXJzIGJ1dCBoYXZlIG5vIGVudGl0bGVtZW50LgorCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlv
bik6CisgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBBU1NFUlQgc2luY2UgdGhpcyBjYWxsIGNh
bm5vdCBiZSBtYWRlIHdpdGhvdXQgY2hlY2tpbmcgaWYKKyAgICAgICAgc2VydmljZSB3b3JrZXJz
IGFyZSBlbmFibGVkIG9yIHRoZSBkb21haW4gaXMgYXBwLWJvdW5kLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3Mv
TmV0d29ya1Byb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpw
YXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnRPdmVycmlkZSk6CisgICAgICAgIEluIG9yZGVyIHRvIHRlc3QgdGhpcyB0aG9yb3Vn
aGx5LCBUZXN0V2ViS2l0QVBJIG5lZWRlZCBhIHdheSB0bworICAgICAgICB0ZW1wb3JhcmlseSBk
aXNhYmxlIHRoZSBzZXJ2aWNlIHdvcmtlciBlbnRpdGxlbWVudC4gVGhpcyBmdW5jdGlvbgorICAg
ICAgICBvdmVycmlkZXMgdGhlIGNoZWNrIGZvciB0aGUgZW50aXRsZW1lbnQgaWYgdGhlIGJvb2wg
aXMgc2V0LCBkaXNhYmxpbmcKKyAgICAgICAgdGhlIGVudGl0bGVtZW50LgorCisgICAgICAgICog
U2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9zZXJ2aWNlV29y
a2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3RpbmddKToKKyAgICAgICAgKC1bV0tQcmVmZXJl
bmNlcyBfc2V0U2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAg
ICAgICAgQWRkZWQgdHdvIG5ldyB3ZWIgcHJlZmVyZW5jZXMuIEFsbG93U2VydmljZVdvcmtlcnNG
b3JBcHBCb3VuZERvbWFpbgorICAgICAgICBpcyBuZWVkZWQgdG8gbm90aWZ5IHRoZSBXZWJQYWdl
IHRoYXQgYW4gYXBwLWJvdW5kIG5hdmlnYXRpb24gaGFzCisgICAgICAgIG9jY3VyZWQgYW5kIHNl
cnZpY2Ugd29ya2VycyBjYW4gYmUgdXNlZC4KKyAgICAgICAgU2VydmljZVdvcmtlckVudGl0bGVt
ZW50RGlzYWJsZWRGb3JUZXN0aW5nIGRpc2FibGVzIHRoZSBlbnRpdGxlbWVudAorICAgICAgICBm
b3IgVGVzdFdlYktpdEFQSSBhcyBkZXNjcmliZWQgYWJvdmUuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXR1cFBh
Z2VDb25maWd1cmF0aW9uOl0pOgorICAgICAgICBEaXNhYmxlIHNlcnZpY2Ugd29ya2VycyBoZXJl
IGlmIHRoZSB0ZXN0IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyCisgICAgICAgIGlzIHNldCB0byBk
aXNhYmxlIHRoZSBlbnRpdGxlbWVudCwgc28gd2Ugc3RhcnQgdGhlIHRlc3QgYXMgaWYgd2UKKyAg
ICAgICAgbmV2ZXIgaGFkIGFuIGVudGl0bGVtZW50LgorCisgICAgICAgICgtW1dLV2ViVmlldyBf
c2VydmljZVdvcmtlcnNFbmFibGVkOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NsZWFyU2Vy
dmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgIFNQSXMgZm9yIHRlc3RpbmcuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgU2VuZCBJUEMg
dG8gdGhlIE5ldHdvcmtQcm9jZXNzIHRvIGRpc2FibGUgdGhlIGVudGl0bGVtZW50LgorCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bik6CisgICAgICAgIEVuYWJsZXMvZGlzYWJsZXMgc2VydmljZSB3b3JrZXJzIHJ1bnRpbWUgZW5h
YmxlZCBmZWF0dXJlIGJhc2VkIG9uCisgICAgICAgIG5hdmlnYXRpb24gdG8vYXdheSBmcm9tIGFu
IGFwcC1ib3VuZCBkb21haW4uCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNh
YmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50SW5OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlk
ZSk6CisgICAgICAgIEFzIGRlc2NyaWJlZCBhYm92ZSwgdGhpcyBpcyBhIHdheSBmb3IgVGVzdFdl
YktpdEFQSSB0bworICAgICAgICB0ZW1wb3JhcmlseSBkaXNhYmxlIHRoZSBzZXJ2aWNlIHdvcmtl
ciBlbnRpdGxlbWVudC4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByZWZlcmVu
Y2VzRGlkQ2hhbmdlKToKKyAgICAgICAgV2hlbiBzZXJ2aWNlIHdvcmtlcnMgYXJlIGVuYWJsZWQv
ZGlzYWJsZWQgb24gbmF2aWdhdGlvbiwgdXBkYXRlCisgICAgICAgIFdlYlByZWZlcmVuY2VzIHNv
IHRoZSBXZWJQYWdlIGNhbiBjaGVjayB0aGlzIHZhbHVlLgorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIERpc2FibGUgdGhlIGVu
dGl0bGVtZW50IGJlZm9yZSBjaGVja2luZy91cGRhdGluZyBzZXJ2aWNlIHdvcmtlciBmbGFncwor
ICAgICAgICB0byBtYWtlIHN1cmUgdGhpcyBiZWhhdmlvciB3b3JrcyBwcm9wZXJseSB3aXRoIG5v
IGVudGl0bGVtZW50IGluIHRoZQorICAgICAgICB0ZXN0IGNhc2UuIEFkZHMgYW4gZWxzZSBjbGF1
c2UgYmVjYXVzZSBzZXJ2aWNlIHdvcmtlcnMgY2FuIG5vdyBiZQorICAgICAgICBlbmFibGVkL2Rp
c2FibGVkIG1vcmUgdGhhbiBvbmNlLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpc2Fi
bGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpj
bGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBhcmVu
dFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZSk6
CisgICAgICAgIE92ZXJyaWRlIHRoZSBlbnRpdGxlbWVudCBhcyBkZXNjcmliZWQgYWJvdmUuCisK
IDIwMjAtMDQtMTYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW21hY09TXSBTd2l0Y2ggdW51c2VkIElPS2l0IGNsYXNzZXMgZnJvbSBhbGxvdy13aXRoLXJl
cG9ydCB0byBkZW55LXdpdGgtcmVwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4
IGVlMTI1ZTU3ZTAxY2U2Mjg5Y2VhYzgyM2NjNDc3NTM0NzkyMjc2NWYuLmNmMmJhM2Y1ZDBjOWI1
Nzc3YzA3Y2ZkZTZhYTUzNzJmNmY3YTFjNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CkBAIC00MjgsOCArNDI4LDExIEBAIGJvb2wgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmlzU2VydmljZVdvcmtlckFsbG93ZWQoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Vydmlj
ZVdvcmtlckZldGNoVGFzaz4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUZl
dGNoVGFzayhOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQogewotICAgIGlmICghaXNTZXJ2aWNlV29ya2VyQWxsb3dlZCgpKQorICAg
IGF1dG8gYWxsb3dTZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluID0gbG9hZGVyLnBhcmFt
ZXRlcnMoKS5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluICYmICpsb2FkZXIucGFyYW1ldGVy
cygpLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPT0gTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW46OlllczsKKworICAgIGlmICghaXNTZXJ2aWNlV29ya2VyQWxsb3dlZCgpICYmICFhbGxv
d1NlcnZpY2VXb3JrZXJzRm9yQXBwQm91bmREb21haW4pCiAgICAgICAgIHJldHVybiBudWxscHRy
OworCiAgICAgcmV0dXJuIHN3Q29ubmVjdGlvbigpLmNyZWF0ZUZldGNoVGFzayhsb2FkZXIsIHJl
cXVlc3QpOwogfQogI2VuZGlmCkBAIC00MzcsNyArNDQwLDkgQEAgc3RkOjp1bmlxdWVfcHRyPFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGVGZXQKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVkdWxlUmVzb3Vy
Y2VMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiB7
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyQWxs
b3dlZCA9IHRoaXMtPmlzU2VydmljZVdvcmtlckFsbG93ZWQoKTsKKyAgICBhdXRvIGFsbG93U2Vy
dmljZVdvcmtlcnNGb3JBcHBCb3VuZERvbWFpbiA9IGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4gJiYgKmxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4gPT0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllczsKKyAgICBib29sIGlz
U2VydmljZVdvcmtlckFsbG93ZWQgPSB0aGlzLT5pc1NlcnZpY2VXb3JrZXJBbGxvd2VkKCkgfHwg
YWxsb3dTZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluOworCiAgICAgaWYgKGlzU2Vydmlj
ZVdvcmtlckFsbG93ZWQpIHsKICAgICAgICAgYXV0byYgc2VydmVyID0gbV9uZXR3b3JrUHJvY2Vz
cy0+c3dTZXJ2ZXJGb3JTZXNzaW9uKG1fc2Vzc2lvbklEKTsKICAgICAgICAgaWYgKCFzZXJ2ZXIu
aXNJbXBvcnRDb21wbGV0ZWQoKSkgewpAQCAtMTA0Myw3ICsxMDQ4LDYgQEAgdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2Vy
TmVlZGVkKCkKIAogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6c3dDb25uZWN0aW9uKCkKIHsKLSAgICBBU1NFUlQoaXNTZXJ2aWNlV29ya2VyQWxs
b3dlZCgpKTsKICAgICBpZiAoIW1fc3dDb25uZWN0aW9uKQogICAgICAgICBlc3RhYmxpc2hTV1Nl
cnZlckNvbm5lY3Rpb24oKTsKICAgICByZXR1cm4gKm1fc3dDb25uZWN0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA1MmMwMTI5
N2IzZDRmNDU1MTY5YTM0YTQwMzBkMDQ2ZWE5OTY2N2E5Li4yZTU4OTg0YjUzODcyOTIzYThhYzQz
ODA0OGUwZjQ0ZGZlMjYwZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzQ1LDEwICszNDUsOCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmJgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHBh
cmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSkgewotICAgICAgICBib29s
IHNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQgPSB0cnVlOwotICAg
ICAgICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBXVEZN
b3ZlKHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSksIHBhcmFt
ZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7
Ci0gICAgfQorICAgIGJvb2wgc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5h
YmxlZCA9IHRydWU7CisgICAgYWRkU2VydmljZVdvcmtlclNlc3Npb24oUEFMOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSwgc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
RW5hYmxlZCwgV1RGTW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkpLCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOwogI2VuZGlmCiAKICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5hZGQoc2Vz
c2lvbklELCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFn
ZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwpAQCAtNDM4LDggKzQzNiw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LSAgICBpZiAocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKQotICAg
ICAgICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihzZXNzaW9uSUQsIHBhcmFtZXRlcnMuc2Vydmlj
ZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXJhbWV0ZXJz
LnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBwYXJhbWV0ZXJzLnNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgIGFkZFNlcnZp
Y2VXb3JrZXJTZXNzaW9uKHNlc3Npb25JRCwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBXVEZNb3ZlKHBhcmFtZXRlcnMuc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeSksIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYKIAogICAgIG1fc3RvcmFnZU1h
bmFnZXJTZXQtPmFkZChzZXNzaW9uSUQsIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5
LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CkBAIC0y
NDc1LDcgKzI0NzIsNiBAQCBXZWJTV09yaWdpblN0b3JlKiBOZXR3b3JrUHJvY2Vzczo6ZXhpc3Rp
bmdTV09yaWdpblN0b3JlRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRAogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24pCiB7Ci0gICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2Vy
RW50aXRsZW1lbnQoKSk7CiAgICAgYXV0byogc3RvcmUgPSBleGlzdGluZ1NXT3JpZ2luU3RvcmVG
b3JTZXNzaW9uKGNvbm5lY3Rpb24uc2Vzc2lvbklEKCkpOwogICAgIEFTU0VSVChzdG9yZSk7CiAg
ICAgaWYgKHN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCmluZGV4IDA2NGJiMWNkY2M4YTI3MmEwMmM0Y2Y3NzNkMDJkYTQ2NTIzZDBlZmIuLmQ3
ZDZmOTY5ZjVmZTRiOTE1M2M4NjMwOGQ1YzE3ZmFiOTk3OGU4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTMwNSw2ICszMDUsOCBAQCBw
dWJsaWM6CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgcGFyZW50UHJvY2Vz
c0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpIGNvbnN0OworICAgIHZvaWQgZGlzYWJsZVNl
cnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpOworICAgIHZvaWQgY2xlYXJTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2Vsc2UKICAg
ICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDIxOWQzOTFiNGZjZWZi
Mzk2NDI4ZjZiMmI2MTNlMzc3M2M4MGMzNTIuLjg1NzZiNDY0NmNhM2ExZjc4Y2JlMzYxMTM0MjZl
MWYzZDc0ZjdjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTcyLDQgKzE3Miw5IEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICAKICAgICBIYXNBcHBCb3Vu
ZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoYm9vbCBoYXNBcHBCb3VuZFNl
c3Npb24pIEFzeW5jCiAgICAgU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlKSAtPiAoKSBBc3luYworCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICBEaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkKKyAgICBD
bGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKCkgLT4gKCkgQXN5bmMKKyNlbmRp
ZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29y
a1Byb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3Jr
UHJvY2Vzc0lPUy5tbQppbmRleCBlMTkyZjUwM2Y0NDVmZTUxMDA4MTAyZTYzNTk2MGVhMWUxN2Nl
ZjUyLi4xMGFiMzI0NGQxYzkxMWIyNzQ2OTg5YjdhMmRkZmQ0ZTVlYTc3YTBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5t
bQpAQCAtNzQsMTIgKzc0LDI4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtVGVybWlu
YXRlKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitzdGF0aWMgYm9vbCBkaXNhYmxlU2Vy
dmljZVdvcmtlckVudGl0bGVtZW50VGVzdGluZ092ZXJyaWRlOworCiBib29sIE5ldHdvcmtQcm9j
ZXNzOjpwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgY29uc3QKIHsK
KyAgICBpZiAoZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudFRlc3RpbmdPdmVycmlkZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgc3RhdGljIGJvb2wgaGFzRW50aXRsZW1lbnQg
PSBXVEY6Omhhc0VudGl0bGVtZW50KHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnhwY0Nvbm5l
Y3Rpb24oKSwgImNvbS5hcHBsZS5kZXZlbG9wZXIuV2ViS2l0LlNlcnZpY2VXb3JrZXJzIik7CiAg
ICAgcmV0dXJuIGhhc0VudGl0bGVtZW50OwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaXNh
YmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkKK3sKKyAgICBkaXNhYmxlU2VydmljZVdvcmtl
ckVudGl0bGVtZW50VGVzdGluZ092ZXJyaWRlID0gdHJ1ZTsKK30KKwordm9pZCBOZXR3b3JrUHJv
Y2Vzczo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgZGlzYWJsZVNlcnZpY2VX
b3JrZXJFbnRpdGxlbWVudFRlc3RpbmdPdmVycmlkZSA9IGZhbHNlOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZl
cmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmlu
ZGV4IGI2ZWIxMTRhYjkyMTVjYjEwZDk0NTk2Yzg2ZWJhZDcxZWNlZTc3ZmYuLjFhN2FkZDdjYTZi
ZWYyNmM2MjI5ZTAwZTViMmYwYzNjODNlZjUyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHJlZmVyZW5jZXMueWFtbApAQCAtMTI3Myw2ICsxMjczLDE2IEBAIE5lZWRzSW5BcHBCcm93c2Vy
UHJpdmFjeVF1aXJrczoKICAgICB3ZWJjb3JlQmluZGluZzogUnVudGltZUVuYWJsZWRGZWF0dXJl
cwogICAgIGNhdGVnb3J5OiBkZWJ1ZwogCitBbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBwQm91bmRE
b21haW46CisgICAgdHlwZTogYm9vbAorICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UKKyAgICB3ZWJj
b3JlQmluZGluZzogbm9uZQorICAgIAorU2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRG
b3JUZXN0aW5nOgorICAgIHR5cGU6IGJvb2wKKyAgICBkZWZhdWx0VmFsdWU6IGZhbHNlCisgICAg
d2ViY29yZUJpbmRpbmc6IG5vbmUKKwogIyBGb3IgZXhwZXJpbWVudGFsIGZlYXR1cmVzOgogIyBU
aGUgdHlwZSBzaG91bGQgYmUgYm9vbGVhbi4KICMgWW91IG11c3QgcHJvdmlkZSBhIGh1bWFuUmVh
ZGFibGVOYW1lIGFuZCBodW1hblJlYWRhYmxlRGVzY3JpcHRpb24gZm9yIGFsbCBleHBlcmltZW50
YWwgZmVhdHVyZXMuIFRoZXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJlZmVyZW5jZXMubW0KaW5kZXggOWFhYmEwZjg3MGFlOTQ5ODgxYmUwN2FmOTUwMzBm
ZWVlMTQ5ZDI1OS4uZDBhZjNiZjhjNmViYjgwZmZkY2QzNTc3ZmZjOTNhYmMyM2JiNWRmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMu
bW0KQEAgLTkyMyw2ICs5MjMsMTYgQEAgLSAoQk9PTClfaXNJVFBEYXRhYmFzZUVuYWJsZWQKICAg
ICByZXR1cm4gX3ByZWZlcmVuY2VzLT5pc0lUUERhdGFiYXNlRW5hYmxlZCgpOwogfQogCistIChC
T09MKV9zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3RpbmcKK3sKKyAgICBy
ZXR1cm4gX3ByZWZlcmVuY2VzLT5zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRl
c3RpbmcoKTsKK30KKworLSAodm9pZClfc2V0U2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJs
ZWRGb3JUZXN0aW5nOihCT09MKWRpc2FibGUKK3sKKyAgICBfcHJlZmVyZW5jZXMtPnNldFNlcnZp
Y2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZyhkaXNhYmxlKTsKK30KKwogI2lm
IFBMQVRGT1JNKE1BQykKIC0gKHZvaWQpX3NldEphdmFFbmFibGVkRm9yTG9jYWxGaWxlczooQk9P
TCllbmFibGVkCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDdjZDA1MTg3Zjk0MGJiNjdmOWFiMGMy
MWY4OWE3OTkwMDdkNGE1YzQuLjY3NTY3ODkzZjQ0YjZiZjhlMDk2OTBmNTUxNjE2MmQ0MzNiOTE1
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZl
cmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1ByZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC0xNjUsNiArMTY1LDcgQEAgdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgX1dLRWRpdGFibGVMaW5rQmVoYXZpb3IpIHsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkOikgQk9PTCBfYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFJl
cXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWQ6KSBCT09MIF9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVF
bmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX2lzSVRQRGF0YWJhc2VF
bmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnREaXNhYmxlZEZvclRlc3Rpbmc6KSBCT09MIF9zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRE
aXNhYmxlZEZvclRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKIAogI2lmICFUQVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgc2V0dGVyPV9zZXRXZWJHTEVuYWJsZWQ6KSBCT09MIF93ZWJHTEVuYWJsZWQgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBjYTI2OGZhZGI0YTdhMGMzNzNhZmY5ZDk3MGI2
MTliNTlhNjVlMWQwLi45ZGQwZjExZDM4MDVmMGM2MmZhNzRjN2E2YjkyOWQyNjM3MWUwYWI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAg
LTEyMSw2ICsxMjEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIu
aD4KQEAgLTUyMyw4ICs1MjQsOSBAQCAtICh2b2lkKV9zZXR1cFBhZ2VDb25maWd1cmF0aW9uOihS
ZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mKXBhZ2VDb25maWd1cmF0aW9uCiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBp
ZiAoIVdURjo6cHJvY2Vzc0hhc0VudGl0bGVtZW50KCJjb20uYXBwbGUuZGV2ZWxvcGVyLldlYktp
dC5TZXJ2aWNlV29ya2VycyIpKQorICAgIGlmICghV1RGOjpwcm9jZXNzSGFzRW50aXRsZW1lbnQo
ImNvbS5hcHBsZS5kZXZlbG9wZXIuV2ViS2l0LlNlcnZpY2VXb3JrZXJzIikgfHwgW19jb25maWd1
cmF0aW9uIHByZWZlcmVuY2VzXS5fc2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JU
ZXN0aW5nKQogICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0U2Vy
dmljZVdvcmtlcnNFbmFibGVkKGZhbHNlKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZXMoKS0+c2V0U2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nKCEh
W19jb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS5fc2VydmljZVdvcmtlckVudGl0bGVtZW50RGlz
YWJsZWRGb3JUZXN0aW5nKTsKICNlbmRpZgogCiAgICAgaWYgKCFsaW5rZWRPbk9yQWZ0ZXIoV2Vi
S2l0OjpTREtWZXJzaW9uOjpGaXJzdFdoZXJlU2l0ZVNwZWNpZmljUXVpcmtzQXJlRW5hYmxlZEJ5
RGVmYXVsdCkpCkBAIC0yNjcwLDYgKzI2NzIsMTkgQEAgLSAodm9pZClfaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogICAgIH0pOwog
fQogCistICh2b2lkKV9zZXJ2aWNlV29ya2Vyc0VuYWJsZWQ6KHZvaWQoXikoQk9PTCkpY29tcGxl
dGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvIGVuYWJsZWQgPSBbX2NvbmZpZ3VyYXRpb24gcHJlZmVy
ZW5jZXNdLT5fcHJlZmVyZW5jZXMuZ2V0KCktPnNlcnZpY2VXb3JrZXJzRW5hYmxlZCgpIHx8IFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2VydmljZVdv
cmtlckVuYWJsZWQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihlbmFibGVkKTsKK30KKworLSAo
dm9pZClfY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZToodm9pZCAoXikodm9p
ZCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfcGFnZS0+Y2xlYXJTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnRPdmVycmlkZShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpXSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7Cit9
CisKIC0gKGlkIDxfV0tJbnB1dERlbGVnYXRlPilfaW5wdXREZWxlZ2F0ZQogewogICAgIHJldHVy
biBfaW5wdXREZWxlZ2F0ZS5nZXRBdXRvcmVsZWFzZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGViZDU4N2Rl
MDcyZTJiNTUxOWIzNDdhZTAxMTdlMWI2ZGNjODQwN2QuLjcxNWRlNmM3ODhmMDYyNzAyN2ZlODk1
MmY0MDlmOTZmNDkwNmU1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMzQ1LDYgKzM0NSw4IEBAIGZvciB0aGlz
IHByb3BlcnR5LgogCiAtICh2b2lkKV9ncmFudEFjY2Vzc1RvUHJlZmVyZW5jZVNlcnZpY2UgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAo
dm9pZClfc2VydmljZVdvcmtlcnNFbmFibGVkOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5k
bGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CistICh2b2lkKV9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlOih2b2lkIChe
KSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQGVuZAogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYzdmMTY4NjhmMGMzOWE0
NDAwOTNmYTg2ZTA3Yzg2ZmM4YjYzY2I5Ni4uMjViMjMwMWE2OGFjNGY3NmZhOThlMDRhMTZiYWE5
MDY5YThhYTlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC0xNzksNiArMTc5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Xcml0aW5nRGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4K
KyNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N5c3Rl
bVRyYWNpbmcuaD4KQEAgLTUyMCw2ICs1MjEsOSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94
eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6
OnNldERpc2FibGVTY3JlZW5TaXplT3ZlcnJpZGUobV9wcmVmZXJlbmNlcy0+ZGlzYWJsZVNjcmVl
blNpemVPdmVycmlkZSgpKTsKKyAgICAKKyAgICBpZiAobV9jb25maWd1cmF0aW9uLT5wcmVmZXJl
bmNlcygpLT5zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3RpbmcoKSkKKyAg
ICAgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudEluTmV0d29ya1Byb2Nlc3MoKTsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0zMTM4LDEwICszMTQyLDE2IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGJvb2wgaXNN
YWluRnJhbWUsIGNvbnN0IFVSTCYKICAgICAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+c2V0V2Vi
Vmlld0NhdGVnb3J5KFdlYlZpZXdDYXRlZ29yeTo6SW5BcHBCcm93c2VyKTsKICAgICAgICAgICAg
IG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluOjpObzsKICAgICAgICAgICAgIG1faGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFp
biA9IE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW46OlllczsKKyNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCisgICAgICAgICAgICBtX3ByZWZlcmVuY2VzLT5zZXRTZXJ2aWNlV29ya2Vy
c0VuYWJsZWQoZmFsc2UpOworI2VuZGlmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgbV9jb25maWd1cmF0aW9uLT5zZXRXZWJWaWV3Q2F0ZWdvcnkoV2ViVmlld0NhdGVn
b3J5OjpBcHBCb3VuZERvbWFpbik7CiAgICAgICAgIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXM7CisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorICAgICAgICBtX3ByZWZlcmVuY2VzLT5zZXRTZXJ2aWNlV29ya2Vyc0VuYWJs
ZWQodHJ1ZSk7CisjZW5kaWYKICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpc01haW5G
cmFtZSk7CkBAIC0zMTU1LDYgKzMxNjUsMzYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW5UZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm8KICAg
ICBjb21wbGV0aW9uSGFuZGxlcihtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gJiYgKCpt
X2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPT0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW46OlllcykpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzYWJsZVNlcnZpY2VXb3JrZXJF
bnRpdGxlbWVudEluTmV0d29ya1Byb2Nlc3MoKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgp
Lm5ldHdvcmtQcm9jZXNzKCkpIHsKKyAgICAgICAgaWYgKCFuZXR3b3JrUHJvY2Vzcy0+Y2FuU2Vu
ZE1lc3NhZ2UoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbmV0d29ya1Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEaXNhYmxlU2VydmljZVdvcmtlckVudGl0
bGVtZW50KCksIDApOworICAgIH0KKyNlbmRpZgorfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2xl
YXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoKSwgW2Nh
bGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7Cisg
ICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLm5l
dHdvcmtQcm9jZXNzKCkpIHsKKyAgICAgICAgaWYgKCFuZXR3b3JrUHJvY2Vzcy0+Y2FuU2VuZE1l
c3NhZ2UoKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q2xlYXJTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnRPdmVycmlkZSgpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9y
LmNvcHlSZWYoKV0geyB9KTsKKyAgICB9CisgICAgbV9wcmVmZXJlbmNlcy0+c2V0U2VydmljZVdv
cmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nKGZhbHNlKTsKKyAgICBtX3ByZWZlcmVu
Y2VzLT5zZXRTZXJ2aWNlV29ya2Vyc0VuYWJsZWQodHJ1ZSk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShjb21wbGV0aW9uSGFuZGxlcik7CisjZW5kaWYKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6
OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rp
b24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiBmcmFtZSwg
UmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNp
b25TZW5kZXI+JiYgc2VuZGVyKQogewogICAgIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiB3ZWJzaXRl
RGF0YVN0b3JlID0gbV93ZWJzaXRlRGF0YVN0b3JlLmNvcHlSZWYoKTsKQEAgLTQyMjgsNiArNDI2
OCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogCiAgICAg
cGFnZUNsaWVudCgpLnByZWZlcmVuY2VzRGlkQ2hhbmdlKCk7CiAKKyAgICBpZiAobV9pc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluICYmICgqbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
ID09IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXMpKQorICAgICAgICBtX3ByZWZlcmVu
Y2VzLT5zZXRBbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBwQm91bmREb21haW4odHJ1ZSk7CisgICAg
ZWxzZQorICAgICAgICBtX3ByZWZlcmVuY2VzLT5zZXRBbGxvd1NlcnZpY2VXb3JrZXJzRm9yQXBw
Qm91bmREb21haW4oZmFsc2UpOworCiAgICAgLy8gRklYTUU6IEl0IHByb2JhYmx5IG1ha2VzIG1v
cmUgc2Vuc2UgdG8gc2VuZCBpbmRpdmlkdWFsIHByZWZlcmVuY2UgY2hhbmdlcy4KICAgICAvLyBI
b3dldmVyLCBXZWJLaXRUZXN0UnVubmVyIGRlcGVuZHMgb24gZ2V0dGluZyBhIHByZWZlcmVuY2Ug
Y2hhbmdlIG5vdGlmaWNhdGlvbgogICAgIC8vIGV2ZW4gaWYgbm90aGluZyBjaGFuZ2VkIGluIFVJ
IHByb2Nlc3MsIHNvIHRoYXQgb3ZlcnJpZGVzIGdldCByZW1vdmVkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3YWQ0MWM1ODRmOWIxNmZlNmFlNzgxMTJkOWRhODRi
NTQzODBmZjdlLi4wYmUzMjFiYWVlOWNkYTI4Y2RjNjM2YWNkZGM0NzY3MmEwNzk5NDkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTcyOSw2ICsxNzI5LDkgQEAg
cHVibGljOgogICAgIHZvaWQgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpblRlc3RpbmcoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7IHJl
dHVybiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47IH0KIAorICAgIHZvaWQgZGlzYWJs
ZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudEluTmV0d29ya1Byb2Nlc3MoKTsKKyAgICB2b2lkIGNs
ZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBncmFudEFj
Y2Vzc1RvQ3VycmVudFBhc3RlYm9hcmREYXRhKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IGEyMDY2NTgzYTFkNWU1NjExYzQ3MzA2YTlkMjY1YmEyOTE3YTk5NzguLmYxZjRlNmVm
YjhmMmVjMDlhYzVjOTNlNDdhNjFjOWM1ZjUwMDlkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zNjcyLDExICszNjcyLDE2IEBAIHZvaWQg
V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3Rv
cmUpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAoc3RvcmUu
Z2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnREaXNhYmxlZEZvclRlc3RpbmdLZXkoKSkpCisgICAgICAgIGRpc2FibGVTZXJ2aWNlV29y
a2VyRW50aXRsZW1lbnQoKTsKKwogICAgIGlmIChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2Vi
UHJlZmVyZW5jZXNLZXk6OnNlcnZpY2VXb3JrZXJzRW5hYmxlZEtleSgpKSkgewotICAgICAgICBB
U1NFUlQocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKTsKLSAgICAg
ICAgaWYgKCFwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkpCisgICAg
ICAgIGF1dG8gYWxsb3dTZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5kRG9tYWluID0gc3RvcmUuZ2V0
Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphbGxvd1NlcnZpY2VXb3JrZXJzRm9y
QXBwQm91bmREb21haW5LZXkoKSk7CisgICAgICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzSGFzU2Vy
dmljZVdvcmtlckVudGl0bGVtZW50KCkgfHwgYWxsb3dTZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5k
RG9tYWluKTsKKyAgICAgICAgaWYgKCFwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0
bGVtZW50KCkgJiYgIWFsbG93U2VydmljZVdvcmtlcnNGb3JBcHBCb3VuZERvbWFpbikKICAgICAg
ICAgICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2Vydmlj
ZVdvcmtlckVuYWJsZWQoZmFsc2UpOwotICAgIH0KKyAgICB9IGVsc2UgaWYgKCFwYXJlbnRQcm9j
ZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkpCisgICAgICAgIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2VydmljZVdvcmtlckVuYWJsZWQoZmFsc2Up
OwogI2VuZGlmCiAKICAgICBzZXR0aW5ncy5zZXRMYXlvdXRWaWV3cG9ydEhlaWdodEV4cGFuc2lv
bkZhY3RvcihzdG9yZS5nZXREb3VibGVWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6bGF5
b3V0Vmlld3BvcnRIZWlnaHRFeHBhbnNpb25GYWN0b3JLZXkoKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGUxOGVjMWNmNGJiOWI2NmQ2YWExZmNi
YWUyNTQyMmVkN2E5MTNlZjkuLjNiMDM1MGVkNWNiMDk4Y2ViNTVjZDhjZmY3N2M5NjBlNGVjNjk3
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1
MjAsOCArMTUyMCwxMiBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSBjb25zdDsK
KyAgICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKTsKKyAgICB2b2lkIGNs
ZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICNlbHNlCiAgICAgYm9vbCBwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVu
dGl0bGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgZGlzYWJsZVNlcnZp
Y2VXb3JrZXJFbnRpdGxlbWVudCgpIHsgfQorICAgIHZvaWQgY2xlYXJTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoKTsgfQogI2VuZGlmCiAKICAgICB2b2lkIGRpZFJl
Y2VpdmVQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIFBvbGljeURlY2lzaW9uJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMWIxMTU5ZTE2ZjY5NTZm
YTA2NDdjNmNiODAxMzk2MWE5ODg3YmVjOC4uZTc1ZWVkOGQ5NmFjZWY5NzBlMGI5N2E0MDNiMDgx
MmI4ZTFkNTg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xMjIsNiArMTIyLDcgQEAgR2VuZXJhdGVTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGUKICAgICBJbnNlcnRUZXh0UGxhY2Vob2xkZXIoV2ViQ29yZTo6SW50U2l6ZSBzaXpl
KSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IHBsYWNlaG9sZGVyKSBBc3lu
YwogICAgIFJlbW92ZVRleHRQbGFjZWhvbGRlcihzdHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRl
eHQgcGxhY2Vob2xkZXIpIC0+ICgpIEFzeW5jCiAgICAgRm9jdXNUZXh0SW5wdXRDb250ZXh0QW5k
UGxhY2VDYXJldChzdHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgY29udGV4dCwgV2ViQ29y
ZTo6SW50UG9pbnQgcG9pbnQpIC0+IChib29sIHN1Y2Nlc3MpIEFzeW5jCisgICAgQ2xlYXJTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZSgpIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAogICAg
IFNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oYm9vbCBjb250cm9sbGVkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAzNGE4
NDczZTRhYWFhMDQwMTU3YTRhZmQyYjViOWZjOTA5MGEyOTdiLi5mMTI2MzhlOTI5OWJmZmFjYzQy
N2FkYmRiMTg5NzRjYzgwMmFmMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNDg4LDEyICs0ODgsMjggQEAgYm9vbCBX
ZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50JiBldmVudCkK
ICAgICByZXR1cm4gc2VuZFJlc3VsdCAmJiBldmVudFdhc0hhbmRsZWQ7CiB9CiAKK3N0YXRpYyBi
b29sIGRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRUZXN0aW5nT3ZlcnJpZGU7CisKIGJv
b2wgV2ViUGFnZTo6cGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpIGNv
bnN0CiB7CisgICAgaWYgKGRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRUZXN0aW5nT3Zl
cnJpZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHN0YXRpYyBib29sIGhhc0VudGl0
bGVtZW50ID0gV1RGOjpoYXNFbnRpdGxlbWVudChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCksICJjb20uYXBwbGUuZGV2ZWxv
cGVyLldlYktpdC5TZXJ2aWNlV29ya2VycyIpOwogICAgIHJldHVybiBoYXNFbnRpdGxlbWVudDsK
IH0KIAordm9pZCBXZWJQYWdlOjpkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkKK3sK
KyAgICBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVzdGluZ092ZXJyaWRlID0gdHJ1
ZTsKK30KKwordm9pZCBXZWJQYWdlOjpjbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJy
aWRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVzdGluZ092ZXJyaWRlID0gZmFsc2U7
CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwogdm9pZCBXZWJQYWdlOjpzZW5kQ29tcGxl
eFRleHRJbnB1dFRvUGx1Z2luKHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggNmNkYzAyZWYyNDBlZTg5ZjkwYjc0YWE2ZWY2ZmYwZTllY2IzNjExOC4uYWZmMDMw
OGYwMGE4Mzg2NTM2YTE4YzRhNDkzNzdmZDE2Mjk2NmExYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA0LTE2
ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEVu
YWJsZSBzZXJ2aWNlIHdvcmtlcnMgZm9yIGFwcC1ib3VuZCBkb21haW5zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA0NTEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzYxNDc5NDc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZHMgMyB0ZXN0IGNhc2VzOgorICAgICAgICAxKSBTZXJ2aWNlIHdvcmtl
cnMgd29yayBwcm9wZXJseSBmb3IgYXBwLWJvdW5kIGRvbWFpbnMKKyAgICAgICAgMikgU2Vydmlj
ZSB3b3JrZXJzIGFyZSBkaXNhYmxlZCBmb3Igbm9uLWFwcCBib3VuZCBkb21haW5zLiBUaGlzCisg
ICAgICAgIGlzIHRlc3RlZCBieSBjaGVja2luZyBhIG5ldyBTUEksIGJlY2F1c2UgbWVzc2FnZSBo
YW5kbGVycyBhcmUgZGlzYWJsZWQKKyAgICAgICAgZm9yIG5vbi1hcHAgYm91bmQgZG9tYWlucy4K
KyAgICAgICAgMykgTG9hZGluZyBjb250ZW50IG9uIGEgbm9uLWFwcC1ib3VuZCBkb21haW4gdGhl
biB1c2luZyBhIHNlcnZpY2Ugd29ya2VyCisgICAgICAgIGZvciBhbiBhcHAtYm91bmQgZG9tYWlu
IGJlaGF2ZXMgY29ycmVjdGx5LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tOgorICAgICAgICAoLVtTV0luQXBwQnJvd3Nl
clByaXZhY3lNZXNzYWdlSGFuZGxlciB1c2VyQ29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNj
cmlwdE1lc3NhZ2U6XSk6CisKIDIwMjAtMDQtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgc2xhY2stYXdhcmUgV0tSIGltcGxlbWVudGF0aW9uCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJv
d3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
QXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggNjhiZTgxYjFiOTM1M2NiMDExZTE2OGMxZGM0Y2E4
NDg5ZWU4OTY4ZC4uMWRkYTkzYzVkNDhmMGJlZGVkMTQxMTBlYTdkM2U4YWIwNmE0NzhjZCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dz
ZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJTZXJ2aWNlV29y
a2VyVENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1w
b3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0
cmFzLmgiCkBAIC03NDMsNiArNzQ0LDE5OSBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEdl
dENvb2tpZUZvclVSTEZhaWxzKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CiB9CiAKK0BpbnRlcmZhY2UgU1dJbkFwcEJyb3dzZXJQcml2YWN5TWVzc2FnZUhhbmRsZXIgOiBO
U09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IFNXSW5BcHBCcm93c2VyUHJpdmFjeU1lc3NhZ2VIYW5kbGVyCistICh2b2lkKXVzZXJDb250ZW50
Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xs
ZXIgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UKK3sK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2Vy
IHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iLCBbbWVzc2FnZSBib2R5
XSk7CisgICAgaXNEb25lID0gdHJ1ZTsKK30KK0BlbmQKKworc3RhdGljIGNvbnN0IGNoYXIqIG1h
aW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgKKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvZyhtc2cpCit7
CisgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuc3cucG9zdE1lc3NhZ2UobXNnKTsK
K30KKworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIs
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgbG9nKCJNZXNzYWdlIGZyb20gd29ya2VyOiAiICsgZXZl
bnQuZGF0YSk7Cit9KTsKKwordHJ5IHsKKworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0
ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CisgICAgd29ya2VyID0gcmVnLmluc3Rh
bGxpbmcgPyByZWcuaW5zdGFsbGluZyA6IHJlZy5hY3RpdmU7CisgICAgd29ya2VyLnBvc3RNZXNz
YWdlKCJIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iKTsKK30pLmNhdGNoKGZ1bmN0aW9u
KGVycm9yKSB7CisgICAgbG9nKCJSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGg6ICIgKyBlcnJvcik7
Cit9KTsKK30gY2F0Y2goZSkgeworICAgIGxvZygiRXhjZXB0aW9uOiAiICsgZSk7Cit9CisKKzwv
c2NyaXB0PgorKVNXUkVTT1VSQ0UiOworCitzdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXMg
PSBSIlNXUkVTT1VSQ0UoCisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVu
dCkgPT4geworICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiU2VydmljZVdvcmtlciByZWNl
aXZlZDogIiArIGV2ZW50LmRhdGEpOworfSk7CisKKylTV1JFU09VUkNFIjsKKworVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQorewor
ICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CisgICAgaXNE
b25lID0gZmFsc2U7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIg
PSBhZG9wdE5TKFtbU1dJbkFwcEJyb3dzZXJQcml2YWN5TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGlu
aXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3Jp
cHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKKyAgICBb
Y29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10uX3NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2Fi
bGVkRm9yVGVzdGluZyA9IFlFUzsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBTZXJ2aWNlV29ya2VyVENQ
U2VydmVyIHNlcnZlcjEoeworICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBtYWluQnl0ZXMgfSwKKyAg
ICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEJ5dGVzfSwKKyAgICB9KTsK
KworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxs
T3JpZ2luc107CisKKyAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQor
ICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5
cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5j
ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBp
c0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICAKKyAgICAvLyBFeHBlY3QgdGhlIHNlcnZp
Y2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgorICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnNlcnZlcjEucmVxdWVzdFdpdGhMb2NhbGhvc3QoKV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgW1tX
S1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlw
ZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6V0tXZWJzaXRlRGF0YVR5cGVTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uc10gY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNv
cmQgKj4gKndlYnNpdGVEYXRhUmVjb3JkcykgeworICAgICAgICBFWFBFQ1RfRVEoMXUsIFt3ZWJz
aXRlRGF0YVJlY29yZHMgY291bnRdKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHdlYnNpdGVE
YXRhUmVjb3Jkc1swXS5kaXNwbGF5TmFtZSwgImxvY2FsaG9zdCIpOworICAgICAgICBpc0RvbmUg
PSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgLy8gUmVzZXQgc2VydmljZSB3b3JrZXIgZW50
aXRsZW1lbnQuCisgICAgW3dlYlZpZXcgX2NsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3Zl
cnJpZGU6Xih2b2lkKSB7CisgICAgICAgIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNl
dHRpbmdzKCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIGlzRG9uZSA9IGZhbHNlOworfQorCitURVNU
KEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRG9lc05vdEFsbG93U2Vydmlj
ZVdvcmtlcnMpCit7CisgICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGlu
Z3MoKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBz
Y2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW0luQXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgYWxsb2Nd
IGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhh
bmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiaW4tYXBwLWJyb3dzZXIiXTsKKyAgICBbY29uZmln
dXJhdGlvbiBwcmVmZXJlbmNlc10uX3NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9y
VGVzdGluZyA9IFlFUzsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICAvLyBMb2FkIGEgbm9uLWFwcCBib3Vu
ZCBkb21haW4uCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFw
cC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cyJdXTsKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmlu
aXNoTmF2aWdhdGlvbl07CisKKyAgICAvLyBFeHBlY3QgdGhhdCBzZXJ2aWNlIHdvcmtlcnMgYXJl
IGRpc2FibGVkIGZvciB0aGlzIHdlYlZpZXcuCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dl
YlZpZXcgX3NlcnZpY2VXb3JrZXJzRW5hYmxlZDpeKEJPT0wgZW5hYmxlZCkgeworICAgICAgICBF
WFBFQ1RfRkFMU0UoZW5hYmxlZCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIAorICAgIC8vIFJlc2V0
IHNlcnZpY2Ugd29ya2VyIGVudGl0bGVtZW50LgorICAgIFt3ZWJWaWV3IF9jbGVhclNlcnZpY2VX
b3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlOl4odm9pZCkgeworICAgICAgICBjbGVhblVwSW5BcHBC
cm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAg
IH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICBpc0RvbmUg
PSBmYWxzZTsKK30KKworVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFp
blRvQXBwQm91bmRBbGxvd1NlcnZpY2VXb3JrZXJzKQoreworICAgIGluaXRpYWxpemVJbkFwcEJy
b3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CisgICAgaXNEb25lID0gZmFsc2U7CisKKyAgICBh
dXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOworICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tJbkFwcEJyb3dz
ZXJTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJM
U2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImluLWFwcC1i
cm93c2VyIl07CisgICAgLy8gRGlzYWJsZSBlbnRpdGxlbWVudCB3aGljaCBhbGxvd3Mgc2Vydmlj
ZSB3b3JrZXJzLgorICAgIFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS5fc2VydmljZVdvcmtl
ckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nID0gWUVTOworCisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAg
IFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAidGV4dC9odG1sIiwg
bWFpbkJ5dGVzIH0sCisgICAgICAgIHsgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRC
eXRlc30sCisgICAgfSk7CisKKyAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVE
YXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOworCisgICAgLy8gU3RhcnQgd2l0aCBhIGNsZWFuIHNs
YXRlIGRhdGEgc3RvcmUKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3Jl
XSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlw
ZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6
XigpIHsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICAvLyBMb2FkIGEgbm9uLWFwcCBib3VuZCBkb21h
aW4uCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93
c2VyLXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cyJdXTsKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2
aWdhdGlvbl07CisKKyAgICAvLyBFeHBlY3QgdGhhdCBzZXJ2aWNlIHdvcmtlcnMgYXJlIGRpc2Fi
bGVkIGZvciB0aGlzIHdlYlZpZXcuCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcg
X3NlcnZpY2VXb3JrZXJzRW5hYmxlZDpeKEJPT0wgZW5hYmxlZCkgeworICAgICAgICBFWFBFQ1Rf
RkFMU0UoZW5hYmxlZCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIGlzRG9uZSA9IGZhbHNlOworCisg
ICAgLy8gRXhwZWN0IHRoZSBzZXJ2aWNlIHdvcmtlciBsb2FkIGZvciBhbiBhcHAtYm91bmQgZG9t
YWluIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KKyAgICAvLyBTaW5jZSBtZXNzYWdlIGhhbmRs
ZXJzIGFyZSBlbmFibGVkIGFmdGVyIG5hdmlnYXRpbmcgdG8gYSBub24tYXBwLWJvdW5kIGRvbWFp
biwKKyAgICAvLyB3ZSBjYW5ub3QgZXhwZWN0IGEgbWVzc2FnZSBmcm9tIHRoZSBzZXJ2aWNlIHdv
cmtlciBoZXJlLgorICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwor
ICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIFtb
V0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIGZldGNoRGF0YVJlY29yZHNPZlR5
cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0OldLV2Vic2l0ZURhdGFUeXBlU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbnNdIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVj
b3JkICo+ICp3ZWJzaXRlRGF0YVJlY29yZHMpIHsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBbd2Vi
c2l0ZURhdGFSZWNvcmRzIGNvdW50XSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSh3ZWJzaXRl
RGF0YVJlY29yZHNbMF0uZGlzcGxheU5hbWUsICIxMjcuMC4wLjEiKTsKKyAgICAgICAgaXNEb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25l
KTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICAKKyAgICAvLyBSZXNldCBzZXJ2aWNlIHdvcmtl
ciBlbnRpdGxlbWVudC4KKyAgICBbd2ViVmlldyBfY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1l
bnRPdmVycmlkZTpeKHZvaWQpIHsKKyAgICAgICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lU
ZXN0U2V0dGluZ3MoKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgaXNEb25lID0gZmFsc2U7Cit9CisK
ICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiAjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396786</attachid>
            <date>2020-04-17 13:08:12 -0700</date>
            <delta_ts>2020-04-17 16:21:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210451-20200417130811.patch</filename>
            <type>text/plain</type>
            <size>46989</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGIyMGNkZmE3ZmU0NDY0
NWFhYmU3NjYyNmI1ZGY5ZjY3NDI0ZWU0MS4uMjUzMmVlNjk2YjRhMzc0YmVmNjBiMzZhMmYyZGUy
MGM1MzYzODM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA0LTE3ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBz
ZXJ2aWNlIHdvcmtlcnMgZm9yIGFwcC1ib3VuZCBkb21haW5zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA0NTEKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzYxNDc5NDc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNXU2VydmVyIG5vdyByZXRyaWV2ZXMgdGhlIGFwcC1ib3VuZCBkb21haW5zIGZyb20g
dGhlIFVJIFByb2Nlc3MgYW5kCisgICAgICAgIG9ubHkgY29udGludWVzIHdpdGggdGhlIGxvYWQg
aWYgdGhlIHByb3BlciBlbnRpdGxlbWVudCBpcyBwcmVzZW50CisgICAgICAgIG9yIHRoZSBsb2Fk
IGlzIGNvbWluZyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4uCisKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
OjphZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OlNXU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpnZXRBcHBCb3VuZERvbWFp
bnMpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnNjaGVkdWxlSm9iKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisKIDIwMjAtMDQtMTYgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZC1m
aXggYWZ0ZXIgcjI2MDE4MjsgZ3VhcmQgY2FsbCB0byBmdWxsc2NyZWVuTWFuYWdlcigpIGZvciBw
b3J0cyB3aGljaCBkbyBub3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzVlYTFlYWM4YjdmMzcwMmE0M2VjZWMwYmRk
YTUzYmI3MWYwYmE4Ny4uYTJiNDgzMGQzOGE3NGVhZTgyNjc1YzM1N2E5OTczMGI1NjE0ZjdkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw4NSBAQAorMjAyMC0wNC0xNyAgS2F0ZSBDaGVuZXkgIDxrYXRo
ZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUgc2VydmljZSB3b3JrZXJz
IGZvciBhcHAtYm91bmQgZG9tYWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEwNDUxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTQ3OTQ3ND4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2Vz
IHRoZSBzZXJ2aWNlIHdvcmtlciBBUEkgdG8gYWxsIFdlYlZpZXdzIGFuZCBvbmx5IHJlc3RyaWN0
cyBhY2Nlc3MKKyAgICAgICAgaW4gdGhlIE5ldHdvcmsgUHJvY2VzcyB3aGVuIGF0dGVtcHRpbmcg
dG8gc2NoZWR1bGUgYW5kIGNvbXBsZXRlCisgICAgICAgIHNlcnZpY2Ugd29ya2VyIGxvYWRzLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlRmV0Y2hUYXNrKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VMb2FkKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN3Q29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjppc1Nl
cnZpY2VXb3JrZXJBbGxvd2VkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICBSZW1vdmVkIEFT
U0VSVFMgYW5kIHNlcnZpY2Ugd29ya2VyIGVudGl0bGVtZW50IGNoZWNrcyB3aGljaCBhcmUgbm93
IGRvbmUgYWxvbmcgd2l0aCBhcHAtYm91bmQKKyAgICAgICAgZG9tYWluIGNoZWNrcyBpbiBTV1Nl
cnZlci5jcHAuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9y
ZSk6CisgICAgICAgIFJlbW92ZSB0aGUgY2hlY2sgZm9yIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNl
V29ya2VyRW50aXRsZW1lbnQoKSBiZWZvcmUKKyAgICAgICAgYWRkaW5nIGEgc2VydmljZVdvcmtl
clNlc3Npb24uIFRoaXMgZG9lc24ndCBkbyBhbnl0aGluZyBleGNlcHQgYWRkIGFuCisgICAgICAg
IGVudHJ5IHRvIGEgbWFwLCBhbmQgc2ltcGxpZmllcyB0aGUgY2FzZSB3aGVyZSB3ZSBuZWVkIGEg
c2Vzc2lvbiBmb3IKKyAgICAgICAgYXBwLWJvdW5kIGluc3RhbmNlcyB3aGljaCBzaG91bGQgaGF2
ZSBzZXJ2aWNlIHdvcmtlcnMgYnV0IGhhdmUgbm8gZW50aXRsZW1lbnQuCisKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lvbik6CisgICAgICAgIFBhc3Mg
dGhlIGVudGl0bGVtZW50IGFuZCBhIG5ldyBjYWxsYmFjayB0byByZXF1ZXN0IGFwcC1ib3VuZCBk
b21haW5zCisgICAgICAgIGZyb20gdGhlIFVJIFByb2Nlc3MgdG8gdGhlIFNXU2VydmVyLiBUaGlz
IHdpbGwgbWFrZSBzdXJlIHRoZSBzZXJ2ZXIKKyAgICAgICAgY2hlY2tzIGZvciB0aGUgZW50aXRs
ZW1lbnQgb3IgbGlzdCBvZiBhcHAtYm91bmQgZG9tYWlucyBiZWZvcmUgY29tcGxldGluZyBhIGxv
YWQuCisKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJD
b25uZWN0aW9uKToKKyAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IEFTU0VSVCBmb3IgZW50aXRs
ZW1lbnQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlzYWJsZVNl
cnZpY2VXb3JrZXJFbnRpdGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpjbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJlZmVyZW5jZXMubW06CisgICAgICAgICgtW1dLUHJlZmVyZW5jZXMgX3NlcnZpY2VXb3JrZXJF
bnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZ10pOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2Vz
IF9zZXRTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3Rpbmc6XSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAg
ICBJbiBvcmRlciB0byB0ZXN0IHRoaXMgdGhvcm91Z2hseSwgVGVzdFdlYktpdEFQSSBuZWVkZWQg
YSB3YXkgdG8KKyAgICAgICAgdGVtcG9yYXJpbHkgZGlzYWJsZSB0aGUgc2VydmljZSB3b3JrZXIg
ZW50aXRsZW1lbnQuIFRoaXMgZnVuY3Rpb24KKyAgICAgICAgb3ZlcnJpZGVzIHRoZSBjaGVjayBm
b3IgdGhlIGVudGl0bGVtZW50IGlmIHRoZSBib29sIGlzIHNldCwgZGlzYWJsaW5nCisgICAgICAg
IHRoZSBlbnRpdGxlbWVudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldHVwUGFnZUNvbmZpZ3VyYXRpb246XSk6
CisgICAgICAgIFJlbW92ZSBlbnRpdGxlbWVudCBjaGVjayBpbiB0aGUgVUkgUHJvY2VzcyBhbmQg
ZXhwb3NlIHNlcnZpY2Ugd29ya2VyCisgICAgICAgIEFQSSB0byBhbGwgV2ViVmlld3MuCisKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRl
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRBcHBCb3VuZERvbWFpbnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgor
ICAgICAgICBTZW5kcyB0aGUgYXBwLWJvdW5kIGRvbWFpbnMgdG8gdGhlIE5ldHdvcmsgUHJvY2Vz
cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRJbk5ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbGVhclNlcnZpY2VX
b3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgIERpc2FibGUgZW50aXRsZW1lbnQgZm9yIHRlc3RpbmcsIGFzIGRlc2Ny
aWJlZCBhYm92ZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBlbnRpdGxl
bWVudCBjaGVjayBhbmQgV2ViIFByZWZlcmVuY2VzIGtleSBjaGVjayBub3cKKyAgICAgICAgdGhh
dCBzZXJ2aWNlIHdvcmtlcnMgYXJlIHJlc3RyaWN0ZWQgaW4gdGhlIE5ldHdvcmsgUHJvY2Vzcy4K
KwogMjAyMC0wNC0xNiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbbWFjT1NdIFN3aXRjaCB1bnVzZWQgSU9LaXQgY2xhc3NlcyBmcm9tIGFsbG93LXdpdGgt
cmVwb3J0IHRvIGRlbnktd2l0aC1yZXBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggMjhkOWZmYWU3M2NjMDRmYmVjN2Mz
MjYzZmU4Y2E1MmQ5MWExNWU2OS4uOTA3NGE1YmExOWJjODAwZjNjN2Y5MjdhN2QwYjQwODQwZWNh
MmM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAKQEAgLTE1NSwxNSArMTU1LDE5IEBAIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lz
dHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQogewogICAg
IC8vIFBhZ2VzIHNob3VsZCBub3QgaGF2ZSBiZWVuIGFibGUgdG8gbWFrZSBhIG5ldyByZWdpc3Ry
YXRpb24gdG8gdGhpcyBrZXkgd2hpbGUgdGhlIGltcG9ydCB3YXMgc3RpbGwgdGFraW5nIHBsYWNl
LgogICAgIEFTU0VSVCghbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwLmNvbnRhaW5zKGRhdGEucmVn
aXN0cmF0aW9uLmtleSkpOwotCi0gICAgYXV0byByZWdpc3RyYXRpb24gPSBtYWtlVW5pcXVlPFNX
U2VydmVyUmVnaXN0cmF0aW9uPigqdGhpcywgZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBkYXRhLnJl
Z2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSwgZGF0YS5yZWdpc3RyYXRpb24uc2NvcGVVUkwsIGRh
dGEuc2NyaXB0VVJMKTsKLSAgICByZWdpc3RyYXRpb24tPnNldExhc3RVcGRhdGVUaW1lKGRhdGEu
cmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1lKTsKLSAgICBhdXRvIHJlZ2lzdHJhdGlvblB0ciA9
IHJlZ2lzdHJhdGlvbi5nZXQoKTsKLSAgICBhZGRSZWdpc3RyYXRpb24oV1RGTW92ZShyZWdpc3Ry
YXRpb24pKTsKLQotICAgIGF1dG8gd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmNyZWF0ZSgqdGhp
cywgKnJlZ2lzdHJhdGlvblB0ciwgZGF0YS5zY3JpcHRVUkwsIGRhdGEuc2NyaXB0LCBkYXRhLmNv
bnRlbnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZShkYXRhLnJlZmVycmVyUG9saWN5KSwgZGF0YS53
b3JrZXJUeXBlLCBkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEuc2Ny
aXB0UmVzb3VyY2VNYXApKTsKLSAgICByZWdpc3RyYXRpb25QdHItPnVwZGF0ZVJlZ2lzdHJhdGlv
blN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZTo6QWN0aXZlLCB3b3JrZXIucHRy
KCkpOwotICAgIHdvcmtlci0+c2V0U3RhdGUoU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQp
OworICAgIAorICAgIGdldEFwcEJvdW5kRG9tYWlucyhbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cih0aGlzKSwgZGF0YSA9IFdURk1vdmUoZGF0YSldICgpIG11dGFibGUgeworICAgICAgICBp
ZiAobV9oYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQgfHwgbV9hcHBCb3VuZERvbWFpbnMuY29u
dGFpbnMoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4oZGF0YS5zY3JpcHRVUkwpKSkgeworICAg
ICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBtYWtlVW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0
aW9uPigqdGhpcywgZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBkYXRhLnJlZ2lzdHJhdGlvbi51cGRh
dGVWaWFDYWNoZSwgZGF0YS5yZWdpc3RyYXRpb24uc2NvcGVVUkwsIGRhdGEuc2NyaXB0VVJMKTsK
KyAgICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2V0TGFzdFVwZGF0ZVRpbWUoZGF0YS5yZWdpc3Ry
YXRpb24ubGFzdFVwZGF0ZVRpbWUpOworICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25QdHIg
PSByZWdpc3RyYXRpb24uZ2V0KCk7CisgICAgICAgICAgICBhZGRSZWdpc3RyYXRpb24oV1RGTW92
ZShyZWdpc3RyYXRpb24pKTsKKworICAgICAgICAgICAgYXV0byB3b3JrZXIgPSBTV1NlcnZlcldv
cmtlcjo6Y3JlYXRlKCp0aGlzLCAqcmVnaXN0cmF0aW9uUHRyLCBkYXRhLnNjcmlwdFVSTCwgZGF0
YS5zY3JpcHQsIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LCBXVEZNb3ZlKGRhdGEucmVmZXJy
ZXJQb2xpY3kpLCBkYXRhLndvcmtlclR5cGUsIGRhdGEuc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFdURk1vdmUoZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCkpOworICAgICAgICAgICAgcmVnaXN0cmF0
aW9uUHRyLT51cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
U3RhdGU6OkFjdGl2ZSwgd29ya2VyLnB0cigpKTsKKyAgICAgICAgICAgIHdvcmtlci0+c2V0U3Rh
dGUoU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQpOworICAgICAgICB9CisgICAgfSk7CiB9
CiAKIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2
ZXJSZWdpc3RyYXRpb24+JiYgcmVnaXN0cmF0aW9uKQpAQCAtMzA1LDEyICszMDksMTQgQEAgdm9p
ZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6cmVtb3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklu
U2VydmVyKFNlcnZpY2VXb3JrZXIKICAgICBtX3NlcnZlci5yZW1vdmVDbGllbnRTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uKCp0aGlzLCBpZGVudGlmaWVyKTsKIH0KIAotU1dTZXJ2ZXI6OlNXU2Vy
dmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmIG9yaWdpblN0b3JlLCBib29sIHByb2Nlc3NU
ZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJl
Y3RvcnksIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU29mdFVwZGF0ZUNhbGxiYWNrJiYgc29m
dFVwZGF0ZUNhbGxiYWNrLCBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrJiYgY2FsbGJh
Y2spCitTV1NlcnZlcjo6U1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYgb3JpZ2lu
U3RvcmUsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiByZWdp
c3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29s
IGhhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCwgU29mdFVwZGF0ZUNhbGxiYWNrJiYgc29mdFVw
ZGF0ZUNhbGxiYWNrLCBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2ss
IEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrJiYgYXBwQm91bmREb21haW5zQ2FsbGJhY2spCiAgICAg
OiBtX29yaWdpblN0b3JlKFdURk1vdmUob3JpZ2luU3RvcmUpKQogICAgICwgbV9zZXNzaW9uSUQo
c2Vzc2lvbklEKQogICAgICwgbV9pc1Byb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZChwcm9j
ZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQpCiAgICAgLCBtX2NyZWF0ZUNvbnRleHRDb25uZWN0
aW9uQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCiAgICAgLCBtX3NvZnRVcGRhdGVDYWxsYmFj
ayhXVEZNb3ZlKHNvZnRVcGRhdGVDYWxsYmFjaykpCisgICAgLCBtX2FwcEJvdW5kRG9tYWluc0Nh
bGxiYWNrKFdURk1vdmUoYXBwQm91bmREb21haW5zQ2FsbGJhY2spKQorICAgICwgbV9oYXNTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnQoaGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KQogewogICAg
IFJFTEVBU0VfTE9HX0lGKHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSAm
JiAhbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSwgU2VydmljZVdvcmtlciwgIk5vIHBhdGggdG8g
c3RvcmUgdGhlIHNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbnMiKTsKICAgICBpZiAoIW1fc2Vz
c2lvbklELmlzRXBoZW1lcmFsKCkpCkBAIC0zMjIsMzEgKzMyOCw0NyBAQCBTV1NlcnZlcjo6U1dT
ZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYgb3JpZ2luU3RvcmUsIGJvb2wgcHJvY2Vz
c1Rlcm1pbmF0aQogICAgIGFsbFNlcnZlcnMoKS5hZGQodGhpcyk7CiB9CiAKK3ZvaWQgU1dTZXJ2
ZXI6OmdldEFwcEJvdW5kRG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2FwcEJvdW5kRG9tYWlucy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBtX2FwcEJvdW5kRG9tYWluc0NhbGxiYWNrKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShhdXRvJiYgYXBwQm91bmREb21haW5zKSBtdXRhYmxlIHsKKyAgICAgICAgbV9hcHBCb3Vu
ZERvbWFpbnMgPSBXVEZNb3ZlKGFwcEJvdW5kRG9tYWlucyk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgfSk7Cit9CisKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNl
V29ya2VyLyNzY2hlZHVsZS1qb2ItYWxnb3JpdGhtCiB2b2lkIFNXU2VydmVyOjpzY2hlZHVsZUpv
YihTZXJ2aWNlV29ya2VySm9iRGF0YSYmIGpvYkRhdGEpCiB7CiAgICAgQVNTRVJUKG1fY29ubmVj
dGlvbnMuY29udGFpbnMoam9iRGF0YS5jb25uZWN0aW9uSWRlbnRpZmllcigpKSB8fCBqb2JEYXRh
LmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgPT0gUHJvY2Vzczo6aWRlbnRpZmllcigpKTsKIAotICAg
IGF1dG8mIGpvYlF1ZXVlID0gKm1fam9iUXVldWVzLmVuc3VyZShqb2JEYXRhLnJlZ2lzdHJhdGlv
bktleSgpLCBbdGhpcywgJmpvYkRhdGFdIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1dT
ZXJ2ZXJKb2JRdWV1ZT4oKnRoaXMsIGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCkpOwotICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKLQotICAgIGlmICgham9iUXVldWUuc2l6ZSgpKSB7Ci0gICAgICAg
IGpvYlF1ZXVlLmVucXVldWVKb2IoV1RGTW92ZShqb2JEYXRhKSk7Ci0gICAgICAgIGpvYlF1ZXVl
LnJ1bk5leHRKb2IoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvJiBsYXN0Sm9i
ID0gam9iUXVldWUubGFzdEpvYigpOwotICAgIGlmIChqb2JEYXRhLmlzRXF1aXZhbGVudChsYXN0
Sm9iKSkgewotICAgICAgICAvLyBGSVhNRTogUGVyIHRoZSBzcGVjLCBjaGVjayBpZiB0aGlzIGpv
YiBpcyBlcXVpdmFsZW50IHRvIHRoZSBsYXN0IGpvYiBvbiB0aGUgcXVldWUuCi0gICAgICAgIC8v
IElmIGl0IGlzLCBzdGFjayBpdCBhbG9uZyB3aXRoIHRoYXQgam9iLiBGb3Igbm93LCB3ZSBqdXN0
IG1ha2Ugc3VyZSB0byBub3QgY2FsbCBzb2Z0LXVwZGF0ZSB0b28gb2Z0ZW4uCi0gICAgICAgIGlm
IChqb2JEYXRhLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVwZGF0ZSAmJiBqb2JEYXRh
LmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgPT0gUHJvY2Vzczo6aWRlbnRpZmllcigpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBnZXRBcHBCb3VuZERvbWFpbnMoW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGpvYkRhdGEgPSBXVEZNb3ZlKGpvYkRhdGEpXSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgaWYgKG1faGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50IHx8IG1f
YXBwQm91bmREb21haW5zLmNvbnRhaW5zKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKGpvYkRh
dGEuc2NyaXB0VVJMKSkpIHsKKyAgICAgICAgICAgIGF1dG8mIGpvYlF1ZXVlID0gKm1fam9iUXVl
dWVzLmVuc3VyZShqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpLCBbdGhpcywgJmpvYkRhdGFdIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlckpvYlF1ZXVlPigqdGhp
cywgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSk7CisgICAgICAgICAgICB9KS5pdGVyYXRvci0+
dmFsdWU7CiAKLSAgICBqb2JRdWV1ZS5lbnF1ZXVlSm9iKFdURk1vdmUoam9iRGF0YSkpOwotICAg
IGlmIChqb2JRdWV1ZS5zaXplKCkgPT0gMSkKLSAgICAgICAgam9iUXVldWUucnVuTmV4dEpvYigp
OworICAgICAgICAgICAgaWYgKCFqb2JRdWV1ZS5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICBq
b2JRdWV1ZS5lbnF1ZXVlSm9iKFdURk1vdmUoam9iRGF0YSkpOworICAgICAgICAgICAgICAgIGpv
YlF1ZXVlLnJ1bk5leHRKb2IoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBhdXRvJiBsYXN0Sm9iID0gam9iUXVldWUubGFzdEpvYigpOworICAg
ICAgICAgICAgaWYgKGpvYkRhdGEuaXNFcXVpdmFsZW50KGxhc3RKb2IpKSB7CisgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IFBlciB0aGUgc3BlYywgY2hlY2sgaWYgdGhpcyBqb2IgaXMgZXF1aXZh
bGVudCB0byB0aGUgbGFzdCBqb2Igb24gdGhlIHF1ZXVlLgorICAgICAgICAgICAgICAgIC8vIElm
IGl0IGlzLCBzdGFjayBpdCBhbG9uZyB3aXRoIHRoYXQgam9iLiBGb3Igbm93LCB3ZSBqdXN0IG1h
a2Ugc3VyZSB0byBub3QgY2FsbCBzb2Z0LXVwZGF0ZSB0b28gb2Z0ZW4uCisgICAgICAgICAgICAg
ICAgaWYgKGpvYkRhdGEudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VXBkYXRlICYmIGpv
YkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSA9PSBQcm9jZXNzOjppZGVudGlmaWVyKCkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGpv
YlF1ZXVlLmVucXVldWVKb2IoV1RGTW92ZShqb2JEYXRhKSk7CisgICAgICAgICAgICBpZiAoam9i
UXVldWUuc2l6ZSgpID09IDEpCisgICAgICAgICAgICAgICAgam9iUXVldWUucnVuTmV4dEpvYigp
OworICAgICAgICB9CisgICAgfSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnNjaGVkdWxlVW5yZWdp
c3RlckpvYihTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIgam9iRGF0YUlkZW50aWZpZXIs
IFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIERvY3VtZW50T3JXb3JrZXJJZGVu
dGlmaWVyIGNvbnRleHRJZGVudGlmaWVyLCBVUkwmJiBjbGllbnRDcmVhdGlvblVSTCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCAy
ODc5MjgzZWFlMGFmODNlOTU2Yzk5OGUzNWYwNDk0M2VlNzM1YzYzLi5iZWZkNWRiYzQ0Y2I1ZDFl
Y2E4ZjliNjRlNWY1NjljMmY0MDZkOTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0xMjYsNyArMTI2LDggQEAgcHVibGljOgog
CiAgICAgdXNpbmcgU29mdFVwZGF0ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChTZXJ2aWNlV29y
a2VySm9iRGF0YSYmIGpvYkRhdGEsIGJvb2wgc2hvdWxkUmVmcmVzaENhY2hlLCBSZXNvdXJjZVJl
cXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hS
ZXN1bHQmKT4mJik+OwogICAgIHVzaW5nIENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2sg
PSBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKT47Ci0gICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXIoVW5p
cXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFi
bGVkLCBTdHJpbmcmJiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFMOjpTZXNzaW9u
SUQsIFNvZnRVcGRhdGVDYWxsYmFjayYmLCBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNr
JiYpOworICAgIHVzaW5nIEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
JiYpPiYmKT47CisgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2lu
U3RvcmU+JiYsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiBy
ZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFMOjpTZXNzaW9uSUQsIGJvb2wgaGFzU2Vy
dmljZVdvcmtlckVudGl0bGVtZW50LCBTb2Z0VXBkYXRlQ2FsbGJhY2smJiwgQ3JlYXRlQ29udGV4
dENvbm5lY3Rpb25DYWxsYmFjayYmLCBBcHBCb3VuZERvbWFpbnNDYWxsYmFjayYmKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIH5TV1NlcnZlcigpOwogCkBAIC0yMTUsNiArMjE2LDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0VGVybWluYXRpb25EZWxheSA9
IDEwX3M7CiAKIHByaXZhdGU6CisgICAgdm9pZCBnZXRBcHBCb3VuZERvbWFpbnMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogICAgIHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChjb25z
dCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKIAogICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lz
dHJhdGlvblByb21pc2UoQ29ubmVjdGlvbiosIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmKTsKQEAgLTI2OSw2ICsyNzIsMTAgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWluczsKICAgICBW
ZWN0b3I8Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPj4gbV9pbXBvcnRDb21wbGV0ZWRDYWxsYmFj
a3M7CiAgICAgU29mdFVwZGF0ZUNhbGxiYWNrIG1fc29mdFVwZGF0ZUNhbGxiYWNrOworICAgIEFw
cEJvdW5kRG9tYWluc0NhbGxiYWNrIG1fYXBwQm91bmREb21haW5zQ2FsbGJhY2s7CisgICAgCisg
ICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9hcHBCb3VuZERvbWFpbnM7
CisgICAgYm9vbCBtX2hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCB7IGZhbHNlIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4
IGVlMTI1ZTU3ZTAxY2U2Mjg5Y2VhYzgyM2NjNDc3NTM0NzkyMjc2NWYuLjI3NzFjNWUzN2U5Nzhj
ZGU2MDIzMGZlMzM0ZjhmMDM5ZjQzMDI3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CkBAIC0xMjAsOCArMTIwLDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiBuZXQKICAgICBtX2Nvbm5l
Y3Rpb24tPm9wZW4oKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAobmV0
d29ya1Byb2Nlc3MucGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKQot
ICAgICAgICBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKKyAgICBlc3RhYmxpc2hTV1Nl
cnZlckNvbm5lY3Rpb24oKTsKICNlbmRpZgogfQogCkBAIC00MjEsMTUgKzQyMCw4IEBAIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1ib29s
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjppc1NlcnZpY2VXb3JrZXJBbGxvd2VkKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0hhc1Nl
cnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpOwotfQotCiBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdv
cmtlckZldGNoVGFzaz4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUZldGNo
VGFzayhOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogewotICAgIGlmICghaXNTZXJ2aWNlV29ya2VyQWxsb3dlZCgpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gc3dDb25uZWN0aW9uKCkuY3JlYXRlRmV0Y2hU
YXNrKGxvYWRlciwgcmVxdWVzdCk7CiB9CiAjZW5kaWYKQEAgLTQzNywxOCArNDI5LDE1IEBAIHN0
ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlRmV0CiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIGxv
YWRQYXJhbWV0ZXJzKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBib29sIGlz
U2VydmljZVdvcmtlckFsbG93ZWQgPSB0aGlzLT5pc1NlcnZpY2VXb3JrZXJBbGxvd2VkKCk7Ci0g
ICAgaWYgKGlzU2VydmljZVdvcmtlckFsbG93ZWQpIHsKLSAgICAgICAgYXV0byYgc2VydmVyID0g
bV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uKG1fc2Vzc2lvbklEKTsKLSAgICAg
ICAgaWYgKCFzZXJ2ZXIuaXNJbXBvcnRDb21wbGV0ZWQoKSkgewotICAgICAgICAgICAgc2VydmVy
LndoZW5JbXBvcnRJc0NvbXBsZXRlZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBsb2FkUGFyYW1ldGVycyA9IFdURk1vdmUobG9hZFBhcmFtZXRlcnMpXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgICAgIGlmICghbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24od2ViUHJvY2Vzc0lkZW50aWZpZXIoKSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JT
ZXNzaW9uKG1fc2Vzc2lvbklEKS5pc0ltcG9ydENvbXBsZXRlZCgpKTsKLSAgICAgICAgICAgICAg
ICBzY2hlZHVsZVJlc291cmNlTG9hZChXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSk7Ci0gICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIGF1dG8mIHNlcnZl
ciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbihtX3Nlc3Npb25JRCk7Cisg
ICAgaWYgKCFzZXJ2ZXIuaXNJbXBvcnRDb21wbGV0ZWQoKSkgeworICAgICAgICBzZXJ2ZXIud2hl
bkltcG9ydElzQ29tcGxldGVkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGxvYWRQYXJhbWV0ZXJzID0gV1RGTW92ZShsb2FkUGFyYW1ldGVycyldKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MtPndlYlByb2Nlc3NDb25uZWN0aW9uKHdl
YlByb2Nlc3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24obV9zZXNzaW9u
SUQpLmlzSW1wb3J0Q29tcGxldGVkKCkpOworICAgICAgICAgICAgc2NoZWR1bGVSZXNvdXJjZUxv
YWQoV1RGTW92ZShsb2FkUGFyYW1ldGVycykpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJu
OwogICAgIH0KICNlbmRpZgogICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRQYXJhbWV0ZXJzLmlk
ZW50aWZpZXI7CkBAIC00NTksMTAgKzQ0OCw4IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhCiAg
ICAgYXV0byYgbG9hZGVyID0gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmFkZChpZGVudGlmaWVy
LCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwg
KnRoaXMpKS5pdGVyYXRvci0+dmFsdWU7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgaWYgKGlzU2VydmljZVdvcmtlckFsbG93ZWQpIHsKLSAgICAgICAgbG9hZGVyLT5zdGFydFdp
dGhTZXJ2aWNlV29ya2VyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgbG9hZGVyLT5z
dGFydFdpdGhTZXJ2aWNlV29ya2VyKCk7CisgICAgcmV0dXJuOwogI2VuZGlmCiAgICAgbG9hZGVy
LT5zdGFydCgpOwogfQpAQCAtMTA0Myw3ICsxMDMwLDYgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCkK
IAogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
c3dDb25uZWN0aW9uKCkKIHsKLSAgICBBU1NFUlQoaXNTZXJ2aWNlV29ya2VyQWxsb3dlZCgpKTsK
ICAgICBpZiAoIW1fc3dDb25uZWN0aW9uKQogICAgICAgICBlc3RhYmxpc2hTV1NlcnZlckNvbm5l
Y3Rpb24oKTsKICAgICByZXR1cm4gKm1fc3dDb25uZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCmluZGV4IDAzODhiMWFkZmM1MGFhNzc5Yjg1ZWM1YWY3ZGE0N2I1MzYzZTFmOGIuLjFjZDMw
NjYzNmIwNjFmNDU0YjAzZGMwOWJjZmY2ZjEwNjQ5NmJiMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKQEAgLTIzNiw3ICsyMzYsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZXN0YWJsaXNoU1dD
b250ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCk7
CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7Ci0gICAgYm9vbCBpc1NlcnZpY2VX
b3JrZXJBbGxvd2VkKCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIHZvaWQgY3JlYXRlTmV3TWVzc2Fn
ZVBvcnRDaGFubmVsKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydDEs
IGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydDIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA1MmMwMTI5
N2IzZDRmNDU1MTY5YTM0YTQwMzBkMDQ2ZWE5OTY2N2E5Li43MDVkMDg4ZTQ3MjRlYzM2N2MyMWE2
ODQ5MmRhYjg1MjMwZjk5OGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzQ1LDEwICszNDUsOCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmJgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHBh
cmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSkgewotICAgICAgICBib29s
IHNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQgPSB0cnVlOwotICAg
ICAgICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBXVEZN
b3ZlKHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSksIHBhcmFt
ZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7
Ci0gICAgfQorICAgIGJvb2wgc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5h
YmxlZCA9IHRydWU7CisgICAgYWRkU2VydmljZVdvcmtlclNlc3Npb24oUEFMOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSwgc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
RW5hYmxlZCwgV1RGTW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkpLCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOwogI2VuZGlmCiAKICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5hZGQoc2Vz
c2lvbklELCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFn
ZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwpAQCAtNDM4LDggKzQzNiw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LSAgICBpZiAocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKQotICAg
ICAgICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihzZXNzaW9uSUQsIHBhcmFtZXRlcnMuc2Vydmlj
ZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXJhbWV0ZXJz
LnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBwYXJhbWV0ZXJzLnNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgIGFkZFNlcnZp
Y2VXb3JrZXJTZXNzaW9uKHNlc3Npb25JRCwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBXVEZNb3ZlKHBhcmFtZXRlcnMuc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeSksIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYKIAogICAgIG1fc3RvcmFnZU1h
bmFnZXJTZXQtPmFkZChzZXNzaW9uSUQsIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5
LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CkBAIC0y
NDU1LDExICsyNDUyLDEzIEBAIFNXU2VydmVyJiBOZXR3b3JrUHJvY2Vzczo6c3dTZXJ2ZXJGb3JT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAgICAgLy8gSWYgdGhlcmUncyBu
b3QsIHRoZW4gd2hlcmUgZGlkIHRoaXMgUEFMOjpTZXNzaW9uSUQgY29tZSBmcm9tPwogICAgICAg
ICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgfHwgIXBhdGguaXNFbXB0eSgpKTsKIAot
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09y
aWdpblN0b3JlPigpLCBpbmZvLnByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92
ZShwYXRoKSwgc2Vzc2lvbklELCBbdGhpcywgc2Vzc2lvbklEXShhdXRvJiYgam9iRGF0YSwgYm9v
bCBzaG91bGRSZWZyZXNoQ2FjaGUsIGF1dG8mJiByZXF1ZXN0LCBhdXRvJiYgY29tcGxldGlvbkhh
bmRsZXIpIG11dGFibGUgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlcj4obWFr
ZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBpbmZvLnByb2Nlc3NUZXJtaW5hdGlvbkRl
bGF5RW5hYmxlZCwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklELCBwYXJlbnRQcm9jZXNzSGFzU2Vy
dmljZVdvcmtlckVudGl0bGVtZW50KCksIFt0aGlzLCBzZXNzaW9uSURdKGF1dG8mJiBqb2JEYXRh
LCBib29sIHNob3VsZFJlZnJlc2hDYWNoZSwgYXV0byYmIHJlcXVlc3QsIGF1dG8mJiBjb21wbGV0
aW9uSGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBTZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlcjo6c3RhcnQobmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSwgV1RGTW92ZShqb2JEYXRh
KSwgc2hvdWxkUmVmcmVzaENhY2hlLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgICAgIH0sIFt0aGlzLCBzZXNzaW9uSURdKGF1dG8mIHJlZ2lzdHJh
YmxlRG9tYWluLCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgICAgIEFTU0VS
VCghcmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKTsKICAgICAgICAgICAgIHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
IHsgcmVnaXN0cmFibGVEb21haW4sIHNlc3Npb25JRCB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgMCk7CisgICAgICAgIH0sIFt0aGlzLCBzZXNzaW9uSURdKGF1dG8mJiBjb21wbGV0aW9u
SGFuZGxlcikgeworICAgICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpHZXRBcHBCb3VuZERv
bWFpbnMgeyBzZXNzaW9uSUQgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOwogICAg
ICAgICB9KTsKICAgICB9KTsKICAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CkBA
IC0yNDc1LDcgKzI0NzQsNiBAQCBXZWJTV09yaWdpblN0b3JlKiBOZXR3b3JrUHJvY2Vzczo6ZXhp
c3RpbmdTV09yaWdpblN0b3JlRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRAogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCiB7Ci0gICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29y
a2VyRW50aXRsZW1lbnQoKSk7CiAgICAgYXV0byogc3RvcmUgPSBleGlzdGluZ1NXT3JpZ2luU3Rv
cmVGb3JTZXNzaW9uKGNvbm5lY3Rpb24uc2Vzc2lvbklEKCkpOwogICAgIEFTU0VSVChzdG9yZSk7
CiAgICAgaWYgKHN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCmluZGV4IDA2NGJiMWNkY2M4YTI3MmEwMmM0Y2Y3NzNkMDJkYTQ2NTIzZDBlZmIu
LmQ3ZDZmOTY5ZjVmZTRiOTE1M2M4NjMwOGQ1YzE3ZmFiOTk3OGU4NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTMwNSw2ICszMDUsOCBA
QCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgcGFyZW50UHJv
Y2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpIGNvbnN0OworICAgIHZvaWQgZGlzYWJs
ZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpOworICAgIHZvaWQgY2xlYXJTZXJ2aWNlV29ya2Vy
RW50aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2Vsc2UK
ICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDIxOWQzOTFiNGZj
ZWZiMzk2NDI4ZjZiMmI2MTNlMzc3M2M4MGMzNTIuLjg1NzZiNDY0NmNhM2ExZjc4Y2JlMzYxMTM0
MjZlMWYzZDc0ZjdjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTcyLDQgKzE3Miw5IEBAIG1lc3Nh
Z2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICAKICAgICBIYXNBcHBC
b3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoYm9vbCBoYXNBcHBCb3Vu
ZFNlc3Npb24pIEFzeW5jCiAgICAgU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlKSAtPiAoKSBBc3luYworCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICBEaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkKKyAg
ICBDbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKCkgLT4gKCkgQXN5bmMKKyNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0
d29ya1Byb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3
b3JrUHJvY2Vzc0lPUy5tbQppbmRleCBlMTkyZjUwM2Y0NDVmZTUxMDA4MTAyZTYzNTk2MGVhMWUx
N2NlZjUyLi4xMGFiMzI0NGQxYzkxMWIyNzQ2OTg5YjdhMmRkZmQ0ZTVlYTc3YTBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lP
Uy5tbQpAQCAtNzQsMTIgKzc0LDI4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtVGVy
bWluYXRlKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitzdGF0aWMgYm9vbCBkaXNhYmxl
U2VydmljZVdvcmtlckVudGl0bGVtZW50VGVzdGluZ092ZXJyaWRlOworCiBib29sIE5ldHdvcmtQ
cm9jZXNzOjpwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgY29uc3QK
IHsKKyAgICBpZiAoZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudFRlc3RpbmdPdmVycmlk
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgc3RhdGljIGJvb2wgaGFzRW50aXRsZW1l
bnQgPSBXVEY6Omhhc0VudGl0bGVtZW50KHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnhwY0Nv
bm5lY3Rpb24oKSwgImNvbS5hcHBsZS5kZXZlbG9wZXIuV2ViS2l0LlNlcnZpY2VXb3JrZXJzIik7
CiAgICAgcmV0dXJuIGhhc0VudGl0bGVtZW50OwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpk
aXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkKK3sKKyAgICBkaXNhYmxlU2VydmljZVdv
cmtlckVudGl0bGVtZW50VGVzdGluZ092ZXJyaWRlID0gdHJ1ZTsKK30KKwordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgZGlzYWJsZVNlcnZp
Y2VXb3JrZXJFbnRpdGxlbWVudFRlc3RpbmdPdmVycmlkZSA9IGZhbHNlOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBy
ZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1s
CmluZGV4IGI2ZWIxMTRhYjkyMTVjYjEwZDk0NTk2Yzg2ZWJhZDcxZWNlZTc3ZmYuLjcyYTJhMGZm
NWQ2ZWM5YTdhMjJhMDJhN2QzMzYyZDBjMGMwZjA4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMTI3Myw2ICsxMjczLDExIEBAIE5lZWRzSW5BcHBCcm93
c2VyUHJpdmFjeVF1aXJrczoKICAgICB3ZWJjb3JlQmluZGluZzogUnVudGltZUVuYWJsZWRGZWF0
dXJlcwogICAgIGNhdGVnb3J5OiBkZWJ1ZwogCitTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNh
YmxlZEZvclRlc3Rpbmc6CisgICAgdHlwZTogYm9vbAorICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UK
KyAgICB3ZWJjb3JlQmluZGluZzogbm9uZQorCiAjIEZvciBleHBlcmltZW50YWwgZmVhdHVyZXM6
CiAjIFRoZSB0eXBlIHNob3VsZCBiZSBib29sZWFuLgogIyBZb3UgbXVzdCBwcm92aWRlIGEgaHVt
YW5SZWFkYWJsZU5hbWUgYW5kIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiBmb3IgYWxsIGV4cGVy
aW1lbnRhbCBmZWF0dXJlcy4gVGhleQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQppbmRleCA5YWFiYTBmODcwYWU5NDk4ODFiZTA3YWY5
NTAzMGZlZWUxNDlkMjU5Li5kMGFmM2JmOGM2ZWJiODBmZmRjZDM1NzdmZmM5M2FiYzIzYmI1ZGZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJl
bmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJl
bmNlcy5tbQpAQCAtOTIzLDYgKzkyMywxNiBAQCAtIChCT09MKV9pc0lUUERhdGFiYXNlRW5hYmxl
ZAogICAgIHJldHVybiBfcHJlZmVyZW5jZXMtPmlzSVRQRGF0YWJhc2VFbmFibGVkKCk7CiB9CiAK
Ky0gKEJPT0wpX3NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZworewor
ICAgIHJldHVybiBfcHJlZmVyZW5jZXMtPnNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVk
Rm9yVGVzdGluZygpOworfQorCistICh2b2lkKV9zZXRTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRE
aXNhYmxlZEZvclRlc3Rpbmc6KEJPT0wpZGlzYWJsZQoreworICAgIF9wcmVmZXJlbmNlcy0+c2V0
U2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nKGRpc2FibGUpOworfQor
CiAjaWYgUExBVEZPUk0oTUFDKQogLSAodm9pZClfc2V0SmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVz
OihCT09MKWVuYWJsZWQKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggN2NkMDUxODdmOTQwYmI2N2Y5
YWIwYzIxZjg5YTc5OTAwN2Q0YTVjNC4uNjc1Njc4OTNmNDRiNmJmOGUwOTY5MGY1NTE2MTYyZDQz
M2I5MTUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJlZmVyZW5jZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTE2NSw2ICsxNjUsNyBAQCB0eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBfV0tFZGl0YWJsZUxpbmtCZWhhdmlvcikgewogQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQ6KSBCT09M
IF9hY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzLjQpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1f
c2V0UmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZDopIEJPT0wgX3JlcXVlc3RBbmltYXRpb25G
cmFtZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfaXNJVFBEYXRh
YmFzZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFNlcnZpY2VXb3JrZXJF
bnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZzopIEJPT0wgX3NlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudERpc2FibGVkRm9yVGVzdGluZyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBzZXR0ZXI9X3NldFdlYkdMRW5hYmxlZDopIEJPT0wgX3dlYkdMRW5hYmxlZCBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGNhMjY4ZmFkYjRhN2EwYzM3M2FmZjlk
OTcwYjYxOWI1OWE2NWUxZDAuLmNlYzViYmQ1YjJiNWQ3NTI1NjQxZWRjYjk1ZDQzMjcwM2VjN2M5
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQpAQCAtMTIxLDYgKzEyMSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnku
aD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbXBvcnQgPFdlYkNvcmUv
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1
ZmZlci5oPgpAQCAtNTIzLDggKzUyNCw3IEBAIC0gKHZvaWQpX3NldHVwUGFnZUNvbmZpZ3VyYXRp
b246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYpcGFnZUNvbmZpZ3VyYXRpb24KICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIGlmICghV1RGOjpwcm9jZXNzSGFzRW50aXRsZW1lbnQoImNvbS5hcHBsZS5kZXZlbG9wZXIu
V2ViS2l0LlNlcnZpY2VXb3JrZXJzIikpCi0gICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVm
ZXJlbmNlcygpLT5zZXRTZXJ2aWNlV29ya2Vyc0VuYWJsZWQoZmFsc2UpOworICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNh
YmxlZEZvclRlc3RpbmcoISFbX2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLl9zZXJ2aWNlV29y
a2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3RpbmcpOwogI2VuZGlmCiAKICAgICBpZiAoIWxp
bmtlZE9uT3JBZnRlcihXZWJLaXQ6OlNES1ZlcnNpb246OkZpcnN0V2hlcmVTaXRlU3BlY2lmaWNR
dWlya3NBcmVFbmFibGVkQnlEZWZhdWx0KSkKQEAgLTI2NzAsNiArMjY3MCwxMyBAQCAtICh2b2lk
KV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25I
YW5kbGVyCiAgICAgfSk7CiB9CiAKKy0gKHZvaWQpX2NsZWFyU2VydmljZVdvcmtlckVudGl0bGVt
ZW50T3ZlcnJpZGU6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX3Bh
Z2UtPmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoW2NvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCiAtIChpZCA8X1dLSW5wdXREZWxlZ2F0ZT4pX2lu
cHV0RGVsZWdhdGUKIHsKICAgICByZXR1cm4gX2lucHV0RGVsZWdhdGUuZ2V0QXV0b3JlbGVhc2Vk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaAppbmRleCBlYmQ1ODdkZTA3MmUyYjU1MTliMzQ3YWUwMTE3ZTFiNmRjYzg0MDdk
Li43MTYwNmVkYzYyNmY2Mzc1YjdjMzY0N2IwNGNlYTZhNjVmZWY0ODIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAg
LTM0NSw2ICszNDUsNyBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIAogLSAodm9pZClfZ3JhbnRBY2Nl
c3NUb1ByZWZlcmVuY2VTZXJ2aWNlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpX2NsZWFyU2VydmljZVdvcmtlckVudGl0bGVt
ZW50T3ZlcnJpZGU6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAZW5kCiAKICNpZiBU
QVJHRVRfT1NfSVBIT05FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBkNzM3M2EwY2Q2NDFjNjY2NGU5MWEz
NmNiOGRhYTNhZGNkMzczOGU4Li5iYmFiYzRlMTFmM2FmYjc3ZDMyYzdmYWRmMWI3M2JlNWYyNGI3
OGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE0NjAsNiArMTQ2MCwxNiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OlNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKHNlc3Npb25JRCwgdmFsdWUpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
Z2V0QXBwQm91bmREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogc3RvcmUgPSB3ZWJzaXRlRGF0YVN0b3Jl
RnJvbVNlc3Npb25JRChzZXNzaW9uSUQpKSB7CisgICAgICAgIHN0b3JlLT5nZXRBcHBCb3VuZERv
bWFpbnMoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChh
dXRvJiBhcHBCb3VuZERvbWFpbnMpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byBhcHBCb3Vu
ZERvbWFpbnNDb3B5ID0gYXBwQm91bmREb21haW5zOworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShhcHBCb3VuZERvbWFpbnNDb3B5KSk7CisgICAgICAgIH0pOworICAgIH0g
ZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA2ODYxMGI3OTc4Yzg0YWZmOTM5MWQ5YzcxNTI3YzM5
NWY4OWMyZTczLi44NjU2N2FlOGU2NmNkZTA2ODUxZmZiYTYxOGI5MTZiODZjNDg4ZjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaApAQCAtMjI1LDcgKzIyNSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaGFzQXBwQm91
bmRTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKICAgICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklE
LCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIAorICAgIHZvaWQgZ2V0
QXBwQm91bmREb21haW5zKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKKwogcHJpdmF0ZToKICAg
ICAvLyBBdXhpbGlhcnlQcm9jZXNzUHJveHkKICAgICBBU0NJSUxpdGVyYWwgcHJvY2Vzc05hbWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAiTmV0d29ya2luZyJfczsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCmluZGV4IDg2YzgwMDBiY2FjN2ZlOGVhZTBiODQyYWFlN2U1OTM1NWRhMjQw
NjguLjczNjFhMzYzNWU4NmQyNmFhMjA0ZDZkZjkzMzg5NjU5N2JlYzk4NTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTY1LDYgKzY1LDggQEAgbWVzc2FnZXMgLT4gTmV0d29y
a1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICAgICBVbnJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
d2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJQcm9jZXNzSWRlbnRpZmllcikKICNlbmRpZgogCisgICAgR2V0QXBwQm91bmREb21haW5z
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+IGFwcEJvdW5kRG9tYWlucykgQXN5bmMKKwogICAgIFJlcXVlc3RTdG9yYWdlU3Bh
Y2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
IG9yaWdpbiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBz
cGFjZVJlcXVpcmVkKSAtPiAoT3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKSBBc3luYwogICAg
IAogICAgIFJlc291cmNlTG9hZERpZFNlbmRSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyBy
ZXNvdXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgT3B0aW9u
YWw8SVBDOjpGb3JtRGF0YVJlZmVyZW5jZT4gaHR0cEJvZHkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjN2YxNjg2OGYwYzM5YTQ0MDA5M2ZhODZlMDdjODZm
YzhiNjNjYjk2Li42YWQ1ZjE0N2YzMmU3ZTExMTlkZmIzMzEwNGEwMWQ0NDg1NmE4NTJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE3OSw2ICsxNzksNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93RmVhdHVyZXMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1dyaXRpbmdEaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi9D
YWxsYmFja0FnZ3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgpAQCAt
NTIwLDYgKzUyMSw5IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBh
Z2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUmVmCiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0RGlzYWJsZVNjcmVl
blNpemVPdmVycmlkZShtX3ByZWZlcmVuY2VzLT5kaXNhYmxlU2NyZWVuU2l6ZU92ZXJyaWRlKCkp
OworICAgIAorICAgIGlmIChtX2NvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNlcnZpY2VX
b3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZygpKQorICAgICAgICBkaXNhYmxlU2Vy
dmljZVdvcmtlckVudGl0bGVtZW50SW5OZXR3b3JrUHJvY2VzcygpOwogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKQEAgLTMxNTUsNiArMzE1OSwzMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpblRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChibwogICAgIGNvbXBsZXRpb25IYW5kbGVyKG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biAmJiAoKm1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9PSBOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbjo6WWVzKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaXNhYmxlU2Vydmlj
ZVdvcmtlckVudGl0bGVtZW50SW5OZXR3b3JrUHJvY2VzcygpCit7CisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBtX3Byb2Nlc3MtPnByb2Nl
c3NQb29sKCkubmV0d29ya1Byb2Nlc3MoKSkgeworICAgICAgICBpZiAoIW5ldHdvcmtQcm9jZXNz
LT5jYW5TZW5kTWVzc2FnZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBuZXR3b3Jr
UHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRpc2FibGVTZXJ2aWNlV29y
a2VyRW50aXRsZW1lbnQoKSwgMCk7CisgICAgfQorI2VuZGlmCit9CisKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpjbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bv
b2woKS5uZXR3b3JrUHJvY2VzcygpKSB7CisgICAgICAgIGlmICghbmV0d29ya1Byb2Nlc3MtPmNh
blNlbmRNZXNzYWdlKCkpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNsZWFyU2VydmljZVdvcmtl
ckVudGl0bGVtZW50T3ZlcnJpZGUoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
IH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNvbXBsZXRpb25IYW5kbGVyKTsKKyNlbmRpZgor
fQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24o
UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBQ
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQs
IFdlYkZyYW1lUHJveHkmIGZyYW1lLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgcG9s
aWNpZXMsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7CiAgICAgUmVmPFdl
YnNpdGVEYXRhU3RvcmU+IHdlYnNpdGVEYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3RvcmUuY29w
eVJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3YWQ0MWM1
ODRmOWIxNmZlNmFlNzgxMTJkOWRhODRiNTQzODBmZjdlLi4wYmUzMjFiYWVlOWNkYTI4Y2RjNjM2
YWNkZGM0NzY3MmEwNzk5NDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMTcyOSw2ICsxNzI5LDkgQEAgcHVibGljOgogICAgIHZvaWQgaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpblRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAg
ICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4oKSBjb25zdCB7IHJldHVybiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW47IH0KIAorICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudEluTmV0d29y
a1Byb2Nlc3MoKTsKKyAgICB2b2lkIGNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJp
ZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICAgICAgCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgdm9pZCBncmFudEFjY2Vzc1RvQ3VycmVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGEyMDY2NTgzYTFkNWU1NjExYzQ3MzA2YTlk
MjY1YmEyOTE3YTk5NzguLmY3Zjg1YzUyMjM1YjE1MmU4NDk4ZGQwMTJmNDkwMmI0ZGZkZDBkNWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0z
NjcxLDE0ICszNjcxLDYgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVm
ZXJlbmNlc0tleTo6c2VydmljZVdvcmtlcnNFbmFibGVkS2V5KCkpKSB7Ci0gICAgICAgIEFTU0VS
VChwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkpOwotICAgICAgICBp
ZiAoIXBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSkKLSAgICAgICAg
ICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2VydmljZVdv
cmtlckVuYWJsZWQoZmFsc2UpOwotICAgIH0KLSNlbmRpZgotCiAgICAgc2V0dGluZ3Muc2V0TGF5
b3V0Vmlld3BvcnRIZWlnaHRFeHBhbnNpb25GYWN0b3Ioc3RvcmUuZ2V0RG91YmxlVmFsdWVGb3JL
ZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmxheW91dFZpZXdwb3J0SGVpZ2h0RXhwYW5zaW9uRmFjdG9y
S2V5KCkpKTsKIAogICAgIG1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzID0gc3RvcmUu
Z2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpuZWVkc0luQXBwQnJvd3NlclBy
aXZhY3lRdWlya3NLZXkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKaW5kZXggZTE4ZWMxY2Y0YmI5YjY2ZDZhYTFmY2JhZTI1NDIyZWQ3YTkxM2VmOS4uMzRj
MWQ4MTc3MTVmZWZmNDI0NTBhNDBmYTgyMjQxODQ3YTBjYzFlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTUxOCwxMiArMTUxOCw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
Jik7CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc0dlbmVyYXRlZChjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJik7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGJvb2wgcGFyZW50
UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpIGNvbnN0OwotI2Vsc2UKLSAgICBi
b29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9Ci0jZW5kaWYKLQogICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5RGVj
aXNpb24mJik7CiAgICAgdm9pZCBjb250aW51ZVdpbGxTdWJtaXRGb3JtKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCk7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQo
Y29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDM0YTg0NzNlNGFhYWEwNDAxNTdhNGFmZDJiNWI5ZmM5
MDkwYTI5N2IuLjc4NDViOWU3YzdmZGU5MGZiZTA4YmRmZGE4M2YzYWI5MDNmZWE3MDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CkBAIC00ODgsMTIgKzQ4OCw2IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJk
RXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgcmV0dXJuIHNlbmRSZXN1bHQgJiYgZXZl
bnRXYXNIYW5kbGVkOwogfQogCi1ib29sIFdlYlBhZ2U6OnBhcmVudFByb2Nlc3NIYXNTZXJ2aWNl
V29ya2VyRW50aXRsZW1lbnQoKSBjb25zdAotewotICAgIHN0YXRpYyBib29sIGhhc0VudGl0bGVt
ZW50ID0gV1RGOjpoYXNFbnRpdGxlbWVudChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCksICJjb20uYXBwbGUuZGV2ZWxvcGVy
LldlYktpdC5TZXJ2aWNlV29ya2VycyIpOwotICAgIHJldHVybiBoYXNFbnRpdGxlbWVudDsKLX0K
LQogdm9pZCBXZWJQYWdlOjpzZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHVpbnQ2NF90LCBj
b25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmNkYzAyZWYyNDBlZTg5ZjkwYjc0
YWE2ZWY2ZmYwZTllY2IzNjExOC4uNjIyZjEyMDk0MjJmZTViNGJkYTVlMWE1N2E1M2QwN2YzZmUz
N2YzZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIwIEBACisyMDIwLTA0LTE2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVu
ZXlAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBzZXJ2aWNlIHdvcmtlcnMgZm9yIGFwcC1i
b3VuZCBkb21haW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTA0NTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxNDc5NDc0PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgMiB0ZXN0IGNhc2Vz
IHRvIG1ha2Ugc3VyZSBzZXJ2aWNlIHdvcmtlcnMgYmVoYXZlIHByb3Blcmx5IG9uCisgICAgICAg
IGFwcCBib3VuZCBkb21haW5zLiBEb2VzIG5vdCB0ZXN0IG5vbi1hcHAgYm91bmQgZG9tYWlucyBi
ZWNhdXNlIHRoZXNlCisgICAgICAgIFdlYlZpZXdzIGRpc2FibGUgbWVzc2FnZSBoYW5kbGVycyB3
aGljaCBpcyBjdXJyZW50bHkgdGhlIG9ubHkKKyAgICAgICAgaW5mcmFzdHJ1Y3R1cmUgaW4gcGxh
Y2UgdG8gdGVzdCBzZXJ2aWNlIHdvcmtlcnMuIFRoZXNlIHdpbGwgYmUgYWRkZWQKKyAgICAgICAg
aW4gYSBmb2xsb3d1cCBwYXRjaC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbToKKyAgICAgICAgKC1bU1dJbkFwcEJyb3dz
ZXJQcml2YWN5TWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVT
Y3JpcHRNZXNzYWdlOl0pOgorCiAyMDIwLTA0LTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIHNsYWNrLWF3YXJlIFdLUiBpbXBsZW1lbnRhdGlvbgpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJy
b3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDY4YmU4MWIxYjkzNTNjYjAxMWUxNjhjMWRjNGNh
ODQ4OWVlODk2OGQuLjEwMmMxNmRhM2I0MThlOWVjNGY1MGRhMzdlMjkyZjZiNmY5ZmZmMjggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93
c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiU2VydmljZVdv
cmtlclRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2lt
cG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4
dHJhcy5oIgpAQCAtNzQzLDYgKzc0NCwxNTYgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBH
ZXRDb29raWVGb3JVUkxGYWlscykKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OwogfQogCitAaW50ZXJmYWNlIFNXSW5BcHBCcm93c2VyUHJpdmFjeU1lc3NhZ2VIYW5kbGVyIDog
TlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBTV0luQXBwQnJvd3NlclByaXZhY3lNZXNzYWdlSGFuZGxlcgorLSAodm9pZCl1c2VyQ29udGVu
dENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9s
bGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdlCit7
CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtl
ciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIiwgW21lc3NhZ2UgYm9k
eV0pOworICAgIGlzRG9uZSA9IHRydWU7Cit9CitAZW5kCisKK3N0YXRpYyBjb25zdCBjaGFyKiBt
YWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCis8c2NyaXB0PgorCitmdW5jdGlvbiBsb2cobXNnKQor
eworICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnN3LnBvc3RNZXNzYWdlKG1zZyk7
Cit9CisKK25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2Ui
LCBmdW5jdGlvbihldmVudCkgeworICAgIGxvZygiTWVzc2FnZSBmcm9tIHdvcmtlcjogIiArIGV2
ZW50LmRhdGEpOworfSk7CisKK3RyeSB7CisKK25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lz
dGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgeworICAgIHdvcmtlciA9IHJlZy5pbnN0
YWxsaW5nID8gcmVnLmluc3RhbGxpbmcgOiByZWcuYWN0aXZlOworICAgIHdvcmtlci5wb3N0TWVz
c2FnZSgiSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIik7Cit9KS5jYXRjaChmdW5jdGlv
bihlcnJvcikgeworICAgIGxvZygiUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoOiAiICsgZXJyb3Ip
OworfSk7Cit9IGNhdGNoKGUpIHsKKyAgICBsb2coIkV4Y2VwdGlvbjogIiArIGUpOworfQorCis8
L3NjcmlwdD4KKylTV1JFU09VUkNFIjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVz
ID0gUiJTV1JFU09VUkNFKAorCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZl
bnQpID0+IHsKKyAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVj
ZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKK30pOworCispU1dSRVNPVVJDRSI7CisKK1RFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKK3sK
KyAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOworICAgIGlz
RG9uZSA9IGZhbHNlOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIG1lc3NhZ2VIYW5kbGVy
ID0gYWRvcHROUyhbW1NXSW5BcHBCcm93c2VyUHJpdmFjeU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBp
bml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CisgICAg
W2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLl9zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNh
YmxlZEZvclRlc3RpbmcgPSBZRVM7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgU2VydmljZVdvcmtlclRD
UFNlcnZlciBzZXJ2ZXIxKHsKKyAgICAgICAgeyAidGV4dC9odG1sIiwgbWFpbkJ5dGVzIH0sCisg
ICAgICAgIHsgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRlc30sCisgICAgfSk7
CisKKyAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFs
bE9yaWdpbnNdOworCisgICAgLy8gU3RhcnQgd2l0aCBhIGNsZWFuIHNsYXRlIGRhdGEgc3RvcmUK
KyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZU
eXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2lu
Y2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAg
aXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZSk7CisgICAgaXNEb25lID0gZmFsc2U7CisgICAgCisgICAgLy8gRXhwZWN0IHRoZSBzZXJ2
aWNlIHdvcmtlciBsb2FkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpzZXJ2ZXIxLnJlcXVlc3RXaXRoTG9jYWxob3N0KCldOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKworICAgIFtb
V0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIGZldGNoRGF0YVJlY29yZHNPZlR5
cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0OldLV2Vic2l0ZURhdGFUeXBlU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbnNdIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVj
b3JkICo+ICp3ZWJzaXRlRGF0YVJlY29yZHMpIHsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBbd2Vi
c2l0ZURhdGFSZWNvcmRzIGNvdW50XSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSh3ZWJzaXRl
RGF0YVJlY29yZHNbMF0uZGlzcGxheU5hbWUsICJsb2NhbGhvc3QiKTsKKyAgICAgICAgaXNEb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25l
KTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKworICAgIC8vIFJlc2V0IHNlcnZpY2Ugd29ya2VyIGVu
dGl0bGVtZW50LgorICAgIFt3ZWJWaWV3IF9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92
ZXJyaWRlOl4odm9pZCkgeworICAgICAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RT
ZXR0aW5ncygpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKK30KKworVEVT
VChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpblRvQXBwQm91bmRBbGxvd1Nl
cnZpY2VXb3JrZXJzKQoreworICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNl
dHRpbmdzKCk7CisgICAgaXNEb25lID0gZmFsc2U7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1
dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVyIGFs
bG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hl
bWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImluLWFwcC1icm93c2VyIl07CisgICAgLy8g
RGlzYWJsZSBlbnRpdGxlbWVudCB3aGljaCBhbGxvd3Mgc2VydmljZSB3b3JrZXJzLgorICAgIFtj
b25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS5fc2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJs
ZWRGb3JUZXN0aW5nID0gWUVTOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIFNlcnZpY2VXb3JrZXJUQ1BT
ZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAidGV4dC9odG1sIiwgbWFpbkJ5dGVzIH0sCisgICAg
ICAgIHsgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRlc30sCisgICAgfSk7CisK
KyAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9y
aWdpbnNdOworCisgICAgLy8gU3RhcnQgd2l0aCBhIGNsZWFuIHNsYXRlIGRhdGEgc3RvcmUKKyAg
ICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBl
czpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6
W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgaXNE
b25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CisKKyAgICAvLyBMb2FkIGEgbm9uLWFwcCBib3VuZCBkb21haW4uCisgICAgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11
c2VyLXN0eWxlLXNoZWV0cyJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsK
KyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICAv
LyBFeHBlY3QgdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQgZm9yIGFuIGFwcC1ib3VuZCBkb21haW4g
dG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgorICAgIC8vIFNpbmNlIG1lc3NhZ2UgaGFuZGxlcnMg
YXJlIGVuYWJsZWQgYWZ0ZXIgbmF2aWdhdGluZyB0byBhIG5vbi1hcHAtYm91bmQgZG9tYWluLAor
ICAgIC8vIHdlIGNhbm5vdCBleHBlY3QgYSBtZXNzYWdlIGZyb20gdGhlIHNlcnZpY2Ugd29ya2Vy
IGhlcmUuCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxo
b3N0KCldOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsK
KworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIGZldGNoRGF0YVJl
Y29yZHNPZlR5cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0OldLV2Vic2l0ZURhdGFUeXBlU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbnNdIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNp
dGVEYXRhUmVjb3JkICo+ICp3ZWJzaXRlRGF0YVJlY29yZHMpIHsKKyAgICAgICAgRVhQRUNUX0VR
KDF1LCBbd2Vic2l0ZURhdGFSZWNvcmRzIGNvdW50XSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJF
USh3ZWJzaXRlRGF0YVJlY29yZHNbMF0uZGlzcGxheU5hbWUsICIxMjcuMC4wLjEiKTsKKyAgICAg
ICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmaXNEb25lKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICAKKyAgICAvLyBSZXNldCBzZXJ2
aWNlIHdvcmtlciBlbnRpdGxlbWVudC4KKyAgICBbd2ViVmlldyBfY2xlYXJTZXJ2aWNlV29ya2Vy
RW50aXRsZW1lbnRPdmVycmlkZTpeKHZvaWQpIHsKKyAgICAgICAgY2xlYW5VcEluQXBwQnJvd3Nl
clByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgaXNEb25lID0gZmFs
c2U7Cit9CisKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiAjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396814</attachid>
            <date>2020-04-17 16:21:12 -0700</date>
            <delta_ts>2020-04-17 16:30:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210451-20200417162111.patch</filename>
            <type>text/plain</type>
            <size>57213</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmVjNzkwNjFmM2E1Nzlh
ZDkzNDU4ZDlkZTgwZGI3NDFmMTkxMjJhYi4uYjM4NmQ1NDhmZDJkNWQ5NDc2YzNiMmE2ZGQ1MjIx
ZDMwMjVkZmEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA0LTE3ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBz
ZXJ2aWNlIHdvcmtlcnMgZm9yIGFwcC1ib3VuZCBkb21haW5zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA0NTEKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzYxNDc5NDc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNXU2VydmVyIG5vdyByZXRyaWV2ZXMgdGhlIGFwcC1ib3VuZCBkb21haW5zIGZyb20g
dGhlIFVJIFByb2Nlc3MgYW5kCisgICAgICAgIG9ubHkgY29udGludWVzIHdpdGggdGhlIGxvYWQg
aWYgdGhlIHByb3BlciBlbnRpdGxlbWVudCBpcyBwcmVzZW50CisgICAgICAgIG9yIHRoZSBsb2Fk
IGlzIGNvbWluZyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4uCisKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
OjphZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OlNXU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp2YWxpZGF0ZVJlZ2lzdHJh
dGlvbkRvbWFpbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2NoZWR1bGVKb2IpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKwogMjAyMC0wNC0x
NyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFr
ZV0gQWRkIFdlYktpdDo6V2ViQ29yZSB0YXJnZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODA2NmY4ZWEwODdkY2M1
NWNjMzUxZGI0ZDIzMjk4NDg3OTdmZTZlYi4uZjQ0YmZlZDJiMWZiNjVkMTFmNzJkOGVmMTc3ZmVj
NWQ0N2ZiMDI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTQgQEAKKzIwMjAtMDQtMTcgIEthdGUg
Q2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIHNl
cnZpY2Ugd29ya2VycyBmb3IgYXBwLWJvdW5kIGRvbWFpbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQ1MQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjE0Nzk0NzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVG
ZXRjaFRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6c2NoZWR1bGVSZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c3dDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmlzU2VydmljZVdvcmtlckFsbG93ZWQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmg6CisgICAgICAgIFJlbW92ZWQgQVNTRVJUUyBhbmQgc2VydmljZSB3b3JrZXIgZW50
aXRsZW1lbnQgY2hlY2tzIHdoaWNoIGFyZSBub3cgZG9uZSBhbG9uZyB3aXRoIGFwcC1ib3VuZAor
ICAgICAgICBkb21haW4gY2hlY2tzIGluIFNXU2VydmVyLmNwcC4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgUmVtb3ZlIHRoZSBjaGVj
ayBmb3IgcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpIGJlZm9yZQor
ICAgICAgICBhZGRpbmcgYSBzZXJ2aWNlV29ya2VyU2Vzc2lvbi4gVGhpcyBkb2Vzbid0IGRvIGFu
eXRoaW5nIGV4Y2VwdCBhZGQgYW4KKyAgICAgICAgZW50cnkgdG8gYSBtYXAsIGFuZCBzaW1wbGlm
aWVzIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSBzZXNzaW9uIGZvcgorICAgICAgICBhcHAtYm91
bmQgaW5zdGFuY2VzIHdoaWNoIHNob3VsZCBoYXZlIHNlcnZpY2Ugd29ya2VycyBidXQgaGF2ZSBu
byBlbnRpdGxlbWVudC4KKworICAgICAgICBQYXNzIHRoZSBlbnRpdGxlbWVudCBhbmQgYSBuZXcg
Y2FsbGJhY2sgdG8gcmVxdWVzdCBhcHAtYm91bmQgZG9tYWlucworICAgICAgICBmcm9tIHRoZSBV
SSBQcm9jZXNzIHRvIHRoZSBTV1NlcnZlci4gVGhpcyB3aWxsIG1ha2Ugc3VyZSB0aGUgc2VydmVy
CisgICAgICAgIGNoZWNrcyBmb3IgdGhlIGVudGl0bGVtZW50IG9yIGxpc3Qgb2YgYXBwLWJvdW5k
IGRvbWFpbnMgYmVmb3JlIGNvbXBsZXRpbmcgYSBsb2FkLgorCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIFJlbW92
ZSB1bm5lY2Vzc2FyeSBBU1NFUlQgZm9yIGVudGl0bGVtZW50LgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0
d29ya1Byb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwYXJl
bnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnRPdmVycmlkZSk6CisgICAgICAgIEluIG9yZGVyIHRvIHRlc3QgdGhpcyB0aG9yb3VnaGx5
LCBUZXN0V2ViS2l0QVBJIG5lZWRlZCBhIHdheSB0bworICAgICAgICB0ZW1wb3JhcmlseSBkaXNh
YmxlIHRoZSBzZXJ2aWNlIHdvcmtlciBlbnRpdGxlbWVudC4gVGhpcyBmdW5jdGlvbgorICAgICAg
ICBvdmVycmlkZXMgdGhlIGNoZWNrIGZvciB0aGUgZW50aXRsZW1lbnQgaWYgdGhlIGJvb2wgaXMg
c2V0LCBkaXNhYmxpbmcKKyAgICAgICAgdGhlIGVudGl0bGVtZW50LgorCisgICAgICAgICogU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIFdlYlBhZ2UgbmVlZHMgdG8ga25vdyBp
ZiBpdCBpcyBhcHAtYm91bmQgd2hlbiBjcmVhdGVkIHNvIGl0IGNhbiB1cGRhdGUKKyAgICAgICAg
dGhlIHNlcnZpY2Ugd29ya2VyIHByZWZlcmVuY2VzIGtleSBhY2NvcmRpbmdseS4KKworICAgICAg
ICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV0tQcmVmZXJlbmNlcyBfc2Vydmlj
ZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nXSk6CisgICAgICAgICgtW1dLUHJl
ZmVyZW5jZXMgX3NldFNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZzpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6
CisgICAgICAgIERpc2FibGUgZW50aXRsZW1lbnQgZm9yIHRlc3RpbmcuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246Omxp
bWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgY29uc3QpOgorICAgICAgICAoQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbjo6c2V0TGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyk6
CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpsaW1pdHNOYXZpZ2F0aW9uVG9BcHBC
b3VuZERvbWFpbnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJh
dGlvbjo6c2V0TGltaXRzTmF2aWdhdGlvblRvQXBwQm91bmREb21haW5zKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zXSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0TGltaXRz
TmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBsaW1pdHNOYXZpZ2F0aW9uVG9BcHBCb3VuZERvbWFpbnNdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRMaW1pdHNOYXZpZ2F0aW9uVG9B
cHBCb3VuZERvbWFpbnM6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICBJbmNvbnNpc3RlbnQgbmFtaW5n
IChOYXZpZ2F0aW9uIHZzIE5hdmlnYXRpb25zKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldHVwUGFnZUNvbmZp
Z3VyYXRpb246XSk6CisgICAgICAgIENoZWNrIGZvciBlbnRpdGxlbWVudCBvciBhcHAtYm91bmQg
d2Vidmlldy4KKworICAgICAgICAoLVtXS1dlYlZpZXcgX3NlcnZpY2VXb3JrZXJzRW5hYmxlZDpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92
ZXJyaWRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oOgorICAgICAgICBUZXN0aW5nIFNQSXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6Z2V0QXBwQm91bmREb21haW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgU2VuZHMgdGhlIGFwcC1ib3Vu
ZCBkb21haW5zIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uc1Rv
QXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uVG9B
cHBCb3VuZERvbWFpbnMpOiBEZWxldGVkLgorICAgICAgICBOYW1pbmcgaW5jb25zaXN0ZW5jeS4K
KworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnRJbk5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpjbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIERpc2FibGUgZW50aXRsZW1lbnQgZm9yIHRl
c3RpbmcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Om1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik6CisgICAgICAgIFNl
dCB0aGlzIHBhcmFtZXRlciBpbiB0aGUgY29uc3RydWN0b3Igc28gaXQgd2lsbCBiZSBhY2N1cmF0
ZSB3aGVuCisgICAgICAgIHVwZGF0aW5nIHByZWZlcmVuY2VzLgorCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjbGVhclNlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudE92ZXJyaWRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBhcmVudFByb2Nlc3NIYXNTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpk
aXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZSk6CisgICAgICAgIERpc2Fi
bGUgZW50aXRsZW1lbnQgZm9yIHRlc3RpbmcuCisKIDIwMjAtMDQtMTcgIFBlciBBcm5lIFZvbGxh
biAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIERlbnkgaW9raXQgb3BlbiBh
Y2Nlc3Mgb2YgdW51c2VkIGNsYXNzIGluIHRoZSBXZWJDb250ZW50IHNhbmRib3gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXgg
MjhkOWZmYWU3M2NjMDRmYmVjN2MzMjYzZmU4Y2E1MmQ5MWExNWU2OS4uOWUzNTJmZjlkM2QyYWEy
MThlOWQ2MjZlN2VmNTkxMmE0ODgyOTg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTE1NSwxNSArMTU1LDIxIEBAIHZv
aWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmJiBkYXRhKQogewogICAgIC8vIFBhZ2VzIHNob3VsZCBub3QgaGF2ZSBiZWVuIGFibGUg
dG8gbWFrZSBhIG5ldyByZWdpc3RyYXRpb24gdG8gdGhpcyBrZXkgd2hpbGUgdGhlIGltcG9ydCB3
YXMgc3RpbGwgdGFraW5nIHBsYWNlLgogICAgIEFTU0VSVCghbV9zY29wZVRvUmVnaXN0cmF0aW9u
TWFwLmNvbnRhaW5zKGRhdGEucmVnaXN0cmF0aW9uLmtleSkpOwotCi0gICAgYXV0byByZWdpc3Ry
YXRpb24gPSBtYWtlVW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPigqdGhpcywgZGF0YS5yZWdp
c3RyYXRpb24ua2V5LCBkYXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSwgZGF0YS5yZWdp
c3RyYXRpb24uc2NvcGVVUkwsIGRhdGEuc2NyaXB0VVJMKTsKLSAgICByZWdpc3RyYXRpb24tPnNl
dExhc3RVcGRhdGVUaW1lKGRhdGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1lKTsKLSAgICBh
dXRvIHJlZ2lzdHJhdGlvblB0ciA9IHJlZ2lzdHJhdGlvbi5nZXQoKTsKLSAgICBhZGRSZWdpc3Ry
YXRpb24oV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKLQotICAgIGF1dG8gd29ya2VyID0gU1dTZXJ2
ZXJXb3JrZXI6OmNyZWF0ZSgqdGhpcywgKnJlZ2lzdHJhdGlvblB0ciwgZGF0YS5zY3JpcHRVUkws
IGRhdGEuc2NyaXB0LCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZShkYXRhLnJl
ZmVycmVyUG9saWN5KSwgZGF0YS53b3JrZXJUeXBlLCBkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBXVEZNb3ZlKGRhdGEuc2NyaXB0UmVzb3VyY2VNYXApKTsKLSAgICByZWdpc3RyYXRpb25Q
dHItPnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0
ZTo6QWN0aXZlLCB3b3JrZXIucHRyKCkpOwotICAgIHdvcmtlci0+c2V0U3RhdGUoU2VydmljZVdv
cmtlclN0YXRlOjpBY3RpdmF0ZWQpOworICAgIAorICAgIHZhbGlkYXRlUmVnaXN0cmF0aW9uRG9t
YWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKGRhdGEuc2NyaXB0VVJMKSwgW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSAoYm9vbCBp
c1ZhbGlkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgaWYgKG1faGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50IHx8IGlzVmFs
aWQpIHsKKyAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gbWFrZVVuaXF1ZTxTV1NlcnZl
clJlZ2lzdHJhdGlvbj4oKnRoaXMsIGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5yZWdpc3Ry
YXRpb24udXBkYXRlVmlhQ2FjaGUsIGRhdGEucmVnaXN0cmF0aW9uLnNjb3BlVVJMLCBkYXRhLnNj
cmlwdFVSTCk7CisgICAgICAgICAgICByZWdpc3RyYXRpb24tPnNldExhc3RVcGRhdGVUaW1lKGRh
dGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1lKTsKKyAgICAgICAgICAgIGF1dG8gcmVnaXN0
cmF0aW9uUHRyID0gcmVnaXN0cmF0aW9uLmdldCgpOworICAgICAgICAgICAgYWRkUmVnaXN0cmF0
aW9uKFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CisKKyAgICAgICAgICAgIGF1dG8gd29ya2VyID0g
U1dTZXJ2ZXJXb3JrZXI6OmNyZWF0ZSgqdGhpcywgKnJlZ2lzdHJhdGlvblB0ciwgZGF0YS5zY3Jp
cHRVUkwsIGRhdGEuc2NyaXB0LCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZShk
YXRhLnJlZmVycmVyUG9saWN5KSwgZGF0YS53b3JrZXJUeXBlLCBkYXRhLnNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEuc2NyaXB0UmVzb3VyY2VNYXApKTsKKyAgICAgICAgICAg
IHJlZ2lzdHJhdGlvblB0ci0+dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvblN0YXRlOjpBY3RpdmUsIHdvcmtlci5wdHIoKSk7CisgICAgICAgICAgICB3b3Jr
ZXItPnNldFN0YXRlKFNlcnZpY2VXb3JrZXJTdGF0ZTo6QWN0aXZhdGVkKTsKKyAgICAgICAgfQor
ICAgIH0pOwogfQogCiB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb24oc3RkOjp1bmlxdWVf
cHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmIHJlZ2lzdHJhdGlvbikKQEAgLTMwNSwxMiArMzEx
LDE0IEBAIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnJlbW92ZVNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29ya2VyCiAgICAgbV9zZXJ2ZXIucmVtb3ZlQ2xpZW50
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbigqdGhpcywgaWRlbnRpZmllcik7CiB9CiAKLVNXU2Vy
dmVyOjpTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiBvcmlnaW5TdG9yZSwgYm9v
bCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbkRh
dGFiYXNlRGlyZWN0b3J5LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNvZnRVcGRhdGVDYWxs
YmFjayYmIHNvZnRVcGRhdGVDYWxsYmFjaywgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFj
ayYmIGNhbGxiYWNrKQorU1dTZXJ2ZXI6OlNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3Jl
PiYmIG9yaWdpblN0b3JlLCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3Ry
aW5nJiYgcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnksIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQsIFNvZnRVcGRhdGVDYWxsYmFj
ayYmIHNvZnRVcGRhdGVDYWxsYmFjaywgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYm
IGNhbGxiYWNrLCBBcHBCb3VuZERvbWFpbnNDYWxsYmFjayYmIGFwcEJvdW5kRG9tYWluc0NhbGxi
YWNrKQogICAgIDogbV9vcmlnaW5TdG9yZShXVEZNb3ZlKG9yaWdpblN0b3JlKSkKICAgICAsIG1f
c2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1faXNQcm9jZXNzVGVybWluYXRpb25EZWxheUVu
YWJsZWQocHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkKQogICAgICwgbV9jcmVhdGVDb250
ZXh0Q29ubmVjdGlvbkNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQogICAgICwgbV9zb2Z0VXBk
YXRlQ2FsbGJhY2soV1RGTW92ZShzb2Z0VXBkYXRlQ2FsbGJhY2spKQorICAgICwgbV9hcHBCb3Vu
ZERvbWFpbnNDYWxsYmFjayhXVEZNb3ZlKGFwcEJvdW5kRG9tYWluc0NhbGxiYWNrKSkKKyAgICAs
IG1faGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KGhhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVu
dCkKIHsKICAgICBSRUxFQVNFX0xPR19JRihyZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeS5p
c0VtcHR5KCkgJiYgIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCksIFNlcnZpY2VXb3JrZXIsICJO
byBwYXRoIHRvIHN0b3JlIHRoZSBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRpb25zIik7CiAgICAg
aWYgKCFtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQpAQCAtMzIyLDMxICszMzAsNTMgQEAgU1dT
ZXJ2ZXI6OlNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmIG9yaWdpblN0b3JlLCBi
b29sIHByb2Nlc3NUZXJtaW5hdGkKICAgICBhbGxTZXJ2ZXJzKCkuYWRkKHRoaXMpOwogfQogCit2
b2lkIFNXU2VydmVyOjp2YWxpZGF0ZVJlZ2lzdHJhdGlvbkRvbWFpbihXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgaWYgKG1faGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50IHx8
IG1faGFzUmVjZWl2ZWRBcHBCb3VuZERvbWFpbnMpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIobV9hcHBCb3VuZERvbWFpbnMuY29udGFpbnMoZG9tYWluKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgbV9hcHBCb3VuZERvbWFpbnNDYWxsYmFjayhbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgZG9tYWluID0gV1RGTW92ZShkb21haW4pLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgYXBwQm91bmRE
b21haW5zKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgbV9oYXNSZWNlaXZlZEFwcEJvdW5kRG9tYWlucyA9IHRydWU7CisgICAg
ICAgIG1fYXBwQm91bmREb21haW5zID0gV1RGTW92ZShhcHBCb3VuZERvbWFpbnMpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihtX2FwcEJvdW5kRG9tYWlucy5jb250YWlucyhkb21haW4pKTsK
KyAgICB9KTsKK30KKwogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI3Nj
aGVkdWxlLWpvYi1hbGdvcml0aG0KIHZvaWQgU1dTZXJ2ZXI6OnNjaGVkdWxlSm9iKFNlcnZpY2VX
b3JrZXJKb2JEYXRhJiYgam9iRGF0YSkKIHsKICAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250
YWlucyhqb2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpIHx8IGpvYkRhdGEuY29ubmVjdGlv
bklkZW50aWZpZXIoKSA9PSBQcm9jZXNzOjppZGVudGlmaWVyKCkpOwogCi0gICAgYXV0byYgam9i
UXVldWUgPSAqbV9qb2JRdWV1ZXMuZW5zdXJlKGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCksIFt0
aGlzLCAmam9iRGF0YV0gewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlckpvYlF1
ZXVlPigqdGhpcywgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSk7Ci0gICAgfSkuaXRlcmF0b3It
PnZhbHVlOwotCi0gICAgaWYgKCFqb2JRdWV1ZS5zaXplKCkpIHsKLSAgICAgICAgam9iUXVldWUu
ZW5xdWV1ZUpvYihXVEZNb3ZlKGpvYkRhdGEpKTsKLSAgICAgICAgam9iUXVldWUucnVuTmV4dEpv
YigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8mIGxhc3RKb2IgPSBqb2JRdWV1
ZS5sYXN0Sm9iKCk7Ci0gICAgaWYgKGpvYkRhdGEuaXNFcXVpdmFsZW50KGxhc3RKb2IpKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBQZXIgdGhlIHNwZWMsIGNoZWNrIGlmIHRoaXMgam9iIGlzIGVxdWl2
YWxlbnQgdG8gdGhlIGxhc3Qgam9iIG9uIHRoZSBxdWV1ZS4KLSAgICAgICAgLy8gSWYgaXQgaXMs
IHN0YWNrIGl0IGFsb25nIHdpdGggdGhhdCBqb2IuIEZvciBub3csIHdlIGp1c3QgbWFrZSBzdXJl
IHRvIG5vdCBjYWxsIHNvZnQtdXBkYXRlIHRvbyBvZnRlbi4KLSAgICAgICAgaWYgKGpvYkRhdGEu
dHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VXBkYXRlICYmIGpvYkRhdGEuY29ubmVjdGlv
bklkZW50aWZpZXIoKSA9PSBQcm9jZXNzOjppZGVudGlmaWVyKCkpCisgICAgdmFsaWRhdGVSZWdp
c3RyYXRpb25Eb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4oam9iRGF0YS5zY3JpcHRV
UkwpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgam9iRGF0YSA9IFdURk1v
dmUoam9iRGF0YSldIChib29sIGlzVmFsaWQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtU
aGlzKQogICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGpvYlF1ZXVlLmVucXVldWVK
b2IoV1RGTW92ZShqb2JEYXRhKSk7Ci0gICAgaWYgKGpvYlF1ZXVlLnNpemUoKSA9PSAxKQotICAg
ICAgICBqb2JRdWV1ZS5ydW5OZXh0Sm9iKCk7CisgICAgICAgIGlmIChtX2hhc1NlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudCB8fCBpc1ZhbGlkKSB7CisgICAgICAgICAgICBhdXRvJiBqb2JRdWV1ZSA9
ICptX2pvYlF1ZXVlcy5lbnN1cmUoam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSwgW3RoaXMsICZq
b2JEYXRhXSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1dTZXJ2ZXJKb2JR
dWV1ZT4oKnRoaXMsIGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCkpOworICAgICAgICAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOworCisgICAgICAgICAgICBpZiAoIWpvYlF1ZXVlLnNpemUoKSkgewor
ICAgICAgICAgICAgICAgIGpvYlF1ZXVlLmVucXVldWVKb2IoV1RGTW92ZShqb2JEYXRhKSk7Cisg
ICAgICAgICAgICAgICAgam9iUXVldWUucnVuTmV4dEpvYigpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8mIGxhc3RKb2IgPSBqb2JRdWV1
ZS5sYXN0Sm9iKCk7CisgICAgICAgICAgICBpZiAoam9iRGF0YS5pc0VxdWl2YWxlbnQobGFzdEpv
YikpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogUGVyIHRoZSBzcGVjLCBjaGVjayBpZiB0
aGlzIGpvYiBpcyBlcXVpdmFsZW50IHRvIHRoZSBsYXN0IGpvYiBvbiB0aGUgcXVldWUuCisgICAg
ICAgICAgICAgICAgLy8gSWYgaXQgaXMsIHN0YWNrIGl0IGFsb25nIHdpdGggdGhhdCBqb2IuIEZv
ciBub3csIHdlIGp1c3QgbWFrZSBzdXJlIHRvIG5vdCBjYWxsIHNvZnQtdXBkYXRlIHRvbyBvZnRl
bi4KKyAgICAgICAgICAgICAgICBpZiAoam9iRGF0YS50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JU
eXBlOjpVcGRhdGUgJiYgam9iRGF0YS5jb25uZWN0aW9uSWRlbnRpZmllcigpID09IFByb2Nlc3M6
OmlkZW50aWZpZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgam9iUXVldWUuZW5xdWV1ZUpvYihXVEZNb3ZlKGpvYkRhdGEpKTsKKyAg
ICAgICAgICAgIGlmIChqb2JRdWV1ZS5zaXplKCkgPT0gMSkKKyAgICAgICAgICAgICAgICBqb2JR
dWV1ZS5ydW5OZXh0Sm9iKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmVqZWN0Sm9i
KGpvYkRhdGEsIHsgVHlwZUVycm9yLCAiSm9iIHJlamVjdGVkIGZvciBub24gYXBwLWJvdW5kIGRv
bWFpbiIgfSk7CisgICAgfSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnNjaGVkdWxlVW5yZWdpc3Rl
ckpvYihTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIgam9iRGF0YUlkZW50aWZpZXIsIFNX
U2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIERvY3VtZW50T3JXb3JrZXJJZGVudGlm
aWVyIGNvbnRleHRJZGVudGlmaWVyLCBVUkwmJiBjbGllbnRDcmVhdGlvblVSTCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCAyODc5
MjgzZWFlMGFmODNlOTU2Yzk5OGUzNWYwNDk0M2VlNzM1YzYzLi4zYTk1OWRhODk1ZjA2OWNjZGUx
OWU5YTY2M2NiZThiODcyZjVkY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0xMjYsNyArMTI2LDggQEAgcHVibGljOgogCiAg
ICAgdXNpbmcgU29mdFVwZGF0ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYmIGpvYkRhdGEsIGJvb2wgc2hvdWxkUmVmcmVzaENhY2hlLCBSZXNvdXJjZVJlcXVl
c3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQmKT4mJik+OwogICAgIHVzaW5nIENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2sgPSBG
dW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKT47Ci0gICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXIoVW5pcXVl
UmVmPFNXT3JpZ2luU3RvcmU+JiYsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVk
LCBTdHJpbmcmJiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFMOjpTZXNzaW9uSUQs
IFNvZnRVcGRhdGVDYWxsYmFjayYmLCBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrJiYp
OworICAgIHVzaW5nIEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYp
PiYmKT47CisgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3Rv
cmU+JiYsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiByZWdp
c3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFMOjpTZXNzaW9uSUQsIGJvb2wgaGFzU2Vydmlj
ZVdvcmtlckVudGl0bGVtZW50LCBTb2Z0VXBkYXRlQ2FsbGJhY2smJiwgQ3JlYXRlQ29udGV4dENv
bm5lY3Rpb25DYWxsYmFjayYmLCBBcHBCb3VuZERvbWFpbnNDYWxsYmFjayYmKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIH5TV1NlcnZlcigpOwogCkBAIC0yMTUsNiArMjE2LDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0VGVybWluYXRpb25EZWxheSA9IDEw
X3M7CiAKIHByaXZhdGU6CisgICAgdm9pZCB2YWxpZGF0ZVJlZ2lzdHJhdGlvbkRvbWFpbihXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CisKICAgICB2b2lkIHNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNo
UmVzdWx0Jik7CiAKICAgICB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKENvbm5l
Y3Rpb24qLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CkBAIC0yNjksNiAr
MjcyLDExIEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gbV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnM7CiAgICAgVmVjdG9yPENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4+IG1faW1wb3J0Q29tcGxldGVkQ2FsbGJhY2tzOwogICAgIFNvZnRVcGRhdGVD
YWxsYmFjayBtX3NvZnRVcGRhdGVDYWxsYmFjazsKKyAgICBBcHBCb3VuZERvbWFpbnNDYWxsYmFj
ayBtX2FwcEJvdW5kRG9tYWluc0NhbGxiYWNrOworICAgIAorICAgIEhhc2hTZXQ8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IG1fYXBwQm91bmREb21haW5zOworICAgIGJvb2wgbV9oYXNTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNSZWNlaXZlZEFw
cEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDJiY2EyMjJhMjE0MmY5NjRmOWU4MWExMDNl
ZjYwYTM1YzQ1NGI5NTAuLjU0OGVhNGE1MTFjOGM2MDcyYjVlNjBlNjgzNjY5MmJhNWFiZWRhYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xMjEsOCArMTIxLDcgQEAgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5l
dHdvcmtQcm9jZXNzJiBuZXQKICAgICBtX2Nvbm5lY3Rpb24tPm9wZW4oKTsKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAobmV0d29ya1Byb2Nlc3MucGFyZW50UHJvY2Vzc0hh
c1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKQotICAgICAgICBlc3RhYmxpc2hTV1NlcnZlckNv
bm5lY3Rpb24oKTsKKyAgICBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKICNlbmRpZgog
fQogCkBAIC00MzEsMTUgKzQzMCw4IEBAIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlPj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlCiB9CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1ib29sIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjppc1NlcnZpY2VXb3JrZXJBbGxvd2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9uZXR3
b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpOwot
fQotCiBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUZldGNoVGFzayhOZXR3b3JrUmVzb3VyY2VMb2FkZXIm
IGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlmICghaXNT
ZXJ2aWNlV29ya2VyQWxsb3dlZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1
cm4gc3dDb25uZWN0aW9uKCkuY3JlYXRlRmV0Y2hUYXNrKGxvYWRlciwgcmVxdWVzdCk7CiB9CiAj
ZW5kaWYKQEAgLTQ0NywxOCArNDM5LDE1IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlRmV0CiB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogewogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLSAgICBib29sIGlzU2VydmljZVdvcmtlckFsbG93ZWQgPSB0aGlz
LT5pc1NlcnZpY2VXb3JrZXJBbGxvd2VkKCk7Ci0gICAgaWYgKGlzU2VydmljZVdvcmtlckFsbG93
ZWQpIHsKLSAgICAgICAgYXV0byYgc2VydmVyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJG
b3JTZXNzaW9uKG1fc2Vzc2lvbklEKTsKLSAgICAgICAgaWYgKCFzZXJ2ZXIuaXNJbXBvcnRDb21w
bGV0ZWQoKSkgewotICAgICAgICAgICAgc2VydmVyLndoZW5JbXBvcnRJc0NvbXBsZXRlZChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBsb2FkUGFyYW1ldGVycyA9IFdURk1v
dmUobG9hZFBhcmFtZXRlcnMpXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGlmICghbV9u
ZXR3b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc0Nvbm5lY3Rpb24od2ViUHJvY2Vzc0lkZW50aWZpZXIo
KSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
bV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uKG1fc2Vzc2lvbklEKS5pc0ltcG9y
dENvbXBsZXRlZCgpKTsKLSAgICAgICAgICAgICAgICBzY2hlZHVsZVJlc291cmNlTG9hZChXVEZN
b3ZlKGxvYWRQYXJhbWV0ZXJzKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQorICAgIGF1dG8mIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2Vy
dmVyRm9yU2Vzc2lvbihtX3Nlc3Npb25JRCk7CisgICAgaWYgKCFzZXJ2ZXIuaXNJbXBvcnRDb21w
bGV0ZWQoKSkgeworICAgICAgICBzZXJ2ZXIud2hlbkltcG9ydElzQ29tcGxldGVkKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGxvYWRQYXJhbWV0ZXJzID0gV1RGTW92ZShs
b2FkUGFyYW1ldGVycyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIW1fbmV0d29ya1By
b2Nlc3MtPndlYlByb2Nlc3NDb25uZWN0aW9uKHdlYlByb2Nlc3NJZGVudGlmaWVyKCkpKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNz
LT5zd1NlcnZlckZvclNlc3Npb24obV9zZXNzaW9uSUQpLmlzSW1wb3J0Q29tcGxldGVkKCkpOwor
ICAgICAgICAgICAgc2NoZWR1bGVSZXNvdXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1ldGVycykp
OworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogICAgIGF1dG8g
aWRlbnRpZmllciA9IGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXI7CkBAIC00NjksMTIgKzQ1OCwx
MSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlZHVsZVJlc291cmNl
TG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYQogICAgIGF1dG8mIGxvYWRlciA9IG1fbmV0d29y
a1Jlc291cmNlTG9hZGVycy5hZGQoaWRlbnRpZmllciwgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpj
cmVhdGUoV1RGTW92ZShsb2FkUGFyYW1ldGVycyksICp0aGlzKSkuaXRlcmF0b3ItPnZhbHVlOwog
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChpc1NlcnZpY2VXb3JrZXJBbGxv
d2VkKSB7Ci0gICAgICAgIGxvYWRlci0+c3RhcnRXaXRoU2VydmljZVdvcmtlcigpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotI2VuZGlmCisgICAgbG9hZGVyLT5zdGFydFdpdGhTZXJ2aWNlV29y
a2VyKCk7CisgICAgcmV0dXJuOworI2Vsc2UKICAgICBsb2FkZXItPnN0YXJ0KCk7CisjZW5kaWYK
IH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGVyZm9ybVN5bmNocm9u
b3VzTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzLCBN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91
c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQpAQCAtMTA1Myw3ICsxMDQxLDYgQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5v
TG9uZ2VyTmVlZGVkKCkKIAogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c3dDb25uZWN0aW9uKCkKIHsKLSAgICBBU1NFUlQoaXNTZXJ2aWNlV29y
a2VyQWxsb3dlZCgpKTsKICAgICBpZiAoIW1fc3dDb25uZWN0aW9uKQogICAgICAgICBlc3RhYmxp
c2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKICAgICByZXR1cm4gKm1fc3dDb25uZWN0aW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGY1YzAzY2M4M2Q3MWY4ZjdiOTdkYjE4ZWQ4ZmI0NDVk
ODY3Y2M0YzEuLjdiNWUwY2UzZWViMzViOWJkMmJjM2MyYmNmZWFkNDY2MWY3OTFjZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTIzNiw3ICsyMzYsNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xvc2VTV0NvbnRl
eHRDb25uZWN0aW9uKCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7Ci0gICAg
Ym9vbCBpc1NlcnZpY2VXb3JrZXJBbGxvd2VkKCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIHZvaWQg
Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRl
bnRpZmllciYgcG9ydDEsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9y
dDIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAppbmRleCAxMGQ1Y2EwNjFiN2NmZDhlYzE2OTU5NjRjZjk2ZGU0ZGViMjZhODkxLi5mNjJlOTg2
MTBkZDJlNzRlZmNmMGM4OTk0NzVlNmQwOTViOGY5MTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzQ1LDEwICszNDUsOCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmJgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgaWYgKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSkg
ewotICAgICAgICBib29sIHNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJs
ZWQgPSB0cnVlOwotICAgICAgICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVs
YXlFbmFibGVkLCBXVEZNb3ZlKHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSksIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7Ci0gICAgfQorICAgIGJvb2wgc2VydmljZVdvcmtlclByb2Nlc3NUZXJt
aW5hdGlvbkRlbGF5RW5hYmxlZCA9IHRydWU7CisgICAgYWRkU2VydmljZVdvcmtlclNlc3Npb24o
UEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgc2VydmljZVdvcmtlclByb2Nlc3NU
ZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlmCiAKICAgICBtX3N0b3JhZ2VNYW5h
Z2VyU2V0LT5hZGQoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0
ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFy
YW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwpAQCAtNDM4LDgg
KzQzNiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzCiAjZW5kaWYKIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLSAgICBpZiAocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRp
dGxlbWVudCgpKQotICAgICAgICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihzZXNzaW9uSUQsIHBh
cmFtZXRlcnMuc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RG
TW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBwYXJh
bWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
OworICAgIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKHNlc3Npb25JRCwgcGFyYW1ldGVycy5zZXJ2
aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBXVEZNb3ZlKHBhcmFtZXRl
cnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSksIHBhcmFtZXRlcnMuc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYKIAog
ICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmFkZChzZXNzaW9uSUQsIHBhcmFtZXRlcnMubG9jYWxT
dG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7CkBAIC0yNDU1LDExICsyNDUyLDEzIEBAIFNXU2VydmVyJiBOZXR3b3JrUHJvY2Vz
czo6c3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAgICAg
Ly8gSWYgdGhlcmUncyBub3QsIHRoZW4gd2hlcmUgZGlkIHRoaXMgUEFMOjpTZXNzaW9uSUQgY29t
ZSBmcm9tPwogICAgICAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgfHwgIXBhdGgu
aXNFbXB0eSgpKTsKIAotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlcj4obWFrZVVu
aXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBpbmZvLnByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
RW5hYmxlZCwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklELCBbdGhpcywgc2Vzc2lvbklEXShhdXRv
JiYgam9iRGF0YSwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUsIGF1dG8mJiByZXF1ZXN0LCBhdXRv
JiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBpbmZvLnByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklELCBwYXJl
bnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCksIFt0aGlzLCBzZXNzaW9uSURd
KGF1dG8mJiBqb2JEYXRhLCBib29sIHNob3VsZFJlZnJlc2hDYWNoZSwgYXV0byYmIHJlcXVlc3Qs
IGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6c3RhcnQobmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSwg
V1RGTW92ZShqb2JEYXRhKSwgc2hvdWxkUmVmcmVzaENhY2hlLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0sIFt0aGlzLCBzZXNzaW9uSURd
KGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluLCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIHsKICAg
ICAgICAgICAgIEFTU0VSVCghcmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKTsKICAgICAgICAg
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVEb21haW4sIHNlc3Npb25JRCB9LCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CisgICAgICAgIH0sIFt0aGlzLCBzZXNzaW9uSURdKGF1
dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpHZXRBcHBCb3VuZERvbWFpbnMgeyBzZXNzaW9uSUQgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIDApOwogICAgICAgICB9KTsKICAgICB9KTsKICAgICByZXR1cm4gKnJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CkBAIC0yNDc1LDcgKzI0NzQsNiBAQCBXZWJTV09yaWdpblN0b3JlKiBOZXR3
b3JrUHJvY2Vzczo6ZXhpc3RpbmdTV09yaWdpblN0b3JlRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25J
RAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJT
V1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7Ci0gICAgQVNTRVJUKHBhcmVudFByb2Nl
c3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSk7CiAgICAgYXV0byogc3RvcmUgPSBleGlz
dGluZ1NXT3JpZ2luU3RvcmVGb3JTZXNzaW9uKGNvbm5lY3Rpb24uc2Vzc2lvbklEKCkpOwogICAg
IEFTU0VSVChzdG9yZSk7CiAgICAgaWYgKHN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDU5ZjBmY2VmZDQ2YzQyMzBkYWRlZDdkNzFl
MjNlYmNhZDIxZDhkMmUuLjZkODZjYTk0NDA5YmIwZjlkOTMzOGRmYTU2ZDZkMjdiY2VlMThmMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAg
LTMwNiw2ICszMDYsOCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGJvb2wgcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpIGNvbnN0Owor
ICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpOworICAgIHZvaWQgY2xl
YXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogI2Vsc2UKICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmlu
ZGV4IGIyM2VmMWQwMWEwNTgyMzg5Zjc2OTM0MjliZTAyOTc4ZWMwNmUyMTkuLjUyMTM0MjU2ODdh
NDVmZWNhOTUzNWRlMWE5ZDI0ZWIxOGU4OWNjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTcyLDQg
KzE3Miw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICAKICAgICBIYXNBcHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAo
Ym9vbCBoYXNBcHBCb3VuZFNlc3Npb24pIEFzeW5jCiAgICAgU2V0SW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlKSAtPiAoKSBBc3lu
YworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBEaXNhYmxlU2VydmljZVdvcmtlckVu
dGl0bGVtZW50KCkKKyAgICBDbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKCkg
LT4gKCkgQXN5bmMKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQppbmRleCBlMTkyZjUwM2Y0NDVmZTUxMDA4
MTAyZTYzNTk2MGVhMWUxN2NlZjUyLi4xMGFiMzI0NGQxYzkxMWIyNzQ2OTg5YjdhMmRkZmQ0ZTVl
YTc3YTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3
b3JrUHJvY2Vzc0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9O
ZXR3b3JrUHJvY2Vzc0lPUy5tbQpAQCAtNzQsMTIgKzc0LDI4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtVGVybWluYXRlKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitzdGF0
aWMgYm9vbCBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVzdGluZ092ZXJyaWRlOwor
CiBib29sIE5ldHdvcmtQcm9jZXNzOjpwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0
bGVtZW50KCkgY29uc3QKIHsKKyAgICBpZiAoZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVu
dFRlc3RpbmdPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgc3RhdGljIGJv
b2wgaGFzRW50aXRsZW1lbnQgPSBXVEY6Omhhc0VudGl0bGVtZW50KHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSwgImNvbS5hcHBsZS5kZXZlbG9wZXIuV2ViS2l0LlNl
cnZpY2VXb3JrZXJzIik7CiAgICAgcmV0dXJuIGhhc0VudGl0bGVtZW50OwogfQogCit2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkKK3sKKyAgICBk
aXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVzdGluZ092ZXJyaWRlID0gdHJ1ZTsKK30K
Kwordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVy
cmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudFRlc3RpbmdPdmVycmlkZSA9IGZhbHNl
OworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggZThjNzBlYjlkMmE3NDEy
MzA5NWZjNTA5OTBlMzA0MWU3ZWQ5YWQ1MC4uZGMxMTUyZjhlYjE5ZWE1MDYwODZkOTc4YzcwMTdj
ODcyMjk4ZDQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE0Niw2ICsxNDYsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5j
b2RlciA8PCBzaG91bGRDYXB0dXJlRGlzcGxheUluVUlQcm9jZXNzOwogICAgIGVuY29kZXIgPDwg
c2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgbmVlZHNJbkFw
cEJyb3dzZXJQcml2YWN5UXVpcmtzOworICAgIGVuY29kZXIgPDwgbGltaXRzTmF2aWdhdGlvbnNU
b0FwcEJvdW5kRG9tYWluczsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBlbmNvZGVyIDw8IHRo
ZW1lTmFtZTsKQEAgLTQ3MCw2ICs0NzEsOSBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5uZWVkc0luQXBwQnJvd3NlclByaXZhY3lR
dWlya3MpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAorICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5z
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKICNpZiBQTEFURk9STShHVEsp
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnRoZW1lTmFtZSkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggODAwZTFhNzUzYTYzMTBlY2M1MTg1ZTliYWRlZWZl
YzNkMGI1NGNmYS4uMzJiNmUyOTc3ZmVkM2EwMGM0MGNjMTA5MzJmN2M4YjA5ZDVmNmU0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApA
QCAtMjE2LDYgKzIxNiw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAg
ICBib29sIHNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJv
b2wgc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIG5l
ZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IGZhbHNlIH07CisgICAgYm9vbCBsaW1pdHNO
YXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKIAogI2lmIFBMQVRGT1JNKEdU
SykKICAgICBTdHJpbmcgdGhlbWVOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzLnlhbWwKaW5kZXggYjZlYjExNGFiOTIxNWNiMTBkOTQ1OTZjODZlYmFkNzFlY2VlNzdmZi4u
NzJhMmEwZmY1ZDZlYzlhN2EyMmEwMmE3ZDMzNjJkMGMwYzBmMDhjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC0xMjczLDYgKzEyNzMsMTEgQEAgTmVlZHNJ
bkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOgogICAgIHdlYmNvcmVCaW5kaW5nOiBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzCiAgICAgY2F0ZWdvcnk6IGRlYnVnCiAKK1NlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudERpc2FibGVkRm9yVGVzdGluZzoKKyAgICB0eXBlOiBib29sCisgICAgZGVmYXVsdFZhbHVl
OiBmYWxzZQorICAgIHdlYmNvcmVCaW5kaW5nOiBub25lCisKICMgRm9yIGV4cGVyaW1lbnRhbCBm
ZWF0dXJlczoKICMgVGhlIHR5cGUgc2hvdWxkIGJlIGJvb2xlYW4uCiAjIFlvdSBtdXN0IHByb3Zp
ZGUgYSBodW1hblJlYWRhYmxlTmFtZSBhbmQgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uIGZvciBh
bGwgZXhwZXJpbWVudGFsIGZlYXR1cmVzLiBUaGV5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAppbmRleCA5NjAxNTYwMzAwODZk
N2YxNWMyOGVkNjgwNmNmMGFiMjNjNGMwNzEwLi45MjVlMjU3YjNiOTQ1ZWJkOTA3MmRiMTc3NjU4
MzdiODVhMWNhMjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElQYWdlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgUmVmPFBhZ2VDb25maWd1
cmF0aW9uPiBQYWdlQ29uZmlndXJhdGlvbjo6Y29weSgpIGNvbnN0CiAgICAgY29weS0+bV9pZ25v
cmVzQXBwQm91bmREb21haW5zID0gdGhpcy0+bV9pZ25vcmVzQXBwQm91bmREb21haW5zOwogICAg
IGNvcHktPm1fbG9hZHNTdWJyZXNvdXJjZXMgPSB0aGlzLT5tX2xvYWRzU3VicmVzb3VyY2VzOwog
ICAgIGNvcHktPm1fbG9hZHNGcm9tTmV0d29yayA9IHRoaXMtPm1fbG9hZHNGcm9tTmV0d29yazsK
LSAgICBjb3B5LT5tX2xpbWl0c05hdmlnYXRpb25Ub0FwcEJvdW5kRG9tYWlucyA9IHRoaXMtPm1f
bGltaXRzTmF2aWdhdGlvblRvQXBwQm91bmREb21haW5zOworICAgIGNvcHktPm1fbGltaXRzTmF2
aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IHRoaXMtPm1fbGltaXRzTmF2aWdhdGlvbnNUb0Fw
cEJvdW5kRG9tYWluczsKIAogICAgIHJldHVybiBjb3B5OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAppbmRleCBkZGIzYjE0MDI0
OWVmNDc3Zjg3Y2NlNzY4ZmRhZGQ2ODBhY2FiOGNhLi5jNzcwM2IyMjk4NjkwN2U0Yzg2NzM1ZDdm
MjRlY2ZlMmVjNzgyMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJUGFnZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJUGFnZUNvbmZpZ3VyYXRpb24uaApAQCAtMTU4LDggKzE1OCw4IEBAIHB1YmxpYzoKICAgICBi
b29sIGxvYWRzRnJvbU5ldHdvcmsoKSBjb25zdCB7IHJldHVybiBtX2xvYWRzRnJvbU5ldHdvcms7
IH0KICAgICB2b2lkIHNldExvYWRzRnJvbU5ldHdvcmsoYm9vbCBsb2FkcykgeyBtX2xvYWRzRnJv
bU5ldHdvcmsgPSBsb2FkczsgfQogCi0gICAgYm9vbCBsaW1pdHNOYXZpZ2F0aW9uVG9BcHBCb3Vu
ZERvbWFpbnMoKSBjb25zdCB7IHJldHVybiBtX2xpbWl0c05hdmlnYXRpb25Ub0FwcEJvdW5kRG9t
YWluczsgfQotICAgIHZvaWQgc2V0TGltaXRzTmF2aWdhdGlvblRvQXBwQm91bmREb21haW5zKGJv
b2wgbGltaXRzKSB7IG1fbGltaXRzTmF2aWdhdGlvblRvQXBwQm91bmREb21haW5zID0gbGltaXRz
OyB9CisgICAgYm9vbCBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKCkgY29uc3Qg
eyByZXR1cm4gbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOyB9CisgICAgdm9p
ZCBzZXRMaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKGJvb2wgbGltaXRzKSB7IG1f
bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IGxpbWl0czsgfQogCiBwcml2YXRl
OgogCkBAIC0yMDQsNyArMjA0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faWdub3Jlc0FwcEJv
dW5kRG9tYWlucyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2xvYWRzU3VicmVzb3VyY2VzIHsgdHJ1
ZSB9OwogICAgIGJvb2wgbV9sb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9s
aW1pdHNOYXZpZ2F0aW9uVG9BcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9s
aW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcmVmZXJlbmNlcy5tbQppbmRleCA5YWFiYTBmODcwYWU5NDk4ODFiZTA3YWY5NTAzMGZlZWUx
NDlkMjU5Li5kMGFmM2JmOGM2ZWJiODBmZmRjZDM1NzdmZmM5M2FiYzIzYmI1ZGZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQpA
QCAtOTIzLDYgKzkyMywxNiBAQCAtIChCT09MKV9pc0lUUERhdGFiYXNlRW5hYmxlZAogICAgIHJl
dHVybiBfcHJlZmVyZW5jZXMtPmlzSVRQRGF0YWJhc2VFbmFibGVkKCk7CiB9CiAKKy0gKEJPT0wp
X3NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZworeworICAgIHJldHVy
biBfcHJlZmVyZW5jZXMtPnNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGlu
ZygpOworfQorCistICh2b2lkKV9zZXRTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZv
clRlc3Rpbmc6KEJPT0wpZGlzYWJsZQoreworICAgIF9wcmVmZXJlbmNlcy0+c2V0U2VydmljZVdv
cmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nKGRpc2FibGUpOworfQorCiAjaWYgUExB
VEZPUk0oTUFDKQogLSAodm9pZClfc2V0SmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzOihCT09MKWVu
YWJsZWQKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggN2NkMDUxODdmOTQwYmI2N2Y5YWIwYzIxZjg5
YTc5OTAwN2Q0YTVjNC4uNjc1Njc4OTNmNDRiNmJmOGUwOTY5MGY1NTE2MTYyZDQzM2I5MTUwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5j
ZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJl
ZmVyZW5jZXNQcml2YXRlLmgKQEAgLTE2NSw2ICsxNjUsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBfV0tFZGl0YWJsZUxpbmtCZWhhdmlvcikgewogQHByb3BlcnR5IChub25hdG9taWMs
IHNldHRlcj1fc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQ6KSBCT09MIF9hY2NlbGVy
YXRlZENvbXBvc2l0aW5nRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBp
b3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0UmVxdWVz
dEFuaW1hdGlvbkZyYW1lRW5hYmxlZDopIEJPT0wgX3JlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfaXNJVFBEYXRhYmFzZUVuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFNlcnZpY2VXb3JrZXJFbnRpdGxlbWVu
dERpc2FibGVkRm9yVGVzdGluZzopIEJPT0wgX3NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2Fi
bGVkRm9yVGVzdGluZyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBzZXR0ZXI9X3NldFdlYkdMRW5hYmxlZDopIEJPT0wgX3dlYkdMRW5hYmxlZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDg4ODU5NWQ4NDM5Y2QxMDRjMGVjZWY2ZWYxOGI1YmNl
YmFkY2I5NzkuLjAwMzQxNThiYTIxZmYzYTgxMDdmY2U3ZDA3ZjhiMDYxZDliNDI2NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTIx
LDYgKzEyMSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgpA
QCAtNTIzLDggKzUyNCw5IEBAIC0gKHZvaWQpX3NldHVwUGFnZUNvbmZpZ3VyYXRpb246KFJlZjxB
UEk6OlBhZ2VDb25maWd1cmF0aW9uPiYpcGFnZUNvbmZpZ3VyYXRpb24KICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmICgh
V1RGOjpwcm9jZXNzSGFzRW50aXRsZW1lbnQoImNvbS5hcHBsZS5kZXZlbG9wZXIuV2ViS2l0LlNl
cnZpY2VXb3JrZXJzIikpCisgICAgaWYgKCghV1RGOjpwcm9jZXNzSGFzRW50aXRsZW1lbnQoImNv
bS5hcHBsZS5kZXZlbG9wZXIuV2ViS2l0LlNlcnZpY2VXb3JrZXJzIikgfHwgISFbX2NvbmZpZ3Vy
YXRpb24gcHJlZmVyZW5jZXNdLl9zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRl
c3RpbmcpICYmICFbX2NvbmZpZ3VyYXRpb24gbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9t
YWluc10pCiAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRTZXJ2
aWNlV29ya2Vyc0VuYWJsZWQoZmFsc2UpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJl
bmNlcygpLT5zZXRTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3RpbmcoISFb
X2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLl9zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNh
YmxlZEZvclRlc3RpbmcpOwogI2VuZGlmCiAKICAgICBpZiAoIWxpbmtlZE9uT3JBZnRlcihXZWJL
aXQ6OlNES1ZlcnNpb246OkZpcnN0V2hlcmVTaXRlU3BlY2lmaWNRdWlya3NBcmVFbmFibGVkQnlE
ZWZhdWx0KSkKQEAgLTI2NTAsNiArMjY1MiwxOSBAQCAtICh2b2lkKV9pc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiAgICAgfSk7CiB9
CiAKKy0gKHZvaWQpX3NlcnZpY2VXb3JrZXJzRW5hYmxlZDoodm9pZCheKShCT09MKSljb21wbGV0
aW9uSGFuZGxlcgoreworICAgIGF1dG8gZW5hYmxlZCA9IFtfY29uZmlndXJhdGlvbiBwcmVmZXJl
bmNlc10tPl9wcmVmZXJlbmNlcy5nZXQoKS0+c2VydmljZVdvcmtlcnNFbmFibGVkKCkgfHwgV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXJ2aWNlV29y
a2VyRW5hYmxlZCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGVuYWJsZWQpOworfQorCistICh2
b2lkKV9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlOih2b2lkICheKSh2b2lk
KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9wYWdlLT5jbGVhclNlcnZpY2VXb3JrZXJFbnRp
dGxlbWVudE92ZXJyaWRlKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30K
KwogLSAoaWQgPF9XS0lucHV0RGVsZWdhdGU+KV9pbnB1dERlbGVnYXRlCiB7CiAgICAgcmV0dXJu
IF9pbnB1dERlbGVnYXRlLmdldEF1dG9yZWxlYXNlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpp
bmRleCBlMzg0ZGRlYjc0Y2JiNGQ5NTkwNTQ0YjFhZjI1MjVhZmIwYjU1NGNhLi4wNzg3MWJlMjVh
MjI1YjJiZjI4NTIyYmMyZjU5ZWM0M2NlNTA0Yzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpA
QCAtNjg1LDE0ICs2ODUsMTQgQEAgLSAodm9pZClfc2V0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRh
VVJMczooQk9PTClhbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzCiAgICAgX2FsbG93VG9wTmF2
aWdhdGlvblRvRGF0YVVSTHMgPSBhbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzOwogfQogCi0t
IChCT09MKWxpbWl0c05hdmlnYXRpb25Ub0FwcEJvdW5kRG9tYWlucworLSAoQk9PTClsaW1pdHNO
YXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zCiB7Ci0gICAgcmV0dXJuIF9wYWdlQ29uZmlndXJh
dGlvbi0+bGltaXRzTmF2aWdhdGlvblRvQXBwQm91bmREb21haW5zKCk7CisgICAgcmV0dXJuIF9w
YWdlQ29uZmlndXJhdGlvbi0+bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucygpOwog
fQogCi0tICh2b2lkKXNldExpbWl0c05hdmlnYXRpb25Ub0FwcEJvdW5kRG9tYWluczooQk9PTCls
aW1pdHNUb0FwcEJvdW5kRG9tYWlucworLSAodm9pZClzZXRMaW1pdHNOYXZpZ2F0aW9uc1RvQXBw
Qm91bmREb21haW5zOihCT09MKWxpbWl0c1RvQXBwQm91bmREb21haW5zCiB7Ci0gICAgX3BhZ2VD
b25maWd1cmF0aW9uLT5zZXRMaW1pdHNOYXZpZ2F0aW9uVG9BcHBCb3VuZERvbWFpbnMobGltaXRz
VG9BcHBCb3VuZERvbWFpbnMpOworICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0TGltaXRzTmF2
aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyhsaW1pdHNUb0FwcEJvdW5kRG9tYWlucyk7CiB9CiAK
IC0gKEJPT0wpX2NvbnZlcnRzUG9zaXRpb25TdHlsZU9uQ29weQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggYTcyMDdh
YjNkZTM4NDJmYjA4ZTk2MDA3NjI2MDZjOGY2Yjk1NDE4Ny4uOGE2ODIzYzA5MGNjN2U0NGVmNTc0
Njc5YjA3ZTgyOTc1NmRkOTcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zNDMsNiArMzQzLDggQEAgZm9yIHRo
aXMgcHJvcGVydHkuCiAKIC0gKHZvaWQpX2dyYW50QWNjZXNzVG9QcmVmZXJlbmNlU2VydmljZSBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCist
ICh2b2lkKV9zZXJ2aWNlV29ya2Vyc0VuYWJsZWQ6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKy0gKHZvaWQpX2NsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGU6KHZvaWQg
KF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAZW5kCiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCAwODVlNDRjNzYzZmI0MDNlYmViNDE3MTUwZDhlMjZlNDU5Y2Y5MzAy
Li4wMTFhMjQ0ZTM3YjA0OGFiZmUzMzNlMGU2M2ZlOGQxNjgzNzk3YzFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTE0ODEsNiArMTQ4MSwyMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldElu
QXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRAogICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEluQXBwQnJvd3Nl
clByaXZhY3lFbmFibGVkKHNlc3Npb25JRCwgdmFsdWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0QXBwQm91bmREb21haW5z
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmIChhdXRvKiBzdG9yZSA9IHdlYnNpdGVE
YXRhU3RvcmVGcm9tU2Vzc2lvbklEKHNlc3Npb25JRCkpIHsKKyAgICAgICAgc3RvcmUtPmdldEFw
cEJvdW5kRG9tYWlucyhbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKGF1dG8mIGFwcEJvdW5kRG9tYWlucykgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRv
IGFwcEJvdW5kRG9tYWluc0NvcHkgPSBhcHBCb3VuZERvbWFpbnM7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGFwcEJvdW5kRG9tYWluc0NvcHkpKTsKKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyNl
bHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyNlbmRpZgorfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBiODY1N2EyZjBiOWM3MDRjMjMxMDA1M2YyNWIw
Njk4NjkwZDhkNzA2Li5jZTVlYThkMzdmYzhhNjJjNjQ2NDU0NTdiZjdkMjQ3MmQ0NWMzNzI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaApAQCAtMjIzLDcgKzIyMywxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGhhc0Fw
cEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CiAgICAgdm9pZCBzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChQQUw6OlNlc3Np
b25JRCwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICAKKworI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisgICAgdm9pZCBnZXRBcHBCb3VuZERvbWFpbnMoUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4mJik+JiYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgLy8gQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5CiAgICAgQVNDSUlMaXRlcmFsIHByb2Nlc3NOYW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gIk5ldHdvcmtpbmciX3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCBiZTU1ODc4OGI2Y2YzMGZiMTBiOTU2YzIxZGNmYzkzNWU1NGE0NTllLi5hMGM3ODFiYjFjNWUy
NGFmMjU4ZWIwNmJjMDgzNzU3ZDU1ODg4ZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluCkBAIC02Nyw2ICs2Nyw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVn
YWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAKICAgICBTZXRXZWJQcm9jZXNzSGFzVXBsb2Fk
cyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQsIGJvb2wgaGFzVXBsb2FkKQog
CisgICAgR2V0QXBwQm91bmREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGFwcEJvdW5kRG9tYWlucykgQXN5bmMK
KwogICAgIFJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1
Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90
IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkKSAtPiAoT3B0aW9uYWw8dWludDY0
X3Q+IG5ld1F1b3RhKSBBc3luYwogICAgIAogICAgIFJlc291cmNlTG9hZERpZFNlbmRSZXF1ZXN0
KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgc3RydWN0IFdl
YktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCwgT3B0aW9uYWw8SVBDOjpGb3JtRGF0YVJlZmVyZW5jZT4gaHR0cEJv
ZHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAwN2VjNzVm
MjcxNDY3ZDA3NzVmMjZkMWMyYWVjZmQzZjUxZTM4YjU5Li5kYmEyNmRiYjhhY2VkNTA3ZjRiZDEx
MDdmMTY3ODI2NmVlMjMyMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTE3OSw2ICsxNzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93RmVhdHVy
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dyaXRpbmdEaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxz
dGRpby5oPgorI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3
dGYvU3lzdGVtVHJhY2luZy5oPgpAQCAtNDg1LDcgKzQ4Niw3IEBAIFdlYlBhZ2VQcm94eTo6V2Vi
UGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cywgUmVmCiAgICAgLCBtX3RyeUNsb3NlVGltZW91dFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhp
cywgJldlYlBhZ2VQcm94eTo6dHJ5Q2xvc2VUaW1lZE91dCkKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAsIG1faWdub3Jlc0FwcEJvdW5kRG9tYWlucyhtX2NvbmZpZ3VyYXRpb24tPmlnbm9yZXNB
cHBCb3VuZERvbWFpbnMoKSB8fCBXVEY6OnByb2Nlc3NIYXNFbnRpdGxlbWVudCgiY29tLmFwcGxl
LnByaXZhdGUuYXBwbGVtZWRpYXNlcnZpY2VzIikpCi0gICAgLCBtX2xpbWl0c05hdmlnYXRpb25U
b0FwcEJvdW5kRG9tYWlucyhtX2NvbmZpZ3VyYXRpb24tPmxpbWl0c05hdmlnYXRpb25Ub0FwcEJv
dW5kRG9tYWlucygpKQorICAgICwgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5z
KG1fY29uZmlndXJhdGlvbi0+bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucygpKQog
I2VuZGlmCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3RydWN0
b3I6Iik7CkBAIC01MjEsNiArNTIyLDkgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBSZWYKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXRE
aXNhYmxlU2NyZWVuU2l6ZU92ZXJyaWRlKG1fcHJlZmVyZW5jZXMtPmRpc2FibGVTY3JlZW5TaXpl
T3ZlcnJpZGUoKSk7CisgICAgCisgICAgaWYgKG1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMo
KS0+c2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nKCkpCisgICAgICAg
IGRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRJbk5ldHdvcmtQcm9jZXNzKCk7CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMzE1Niw2ICszMTYwLDM0IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojppc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluVGVzdGluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvCiAgICAgY29tcGxldGlvbkhhbmRsZXIobV9pc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluICYmICgqbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID09IE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXMpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmRp
c2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRJbk5ldHdvcmtQcm9jZXNzKCkKK3sKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IG1fcHJv
Y2Vzcy0+cHJvY2Vzc1Bvb2woKS5uZXR3b3JrUHJvY2VzcygpKSB7CisgICAgICAgIGlmICghbmV0
d29ya1Byb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG5ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGlzYWJs
ZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpLCAwKTsKKyAgICB9CisjZW5kaWYKK30KKwordm9p
ZCBXZWJQYWdlUHJveHk6OmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0Fn
Z3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpDbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudE92ZXJyaWRlKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOworICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IG1fcHJvY2Vz
cy0+cHJvY2Vzc1Bvb2woKS5uZXR3b3JrUHJvY2VzcygpKSB7CisgICAgICAgIGlmICghbmV0d29y
a1Byb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbmV0d29ya1By
b2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNsZWFy
U2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoKSwgW2NhbGxiYWNrQWdncmVnYXRvciA9
IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQorI2Vsc2UKKyAgICBj
b21wbGV0aW9uSGFuZGxlcigpOworI2VuZGlmCit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNl
aXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBB
UEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQg
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIFJlZlB0
cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiBwb2xpY2llcywgUmVmPFBvbGljeURlY2lzaW9uU2Vu
ZGVyPiYmIHNlbmRlcikKIHsKICAgICBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gd2Vic2l0ZURhdGFT
dG9yZSA9IG1fd2Vic2l0ZURhdGFTdG9yZS5jb3B5UmVmKCk7CkBAIC03Nzk1LDYgKzc4MjcsNyBA
QCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0
ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVyZVZp
ZGVvSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS5jYXB0dXJlVmlkZW9JbkdQVVByb2Nlc3NF
bmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3Mg
PSBwcmVmZXJlbmNlcygpLnJlbmRlckNhbnZhc0luR1BVUHJvY2Vzc0VuYWJsZWQoKTsKICAgICBw
YXJhbWV0ZXJzLnNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MgPSBtX3Byb2Nlc3MtPnBy
b2Nlc3NQb29sKCkuY29uZmlndXJhdGlvbigpLnNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nl
c3MoKTsKKyAgICBwYXJhbWV0ZXJzLmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMg
PSBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM7CiAKICNpZiBQTEFURk9STShH
VEspCiAgICAgcGFyYW1ldGVycy50aGVtZU5hbWUgPSBwYWdlQ2xpZW50KCkudGhlbWVOYW1lKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDRmYzYwYjE4NTU5NzRi
YTRlMDU5ZjViZDBjYTYyYTc3Y2NjMGU1NmYuLmIzMmQyYWZjNzI1NWE0OTg5ZDhiNWU2OGQzZDVj
MjJlZDQ3MDkyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0x
NzI5LDYgKzE3MjksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICBPcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQog
CisgICAgdm9pZCBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50SW5OZXR3b3JrUHJvY2Vz
cygpOworICAgIHZvaWQgY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgICAgICAKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICB2b2lkIGdyYW50QWNjZXNzVG9DdXJyZW50UGFzdGVib2FyZERhdGEoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSk7CiAjZW5kaWYKQEAgLTI3OTcsNyArMjgwMCw3IEBAIHByaXZhdGU6
CiAgICAgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiBtX2hhc05hdmlnYXRlZEF3YXlG
cm9tQXBwQm91bmREb21haW4geyBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOjpObyB9
OwogICAgIGJvb2wgbV9pZ25vcmVzQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKICAgICBib29s
IG1fdXNlclNjcmlwdHNOb3RpZmllZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2xpbWl0c05hdmln
YXRpb25Ub0FwcEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2xpbWl0c05hdmln
YXRpb25zVG9BcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9OwogCiAjaWYgRU5BQkxFKFJPVVRJTkdf
QVJCSVRSQVRJT04pCiAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJp
dHJhdG9yUHJveHk+IG1fcm91dGluZ0FyYml0cmF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDViNGNlZmYzZWFiMmJhN2Q1Yjc4ZTJhMWM5
ZTYzMGIyZTdmZDUzOGEuLjY5NTc1YThiZDljOWI0Y2UzMzRjOWUxNjNiOTgwNTlhMjFiYmY0NjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00
NjAsNiArNDYwLDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2VuZGlmCiAgICAgLCBtX292
ZXJyaWRkZW5NZWRpYVR5cGUocGFyYW1ldGVycy5vdmVycmlkZGVuTWVkaWFUeXBlKQogICAgICwg
bV9wcm9jZXNzRGlzcGxheU5hbWUocGFyYW1ldGVycy5wcm9jZXNzRGlzcGxheU5hbWUpCisgICAg
LCBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4ocGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zID8gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllcyA6
IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObykKIHsKICAgICBBU1NFUlQobV9pZGVudGlm
aWVyKTsKIApAQCAtMzY3Miw5ICszNjczLDEyIEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVy
ZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdl
YlByZWZlcmVuY2VzS2V5OjpzZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3Rp
bmdLZXkoKSkpCisgICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKTsKKyAg
ICAKICAgICBpZiAoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpz
ZXJ2aWNlV29ya2Vyc0VuYWJsZWRLZXkoKSkpIHsKLSAgICAgICAgQVNTRVJUKHBhcmVudFByb2Nl
c3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSk7Ci0gICAgICAgIGlmICghcGFyZW50UHJv
Y2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKQorICAgICAgICBBU1NFUlQocGFyZW50
UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpIHx8IG1faXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbik7CisgICAgICAgIGlmICghcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudCgpICYmICFtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiAgICAg
ICAgICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNlcnZp
Y2VXb3JrZXJFbmFibGVkKGZhbHNlKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA4MjI2NWQ0YzFhZDhjZDJjZWQ3YWE3Mjlh
OTU3OWQ2ZjJiMzQ4YjU4Li5hOTkwM2FiMjI1OGUwNmQ0ZGNmNGIzNWZjMmE5YzU1YjlhNGM3ZmRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNTIz
LDggKzE1MjMsMTIgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
Ym9vbCBwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgY29uc3Q7Cisg
ICAgdm9pZCBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KCk7CisgICAgdm9pZCBjbGVh
clNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAjZWxzZQogICAgIGJvb2wgcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRp
dGxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KCk7CisgICAgdm9pZCBjbGVhclNlcnZp
Y2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9CiAjZW5kaWYKIAogICAg
IHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
dWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24mJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAxYjEx
NTllMTZmNjk1NmZhMDY0N2M2Y2I4MDEzOTYxYTk4ODdiZWM4Li5lNzVlZWQ4ZDk2YWNlZjk3MGUw
Yjk3YTQwM2IwODEyYjhlMWQ1ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTEyMiw2ICsxMjIsNyBAQCBHZW5l
cmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kVHlwZQogICAgIEluc2VydFRleHRQbGFjZWhvbGRlcihXZWJDb3JlOjpJ
bnRTaXplIHNpemUpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4gcGxhY2Vo
b2xkZXIpIEFzeW5jCiAgICAgUmVtb3ZlVGV4dFBsYWNlaG9sZGVyKHN0cnVjdCBXZWJDb3JlOjpF
bGVtZW50Q29udGV4dCBwbGFjZWhvbGRlcikgLT4gKCkgQXN5bmMKICAgICBGb2N1c1RleHRJbnB1
dENvbnRleHRBbmRQbGFjZUNhcmV0KHN0cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBjb250
ZXh0LCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKKyAg
ICBDbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKCkgLT4gKCkgQXN5bmMKICNl
bmRpZgogCiAgICAgU2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihib29sIGNvbnRyb2xsZWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CmluZGV4IDM0YTg0NzNlNGFhYWEwNDAxNTdhNGFmZDJiNWI5ZmM5MDkwYTI5N2IuLjFhYjNkMjRm
YTRiODExYmNhZWFkMjliNTMzMjY4OWRkNGZlMDgzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00ODgsMTIgKzQ4OCwy
OCBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZl
bnQmIGV2ZW50KQogICAgIHJldHVybiBzZW5kUmVzdWx0ICYmIGV2ZW50V2FzSGFuZGxlZDsKIH0K
IAorc3RhdGljIGJvb2wgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudFRlc3RpbmdPdmVy
cmlkZTsKKwogYm9vbCBXZWJQYWdlOjpwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0
bGVtZW50KCkgY29uc3QKIHsKKyAgICBpZiAoZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVu
dFRlc3RpbmdPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAogICAgIHN0YXRp
YyBib29sIGhhc0VudGl0bGVtZW50ID0gV1RGOjpoYXNFbnRpdGxlbWVudChXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCksICJj
b20uYXBwbGUuZGV2ZWxvcGVyLldlYktpdC5TZXJ2aWNlV29ya2VycyIpOwogICAgIHJldHVybiBo
YXNFbnRpdGxlbWVudDsKIH0KIAordm9pZCBXZWJQYWdlOjpkaXNhYmxlU2VydmljZVdvcmtlckVu
dGl0bGVtZW50KCkKK3sKKyAgICBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVzdGlu
Z092ZXJyaWRlID0gdHJ1ZTsKK30KKwordm9pZCBXZWJQYWdlOjpjbGVhclNlcnZpY2VXb3JrZXJF
bnRpdGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVzdGluZ092
ZXJyaWRlID0gZmFsc2U7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwogdm9pZCBXZWJQ
YWdlOjpzZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHVpbnQ2NF90LCBjb25zdCBTdHJpbmcm
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2I1MThjNWMyMWM1MGE2MzRkY2RiMDM5M2EyODQzOWM0
ZGZlZWY0Yi4uMTY4Mjk2NjM0NDI1YjM0MzE3ZDQ4Nzk4YmQxNDQ3MzUxNWUwNWM5MiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDIwLTA0LTE2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29t
PgorCisgICAgICAgIEVuYWJsZSBzZXJ2aWNlIHdvcmtlcnMgZm9yIGFwcC1ib3VuZCBkb21haW5z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA0NTEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxNDc5NDc0PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgMiB0ZXN0IGNhc2VzIHRvIG1ha2Ugc3Vy
ZSBzZXJ2aWNlIHdvcmtlcnMgYmVoYXZlIHByb3Blcmx5IG9uCisgICAgICAgIGFwcCBib3VuZCBk
b21haW5zLCBhbmQgdGhhdCB0aGUgQVBJcyBhcmUgbm90IGF2YWlsYWJsZSBvbiBub24tYXBwCisg
ICAgICAgIGJvdW5kIGRvbWFpbnMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisgICAgICAgICgtW1NXSW5BcHBCcm93
c2VyUHJpdmFjeU1lc3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjpkaWRSZWNlaXZl
U2NyaXB0TWVzc2FnZTpdKToKKwogMjAyMC0wNC0xNyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMjYwMjY5
LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFw
cEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDIxYTBlNDY2M2RlNzUwZjU0ZjE0YzY2ZGM5
YjVjNTNjMGJiZWUwMjMuLjY2MDdlZjA5OWUxODJlMzU5ZmM2NmU1YmFjM2I3OTk3ODIyZGI5Njcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBC
cm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiU2Vydmlj
ZVdvcmtlclRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgog
I2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlv
bkV4dHJhcy5oIgpAQCAtNzQzLDYgKzc0NCwxMzcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBHZXRDb29raWVGb3JVUkxGYWlscykKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOwogfQogCitAaW50ZXJmYWNlIFNXSW5BcHBCcm93c2VyUHJpdmFjeU1lc3NhZ2VIYW5kbGVy
IDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CitAZW5kCisKK0BpbXBsZW1lbnRh
dGlvbiBTV0luQXBwQnJvd3NlclByaXZhY3lNZXNzYWdlSGFuZGxlcgorLSAodm9pZCl1c2VyQ29u
dGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250
cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdl
Cit7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdv
cmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIiwgW21lc3NhZ2Ug
Ym9keV0pOworICAgIGlzRG9uZSA9IHRydWU7Cit9CitAZW5kCisKK3N0YXRpYyBjb25zdCBjaGFy
KiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCis8c2NyaXB0PgorCitmdW5jdGlvbiBsb2cobXNn
KQoreworICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnN3LnBvc3RNZXNzYWdlKG1z
Zyk7Cit9CisKK25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3Nh
Z2UiLCBmdW5jdGlvbihldmVudCkgeworICAgIGxvZygiTWVzc2FnZSBmcm9tIHdvcmtlcjogIiAr
IGV2ZW50LmRhdGEpOworfSk7CisKK3RyeSB7CisKK25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJl
Z2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgeworICAgIHdvcmtlciA9IHJlZy5p
bnN0YWxsaW5nID8gcmVnLmluc3RhbGxpbmcgOiByZWcuYWN0aXZlOworICAgIHdvcmtlci5wb3N0
TWVzc2FnZSgiSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIik7Cit9KS5jYXRjaChmdW5j
dGlvbihlcnJvcikgeworICAgIGxvZygiUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoOiAiICsgZXJy
b3IpOworfSk7Cit9IGNhdGNoKGUpIHsKKyAgICBsb2coIkV4Y2VwdGlvbjogIiArIGUpOworfQor
Cis8L3NjcmlwdD4KKylTV1JFU09VUkNFIjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5
dGVzID0gUiJTV1JFU09VUkNFKAorCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAo
ZXZlbnQpID0+IHsKKyAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIg
cmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKK30pOworCispU1dSRVNPVVJDRSI7CisKK1RFU1Qo
SW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykK
K3sKKyAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOworICAg
IGlzRG9uZSA9IGZhbHNlOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIG1lc3NhZ2VIYW5k
bGVyID0gYWRvcHROUyhbW1NXSW5BcHBCcm93c2VyUHJpdmFjeU1lc3NhZ2VIYW5kbGVyIGFsbG9j
XSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRk
U2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07Cisg
ICAgW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLl9zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRE
aXNhYmxlZEZvclRlc3RpbmcgPSBZRVM7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TGltaXRzTmF2
aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczpZRVNdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIFNlcnZp
Y2VXb3JrZXJUQ1BTZXJ2ZXIgc2VydmVyMSh7CisgICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5C
eXRlcyB9LAorICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0Qnl0ZXN9
LAorICAgIH0pOworCisgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJl
Y29yZHNGb3JBbGxPcmlnaW5zXTsKKworICAgIC8vIFN0YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZSBk
YXRhIHN0b3JlCisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVt
b3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBt
b2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7
CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmUpOworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIAorICAgIC8vIEV4cGVj
dCB0aGUgc2VydmljZSB3b3JrZXIgbG9hZCB0byBjb21wbGV0ZSBzdWNjZXNzZnVsbHkuCisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyMS5yZXF1ZXN0V2l0aExvY2FsaG9zdCgpXTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgaXNEb25lID0gZmFsc2U7
CisKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBmZXRjaERhdGFS
ZWNvcmRzT2ZUeXBlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpXS1dlYnNpdGVEYXRhVHlwZVNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25zXSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJz
aXRlRGF0YVJlY29yZCAqPiAqd2Vic2l0ZURhdGFSZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9F
USgxdSwgW3dlYnNpdGVEYXRhUmVjb3JkcyBjb3VudF0pOworICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEod2Vic2l0ZURhdGFSZWNvcmRzWzBdLmRpc3BsYXlOYW1lLCAibG9jYWxob3N0Iik7CisgICAg
ICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmlzRG9uZSk7CisgICAgaXNEb25lID0gZmFsc2U7CisKKyAgICAvLyBSZXNldCBzZXJ2aWNl
IHdvcmtlciBlbnRpdGxlbWVudC4KKyAgICBbd2ViVmlldyBfY2xlYXJTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnRPdmVycmlkZTpeKHZvaWQpIHsKKyAgICAgICAgY2xlYW5VcEluQXBwQnJvd3NlclBy
aXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgaXNEb25lID0gZmFsc2U7
Cit9CisKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5Eb2VzTm90
QWxsb3dTZXJ2aWNlV29ya2VycykKK3sKKyAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFj
eVRlc3RTZXR0aW5ncygpOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
KyAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbSW5BcHBCcm93c2VyU2NoZW1lSGFu
ZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRs
ZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJpbi1hcHAtYnJvd3NlciJdOwor
ICAgIC8vIERpc2FibGUgZW50aXRsZW1lbnQgd2hpY2ggYWxsb3dzIHNlcnZpY2Ugd29ya2Vycy4K
KyAgICBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10uX3NlcnZpY2VXb3JrZXJFbnRpdGxlbWVu
dERpc2FibGVkRm9yVGVzdGluZyA9IFlFUzsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICAvLyBMb2FkIGEg
bm9uLWFwcCBib3VuZCBkb21haW4uCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93
c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cyJdXTsK
KyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBbd2ViVmlldyBfdGVzdF93
YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgCisgICAgLy8gRXhwZWN0IHRoYXQgc2Vy
dmljZSB3b3JrZXJzIGFyZSBkaXNhYmxlZCBmb3IgdGhpcyB3ZWJWaWV3LgorICAgIGlzRG9uZSA9
IGZhbHNlOworICAgIFt3ZWJWaWV3IF9zZXJ2aWNlV29ya2Vyc0VuYWJsZWQ6XihCT09MIGVuYWJs
ZWQpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGVuYWJsZWQpOworICAgICAgICBpc0RvbmUgPSB0
cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAg
ICAKKyAgICAvLyBSZXNldCBzZXJ2aWNlIHdvcmtlciBlbnRpdGxlbWVudC4KKyAgICBbd2ViVmll
dyBfY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZTpeKHZvaWQpIHsKKyAgICAg
ICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICAgICAgaXNE
b25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CisgICAgaXNEb25lID0gZmFsc2U7Cit9CisKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396816</attachid>
            <date>2020-04-17 16:30:18 -0700</date>
            <delta_ts>2020-04-17 17:03:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210451-20200417163017.patch</filename>
            <type>text/plain</type>
            <size>57197</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmVjNzkwNjFmM2E1Nzlh
ZDkzNDU4ZDlkZTgwZGI3NDFmMTkxMjJhYi4uYjM4NmQ1NDhmZDJkNWQ5NDc2YzNiMmE2ZGQ1MjIx
ZDMwMjVkZmEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA0LTE3ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBz
ZXJ2aWNlIHdvcmtlcnMgZm9yIGFwcC1ib3VuZCBkb21haW5zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA0NTEKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzYxNDc5NDc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNXU2VydmVyIG5vdyByZXRyaWV2ZXMgdGhlIGFwcC1ib3VuZCBkb21haW5zIGZyb20g
dGhlIFVJIFByb2Nlc3MgYW5kCisgICAgICAgIG9ubHkgY29udGludWVzIHdpdGggdGhlIGxvYWQg
aWYgdGhlIHByb3BlciBlbnRpdGxlbWVudCBpcyBwcmVzZW50CisgICAgICAgIG9yIHRoZSBsb2Fk
IGlzIGNvbWluZyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4uCisKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
OjphZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OlNXU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp2YWxpZGF0ZVJlZ2lzdHJh
dGlvbkRvbWFpbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2NoZWR1bGVKb2IpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKwogMjAyMC0wNC0x
NyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFr
ZV0gQWRkIFdlYktpdDo6V2ViQ29yZSB0YXJnZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODA2NmY4ZWEwODdkY2M1
NWNjMzUxZGI0ZDIzMjk4NDg3OTdmZTZlYi4uZjQ0YmZlZDJiMWZiNjVkMTFmNzJkOGVmMTc3ZmVj
NWQ0N2ZiMDI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTQgQEAKKzIwMjAtMDQtMTcgIEthdGUg
Q2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIHNl
cnZpY2Ugd29ya2VycyBmb3IgYXBwLWJvdW5kIGRvbWFpbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQ1MQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjE0Nzk0NzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVG
ZXRjaFRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6c2NoZWR1bGVSZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c3dDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmlzU2VydmljZVdvcmtlckFsbG93ZWQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmg6CisgICAgICAgIFJlbW92ZWQgQVNTRVJUUyBhbmQgc2VydmljZSB3b3JrZXIgZW50
aXRsZW1lbnQgY2hlY2tzIHdoaWNoIGFyZSBub3cgZG9uZSBhbG9uZyB3aXRoIGFwcC1ib3VuZAor
ICAgICAgICBkb21haW4gY2hlY2tzIGluIFNXU2VydmVyLmNwcC4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgUmVtb3ZlIHRoZSBjaGVj
ayBmb3IgcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpIGJlZm9yZQor
ICAgICAgICBhZGRpbmcgYSBzZXJ2aWNlV29ya2VyU2Vzc2lvbi4gVGhpcyBkb2Vzbid0IGRvIGFu
eXRoaW5nIGV4Y2VwdCBhZGQgYW4KKyAgICAgICAgZW50cnkgdG8gYSBtYXAsIGFuZCBzaW1wbGlm
aWVzIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSBzZXNzaW9uIGZvcgorICAgICAgICBhcHAtYm91
bmQgaW5zdGFuY2VzIHdoaWNoIHNob3VsZCBoYXZlIHNlcnZpY2Ugd29ya2VycyBidXQgaGF2ZSBu
byBlbnRpdGxlbWVudC4KKworICAgICAgICBQYXNzIHRoZSBlbnRpdGxlbWVudCBhbmQgYSBuZXcg
Y2FsbGJhY2sgdG8gcmVxdWVzdCBhcHAtYm91bmQgZG9tYWlucworICAgICAgICBmcm9tIHRoZSBV
SSBQcm9jZXNzIHRvIHRoZSBTV1NlcnZlci4gVGhpcyB3aWxsIG1ha2Ugc3VyZSB0aGUgc2VydmVy
CisgICAgICAgIGNoZWNrcyBmb3IgdGhlIGVudGl0bGVtZW50IG9yIGxpc3Qgb2YgYXBwLWJvdW5k
IGRvbWFpbnMgYmVmb3JlIGNvbXBsZXRpbmcgYSBsb2FkLgorCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIFJlbW92
ZSB1bm5lY2Vzc2FyeSBBU1NFUlQgZm9yIGVudGl0bGVtZW50LgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0
d29ya1Byb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwYXJl
bnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnRPdmVycmlkZSk6CisgICAgICAgIEluIG9yZGVyIHRvIHRlc3QgdGhpcyB0aG9yb3VnaGx5
LCBUZXN0V2ViS2l0QVBJIG5lZWRlZCBhIHdheSB0bworICAgICAgICB0ZW1wb3JhcmlseSBkaXNh
YmxlIHRoZSBzZXJ2aWNlIHdvcmtlciBlbnRpdGxlbWVudC4gVGhpcyBmdW5jdGlvbgorICAgICAg
ICBvdmVycmlkZXMgdGhlIGNoZWNrIGZvciB0aGUgZW50aXRsZW1lbnQgaWYgdGhlIGJvb2wgaXMg
c2V0LCBkaXNhYmxpbmcKKyAgICAgICAgdGhlIGVudGl0bGVtZW50LgorCisgICAgICAgICogU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIFdlYlBhZ2UgbmVlZHMgdG8ga25vdyBp
ZiBpdCBpcyBhcHAtYm91bmQgd2hlbiBjcmVhdGVkIHNvIGl0IGNhbiB1cGRhdGUKKyAgICAgICAg
dGhlIHNlcnZpY2Ugd29ya2VyIHByZWZlcmVuY2VzIGtleSBhY2NvcmRpbmdseS4KKworICAgICAg
ICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV0tQcmVmZXJlbmNlcyBfc2Vydmlj
ZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nXSk6CisgICAgICAgICgtW1dLUHJl
ZmVyZW5jZXMgX3NldFNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZzpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6
CisgICAgICAgIERpc2FibGUgZW50aXRsZW1lbnQgZm9yIHRlc3RpbmcuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246Omxp
bWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgY29uc3QpOgorICAgICAgICAoQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbjo6c2V0TGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyk6
CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpsaW1pdHNOYXZpZ2F0aW9uVG9BcHBC
b3VuZERvbWFpbnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJh
dGlvbjo6c2V0TGltaXRzTmF2aWdhdGlvblRvQXBwQm91bmREb21haW5zKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zXSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0TGltaXRz
TmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBsaW1pdHNOYXZpZ2F0aW9uVG9BcHBCb3VuZERvbWFpbnNdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRMaW1pdHNOYXZpZ2F0aW9uVG9B
cHBCb3VuZERvbWFpbnM6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICBJbmNvbnNpc3RlbnQgbmFtaW5n
IChOYXZpZ2F0aW9uIHZzIE5hdmlnYXRpb25zKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldHVwUGFnZUNvbmZp
Z3VyYXRpb246XSk6CisgICAgICAgIENoZWNrIGZvciBlbnRpdGxlbWVudCBvciBhcHAtYm91bmQg
d2Vidmlldy4KKworICAgICAgICAoLVtXS1dlYlZpZXcgX3NlcnZpY2VXb3JrZXJzRW5hYmxlZDpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92
ZXJyaWRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oOgorICAgICAgICBUZXN0aW5nIFNQSXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6Z2V0QXBwQm91bmREb21haW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgU2VuZHMgdGhlIGFwcC1ib3Vu
ZCBkb21haW5zIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uc1Rv
QXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uVG9B
cHBCb3VuZERvbWFpbnMpOiBEZWxldGVkLgorICAgICAgICBOYW1pbmcgaW5jb25zaXN0ZW5jeS4K
KworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnRJbk5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpjbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIERpc2FibGUgZW50aXRsZW1lbnQgZm9yIHRl
c3RpbmcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Om1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik6CisgICAgICAgIFNl
dCB0aGlzIHBhcmFtZXRlciBpbiB0aGUgY29uc3RydWN0b3Igc28gaXQgd2lsbCBiZSBhY2N1cmF0
ZSB3aGVuCisgICAgICAgIHVwZGF0aW5nIHByZWZlcmVuY2VzLgorCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjbGVhclNlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudE92ZXJyaWRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBhcmVudFByb2Nlc3NIYXNTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpk
aXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZSk6CisgICAgICAgIERpc2Fi
bGUgZW50aXRsZW1lbnQgZm9yIHRlc3RpbmcuCisKIDIwMjAtMDQtMTcgIFBlciBBcm5lIFZvbGxh
biAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIERlbnkgaW9raXQgb3BlbiBh
Y2Nlc3Mgb2YgdW51c2VkIGNsYXNzIGluIHRoZSBXZWJDb250ZW50IHNhbmRib3gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXgg
MjhkOWZmYWU3M2NjMDRmYmVjN2MzMjYzZmU4Y2E1MmQ5MWExNWU2OS4uOWUzNTJmZjlkM2QyYWEy
MThlOWQ2MjZlN2VmNTkxMmE0ODgyOTg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTE1NSwxNSArMTU1LDIxIEBAIHZv
aWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmJiBkYXRhKQogewogICAgIC8vIFBhZ2VzIHNob3VsZCBub3QgaGF2ZSBiZWVuIGFibGUg
dG8gbWFrZSBhIG5ldyByZWdpc3RyYXRpb24gdG8gdGhpcyBrZXkgd2hpbGUgdGhlIGltcG9ydCB3
YXMgc3RpbGwgdGFraW5nIHBsYWNlLgogICAgIEFTU0VSVCghbV9zY29wZVRvUmVnaXN0cmF0aW9u
TWFwLmNvbnRhaW5zKGRhdGEucmVnaXN0cmF0aW9uLmtleSkpOwotCi0gICAgYXV0byByZWdpc3Ry
YXRpb24gPSBtYWtlVW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPigqdGhpcywgZGF0YS5yZWdp
c3RyYXRpb24ua2V5LCBkYXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSwgZGF0YS5yZWdp
c3RyYXRpb24uc2NvcGVVUkwsIGRhdGEuc2NyaXB0VVJMKTsKLSAgICByZWdpc3RyYXRpb24tPnNl
dExhc3RVcGRhdGVUaW1lKGRhdGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1lKTsKLSAgICBh
dXRvIHJlZ2lzdHJhdGlvblB0ciA9IHJlZ2lzdHJhdGlvbi5nZXQoKTsKLSAgICBhZGRSZWdpc3Ry
YXRpb24oV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKLQotICAgIGF1dG8gd29ya2VyID0gU1dTZXJ2
ZXJXb3JrZXI6OmNyZWF0ZSgqdGhpcywgKnJlZ2lzdHJhdGlvblB0ciwgZGF0YS5zY3JpcHRVUkws
IGRhdGEuc2NyaXB0LCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZShkYXRhLnJl
ZmVycmVyUG9saWN5KSwgZGF0YS53b3JrZXJUeXBlLCBkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBXVEZNb3ZlKGRhdGEuc2NyaXB0UmVzb3VyY2VNYXApKTsKLSAgICByZWdpc3RyYXRpb25Q
dHItPnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0
ZTo6QWN0aXZlLCB3b3JrZXIucHRyKCkpOwotICAgIHdvcmtlci0+c2V0U3RhdGUoU2VydmljZVdv
cmtlclN0YXRlOjpBY3RpdmF0ZWQpOworICAgIAorICAgIHZhbGlkYXRlUmVnaXN0cmF0aW9uRG9t
YWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKGRhdGEuc2NyaXB0VVJMKSwgW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSAoYm9vbCBp
c1ZhbGlkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgaWYgKG1faGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50IHx8IGlzVmFs
aWQpIHsKKyAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gbWFrZVVuaXF1ZTxTV1NlcnZl
clJlZ2lzdHJhdGlvbj4oKnRoaXMsIGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5yZWdpc3Ry
YXRpb24udXBkYXRlVmlhQ2FjaGUsIGRhdGEucmVnaXN0cmF0aW9uLnNjb3BlVVJMLCBkYXRhLnNj
cmlwdFVSTCk7CisgICAgICAgICAgICByZWdpc3RyYXRpb24tPnNldExhc3RVcGRhdGVUaW1lKGRh
dGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1lKTsKKyAgICAgICAgICAgIGF1dG8gcmVnaXN0
cmF0aW9uUHRyID0gcmVnaXN0cmF0aW9uLmdldCgpOworICAgICAgICAgICAgYWRkUmVnaXN0cmF0
aW9uKFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CisKKyAgICAgICAgICAgIGF1dG8gd29ya2VyID0g
U1dTZXJ2ZXJXb3JrZXI6OmNyZWF0ZSgqdGhpcywgKnJlZ2lzdHJhdGlvblB0ciwgZGF0YS5zY3Jp
cHRVUkwsIGRhdGEuc2NyaXB0LCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZShk
YXRhLnJlZmVycmVyUG9saWN5KSwgZGF0YS53b3JrZXJUeXBlLCBkYXRhLnNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEuc2NyaXB0UmVzb3VyY2VNYXApKTsKKyAgICAgICAgICAg
IHJlZ2lzdHJhdGlvblB0ci0+dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvblN0YXRlOjpBY3RpdmUsIHdvcmtlci5wdHIoKSk7CisgICAgICAgICAgICB3b3Jr
ZXItPnNldFN0YXRlKFNlcnZpY2VXb3JrZXJTdGF0ZTo6QWN0aXZhdGVkKTsKKyAgICAgICAgfQor
ICAgIH0pOwogfQogCiB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb24oc3RkOjp1bmlxdWVf
cHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmIHJlZ2lzdHJhdGlvbikKQEAgLTMwNSwxMiArMzEx
LDE0IEBAIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnJlbW92ZVNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29ya2VyCiAgICAgbV9zZXJ2ZXIucmVtb3ZlQ2xpZW50
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbigqdGhpcywgaWRlbnRpZmllcik7CiB9CiAKLVNXU2Vy
dmVyOjpTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiBvcmlnaW5TdG9yZSwgYm9v
bCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbkRh
dGFiYXNlRGlyZWN0b3J5LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNvZnRVcGRhdGVDYWxs
YmFjayYmIHNvZnRVcGRhdGVDYWxsYmFjaywgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFj
ayYmIGNhbGxiYWNrKQorU1dTZXJ2ZXI6OlNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3Jl
PiYmIG9yaWdpblN0b3JlLCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3Ry
aW5nJiYgcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnksIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQsIFNvZnRVcGRhdGVDYWxsYmFj
ayYmIHNvZnRVcGRhdGVDYWxsYmFjaywgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYm
IGNhbGxiYWNrLCBBcHBCb3VuZERvbWFpbnNDYWxsYmFjayYmIGFwcEJvdW5kRG9tYWluc0NhbGxi
YWNrKQogICAgIDogbV9vcmlnaW5TdG9yZShXVEZNb3ZlKG9yaWdpblN0b3JlKSkKICAgICAsIG1f
c2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1faXNQcm9jZXNzVGVybWluYXRpb25EZWxheUVu
YWJsZWQocHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkKQogICAgICwgbV9jcmVhdGVDb250
ZXh0Q29ubmVjdGlvbkNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQogICAgICwgbV9zb2Z0VXBk
YXRlQ2FsbGJhY2soV1RGTW92ZShzb2Z0VXBkYXRlQ2FsbGJhY2spKQorICAgICwgbV9hcHBCb3Vu
ZERvbWFpbnNDYWxsYmFjayhXVEZNb3ZlKGFwcEJvdW5kRG9tYWluc0NhbGxiYWNrKSkKKyAgICAs
IG1faGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KGhhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVu
dCkKIHsKICAgICBSRUxFQVNFX0xPR19JRihyZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeS5p
c0VtcHR5KCkgJiYgIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCksIFNlcnZpY2VXb3JrZXIsICJO
byBwYXRoIHRvIHN0b3JlIHRoZSBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRpb25zIik7CiAgICAg
aWYgKCFtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQpAQCAtMzIyLDMxICszMzAsNTMgQEAgU1dT
ZXJ2ZXI6OlNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmIG9yaWdpblN0b3JlLCBi
b29sIHByb2Nlc3NUZXJtaW5hdGkKICAgICBhbGxTZXJ2ZXJzKCkuYWRkKHRoaXMpOwogfQogCit2
b2lkIFNXU2VydmVyOjp2YWxpZGF0ZVJlZ2lzdHJhdGlvbkRvbWFpbihXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgaWYgKG1faGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50IHx8
IG1faGFzUmVjZWl2ZWRBcHBCb3VuZERvbWFpbnMpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIobV9hcHBCb3VuZERvbWFpbnMuY29udGFpbnMoZG9tYWluKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgbV9hcHBCb3VuZERvbWFpbnNDYWxsYmFjayhbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgZG9tYWluID0gV1RGTW92ZShkb21haW4pLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgYXBwQm91bmRE
b21haW5zKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgbV9oYXNSZWNlaXZlZEFwcEJvdW5kRG9tYWlucyA9IHRydWU7CisgICAg
ICAgIG1fYXBwQm91bmREb21haW5zID0gV1RGTW92ZShhcHBCb3VuZERvbWFpbnMpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihtX2FwcEJvdW5kRG9tYWlucy5jb250YWlucyhkb21haW4pKTsK
KyAgICB9KTsKK30KKwogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI3Nj
aGVkdWxlLWpvYi1hbGdvcml0aG0KIHZvaWQgU1dTZXJ2ZXI6OnNjaGVkdWxlSm9iKFNlcnZpY2VX
b3JrZXJKb2JEYXRhJiYgam9iRGF0YSkKIHsKICAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250
YWlucyhqb2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpIHx8IGpvYkRhdGEuY29ubmVjdGlv
bklkZW50aWZpZXIoKSA9PSBQcm9jZXNzOjppZGVudGlmaWVyKCkpOwogCi0gICAgYXV0byYgam9i
UXVldWUgPSAqbV9qb2JRdWV1ZXMuZW5zdXJlKGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCksIFt0
aGlzLCAmam9iRGF0YV0gewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlckpvYlF1
ZXVlPigqdGhpcywgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSk7Ci0gICAgfSkuaXRlcmF0b3It
PnZhbHVlOwotCi0gICAgaWYgKCFqb2JRdWV1ZS5zaXplKCkpIHsKLSAgICAgICAgam9iUXVldWUu
ZW5xdWV1ZUpvYihXVEZNb3ZlKGpvYkRhdGEpKTsKLSAgICAgICAgam9iUXVldWUucnVuTmV4dEpv
YigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8mIGxhc3RKb2IgPSBqb2JRdWV1
ZS5sYXN0Sm9iKCk7Ci0gICAgaWYgKGpvYkRhdGEuaXNFcXVpdmFsZW50KGxhc3RKb2IpKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBQZXIgdGhlIHNwZWMsIGNoZWNrIGlmIHRoaXMgam9iIGlzIGVxdWl2
YWxlbnQgdG8gdGhlIGxhc3Qgam9iIG9uIHRoZSBxdWV1ZS4KLSAgICAgICAgLy8gSWYgaXQgaXMs
IHN0YWNrIGl0IGFsb25nIHdpdGggdGhhdCBqb2IuIEZvciBub3csIHdlIGp1c3QgbWFrZSBzdXJl
IHRvIG5vdCBjYWxsIHNvZnQtdXBkYXRlIHRvbyBvZnRlbi4KLSAgICAgICAgaWYgKGpvYkRhdGEu
dHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VXBkYXRlICYmIGpvYkRhdGEuY29ubmVjdGlv
bklkZW50aWZpZXIoKSA9PSBQcm9jZXNzOjppZGVudGlmaWVyKCkpCisgICAgdmFsaWRhdGVSZWdp
c3RyYXRpb25Eb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4oam9iRGF0YS5zY3JpcHRV
UkwpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgam9iRGF0YSA9IFdURk1v
dmUoam9iRGF0YSldIChib29sIGlzVmFsaWQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtU
aGlzKQogICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGpvYlF1ZXVlLmVucXVldWVK
b2IoV1RGTW92ZShqb2JEYXRhKSk7Ci0gICAgaWYgKGpvYlF1ZXVlLnNpemUoKSA9PSAxKQotICAg
ICAgICBqb2JRdWV1ZS5ydW5OZXh0Sm9iKCk7CisgICAgICAgIGlmIChtX2hhc1NlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudCB8fCBpc1ZhbGlkKSB7CisgICAgICAgICAgICBhdXRvJiBqb2JRdWV1ZSA9
ICptX2pvYlF1ZXVlcy5lbnN1cmUoam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSwgW3RoaXMsICZq
b2JEYXRhXSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1dTZXJ2ZXJKb2JR
dWV1ZT4oKnRoaXMsIGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCkpOworICAgICAgICAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOworCisgICAgICAgICAgICBpZiAoIWpvYlF1ZXVlLnNpemUoKSkgewor
ICAgICAgICAgICAgICAgIGpvYlF1ZXVlLmVucXVldWVKb2IoV1RGTW92ZShqb2JEYXRhKSk7Cisg
ICAgICAgICAgICAgICAgam9iUXVldWUucnVuTmV4dEpvYigpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8mIGxhc3RKb2IgPSBqb2JRdWV1
ZS5sYXN0Sm9iKCk7CisgICAgICAgICAgICBpZiAoam9iRGF0YS5pc0VxdWl2YWxlbnQobGFzdEpv
YikpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogUGVyIHRoZSBzcGVjLCBjaGVjayBpZiB0
aGlzIGpvYiBpcyBlcXVpdmFsZW50IHRvIHRoZSBsYXN0IGpvYiBvbiB0aGUgcXVldWUuCisgICAg
ICAgICAgICAgICAgLy8gSWYgaXQgaXMsIHN0YWNrIGl0IGFsb25nIHdpdGggdGhhdCBqb2IuIEZv
ciBub3csIHdlIGp1c3QgbWFrZSBzdXJlIHRvIG5vdCBjYWxsIHNvZnQtdXBkYXRlIHRvbyBvZnRl
bi4KKyAgICAgICAgICAgICAgICBpZiAoam9iRGF0YS50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JU
eXBlOjpVcGRhdGUgJiYgam9iRGF0YS5jb25uZWN0aW9uSWRlbnRpZmllcigpID09IFByb2Nlc3M6
OmlkZW50aWZpZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgam9iUXVldWUuZW5xdWV1ZUpvYihXVEZNb3ZlKGpvYkRhdGEpKTsKKyAg
ICAgICAgICAgIGlmIChqb2JRdWV1ZS5zaXplKCkgPT0gMSkKKyAgICAgICAgICAgICAgICBqb2JR
dWV1ZS5ydW5OZXh0Sm9iKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmVqZWN0Sm9i
KGpvYkRhdGEsIHsgVHlwZUVycm9yLCAiSm9iIHJlamVjdGVkIGZvciBub24gYXBwLWJvdW5kIGRv
bWFpbiIgfSk7CisgICAgfSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnNjaGVkdWxlVW5yZWdpc3Rl
ckpvYihTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIgam9iRGF0YUlkZW50aWZpZXIsIFNX
U2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIERvY3VtZW50T3JXb3JrZXJJZGVudGlm
aWVyIGNvbnRleHRJZGVudGlmaWVyLCBVUkwmJiBjbGllbnRDcmVhdGlvblVSTCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCAyODc5
MjgzZWFlMGFmODNlOTU2Yzk5OGUzNWYwNDk0M2VlNzM1YzYzLi4zYTk1OWRhODk1ZjA2OWNjZGUx
OWU5YTY2M2NiZThiODcyZjVkY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0xMjYsNyArMTI2LDggQEAgcHVibGljOgogCiAg
ICAgdXNpbmcgU29mdFVwZGF0ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYmIGpvYkRhdGEsIGJvb2wgc2hvdWxkUmVmcmVzaENhY2hlLCBSZXNvdXJjZVJlcXVl
c3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQmKT4mJik+OwogICAgIHVzaW5nIENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2sgPSBG
dW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKT47Ci0gICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXIoVW5pcXVl
UmVmPFNXT3JpZ2luU3RvcmU+JiYsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVk
LCBTdHJpbmcmJiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFMOjpTZXNzaW9uSUQs
IFNvZnRVcGRhdGVDYWxsYmFjayYmLCBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrJiYp
OworICAgIHVzaW5nIEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYp
PiYmKT47CisgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3Rv
cmU+JiYsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiByZWdp
c3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFMOjpTZXNzaW9uSUQsIGJvb2wgaGFzU2Vydmlj
ZVdvcmtlckVudGl0bGVtZW50LCBTb2Z0VXBkYXRlQ2FsbGJhY2smJiwgQ3JlYXRlQ29udGV4dENv
bm5lY3Rpb25DYWxsYmFjayYmLCBBcHBCb3VuZERvbWFpbnNDYWxsYmFjayYmKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIH5TV1NlcnZlcigpOwogCkBAIC0yMTUsNiArMjE2LDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0VGVybWluYXRpb25EZWxheSA9IDEw
X3M7CiAKIHByaXZhdGU6CisgICAgdm9pZCB2YWxpZGF0ZVJlZ2lzdHJhdGlvbkRvbWFpbihXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CisKICAgICB2b2lkIHNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNo
UmVzdWx0Jik7CiAKICAgICB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKENvbm5l
Y3Rpb24qLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CkBAIC0yNjksNiAr
MjcyLDExIEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gbV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnM7CiAgICAgVmVjdG9yPENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4+IG1faW1wb3J0Q29tcGxldGVkQ2FsbGJhY2tzOwogICAgIFNvZnRVcGRhdGVD
YWxsYmFjayBtX3NvZnRVcGRhdGVDYWxsYmFjazsKKyAgICBBcHBCb3VuZERvbWFpbnNDYWxsYmFj
ayBtX2FwcEJvdW5kRG9tYWluc0NhbGxiYWNrOworICAgIAorICAgIEhhc2hTZXQ8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IG1fYXBwQm91bmREb21haW5zOworICAgIGJvb2wgbV9oYXNTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNSZWNlaXZlZEFw
cEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDJiY2EyMjJhMjE0MmY5NjRmOWU4MWExMDNl
ZjYwYTM1YzQ1NGI5NTAuLjU0OGVhNGE1MTFjOGM2MDcyYjVlNjBlNjgzNjY5MmJhNWFiZWRhYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xMjEsOCArMTIxLDcgQEAgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5l
dHdvcmtQcm9jZXNzJiBuZXQKICAgICBtX2Nvbm5lY3Rpb24tPm9wZW4oKTsKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAobmV0d29ya1Byb2Nlc3MucGFyZW50UHJvY2Vzc0hh
c1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKQotICAgICAgICBlc3RhYmxpc2hTV1NlcnZlckNv
bm5lY3Rpb24oKTsKKyAgICBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKICNlbmRpZgog
fQogCkBAIC00MzEsMTUgKzQzMCw4IEBAIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlPj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlCiB9CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1ib29sIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjppc1NlcnZpY2VXb3JrZXJBbGxvd2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9uZXR3
b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpOwot
fQotCiBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUZldGNoVGFzayhOZXR3b3JrUmVzb3VyY2VMb2FkZXIm
IGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlmICghaXNT
ZXJ2aWNlV29ya2VyQWxsb3dlZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1
cm4gc3dDb25uZWN0aW9uKCkuY3JlYXRlRmV0Y2hUYXNrKGxvYWRlciwgcmVxdWVzdCk7CiB9CiAj
ZW5kaWYKQEAgLTQ0NywxOCArNDM5LDE1IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlRmV0CiB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogewogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLSAgICBib29sIGlzU2VydmljZVdvcmtlckFsbG93ZWQgPSB0aGlz
LT5pc1NlcnZpY2VXb3JrZXJBbGxvd2VkKCk7Ci0gICAgaWYgKGlzU2VydmljZVdvcmtlckFsbG93
ZWQpIHsKLSAgICAgICAgYXV0byYgc2VydmVyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJG
b3JTZXNzaW9uKG1fc2Vzc2lvbklEKTsKLSAgICAgICAgaWYgKCFzZXJ2ZXIuaXNJbXBvcnRDb21w
bGV0ZWQoKSkgewotICAgICAgICAgICAgc2VydmVyLndoZW5JbXBvcnRJc0NvbXBsZXRlZChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBsb2FkUGFyYW1ldGVycyA9IFdURk1v
dmUobG9hZFBhcmFtZXRlcnMpXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGlmICghbV9u
ZXR3b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc0Nvbm5lY3Rpb24od2ViUHJvY2Vzc0lkZW50aWZpZXIo
KSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
bV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uKG1fc2Vzc2lvbklEKS5pc0ltcG9y
dENvbXBsZXRlZCgpKTsKLSAgICAgICAgICAgICAgICBzY2hlZHVsZVJlc291cmNlTG9hZChXVEZN
b3ZlKGxvYWRQYXJhbWV0ZXJzKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQorICAgIGF1dG8mIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2Vy
dmVyRm9yU2Vzc2lvbihtX3Nlc3Npb25JRCk7CisgICAgaWYgKCFzZXJ2ZXIuaXNJbXBvcnRDb21w
bGV0ZWQoKSkgeworICAgICAgICBzZXJ2ZXIud2hlbkltcG9ydElzQ29tcGxldGVkKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGxvYWRQYXJhbWV0ZXJzID0gV1RGTW92ZShs
b2FkUGFyYW1ldGVycyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIW1fbmV0d29ya1By
b2Nlc3MtPndlYlByb2Nlc3NDb25uZWN0aW9uKHdlYlByb2Nlc3NJZGVudGlmaWVyKCkpKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNz
LT5zd1NlcnZlckZvclNlc3Npb24obV9zZXNzaW9uSUQpLmlzSW1wb3J0Q29tcGxldGVkKCkpOwor
ICAgICAgICAgICAgc2NoZWR1bGVSZXNvdXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1ldGVycykp
OworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogICAgIGF1dG8g
aWRlbnRpZmllciA9IGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXI7CkBAIC00NjksMTIgKzQ1OCwx
MSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlZHVsZVJlc291cmNl
TG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYQogICAgIGF1dG8mIGxvYWRlciA9IG1fbmV0d29y
a1Jlc291cmNlTG9hZGVycy5hZGQoaWRlbnRpZmllciwgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpj
cmVhdGUoV1RGTW92ZShsb2FkUGFyYW1ldGVycyksICp0aGlzKSkuaXRlcmF0b3ItPnZhbHVlOwog
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChpc1NlcnZpY2VXb3JrZXJBbGxv
d2VkKSB7Ci0gICAgICAgIGxvYWRlci0+c3RhcnRXaXRoU2VydmljZVdvcmtlcigpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotI2VuZGlmCisgICAgbG9hZGVyLT5zdGFydFdpdGhTZXJ2aWNlV29y
a2VyKCk7CisgICAgcmV0dXJuOworI2Vsc2UKICAgICBsb2FkZXItPnN0YXJ0KCk7CisjZW5kaWYK
IH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGVyZm9ybVN5bmNocm9u
b3VzTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzLCBN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91
c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQpAQCAtMTA1Myw3ICsxMDQxLDYgQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5v
TG9uZ2VyTmVlZGVkKCkKIAogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c3dDb25uZWN0aW9uKCkKIHsKLSAgICBBU1NFUlQoaXNTZXJ2aWNlV29y
a2VyQWxsb3dlZCgpKTsKICAgICBpZiAoIW1fc3dDb25uZWN0aW9uKQogICAgICAgICBlc3RhYmxp
c2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKICAgICByZXR1cm4gKm1fc3dDb25uZWN0aW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGY1YzAzY2M4M2Q3MWY4ZjdiOTdkYjE4ZWQ4ZmI0NDVk
ODY3Y2M0YzEuLjdiNWUwY2UzZWViMzViOWJkMmJjM2MyYmNmZWFkNDY2MWY3OTFjZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTIzNiw3ICsyMzYsNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xvc2VTV0NvbnRl
eHRDb25uZWN0aW9uKCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7Ci0gICAg
Ym9vbCBpc1NlcnZpY2VXb3JrZXJBbGxvd2VkKCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIHZvaWQg
Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRl
bnRpZmllciYgcG9ydDEsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9y
dDIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAppbmRleCAxMGQ1Y2EwNjFiN2NmZDhlYzE2OTU5NjRjZjk2ZGU0ZGViMjZhODkxLi5mNjJlOTg2
MTBkZDJlNzRlZmNmMGM4OTk0NzVlNmQwOTViOGY5MTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzQ1LDEwICszNDUsOCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmJgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgaWYgKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSkg
ewotICAgICAgICBib29sIHNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJs
ZWQgPSB0cnVlOwotICAgICAgICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVs
YXlFbmFibGVkLCBXVEZNb3ZlKHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSksIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7Ci0gICAgfQorICAgIGJvb2wgc2VydmljZVdvcmtlclByb2Nlc3NUZXJt
aW5hdGlvbkRlbGF5RW5hYmxlZCA9IHRydWU7CisgICAgYWRkU2VydmljZVdvcmtlclNlc3Npb24o
UEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgc2VydmljZVdvcmtlclByb2Nlc3NU
ZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlmCiAKICAgICBtX3N0b3JhZ2VNYW5h
Z2VyU2V0LT5hZGQoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0
ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFy
YW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwpAQCAtNDM4LDgg
KzQzNiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzCiAjZW5kaWYKIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLSAgICBpZiAocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRp
dGxlbWVudCgpKQotICAgICAgICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihzZXNzaW9uSUQsIHBh
cmFtZXRlcnMuc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RG
TW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBwYXJh
bWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
OworICAgIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKHNlc3Npb25JRCwgcGFyYW1ldGVycy5zZXJ2
aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBXVEZNb3ZlKHBhcmFtZXRl
cnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSksIHBhcmFtZXRlcnMuc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYKIAog
ICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmFkZChzZXNzaW9uSUQsIHBhcmFtZXRlcnMubG9jYWxT
dG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7CkBAIC0yNDU1LDExICsyNDUyLDEzIEBAIFNXU2VydmVyJiBOZXR3b3JrUHJvY2Vz
czo6c3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAgICAg
Ly8gSWYgdGhlcmUncyBub3QsIHRoZW4gd2hlcmUgZGlkIHRoaXMgUEFMOjpTZXNzaW9uSUQgY29t
ZSBmcm9tPwogICAgICAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgfHwgIXBhdGgu
aXNFbXB0eSgpKTsKIAotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlcj4obWFrZVVu
aXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBpbmZvLnByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
RW5hYmxlZCwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklELCBbdGhpcywgc2Vzc2lvbklEXShhdXRv
JiYgam9iRGF0YSwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUsIGF1dG8mJiByZXF1ZXN0LCBhdXRv
JiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBpbmZvLnByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklELCBwYXJl
bnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCksIFt0aGlzLCBzZXNzaW9uSURd
KGF1dG8mJiBqb2JEYXRhLCBib29sIHNob3VsZFJlZnJlc2hDYWNoZSwgYXV0byYmIHJlcXVlc3Qs
IGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6c3RhcnQobmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSwg
V1RGTW92ZShqb2JEYXRhKSwgc2hvdWxkUmVmcmVzaENhY2hlLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0sIFt0aGlzLCBzZXNzaW9uSURd
KGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluLCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIHsKICAg
ICAgICAgICAgIEFTU0VSVCghcmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKTsKICAgICAgICAg
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVEb21haW4sIHNlc3Npb25JRCB9LCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CisgICAgICAgIH0sIFt0aGlzLCBzZXNzaW9uSURdKGF1
dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpHZXRBcHBCb3VuZERvbWFpbnMgeyBzZXNzaW9uSUQgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIDApOwogICAgICAgICB9KTsKICAgICB9KTsKICAgICByZXR1cm4gKnJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CkBAIC0yNDc1LDcgKzI0NzQsNiBAQCBXZWJTV09yaWdpblN0b3JlKiBOZXR3
b3JrUHJvY2Vzczo6ZXhpc3RpbmdTV09yaWdpblN0b3JlRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25J
RAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJT
V1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7Ci0gICAgQVNTRVJUKHBhcmVudFByb2Nl
c3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSk7CiAgICAgYXV0byogc3RvcmUgPSBleGlz
dGluZ1NXT3JpZ2luU3RvcmVGb3JTZXNzaW9uKGNvbm5lY3Rpb24uc2Vzc2lvbklEKCkpOwogICAg
IEFTU0VSVChzdG9yZSk7CiAgICAgaWYgKHN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDU5ZjBmY2VmZDQ2YzQyMzBkYWRlZDdkNzFl
MjNlYmNhZDIxZDhkMmUuLjZkODZjYTk0NDA5YmIwZjlkOTMzOGRmYTU2ZDZkMjdiY2VlMThmMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAg
LTMwNiw2ICszMDYsOCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGJvb2wgcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpIGNvbnN0Owor
ICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpOworICAgIHZvaWQgY2xl
YXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogI2Vsc2UKICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmlu
ZGV4IGIyM2VmMWQwMWEwNTgyMzg5Zjc2OTM0MjliZTAyOTc4ZWMwNmUyMTkuLjUyMTM0MjU2ODdh
NDVmZWNhOTUzNWRlMWE5ZDI0ZWIxOGU4OWNjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTcyLDQg
KzE3Miw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICAKICAgICBIYXNBcHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAo
Ym9vbCBoYXNBcHBCb3VuZFNlc3Npb24pIEFzeW5jCiAgICAgU2V0SW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlKSAtPiAoKSBBc3lu
YworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBEaXNhYmxlU2VydmljZVdvcmtlckVu
dGl0bGVtZW50KCkKKyAgICBDbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKCkg
LT4gKCkgQXN5bmMKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQppbmRleCBlMTkyZjUwM2Y0NDVmZTUxMDA4
MTAyZTYzNTk2MGVhMWUxN2NlZjUyLi4xMGFiMzI0NGQxYzkxMWIyNzQ2OTg5YjdhMmRkZmQ0ZTVl
YTc3YTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3
b3JrUHJvY2Vzc0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9O
ZXR3b3JrUHJvY2Vzc0lPUy5tbQpAQCAtNzQsMTIgKzc0LDI4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtVGVybWluYXRlKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitzdGF0
aWMgYm9vbCBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVzdGluZ092ZXJyaWRlOwor
CiBib29sIE5ldHdvcmtQcm9jZXNzOjpwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0
bGVtZW50KCkgY29uc3QKIHsKKyAgICBpZiAoZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVu
dFRlc3RpbmdPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgc3RhdGljIGJv
b2wgaGFzRW50aXRsZW1lbnQgPSBXVEY6Omhhc0VudGl0bGVtZW50KHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSwgImNvbS5hcHBsZS5kZXZlbG9wZXIuV2ViS2l0LlNl
cnZpY2VXb3JrZXJzIik7CiAgICAgcmV0dXJuIGhhc0VudGl0bGVtZW50OwogfQogCit2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkKK3sKKyAgICBk
aXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVzdGluZ092ZXJyaWRlID0gdHJ1ZTsKK30K
Kwordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVy
cmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudFRlc3RpbmdPdmVycmlkZSA9IGZhbHNl
OworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggZThjNzBlYjlkMmE3NDEy
MzA5NWZjNTA5OTBlMzA0MWU3ZWQ5YWQ1MC4uZGMxMTUyZjhlYjE5ZWE1MDYwODZkOTc4YzcwMTdj
ODcyMjk4ZDQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE0Niw2ICsxNDYsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5j
b2RlciA8PCBzaG91bGRDYXB0dXJlRGlzcGxheUluVUlQcm9jZXNzOwogICAgIGVuY29kZXIgPDwg
c2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgbmVlZHNJbkFw
cEJyb3dzZXJQcml2YWN5UXVpcmtzOworICAgIGVuY29kZXIgPDwgbGltaXRzTmF2aWdhdGlvbnNU
b0FwcEJvdW5kRG9tYWluczsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBlbmNvZGVyIDw8IHRo
ZW1lTmFtZTsKQEAgLTQ3MCw2ICs0NzEsOSBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5uZWVkc0luQXBwQnJvd3NlclByaXZhY3lR
dWlya3MpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAorICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5z
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKICNpZiBQTEFURk9STShHVEsp
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnRoZW1lTmFtZSkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggODAwZTFhNzUzYTYzMTBlY2M1MTg1ZTliYWRlZWZl
YzNkMGI1NGNmYS4uMzJiNmUyOTc3ZmVkM2EwMGM0MGNjMTA5MzJmN2M4YjA5ZDVmNmU0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApA
QCAtMjE2LDYgKzIxNiw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAg
ICBib29sIHNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJv
b2wgc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIG5l
ZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IGZhbHNlIH07CisgICAgYm9vbCBsaW1pdHNO
YXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKIAogI2lmIFBMQVRGT1JNKEdU
SykKICAgICBTdHJpbmcgdGhlbWVOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzLnlhbWwKaW5kZXggYjZlYjExNGFiOTIxNWNiMTBkOTQ1OTZjODZlYmFkNzFlY2VlNzdmZi4u
NzJhMmEwZmY1ZDZlYzlhN2EyMmEwMmE3ZDMzNjJkMGMwYzBmMDhjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC0xMjczLDYgKzEyNzMsMTEgQEAgTmVlZHNJ
bkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOgogICAgIHdlYmNvcmVCaW5kaW5nOiBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzCiAgICAgY2F0ZWdvcnk6IGRlYnVnCiAKK1NlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudERpc2FibGVkRm9yVGVzdGluZzoKKyAgICB0eXBlOiBib29sCisgICAgZGVmYXVsdFZhbHVl
OiBmYWxzZQorICAgIHdlYmNvcmVCaW5kaW5nOiBub25lCisKICMgRm9yIGV4cGVyaW1lbnRhbCBm
ZWF0dXJlczoKICMgVGhlIHR5cGUgc2hvdWxkIGJlIGJvb2xlYW4uCiAjIFlvdSBtdXN0IHByb3Zp
ZGUgYSBodW1hblJlYWRhYmxlTmFtZSBhbmQgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uIGZvciBh
bGwgZXhwZXJpbWVudGFsIGZlYXR1cmVzLiBUaGV5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAppbmRleCA5NjAxNTYwMzAwODZk
N2YxNWMyOGVkNjgwNmNmMGFiMjNjNGMwNzEwLi45MjVlMjU3YjNiOTQ1ZWJkOTA3MmRiMTc3NjU4
MzdiODVhMWNhMjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElQYWdlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgUmVmPFBhZ2VDb25maWd1
cmF0aW9uPiBQYWdlQ29uZmlndXJhdGlvbjo6Y29weSgpIGNvbnN0CiAgICAgY29weS0+bV9pZ25v
cmVzQXBwQm91bmREb21haW5zID0gdGhpcy0+bV9pZ25vcmVzQXBwQm91bmREb21haW5zOwogICAg
IGNvcHktPm1fbG9hZHNTdWJyZXNvdXJjZXMgPSB0aGlzLT5tX2xvYWRzU3VicmVzb3VyY2VzOwog
ICAgIGNvcHktPm1fbG9hZHNGcm9tTmV0d29yayA9IHRoaXMtPm1fbG9hZHNGcm9tTmV0d29yazsK
LSAgICBjb3B5LT5tX2xpbWl0c05hdmlnYXRpb25Ub0FwcEJvdW5kRG9tYWlucyA9IHRoaXMtPm1f
bGltaXRzTmF2aWdhdGlvblRvQXBwQm91bmREb21haW5zOworICAgIGNvcHktPm1fbGltaXRzTmF2
aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IHRoaXMtPm1fbGltaXRzTmF2aWdhdGlvbnNUb0Fw
cEJvdW5kRG9tYWluczsKIAogICAgIHJldHVybiBjb3B5OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAppbmRleCBkZGIzYjE0MDI0
OWVmNDc3Zjg3Y2NlNzY4ZmRhZGQ2ODBhY2FiOGNhLi5jNzcwM2IyMjk4NjkwN2U0Yzg2NzM1ZDdm
MjRlY2ZlMmVjNzgyMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJUGFnZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJUGFnZUNvbmZpZ3VyYXRpb24uaApAQCAtMTU4LDggKzE1OCw4IEBAIHB1YmxpYzoKICAgICBi
b29sIGxvYWRzRnJvbU5ldHdvcmsoKSBjb25zdCB7IHJldHVybiBtX2xvYWRzRnJvbU5ldHdvcms7
IH0KICAgICB2b2lkIHNldExvYWRzRnJvbU5ldHdvcmsoYm9vbCBsb2FkcykgeyBtX2xvYWRzRnJv
bU5ldHdvcmsgPSBsb2FkczsgfQogCi0gICAgYm9vbCBsaW1pdHNOYXZpZ2F0aW9uVG9BcHBCb3Vu
ZERvbWFpbnMoKSBjb25zdCB7IHJldHVybiBtX2xpbWl0c05hdmlnYXRpb25Ub0FwcEJvdW5kRG9t
YWluczsgfQotICAgIHZvaWQgc2V0TGltaXRzTmF2aWdhdGlvblRvQXBwQm91bmREb21haW5zKGJv
b2wgbGltaXRzKSB7IG1fbGltaXRzTmF2aWdhdGlvblRvQXBwQm91bmREb21haW5zID0gbGltaXRz
OyB9CisgICAgYm9vbCBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKCkgY29uc3Qg
eyByZXR1cm4gbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOyB9CisgICAgdm9p
ZCBzZXRMaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKGJvb2wgbGltaXRzKSB7IG1f
bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IGxpbWl0czsgfQogCiBwcml2YXRl
OgogCkBAIC0yMDQsNyArMjA0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faWdub3Jlc0FwcEJv
dW5kRG9tYWlucyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2xvYWRzU3VicmVzb3VyY2VzIHsgdHJ1
ZSB9OwogICAgIGJvb2wgbV9sb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9s
aW1pdHNOYXZpZ2F0aW9uVG9BcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9s
aW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcmVmZXJlbmNlcy5tbQppbmRleCA5YWFiYTBmODcwYWU5NDk4ODFiZTA3YWY5NTAzMGZlZWUx
NDlkMjU5Li5kMGFmM2JmOGM2ZWJiODBmZmRjZDM1NzdmZmM5M2FiYzIzYmI1ZGZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQpA
QCAtOTIzLDYgKzkyMywxNiBAQCAtIChCT09MKV9pc0lUUERhdGFiYXNlRW5hYmxlZAogICAgIHJl
dHVybiBfcHJlZmVyZW5jZXMtPmlzSVRQRGF0YWJhc2VFbmFibGVkKCk7CiB9CiAKKy0gKEJPT0wp
X3NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZworeworICAgIHJldHVy
biBfcHJlZmVyZW5jZXMtPnNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGlu
ZygpOworfQorCistICh2b2lkKV9zZXRTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZv
clRlc3Rpbmc6KEJPT0wpZGlzYWJsZQoreworICAgIF9wcmVmZXJlbmNlcy0+c2V0U2VydmljZVdv
cmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nKGRpc2FibGUpOworfQorCiAjaWYgUExB
VEZPUk0oTUFDKQogLSAodm9pZClfc2V0SmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzOihCT09MKWVu
YWJsZWQKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggN2NkMDUxODdmOTQwYmI2N2Y5YWIwYzIxZjg5
YTc5OTAwN2Q0YTVjNC4uNjc1Njc4OTNmNDRiNmJmOGUwOTY5MGY1NTE2MTYyZDQzM2I5MTUwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5j
ZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJl
ZmVyZW5jZXNQcml2YXRlLmgKQEAgLTE2NSw2ICsxNjUsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBfV0tFZGl0YWJsZUxpbmtCZWhhdmlvcikgewogQHByb3BlcnR5IChub25hdG9taWMs
IHNldHRlcj1fc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQ6KSBCT09MIF9hY2NlbGVy
YXRlZENvbXBvc2l0aW5nRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBp
b3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0UmVxdWVz
dEFuaW1hdGlvbkZyYW1lRW5hYmxlZDopIEJPT0wgX3JlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfaXNJVFBEYXRhYmFzZUVuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFNlcnZpY2VXb3JrZXJFbnRpdGxlbWVu
dERpc2FibGVkRm9yVGVzdGluZzopIEJPT0wgX3NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2Fi
bGVkRm9yVGVzdGluZyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBzZXR0ZXI9X3NldFdlYkdMRW5hYmxlZDopIEJPT0wgX3dlYkdMRW5hYmxlZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDg4ODU5NWQ4NDM5Y2QxMDRjMGVjZWY2ZWYxOGI1YmNl
YmFkY2I5NzkuLjAwMzQxNThiYTIxZmYzYTgxMDdmY2U3ZDA3ZjhiMDYxZDliNDI2NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTIx
LDYgKzEyMSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgpA
QCAtNTIzLDggKzUyNCw5IEBAIC0gKHZvaWQpX3NldHVwUGFnZUNvbmZpZ3VyYXRpb246KFJlZjxB
UEk6OlBhZ2VDb25maWd1cmF0aW9uPiYpcGFnZUNvbmZpZ3VyYXRpb24KICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmICgh
V1RGOjpwcm9jZXNzSGFzRW50aXRsZW1lbnQoImNvbS5hcHBsZS5kZXZlbG9wZXIuV2ViS2l0LlNl
cnZpY2VXb3JrZXJzIikpCisgICAgaWYgKCghV1RGOjpwcm9jZXNzSGFzRW50aXRsZW1lbnQoImNv
bS5hcHBsZS5kZXZlbG9wZXIuV2ViS2l0LlNlcnZpY2VXb3JrZXJzIikgfHwgISFbX2NvbmZpZ3Vy
YXRpb24gcHJlZmVyZW5jZXNdLl9zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRl
c3RpbmcpICYmICFbX2NvbmZpZ3VyYXRpb24gbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9t
YWluc10pCiAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRTZXJ2
aWNlV29ya2Vyc0VuYWJsZWQoZmFsc2UpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJl
bmNlcygpLT5zZXRTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3RpbmcoISFb
X2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLl9zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNh
YmxlZEZvclRlc3RpbmcpOwogI2VuZGlmCiAKICAgICBpZiAoIWxpbmtlZE9uT3JBZnRlcihXZWJL
aXQ6OlNES1ZlcnNpb246OkZpcnN0V2hlcmVTaXRlU3BlY2lmaWNRdWlya3NBcmVFbmFibGVkQnlE
ZWZhdWx0KSkKQEAgLTI2NTAsNiArMjY1MiwxOSBAQCAtICh2b2lkKV9pc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiAgICAgfSk7CiB9
CiAKKy0gKHZvaWQpX3NlcnZpY2VXb3JrZXJzRW5hYmxlZDoodm9pZCheKShCT09MKSljb21wbGV0
aW9uSGFuZGxlcgoreworICAgIGF1dG8gZW5hYmxlZCA9IFtfY29uZmlndXJhdGlvbiBwcmVmZXJl
bmNlc10tPl9wcmVmZXJlbmNlcy5nZXQoKS0+c2VydmljZVdvcmtlcnNFbmFibGVkKCkgfHwgV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXJ2aWNlV29y
a2VyRW5hYmxlZCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGVuYWJsZWQpOworfQorCistICh2
b2lkKV9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlOih2b2lkICheKSh2b2lk
KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9wYWdlLT5jbGVhclNlcnZpY2VXb3JrZXJFbnRp
dGxlbWVudE92ZXJyaWRlKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30K
KwogLSAoaWQgPF9XS0lucHV0RGVsZWdhdGU+KV9pbnB1dERlbGVnYXRlCiB7CiAgICAgcmV0dXJu
IF9pbnB1dERlbGVnYXRlLmdldEF1dG9yZWxlYXNlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpp
bmRleCBlMzg0ZGRlYjc0Y2JiNGQ5NTkwNTQ0YjFhZjI1MjVhZmIwYjU1NGNhLi4wNzg3MWJlMjVh
MjI1YjJiZjI4NTIyYmMyZjU5ZWM0M2NlNTA0Yzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpA
QCAtNjg1LDE0ICs2ODUsMTQgQEAgLSAodm9pZClfc2V0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRh
VVJMczooQk9PTClhbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzCiAgICAgX2FsbG93VG9wTmF2
aWdhdGlvblRvRGF0YVVSTHMgPSBhbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzOwogfQogCi0t
IChCT09MKWxpbWl0c05hdmlnYXRpb25Ub0FwcEJvdW5kRG9tYWlucworLSAoQk9PTClsaW1pdHNO
YXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zCiB7Ci0gICAgcmV0dXJuIF9wYWdlQ29uZmlndXJh
dGlvbi0+bGltaXRzTmF2aWdhdGlvblRvQXBwQm91bmREb21haW5zKCk7CisgICAgcmV0dXJuIF9w
YWdlQ29uZmlndXJhdGlvbi0+bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucygpOwog
fQogCi0tICh2b2lkKXNldExpbWl0c05hdmlnYXRpb25Ub0FwcEJvdW5kRG9tYWluczooQk9PTCls
aW1pdHNUb0FwcEJvdW5kRG9tYWlucworLSAodm9pZClzZXRMaW1pdHNOYXZpZ2F0aW9uc1RvQXBw
Qm91bmREb21haW5zOihCT09MKWxpbWl0c1RvQXBwQm91bmREb21haW5zCiB7Ci0gICAgX3BhZ2VD
b25maWd1cmF0aW9uLT5zZXRMaW1pdHNOYXZpZ2F0aW9uVG9BcHBCb3VuZERvbWFpbnMobGltaXRz
VG9BcHBCb3VuZERvbWFpbnMpOworICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0TGltaXRzTmF2
aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyhsaW1pdHNUb0FwcEJvdW5kRG9tYWlucyk7CiB9CiAK
IC0gKEJPT0wpX2NvbnZlcnRzUG9zaXRpb25TdHlsZU9uQ29weQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggYTcyMDdh
YjNkZTM4NDJmYjA4ZTk2MDA3NjI2MDZjOGY2Yjk1NDE4Ny4uOGE2ODIzYzA5MGNjN2U0NGVmNTc0
Njc5YjA3ZTgyOTc1NmRkOTcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zNDMsNiArMzQzLDggQEAgZm9yIHRo
aXMgcHJvcGVydHkuCiAKIC0gKHZvaWQpX2dyYW50QWNjZXNzVG9QcmVmZXJlbmNlU2VydmljZSBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCist
ICh2b2lkKV9zZXJ2aWNlV29ya2Vyc0VuYWJsZWQ6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKy0gKHZvaWQpX2NsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGU6KHZvaWQg
KF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAZW5kCiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCAwODVlNDRjNzYzZmI0MDNlYmViNDE3MTUwZDhlMjZlNDU5Y2Y5MzAy
Li4wMTFhMjQ0ZTM3YjA0OGFiZmUzMzNlMGU2M2ZlOGQxNjgzNzk3YzFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTE0ODEsNiArMTQ4MSwyMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldElu
QXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRAogICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEluQXBwQnJvd3Nl
clByaXZhY3lFbmFibGVkKHNlc3Npb25JRCwgdmFsdWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0QXBwQm91bmREb21haW5z
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmIChhdXRvKiBzdG9yZSA9IHdlYnNpdGVE
YXRhU3RvcmVGcm9tU2Vzc2lvbklEKHNlc3Npb25JRCkpIHsKKyAgICAgICAgc3RvcmUtPmdldEFw
cEJvdW5kRG9tYWlucyhbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKGF1dG8mIGFwcEJvdW5kRG9tYWlucykgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRv
IGFwcEJvdW5kRG9tYWluc0NvcHkgPSBhcHBCb3VuZERvbWFpbnM7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGFwcEJvdW5kRG9tYWluc0NvcHkpKTsKKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyNl
bHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyNlbmRpZgorfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBiODY1N2EyZjBiOWM3MDRjMjMxMDA1M2YyNWIw
Njk4NjkwZDhkNzA2Li5jZTVlYThkMzdmYzhhNjJjNjQ2NDU0NTdiZjdkMjQ3MmQ0NWMzNzI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaApAQCAtMjIzLDcgKzIyMywxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGhhc0Fw
cEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CiAgICAgdm9pZCBzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChQQUw6OlNlc3Np
b25JRCwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICAKKworI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisgICAgdm9pZCBnZXRBcHBCb3VuZERvbWFpbnMoUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4mJik+JiYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgLy8gQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5CiAgICAgQVNDSUlMaXRlcmFsIHByb2Nlc3NOYW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gIk5ldHdvcmtpbmciX3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCBiZTU1ODc4OGI2Y2YzMGZiMTBiOTU2YzIxZGNmYzkzNWU1NGE0NTllLi5hMGM3ODFiYjFjNWUy
NGFmMjU4ZWIwNmJjMDgzNzU3ZDU1ODg4ZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluCkBAIC02Nyw2ICs2Nyw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVn
YWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAKICAgICBTZXRXZWJQcm9jZXNzSGFzVXBsb2Fk
cyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQsIGJvb2wgaGFzVXBsb2FkKQog
CisgICAgR2V0QXBwQm91bmREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGFwcEJvdW5kRG9tYWlucykgQXN5bmMK
KwogICAgIFJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1
Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90
IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkKSAtPiAoT3B0aW9uYWw8dWludDY0
X3Q+IG5ld1F1b3RhKSBBc3luYwogICAgIAogICAgIFJlc291cmNlTG9hZERpZFNlbmRSZXF1ZXN0
KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgc3RydWN0IFdl
YktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCwgT3B0aW9uYWw8SVBDOjpGb3JtRGF0YVJlZmVyZW5jZT4gaHR0cEJv
ZHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAwN2VjNzVm
MjcxNDY3ZDA3NzVmMjZkMWMyYWVjZmQzZjUxZTM4YjU5Li5kYmEyNmRiYjhhY2VkNTA3ZjRiZDEx
MDdmMTY3ODI2NmVlMjMyMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTE3OSw2ICsxNzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93RmVhdHVy
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dyaXRpbmdEaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxz
dGRpby5oPgorI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3
dGYvU3lzdGVtVHJhY2luZy5oPgpAQCAtNDg1LDcgKzQ4Niw3IEBAIFdlYlBhZ2VQcm94eTo6V2Vi
UGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cywgUmVmCiAgICAgLCBtX3RyeUNsb3NlVGltZW91dFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhp
cywgJldlYlBhZ2VQcm94eTo6dHJ5Q2xvc2VUaW1lZE91dCkKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAsIG1faWdub3Jlc0FwcEJvdW5kRG9tYWlucyhtX2NvbmZpZ3VyYXRpb24tPmlnbm9yZXNB
cHBCb3VuZERvbWFpbnMoKSB8fCBXVEY6OnByb2Nlc3NIYXNFbnRpdGxlbWVudCgiY29tLmFwcGxl
LnByaXZhdGUuYXBwbGVtZWRpYXNlcnZpY2VzIikpCi0gICAgLCBtX2xpbWl0c05hdmlnYXRpb25U
b0FwcEJvdW5kRG9tYWlucyhtX2NvbmZpZ3VyYXRpb24tPmxpbWl0c05hdmlnYXRpb25Ub0FwcEJv
dW5kRG9tYWlucygpKQorICAgICwgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5z
KG1fY29uZmlndXJhdGlvbi0+bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucygpKQog
I2VuZGlmCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3RydWN0
b3I6Iik7CkBAIC01MjEsNiArNTIyLDkgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBSZWYKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXRE
aXNhYmxlU2NyZWVuU2l6ZU92ZXJyaWRlKG1fcHJlZmVyZW5jZXMtPmRpc2FibGVTY3JlZW5TaXpl
T3ZlcnJpZGUoKSk7CisgICAgCisgICAgaWYgKG1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMo
KS0+c2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nKCkpCisgICAgICAg
IGRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRJbk5ldHdvcmtQcm9jZXNzKCk7CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMzE1Niw2ICszMTYwLDM0IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojppc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluVGVzdGluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvCiAgICAgY29tcGxldGlvbkhhbmRsZXIobV9pc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluICYmICgqbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID09IE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXMpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmRp
c2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRJbk5ldHdvcmtQcm9jZXNzKCkKK3sKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IG1fcHJv
Y2Vzcy0+cHJvY2Vzc1Bvb2woKS5uZXR3b3JrUHJvY2VzcygpKSB7CisgICAgICAgIGlmICghbmV0
d29ya1Byb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG5ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGlzYWJs
ZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpLCAwKTsKKyAgICB9CisjZW5kaWYKK30KKwordm9p
ZCBXZWJQYWdlUHJveHk6OmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0Fn
Z3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpDbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudE92ZXJyaWRlKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOworICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IG1fcHJvY2Vz
cy0+cHJvY2Vzc1Bvb2woKS5uZXR3b3JrUHJvY2VzcygpKSB7CisgICAgICAgIGlmICghbmV0d29y
a1Byb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbmV0d29ya1By
b2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNsZWFy
U2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoKSwgW2NhbGxiYWNrQWdncmVnYXRvciA9
IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQorI2Vsc2UKKyAgICBj
b21wbGV0aW9uSGFuZGxlcigpOworI2VuZGlmCit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNl
aXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBB
UEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQg
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIFJlZlB0
cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiBwb2xpY2llcywgUmVmPFBvbGljeURlY2lzaW9uU2Vu
ZGVyPiYmIHNlbmRlcikKIHsKICAgICBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gd2Vic2l0ZURhdGFT
dG9yZSA9IG1fd2Vic2l0ZURhdGFTdG9yZS5jb3B5UmVmKCk7CkBAIC03Nzk1LDYgKzc4MjcsNyBA
QCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0
ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVyZVZp
ZGVvSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS5jYXB0dXJlVmlkZW9JbkdQVVByb2Nlc3NF
bmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3Mg
PSBwcmVmZXJlbmNlcygpLnJlbmRlckNhbnZhc0luR1BVUHJvY2Vzc0VuYWJsZWQoKTsKICAgICBw
YXJhbWV0ZXJzLnNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MgPSBtX3Byb2Nlc3MtPnBy
b2Nlc3NQb29sKCkuY29uZmlndXJhdGlvbigpLnNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nl
c3MoKTsKKyAgICBwYXJhbWV0ZXJzLmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMg
PSBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM7CiAKICNpZiBQTEFURk9STShH
VEspCiAgICAgcGFyYW1ldGVycy50aGVtZU5hbWUgPSBwYWdlQ2xpZW50KCkudGhlbWVOYW1lKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDRmYzYwYjE4NTU5NzRi
YTRlMDU5ZjViZDBjYTYyYTc3Y2NjMGU1NmYuLmIzMmQyYWZjNzI1NWE0OTg5ZDhiNWU2OGQzZDVj
MjJlZDQ3MDkyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0x
NzI5LDYgKzE3MjksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICBPcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQog
CisgICAgdm9pZCBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50SW5OZXR3b3JrUHJvY2Vz
cygpOworICAgIHZvaWQgY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgICAgICAKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICB2b2lkIGdyYW50QWNjZXNzVG9DdXJyZW50UGFzdGVib2FyZERhdGEoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSk7CiAjZW5kaWYKQEAgLTI3OTcsNyArMjgwMCw3IEBAIHByaXZhdGU6
CiAgICAgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiBtX2hhc05hdmlnYXRlZEF3YXlG
cm9tQXBwQm91bmREb21haW4geyBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOjpObyB9
OwogICAgIGJvb2wgbV9pZ25vcmVzQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKICAgICBib29s
IG1fdXNlclNjcmlwdHNOb3RpZmllZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2xpbWl0c05hdmln
YXRpb25Ub0FwcEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2xpbWl0c05hdmln
YXRpb25zVG9BcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9OwogCiAjaWYgRU5BQkxFKFJPVVRJTkdf
QVJCSVRSQVRJT04pCiAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJp
dHJhdG9yUHJveHk+IG1fcm91dGluZ0FyYml0cmF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDViNGNlZmYzZWFiMmJhN2Q1Yjc4ZTJhMWM5
ZTYzMGIyZTdmZDUzOGEuLjY5NTc1YThiZDljOWI0Y2UzMzRjOWUxNjNiOTgwNTlhMjFiYmY0NjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00
NjAsNiArNDYwLDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2VuZGlmCiAgICAgLCBtX292
ZXJyaWRkZW5NZWRpYVR5cGUocGFyYW1ldGVycy5vdmVycmlkZGVuTWVkaWFUeXBlKQogICAgICwg
bV9wcm9jZXNzRGlzcGxheU5hbWUocGFyYW1ldGVycy5wcm9jZXNzRGlzcGxheU5hbWUpCisgICAg
LCBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4ocGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zID8gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllcyA6
IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObykKIHsKICAgICBBU1NFUlQobV9pZGVudGlm
aWVyKTsKIApAQCAtMzY3Miw5ICszNjczLDEyIEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVy
ZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdl
YlByZWZlcmVuY2VzS2V5OjpzZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3Rp
bmdLZXkoKSkpCisgICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKTsKKyAg
ICAKICAgICBpZiAoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpz
ZXJ2aWNlV29ya2Vyc0VuYWJsZWRLZXkoKSkpIHsKLSAgICAgICAgQVNTRVJUKHBhcmVudFByb2Nl
c3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSk7Ci0gICAgICAgIGlmICghcGFyZW50UHJv
Y2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKQorICAgICAgICBBU1NFUlQocGFyZW50
UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpIHx8IG1faXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbik7CisgICAgICAgIGlmICghcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudCgpICYmICFtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiAgICAg
ICAgICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNlcnZp
Y2VXb3JrZXJFbmFibGVkKGZhbHNlKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA4MjI2NWQ0YzFhZDhjZDJjZWQ3YWE3Mjlh
OTU3OWQ2ZjJiMzQ4YjU4Li4wM2Q0MDE3MmJmMjVhYTVlNTUzNGE0Yjk0YTAwZmU5YzNmZTI2NmU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNTIz
LDggKzE1MjMsMTIgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
Ym9vbCBwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgY29uc3Q7Cisg
ICAgdm9pZCBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KCk7CisgICAgdm9pZCBjbGVh
clNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAjZWxzZQogICAgIGJvb2wgcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRp
dGxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIGRpc2FibGVTZXJ2aWNl
V29ya2VyRW50aXRsZW1lbnQoKTsKKyAgICB2b2lkIGNsZWFyU2VydmljZVdvcmtlckVudGl0bGVt
ZW50T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KICNlbmRpZgogCiAgICAgdm9pZCBkaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBQb2xpY3lEZWNpc2lvbiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDFiMTE1OWUxNmY2OTU2ZmEwNjQ3
YzZjYjgwMTM5NjFhOTg4N2JlYzguLmU3NWVlZDhkOTZhY2VmOTcwZTBiOTdhNDAzYjA4MTJiOGUx
ZDU4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgpAQCAtMTIyLDYgKzEyMiw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRp
dGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlCiAgICAgSW5zZXJ0VGV4dFBsYWNlaG9sZGVyKFdlYkNvcmU6OkludFNpemUgc2l6ZSkgLT4g
KE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBwbGFjZWhvbGRlcikgQXN5bmMKICAg
ICBSZW1vdmVUZXh0UGxhY2Vob2xkZXIoc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IHBs
YWNlaG9sZGVyKSAtPiAoKSBBc3luYwogICAgIEZvY3VzVGV4dElucHV0Q29udGV4dEFuZFBsYWNl
Q2FyZXQoc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGNvbnRleHQsIFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50KSAtPiAoYm9vbCBzdWNjZXNzKSBBc3luYworICAgIENsZWFyU2VydmljZVdv
cmtlckVudGl0bGVtZW50T3ZlcnJpZGUoKSAtPiAoKSBBc3luYwogI2VuZGlmCiAKICAgICBTZXRD
b250cm9sbGVkQnlBdXRvbWF0aW9uKGJvb2wgY29udHJvbGxlZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMzRhODQ3M2U0
YWFhYTA0MDE1N2E0YWZkMmI1YjlmYzkwOTBhMjk3Yi4uMWFiM2QyNGZhNGI4MTFiY2FlYWQyOWI1
MzMyNjg5ZGQ0ZmUwODNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQ4OCwxMiArNDg4LDI4IEBAIGJvb2wgV2ViUGFn
ZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAg
cmV0dXJuIHNlbmRSZXN1bHQgJiYgZXZlbnRXYXNIYW5kbGVkOwogfQogCitzdGF0aWMgYm9vbCBk
aXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVzdGluZ092ZXJyaWRlOworCiBib29sIFdl
YlBhZ2U6OnBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSBjb25zdAog
eworICAgIGlmIChkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVzdGluZ092ZXJyaWRl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCiAgICAgc3RhdGljIGJvb2wgaGFzRW50aXRs
ZW1lbnQgPSBXVEY6Omhhc0VudGl0bGVtZW50KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSwgImNvbS5hcHBsZS5kZXZlbG9w
ZXIuV2ViS2l0LlNlcnZpY2VXb3JrZXJzIik7CiAgICAgcmV0dXJuIGhhc0VudGl0bGVtZW50Owog
fQogCit2b2lkIFdlYlBhZ2U6OmRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKQorewor
ICAgIGRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRUZXN0aW5nT3ZlcnJpZGUgPSB0cnVl
OworfQorCit2b2lkIFdlYlBhZ2U6OmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJp
ZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRUZXN0aW5nT3ZlcnJpZGUgPSBmYWxzZTsK
KyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiB2b2lkIFdlYlBhZ2U6OnNlbmRDb21wbGV4
VGV4dElucHV0VG9QbHVnaW4odWludDY0X3QsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAzYjUxOGM1YzIxYzUwYTYzNGRjZGIwMzkzYTI4NDM5YzRkZmVlZjRiLi4xNjgyOTY2
MzQ0MjViMzQzMTdkNDg3OThiZDE0NDczNTE1ZTA1YzkyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDQtMTYg
IEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5h
YmxlIHNlcnZpY2Ugd29ya2VycyBmb3IgYXBwLWJvdW5kIGRvbWFpbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQ1MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNjE0Nzk0NzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkcyAyIHRlc3QgY2FzZXMgdG8gbWFrZSBzdXJlIHNlcnZpY2Ugd29ya2Vy
cyBiZWhhdmUgcHJvcGVybHkgb24KKyAgICAgICAgYXBwIGJvdW5kIGRvbWFpbnMsIGFuZCB0aGF0
IHRoZSBBUElzIGFyZSBub3QgYXZhaWxhYmxlIG9uIG5vbi1hcHAKKyAgICAgICAgYm91bmQgZG9t
YWlucy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBC
cm93c2VyUHJpdmFjeS5tbToKKyAgICAgICAgKC1bU1dJbkFwcEJyb3dzZXJQcml2YWN5TWVzc2Fn
ZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOl0p
OgorCiAyMDIwLTA0LTE3ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIyNjAyNjkuCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3ku
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclBy
aXZhY3kubW0KaW5kZXggMjFhMGU0NjYzZGU3NTBmNTRmMTRjNjZkYzliNWM1M2MwYmJlZTAyMy4u
NjYwN2VmMDk5ZTE4MmUzNTlmYzY2ZTViYWMzYjc5OTc4MjJkYjk2NyAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2Vy
UHJpdmFjeS5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAKICNpbXBv
cnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJTZXJ2aWNlV29ya2VyVENQU2VydmVy
LmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0V0tX
ZWJWaWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCkBAIC03
NDMsNiArNzQ0LDEzNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEdldENvb2tpZUZvclVS
TEZhaWxzKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CiAKK0BpbnRl
cmZhY2UgU1dJbkFwcEJyb3dzZXJQcml2YWN5TWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tT
Y3JpcHRNZXNzYWdlSGFuZGxlcj4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFNXSW5BcHBCcm93
c2VyUHJpdmFjeU1lc3NhZ2VIYW5kbGVyCistICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjoo
V0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2
ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UKK3sKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoQCJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBI
ZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iLCBbbWVzc2FnZSBib2R5XSk7CisgICAgaXNE
b25lID0gdHJ1ZTsKK30KK0BlbmQKKworc3RhdGljIGNvbnN0IGNoYXIqIG1haW5CeXRlcyA9IFIi
U1dSRVNPVVJDRSgKKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvZyhtc2cpCit7CisgICAgd2luZG93
LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuc3cucG9zdE1lc3NhZ2UobXNnKTsKK30KKworbmF2aWdh
dG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgbG9nKCJNZXNzYWdlIGZyb20gd29ya2VyOiAiICsgZXZlbnQuZGF0YSk7Cit9
KTsKKwordHJ5IHsKKworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycp
LnRoZW4oZnVuY3Rpb24ocmVnKSB7CisgICAgd29ya2VyID0gcmVnLmluc3RhbGxpbmcgPyByZWcu
aW5zdGFsbGluZyA6IHJlZy5hY3RpdmU7CisgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJIZWxsbyBm
cm9tIGFuIGFwcC1ib3VuZCBkb21haW4iKTsKK30pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7Cisg
ICAgbG9nKCJSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGg6ICIgKyBlcnJvcik7Cit9KTsKK30gY2F0
Y2goZSkgeworICAgIGxvZygiRXhjZXB0aW9uOiAiICsgZSk7Cit9CisKKzwvc2NyaXB0PgorKVNX
UkVTT1VSQ0UiOworCitzdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VS
Q0UoCisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4geworICAg
IGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiU2VydmljZVdvcmtlciByZWNlaXZlZDogIiArIGV2
ZW50LmRhdGEpOworfSk7CisKKylTV1JFU09VUkNFIjsKKworVEVTVChJbkFwcEJyb3dzZXJQcml2
YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQoreworICAgIGluaXRpYWxp
emVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CisgICAgaXNEb25lID0gZmFsc2U7
CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtb
U1dJbkFwcEJyb3dzZXJQcml2YWN5TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBb
W2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKKyAgICBbY29uZmlndXJhdGlv
biBwcmVmZXJlbmNlc10uX3NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGlu
ZyA9IFlFUzsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRMaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zOllFU107CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgU2VydmljZVdvcmtlclRDUFNlcnZl
ciBzZXJ2ZXIxKHsKKyAgICAgICAgeyAidGV4dC9odG1sIiwgbWFpbkJ5dGVzIH0sCisgICAgICAg
IHsgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRlc30sCisgICAgfSk7CisKKyAg
ICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdp
bnNdOworCisgICAgLy8gU3RhcnQgd2l0aCBhIGNsZWFuIHNsYXRlIGRhdGEgc3RvcmUKKyAgICBb
W1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpb
V0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05T
RGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgaXNEb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7
CisgICAgaXNEb25lID0gZmFsc2U7CisgICAgCisgICAgLy8gRXhwZWN0IHRoZSBzZXJ2aWNlIHdv
cmtlciBsb2FkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KKyAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpzZXJ2ZXIxLnJlcXVlc3RXaXRoTG9jYWxob3N0KCldOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKworICAgIFtbV0tXZWJz
aXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOltO
U1NldCBzZXRXaXRoT2JqZWN0OldLV2Vic2l0ZURhdGFUeXBlU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbnNdIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+
ICp3ZWJzaXRlRGF0YVJlY29yZHMpIHsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBbd2Vic2l0ZURh
dGFSZWNvcmRzIGNvdW50XSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSh3ZWJzaXRlRGF0YVJl
Y29yZHNbMF0uZGlzcGxheU5hbWUsICJsb2NhbGhvc3QiKTsKKyAgICAgICAgaXNEb25lID0gdHJ1
ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAg
ICBpc0RvbmUgPSBmYWxzZTsKKworICAgIC8vIFJlc2V0IHNlcnZpY2Ugd29ya2VyIGVudGl0bGVt
ZW50LgorICAgIFt3ZWJWaWV3IF9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRl
Ol4odm9pZCkgeworICAgICAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5n
cygpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKK30KKworVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkRvZXNOb3RBbGxvd1NlcnZpY2VXb3Jr
ZXJzKQoreworICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7
CisgICAgaXNEb25lID0gZmFsc2U7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gc2NoZW1l
SGFuZGxlciA9IGFkb3B0TlMoW1tJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0
XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVy
LmdldCgpIGZvclVSTFNjaGVtZTpAImluLWFwcC1icm93c2VyIl07CisgICAgLy8gRGlzYWJsZSBl
bnRpdGxlbWVudCB3aGljaCBhbGxvd3Mgc2VydmljZSB3b3JrZXJzLgorICAgIFtjb25maWd1cmF0
aW9uIHByZWZlcmVuY2VzXS5fc2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0
aW5nID0gWUVTOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIC8vIExvYWQgYSBub24tYXBwIGJvdW5kIGRv
bWFpbi4KKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJy
b3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc3R5bGUtc2hlZXRzIl1dOworICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hO
YXZpZ2F0aW9uXTsKKyAgICAKKyAgICAvLyBFeHBlY3QgdGhhdCBzZXJ2aWNlIHdvcmtlcnMgYXJl
IGRpc2FibGVkIGZvciB0aGlzIHdlYlZpZXcuCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dl
YlZpZXcgX3NlcnZpY2VXb3JrZXJzRW5hYmxlZDpeKEJPT0wgZW5hYmxlZCkgeworICAgICAgICBF
WFBFQ1RfRkFMU0UoZW5hYmxlZCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIAorICAgIC8vIFJlc2V0
IHNlcnZpY2Ugd29ya2VyIGVudGl0bGVtZW50LgorICAgIFt3ZWJWaWV3IF9jbGVhclNlcnZpY2VX
b3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlOl4odm9pZCkgeworICAgICAgICBjbGVhblVwSW5BcHBC
cm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAg
IH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICBpc0RvbmUg
PSBmYWxzZTsKK30KKwogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396818</attachid>
            <date>2020-04-17 17:03:59 -0700</date>
            <delta_ts>2020-04-17 17:54:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210451-20200417170358.patch</filename>
            <type>text/plain</type>
            <size>57159</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmVjNzkwNjFmM2E1Nzlh
ZDkzNDU4ZDlkZTgwZGI3NDFmMTkxMjJhYi4uYjM4NmQ1NDhmZDJkNWQ5NDc2YzNiMmE2ZGQ1MjIx
ZDMwMjVkZmEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA0LTE3ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBz
ZXJ2aWNlIHdvcmtlcnMgZm9yIGFwcC1ib3VuZCBkb21haW5zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA0NTEKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzYxNDc5NDc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNXU2VydmVyIG5vdyByZXRyaWV2ZXMgdGhlIGFwcC1ib3VuZCBkb21haW5zIGZyb20g
dGhlIFVJIFByb2Nlc3MgYW5kCisgICAgICAgIG9ubHkgY29udGludWVzIHdpdGggdGhlIGxvYWQg
aWYgdGhlIHByb3BlciBlbnRpdGxlbWVudCBpcyBwcmVzZW50CisgICAgICAgIG9yIHRoZSBsb2Fk
IGlzIGNvbWluZyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4uCisKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
OjphZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OlNXU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp2YWxpZGF0ZVJlZ2lzdHJh
dGlvbkRvbWFpbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2NoZWR1bGVKb2IpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKwogMjAyMC0wNC0x
NyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFr
ZV0gQWRkIFdlYktpdDo6V2ViQ29yZSB0YXJnZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODA2NmY4ZWEwODdkY2M1
NWNjMzUxZGI0ZDIzMjk4NDg3OTdmZTZlYi4uZjQ0YmZlZDJiMWZiNjVkMTFmNzJkOGVmMTc3ZmVj
NWQ0N2ZiMDI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTQgQEAKKzIwMjAtMDQtMTcgIEthdGUg
Q2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIHNl
cnZpY2Ugd29ya2VycyBmb3IgYXBwLWJvdW5kIGRvbWFpbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQ1MQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjE0Nzk0NzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVG
ZXRjaFRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6c2NoZWR1bGVSZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c3dDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmlzU2VydmljZVdvcmtlckFsbG93ZWQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmg6CisgICAgICAgIFJlbW92ZWQgQVNTRVJUUyBhbmQgc2VydmljZSB3b3JrZXIgZW50
aXRsZW1lbnQgY2hlY2tzIHdoaWNoIGFyZSBub3cgZG9uZSBhbG9uZyB3aXRoIGFwcC1ib3VuZAor
ICAgICAgICBkb21haW4gY2hlY2tzIGluIFNXU2VydmVyLmNwcC4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgUmVtb3ZlIHRoZSBjaGVj
ayBmb3IgcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpIGJlZm9yZQor
ICAgICAgICBhZGRpbmcgYSBzZXJ2aWNlV29ya2VyU2Vzc2lvbi4gVGhpcyBkb2Vzbid0IGRvIGFu
eXRoaW5nIGV4Y2VwdCBhZGQgYW4KKyAgICAgICAgZW50cnkgdG8gYSBtYXAsIGFuZCBzaW1wbGlm
aWVzIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSBzZXNzaW9uIGZvcgorICAgICAgICBhcHAtYm91
bmQgaW5zdGFuY2VzIHdoaWNoIHNob3VsZCBoYXZlIHNlcnZpY2Ugd29ya2VycyBidXQgaGF2ZSBu
byBlbnRpdGxlbWVudC4KKworICAgICAgICBQYXNzIHRoZSBlbnRpdGxlbWVudCBhbmQgYSBuZXcg
Y2FsbGJhY2sgdG8gcmVxdWVzdCBhcHAtYm91bmQgZG9tYWlucworICAgICAgICBmcm9tIHRoZSBV
SSBQcm9jZXNzIHRvIHRoZSBTV1NlcnZlci4gVGhpcyB3aWxsIG1ha2Ugc3VyZSB0aGUgc2VydmVy
CisgICAgICAgIGNoZWNrcyBmb3IgdGhlIGVudGl0bGVtZW50IG9yIGxpc3Qgb2YgYXBwLWJvdW5k
IGRvbWFpbnMgYmVmb3JlIGNvbXBsZXRpbmcgYSBsb2FkLgorCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIFJlbW92
ZSB1bm5lY2Vzc2FyeSBBU1NFUlQgZm9yIGVudGl0bGVtZW50LgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0
d29ya1Byb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwYXJl
bnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnRPdmVycmlkZSk6CisgICAgICAgIEluIG9yZGVyIHRvIHRlc3QgdGhpcyB0aG9yb3VnaGx5
LCBUZXN0V2ViS2l0QVBJIG5lZWRlZCBhIHdheSB0bworICAgICAgICB0ZW1wb3JhcmlseSBkaXNh
YmxlIHRoZSBzZXJ2aWNlIHdvcmtlciBlbnRpdGxlbWVudC4gVGhpcyBmdW5jdGlvbgorICAgICAg
ICBvdmVycmlkZXMgdGhlIGNoZWNrIGZvciB0aGUgZW50aXRsZW1lbnQgaWYgdGhlIGJvb2wgaXMg
c2V0LCBkaXNhYmxpbmcKKyAgICAgICAgdGhlIGVudGl0bGVtZW50LgorCisgICAgICAgICogU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIFdlYlBhZ2UgbmVlZHMgdG8ga25vdyBp
ZiBpdCBpcyBhcHAtYm91bmQgd2hlbiBjcmVhdGVkIHNvIGl0IGNhbiB1cGRhdGUKKyAgICAgICAg
dGhlIHNlcnZpY2Ugd29ya2VyIHByZWZlcmVuY2VzIGtleSBhY2NvcmRpbmdseS4KKworICAgICAg
ICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV0tQcmVmZXJlbmNlcyBfc2Vydmlj
ZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nXSk6CisgICAgICAgICgtW1dLUHJl
ZmVyZW5jZXMgX3NldFNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZzpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6
CisgICAgICAgIERpc2FibGUgZW50aXRsZW1lbnQgZm9yIHRlc3RpbmcuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246Omxp
bWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgY29uc3QpOgorICAgICAgICAoQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbjo6c2V0TGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyk6
CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpsaW1pdHNOYXZpZ2F0aW9uVG9BcHBC
b3VuZERvbWFpbnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJh
dGlvbjo6c2V0TGltaXRzTmF2aWdhdGlvblRvQXBwQm91bmREb21haW5zKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zXSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0TGltaXRz
TmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBsaW1pdHNOYXZpZ2F0aW9uVG9BcHBCb3VuZERvbWFpbnNdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRMaW1pdHNOYXZpZ2F0aW9uVG9B
cHBCb3VuZERvbWFpbnM6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICBJbmNvbnNpc3RlbnQgbmFtaW5n
IChOYXZpZ2F0aW9uIHZzIE5hdmlnYXRpb25zKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldHVwUGFnZUNvbmZp
Z3VyYXRpb246XSk6CisgICAgICAgIENoZWNrIGZvciBlbnRpdGxlbWVudCBvciBhcHAtYm91bmQg
d2Vidmlldy4KKworICAgICAgICAoLVtXS1dlYlZpZXcgX3NlcnZpY2VXb3JrZXJzRW5hYmxlZDpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92
ZXJyaWRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oOgorICAgICAgICBUZXN0aW5nIFNQSXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6Z2V0QXBwQm91bmREb21haW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgU2VuZHMgdGhlIGFwcC1ib3Vu
ZCBkb21haW5zIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uc1Rv
QXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uVG9B
cHBCb3VuZERvbWFpbnMpOiBEZWxldGVkLgorICAgICAgICBOYW1pbmcgaW5jb25zaXN0ZW5jeS4K
KworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnRJbk5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpjbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIERpc2FibGUgZW50aXRsZW1lbnQgZm9yIHRl
c3RpbmcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Om1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik6CisgICAgICAgIFNl
dCB0aGlzIHBhcmFtZXRlciBpbiB0aGUgY29uc3RydWN0b3Igc28gaXQgd2lsbCBiZSBhY2N1cmF0
ZSB3aGVuCisgICAgICAgIHVwZGF0aW5nIHByZWZlcmVuY2VzLgorCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjbGVhclNlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudE92ZXJyaWRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBhcmVudFByb2Nlc3NIYXNTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpk
aXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZSk6CisgICAgICAgIERpc2Fi
bGUgZW50aXRsZW1lbnQgZm9yIHRlc3RpbmcuCisKIDIwMjAtMDQtMTcgIFBlciBBcm5lIFZvbGxh
biAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIERlbnkgaW9raXQgb3BlbiBh
Y2Nlc3Mgb2YgdW51c2VkIGNsYXNzIGluIHRoZSBXZWJDb250ZW50IHNhbmRib3gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXgg
MjhkOWZmYWU3M2NjMDRmYmVjN2MzMjYzZmU4Y2E1MmQ5MWExNWU2OS4uOWUzNTJmZjlkM2QyYWEy
MThlOWQ2MjZlN2VmNTkxMmE0ODgyOTg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTE1NSwxNSArMTU1LDIxIEBAIHZv
aWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmJiBkYXRhKQogewogICAgIC8vIFBhZ2VzIHNob3VsZCBub3QgaGF2ZSBiZWVuIGFibGUg
dG8gbWFrZSBhIG5ldyByZWdpc3RyYXRpb24gdG8gdGhpcyBrZXkgd2hpbGUgdGhlIGltcG9ydCB3
YXMgc3RpbGwgdGFraW5nIHBsYWNlLgogICAgIEFTU0VSVCghbV9zY29wZVRvUmVnaXN0cmF0aW9u
TWFwLmNvbnRhaW5zKGRhdGEucmVnaXN0cmF0aW9uLmtleSkpOwotCi0gICAgYXV0byByZWdpc3Ry
YXRpb24gPSBtYWtlVW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPigqdGhpcywgZGF0YS5yZWdp
c3RyYXRpb24ua2V5LCBkYXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSwgZGF0YS5yZWdp
c3RyYXRpb24uc2NvcGVVUkwsIGRhdGEuc2NyaXB0VVJMKTsKLSAgICByZWdpc3RyYXRpb24tPnNl
dExhc3RVcGRhdGVUaW1lKGRhdGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1lKTsKLSAgICBh
dXRvIHJlZ2lzdHJhdGlvblB0ciA9IHJlZ2lzdHJhdGlvbi5nZXQoKTsKLSAgICBhZGRSZWdpc3Ry
YXRpb24oV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKLQotICAgIGF1dG8gd29ya2VyID0gU1dTZXJ2
ZXJXb3JrZXI6OmNyZWF0ZSgqdGhpcywgKnJlZ2lzdHJhdGlvblB0ciwgZGF0YS5zY3JpcHRVUkws
IGRhdGEuc2NyaXB0LCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZShkYXRhLnJl
ZmVycmVyUG9saWN5KSwgZGF0YS53b3JrZXJUeXBlLCBkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBXVEZNb3ZlKGRhdGEuc2NyaXB0UmVzb3VyY2VNYXApKTsKLSAgICByZWdpc3RyYXRpb25Q
dHItPnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0
ZTo6QWN0aXZlLCB3b3JrZXIucHRyKCkpOwotICAgIHdvcmtlci0+c2V0U3RhdGUoU2VydmljZVdv
cmtlclN0YXRlOjpBY3RpdmF0ZWQpOworICAgIAorICAgIHZhbGlkYXRlUmVnaXN0cmF0aW9uRG9t
YWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKGRhdGEuc2NyaXB0VVJMKSwgW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSAoYm9vbCBp
c1ZhbGlkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgaWYgKG1faGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50IHx8IGlzVmFs
aWQpIHsKKyAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gbWFrZVVuaXF1ZTxTV1NlcnZl
clJlZ2lzdHJhdGlvbj4oKnRoaXMsIGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5yZWdpc3Ry
YXRpb24udXBkYXRlVmlhQ2FjaGUsIGRhdGEucmVnaXN0cmF0aW9uLnNjb3BlVVJMLCBkYXRhLnNj
cmlwdFVSTCk7CisgICAgICAgICAgICByZWdpc3RyYXRpb24tPnNldExhc3RVcGRhdGVUaW1lKGRh
dGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1lKTsKKyAgICAgICAgICAgIGF1dG8gcmVnaXN0
cmF0aW9uUHRyID0gcmVnaXN0cmF0aW9uLmdldCgpOworICAgICAgICAgICAgYWRkUmVnaXN0cmF0
aW9uKFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CisKKyAgICAgICAgICAgIGF1dG8gd29ya2VyID0g
U1dTZXJ2ZXJXb3JrZXI6OmNyZWF0ZSgqdGhpcywgKnJlZ2lzdHJhdGlvblB0ciwgZGF0YS5zY3Jp
cHRVUkwsIGRhdGEuc2NyaXB0LCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZShk
YXRhLnJlZmVycmVyUG9saWN5KSwgZGF0YS53b3JrZXJUeXBlLCBkYXRhLnNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEuc2NyaXB0UmVzb3VyY2VNYXApKTsKKyAgICAgICAgICAg
IHJlZ2lzdHJhdGlvblB0ci0+dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvblN0YXRlOjpBY3RpdmUsIHdvcmtlci5wdHIoKSk7CisgICAgICAgICAgICB3b3Jr
ZXItPnNldFN0YXRlKFNlcnZpY2VXb3JrZXJTdGF0ZTo6QWN0aXZhdGVkKTsKKyAgICAgICAgfQor
ICAgIH0pOwogfQogCiB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb24oc3RkOjp1bmlxdWVf
cHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmIHJlZ2lzdHJhdGlvbikKQEAgLTMwNSwxMiArMzEx
LDE0IEBAIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnJlbW92ZVNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29ya2VyCiAgICAgbV9zZXJ2ZXIucmVtb3ZlQ2xpZW50
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbigqdGhpcywgaWRlbnRpZmllcik7CiB9CiAKLVNXU2Vy
dmVyOjpTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiBvcmlnaW5TdG9yZSwgYm9v
bCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbkRh
dGFiYXNlRGlyZWN0b3J5LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNvZnRVcGRhdGVDYWxs
YmFjayYmIHNvZnRVcGRhdGVDYWxsYmFjaywgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFj
ayYmIGNhbGxiYWNrKQorU1dTZXJ2ZXI6OlNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3Jl
PiYmIG9yaWdpblN0b3JlLCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3Ry
aW5nJiYgcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnksIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQsIFNvZnRVcGRhdGVDYWxsYmFj
ayYmIHNvZnRVcGRhdGVDYWxsYmFjaywgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYm
IGNhbGxiYWNrLCBBcHBCb3VuZERvbWFpbnNDYWxsYmFjayYmIGFwcEJvdW5kRG9tYWluc0NhbGxi
YWNrKQogICAgIDogbV9vcmlnaW5TdG9yZShXVEZNb3ZlKG9yaWdpblN0b3JlKSkKICAgICAsIG1f
c2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1faXNQcm9jZXNzVGVybWluYXRpb25EZWxheUVu
YWJsZWQocHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkKQogICAgICwgbV9jcmVhdGVDb250
ZXh0Q29ubmVjdGlvbkNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQogICAgICwgbV9zb2Z0VXBk
YXRlQ2FsbGJhY2soV1RGTW92ZShzb2Z0VXBkYXRlQ2FsbGJhY2spKQorICAgICwgbV9hcHBCb3Vu
ZERvbWFpbnNDYWxsYmFjayhXVEZNb3ZlKGFwcEJvdW5kRG9tYWluc0NhbGxiYWNrKSkKKyAgICAs
IG1faGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KGhhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVu
dCkKIHsKICAgICBSRUxFQVNFX0xPR19JRihyZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeS5p
c0VtcHR5KCkgJiYgIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCksIFNlcnZpY2VXb3JrZXIsICJO
byBwYXRoIHRvIHN0b3JlIHRoZSBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRpb25zIik7CiAgICAg
aWYgKCFtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQpAQCAtMzIyLDMxICszMzAsNTMgQEAgU1dT
ZXJ2ZXI6OlNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmIG9yaWdpblN0b3JlLCBi
b29sIHByb2Nlc3NUZXJtaW5hdGkKICAgICBhbGxTZXJ2ZXJzKCkuYWRkKHRoaXMpOwogfQogCit2
b2lkIFNXU2VydmVyOjp2YWxpZGF0ZVJlZ2lzdHJhdGlvbkRvbWFpbihXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgaWYgKG1faGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50IHx8
IG1faGFzUmVjZWl2ZWRBcHBCb3VuZERvbWFpbnMpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIobV9hcHBCb3VuZERvbWFpbnMuY29udGFpbnMoZG9tYWluKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgbV9hcHBCb3VuZERvbWFpbnNDYWxsYmFjayhbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgZG9tYWluID0gV1RGTW92ZShkb21haW4pLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgYXBwQm91bmRE
b21haW5zKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgbV9oYXNSZWNlaXZlZEFwcEJvdW5kRG9tYWlucyA9IHRydWU7CisgICAg
ICAgIG1fYXBwQm91bmREb21haW5zID0gV1RGTW92ZShhcHBCb3VuZERvbWFpbnMpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihtX2FwcEJvdW5kRG9tYWlucy5jb250YWlucyhkb21haW4pKTsK
KyAgICB9KTsKK30KKwogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI3Nj
aGVkdWxlLWpvYi1hbGdvcml0aG0KIHZvaWQgU1dTZXJ2ZXI6OnNjaGVkdWxlSm9iKFNlcnZpY2VX
b3JrZXJKb2JEYXRhJiYgam9iRGF0YSkKIHsKICAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250
YWlucyhqb2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpIHx8IGpvYkRhdGEuY29ubmVjdGlv
bklkZW50aWZpZXIoKSA9PSBQcm9jZXNzOjppZGVudGlmaWVyKCkpOwogCi0gICAgYXV0byYgam9i
UXVldWUgPSAqbV9qb2JRdWV1ZXMuZW5zdXJlKGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCksIFt0
aGlzLCAmam9iRGF0YV0gewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlckpvYlF1
ZXVlPigqdGhpcywgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSk7Ci0gICAgfSkuaXRlcmF0b3It
PnZhbHVlOwotCi0gICAgaWYgKCFqb2JRdWV1ZS5zaXplKCkpIHsKLSAgICAgICAgam9iUXVldWUu
ZW5xdWV1ZUpvYihXVEZNb3ZlKGpvYkRhdGEpKTsKLSAgICAgICAgam9iUXVldWUucnVuTmV4dEpv
YigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8mIGxhc3RKb2IgPSBqb2JRdWV1
ZS5sYXN0Sm9iKCk7Ci0gICAgaWYgKGpvYkRhdGEuaXNFcXVpdmFsZW50KGxhc3RKb2IpKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBQZXIgdGhlIHNwZWMsIGNoZWNrIGlmIHRoaXMgam9iIGlzIGVxdWl2
YWxlbnQgdG8gdGhlIGxhc3Qgam9iIG9uIHRoZSBxdWV1ZS4KLSAgICAgICAgLy8gSWYgaXQgaXMs
IHN0YWNrIGl0IGFsb25nIHdpdGggdGhhdCBqb2IuIEZvciBub3csIHdlIGp1c3QgbWFrZSBzdXJl
IHRvIG5vdCBjYWxsIHNvZnQtdXBkYXRlIHRvbyBvZnRlbi4KLSAgICAgICAgaWYgKGpvYkRhdGEu
dHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VXBkYXRlICYmIGpvYkRhdGEuY29ubmVjdGlv
bklkZW50aWZpZXIoKSA9PSBQcm9jZXNzOjppZGVudGlmaWVyKCkpCisgICAgdmFsaWRhdGVSZWdp
c3RyYXRpb25Eb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4oam9iRGF0YS5zY3JpcHRV
UkwpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgam9iRGF0YSA9IFdURk1v
dmUoam9iRGF0YSldIChib29sIGlzVmFsaWQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtU
aGlzKQogICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGpvYlF1ZXVlLmVucXVldWVK
b2IoV1RGTW92ZShqb2JEYXRhKSk7Ci0gICAgaWYgKGpvYlF1ZXVlLnNpemUoKSA9PSAxKQotICAg
ICAgICBqb2JRdWV1ZS5ydW5OZXh0Sm9iKCk7CisgICAgICAgIGlmIChtX2hhc1NlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudCB8fCBpc1ZhbGlkKSB7CisgICAgICAgICAgICBhdXRvJiBqb2JRdWV1ZSA9
ICptX2pvYlF1ZXVlcy5lbnN1cmUoam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSwgW3RoaXMsICZq
b2JEYXRhXSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1dTZXJ2ZXJKb2JR
dWV1ZT4oKnRoaXMsIGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCkpOworICAgICAgICAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOworCisgICAgICAgICAgICBpZiAoIWpvYlF1ZXVlLnNpemUoKSkgewor
ICAgICAgICAgICAgICAgIGpvYlF1ZXVlLmVucXVldWVKb2IoV1RGTW92ZShqb2JEYXRhKSk7Cisg
ICAgICAgICAgICAgICAgam9iUXVldWUucnVuTmV4dEpvYigpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8mIGxhc3RKb2IgPSBqb2JRdWV1
ZS5sYXN0Sm9iKCk7CisgICAgICAgICAgICBpZiAoam9iRGF0YS5pc0VxdWl2YWxlbnQobGFzdEpv
YikpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogUGVyIHRoZSBzcGVjLCBjaGVjayBpZiB0
aGlzIGpvYiBpcyBlcXVpdmFsZW50IHRvIHRoZSBsYXN0IGpvYiBvbiB0aGUgcXVldWUuCisgICAg
ICAgICAgICAgICAgLy8gSWYgaXQgaXMsIHN0YWNrIGl0IGFsb25nIHdpdGggdGhhdCBqb2IuIEZv
ciBub3csIHdlIGp1c3QgbWFrZSBzdXJlIHRvIG5vdCBjYWxsIHNvZnQtdXBkYXRlIHRvbyBvZnRl
bi4KKyAgICAgICAgICAgICAgICBpZiAoam9iRGF0YS50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JU
eXBlOjpVcGRhdGUgJiYgam9iRGF0YS5jb25uZWN0aW9uSWRlbnRpZmllcigpID09IFByb2Nlc3M6
OmlkZW50aWZpZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgam9iUXVldWUuZW5xdWV1ZUpvYihXVEZNb3ZlKGpvYkRhdGEpKTsKKyAg
ICAgICAgICAgIGlmIChqb2JRdWV1ZS5zaXplKCkgPT0gMSkKKyAgICAgICAgICAgICAgICBqb2JR
dWV1ZS5ydW5OZXh0Sm9iKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmVqZWN0Sm9i
KGpvYkRhdGEsIHsgVHlwZUVycm9yLCAiSm9iIHJlamVjdGVkIGZvciBub24gYXBwLWJvdW5kIGRv
bWFpbiIgfSk7CisgICAgfSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnNjaGVkdWxlVW5yZWdpc3Rl
ckpvYihTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIgam9iRGF0YUlkZW50aWZpZXIsIFNX
U2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIERvY3VtZW50T3JXb3JrZXJJZGVudGlm
aWVyIGNvbnRleHRJZGVudGlmaWVyLCBVUkwmJiBjbGllbnRDcmVhdGlvblVSTCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCAyODc5
MjgzZWFlMGFmODNlOTU2Yzk5OGUzNWYwNDk0M2VlNzM1YzYzLi4zYTk1OWRhODk1ZjA2OWNjZGUx
OWU5YTY2M2NiZThiODcyZjVkY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0xMjYsNyArMTI2LDggQEAgcHVibGljOgogCiAg
ICAgdXNpbmcgU29mdFVwZGF0ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYmIGpvYkRhdGEsIGJvb2wgc2hvdWxkUmVmcmVzaENhY2hlLCBSZXNvdXJjZVJlcXVl
c3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQmKT4mJik+OwogICAgIHVzaW5nIENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2sgPSBG
dW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKT47Ci0gICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXIoVW5pcXVl
UmVmPFNXT3JpZ2luU3RvcmU+JiYsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVk
LCBTdHJpbmcmJiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFMOjpTZXNzaW9uSUQs
IFNvZnRVcGRhdGVDYWxsYmFjayYmLCBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrJiYp
OworICAgIHVzaW5nIEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYp
PiYmKT47CisgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3Rv
cmU+JiYsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiByZWdp
c3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFMOjpTZXNzaW9uSUQsIGJvb2wgaGFzU2Vydmlj
ZVdvcmtlckVudGl0bGVtZW50LCBTb2Z0VXBkYXRlQ2FsbGJhY2smJiwgQ3JlYXRlQ29udGV4dENv
bm5lY3Rpb25DYWxsYmFjayYmLCBBcHBCb3VuZERvbWFpbnNDYWxsYmFjayYmKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIH5TV1NlcnZlcigpOwogCkBAIC0yMTUsNiArMjE2LDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0VGVybWluYXRpb25EZWxheSA9IDEw
X3M7CiAKIHByaXZhdGU6CisgICAgdm9pZCB2YWxpZGF0ZVJlZ2lzdHJhdGlvbkRvbWFpbihXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CisKICAgICB2b2lkIHNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNo
UmVzdWx0Jik7CiAKICAgICB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKENvbm5l
Y3Rpb24qLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CkBAIC0yNjksNiAr
MjcyLDExIEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gbV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnM7CiAgICAgVmVjdG9yPENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4+IG1faW1wb3J0Q29tcGxldGVkQ2FsbGJhY2tzOwogICAgIFNvZnRVcGRhdGVD
YWxsYmFjayBtX3NvZnRVcGRhdGVDYWxsYmFjazsKKyAgICBBcHBCb3VuZERvbWFpbnNDYWxsYmFj
ayBtX2FwcEJvdW5kRG9tYWluc0NhbGxiYWNrOworICAgIAorICAgIEhhc2hTZXQ8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IG1fYXBwQm91bmREb21haW5zOworICAgIGJvb2wgbV9oYXNTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNSZWNlaXZlZEFw
cEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDJiY2EyMjJhMjE0MmY5NjRmOWU4MWExMDNl
ZjYwYTM1YzQ1NGI5NTAuLjU0OGVhNGE1MTFjOGM2MDcyYjVlNjBlNjgzNjY5MmJhNWFiZWRhYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xMjEsOCArMTIxLDcgQEAgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5l
dHdvcmtQcm9jZXNzJiBuZXQKICAgICBtX2Nvbm5lY3Rpb24tPm9wZW4oKTsKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAobmV0d29ya1Byb2Nlc3MucGFyZW50UHJvY2Vzc0hh
c1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKQotICAgICAgICBlc3RhYmxpc2hTV1NlcnZlckNv
bm5lY3Rpb24oKTsKKyAgICBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKICNlbmRpZgog
fQogCkBAIC00MzEsMTUgKzQzMCw4IEBAIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlPj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlCiB9CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1ib29sIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjppc1NlcnZpY2VXb3JrZXJBbGxvd2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9uZXR3
b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpOwot
fQotCiBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUZldGNoVGFzayhOZXR3b3JrUmVzb3VyY2VMb2FkZXIm
IGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlmICghaXNT
ZXJ2aWNlV29ya2VyQWxsb3dlZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1
cm4gc3dDb25uZWN0aW9uKCkuY3JlYXRlRmV0Y2hUYXNrKGxvYWRlciwgcmVxdWVzdCk7CiB9CiAj
ZW5kaWYKQEAgLTQ0NywxOCArNDM5LDE1IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlRmV0CiB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogewogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLSAgICBib29sIGlzU2VydmljZVdvcmtlckFsbG93ZWQgPSB0aGlz
LT5pc1NlcnZpY2VXb3JrZXJBbGxvd2VkKCk7Ci0gICAgaWYgKGlzU2VydmljZVdvcmtlckFsbG93
ZWQpIHsKLSAgICAgICAgYXV0byYgc2VydmVyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJG
b3JTZXNzaW9uKG1fc2Vzc2lvbklEKTsKLSAgICAgICAgaWYgKCFzZXJ2ZXIuaXNJbXBvcnRDb21w
bGV0ZWQoKSkgewotICAgICAgICAgICAgc2VydmVyLndoZW5JbXBvcnRJc0NvbXBsZXRlZChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBsb2FkUGFyYW1ldGVycyA9IFdURk1v
dmUobG9hZFBhcmFtZXRlcnMpXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGlmICghbV9u
ZXR3b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc0Nvbm5lY3Rpb24od2ViUHJvY2Vzc0lkZW50aWZpZXIo
KSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
bV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uKG1fc2Vzc2lvbklEKS5pc0ltcG9y
dENvbXBsZXRlZCgpKTsKLSAgICAgICAgICAgICAgICBzY2hlZHVsZVJlc291cmNlTG9hZChXVEZN
b3ZlKGxvYWRQYXJhbWV0ZXJzKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQorICAgIGF1dG8mIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2Vy
dmVyRm9yU2Vzc2lvbihtX3Nlc3Npb25JRCk7CisgICAgaWYgKCFzZXJ2ZXIuaXNJbXBvcnRDb21w
bGV0ZWQoKSkgeworICAgICAgICBzZXJ2ZXIud2hlbkltcG9ydElzQ29tcGxldGVkKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGxvYWRQYXJhbWV0ZXJzID0gV1RGTW92ZShs
b2FkUGFyYW1ldGVycyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIW1fbmV0d29ya1By
b2Nlc3MtPndlYlByb2Nlc3NDb25uZWN0aW9uKHdlYlByb2Nlc3NJZGVudGlmaWVyKCkpKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNz
LT5zd1NlcnZlckZvclNlc3Npb24obV9zZXNzaW9uSUQpLmlzSW1wb3J0Q29tcGxldGVkKCkpOwor
ICAgICAgICAgICAgc2NoZWR1bGVSZXNvdXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1ldGVycykp
OworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogICAgIGF1dG8g
aWRlbnRpZmllciA9IGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXI7CkBAIC00NjksMTIgKzQ1OCwx
MSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlZHVsZVJlc291cmNl
TG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYQogICAgIGF1dG8mIGxvYWRlciA9IG1fbmV0d29y
a1Jlc291cmNlTG9hZGVycy5hZGQoaWRlbnRpZmllciwgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpj
cmVhdGUoV1RGTW92ZShsb2FkUGFyYW1ldGVycyksICp0aGlzKSkuaXRlcmF0b3ItPnZhbHVlOwog
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChpc1NlcnZpY2VXb3JrZXJBbGxv
d2VkKSB7Ci0gICAgICAgIGxvYWRlci0+c3RhcnRXaXRoU2VydmljZVdvcmtlcigpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotI2VuZGlmCisgICAgbG9hZGVyLT5zdGFydFdpdGhTZXJ2aWNlV29y
a2VyKCk7CisgICAgcmV0dXJuOworI2Vsc2UKICAgICBsb2FkZXItPnN0YXJ0KCk7CisjZW5kaWYK
IH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGVyZm9ybVN5bmNocm9u
b3VzTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzLCBN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91
c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQpAQCAtMTA1Myw3ICsxMDQxLDYgQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5v
TG9uZ2VyTmVlZGVkKCkKIAogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c3dDb25uZWN0aW9uKCkKIHsKLSAgICBBU1NFUlQoaXNTZXJ2aWNlV29y
a2VyQWxsb3dlZCgpKTsKICAgICBpZiAoIW1fc3dDb25uZWN0aW9uKQogICAgICAgICBlc3RhYmxp
c2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKICAgICByZXR1cm4gKm1fc3dDb25uZWN0aW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGY1YzAzY2M4M2Q3MWY4ZjdiOTdkYjE4ZWQ4ZmI0NDVk
ODY3Y2M0YzEuLjdiNWUwY2UzZWViMzViOWJkMmJjM2MyYmNmZWFkNDY2MWY3OTFjZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTIzNiw3ICsyMzYsNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xvc2VTV0NvbnRl
eHRDb25uZWN0aW9uKCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7Ci0gICAg
Ym9vbCBpc1NlcnZpY2VXb3JrZXJBbGxvd2VkKCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIHZvaWQg
Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRl
bnRpZmllciYgcG9ydDEsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9y
dDIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAppbmRleCAxMGQ1Y2EwNjFiN2NmZDhlYzE2OTU5NjRjZjk2ZGU0ZGViMjZhODkxLi5mNjJlOTg2
MTBkZDJlNzRlZmNmMGM4OTk0NzVlNmQwOTViOGY5MTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzQ1LDEwICszNDUsOCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmJgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgaWYgKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSkg
ewotICAgICAgICBib29sIHNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJs
ZWQgPSB0cnVlOwotICAgICAgICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVs
YXlFbmFibGVkLCBXVEZNb3ZlKHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSksIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7Ci0gICAgfQorICAgIGJvb2wgc2VydmljZVdvcmtlclByb2Nlc3NUZXJt
aW5hdGlvbkRlbGF5RW5hYmxlZCA9IHRydWU7CisgICAgYWRkU2VydmljZVdvcmtlclNlc3Npb24o
UEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgc2VydmljZVdvcmtlclByb2Nlc3NU
ZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlmCiAKICAgICBtX3N0b3JhZ2VNYW5h
Z2VyU2V0LT5hZGQoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0
ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFy
YW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwpAQCAtNDM4LDgg
KzQzNiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzCiAjZW5kaWYKIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLSAgICBpZiAocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRp
dGxlbWVudCgpKQotICAgICAgICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihzZXNzaW9uSUQsIHBh
cmFtZXRlcnMuc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RG
TW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBwYXJh
bWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
OworICAgIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKHNlc3Npb25JRCwgcGFyYW1ldGVycy5zZXJ2
aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBXVEZNb3ZlKHBhcmFtZXRl
cnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSksIHBhcmFtZXRlcnMuc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYKIAog
ICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmFkZChzZXNzaW9uSUQsIHBhcmFtZXRlcnMubG9jYWxT
dG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7CkBAIC0yNDU1LDExICsyNDUyLDEzIEBAIFNXU2VydmVyJiBOZXR3b3JrUHJvY2Vz
czo6c3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAgICAg
Ly8gSWYgdGhlcmUncyBub3QsIHRoZW4gd2hlcmUgZGlkIHRoaXMgUEFMOjpTZXNzaW9uSUQgY29t
ZSBmcm9tPwogICAgICAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgfHwgIXBhdGgu
aXNFbXB0eSgpKTsKIAotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlcj4obWFrZVVu
aXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBpbmZvLnByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
RW5hYmxlZCwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklELCBbdGhpcywgc2Vzc2lvbklEXShhdXRv
JiYgam9iRGF0YSwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUsIGF1dG8mJiByZXF1ZXN0LCBhdXRv
JiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBpbmZvLnByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklELCBwYXJl
bnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCksIFt0aGlzLCBzZXNzaW9uSURd
KGF1dG8mJiBqb2JEYXRhLCBib29sIHNob3VsZFJlZnJlc2hDYWNoZSwgYXV0byYmIHJlcXVlc3Qs
IGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6c3RhcnQobmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSwg
V1RGTW92ZShqb2JEYXRhKSwgc2hvdWxkUmVmcmVzaENhY2hlLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0sIFt0aGlzLCBzZXNzaW9uSURd
KGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluLCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIHsKICAg
ICAgICAgICAgIEFTU0VSVCghcmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKTsKICAgICAgICAg
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVEb21haW4sIHNlc3Npb25JRCB9LCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CisgICAgICAgIH0sIFt0aGlzLCBzZXNzaW9uSURdKGF1
dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpHZXRBcHBCb3VuZERvbWFpbnMgeyBzZXNzaW9uSUQgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIDApOwogICAgICAgICB9KTsKICAgICB9KTsKICAgICByZXR1cm4gKnJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CkBAIC0yNDc1LDcgKzI0NzQsNiBAQCBXZWJTV09yaWdpblN0b3JlKiBOZXR3
b3JrUHJvY2Vzczo6ZXhpc3RpbmdTV09yaWdpblN0b3JlRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25J
RAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJT
V1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7Ci0gICAgQVNTRVJUKHBhcmVudFByb2Nl
c3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSk7CiAgICAgYXV0byogc3RvcmUgPSBleGlz
dGluZ1NXT3JpZ2luU3RvcmVGb3JTZXNzaW9uKGNvbm5lY3Rpb24uc2Vzc2lvbklEKCkpOwogICAg
IEFTU0VSVChzdG9yZSk7CiAgICAgaWYgKHN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDU5ZjBmY2VmZDQ2YzQyMzBkYWRlZDdkNzFl
MjNlYmNhZDIxZDhkMmUuLjZkODZjYTk0NDA5YmIwZjlkOTMzOGRmYTU2ZDZkMjdiY2VlMThmMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAg
LTMwNiw2ICszMDYsOCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGJvb2wgcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpIGNvbnN0Owor
ICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpOworICAgIHZvaWQgY2xl
YXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogI2Vsc2UKICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmlu
ZGV4IGIyM2VmMWQwMWEwNTgyMzg5Zjc2OTM0MjliZTAyOTc4ZWMwNmUyMTkuLjUyMTM0MjU2ODdh
NDVmZWNhOTUzNWRlMWE5ZDI0ZWIxOGU4OWNjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTcyLDQg
KzE3Miw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICAKICAgICBIYXNBcHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAo
Ym9vbCBoYXNBcHBCb3VuZFNlc3Npb24pIEFzeW5jCiAgICAgU2V0SW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlKSAtPiAoKSBBc3lu
YworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBEaXNhYmxlU2VydmljZVdvcmtlckVu
dGl0bGVtZW50KCkKKyAgICBDbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKCkg
LT4gKCkgQXN5bmMKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQppbmRleCBlMTkyZjUwM2Y0NDVmZTUxMDA4
MTAyZTYzNTk2MGVhMWUxN2NlZjUyLi4xMGFiMzI0NGQxYzkxMWIyNzQ2OTg5YjdhMmRkZmQ0ZTVl
YTc3YTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3
b3JrUHJvY2Vzc0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9O
ZXR3b3JrUHJvY2Vzc0lPUy5tbQpAQCAtNzQsMTIgKzc0LDI4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtVGVybWluYXRlKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitzdGF0
aWMgYm9vbCBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVzdGluZ092ZXJyaWRlOwor
CiBib29sIE5ldHdvcmtQcm9jZXNzOjpwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0
bGVtZW50KCkgY29uc3QKIHsKKyAgICBpZiAoZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVu
dFRlc3RpbmdPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgc3RhdGljIGJv
b2wgaGFzRW50aXRsZW1lbnQgPSBXVEY6Omhhc0VudGl0bGVtZW50KHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSwgImNvbS5hcHBsZS5kZXZlbG9wZXIuV2ViS2l0LlNl
cnZpY2VXb3JrZXJzIik7CiAgICAgcmV0dXJuIGhhc0VudGl0bGVtZW50OwogfQogCit2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkKK3sKKyAgICBk
aXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVzdGluZ092ZXJyaWRlID0gdHJ1ZTsKK30K
Kwordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVy
cmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudFRlc3RpbmdPdmVycmlkZSA9IGZhbHNl
OworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggZThjNzBlYjlkMmE3NDEy
MzA5NWZjNTA5OTBlMzA0MWU3ZWQ5YWQ1MC4uZGMxMTUyZjhlYjE5ZWE1MDYwODZkOTc4YzcwMTdj
ODcyMjk4ZDQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE0Niw2ICsxNDYsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5j
b2RlciA8PCBzaG91bGRDYXB0dXJlRGlzcGxheUluVUlQcm9jZXNzOwogICAgIGVuY29kZXIgPDwg
c2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgbmVlZHNJbkFw
cEJyb3dzZXJQcml2YWN5UXVpcmtzOworICAgIGVuY29kZXIgPDwgbGltaXRzTmF2aWdhdGlvbnNU
b0FwcEJvdW5kRG9tYWluczsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBlbmNvZGVyIDw8IHRo
ZW1lTmFtZTsKQEAgLTQ3MCw2ICs0NzEsOSBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5uZWVkc0luQXBwQnJvd3NlclByaXZhY3lR
dWlya3MpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAorICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5z
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKICNpZiBQTEFURk9STShHVEsp
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnRoZW1lTmFtZSkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggODAwZTFhNzUzYTYzMTBlY2M1MTg1ZTliYWRlZWZl
YzNkMGI1NGNmYS4uMzJiNmUyOTc3ZmVkM2EwMGM0MGNjMTA5MzJmN2M4YjA5ZDVmNmU0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApA
QCAtMjE2LDYgKzIxNiw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAg
ICBib29sIHNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJv
b2wgc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIG5l
ZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IGZhbHNlIH07CisgICAgYm9vbCBsaW1pdHNO
YXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKIAogI2lmIFBMQVRGT1JNKEdU
SykKICAgICBTdHJpbmcgdGhlbWVOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzLnlhbWwKaW5kZXggYjZlYjExNGFiOTIxNWNiMTBkOTQ1OTZjODZlYmFkNzFlY2VlNzdmZi4u
NzJhMmEwZmY1ZDZlYzlhN2EyMmEwMmE3ZDMzNjJkMGMwYzBmMDhjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC0xMjczLDYgKzEyNzMsMTEgQEAgTmVlZHNJ
bkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOgogICAgIHdlYmNvcmVCaW5kaW5nOiBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzCiAgICAgY2F0ZWdvcnk6IGRlYnVnCiAKK1NlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudERpc2FibGVkRm9yVGVzdGluZzoKKyAgICB0eXBlOiBib29sCisgICAgZGVmYXVsdFZhbHVl
OiBmYWxzZQorICAgIHdlYmNvcmVCaW5kaW5nOiBub25lCisKICMgRm9yIGV4cGVyaW1lbnRhbCBm
ZWF0dXJlczoKICMgVGhlIHR5cGUgc2hvdWxkIGJlIGJvb2xlYW4uCiAjIFlvdSBtdXN0IHByb3Zp
ZGUgYSBodW1hblJlYWRhYmxlTmFtZSBhbmQgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uIGZvciBh
bGwgZXhwZXJpbWVudGFsIGZlYXR1cmVzLiBUaGV5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAppbmRleCA5NjAxNTYwMzAwODZk
N2YxNWMyOGVkNjgwNmNmMGFiMjNjNGMwNzEwLi45MjVlMjU3YjNiOTQ1ZWJkOTA3MmRiMTc3NjU4
MzdiODVhMWNhMjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElQYWdlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgUmVmPFBhZ2VDb25maWd1
cmF0aW9uPiBQYWdlQ29uZmlndXJhdGlvbjo6Y29weSgpIGNvbnN0CiAgICAgY29weS0+bV9pZ25v
cmVzQXBwQm91bmREb21haW5zID0gdGhpcy0+bV9pZ25vcmVzQXBwQm91bmREb21haW5zOwogICAg
IGNvcHktPm1fbG9hZHNTdWJyZXNvdXJjZXMgPSB0aGlzLT5tX2xvYWRzU3VicmVzb3VyY2VzOwog
ICAgIGNvcHktPm1fbG9hZHNGcm9tTmV0d29yayA9IHRoaXMtPm1fbG9hZHNGcm9tTmV0d29yazsK
LSAgICBjb3B5LT5tX2xpbWl0c05hdmlnYXRpb25Ub0FwcEJvdW5kRG9tYWlucyA9IHRoaXMtPm1f
bGltaXRzTmF2aWdhdGlvblRvQXBwQm91bmREb21haW5zOworICAgIGNvcHktPm1fbGltaXRzTmF2
aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IHRoaXMtPm1fbGltaXRzTmF2aWdhdGlvbnNUb0Fw
cEJvdW5kRG9tYWluczsKIAogICAgIHJldHVybiBjb3B5OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAppbmRleCBkZGIzYjE0MDI0
OWVmNDc3Zjg3Y2NlNzY4ZmRhZGQ2ODBhY2FiOGNhLi5jNzcwM2IyMjk4NjkwN2U0Yzg2NzM1ZDdm
MjRlY2ZlMmVjNzgyMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJUGFnZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJUGFnZUNvbmZpZ3VyYXRpb24uaApAQCAtMTU4LDggKzE1OCw4IEBAIHB1YmxpYzoKICAgICBi
b29sIGxvYWRzRnJvbU5ldHdvcmsoKSBjb25zdCB7IHJldHVybiBtX2xvYWRzRnJvbU5ldHdvcms7
IH0KICAgICB2b2lkIHNldExvYWRzRnJvbU5ldHdvcmsoYm9vbCBsb2FkcykgeyBtX2xvYWRzRnJv
bU5ldHdvcmsgPSBsb2FkczsgfQogCi0gICAgYm9vbCBsaW1pdHNOYXZpZ2F0aW9uVG9BcHBCb3Vu
ZERvbWFpbnMoKSBjb25zdCB7IHJldHVybiBtX2xpbWl0c05hdmlnYXRpb25Ub0FwcEJvdW5kRG9t
YWluczsgfQotICAgIHZvaWQgc2V0TGltaXRzTmF2aWdhdGlvblRvQXBwQm91bmREb21haW5zKGJv
b2wgbGltaXRzKSB7IG1fbGltaXRzTmF2aWdhdGlvblRvQXBwQm91bmREb21haW5zID0gbGltaXRz
OyB9CisgICAgYm9vbCBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKCkgY29uc3Qg
eyByZXR1cm4gbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOyB9CisgICAgdm9p
ZCBzZXRMaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKGJvb2wgbGltaXRzKSB7IG1f
bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IGxpbWl0czsgfQogCiBwcml2YXRl
OgogCkBAIC0yMDQsNyArMjA0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faWdub3Jlc0FwcEJv
dW5kRG9tYWlucyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2xvYWRzU3VicmVzb3VyY2VzIHsgdHJ1
ZSB9OwogICAgIGJvb2wgbV9sb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9s
aW1pdHNOYXZpZ2F0aW9uVG9BcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9s
aW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcmVmZXJlbmNlcy5tbQppbmRleCA5YWFiYTBmODcwYWU5NDk4ODFiZTA3YWY5NTAzMGZlZWUx
NDlkMjU5Li5kMGFmM2JmOGM2ZWJiODBmZmRjZDM1NzdmZmM5M2FiYzIzYmI1ZGZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQpA
QCAtOTIzLDYgKzkyMywxNiBAQCAtIChCT09MKV9pc0lUUERhdGFiYXNlRW5hYmxlZAogICAgIHJl
dHVybiBfcHJlZmVyZW5jZXMtPmlzSVRQRGF0YWJhc2VFbmFibGVkKCk7CiB9CiAKKy0gKEJPT0wp
X3NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZworeworICAgIHJldHVy
biBfcHJlZmVyZW5jZXMtPnNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGlu
ZygpOworfQorCistICh2b2lkKV9zZXRTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZv
clRlc3Rpbmc6KEJPT0wpZGlzYWJsZQoreworICAgIF9wcmVmZXJlbmNlcy0+c2V0U2VydmljZVdv
cmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nKGRpc2FibGUpOworfQorCiAjaWYgUExB
VEZPUk0oTUFDKQogLSAodm9pZClfc2V0SmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzOihCT09MKWVu
YWJsZWQKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggN2NkMDUxODdmOTQwYmI2N2Y5YWIwYzIxZjg5
YTc5OTAwN2Q0YTVjNC4uNjc1Njc4OTNmNDRiNmJmOGUwOTY5MGY1NTE2MTYyZDQzM2I5MTUwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5j
ZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJl
ZmVyZW5jZXNQcml2YXRlLmgKQEAgLTE2NSw2ICsxNjUsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBfV0tFZGl0YWJsZUxpbmtCZWhhdmlvcikgewogQHByb3BlcnR5IChub25hdG9taWMs
IHNldHRlcj1fc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQ6KSBCT09MIF9hY2NlbGVy
YXRlZENvbXBvc2l0aW5nRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBp
b3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0UmVxdWVz
dEFuaW1hdGlvbkZyYW1lRW5hYmxlZDopIEJPT0wgX3JlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfaXNJVFBEYXRhYmFzZUVuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFNlcnZpY2VXb3JrZXJFbnRpdGxlbWVu
dERpc2FibGVkRm9yVGVzdGluZzopIEJPT0wgX3NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2Fi
bGVkRm9yVGVzdGluZyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBzZXR0ZXI9X3NldFdlYkdMRW5hYmxlZDopIEJPT0wgX3dlYkdMRW5hYmxlZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDg4ODU5NWQ4NDM5Y2QxMDRjMGVjZWY2ZWYxOGI1YmNl
YmFkY2I5NzkuLjAwMzQxNThiYTIxZmYzYTgxMDdmY2U3ZDA3ZjhiMDYxZDliNDI2NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTIx
LDYgKzEyMSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgpA
QCAtNTIzLDggKzUyNCw5IEBAIC0gKHZvaWQpX3NldHVwUGFnZUNvbmZpZ3VyYXRpb246KFJlZjxB
UEk6OlBhZ2VDb25maWd1cmF0aW9uPiYpcGFnZUNvbmZpZ3VyYXRpb24KICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmICgh
V1RGOjpwcm9jZXNzSGFzRW50aXRsZW1lbnQoImNvbS5hcHBsZS5kZXZlbG9wZXIuV2ViS2l0LlNl
cnZpY2VXb3JrZXJzIikpCisgICAgaWYgKCghV1RGOjpwcm9jZXNzSGFzRW50aXRsZW1lbnQoImNv
bS5hcHBsZS5kZXZlbG9wZXIuV2ViS2l0LlNlcnZpY2VXb3JrZXJzIikgfHwgISFbX2NvbmZpZ3Vy
YXRpb24gcHJlZmVyZW5jZXNdLl9zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRl
c3RpbmcpICYmICFbX2NvbmZpZ3VyYXRpb24gbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9t
YWluc10pCiAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRTZXJ2
aWNlV29ya2Vyc0VuYWJsZWQoZmFsc2UpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJl
bmNlcygpLT5zZXRTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3RpbmcoISFb
X2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLl9zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNh
YmxlZEZvclRlc3RpbmcpOwogI2VuZGlmCiAKICAgICBpZiAoIWxpbmtlZE9uT3JBZnRlcihXZWJL
aXQ6OlNES1ZlcnNpb246OkZpcnN0V2hlcmVTaXRlU3BlY2lmaWNRdWlya3NBcmVFbmFibGVkQnlE
ZWZhdWx0KSkKQEAgLTI2NTAsNiArMjY1MiwxOSBAQCAtICh2b2lkKV9pc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiAgICAgfSk7CiB9
CiAKKy0gKHZvaWQpX3NlcnZpY2VXb3JrZXJzRW5hYmxlZDoodm9pZCheKShCT09MKSljb21wbGV0
aW9uSGFuZGxlcgoreworICAgIGF1dG8gZW5hYmxlZCA9IFtfY29uZmlndXJhdGlvbiBwcmVmZXJl
bmNlc10tPl9wcmVmZXJlbmNlcy5nZXQoKS0+c2VydmljZVdvcmtlcnNFbmFibGVkKCkgfHwgV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXJ2aWNlV29y
a2VyRW5hYmxlZCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGVuYWJsZWQpOworfQorCistICh2
b2lkKV9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlOih2b2lkICheKSh2b2lk
KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9wYWdlLT5jbGVhclNlcnZpY2VXb3JrZXJFbnRp
dGxlbWVudE92ZXJyaWRlKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30K
KwogLSAoaWQgPF9XS0lucHV0RGVsZWdhdGU+KV9pbnB1dERlbGVnYXRlCiB7CiAgICAgcmV0dXJu
IF9pbnB1dERlbGVnYXRlLmdldEF1dG9yZWxlYXNlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpp
bmRleCBlMzg0ZGRlYjc0Y2JiNGQ5NTkwNTQ0YjFhZjI1MjVhZmIwYjU1NGNhLi4wNzg3MWJlMjVh
MjI1YjJiZjI4NTIyYmMyZjU5ZWM0M2NlNTA0Yzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpA
QCAtNjg1LDE0ICs2ODUsMTQgQEAgLSAodm9pZClfc2V0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRh
VVJMczooQk9PTClhbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzCiAgICAgX2FsbG93VG9wTmF2
aWdhdGlvblRvRGF0YVVSTHMgPSBhbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzOwogfQogCi0t
IChCT09MKWxpbWl0c05hdmlnYXRpb25Ub0FwcEJvdW5kRG9tYWlucworLSAoQk9PTClsaW1pdHNO
YXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zCiB7Ci0gICAgcmV0dXJuIF9wYWdlQ29uZmlndXJh
dGlvbi0+bGltaXRzTmF2aWdhdGlvblRvQXBwQm91bmREb21haW5zKCk7CisgICAgcmV0dXJuIF9w
YWdlQ29uZmlndXJhdGlvbi0+bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucygpOwog
fQogCi0tICh2b2lkKXNldExpbWl0c05hdmlnYXRpb25Ub0FwcEJvdW5kRG9tYWluczooQk9PTCls
aW1pdHNUb0FwcEJvdW5kRG9tYWlucworLSAodm9pZClzZXRMaW1pdHNOYXZpZ2F0aW9uc1RvQXBw
Qm91bmREb21haW5zOihCT09MKWxpbWl0c1RvQXBwQm91bmREb21haW5zCiB7Ci0gICAgX3BhZ2VD
b25maWd1cmF0aW9uLT5zZXRMaW1pdHNOYXZpZ2F0aW9uVG9BcHBCb3VuZERvbWFpbnMobGltaXRz
VG9BcHBCb3VuZERvbWFpbnMpOworICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0TGltaXRzTmF2
aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyhsaW1pdHNUb0FwcEJvdW5kRG9tYWlucyk7CiB9CiAK
IC0gKEJPT0wpX2NvbnZlcnRzUG9zaXRpb25TdHlsZU9uQ29weQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggYTcyMDdh
YjNkZTM4NDJmYjA4ZTk2MDA3NjI2MDZjOGY2Yjk1NDE4Ny4uOGE2ODIzYzA5MGNjN2U0NGVmNTc0
Njc5YjA3ZTgyOTc1NmRkOTcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zNDMsNiArMzQzLDggQEAgZm9yIHRo
aXMgcHJvcGVydHkuCiAKIC0gKHZvaWQpX2dyYW50QWNjZXNzVG9QcmVmZXJlbmNlU2VydmljZSBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCist
ICh2b2lkKV9zZXJ2aWNlV29ya2Vyc0VuYWJsZWQ6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKy0gKHZvaWQpX2NsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGU6KHZvaWQg
KF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAZW5kCiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCAwODVlNDRjNzYzZmI0MDNlYmViNDE3MTUwZDhlMjZlNDU5Y2Y5MzAy
Li4wMTFhMjQ0ZTM3YjA0OGFiZmUzMzNlMGU2M2ZlOGQxNjgzNzk3YzFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTE0ODEsNiArMTQ4MSwyMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldElu
QXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRAogICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEluQXBwQnJvd3Nl
clByaXZhY3lFbmFibGVkKHNlc3Npb25JRCwgdmFsdWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0QXBwQm91bmREb21haW5z
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmIChhdXRvKiBzdG9yZSA9IHdlYnNpdGVE
YXRhU3RvcmVGcm9tU2Vzc2lvbklEKHNlc3Npb25JRCkpIHsKKyAgICAgICAgc3RvcmUtPmdldEFw
cEJvdW5kRG9tYWlucyhbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKGF1dG8mIGFwcEJvdW5kRG9tYWlucykgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRv
IGFwcEJvdW5kRG9tYWluc0NvcHkgPSBhcHBCb3VuZERvbWFpbnM7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGFwcEJvdW5kRG9tYWluc0NvcHkpKTsKKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyNl
bHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyNlbmRpZgorfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBiODY1N2EyZjBiOWM3MDRjMjMxMDA1M2YyNWIw
Njk4NjkwZDhkNzA2Li5lZjE1YWQ4YzdjOTM0ODcxZDYyNWQ5ZWRmMmMyMjRkZTI5ZTlmMjVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaApAQCAtMjIzLDcgKzIyMyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaGFzQXBw
Qm91bmRTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKICAgICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lv
bklELCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIAorICAgIHZvaWQg
Z2V0QXBwQm91bmREb21haW5zKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKKwogcHJpdmF0ZToK
ICAgICAvLyBBdXhpbGlhcnlQcm9jZXNzUHJveHkKICAgICBBU0NJSUxpdGVyYWwgcHJvY2Vzc05h
bWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTmV0d29ya2luZyJfczsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IGJlNTU4Nzg4YjZjZjMwZmIxMGI5NTZjMjFkY2ZjOTM1ZTU0
YTQ1OWUuLmEwYzc4MWJiMWM1ZTI0YWYyNThlYjA2YmMwODM3NTdkNTU4ODhlZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTY3LDYgKzY3LDggQEAgbWVzc2FnZXMgLT4gTmV0
d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKIAogICAgIFNl
dFdlYlByb2Nlc3NIYXNVcGxvYWRzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJ
RCwgYm9vbCBoYXNVcGxvYWQpCiAKKyAgICBHZXRBcHBCb3VuZERvbWFpbnMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKSAtPiAoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gYXBw
Qm91bmREb21haW5zKSBBc3luYworCiAgICAgUmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCB1aW50
NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQp
IC0+IChPcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpIEFzeW5jCiAgICAgCiAgICAgUmVzb3Vy
Y2VMb2FkRGlkU2VuZFJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
ZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZElu
Zm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBPcHRpb25hbDxJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlPiBodHRwQm9keSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IDA3ZWM3NWYyNzE0NjdkMDc3NWYyNmQxYzJhZWNmZDNmNTFlMzhiNTkuLmRi
YTI2ZGJiOGFjZWQ1MDdmNGJkMTEwN2YxNjc4MjY2ZWUyMzIyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTc5LDYgKzE3OSw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV3JpdGluZ0RpcmVj
dGlvbi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVn
YXRvci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9T
Y29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CkBAIC00ODUsNyArNDg2LDcg
QEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBSZWYKICAgICAsIG1fdHJ5Q2xvc2VUaW1lb3V0VGltZXIo
UnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZVByb3h5Ojp0cnlDbG9zZVRpbWVkT3V0KQog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgICwgbV9pZ25vcmVzQXBwQm91bmREb21haW5zKG1fY29u
ZmlndXJhdGlvbi0+aWdub3Jlc0FwcEJvdW5kRG9tYWlucygpIHx8IFdURjo6cHJvY2Vzc0hhc0Vu
dGl0bGVtZW50KCJjb20uYXBwbGUucHJpdmF0ZS5hcHBsZW1lZGlhc2VydmljZXMiKSkKLSAgICAs
IG1fbGltaXRzTmF2aWdhdGlvblRvQXBwQm91bmREb21haW5zKG1fY29uZmlndXJhdGlvbi0+bGlt
aXRzTmF2aWdhdGlvblRvQXBwQm91bmREb21haW5zKCkpCisgICAgLCBtX2xpbWl0c05hdmlnYXRp
b25zVG9BcHBCb3VuZERvbWFpbnMobV9jb25maWd1cmF0aW9uLT5saW1pdHNOYXZpZ2F0aW9uc1Rv
QXBwQm91bmREb21haW5zKCkpCiAjZW5kaWYKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJjb25zdHJ1Y3RvcjoiKTsKQEAgLTUyMSw2ICs1MjIsOSBAQCBXZWJQYWdlUHJv
eHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MsIFJlZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBEZXByZWNhdGVk
R2xvYmFsU2V0dGluZ3M6OnNldERpc2FibGVTY3JlZW5TaXplT3ZlcnJpZGUobV9wcmVmZXJlbmNl
cy0+ZGlzYWJsZVNjcmVlblNpemVPdmVycmlkZSgpKTsKKyAgICAKKyAgICBpZiAobV9jb25maWd1
cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZv
clRlc3RpbmcoKSkKKyAgICAgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudEluTmV0
d29ya1Byb2Nlc3MoKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0zMTU2LDYg
KzMxNjAsMzQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW5UZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm8KICAgICBjb21wbGV0aW9uSGFuZGxl
cihtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gJiYgKCptX2lzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4gPT0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllcykpOwogfQogCit2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudEluTmV0d29y
a1Byb2Nlc3MoKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKGF1dG8qIG5l
dHdvcmtQcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLm5ldHdvcmtQcm9jZXNzKCkp
IHsKKyAgICAgICAgaWYgKCFuZXR3b3JrUHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpEaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KCksIDApOworICAg
IH0KKyNlbmRpZgorfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBhdXRvIGNhbGxiYWNrQWdn
cmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkNsZWFy
U2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoKSwgW2NhbGxiYWNrQWdncmVnYXRvciA9
IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgaWYgKGF1dG8qIG5ldHdv
cmtQcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLm5ldHdvcmtQcm9jZXNzKCkpIHsK
KyAgICAgICAgaWYgKCFuZXR3b3JrUHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6Q2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZSgpLCBb
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsK
KyAgICB9CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisjZW5kaWYKK30KKwogdm9p
ZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFj
dGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFt
ZVByb3h5JiBmcmFtZSwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHBvbGljaWVzLCBS
ZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyKQogewogICAgIFJlZjxXZWJzaXRlRGF0
YVN0b3JlPiB3ZWJzaXRlRGF0YVN0b3JlID0gbV93ZWJzaXRlRGF0YVN0b3JlLmNvcHlSZWYoKTsK
QEAgLTc3OTUsNiArNzgyNyw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVBy
b3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAgICAgcGFyYW1l
dGVycy5zaG91bGRDYXB0dXJlVmlkZW9JbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLmNhcHR1
cmVWaWRlb0luR1BVUHJvY2Vzc0VuYWJsZWQoKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbmRl
ckNhbnZhc0luR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkucmVuZGVyQ2FudmFzSW5HUFVQcm9j
ZXNzRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJv
Y2VzcyA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jb25maWd1cmF0aW9uKCkuc2hvdWxkQ2Fw
dHVyZURpc3BsYXlJblVJUHJvY2VzcygpOworICAgIHBhcmFtZXRlcnMubGltaXRzTmF2aWdhdGlv
bnNUb0FwcEJvdW5kRG9tYWlucyA9IG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlu
czsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBwYXJhbWV0ZXJzLnRoZW1lTmFtZSA9IHBhZ2VD
bGllbnQoKS50aGVtZU5hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggNGZjNjBiMTg1NTk3NGJhNGUwNTlmNWJkMGNhNjJhNzdjY2MwZTU2Zi4uYjMyZDJhZmM3
MjU1YTQ5ODlkOGI1ZTY4ZDNkNWMyMmVkNDcwOTIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTE3MjksNiArMTcyOSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5UZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9pc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOyB9CiAKKyAgICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnRJbk5ldHdvcmtQcm9jZXNzKCk7CisgICAgdm9pZCBjbGVhclNlcnZpY2VXb3JrZXJFbnRp
dGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgICAgIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgZ3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgpAQCAtMjc5Nyw3
ICsyODAwLDcgQEAgcHJpdmF0ZToKICAgICBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWlu
IG1faGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiB7IE5hdmlnYXRlZEF3YXlGcm9t
QXBwQm91bmREb21haW46Ok5vIH07CiAgICAgYm9vbCBtX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV91c2VyU2NyaXB0c05vdGlmaWVkIHsgZmFsc2UgfTsKLSAg
ICBib29sIG1fbGltaXRzTmF2aWdhdGlvblRvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CiAK
ICNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eT4gbV9yb3V0aW5nQXJiaXRyYXRvcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNWI0Y2Vm
ZjNlYWIyYmE3ZDViNzhlMmExYzllNjMwYjJlN2ZkNTM4YS4uNjc2OGI3NmMxYTc4ZjZjN2JjYTJh
MzY2YTUyYzNmMGNiN2YwYjUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTQ2MCw2ICs0NjAsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiAjZW5kaWYKICAgICAsIG1fb3ZlcnJpZGRlbk1lZGlhVHlwZShwYXJhbWV0ZXJzLm92ZXJyaWRk
ZW5NZWRpYVR5cGUpCiAgICAgLCBtX3Byb2Nlc3NEaXNwbGF5TmFtZShwYXJhbWV0ZXJzLnByb2Nl
c3NEaXNwbGF5TmFtZSkKKyAgICAsIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihwYXJh
bWV0ZXJzLmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgPyBOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbjo6WWVzIDogTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vKQogewog
ICAgIEFTU0VSVChtX2lkZW50aWZpZXIpOwogCkBAIC0zNjcyLDkgKzM2NzMsMTIgQEAgdm9pZCBX
ZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9y
ZSkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChzdG9yZS5n
ZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnNlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudERpc2FibGVkRm9yVGVzdGluZ0tleSgpKSkKKyAgICAgICAgZGlzYWJsZVNlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudCgpOworCiAgICAgaWYgKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQ
cmVmZXJlbmNlc0tleTo6c2VydmljZVdvcmtlcnNFbmFibGVkS2V5KCkpKSB7Ci0gICAgICAgIEFT
U0VSVChwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkpOwotICAgICAg
ICBpZiAoIXBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSkKKyAgICAg
ICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSB8fCBt
X2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOworICAgICAgICBpZiAoIXBhcmVudFByb2Nl
c3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSAmJiAhbV9pc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluKQogICAgICAgICAgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS5zZXRTZXJ2aWNlV29ya2VyRW5hYmxlZChmYWxzZSk7CiAgICAgfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggODIyNjVkNGMx
YWQ4Y2QyY2VkN2FhNzI5YTk1NzlkNmYyYjM0OGI1OC4uOWE0YTgxZmZhOThhYTRkM2Q2MjVjMDdj
YjE4ZmJmOGNmM2ZhNzk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaApAQCAtMTUyMyw4ICsxNTIzLDEyIEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGJvb2wgcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudCgpIGNvbnN0OworICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgp
OworICAgIHZvaWQgY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2Vsc2UKICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNT
ZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdm9p
ZCBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgeyB9CisgICAgdm9pZCBjbGVhclNl
cnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9CiAjZW5kaWYKIAog
ICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgdWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAx
YjExNTllMTZmNjk1NmZhMDY0N2M2Y2I4MDEzOTYxYTk4ODdiZWM4Li5lNzVlZWQ4ZDk2YWNlZjk3
MGUwYjk3YTQwM2IwODEyYjhlMWQ1ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTEyMiw2ICsxMjIsNyBAQCBH
ZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIEluc2VydFRleHRQbGFjZWhvbGRlcihXZWJDb3Jl
OjpJbnRTaXplIHNpemUpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4gcGxh
Y2Vob2xkZXIpIEFzeW5jCiAgICAgUmVtb3ZlVGV4dFBsYWNlaG9sZGVyKHN0cnVjdCBXZWJDb3Jl
OjpFbGVtZW50Q29udGV4dCBwbGFjZWhvbGRlcikgLT4gKCkgQXN5bmMKICAgICBGb2N1c1RleHRJ
bnB1dENvbnRleHRBbmRQbGFjZUNhcmV0KHN0cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBj
b250ZXh0LCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMK
KyAgICBDbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKCkgLT4gKCkgQXN5bmMK
ICNlbmRpZgogCiAgICAgU2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihib29sIGNvbnRyb2xsZWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCmluZGV4IDM0YTg0NzNlNGFhYWEwNDAxNTdhNGFmZDJiNWI5ZmM5MDkwYTI5N2IuLjFhYjNk
MjRmYTRiODExYmNhZWFkMjliNTMzMjY4OWRkNGZlMDgzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00ODgsMTIgKzQ4
OCwyOCBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJk
RXZlbnQmIGV2ZW50KQogICAgIHJldHVybiBzZW5kUmVzdWx0ICYmIGV2ZW50V2FzSGFuZGxlZDsK
IH0KIAorc3RhdGljIGJvb2wgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudFRlc3RpbmdP
dmVycmlkZTsKKwogYm9vbCBXZWJQYWdlOjpwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVu
dGl0bGVtZW50KCkgY29uc3QKIHsKKyAgICBpZiAoZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudFRlc3RpbmdPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAogICAgIHN0
YXRpYyBib29sIGhhc0VudGl0bGVtZW50ID0gV1RGOjpoYXNFbnRpdGxlbWVudChXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCks
ICJjb20uYXBwbGUuZGV2ZWxvcGVyLldlYktpdC5TZXJ2aWNlV29ya2VycyIpOwogICAgIHJldHVy
biBoYXNFbnRpdGxlbWVudDsKIH0KIAordm9pZCBXZWJQYWdlOjpkaXNhYmxlU2VydmljZVdvcmtl
ckVudGl0bGVtZW50KCkKK3sKKyAgICBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVz
dGluZ092ZXJyaWRlID0gdHJ1ZTsKK30KKwordm9pZCBXZWJQYWdlOjpjbGVhclNlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50VGVzdGlu
Z092ZXJyaWRlID0gZmFsc2U7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwogdm9pZCBX
ZWJQYWdlOjpzZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHVpbnQ2NF90LCBjb25zdCBTdHJp
bmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2I1MThjNWMyMWM1MGE2MzRkY2RiMDM5M2EyODQz
OWM0ZGZlZWY0Yi4uMTY4Mjk2NjM0NDI1YjM0MzE3ZDQ4Nzk4YmQxNDQ3MzUxNWUwNWM5MiAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDIwLTA0LTE2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUu
Y29tPgorCisgICAgICAgIEVuYWJsZSBzZXJ2aWNlIHdvcmtlcnMgZm9yIGFwcC1ib3VuZCBkb21h
aW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA0
NTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxNDc5NDc0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgMiB0ZXN0IGNhc2VzIHRvIG1ha2Ug
c3VyZSBzZXJ2aWNlIHdvcmtlcnMgYmVoYXZlIHByb3Blcmx5IG9uCisgICAgICAgIGFwcCBib3Vu
ZCBkb21haW5zLCBhbmQgdGhhdCB0aGUgQVBJcyBhcmUgbm90IGF2YWlsYWJsZSBvbiBub24tYXBw
CisgICAgICAgIGJvdW5kIGRvbWFpbnMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisgICAgICAgICgtW1NXSW5BcHBC
cm93c2VyUHJpdmFjeU1lc3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjpkaWRSZWNl
aXZlU2NyaXB0TWVzc2FnZTpdKToKKwogMjAyMC0wNC0xNyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMjYw
MjY5LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDIxYTBlNDY2M2RlNzUwZjU0ZjE0YzY2
ZGM5YjVjNTNjMGJiZWUwMjMuLjY2MDdlZjA5OWUxODJlMzU5ZmM2NmU1YmFjM2I3OTk3ODIyZGI5
NjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5B
cHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiU2Vy
dmljZVdvcmtlclRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5o
IgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJh
dGlvbkV4dHJhcy5oIgpAQCAtNzQzLDYgKzc0NCwxMzcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2
YWN5LCBHZXRDb29raWVGb3JVUkxGYWlscykKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOwogfQogCitAaW50ZXJmYWNlIFNXSW5BcHBCcm93c2VyUHJpdmFjeU1lc3NhZ2VIYW5k
bGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CitAZW5kCisKK0BpbXBsZW1l
bnRhdGlvbiBTV0luQXBwQnJvd3NlclByaXZhY3lNZXNzYWdlSGFuZGxlcgorLSAodm9pZCl1c2Vy
Q29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRD
b250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNz
YWdlCit7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2Vydmlj
ZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIiwgW21lc3Nh
Z2UgYm9keV0pOworICAgIGlzRG9uZSA9IHRydWU7Cit9CitAZW5kCisKK3N0YXRpYyBjb25zdCBj
aGFyKiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCis8c2NyaXB0PgorCitmdW5jdGlvbiBsb2co
bXNnKQoreworICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnN3LnBvc3RNZXNzYWdl
KG1zZyk7Cit9CisKK25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1l
c3NhZ2UiLCBmdW5jdGlvbihldmVudCkgeworICAgIGxvZygiTWVzc2FnZSBmcm9tIHdvcmtlcjog
IiArIGV2ZW50LmRhdGEpOworfSk7CisKK3RyeSB7CisKK25hdmlnYXRvci5zZXJ2aWNlV29ya2Vy
LnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgeworICAgIHdvcmtlciA9IHJl
Zy5pbnN0YWxsaW5nID8gcmVnLmluc3RhbGxpbmcgOiByZWcuYWN0aXZlOworICAgIHdvcmtlci5w
b3N0TWVzc2FnZSgiSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIik7Cit9KS5jYXRjaChm
dW5jdGlvbihlcnJvcikgeworICAgIGxvZygiUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoOiAiICsg
ZXJyb3IpOworfSk7Cit9IGNhdGNoKGUpIHsKKyAgICBsb2coIkV4Y2VwdGlvbjogIiArIGUpOwor
fQorCis8L3NjcmlwdD4KKylTV1JFU09VUkNFIjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlw
dEJ5dGVzID0gUiJTV1JFU09VUkNFKAorCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2Ui
LCAoZXZlbnQpID0+IHsKKyAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3Jr
ZXIgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKK30pOworCispU1dSRVNPVVJDRSI7CisKK1RF
U1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2Vy
cykKK3sKKyAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwor
ICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIG1lc3NhZ2VI
YW5kbGVyID0gYWRvcHROUyhbW1NXSW5BcHBCcm93c2VyUHJpdmFjeU1lc3NhZ2VIYW5kbGVyIGFs
bG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0g
YWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07
CisgICAgW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLl9zZXJ2aWNlV29ya2VyRW50aXRsZW1l
bnREaXNhYmxlZEZvclRlc3RpbmcgPSBZRVM7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TGltaXRz
TmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczpZRVNdOworCisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIFNl
cnZpY2VXb3JrZXJUQ1BTZXJ2ZXIgc2VydmVyMSh7CisgICAgICAgIHsgInRleHQvaHRtbCIsIG1h
aW5CeXRlcyB9LAorICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0Qnl0
ZXN9LAorICAgIH0pOworCisgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0
YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKKworICAgIC8vIFN0YXJ0IHdpdGggYSBjbGVhbiBzbGF0
ZSBkYXRhIHN0b3JlCisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0g
cmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVz
XSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4o
KSB7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIAorICAgIC8vIEV4
cGVjdCB0aGUgc2VydmljZSB3b3JrZXIgbG9hZCB0byBjb21wbGV0ZSBzdWNjZXNzZnVsbHkuCisg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyMS5yZXF1ZXN0V2l0aExvY2FsaG9zdCgpXTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgaXNEb25lID0gZmFs
c2U7CisKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBmZXRjaERh
dGFSZWNvcmRzT2ZUeXBlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpXS1dlYnNpdGVEYXRhVHlwZVNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zXSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tX
ZWJzaXRlRGF0YVJlY29yZCAqPiAqd2Vic2l0ZURhdGFSZWNvcmRzKSB7CisgICAgICAgIEVYUEVD
VF9FUSgxdSwgW3dlYnNpdGVEYXRhUmVjb3JkcyBjb3VudF0pOworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEod2Vic2l0ZURhdGFSZWNvcmRzWzBdLmRpc3BsYXlOYW1lLCAibG9jYWxob3N0Iik7Cisg
ICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmlzRG9uZSk7CisgICAgaXNEb25lID0gZmFsc2U7CisKKyAgICAvLyBSZXNldCBzZXJ2
aWNlIHdvcmtlciBlbnRpdGxlbWVudC4KKyAgICBbd2ViVmlldyBfY2xlYXJTZXJ2aWNlV29ya2Vy
RW50aXRsZW1lbnRPdmVycmlkZTpeKHZvaWQpIHsKKyAgICAgICAgY2xlYW5VcEluQXBwQnJvd3Nl
clByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgaXNEb25lID0gZmFs
c2U7Cit9CisKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5Eb2Vz
Tm90QWxsb3dTZXJ2aWNlV29ya2VycykKK3sKKyAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJp
dmFjeVRlc3RTZXR0aW5ncygpOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKKyAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbSW5BcHBCcm93c2VyU2NoZW1l
SGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhh
bmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJpbi1hcHAtYnJvd3NlciJd
OworICAgIC8vIERpc2FibGUgZW50aXRsZW1lbnQgd2hpY2ggYWxsb3dzIHNlcnZpY2Ugd29ya2Vy
cy4KKyAgICBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10uX3NlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudERpc2FibGVkRm9yVGVzdGluZyA9IFlFUzsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICAvLyBMb2Fk
IGEgbm9uLWFwcCBib3VuZCBkb21haW4uCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1i
cm93c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cyJd
XTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBbd2ViVmlldyBfdGVz
dF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgCisgICAgLy8gRXhwZWN0IHRoYXQg
c2VydmljZSB3b3JrZXJzIGFyZSBkaXNhYmxlZCBmb3IgdGhpcyB3ZWJWaWV3LgorICAgIGlzRG9u
ZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9zZXJ2aWNlV29ya2Vyc0VuYWJsZWQ6XihCT09MIGVu
YWJsZWQpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGVuYWJsZWQpOworICAgICAgICBpc0RvbmUg
PSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
KyAgICAKKyAgICAvLyBSZXNldCBzZXJ2aWNlIHdvcmtlciBlbnRpdGxlbWVudC4KKyAgICBbd2Vi
VmlldyBfY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZTpeKHZvaWQpIHsKKyAg
ICAgICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICAgICAg
aXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZSk7CisgICAgaXNEb25lID0gZmFsc2U7Cit9CisKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>