<?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>148538</bug_id>
          
          <creation_ts>2015-08-27 14:02:09 -0700</creation_ts>
          <short_desc>Web Inspector: InspectorController should support multiple frontend channels</short_desc>
          <delta_ts>2015-09-04 13:00:34 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>148785</dependson>
          <blocked>148481</blocked>
    
    <blocked>148492</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1121409</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-27 14:02:09 -0700</bug_when>
    <thetext>First step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121411</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-08-27 14:03:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/22462778&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121878</commentid>
    <comment_count>2</comment_count>
      <attachid>260191</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-28 16:02:31 -0700</bug_when>
    <thetext>Created attachment 260191
Proposed Fix

Here we go.. expecting a few rounds with EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121891</commentid>
    <comment_count>3</comment_count>
      <attachid>260191</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-08-28 16:50:16 -0700</bug_when>
    <thetext>Comment on attachment 260191
Proposed Fix

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

Leaving the review flag for my questions about first frontend connection, last frontend disconnection.

&gt; Source/JavaScriptCore/CMakeLists.txt:326
&gt;      inspector/InspectorAgentRegistry.cpp
&gt; +    inspector/InspectorFrontendRouter.cpp
&gt;      inspector/InspectorBackendDispatcher.cpp

Nit: `sort` order.

&gt; Source/JavaScriptCore/inspector/InspectorFrontendRouter.h:40
&gt; +    bool hasFrontends() const { return m_connections.size() &gt; 0; }

Would !Vector::isEmpty be clearer?

&gt; Source/JavaScriptCore/inspector/InspectorFrontendRouter.h:55
&gt; +    Vector&lt;FrontendChannel*, 2&gt; m_connections;

Nice use of size hint!

&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:116
&gt; +    m_agents.didCreateFrontendAndBackend(frontendChannel, &amp;m_backendDispatcher.get());

Is the plan that this should happen when adding the first frontend?

&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:130
&gt; +    m_agents.willDestroyFrontendAndBackend(DisconnectReason::InspectorDestroyed);

Is the plan that this should happen when removing the last frontend?

&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:-154
&gt; -    if (!m_frontendChannel)
&gt; -        return;

I think the equivalent of this would be:

    if (!m_frontendRouter.hasFrontends())
        return;

I&apos;m not quite sure of the consequences here.

&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:276
&gt; -    if (m_frontendChannel)
&gt; -        agent-&gt;didCreateFrontendAndBackend(m_frontendChannel, m_backendDispatcher.get());
&gt; +    agent-&gt;didCreateFrontendAndBackend(m_frontendRouter-&gt;leakChannel(), &amp;m_backendDispatcher.get());
&gt;  
&gt;      m_agents.appendExtraAgent(WTF::move(agent));
&gt;  
&gt; -    if (m_frontendChannel)
&gt; -        m_inspectorAgent-&gt;activateExtraDomain(domainName);
&gt; +    m_inspectorAgent-&gt;activateExtraDomain(domainName);

Same here. The consequences here seem to just be that you might be doing work in an agent that gets repeated when connectFrontend happens.

&gt; Source/WebCore/WebCore.vcxproj/WebCore.vcxproj:20398
&gt;      &lt;ClInclude Include=&quot;..\ForwardingHeaders\inspector\InspectorFrontendChannel.h&quot; /&gt;
&gt; +    &lt;ClInclude Include=&quot;..\ForwardingHeaders\inspector\InspectorFrontendRouter.h&quot; /&gt;
&gt;      &lt;ClInclude Include=&quot;..\ForwardingHeaders\inspector\InspectorBackendDispatchers.h&quot; /&gt;
&gt;      &lt;ClInclude Include=&quot;..\ForwardingHeaders\inspector\InspectorFrontendDispatchers.h&quot; /&gt;

You could correct the sort order while you are here!

&gt; Source/WebCore/inspector/InspectorController.cpp:266
&gt;  #if ENABLE(REMOTE_INSPECTOR)
&gt; -    if (!hasRemoteFrontend())
&gt; +    if (!m_frontendRouter-&gt;hasRemoteFrontend() &amp;&amp; didHaveRemoteFrontend)
&gt;          m_page.remoteInspectorInformationDidChange();
&gt;  #endif

The purpose of this here is to inform any remote debuggers if this debuggable has a debugger or not. So I think this may have been flawed originally, and it probably should be the same as first/last disconnect conditions. Or for now:

    if (m_frontendRouter-&gt;hasFrontends() &amp;&amp; didHaveFrontends())

&gt; Source/WebCore/testing/Internals.cpp:1736
&gt; -    bool isAutomaticInspection = false;
&gt;      m_frontendChannel = std::make_unique&lt;InspectorFrontendChannelDummy&gt;(frontendPage);
&gt; -    page-&gt;inspectorController().connectFrontend(m_frontendChannel.get(), isAutomaticInspection);
&gt; +    page-&gt;inspectorController().connectFrontend(m_frontendChannel.get());

Arg, I hate default parameters. It is easy to make mistakes. But this seems reasonable =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121931</commentid>
    <comment_count>4</comment_count>
      <attachid>260204</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-28 19:48:15 -0700</bug_when>
    <thetext>Created attachment 260204
Proposed Fix (EWS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121934</commentid>
    <comment_count>5</comment_count>
      <attachid>260191</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-28 19:56:18 -0700</bug_when>
    <thetext>Comment on attachment 260191
Proposed Fix

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

&gt;&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:116
&gt;&gt; +    m_agents.didCreateFrontendAndBackend(frontendChannel, &amp;m_backendDispatcher.get());
&gt; 
&gt; Is the plan that this should happen when adding the first frontend?

Correct. I tried doing that earlier, but was hitting other issues so I reverted it to help isolate the problem. I will try altering the condition to what you said again, now that everything else is working.

&gt;&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:130
&gt;&gt; +    m_agents.willDestroyFrontendAndBackend(DisconnectReason::InspectorDestroyed);
&gt; 
&gt; Is the plan that this should happen when removing the last frontend?

Yup, see above.

&gt;&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:-154
&gt;&gt; -        return;
&gt; 
&gt; I think the equivalent of this would be:
&gt; 
&gt;     if (!m_frontendRouter.hasFrontends())
&gt;         return;
&gt; 
&gt; I&apos;m not quite sure of the consequences here.

Is this code related to automatic inspection and auto-resuming? Will investigate.

&gt;&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:276
&gt;&gt; +    m_inspectorAgent-&gt;activateExtraDomain(domainName);
&gt; 
&gt; Same here. The consequences here seem to just be that you might be doing work in an agent that gets repeated when connectFrontend happens.

How will we know to activate the domain once a frontend connects? Or are these always done together?

&gt;&gt; Source/WebCore/inspector/InspectorController.cpp:266
&gt;&gt;  #endif
&gt; 
&gt; The purpose of this here is to inform any remote debuggers if this debuggable has a debugger or not. So I think this may have been flawed originally, and it probably should be the same as first/last disconnect conditions. Or for now:
&gt; 
&gt;     if (m_frontendRouter-&gt;hasFrontends() &amp;&amp; didHaveFrontends())

yeah, this condition will change once we want to allow multiple remotes to actually connect. But for now, when should it notify: when a frontend has become detached or when it has become attached?

&gt;&gt; Source/WebCore/testing/Internals.cpp:1736
&gt;&gt; +    page-&gt;inspectorController().connectFrontend(m_frontendChannel.get());
&gt; 
&gt; Arg, I hate default parameters. It is easy to make mistakes. But this seems reasonable =)

It is used so infrequently I thought it was appropriate here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121958</commentid>
    <comment_count>6</comment_count>
      <attachid>260214</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-28 21:48:06 -0700</bug_when>
    <thetext>Created attachment 260214
Proposed Fix (EWS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121984</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-08-29 01:15:34 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 260191 [details]
&gt; Proposed Fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=260191&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:116
&gt; &gt;&gt; +    m_agents.didCreateFrontendAndBackend(frontendChannel, &amp;m_backendDispatcher.get());
&gt; &gt; 
&gt; &gt; Is the plan that this should happen when adding the first frontend?
&gt; 
&gt; Correct. I tried doing that earlier, but was hitting other issues so I
&gt; reverted it to help isolate the problem. I will try altering the condition
&gt; to what you said again, now that everything else is working.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:130
&gt; &gt;&gt; +    m_agents.willDestroyFrontendAndBackend(DisconnectReason::InspectorDestroyed);
&gt; &gt; 
&gt; &gt; Is the plan that this should happen when removing the last frontend?
&gt; 
&gt; Yup, see above.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:-154
&gt; &gt;&gt; -        return;
&gt; &gt; 
&gt; &gt; I think the equivalent of this would be:
&gt; &gt; 
&gt; &gt;     if (!m_frontendRouter.hasFrontends())
&gt; &gt;         return;
&gt; &gt; 
&gt; &gt; I&apos;m not quite sure of the consequences here.
&gt; 
&gt; Is this code related to automatic inspection and auto-resuming? Will
&gt; investigate.

Yes, it is. Ping me on IRC if needed and I can show you how to test this / explain how it works.

&gt; &gt;&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:276
&gt; &gt;&gt; +    m_inspectorAgent-&gt;activateExtraDomain(domainName);
&gt; &gt; 
&gt; &gt; Same here. The consequences here seem to just be that you might be doing work in an agent that gets repeated when connectFrontend happens.
&gt; 
&gt; How will we know to activate the domain once a frontend connects? Or are
&gt; these always done together?

The normal path is inside JSGlobalObjectInspectorController::connectFrontend (line 123). When a frontend connects we tell it about all the extra domains:

    m_inspectorAgent-&gt;activateExtraDomains(m_agents.extraDomains());

This path here (line 276) is handling when an extra domain is activated and a frontend is already connected, it does the normal agent setup and informs the frontend about this new extra domain.


&gt; &gt;&gt; Source/WebCore/inspector/InspectorController.cpp:266
&gt; &gt;&gt;  #endif
&gt; &gt; 
&gt; &gt; The purpose of this here is to inform any remote debuggers if this debuggable has a debugger or not. So I think this may have been flawed originally, and it probably should be the same as first/last disconnect conditions. Or for now:
&gt; &gt; 
&gt; &gt;     if (m_frontendRouter-&gt;hasFrontends() &amp;&amp; didHaveFrontends())
&gt; 
&gt; yeah, this condition will change once we want to allow multiple remotes to
&gt; actually connect. But for now, when should it notify: when a frontend has
&gt; become detached or when it has become attached?

Given how uncommon a frontend connecting/disconnecting is, and how likely it is in practice to actually change some information about the remote debuggable it wouldn&apos;t be unreasonable to just always do it when a frontend connects/disconnects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121992</commentid>
    <comment_count>8</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-29 09:02:57 -0700</bug_when>
    <thetext>The new patch addresses these comments, except the vcxproj reorderings. I hope we nuke those files soon anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122998</commentid>
    <comment_count>9</comment_count>
      <attachid>260214</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-09-02 18:24:37 -0700</bug_when>
    <thetext>Comment on attachment 260214
Proposed Fix (EWS)

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

r=me.

I think it might be nicer for clarity to have distinct methods for the code that gets run in the distinct cases.

    Controller::connectFrontend
    Controller::disconnectFrontend

    Controller::firstFrontendConnected (setup?)
    Controller::lastFrontendDisconnected (teardown?)

But it may just be diff ugliness that makes it harder to follow this.

&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:-154
&gt; -    if (!m_frontendChannel)
&gt; -        return;

I still think this can be if (!hasFrontends).

&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:-266
&gt; -    if (m_frontendChannel)
&gt; -        agent-&gt;didCreateFrontendAndBackend(m_frontendChannel, m_backendDispatcher.get());

Likewise. if (hasFrontend)

&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:-271
&gt; -    if (m_frontendChannel)
&gt; -        m_inspectorAgent-&gt;activateExtraDomain(domainName);

Likewise. if (hasFrontend)

&gt; Source/WebCore/inspector/InspectorController.cpp:272
&gt;  #if ENABLE(REMOTE_INSPECTOR)
&gt; -    if (!hasRemoteFrontend())
&gt; +    if (!m_frontendRouter-&gt;hasFrontends() &amp;&amp; didHaveRemoteFrontend)
&gt;          m_page.remoteInspectorInformationDidChange();
&gt; +#else
&gt; +    UNUSED_PARAM(didHaveRemoteFrontend);
&gt;  #endif
&gt; +}

Lets simplify and just always call m_page.remoteInspectorInformationDidChange if we are removing the last frontend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123188</commentid>
    <comment_count>10</comment_count>
      <attachid>260530</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-09-03 15:31:13 -0700</bug_when>
    <thetext>Created attachment 260530
Proposed Fix (for EWS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123201</commentid>
    <comment_count>11</comment_count>
      <attachid>260534</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-09-03 16:12:10 -0700</bug_when>
    <thetext>Created attachment 260534
Proposed Fix (for Win EWS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123226</commentid>
    <comment_count>12</comment_count>
      <attachid>260541</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-09-03 17:13:31 -0700</bug_when>
    <thetext>Created attachment 260541
Proposed Fix (for Win EWS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123324</commentid>
    <comment_count>13</comment_count>
      <attachid>260541</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-03 20:58:50 -0700</bug_when>
    <thetext>Comment on attachment 260541
Proposed Fix (for Win EWS)

Clearing flags on attachment: 260541

Committed r189338: &lt;http://trac.webkit.org/changeset/189338&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123325</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-03 20:58:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123336</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-03 21:52:09 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 148785</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123340</commentid>
    <comment_count>16</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-09-03 21:55:48 -0700</bug_when>
    <thetext>Bots are seeing ASSERTs:

ASSERTION FAILED: m_frontendRouter-&gt;hasFrontends()
/Volumes/Data/slave/yosemite-debug/build/Source/WebCore/inspector/WorkerInspectorController.cpp(130) : void WebCore::WorkerInspectorController::disconnectFrontend(Inspector::DisconnectReason)
1   0x114fb7190 WTFCrash
2   0x118b6c8eb WebCore::WorkerInspectorController::disconnectFrontend(Inspector::DisconnectReason)
3   0x118b6c627 WebCore::WorkerInspectorController::~WorkerInspectorController()
4   0x118b6caa5 WebCore::WorkerInspectorController::~WorkerInspectorController()
5   0x118b6cac9 WebCore::WorkerInspectorController::~WorkerInspectorController()
6   0x118b61844 WebCore::WorkerGlobalScope::~WorkerGlobalScope()
7   0x116e6e825 WebCore::DedicatedWorkerGlobalScope::~DedicatedWorkerGlobalScope()
8   0x116e6e845 WebCore::DedicatedWorkerGlobalScope::~DedicatedWorkerGlobalScope()
9   0x116e6e899 WebCore::DedicatedWorkerGlobalScope::~DedicatedWorkerGlobalScope()
10  0x116e70103 WTF::RefCounted&lt;WebCore::WorkerGlobalScope&gt;::deref()
11  0x117dc0f11 void WTF::derefIfNotNull&lt;WebCore::WorkerGlobalScope&gt;(WebCore::WorkerGlobalScope*)
12  0x118b91757 WTF::RefPtr&lt;WebCore::WorkerGlobalScope&gt;::operator=(std::nullptr_t)
13  0x118b8dc10 WebCore::WorkerThread::workerThread()
14  0x118b8d6e5 WebCore::WorkerThread::workerThreadStart(void*)
15  0x11501fd89 WTF::createThread(void (*)(void*), void*, char const*)::$_0::operator()() const
16  0x11501fd5c std::__1::__function::__func&lt;WTF::createThread(void (*)(void*), void*, char const*)::$_0, std::__1::allocator&lt;WTF::createThread(void (*)(void*), void*, char const*)::$_0&gt;, void ()&gt;::operator()()
17  0x114aa4e2a std::__1::function&lt;void ()&gt;::operator()() const
18  0x11501ebae WTF::threadEntryPoint(void*)
19  0x115020321 WTF::wtfThreadEntryPoint(void*)
20  0x7fff82a6a05a _pthread_body
21  0x7fff82a69fd7 _pthread_body
22  0x7fff82a673ed thread_start</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123523</commentid>
    <comment_count>17</comment_count>
      <attachid>260605</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-09-04 11:41:14 -0700</bug_when>
    <thetext>Created attachment 260605
Proposed Fix (Fix Crash)

Turns out we were unconditionally disconnecting worker controller&apos;s frontend channel, when this work was already being done when the workers were spun down.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123563</commentid>
    <comment_count>18</comment_count>
      <attachid>260605</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-04 13:00:30 -0700</bug_when>
    <thetext>Comment on attachment 260605
Proposed Fix (Fix Crash)

Clearing flags on attachment: 260605

Committed r189375: &lt;http://trac.webkit.org/changeset/189375&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123564</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-04 13:00:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260191</attachid>
            <date>2015-08-28 16:02:31 -0700</date>
            <delta_ts>2015-08-28 19:48:11 -0700</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-148538-20150828160217.patch</filename>
            <type>text/plain</type>
            <size>79661</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
N2I5OGFjMzU4ZjY2OWM1MzUyOGQwMTc4ZDQ1MWNlNGYwYjE0MTcxLi40NTIwYzM1YTI0Y2M2OWEx
MDM4NmEwM2NlYTIzZWI4MTU4NTE1MzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OCBAQAorMjAxNS0wOC0yOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250cm9sbGVyIHNob3VsZCBzdXBwb3J0
IG11bHRpcGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIGEgc2luZ2xldG9uLCBpdCBzaG91bGQgYmUg
cG9zc2libGUgdG8gaGF2ZSBtdWx0aXBsZSBjaGFubmVscyBvcGVuCisgICAgICAgIGF0IHRoZSBz
YW1lIHRpbWUgYW5kIHRvIGluZGl2aWR1YWxseSBjbG9zZSBjaGFubmVscyBhcyBmcm9udGVuZHMg
Y29tZSBhbmQgZ28uCisKKyAgICAgICAgVGhlIEZyb250ZW5kUm91dGVyIGNsYXNzIGtlZXBzIGEg
bGlzdCBvZiBvcGVuIEZyb250ZW5kQ2hhbm5lbHMgYW5kIHNlbmRzIG1lc3NhZ2VzCisgICAgICAg
IHRvIHRoZSBhcHByb3ByaWF0ZSBmcm9udGVuZHMgYmFzZWQgb24gd2hldGhlciB0aGUgbWVzc2Fn
ZSBpcyBhIHJlc3BvbnNlIG9yIGV2ZW50LgorICAgICAgICBFYWNoIEluc3BlY3RvckNvbnRyb2xs
ZXIgb3ducyBhIHNpbmdsZSBGcm9udGVuZFJvdXRlciBhbmQgQmFja2VuZERpc3BhdGNoZXIgaW5z
dGFuY2UuCisgICAgICAgIEluc3BlY3RvciBiYWNrZW5kIGNvZGUgdGhhdCBzZW5kcyBtZXNzYWdl
cyB0byB0aGUgZnJvbnRlbmQgc2hvdWxkIHN3aXRjaCBvdmVyIHRvCisgICAgICAgIHVzaW5nIHRo
ZSByb3V0ZXIgcmF0aGVyIHRoYW4gZGlyZWN0bHkgdXNpbmcgYSBGcm9udGVuZENoYW5uZWwuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuY3BwOiBNb3ZlIGNvbnN0cnVjdG9ycy9kZXN0cnVjdG9ycyBvdXQgb2Yg
dGhlIGhlYWRlcgorICAgICAgICB0byBhdm9pZCBpbmNsdWRpbmcgSW5zcGVjdG9yRnJvbnRlbmRS
b3V0ZXIgZXZlcnl3aGVyZS4gVXNlIHRoZSByb3V0ZXIgaW5zdGVhZCBvZiBhCisgICAgICAgIHNw
ZWNpZmljIGZyb250ZW5kIGNoYW5uZWwuIFJlbW92ZSBndWFyZHMgdGhhdCBhcmUgbm8gbG9uZ2Vy
IG5lY2Vzc2FyeSBzaW5jZSB0aGUgcm91dGVyCisgICAgICAgIGlzIGd1YXJhbnRlZWQgdG8gb3V0
bGl2ZSB0aGUgYmFja2VuZCBkaXNwYXRjaGVyLgorCisgICAgICAgIChJbnNwZWN0b3I6OlN1cHBs
ZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyOjpTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcik6
CisgICAgICAgIChJbnNwZWN0b3I6OlN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyOjp+U3Vw
cGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlcjo6QmFja2VuZERpc3BhdGNoZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXI6OmlzQWN0aXZlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6
OnJlZ2lzdGVyRGlzcGF0Y2hlckZvckRvbWFpbik6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlcjo6c2VuZFBlbmRpbmdFcnJvcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOgorICAgICAgICAoSW5zcGVjdG9yOjpTdXBwbGVtZW50
YWxCYWNrZW5kRGlzcGF0Y2hlcjo6U3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIpOiBEZWxl
dGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcjo6
flN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OmNsZWFyRnJvbnRlbmQpOiBEZWxldGVkLCBubyBsb25n
ZXIgbmVjZXNzYXJ5LgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6aXNB
Y3RpdmUpOiBNb3ZlZCB0byBpbXBsZW1lbnRhdGlvbiBmaWxlLgorICAgICAgICAoSW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlcjo6QmFja2VuZERpc3BhdGNoZXIpOiBNb3ZlZCB0byBpbXBsZW1l
bnRhdGlvbiBmaWxlLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6Y3JlYXRl
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI6OmNvbm5lY3RGcm9udGVuZCk6
CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpkaXNjb25uZWN0RnJvbnRlbmQp
OgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6ZGlzY29ubmVjdEFsbEZyb250
ZW5kcyk6CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpsZWFrQ2hhbm5lbCk6
CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpoYXNMb2NhbEZyb250ZW5kKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI6Omhhc1JlbW90ZUZyb250ZW5kKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI6OnNlbmRFdmVudCk6CisgICAgICAg
IChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpzZW5kUmVzcG9uc2UpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcDogUmVtb3ZlIGd1YXJk
cyB0aGF0IGFyZSBubyBsb25nZXIgbmVjZXNzYXJ5LgorICAgICAgICBUaGUgZnJvbnRlbmQgcm91
dGVyIGFuZCBiYWNrZW5kIGRpc3BhdGNoZXIgbm93IGhhdmUgdGhlIHNhbWUgbGlmZXRpbWUgYXMg
dGhlIGNvbnRyb2xsZXIuCisgICAgICAgIEV4cGxpY2l0bHkgY29ubmVjdC9kaXNjb25uZWN0IHRo
ZSBmcm9udGVuZCBjaGFubmVsLgorCisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
SW5zcGVjdG9yQ29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpn
bG9iYWxPYmplY3REZXN0cm95ZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChJbnNwZWN0
b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5k
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
OjpkaXNjb25uZWN0QWxsRnJvbnRlbmRzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmFw
cGVuZEV4dHJhQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXI6OnBhdXNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL2F1
Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAoSW5z
cGVjdG9yOjpBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RlZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlv
bi5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb246OmNsb3NlKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVy
YXRlX2NwcF9hbHRlcm5hdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weToKKyAgICAgICAg
KENwcEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yLmdlbmVyYXRlX291
dHB1dCk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpj
X2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAgIChPYmpDRnJv
bnRlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2V2ZW50KTog
VXNlIHRoZSByb3V0ZXIuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2Fi
bGUuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmRpc2Nvbm5l
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmg6CisKIDIw
MTUtMDgtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAg
ICAgTW92ZSBzdGQ6OmZ1bmN0aW9uIGZyb20gSlNGdW5jdGlvbiBpbnRvIE5hdGl2ZVN0ZEZ1bmN0
aW9uQ2VsbCB0byBjb3JyZWN0bHkgZGVzdHJveSB0aGUgaGVhcCBhbGxvY2F0ZWQgc3RkOjpmdW5j
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDIwNjEzYmM2NmQxYTdiZTEwNzVlNGE0Y2Y0MDE1MWE3OTcyMjdl
NWQuLjIwMTg3MWQ2MWVhYmEwZWYwNTVkY2IwYTU1NWZmYmY2MGRkZDUxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0NiBAQAorMjAxNS0wOC0yOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNv
bT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250cm9sbGVyIHNob3VsZCBz
dXBwb3J0IG11bHRpcGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5n
ZSBmcm9tIHRoaXMgcGF0Y2guIFRlYXJkb3duIHNjZW5hcmlvcyBhcmUKKyAgICAgICAgY292ZXJl
ZCBieSBleGlzdGluZyBwcm90b2NvbCBhbmQgaW5zcGVjdG9yIHRlc3RzIHJ1bm5pbmcgdW5kZXIg
RFJUIGFuZCBXS1RSLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kUm91dGVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5o
OiBTdG9wIHVzaW5nIGZvcndhcmRlZCB0eXBlcy4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6aGFzTG9jYWxGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjpoYXNSZW1vdGVGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RBbGxGcm9udGVuZHMpOiBBZGRlZC4g
RGlzY29ubmVjdHMgYWxsCisgICAgICAgIGZyb250ZW5kcyBhbmQgc2lnbmFscyBEaXNjb25uZWN0
UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRp
c3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaDogQWRkIGRlZmF1bHQgdmFsdWUgZm9yIGlzQXV0b21hdGljSW5zcGVjdGlv
bi4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOiBVc2UgYSByb3V0ZXIgd2l0aCBhIHNpbmds
ZXRvbiBjaGFubmVsCisgICAgICAgIHRoYXQgZm9yd2FyZHMgbWVzc2FnZXMgb3ZlciB0byB0aGUg
bWFpbiBwYWdlLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9u
dGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBwYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VEZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VEZWJ1Z2dhYmxl
Lmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOiBDbGVhciB0aGUgZnJvbnRlbmQg
Y2xpZW50IGJlZm9yZSBkaXNjb25uZWN0aW5nIGZyb250ZW5kIGNoYW5uZWwuCisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6Om9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKToKKwogMjAx
NS0wOC0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAg
ICBNb3ZlIHN0ZDo6ZnVuY3Rpb24gZnJvbSBKU0Z1bmN0aW9uIGludG8gTmF0aXZlU3RkRnVuY3Rp
b25DZWxsIHRvIGNvcnJlY3RseSBkZXN0cm95IHRoZSBoZWFwIGFsbG9jYXRlZCBzdGQ6OmZ1bmN0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZDdiYzhhMjk1YWM4NTI0OTBkZGVjNzcwNmQyNWI2Y2Q3
MTg1Y2FlMi4uNmIzMjBhZDk2MzM5ZTVmYTJhOGJlMGVkNmFlOTQ3NTExODVlYTFjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTA4LTI4ICBCcmlhbiBCdXJnICA8YmJ1
cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEluc3BlY3RvckNvbnRyb2xs
ZXIgc2hvdWxkIHN1cHBvcnQgbXVsdGlwbGUgZnJvbnRlbmQgY2hhbm5lbHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODUzOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgbm90aWZ5SW5z
cGVjdG9yQ29udHJvbGxlciBmbGFnIGZyb20gY2xvc2VXaW5kb3cuIFNpbmNlIEluc3BlY3RvckNs
aWVudHMKKyAgICAgICAgbXVzdCBub3cgbWFudWFsbHkgZGlzY29ubmVjdCB0aGVpciBGcm9udGVu
ZENoYW5uZWwocyksIHdlIHNob3VsZCBhbHdheXMKKyAgICAgICAgcGVyZm9ybSB0aGUgdGVhcmRv
d24gdGhhdCB3YXMgZ3VhcmRlZCBieSB0aGlzIGZsYWcuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmJyaW5nRnJv
bnRlbmRUb0Zyb250KTogQWRkIGEgbWlzc2luZyBhc3NlcnRpb24uCisgICAgICAgIChXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6Y2xvc2VXaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ6OmRpc2Nvbm5lY3RGcm9tQmFja2VuZCk6CisgICAgICAgICgtW1dlYklu
c3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgd2luZG93U2hvdWxkQ2xvc2U6XSk6CisgICAgICAgICgt
W1dlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgZGVzdHJveUluc3BlY3RvclZpZXddKTogQWx3
YXlzIGNsZWFyIHRoZSBmcm9udGVuZCBjbGllbnQuCisgICAgICAgICgtW1dlYkluc3BlY3Rvcldp
bmRvd0NvbnRyb2xsZXIgZGVzdHJveUluc3BlY3RvclZpZXc6XSk6IFJlbmFtZWQgdG8gYWJvdmUu
CisKIDIwMTUtMDgtMjggIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAg
IENyYXNoIGluIFdLMSB3aGVuIGNsaWNraW5nIG9uIGEgUERGIGluc2lkZSBhbiBpZnJhbWUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwppbmRleCBhYzIyNzYwYjU1YzAyODgzMWY5ZWRhYTY4YzZkMmRiYTYxMzFhYjhl
Li5hOWYwZTBiYTlmNmViZGFlMDBiYzAyZjAzMWMzMjhlNjdhZWMyOTE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTUtMDgtMjggIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yQ29udHJvbGxlciBzaG91
bGQgc3VwcG9ydCBtdWx0aXBsZSBmcm9udGVuZCBjaGFubmVscworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTM4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBub3RpZnlJbnNwZWN0b3JD
b250cm9sbGVyIGZsYWcgZnJvbSBjbG9zZVdpbmRvdy4gU2luY2UgSW5zcGVjdG9yQ2xpZW50cwor
ICAgICAgICBtdXN0IG5vdyBtYW51YWxseSBkaXNjb25uZWN0IHRoZWlyIEZyb250ZW5kQ2hhbm5l
bChzKSwgd2Ugc2hvdWxkIGFsd2F5cworICAgICAgICBwZXJmb3JtIHRoZSB0ZWFyZG93biB0aGF0
IHdhcyBndWFyZGVkIGJ5IHRoaXMgZmxhZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3Nl
SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
On5XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDo6Y2xvc2VXaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OmRlc3Ryb3lJbnNwZWN0b3JWaWV3KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaDoKKwogMjAxNS0wOC0yNyAgQnJpYW4gQnVyZyAgPGJidXJnQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBGcm9udGVuZENoYW5uZWwgc2hvdWxk
IGtub3cgaXRzIG93biBjb25uZWN0aW9uIHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1OTI1MzdlM2JhOGE3
ZWYyMGRjNmFkMDExYjQ4OGY2NDA0NDU0ZGI2Li5mYmJkZjJkM2Y0NzllMDA1MjM0ZjQxYmFjMTMz
NzlmMTA0ZTkwYWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTUtMDgtMjggIEJy
aWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW5z
cGVjdG9yQ29udHJvbGxlciBzaG91bGQgc3VwcG9ydCBtdWx0aXBsZSBmcm9udGVuZCBjaGFubmVs
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTM4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwbGlj
aXRseSBkaXNjb25uZWN0IHRoZSBmcm9udGVuZCBjaGFubmVsIHdoZW4gY2xvc2luZyB0aGUgZnJv
bnRlbmQuCisKKyAgICAgICAgUmVuYW1lIGNyZWF0ZUluc3BlY3RvclBhZ2UvY2xvc2VGcm9udGVu
ZCB0byB0aGUgc3ltbWV0cmljIGFuZCB1bmFtYmlndW91cworICAgICAgICB7b3BlbixjbG9zZX1G
cm9udGVuZENvbm5lY3Rpb24gaW4gdGhlIFdlYkluc3BlY3RvciBjbGFzcy4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRl
bmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lmg6IFN0b3AgdXNpbmcgYSBmb3J3YXJkZWQgdHlwZS4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
OjpvcGVuRnJvbnRlbmRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
OjpjbG9zZUZyb250ZW5kQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
cjo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3I6OnJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yOjpjcmVhdGVJbnNwZWN0b3JQYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmg6CisKIDIwMTUtMDgtMjggIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gTWFrZSB0aGUgQWxsb3dzSW5saW5l
TWVkaWFQbGF5YmFjayBwcmVmZXJlbmNlIHdvcmsgaW4gV2ViS2l0IC8gV2ViS2l0Mi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiMzNkMDE0NDhhYTMyMTRlODAyZGI4MWQw
YTk1MmQ2NTM3ZjAxYTQ3Li5hYmEyYWM2NDliNzNiZTkyYjIyNjc2MjJkYmNiNzZhOGUxNDQ4ZmMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zMjIsNiArMzIyLDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmNwcAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKICAgICBp
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKKyAgICBpbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRSb3V0ZXIuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCiAgICAgaW5zcGVj
dG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qCmluZGV4IGY4MDY3NGQ5MmMwZDMwNmNmOGQ0Njc3OWIxODk5MjZmM2Yz
M2I3NDguLjU2NzkyN2IzMWU1YjVjNDY5NDJjOTNmNTE1YmJmYTlhZDY0NWY5YTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNTk0LDYgKzU5NCw3IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFnZW50
UmVnaXN0cnkuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxKU0luamVjdGVkU2NyaXB0SG9zdC5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSlNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGUuY3BwIiAvPgpAQCAtMTM4Myw2ICsxMzg0LDcgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckVudmlyb25t
ZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0
b3JcSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxKU0luamVjdGVkU2NyaXB0SG9zdC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgi
IC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEzYzRhZWMzZDMxZTQzMjA3ZjI2
YTVjODRkZTQzNzU4ZGFhOGI1MWYuLmFkMzA0OTU3NTYxOGZjZmQzNDFiNTNlM2RjMDE5OGQ4OGY3
YjBmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTkyLDYgKzExOTIsOCBA
QAogCQk5OUU0NUEyNjE4QTFCMjU5MDAyNkQ4OEYgLyogRW5jb2RlZFZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU0NUEyMTE4QTFCMjU5MDAy
NkQ4OEYgLyogRW5jb2RlZFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTlFNDVBMjcxOEExQjI1OTAwMjZEODhGIC8qIElucHV0Q3Vyc29y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU0NUEy
MjE4QTFCMjU5MDAyNkQ4OEYgLyogSW5wdXRDdXJzb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OUU0NUEyODE4QTFCMjU5MDAyNkQ4OEYgLyog
Tm9uZGV0ZXJtaW5pc3RpY0lucHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5OUU0NUEyMzE4QTFCMjU5MDAyNkQ4OEYgLyogTm9uZGV0ZXJtaW5pc3Rp
Y0lucHV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJOTlGMUE2RkUxQjhFNkQ5NDAwNDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RjFBNkZD
MUI4RTZEOTQwMDQ2M0IyNiAvKiBJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHAgKi87IH07CisJ
CTk5RjFBNkZGMUI4RTZEOTQwMDQ2M0IyNiAvKiBJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlGMUE2RkQxQjhF
NkQ5NDAwNDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUU3Mjk0MDcxOTBGMDFBNTAwMUE5
MUI1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3ODYzNkMwRDlCRUVDMzAwRDc0RTc1IC8qIEluaXRpYWxp
emVUaHJlYWRpbmcuY3BwICovOyB9OwogCQk5RTcyOTQwODE5MEYwMjFFMDAxQTkxQjUgLyogSW5p
dGlhbGl6ZUxMVk1QT1NJWC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkNFRkFDNTE4MDVFNzU1MDA0NzJDRTQgLyogSW5pdGlhbGl6ZUxMVk1QT1NJ
WC5jcHAgKi87IH07CiAJCTlFNzI5NDBCMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RTcyOTQwQTE5
MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oICovOyB9OwpAQCAtMzA1Myw2ICszMDU1LDgg
QEAKIAkJOTlFNDVBMjExOEExQjI1OTAwMjZEODhGIC8qIEVuY29kZWRWYWx1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbmNvZGVkVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTlFNDVBMjIxOEExQjI1OTAwMjZEODhGIC8qIElucHV0Q3Vyc29yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElucHV0Q3Vyc29yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5RTQ1QTIzMThBMUIyNTkwMDI2RDg4RiAvKiBOb25kZXRl
cm1pbmlzdGljSW5wdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9uZGV0
ZXJtaW5pc3RpY0lucHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5RjFBNkZD
MUI4RTZEOTQwMDQ2M0IyNiAvKiBJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5RjFBNkZEMUI4RTZEOTQwMDQ2M0IyNiAv
KiBJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5QjQ5NTRFODFBNjY0MERCMDAyODE1QTYgLyogUGFyc2VyRnVuY3Rpb25JbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBhcnNlckZ1bmN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5RTcyOTQwOTE5MEYwMzA2MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1bmRsZVBhdGgubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlFNzI5NDBBMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQ
YXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1bmRsZVBhdGguaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU3MjQsNiArNTcyOCw4IEBACiAJCQkJQTU5M0NG
N0IxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi8sCiAJ
CQkJQTVEMEExQkExODYyMzAxQjAwQzdCNDk2IC8qIEluc3BlY3RvckVudmlyb25tZW50LmggKi8s
CiAJCQkJQTU5NDU1OTQxODI0NzlFQjAwQ0MzODQzIC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bC5oICovLAorCQkJCTk5RjFBNkZDMUI4RTZEOTQwMDQ2M0IyNiAvKiBJbnNwZWN0b3JGcm9udGVu
ZFJvdXRlci5jcHAgKi8sCisJCQkJOTlGMUE2RkQxQjhFNkQ5NDAwNDYzQjI2IC8qIEluc3BlY3Rv
ckZyb250ZW5kUm91dGVyLmggKi8sCiAJCQkJQTU1RDkzQUIxODUxNEY3OTAwNDAwREVEIC8qIElu
c3BlY3RvclByb3RvY29sVHlwZXMuaCAqLywKIAkJCQlBNTkzQ0Y4MDE4NDAzNzcxMDBCRkNFMjcg
LyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLywKIAkJCQlBNTkzQ0Y4MTE4NDAzNzcxMDBCRkNFMjcg
LyogSW5zcGVjdG9yVmFsdWVzLmggKi8sCkBAIC01ODg2LDYgKzU4OTIsNyBAQAogCQkJCUExQTAw
OUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY4OThGMzIxQjI3Njg5RjAwODNBMzNDIC8qIERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlv
blBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyog
QVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OUYxQTZGRjFCOEU2RDk0MDA0NjNC
MjYgLyogSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1
MDI4MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUyQzA2MTFGMUFBNTFFMUMwMEI0QURCQSAvKiBSdW50aW1lVHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkU0RDU1QjgxQUU3MTZDQTAwNTJFNDU5IC8qIEl0ZXJhdGlvblN0YXR1cy5oIGlu
IEhlYWRlcnMgKi8sCkBAIC03OTE0LDYgKzc5MjEsNyBAQAogCQkJCUMyMjU0OTQzMTVGN0RCQUEw
MDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwNDAyQzBF
NkE3NjQwMDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUz
RUY4ODc0MUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTk5RjFBNkZFMUI4RTZEOTQwMDQ2M0IyNiAvKiBJbnNwZWN0b3JGcm9u
dGVuZFJvdXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGMkI5RTE3MzA2QzhEMDA3REJE
QTUgLyogU291cmNlQ29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ5M0FGQTE2RDBDQUQz
MDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMzRThE
MUMxQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCmluZGV4IDRkNDVkYTk5ZTFiZjY2NDc1Mzdk
ODRjMTQxMzUyMjkzOWIwOTgwODkuLjA5MzZiNDExMWMyNDEzMzRkNzQ5YzIyNDFkM2I2YzE0NTE4
NjkwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIKIAogI2luY2x1ZGUgIkluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kUm91dGVy
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSA8d3RmL1RlbXBvcmFy
eUNoYW5nZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTM1LDYgKzM2LDE1
IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCitTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0
Y2hlcjo6U3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXImIGJh
Y2tlbmREaXNwYXRjaGVyKQorICAgIDogbV9iYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0
Y2hlcikKK3sKK30KKworU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXI6On5TdXBwbGVtZW50
YWxCYWNrZW5kRGlzcGF0Y2hlcigpCit7Cit9CisKIEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFj
a0Jhc2U6OkNhbGxiYWNrQmFzZShSZWY8QmFja2VuZERpc3BhdGNoZXI+JiYgYmFja2VuZERpc3Bh
dGNoZXIsIGxvbmcgcmVxdWVzdElkKQogICAgIDogbV9iYWNrZW5kRGlzcGF0Y2hlcihXVEY6Om1v
dmUoYmFja2VuZERpc3BhdGNoZXIpKQogICAgICwgbV9yZXF1ZXN0SWQocmVxdWVzdElkKQpAQCAt
NjksMTUgKzc5LDI4IEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6c2Vu
ZFN1Y2Nlc3MoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBwYXJ0CiAgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlci0+c2VuZFJlc3BvbnNlKG1fcmVxdWVzdElkLCBXVEY6Om1vdmUocGFydGlhbE1lc3Nh
Z2UpKTsKIH0KIAotUmVmPEJhY2tlbmREaXNwYXRjaGVyPiBCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQorQmFja2VuZERpc3BhdGNoZXI6
OkJhY2tlbmREaXNwYXRjaGVyKFJlZjxGcm9udGVuZFJvdXRlcj4mJiByb3V0ZXIpCisgICAgOiBt
X2Zyb250ZW5kUm91dGVyKFdURjo6bW92ZShyb3V0ZXIpKQoreworfQorCitSZWY8QmFja2VuZERp
c3BhdGNoZXI+IEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoUmVmPEZyb250ZW5kUm91dGVyPiYm
IHJvdXRlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYWNrZW5kRGlzcGF0Y2hlcihm
cm9udGVuZENoYW5uZWwpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYWNrZW5kRGlzcGF0
Y2hlcihXVEY6Om1vdmUocm91dGVyKSkpOworfQorCitib29sIEJhY2tlbmREaXNwYXRjaGVyOjpp
c0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRSb3V0ZXItPmhhc0Zyb250
ZW5kcygpOwogfQogCiB2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpyZWdpc3RlckRpc3BhdGNoZXJG
b3JEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4sIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRj
aGVyKiBkaXNwYXRjaGVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9kaXNwYXRjaGVycy5hZGQo
ZG9tYWluLCBkaXNwYXRjaGVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0Lmlz
TmV3RW50cnkpOworICAgIEFTU0VSVF9BUkcoZGlzcGF0Y2hlciwgZGlzcGF0Y2hlcik7CisKKyAg
ICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0ODQ5Mj4gQWdlbnRzIHNob3VsZCBv
bmx5IHJlZ2lzdGVyIHdpdGggdGhlIGJhY2tlbmQgb25jZSwKKyAgICAvLyBhbmQgd2Ugc2hvdWxk
IHJlLWFkZCB0aGUgYXNzZXJ0aW9uIHRoYXQgb25seSBvbmUgZGlzcGF0Y2hlciBpcyByZWdpc3Rl
cmVkIHBlciBkb21haW4uCisgICAgbV9kaXNwYXRjaGVycy5zZXQoZG9tYWluLCBkaXNwYXRjaGVy
KTsKIH0KIAogdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQpAQCAtMTY1LDkgKzE4OCw2IEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OmRpc3Bh
dGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6c2Vu
ZFJlc3BvbnNlKGxvbmcgcmVxdWVzdElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIHJlc3Vs
dCkKIHsKLSAgICBpZiAoIW1fZnJvbnRlbmRDaGFubmVsKQotICAgICAgICByZXR1cm47Ci0KICAg
ICBBU1NFUlQoIW1fcHJvdG9jb2xFcnJvcnMuc2l6ZSgpKTsKIAogICAgIC8vIFRoZSBKU09OLVJQ
QyAyLjAgc3BlY2lmaWNhdGlvbiByZXF1aXJlcyB0aGF0IHRoZSAiZXJyb3IiIG1lbWJlciBoYXZl
IHRoZSB2YWx1ZSAnbnVsbCcKQEAgLTE3NSw3ICsxOTUsNyBAQCB2b2lkIEJhY2tlbmREaXNwYXRj
aGVyOjpzZW5kUmVzcG9uc2UobG9uZyByZXF1ZXN0SWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiYgcgogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3BvbnNlTWVzc2FnZSA9IEluc3BlY3Rv
ck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgcmVzcG9uc2VNZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlM
aXRlcmFsKCJyZXN1bHQiKSwgcmVzdWx0KTsKICAgICByZXNwb25zZU1lc3NhZ2UtPnNldEludGVn
ZXIoQVNDSUlMaXRlcmFsKCJpZCIpLCByZXF1ZXN0SWQpOwotICAgIG1fZnJvbnRlbmRDaGFubmVs
LT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQocmVzcG9uc2VNZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7
CisgICAgbV9mcm9udGVuZFJvdXRlci0+c2VuZFJlc3BvbnNlKHJlc3BvbnNlTWVzc2FnZS0+dG9K
U09OU3RyaW5nKCkpOwogfQogCiB2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUGVuZGluZ0Vy
cm9ycygpCkBAIC0xOTAsOSArMjEwLDYgQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFBl
bmRpbmdFcnJvcnMoKQogICAgICAgICAtMzIwMDAsIC8vIFNlcnZlckVycm9yCiAgICAgfTsKIAot
ICAgIGlmICghbV9mcm9udGVuZENoYW5uZWwpCi0gICAgICAgIHJldHVybjsKLSAgICAKICAgICAv
LyBUbyBjb25zdHJ1Y3QgdGhlIGVycm9yIG9iamVjdCwgb25seSB1c2UgdGhlIGxhc3QgZXJyb3In
cyBjb2RlIGFuZCBtZXNzYWdlLgogICAgIC8vIFBlciBKU09OLVJQQyAyLjAsIFNlY3Rpb24gNS4x
LCB0aGUgJ2RhdGEnIG1lbWJlciBtYXkgY29udGFpbiBuZXN0ZWQgZXJyb3JzLAogICAgIC8vIGJ1
dCBvbmx5IG9uZSB0b3AtbGV2ZWwgRXJyb3Igb2JqZWN0IHNob3VsZCBiZSBzZW50IHBlciByZXF1
ZXN0LgpAQCAtMjI3LDcgKzI0NCw3IEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnNlbmRQZW5k
aW5nRXJyb3JzKCkKICAgICAgICAgbWVzc2FnZS0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJpZCIp
LCBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpKTsKICAgICB9CiAKLSAgICBtX2Zyb250ZW5kQ2hhbm5l
bC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKKyAgICBt
X2Zyb250ZW5kUm91dGVyLT5zZW5kUmVzcG9uc2UobWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOwog
CiAgICAgbV9wcm90b2NvbEVycm9ycy5jbGVhcigpOwogICAgIG1fY3VycmVudFJlcXVlc3RJZCA9
IE51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKaW5kZXggZjIyNDgyZDliMGY5NTEyODk3
Mzk1MWNmODMyMzI3ZjBhYjM4MTUwMy4uYzYxY2YxZDBjZDNmODU0N2U0ZDU2MDgyODBkMDBhYzg3
N2U5NWMwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaApAQCAtMzUsMTUgKzM1LDE0IEBACiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgQmFja2VuZERpc3BhdGNoZXI7Ci1jbGFzcyBG
cm9udGVuZENoYW5uZWw7CitjbGFzcyBGcm9udGVuZFJvdXRlcjsKIAogdHlwZWRlZiBTdHJpbmcg
RXJyb3JTdHJpbmc7CiAKIGNsYXNzIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8U3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXI+IHsKIHB1YmxpYzoK
LSAgICBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlciYgYmFj
a2VuZERpc3BhdGNoZXIpCi0gICAgICAgIDogbV9iYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlz
cGF0Y2hlcikgeyB9Ci0gICAgdmlydHVhbCB+U3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIo
KSB7IH0KKyAgICBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hl
ciYpOworICAgIHZpcnR1YWwgflN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIG1ldGhv
ZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSA9IDA7CiBwcm90ZWN0ZWQ6CiAgICAg
UmVmPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwpAQCAtNTEsNyArNTAs
NyBAQCBwcm90ZWN0ZWQ6CiAKIGNsYXNzIEJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIFJlZkNv
dW50ZWQ8QmFja2VuZERpc3BhdGNoZXI+IHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmPEJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoRnJvbnRlbmRDaGFubmVsKik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4gY3Jl
YXRlKFJlZjxGcm9udGVuZFJvdXRlcj4mJik7CiAKICAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFU
RSBDYWxsYmFja0Jhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxsYmFja0Jhc2U+IHsKICAgICBw
dWJsaWM6CkBAIC02OSw4ICs2OCw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBtX2FscmVhZHlT
ZW50IHsgZmFsc2UgfTsKICAgICB9OwogCi0gICAgdm9pZCBjbGVhckZyb250ZW5kKCkgeyBtX2Zy
b250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7IH0KLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyBy
ZXR1cm4gISFtX2Zyb250ZW5kQ2hhbm5lbDsgfQorICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsK
IAogICAgIGJvb2wgaGFzUHJvdG9jb2xFcnJvcnMoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvY29s
RXJyb3JzLnNpemUoKSA+IDA7IH0KIApAQCAtMTA0LDEyICsxMDIsOSBAQCBwdWJsaWM6CiAgICAg
UmVmUHRyPEluc3BlY3RvckFycmF5PiBnZXRBcnJheShJbnNwZWN0b3JPYmplY3QqLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQpOwogCiBwcml2YXRlOgotICAgIEJhY2tlbmRE
aXNwYXRjaGVyKEZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCkKLSAgICAgICAgOiBtX2Zyb250ZW5k
Q2hhbm5lbChjaGFubmVsKQotICAgIHsKLSAgICB9CisgICAgQmFja2VuZERpc3BhdGNoZXIoUmVm
PEZyb250ZW5kUm91dGVyPiYmKTsKIAotICAgIEZyb250ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENo
YW5uZWw7CisgICAgUmVmPEZyb250ZW5kUm91dGVyPiBtX2Zyb250ZW5kUm91dGVyOwogICAgIEhh
c2hNYXA8U3RyaW5nLCBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcio+IG1fZGlzcGF0Y2hl
cnM7CiAKICAgICAvLyBQcm90b2NvbCBlcnJvcnMgcmVwb3J0ZWQgZm9yIHRoZSB0b3AtbGV2ZWwg
cmVxdWVzdCBiZWluZyBwcm9jZXNzZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI4N2E2NzhhNjVlZmJlYjYwZjVmZGQ4YjNjMTIyOTVmZGQ2ZWQzMTAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91
dGVyLmNwcApAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oIgorCisjaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKwor
bmFtZXNwYWNlIEluc3BlY3RvciB7CisKK1JlZjxGcm9udGVuZFJvdXRlcj4gRnJvbnRlbmRSb3V0
ZXI6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJvbnRlbmRSb3V0ZXIp
OworfQorCit2b2lkIEZyb250ZW5kUm91dGVyOjpjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRDaGFu
bmVsKiBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVF9BUkcoY29ubmVjdGlvbiwgY29ubmVjdGlv
bik7CisKKyAgICBpZiAobV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uKSkgeworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fY29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24pOworfQorCit2b2lkIEZyb250ZW5kUm91
dGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRDaGFubmVsKiBjb25uZWN0aW9uKQorewor
ICAgIEFTU0VSVF9BUkcoY29ubmVjdGlvbiwgY29ubmVjdGlvbik7CisKKyAgICBpZiAoIW1fY29u
bmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbikpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2Nvbm5lY3Rpb25zLnJlbW92
ZUZpcnN0KGNvbm5lY3Rpb24pOworfQorCit2b2lkIEZyb250ZW5kUm91dGVyOjpkaXNjb25uZWN0
QWxsRnJvbnRlbmRzKCkKK3sKKyAgICBtX2Nvbm5lY3Rpb25zLmNsZWFyKCk7Cit9CisKKy8vIEZJ
WE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTQ4NDkyPiByZW1vdmUgdGhpcyBtZXRob2Qgb25j
ZSBhZ2VudHMgbW92ZSB0byB1c2luZyBGcm9udGVuZFJvdXRlciBkaXJlY3RseS4KK0Zyb250ZW5k
Q2hhbm5lbCogRnJvbnRlbmRSb3V0ZXI6OmxlYWtDaGFubmVsKCkgY29uc3QKK3sKKyAgICBpZiAo
bV9jb25uZWN0aW9ucy5zaXplKCkpCisgICAgICAgIHJldHVybiBtX2Nvbm5lY3Rpb25zLmF0KDAp
OworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgRnJvbnRlbmRSb3V0ZXI6Omhhc0xv
Y2FsRnJvbnRlbmQoKSBjb25zdAoreworICAgIGZvciAoYXV0byogY29ubmVjdGlvbiA6IG1fY29u
bmVjdGlvbnMpIHsKKyAgICAgICAgaWYgKGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25UeXBlKCkgPT0g
RnJvbnRlbmRDaGFubmVsOjpDb25uZWN0aW9uVHlwZTo6TG9jYWwpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRnJvbnRlbmRS
b3V0ZXI6Omhhc1JlbW90ZUZyb250ZW5kKCkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8qIGNvbm5l
Y3Rpb24gOiBtX2Nvbm5lY3Rpb25zKSB7CisgICAgICAgIGlmIChjb25uZWN0aW9uLT5jb25uZWN0
aW9uVHlwZSgpID09IEZyb250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGU6OlJlbW90ZSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBGcm9udGVuZFJvdXRlcjo6c2VuZEV2ZW50KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgY29u
c3QKK3sKKyAgICBmb3IgKGF1dG8qIGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zKQorICAgICAg
ICBjb25uZWN0aW9uLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSk7Cit9CisKK3ZvaWQg
RnJvbnRlbmRSb3V0ZXI6OnNlbmRSZXNwb25zZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0
Cit7CisgICAgLy8gRklYTUU6IHNlbmQgcmVzcG9uc2VzIHRvIHRoZSBhcHByb3ByaWF0ZSBmcm9u
dGVuZC4KKyAgICBmb3IgKGF1dG8qIGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zKQorICAgICAg
ICBjb25uZWN0aW9uLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNTJjZDAx
YWU1ZTg0YTExZDhhMGNiMTFjOTUxNDJhNzI5NDlhZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmgKQEAg
LTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5zcGVjdG9yRnJvbnRlbmRSb3V0
ZXJfaAorI2RlZmluZSBJbnNwZWN0b3JGcm9udGVuZFJvdXRlcl9oCisKKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJ
bnNwZWN0b3IgeworCitjbGFzcyBGcm9udGVuZENoYW5uZWw7CisKK2NsYXNzIEpTX0VYUE9SVF9Q
UklWQVRFIEZyb250ZW5kUm91dGVyIDogcHVibGljIFJlZkNvdW50ZWQ8RnJvbnRlbmRSb3V0ZXI+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEZyb250ZW5kUm91dGVyPiBjcmVhdGUoKTsKKwor
ICAgIGJvb2wgaGFzRnJvbnRlbmRzKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9ucy5zaXpl
KCkgPiAwOyB9CisgICAgYm9vbCBoYXNMb2NhbEZyb250ZW5kKCkgY29uc3Q7CisgICAgYm9vbCBo
YXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0OworCisgICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoRnJv
bnRlbmRDaGFubmVsKik7CisgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRDaGFu
bmVsKik7CisgICAgdm9pZCBkaXNjb25uZWN0QWxsRnJvbnRlbmRzKCk7CisKKyAgICAvLyBGSVhN
RTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0ODQ5Mj4gcmVtb3ZlIHRoaXMgbWV0aG9kIG9uY2Ug
YWdlbnRzIG1vdmUgdG8gdXNpbmcgRnJvbnRlbmRSb3V0ZXIgZGlyZWN0bHkuCisgICAgRnJvbnRl
bmRDaGFubmVsKiBsZWFrQ2hhbm5lbCgpIGNvbnN0OworCisgICAgdm9pZCBzZW5kRXZlbnQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKSBjb25zdDsKKyAgICB2b2lkIHNlbmRSZXNwb25zZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpIGNvbnN0OworCitwcml2YXRlOgorICAgIFZlY3RvcjxGcm9udGVuZENo
YW5uZWwqLCAyPiBtX2Nvbm5lY3Rpb25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9y
CisKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JGcm9udGVuZFJvdXRlcl9oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDExZDg2ZWQzMjk3NTAzMTcz
NzE2YTg1ZDkzNTgwOGZjNjc3YjVkNDguLmY2NjQ3ZWRlZTczNWMyOGY5YWNhMjg0NDBmYTY0MGE1
NDdiYmI2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudC5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCIKICNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50
LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmgiCkBAIC02Myw3ICs2
NCw4IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKICAgICA6IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKICAgICAs
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8SW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyPigqdGhpcywgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCi0gICAgLCBtX2Zy
b250ZW5kQ2hhbm5lbChudWxscHRyKQorICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJv
dXRlcjo6Y3JlYXRlKCkpCisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogICAgICwgbV9leGVjdXRp
b25TdG9wd2F0Y2goU3RvcHdhdGNoOjpjcmVhdGUoKSkKICAgICAsIG1faW5jbHVkZU5hdGl2ZUNh
bGxTdGFja1dpdGhFeGNlcHRpb25zKHRydWUpCiAgICAgLCBtX2lzQXV0b21hdGljSW5zcGVjdGlv
bihmYWxzZSkKQEAgLTk4LDIyICsxMDAsMjAgQEAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyOjp+SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKCkKIAogdm9pZCBKU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6Omdsb2JhbE9iamVjdERlc3Ryb3llZCgpCiB7
Ci0gICAgZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdl
dERlc3Ryb3llZCk7CisgICAgZGlzY29ubmVjdEFsbEZyb250ZW5kcygpOwogCiAgICAgbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXItPmRpc2Nvbm5lY3QoKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqIGZy
b250ZW5kQ2hhbm5lbCwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pCiB7Ci0gICAgQVNTRVJU
KCFtX2Zyb250ZW5kQ2hhbm5lbCk7Ci0gICAgQVNTRVJUKCFtX2JhY2tlbmREaXNwYXRjaGVyKTsK
KyAgICBBU1NFUlRfQVJHKGZyb250ZW5kQ2hhbm5lbCwgZnJvbnRlbmRDaGFubmVsKTsKIAogICAg
IG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gaXNBdXRvbWF0aWNJbnNwZWN0aW9uOwogCi0gICAg
bV9mcm9udGVuZENoYW5uZWwgPSBmcm9udGVuZENoYW5uZWw7Ci0gICAgbV9iYWNrZW5kRGlzcGF0
Y2hlciA9IEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoZnJvbnRlbmRDaGFubmVsKTsKKyAgICBt
X2Zyb250ZW5kUm91dGVyLT5jb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVsKTsKIAotICAg
IG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChmcm9udGVuZENoYW5uZWwsIG1f
YmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChmcm9udGVuZENoYW5uZWwsICZtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsK
IAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogICAgIG1faW5z
cGVjdG9yQWdlbnQtPmFjdGl2YXRlRXh0cmFEb21haW5zKG1fYWdlbnRzLmV4dHJhRG9tYWlucygp
KTsKQEAgLTEyMywxNiArMTIzLDI3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuCiAjZW5kaWYK
IH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RG
cm9udGVuZChEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKK3ZvaWQgSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwpCiB7Ci0gICAgaWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkKLSAgICAgICAgcmV0
dXJuOworICAgIEFTU0VSVF9BUkcoZnJvbnRlbmRDaGFubmVsLCBmcm9udGVuZENoYW5uZWwpOwor
CisgICAgbV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJl
YXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKworICAgIG1fZnJvbnRlbmRSb3V0ZXItPmRpc2Nv
bm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwpOworCisgICAgbV9pc0F1dG9tYXRpY0luc3Bl
Y3Rpb24gPSBmYWxzZTsKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENI
RVJTKQorICAgIGlmIChtX2F1Z21lbnRpbmdDbGllbnQpCisgICAgICAgIG1fYXVnbWVudGluZ0Ns
aWVudC0+aW5zcGVjdG9yRGlzY29ubmVjdGVkKCk7CisjZW5kaWYKK30KIAotICAgIG1fYWdlbnRz
LndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKHJlYXNvbik7Cit2b2lkIEpTR2xvYmFsT2Jq
ZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEFsbEZyb250ZW5kcygpCit7CisgICAg
bV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbjo6
SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkKTsKIAotICAgIG1fYmFja2VuZERpc3BhdGNoZXItPmNs
ZWFyRnJvbnRlbmQoKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLSAgICBt
X2Zyb250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7CisgICAgbV9mcm9udGVuZFJvdXRlci0+ZGlzY29u
bmVjdEFsbEZyb250ZW5kcygpOwogCiAgICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxz
ZTsKIApAQCAtMTQ0LDE1ICsxNTUsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uIHJlYXMKIAogdm9p
ZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZyb21G
cm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgaWYgKG1fYmFja2VuZERpc3Bh
dGNoZXIpCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPmRpc3BhdGNoKG1lc3NhZ2UpOwor
ICAgIG1fYmFja2VuZERpc3BhdGNoZXItPmRpc3BhdGNoKG1lc3NhZ2UpOwogfQogCiB2b2lkIEpT
R2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6cGF1c2UoKQogewotICAgIGlmICghbV9m
cm9udGVuZENoYW5uZWwpCi0gICAgICAgIHJldHVybjsKLQogICAgIEVycm9yU3RyaW5nIGR1bW15
RXJyb3I7CiAgICAgbV9kZWJ1Z2dlckFnZW50LT5lbmFibGUoZHVtbXlFcnJvcik7CiAgICAgbV9k
ZWJ1Z2dlckFnZW50LT5wYXVzZShkdW1teUVycm9yKTsKQEAgLTI2MiwxMyArMjY5LDExIEBAIHZv
aWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjphcHBlbmRFeHRyYUFnZW50KHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0CiB7CiAgICAgU3RyaW5nIGRvbWFpbk5hbWUgPSBhZ2VudC0+
ZG9tYWluTmFtZSgpOwogCi0gICAgaWYgKG1fZnJvbnRlbmRDaGFubmVsKQotICAgICAgICBhZ2Vu
dC0+ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKG1fZnJvbnRlbmRDaGFubmVsLCBtX2JhY2tl
bmREaXNwYXRjaGVyLmdldCgpKTsKKyAgICBhZ2VudC0+ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKG1fZnJvbnRlbmRSb3V0ZXItPmxlYWtDaGFubmVsKCksICZtX2JhY2tlbmREaXNwYXRjaGVy
LmdldCgpKTsKIAogICAgIG1fYWdlbnRzLmFwcGVuZEV4dHJhQWdlbnQoV1RGOjptb3ZlKGFnZW50
KSk7CiAKLSAgICBpZiAobV9mcm9udGVuZENoYW5uZWwpCi0gICAgICAgIG1faW5zcGVjdG9yQWdl
bnQtPmFjdGl2YXRlRXh0cmFEb21haW4oZG9tYWluTmFtZSk7CisgICAgbV9pbnNwZWN0b3JBZ2Vu
dC0+YWN0aXZhdGVFeHRyYURvbWFpbihkb21haW5OYW1lKTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVj
dG9yQ29udHJvbGxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA2ZTNmOTRlYWMyMzRlYzg5ODM2OThj
ZWFjNzNmMTZlMDM2MDRjYmNmLi5hYWUzMmUzYzg5OTNiZjcwN2U2NmI3ZjUyMDU4MjMyYTczYTcz
OTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFs
T2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTUzLDYgKzUz
LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIEJhY2tlbmREaXNwYXRjaGVyOwog
Y2xhc3MgRnJvbnRlbmRDaGFubmVsOworY2xhc3MgRnJvbnRlbmRSb3V0ZXI7CiBjbGFzcyBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKIGNsYXNzIEluc3BlY3Rv
ckNvbnNvbGVBZ2VudDsKQEAgLTczLDcgKzc0LDkgQEAgcHVibGljOgogICAgIH5KU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXIoKTsKIAogICAgIHZvaWQgY29ubmVjdEZyb250ZW5kKEZy
b250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKLSAgICB2b2lkIGRp
c2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RG
cm9udGVuZChGcm9udGVuZENoYW5uZWwqKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RBbGxGcm9udGVu
ZHMoKTsKKwogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgdm9pZCBnbG9iYWxPYmplY3REZXN0cm95ZWQoKTsKQEAgLTk5LDcgKzEwMiw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNs
aWVudCogYXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9hdWdtZW50aW5nQ2xpZW50OyB9IAogICAgIHZpcnR1YWwgdm9pZCBzZXRB
dWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQoQXVnbWVudGFibGVJbnNwZWN0b3JD
b250cm9sbGVyQ2xpZW50KiBjbGllbnQpIG92ZXJyaWRlIHsgbV9hdWdtZW50aW5nQ2xpZW50ID0g
Y2xpZW50OyB9CiAKLSAgICB2aXJ0dWFsIEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVs
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcm9udGVuZENoYW5uZWw7IH0KKyAgICB2aXJ0
dWFsIGNvbnN0IEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQWdlbnRCYXNlPikgb3ZlcnJp
ZGU7CiAjZW5kaWYKIApAQCAtMTEzLDggKzExNiw4IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
Q29uc29sZUFnZW50KiBtX2NvbnNvbGVBZ2VudDsKICAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KiBtX2RlYnVnZ2VyQWdlbnQ7CiAgICAgQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKLSAgICBGcm9u
dGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFubmVsOwotICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0
Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWY8RnJvbnRlbmRSb3V0ZXI+IG1fZnJv
bnRlbmRSb3V0ZXI7CisgICAgUmVmPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOwogICAgIFJlZjxXVEY6OlN0b3B3YXRjaD4gbV9leGVjdXRpb25TdG9wd2F0Y2g7CiAgICAg
Ym9vbCBtX2luY2x1ZGVOYXRpdmVDYWxsU3RhY2tXaXRoRXhjZXB0aW9uczsKICAgICBib29sIG1f
aXNBdXRvbWF0aWNJbnNwZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hdWdtZW50YWJsZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQXVnbWVudGFibGVJ
bnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggMjQ1NmFjNTkxOWQ4YTBkNTY1OWQ2ZjcxY2MwNzU4
OGY2Yzc3NjhiMi4uYjBkMjViMGI2NzJhMjk2N2NhZmY1NzhiZjRmNTg4OGU5ZTk1NGY3OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BdWdt
ZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oCkBA
IC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hF
UlMpCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRy
b2xsZXJDbGllbnQuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZFJv
dXRlci5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIApAQCAtNDIsMTAgKzQyLDEwIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCog
YXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQoQXVnbWVu
dGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KikgPSAwOwogCi0gICAgdmlydHVhbCBGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNv
bnN0IEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgYXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQWdlbnRC
YXNlPikgPSAwOwogCi0gICAgYm9vbCBjb25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiAhIWZyb250
ZW5kQ2hhbm5lbCgpOyB9CisgICAgYm9vbCBjb25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiBmcm9u
dGVuZFJvdXRlcigpLmhhc0Zyb250ZW5kcygpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaAppbmRleCAwNjRiODNhZTgz
ODM4ZTFhYjM2ZTVlNzVmMDZmNmY5NzUwZjA4ODA5Li5kYTI0Mjk5ZTRkZDI1ZjM2ZjIxNTY1YjYx
M2E2ZGMwNmRhYmIwMTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oCkBA
IC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzTG9jYWxEZWJ1Z2dl
cigpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEZyb250ZW5kQ2hhbm5l
bCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRp
c2Nvbm5lY3QoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoRnJvbnRlbmRDaGFu
bmVsKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldElu
ZGljYXRpbmcoYm9vbCkgeyB9IC8vIERlZmF1bHQgaXMgdG8gZG8gbm90aGluZy4KICAgICB2aXJ0
dWFsIHZvaWQgcGF1c2UoKSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uLm1tCmluZGV4IGJlZGFhZDdmYWU0MGM1OGM4OTY3MmU0ZDFhMGIw
YTUxMWU5NjVhYjQuLmVkNmNkNjBkY2MwMTAxZDBiOGY2ZDM1YTg4NDFmM2ZlMjFmNDkwMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1t
CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbjo6Y2xvc2UoKQogCiAgICAgICAgICAgICBpZiAobV9kZWJ1Z2dhYmxlKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKG1fY29ubmVjdGVkKQotICAgICAgICAgICAgICAgICAgICBtX2RlYnVnZ2Fi
bGUtPmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgICAgICAgICAgICAgbV9kZWJ1Z2dhYmxlLT5kaXNj
b25uZWN0KHRoaXMpOwogCiAgICAgICAgICAgICAgICAgbV9kZWJ1Z2dhYmxlID0gbnVsbHB0cjsK
ICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9hbHRlcm5hdGVfYmFja2VuZF9kaXNwYXRj
aGVyX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX2NwcF9hbHRlcm5hdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5w
eQppbmRleCBkNGE4ZDVhZmVlZDQ0NTJlZTlmYmY3OGVhNTJiOTQzM2ZhYjIzNjc4Li4zNzVjZTA1
Y2E0NGFiNGU0MDk1NTgzNTQ2NzM3MDMzMjJkNTkxYWI0IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYWx0ZXJu
YXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2FsdGVybmF0ZV9iYWNr
ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5CkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIENwcEFsdGVy
bmF0ZUJhY2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgZGVm
IGdlbmVyYXRlX291dHB1dChzZWxmKToKICAgICAgICAgaGVhZGVycyA9IFsKICAgICAgICAgICAg
ICciSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIicsCisgICAgICAgICAgICAnPGluc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPicsCiAgICAgICAgICAgICAnPEphdmFTY3JpcHRDb3Jl
L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+JywKICAgICAgICAgXQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0
ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2Zyb250
ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKaW5kZXggZmIyZGU0ZjYxZjNmYzAxZDdh
NDYwODA4YTk4NTVjNWFkYTJmOTAwMC4uOTQwMThlNTlmNmZhZjYwMjA3YmFlY2Q2NWJiNTUzYTUy
YjBmZTU3ZCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0
aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQpA
QCAtOTgsOSArOTgsNyBAQCBjbGFzcyBPYmpDRnJvbnRlbmREaXNwYXRjaGVySW1wbGVtZW50YXRp
b25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgbGluZXMgPSBbXQogICAgICAgICBsaW5l
cy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfZXZlbnRfc2lnbmF0dXJlKGRvbWFpbiwgZXZlbnQpKQog
ICAgICAgICBsaW5lcy5hcHBlbmQoJ3snKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IF9jb250cm9sbGVyLT5mcm9udGVuZENoYW5u
ZWwoKTsnKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBpZiAoIWZyb250ZW5kQ2hhbm5lbCkn
KQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgcmV0dXJuOycpCisgICAgICAgIGxpbmVz
LmFwcGVuZCgnICAgIGNvbnN0IEZyb250ZW5kUm91dGVyJiByb3V0ZXIgPSBfY29udHJvbGxlci0+
ZnJvbnRlbmRSb3V0ZXIoKTsnKQogICAgICAgICBsaW5lcy5hcHBlbmQoJycpCiAKICAgICAgICAg
cmVxdWlyZWRfcG9pbnRlcl9wYXJhbWV0ZXJzID0gZmlsdGVyKGxhbWJkYSBwYXJhbWV0ZXI6IG5v
dCBwYXJhbWV0ZXIuaXNfb3B0aW9uYWwgYW5kIE9iakNHZW5lcmF0b3IuaXNfdHlwZV9vYmpjX3Bv
aW50ZXJfdHlwZShwYXJhbWV0ZXIudHlwZSksIGV2ZW50LmV2ZW50X3BhcmFtZXRlcnMpCkBAIC0x
MjYsNyArMTI0LDcgQEAgY2xhc3MgT2JqQ0Zyb250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9u
R2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGpzb25NZXNz
YWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJtZXRob2QiKSwgQVNDSUlMaXRlcmFsKCIlcy4l
cyIpKTsnICUgKGRvbWFpbi5kb21haW5fbmFtZSwgZXZlbnQuZXZlbnRfbmFtZSkpCiAgICAgICAg
IGlmIGV2ZW50LmV2ZW50X3BhcmFtZXRlcnM6CiAgICAgICAgICAgICBsaW5lcy5leHRlbmQoc2Vs
Zi5fZ2VuZXJhdGVfZXZlbnRfb3V0X3BhcmFtZXRlcnMoZG9tYWluLCBldmVudCkpCi0gICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgIGZyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KGpzb25NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcg
ICAgcm91dGVyLnNlbmRFdmVudChqc29uTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOycpCiAgICAg
ICAgIGxpbmVzLmFwcGVuZCgnfScpCiAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdERlYnVnZ2FibGUuY3BwCmluZGV4IGVlY2M1YmEwMzBhYjU0MGNhNWU0M2RkZDVhYThhZDIy
YzM3MzY5MWUuLjJhZWEyMDM1ZjMxYWZlZjllN2ExZTYxM2U1ZWI0NzJhYjRlNTA2YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdn
YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlLmNwcApAQCAtNTYsMTEgKzU2LDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlOjpjb25uZWN0KEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBib29s
IGF1CiAgICAgbV9nbG9iYWxPYmplY3QuaW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9u
dGVuZChmcm9udGVuZENoYW5uZWwsIGF1dG9tYXRpY0luc3BlY3Rpb24pOwogfQogCi12b2lkIEpT
R2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzY29ubmVjdCgpCit2b2lkIEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZTo6ZGlzY29ubmVjdChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkK
IHsKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKCZtX2dsb2JhbE9iamVjdC52bSgpKTsKIAotICAg
IG1fZ2xvYmFsT2JqZWN0Lmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQo
RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKyAgICBtX2dsb2JhbE9iamVj
dC5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5l
bCk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpwYXVzZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2Fi
bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdn
YWJsZS5oCmluZGV4IDYwY2U1OGE0NGM3OTM1OWE3NzM5YTkwNzliOTkzMGRkMTJhYmEzOTQuLjAz
ZmQxN2QwZmYwYTQ2NjY5NjY1OTNhMjI2YzUwNGYzZTE2YTJhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5o
CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzTG9jYWxEZWJ1
Z2dlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wgYXV0b21hdGljSW5z
cGVjdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5l
bCopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3Rl
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgcGF1c2UoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40YTliNmE3ZmM0N2RkMTY5ZTI2YTQ2NWNmM2I3NGUzYTQ0M2E2Mjk4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVm
IFdlYkNvcmVfRldEX0luc3BlY3RvckZyb250ZW5kUm91dGVyX2gKKyNkZWZpbmUgV2ViQ29yZV9G
V0RfSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXJfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lu
c3BlY3RvckZyb250ZW5kUm91dGVyLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IDA1MDk2NGZhNzViYThmN2Q5ZWQ1YzI3
YTU5YjliMGU0NGUwOGNiZDAuLjk2M2Y3MGMyNDAxNWY4YWZkMTM1ZTBlZTdjN2EyYWNlZjQ5MWY0
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
agpAQCAtMjAzOTMsNiArMjAzOTMsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9y
d2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3Jc
SW5zcGVjdG9yRW52aXJvbm1lbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZv
cndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJ
bnNwZWN0b3JGcm9udGVuZFJvdXRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVj
dG9yXEluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JQcm90b2NvbE9i
amVjdHMuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApp
bmRleCBlZTdkOGZhYzQ2NWQxZTVjZWRlMjBlMmMxOGVkZTVkNWY4MTA2MTFlLi42ZDM5YTRjOTJh
ZGNmNTI4NmYyNDgxNTJlYzFjNTI2OTNiYWRkZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNsaWVudC5oCkBAIC0yNywxMSArMjcsMTQgQEAKICNpZm5kZWYgSW5zcGVj
dG9yQ2xpZW50X2gKICNkZWZpbmUgSW5zcGVjdG9yQ2xpZW50X2gKIAotI2luY2x1ZGUgIkluc3Bl
Y3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAorbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRmxvYXRSZWN0OwpAQCAtNDUsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgPSAwOwogCi0gICAgdmlydHVhbCBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9s
bGVyKikgPSAwOworICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG9wZW5J
bnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBicmlu
Z0Zyb250ZW5kVG9Gcm9udCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzaXplTWFpbkZy
YW1lKEZyYW1lKikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKaW5kZXggM2IwMTIzZGZhYjU2ZjU5ZDAwZmIxYzY3NGFiZWQ4MzJhMDM3
NjdlMS4uNDM4ZDZiNWNhOTRjOGY4ZTQ2MzAyNWE4MmYyMzQ5YWQyYjU5NmUyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNjgs
NiArNjgsNyBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaD4K
ICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5oPgorI2lu
Y2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPgogI2luY2x1ZGUgPGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaD4KICNpbmNsdWRlIDxwcm9maWxlci9MZWdh
Y3lQcm9maWxlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CkBAIC04Niw2ICs4Nyw4
IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwg
SW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAgICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMo
SW5zdHJ1bWVudGluZ0FnZW50czo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhp
cywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX292ZXJsYXkoc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JPdmVybGF5PihwYWdlLCBpbnNwZWN0b3JDbGllbnQpKQor
ICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCisgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJv
dXRlci5jb3B5UmVmKCkpKQogICAgICwgbV9leGVjdXRpb25TdG9wd2F0Y2goU3RvcHdhdGNoOjpj
cmVhdGUoKSkKICAgICAsIG1fcGFnZShwYWdlKQogICAgICwgbV9pbnNwZWN0b3JDbGllbnQoaW5z
cGVjdG9yQ2xpZW50KQpAQCAtMTc3LDcgKzE4MCw4IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6On5J
bnNwZWN0b3JDb250cm9sbGVyKCkKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0
ZWRQYWdlRGVzdHJveWVkKCkKIHsKLSAgICBkaXNjb25uZWN0RnJvbnRlbmQoRGlzY29ubmVjdFJl
YXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkKTsKKyAgICBkaXNjb25uZWN0QWxsRnJvbnRl
bmRzKCk7CisKICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+ZGlzY29ubmVjdCgpOwogICAg
IG1faW5zcGVjdG9yQ2xpZW50LT5pbnNwZWN0b3JEZXN0cm95ZWQoKTsKICAgICBtX2luc3BlY3Rv
ckNsaWVudCA9IG51bGxwdHI7CkBAIC0xOTAsMTIgKzE5NCwxMiBAQCB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KiBpbgogCiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc0xvY2FsRnJvbnRlbmQoKSBj
b25zdAogewotICAgIHJldHVybiBtX2Zyb250ZW5kQ2hhbm5lbCAmJiBtX2Zyb250ZW5kQ2hhbm5l
bC0+Y29ubmVjdGlvblR5cGUoKSA9PSBGcm9udGVuZENoYW5uZWw6OkNvbm5lY3Rpb25UeXBlOjpM
b2NhbDsKKyAgICByZXR1cm4gbV9mcm9udGVuZFJvdXRlci0+aGFzTG9jYWxGcm9udGVuZCgpOwog
fQogCiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc1JlbW90ZUZyb250ZW5kKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9mcm9udGVuZENoYW5uZWwgJiYgbV9mcm9udGVuZENoYW5uZWwtPmNv
bm5lY3Rpb25UeXBlKCkgPT0gRnJvbnRlbmRDaGFubmVsOjpDb25uZWN0aW9uVHlwZTo6UmVtb3Rl
OworICAgIHJldHVybiBtX2Zyb250ZW5kUm91dGVyLT5oYXNSZW1vdGVGcm9udGVuZCgpOwogfQog
CiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkg
Y29uc3QKQEAgLTIxNyw3NiArMjIxLDk2IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlk
Q2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lJiBmcmFtZSwgRE9NV3JhcHBlcldvCiAgICAg
ICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQtPndpbmRvd09iamVjdENsZWFyZWQoKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rp
b24pCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pCiB7Ci0g
ICAgQVNTRVJUKGZyb250ZW5kQ2hhbm5lbCk7CisgICAgQVNTRVJUX0FSRyhmcm9udGVuZENoYW5u
ZWwsIGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgQVNTRVJUKG1faW5zcGVjdG9yQ2xpZW50KTsKLSAg
ICBBU1NFUlQoIW1fZnJvbnRlbmRDaGFubmVsKTsKLSAgICBBU1NFUlQoIW1fYmFja2VuZERpc3Bh
dGNoZXIpOwogCiAgICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBpc0F1dG9tYXRpY0luc3Bl
Y3Rpb247CiAKLSAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IGZyb250ZW5kQ2hhbm5lbDsKLSAgICBt
X2JhY2tlbmREaXNwYXRjaGVyID0gQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShmcm9udGVuZENo
YW5uZWwpOworICAgIG1fZnJvbnRlbmRSb3V0ZXItPmNvbm5lY3RGcm9udGVuZChmcm9udGVuZENo
YW5uZWwpOwogCi0gICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250
ZW5kQ2hhbm5lbCwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgbV9hZ2VudHMuZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgJm1fYmFja2VuZERpc3Bh
dGNoZXIuZ2V0KCkpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZWdpc3Rlcklu
c3RydW1lbnRpbmdBZ2VudHMoKm1faW5zdHJ1bWVudGluZ0FnZW50cyk7CiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZENyZWF0ZWQoKTsKIAogI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQotICAgIGlmICghaGFzUmVtb3RlRnJvbnRlbmQoKSkKKyAgICBpZiAoIW1fZnJv
bnRlbmRSb3V0ZXItPmhhc1JlbW90ZUZyb250ZW5kKCkpCiAgICAgICAgIG1fcGFnZS5yZW1vdGVJ
bnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOwogI2VuZGlmCiB9CiAKLXZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb24gcmVhc29u
KQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwpCiB7Ci0gICAgaWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkK
LSAgICAgICAgcmV0dXJuOworICAgIC8vIFRoZSBsb2NhbCBmcm9udGVuZCBjbGllbnQgc2hvdWxk
IGJlIGRpc2Nvbm5lY3RlZCBmaXJzdCBzbyBpdCBzdG9wcyBzZW5kaW5nIG1lc3NhZ2VzLgorICAg
IEFTU0VSVCghbV9mcm9udGVuZFJvdXRlci0+aGFzTG9jYWxGcm9udGVuZCgpIHx8ICFtX2luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50KTsKKworICAgIG1fYWdlbnRzLndpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisKKyAgICBi
b29sIGRpZEhhdmVSZW1vdGVGcm9udGVuZCA9IG1fZnJvbnRlbmRSb3V0ZXItPmhhc1JlbW90ZUZy
b250ZW5kKCk7CisgICAgbV9mcm9udGVuZFJvdXRlci0+ZGlzY29ubmVjdEZyb250ZW5kKGZyb250
ZW5kQ2hhbm5lbCk7CisgICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKKworICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmREZWxldGVkKCk7CisKKyAgICBpZiAo
IW1fZnJvbnRlbmRSb3V0ZXItPmhhc0Zyb250ZW5kcygpKSB7CisgICAgICAgIC8vIFJlbGVhc2Ug
b3ZlcmxheSBwYWdlIHJlc291cmNlcy4KKyAgICAgICAgbV9vdmVybGF5LT5mcmVlUGFnZSgpOwor
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnVucmVnaXN0ZXJJbnN0cnVtZW50aW5n
QWdlbnRzKCptX2luc3RydW1lbnRpbmdBZ2VudHMpOworICAgIH0KIAogI2lmIEVOQUJMRShSRU1P
VEVfSU5TUEVDVE9SKQotICAgIGlmICghaGFzUmVtb3RlRnJvbnRlbmQoKSkKKyAgICBpZiAoIW1f
ZnJvbnRlbmRSb3V0ZXItPmhhc1JlbW90ZUZyb250ZW5kKCkgJiYgZGlkSGF2ZVJlbW90ZUZyb250
ZW5kKQogICAgICAgICBtX3BhZ2UucmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2Uo
KTsKICNlbmRpZgorfQogCi0gICAgbV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQocmVhc29uKTsKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEFsbEZyb250
ZW5kcygpCit7CisgICAgLy8gVGhlIGxvY2FsIGZyb250ZW5kIGNsaWVudCBzaG91bGQgYmUgZGlz
Y29ubmVjdGVkIGZpcnN0IHNvIGl0IHN0b3BzIHNlbmRpbmcgbWVzc2FnZXMuCisgICAgQVNTRVJU
KCFtX2Zyb250ZW5kUm91dGVyLT5oYXNMb2NhbEZyb250ZW5kKCkgfHwgIW1faW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQpOwogCi0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+Y2xlYXJGcm9udGVuZCgp
OwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fZnJvbnRlbmRDaGFu
bmVsID0gbnVsbHB0cjsKKyAgICBtX2FnZW50cy53aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpOwogCisgICAgbV9m
cm9udGVuZFJvdXRlci0+ZGlzY29ubmVjdEFsbEZyb250ZW5kcygpOwogICAgIG1faXNBdXRvbWF0
aWNJbnNwZWN0aW9uID0gZmFsc2U7CiAKICAgICAvLyBSZWxlYXNlIG92ZXJsYXkgcGFnZSByZXNv
dXJjZXMuCiAgICAgbV9vdmVybGF5LT5mcmVlUGFnZSgpOwotICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZnJvbnRlbmREZWxldGVkKCk7CisKKyAgICB3aGlsZSAoSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSkKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpmcm9udGVuZERlbGV0ZWQoKTsKKwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
dW5yZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMoKm1faW5zdHJ1bWVudGluZ0FnZW50cyk7Cisg
ICAgCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgbV9wYWdlLnJlbW90ZUluc3Bl
Y3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CisjZW5kaWYKIH0KIAogdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjpzaG93KCkKIHsKLSAgICBBU1NFUlQoIWhhc1JlbW90ZUZyb250ZW5kKCkpOwor
ICAgIEFTU0VSVCghbV9mcm9udGVuZFJvdXRlci0+aGFzUmVtb3RlRnJvbnRlbmQoKSk7CisKKyAg
ICAvLyBUaGUgbG9jYWwgZnJvbnRlbmQgY2xpZW50IHNob3VsZCBiZSBkaXNjb25uZWN0ZWQgaWYg
dGhlcmUncyBubyBsb2NhbCBmcm9udGVuZC4KKyAgICBBU1NFUlQobV9mcm9udGVuZFJvdXRlci0+
aGFzTG9jYWxGcm9udGVuZCgpIHx8ICFtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50KTsKIAogICAg
IGlmICghZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9mcm9udGVuZENo
YW5uZWwpCisgICAgaWYgKG1fZnJvbnRlbmRSb3V0ZXItPmhhc0xvY2FsRnJvbnRlbmQoKSkKICAg
ICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmJyaW5nRnJvbnRlbmRUb0Zyb250KCk7Ci0gICAgZWxz
ZSB7Ci0gICAgICAgIGlmIChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsID0gbV9pbnNwZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVuZCh0aGlzKSkgewot
ICAgICAgICAgICAgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKLSAgICAgICAg
ICAgIGNvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwsIGlzQXV0b21hdGljSW5zcGVjdGlv
bik7Ci0gICAgICAgIH0KLSAgICB9CisgICAgZWxzZSBpZiAoSW5zcGVjdG9yOjpGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9y
RnJvbnRlbmQodGhpcykpCisgICAgICAgIGNvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwp
OwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNsb3NlKCkKIHsKLSAgICBpZiAoIW1f
ZnJvbnRlbmRDaGFubmVsKQotICAgICAgICByZXR1cm47Ci0gICAgZGlzY29ubmVjdEZyb250ZW5k
KERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7Ci0gICAgbV9pbnNwZWN0b3JD
bGllbnQtPmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKKyAgICBpZiAobV9mcm9udGVuZFJvdXRl
ci0+aGFzTG9jYWxGcm9udGVuZCgpKQorICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+Y2xvc2VJ
bnNwZWN0b3JGcm9udGVuZCgpOworCisgICAgQVNTRVJUKCFtX2Zyb250ZW5kUm91dGVyLT5oYXNM
b2NhbEZyb250ZW5kKCkpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldFByb2Nl
c3NJZChsb25nIHByb2Nlc3NJZCkKQEAgLTMzNyw4ICszNjEsNyBAQCBQYWdlJiBJbnNwZWN0b3JD
b250cm9sbGVyOjppbnNwZWN0ZWRQYWdlKCkgY29uc3QKIAogdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQog
ewotICAgIGlmIChtX2JhY2tlbmREaXNwYXRjaGVyKQotICAgICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5kaXNwYXRj
aChtZXNzYWdlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpoaWRlSGlnaGxpZ2h0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmlu
ZGV4IGNlYjNkZTJhZjE1Yjg0YmNiNzdiYmFhZGRjZTIxNTcyN2JiNGE5ZjAuLmRiZmJlM2ZkZTg4
YTkzNmVkYzI1ZDUyYjBhMjMwOTEzMmU0MDRjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNDQsNiArNDQsNyBAQAogbmFtZXNwYWNl
IEluc3BlY3RvciB7CiBjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEZyb250ZW5kQ2hh
bm5lbDsKK2NsYXNzIEZyb250ZW5kUm91dGVyOwogY2xhc3MgSW5zcGVjdG9yQWdlbnQ7CiBjbGFz
cyBJbnNwZWN0b3JPYmplY3Q7CiAKQEAgLTk3LDggKzk4LDkgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzTG9jYWxGcm9udGVuZCgpIGNvbnN0OwogICAgIGJvb2wgaGFzUmVtb3RlRnJvbnRlbmQoKSBj
b25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVjdEZyb250ZW5kKEluc3BlY3Rv
cjo6RnJvbnRlbmRDaGFubmVsKiwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVj
dFJlYXNvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVj
dG9yOjpGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiA9IGZhbHNl
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6
OkZyb250ZW5kQ2hhbm5lbCopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzY29ubmVjdEFs
bEZyb250ZW5kcygpOwogICAgIHZvaWQgc2V0UHJvY2Vzc0lkKGxvbmcpOwogCiAgICAgdm9pZCBp
bnNwZWN0KE5vZGUqKTsKQEAgLTE0OSw4ICsxNTEsOCBAQCBwcml2YXRlOgogICAgIEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQqIG1fZG9tRGVidWdnZXJBZ2VudDsKICAgICBJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiBtX3RpbWVsaW5lQWdlbnQ7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENoYW5uZWwgeyBudWxscHRyIH07CisgICAgUmVmPEluc3Bl
Y3Rvcjo6RnJvbnRlbmRSb3V0ZXI+IG1fZnJvbnRlbmRSb3V0ZXI7CisgICAgUmVmPEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgUmVmPFdURjo6
U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsKICAgICBQYWdlJiBtX3BhZ2U7CiAgICAg
SW5zcGVjdG9yQ2xpZW50KiBtX2luc3BlY3RvckNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCBiZTI3Zjk1NjE0
NDU5ZmJmZmQxYjAyZDQ4NWNmMWQ3N2RlZDk2NmVkLi4xMmFiNTQzYjczOGVmYzA0N2RlYjk5MjAw
MTAwOTlkNDdiZjg0YmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiU1FM
VHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU1FMVmFsdWUuaCIKICNpbmNs
dWRlICJWb2lkQ2FsbGJhY2suaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRSb3V0ZXIuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCAxNzJmYjU4MTI4MDIwYTNhZTU1ZDY1
ZDRmMDhmNTdhZTE2YTBlY2Y3Li5jMDNiZjdlNjJiM2FkMDM1ZDMzYjkyZGVkNjhkNmM0ZGQ5NjJh
ZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAKQEAgLTY0LDYgKzY0LDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHQuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaD4K
KyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4KICNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDdiNTZhMGZmOWQxNThm
NmJhOGIxMzUzYTBiYWIyZTRkMGU4OWExZDcuLjUzZTBiY2IyNjgyMGM1MjBkMjUzMDlhZmMzYWZh
NTFmMTViZDM0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9JZGVudGlm
aWVyc0ZhY3RvcnkuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0
ZXIuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8
aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRD
YWxsU3RhY2tGYWN0b3J5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggMTJjZWQ0NjA4M2QwY2UzYzVkYzQ2
N2VhMDFhODc3YmIzNjBlMGI1Yi4uMWIwMjc1OWExNzc0YTM3YjIwZmE0ZGNkMTY4NDk5ZjY5NGE2
ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIldvcmtlclRo
cmVhZC5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
PgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmg+Cisj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+CiAjaW5jbHVkZSA8
d3RmL1N0b3B3YXRjaC5oPgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwpAQCAtODEsNiAr
ODIsOCBAQCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbAogICAgICwgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBX
ZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fcnVudGltZUFnZW50KG51
bGxwdHIpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQor
ICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCisgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJv
dXRlci5jb3B5UmVmKCkpKQogewogICAgIGF1dG8gcnVudGltZUFnZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXb3JrZXJSdW50aW1lQWdlbnQ+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCAm
d29ya2VyR2xvYmFsU2NvcGUpOwogICAgIG1fcnVudGltZUFnZW50ID0gcnVudGltZUFnZW50Lmdl
dCgpOwpAQCAtMTE1LDI3ICsxMTgsMjcgQEAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6fldv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIoKQogCiB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXI6OmNvbm5lY3RGcm9udGVuZCgpCiB7Ci0gICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2hhbm5lbCk7
Ci0gICAgbV9mcm9udGVuZENoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VJbnNwZWN0b3JQ
cm94eT4obV93b3JrZXJHbG9iYWxTY29wZSk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZENoYW5uZWwuZ2V0KCkpOwotICAgIG1f
YWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChtX2Zyb250ZW5kQ2hhbm5lbC5nZXQo
KSwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgQVNTRVJUKCFtX2Zyb250ZW5kUm91
dGVyLT5oYXNGcm9udGVuZHMoKSk7CisgICAgQVNTRVJUKCFtX2ZvcndhcmRpbmdDaGFubmVsKTsK
KworICAgIG1fZm9yd2FyZGluZ0NoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VJbnNwZWN0
b3JQcm94eT4obV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAgbV9mcm9udGVuZFJvdXRlci0+Y29u
bmVjdEZyb250ZW5kKG1fZm9yd2FyZGluZ0NoYW5uZWwuZ2V0KCkpOworICAgIG1fYWdlbnRzLmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChtX2ZvcndhcmRpbmdDaGFubmVsLmdldCgpLCAmbV9i
YWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiB9CiAKIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbiByZWFz
b24pCiB7Ci0gICAgaWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkKLSAgICAgICAgcmV0dXJuOworICAg
IEFTU0VSVChtX2Zyb250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMoKSk7CisgICAgQVNTRVJUKG1f
Zm9yd2FyZGluZ0NoYW5uZWwpOwogCiAgICAgbV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQocmVhc29uKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5jbGVhckZyb250ZW5k
KCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9mcm9udGVuZENo
YW5uZWwgPSBudWxscHRyOworICAgIG1fZnJvbnRlbmRSb3V0ZXItPmRpc2Nvbm5lY3RGcm9udGVu
ZChtX2ZvcndhcmRpbmdDaGFubmVsLmdldCgpKTsKKyAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0g
bnVsbHB0cjsKIH0KIAogdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNwYXRjaE1l
c3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIGlmIChtX2Jh
Y2tlbmREaXNwYXRjaGVyKQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5kaXNwYXRjaCht
ZXNzYWdlKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKIH0K
IAogdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN1bWUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXgg
OTY3NDA4M2NkZWNhZGM5MWU1MDMwMjIyN2ZkYzRkMWE5MThiZWEwNC4uYWE0ZjQzZmQ4MTMwMzE2
NWY5YmVmN2Y0MmI2YzE3M2IxN2YxNWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC00MSw2ICs0MSwxMCBAQAog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK25hbWVz
cGFjZSBJbnNwZWN0b3IgeworY2xhc3MgRnJvbnRlbmRSb3V0ZXI7Cit9OworCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjsKQEAgLTc4LDkgKzgy
LDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluamVjdGVkU2NyaXB0TWFu
YWdlcj4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgV29ya2VyUnVudGltZUFnZW50KiBt
X3J1bnRpbWVBZ2VudDsKICAgICBJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnkgbV9hZ2VudHM7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsPiBtX2Zyb250ZW5k
Q2hhbm5lbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWw+
IG1fZm9yd2FyZGluZ0NoYW5uZWw7CiAgICAgUmVmPFdURjo6U3RvcHdhdGNoPiBtX2V4ZWN1dGlv
blN0b3B3YXRjaDsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4gbV9i
YWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWY8SW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcj4gbV9m
cm9udGVuZFJvdXRlcjsKKyAgICBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4gbV9i
YWNrZW5kRGlzcGF0Y2hlcjsKICAgICBWZWN0b3I8SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llLCAyPiBtX2luamVjdGVkU2NyaXB0SW5zdHJ1bWVudGF0aW9uQ29va2llczsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKaW5kZXggZmU3YjI5NDg2YWRlOGI0ZmEz
ZjNmNDlhMGVmYWQ5Y2Q3MDA5N2RkZC4uMjQ5ODNiZWM0YTc5Y2U3MzhiNDNlOTBlMjhkYzAwNWUz
OGE2YjRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKQEAgLTgwLDEw
ICs4MCwxMCBAQCB2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRl
bmRDaGFubmVsKiBjaGFubmVsLCBib29sIGlzQXV0b21hdAogICAgIGluc3BlY3RvckNvbnRyb2xs
ZXIuY29ubmVjdEZyb250ZW5kKGNoYW5uZWwsIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CiB9CiAK
LXZvaWQgUGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3QoKQordm9pZCBQYWdlRGVidWdnYWJsZTo6
ZGlzY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCkKIHsKICAgICBJ
bnNwZWN0b3JDb250cm9sbGVyJiBpbnNwZWN0b3JDb250cm9sbGVyID0gbV9wYWdlLmluc3BlY3Rv
ckNvbnRyb2xsZXIoKTsKLSAgICBpbnNwZWN0b3JDb250cm9sbGVyLmRpc2Nvbm5lY3RGcm9udGVu
ZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAg
aW5zcGVjdG9yQ29udHJvbGxlci5kaXNjb25uZWN0RnJvbnRlbmQoY2hhbm5lbCk7CiAKICAgICBp
ZiAobV9mb3JjZWREZXZlbG9wZXJFeHRyYXNFbmFibGVkKSB7CiAgICAgICAgIG1fZm9yY2VkRGV2
ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlRGVidWdnYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJs
ZS5oCmluZGV4IDZhZWZjYzNjYjQ1YjkyMDE3MGU5Nzk0NThiZTVhYjA2MGIzNmE0ZDMuLmIyOTA5
NGY1OTljMWFjMWRkM2Y1ZGQyMzc0MWI1ZmRiMWI2YWM1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VEZWJ1Z2dhYmxlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBoYXNMb2NhbERlYnVnZ2VyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQg
Y29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNw
ZWN0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVs
Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVG
cm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRJbmRpY2F0aW5nKGJvb2wpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKaW5kZXggOGYyYWMwOTUwZTZhOWJhYjE5M2FkMGU4ZDI2MzA5ZjFjNGQzZTYxMC4u
ZDZkMDQzOTE5ZTM3NDdhODhkZGI0NGY1ODNkN2MyZjdkNWQwOGI1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTczMiw5ICsxNzMyLDggQEAgUGFzc1JlZlB0cjxET01X
aW5kb3c+IEludGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiB1cmwpCiAgICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnREdW1teT4oJnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRl
bmRQYWdlKTsKICAgICBmcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNw
ZWN0b3JGcm9udGVuZENsaWVudChtX2Zyb250ZW5kQ2xpZW50LmdldCgpKTsKIAotICAgIGJvb2wg
aXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2U7CiAgICAgbV9mcm9udGVuZENoYW5uZWwgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbER1bW15Pihmcm9udGVuZFBh
Z2UpOwotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQobV9m
cm9udGVuZENoYW5uZWwuZ2V0KCksIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CisgICAgcGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZChtX2Zyb250ZW5kQ2hhbm5lbC5n
ZXQoKSk7CiAKICAgICByZXR1cm4gbV9mcm9udGVuZFdpbmRvdzsKIH0KQEAgLTE3NDUsOSArMTc0
NCwxMyBAQCB2b2lkIEludGVybmFsczo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKCkKICAg
ICBBU1NFUlQocGFnZSk7CiAgICAgQVNTRVJUKG1fZnJvbnRlbmRXaW5kb3cpOwogCi0gICAgcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRp
c2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgUGFnZSogZnJvbnRlbmRQ
YWdlID0gbV9mcm9udGVuZFdpbmRvdy0+ZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIEFTU0VSVChm
cm9udGVuZFBhZ2UpOwogCisgICAgZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCku
c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobnVsbHB0cik7CiAgICAgbV9mcm9udGVuZENsaWVu
dCA9IG51bGxwdHI7CisKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVj
dEZyb250ZW5kKG1fZnJvbnRlbmRDaGFubmVsLmdldCgpKTsKICAgICBtX2Zyb250ZW5kQ2hhbm5l
bCA9IG51bGxwdHI7CiAKICAgICBtX2Zyb250ZW5kV2luZG93LT5jbG9zZShtX2Zyb250ZW5kV2lu
ZG93LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBjNTBkYmI3YTU4
ZDhiNjQzNjAwNmE1ZjljMGNkOGVkZDk3NGQ3YjZlLi4wMWI0YmM5MDRjNzM1NzFjZGI2YTNjOTEz
OTIyZjM0OGJlNWFlZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBicmluZ1RvRnJvbnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgY2xvc2VXaW5kb3coKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVj
dEZyb21CYWNrZW5kKCk7CisgICAgdm9pZCBkaXNjb25uZWN0RnJvbUJhY2tlbmQoKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coRG9ja1NpZGUpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBkZXRhY2hXaW5kb3coKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCA4MDYwMDNh
NjI0NTQwNTcyOWNhZWY4YTY3MTIzYzYzMTViYWU0ZThlLi42ZTU0NTZiMzEwMzVjMTIyOTUyODIx
MmY5ZTRkZDhjN2NkNzJkNGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRp
YyBjb25zdCBDR0Zsb2F0IGluaXRpYWxXaW5kb3dIZWlnaHQgPSA2NTA7CiAtIChXZWJJbnNwZWN0
b3JDbGllbnQqKWluc3BlY3RvckNsaWVudDsKIC0gKHZvaWQpc2V0QXR0YWNoZWRXaW5kb3dIZWln
aHQ6KHVuc2lnbmVkKWhlaWdodDsKIC0gKHZvaWQpc2V0RG9ja2luZ1VuYXZhaWxhYmxlOihCT09M
KXVuYXZhaWxhYmxlOwotLSAodm9pZClkZXN0cm95SW5zcGVjdG9yVmlldzooYm9vbClub3RpZnlJ
bnNwZWN0b3JDb250cm9sbGVyOworLSAodm9pZClkZXN0cm95SW5zcGVjdG9yVmlldzsKIEBlbmQK
IAogCkBAIC0xMzAsNiArMTMwLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5z
cGVjdG9yRnJvbnRlbmQoKQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6YnJpbmdGcm9udGVu
ZFRvRnJvbnQoKQogeworICAgIEFTU0VSVChtX2Zyb250ZW5kQ2xpZW50KTsKICAgICBtX2Zyb250
ZW5kQ2xpZW50LT5icmluZ1RvRnJvbnQoKTsKIH0KIApAQCAtMjUyLDEyICsyNTMsMTIgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YnJpbmdUb0Zyb250KCkKIAogdm9pZCBXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2xvc2VXaW5kb3coKQogewotICAgIFttX3dpbmRvd0Nv
bnRyb2xsZXIuZ2V0KCkgZGVzdHJveUluc3BlY3RvclZpZXc6dHJ1ZV07CisgICAgW21fd2luZG93
Q29udHJvbGxlci5nZXQoKSBkZXN0cm95SW5zcGVjdG9yVmlld107CiB9CiAKIHZvaWQgV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRpc2Nvbm5lY3RGcm9tQmFja2VuZCgpCiB7Ci0gICAgW21f
d2luZG93Q29udHJvbGxlci5nZXQoKSBkZXN0cm95SW5zcGVjdG9yVmlldzpmYWxzZV07CisgICAg
W21fd2luZG93Q29udHJvbGxlci5nZXQoKSBkZXN0cm95SW5zcGVjdG9yVmlld107CiB9CiAKIHZv
aWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmF0dGFjaFdpbmRvdyhEb2NrU2lkZSkKQEAg
LTUyMiw3ICs1MjMsNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQo
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZwogCiAtIChCT09MKXdpbmRv
d1Nob3VsZENsb3NlOihpZClzZW5kZXIKIHsKLSAgICBbc2VsZiBkZXN0cm95SW5zcGVjdG9yVmll
dzp0cnVlXTsKKyAgICBbc2VsZiBkZXN0cm95SW5zcGVjdG9yVmlld107CiAKICAgICByZXR1cm4g
WUVTOwogfQpAQCAtNjc2LDcgKzY3Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nCiAgICAg
Ly8gRG8gbm90aGluZy4KIH0KIAotLSAodm9pZClkZXN0cm95SW5zcGVjdG9yVmlldzooYm9vbClu
b3RpZnlJbnNwZWN0b3JDb250cm9sbGVyCistICh2b2lkKWRlc3Ryb3lJbnNwZWN0b3JWaWV3CiB7
CiAgICAgUmV0YWluUHRyPFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXI+IHByb3RlY3Qoc2Vs
Zik7CiAKQEAgLTY5Miw5ICs2OTMsOSBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
OjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZwogCiAgICAg
X3Zpc2libGUgPSBOTzsKIAotICAgIGlmIChub3RpZnlJbnNwZWN0b3JDb250cm9sbGVyKSB7Ci0g
ICAgICAgIGlmIChQYWdlKiBpbnNwZWN0ZWRQYWdlID0gW19pbnNwZWN0ZWRXZWJWaWV3LmdldCgp
IHBhZ2VdKQotICAgICAgICAgICAgaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3Rv
ckRlc3Ryb3llZCk7CisgICAgaWYgKFBhZ2UqIGluc3BlY3RlZFBhZ2UgPSBbX2luc3BlY3RlZFdl
YlZpZXcuZ2V0KCkgcGFnZV0pIHsKKyAgICAgICAgaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG51bGxwdHIpOworICAgICAgICBp
bnNwZWN0ZWRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKF9p
bnNwZWN0b3JDbGllbnQpOwogICAgIH0KIAogICAgIFtfd2ViVmlldyBjbG9zZV07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcAppbmRleCA0NWQ0YWIwZGExNjA3NGM3NmIwOGJiNjM0ZDEzYWRhYmQ2ZDZiYWNhLi4yYWJh
NTM3MjBiZDAwMDAwMjE2NjhkY2UzM2FjOTg3MTJkZjkzM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAg
LTE3NCw3ICsxNzQsNyBAQCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYklu
c3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKElucwogdm9pZCBXZWJJbnNwZWN0
b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQogewogICAgIGlmIChtX2Zyb250ZW5k
Q2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5kZXN0cm95SW5zcGVjdG9yVmlldyhm
YWxzZSk7CisgICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPmRlc3Ryb3lJbnNwZWN0b3JWaWV3KCk7
CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpicmluZ0Zyb250ZW5kVG9Gcm9udCgpCkBA
IC0yMzcsNyArMjM3LDcgQEAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcKIAogV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ6On5XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpCiB7Ci0gICAgZGVz
dHJveUluc3BlY3RvclZpZXcodHJ1ZSk7CisgICAgZGVzdHJveUluc3BlY3RvclZpZXcoKTsKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZnJvbnRlbmRMb2FkZWQoKQpAQCAt
MjY5LDcgKzI2OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmJyaW5nVG9G
cm9udCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNsb3NlV2luZG93KCkK
IHsKLSAgICBkZXN0cm95SW5zcGVjdG9yVmlldyh0cnVlKTsKKyAgICBkZXN0cm95SW5zcGVjdG9y
VmlldygpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5k
b3coRG9ja1NpZGUpCkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6c2hvd1dpbmRvd1dpdGhvdXROb3RpZmljYXRpb25zKCkKICAgICBtX2luc3BlY3Rv
ckNsaWVudC0+dXBkYXRlSGlnaGxpZ2h0KCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OmRlc3Ryb3lJbnNwZWN0b3JWaWV3KGJvb2wgbm90aWZ5SW5zcGVjdG9yQ29udHJv
bGxlcikKK3ZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ryb3lJbnNwZWN0b3JW
aWV3KCkKIHsKICAgICBtX2luc3BlY3RvckNsaWVudC0+cmVsZWFzZUZyb250ZW5kKCk7CiAKQEAg
LTQzMSwxMCArNDMxLDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ry
b3lJbnNwZWN0b3JWaWV3KGJvb2wgbm90aWZ5SW5zcGVjdG9yQ29udHJvCiAKICAgICBjbG9zZVdp
bmRvd1dpdGhvdXROb3RpZmljYXRpb25zKCk7CiAKLSAgICBpZiAobm90aWZ5SW5zcGVjdG9yQ29u
dHJvbGxlcikgewotICAgICAgICBtX2luc3BlY3RlZFdlYlZpZXctPnBhZ2UoKS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFz
b246Okluc3BlY3RvckRlc3Ryb3llZCk7Ci0gICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT51cGRh
dGVIaWdobGlnaHQoKTsKLSAgICB9CisgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCktPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChudWxscHRyKTsK
KyAgICBtX2luc3BlY3RlZFdlYlZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRp
c2Nvbm5lY3RGcm9udGVuZCh0aGlzKTsKKyAgICBtX2luc3BlY3RvckNsaWVudC0+dXBkYXRlSGln
aGxpZ2h0KCk7CisKICAgICA6OkRlc3Ryb3lXaW5kb3cobV9mcm9udGVuZEh3bmQpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oCmluZGV4IDlmYjM4NmUzMWNkOTRkYTA3YjY4ZjJjNTFmODU2M2IzOTU1ZWM3MjQuLjk1
NjhkYTAzM2ZlNDY0NzdhZmYxM2NiNzM0ODcxYTYzZTAzMDIyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC0x
MTMsNyArMTEzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENo
YW5nZWQoY29uc3QgV1RGOjpTdHJpbmcmIG5ld1VSTCk7CiAKLSAgICB2b2lkIGRlc3Ryb3lJbnNw
ZWN0b3JWaWV3KGJvb2wgbm90aWZ5SW5zcGVjdG9yQ29udHJvbGxlcik7CisgICAgdm9pZCBkZXN0
cm95SW5zcGVjdG9yVmlldygpOwogCiBwcml2YXRlOgogICAgIHZvaWQgY2xvc2VXaW5kb3dXaXRo
b3V0Tm90aWZpY2F0aW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDVh
N2YxNzAwYmQxOWFiY2FhN2Y3ODU2ZGEyYTAzZWI2Y2UyNmYxYjAuLjY2ZTliYzcwZGFjMDQ0ODc2
OTQzZmI1ZGQzOWNkYjJhNzRkMjM2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAK
QEAgLTgyLDE3ICs4MiwxOSBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVz
dHJveWVkKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAotV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNw
ZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyKQorSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwq
IFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRy
b2xsZXIqIGNvbnRyb2xsZXIpCiB7Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y3JlYXRlSW5z
cGVjdG9yUGFnZShjb250cm9sbGVyLT5pc1VuZGVyVGVzdCgpKTsKKyAgICBtX3BhZ2UtPmluc3Bl
Y3RvcigpLT5vcGVuRnJvbnRlbmRDb25uZWN0aW9uKGNvbnRyb2xsZXItPmlzVW5kZXJUZXN0KCkp
OwogCiAgICAgcmV0dXJuIG1fcGFnZS0+aW5zcGVjdG9yKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVj
dG9yQ2xpZW50OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKCkKIHsKLSAgICBpZiAobV9wYWdlLT5p
bnNwZWN0b3IoKSkKLSAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y2xvc2VGcm9udGVuZCgp
OworICAgIGlmIChtX3BhZ2UtPmluc3BlY3RvcigpKSB7CisgICAgICAgIG1fcGFnZS0+Y29yZVBh
Z2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChtX3BhZ2UtPmlu
c3BlY3RvcigpKTsKKyAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y2xvc2VGcm9udGVuZENv
bm5lY3Rpb24oKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpicmluZ0Zy
b250ZW5kVG9Gcm9udCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA5YTQ0MDBiZTVh
YmE2Yjk5NTE1ZjZkODkxZjZlOWE4MTU2NzhhNDE1Li5iODM4MGIxYjg4YjE3NjE0MWZmYzRhODQ1
NzM4ODQwZDdiZDk4ZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTI3LDcgKzI3
LDYgQEAKICNkZWZpbmUgV2ViSW5zcGVjdG9yQ2xpZW50X2gKIAogI2luY2x1ZGUgPFdlYkNvcmUv
SW5zcGVjdG9yQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGb3J3YXJkaW5n
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlT3ZlcmxheS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAKQEAgLTUzLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpJbnNw
ZWN0b3JDbGllbnQKICAgICB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpIG92ZXJyaWRlOwogCi0g
ICAgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRl
bmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlOworICAgIEluc3BlY3Rv
cjo6RnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlciopIG92ZXJyaWRlOwogICAgIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVu
ZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZFJlc2l6ZU1haW5GcmFtZShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNw
cAppbmRleCBlMGFkNzU0NDQ1ODVkOGE5ZTdhMmU3MTYzMTVhMTUxOWY5NWVmZmI5Li41OTY5YWEy
MmYzNmRmOTQxMWQ1ZGExMDU2ZjFkMjZkMzAyMGVkNTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApAQCAtNzAsNyArNzAsNyBA
QCBXZWJJbnNwZWN0b3I6On5XZWJJbnNwZWN0b3IoKQogfQogCiAvLyBDYWxsZWQgZnJvbSBXZWJJ
bnNwZWN0b3JDbGllbnQKLXZvaWQgV2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0b3JQYWdlKGJv
b2wgdW5kZXJUZXN0KQordm9pZCBXZWJJbnNwZWN0b3I6Om9wZW5Gcm9udGVuZENvbm5lY3Rpb24o
Ym9vbCB1bmRlclRlc3QpCiB7CiAjaWYgT1MoREFSV0lOKQogICAgIG1hY2hfcG9ydF90IGxpc3Rl
bmluZ1BvcnQ7CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNw
ZWN0b3JQYWdlKGJvb2wgdW5kZXJUZXN0KQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjpDcmVhdGVJbnNwZWN0b3JQYWdlKGNvbm5lY3Rpb25DbGllbnRQb3J0LCBjYW5BdHRhY2hXaW5k
b3coKSwgdW5kZXJUZXN0KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVj
dG9yOjpjbG9zZUZyb250ZW5kKCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kQ29u
bmVjdGlvbigpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRpZENsb3NlKCks
IG1fcGFnZS0+cGFnZUlEKCkpOwogCkBAIC0yNjIsOCArMjYyLDcgQEAgdm9pZCBXZWJJbnNwZWN0
b3I6OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkKIHsKICAgICBpZiAobV9wYWdlLT5jb3JlUGFn
ZSgpKSB7CiAgICAgICAgIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQgPSB0cnVlOwotICAgICAg
ICBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiA9IGZhbHNlOwotICAgICAgICBtX3BhZ2UtPmNv
cmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQodGhpcywgaXNB
dXRvbWF0aWNJbnNwZWN0aW9uKTsKKyAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKHRoaXMpOwogICAgIH0KIH0KIApAQCAtMjcy
LDcgKzI3MSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3Rl
ZCgpCiAgICAgbV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCA9IGZhbHNlOwogCiAgICAgaWYgKG1f
cGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNv
bjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKyAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKHRoaXMpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaApp
bmRleCAwNDAwOGUxNWRjN2EyNmZmYmEzNzdhY2IwNjcxNTYyODY2MTFkZWE5Li4wMDEyODc5Y2Zh
OWM2ZDFiNDVkMjMwODgwY2UyMmQ5OGRkYjhhZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCkBAIC05Nyw5ICs5Nyw5IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBjYW5BdHRhY2hXaW5kb3coKTsKIAogICAgIC8vIENhbGxlZCBmcm9tIFdl
Ykluc3BlY3RvckNsaWVudAotICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZShib29sIHVuZGVy
VGVzdCk7CisgICAgdm9pZCBvcGVuRnJvbnRlbmRDb25uZWN0aW9uKGJvb2wgdW5kZXJUZXN0KTsK
KyAgICB2b2lkIGNsb3NlRnJvbnRlbmRDb25uZWN0aW9uKCk7CiAKLSAgICB2b2lkIGNsb3NlRnJv
bnRlbmQoKTsKICAgICB2b2lkIGJyaW5nVG9Gcm9udCgpOwogCiAgICAgV2ViUGFnZSogbV9wYWdl
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZk
NjVlNDRmZTcxOWM2MDU0ZWZlNzU0MmU0MmViODRlNzA4MDAwOTQuLjYzNGM4YzNjMGIwNzNmZjQ0
YTY1NDU2NjcyMGJkZGIzNzk4NWQ4ZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNS0wOC0yOCAgQnJpYW4gQnVy
ZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JD
b250cm9sbGVyIHNob3VsZCBzdXBwb3J0IG11bHRpcGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3JDbGll
bnRzIG11c3QgZXhwbGljaXRseSBkaXNjb25uZWN0IHRoZWlyIGZyb250ZW5kIGNoYW5uZWwocykg
ZnJvbSB0aGUKKyAgICAgICAgaW5zcGVjdGVkIHBhZ2UncyBJbnNwZWN0b3JDb250cm9sbGVyLgor
CisgICAgICAgIFRvIG1ha2UgdGhpcyBwb3NzaWJsZSwgRHVtcFJlbmRlclRyZWUgc2hvdWxkIG5v
dCBkZXN0cm95IG5vbi1wcmltYXJ5IHZpZXdzIHVudGlsCisgICAgICAgIGl0IGhhcyB0cmllZCB0
byBjbG9zZSBhbnkgYWJhbmRvbmVkIFdlYiBJbnNwZWN0b3IgaW5zdGFuY2VzLiBQZXJmb3JtaW5n
IHRlYXJkb3duCisgICAgICAgIGluIHRoZSByZXZlcnNlIG9yZGVyIHByZXZlbnRzIGRpc2Nvbm5l
Y3Rpb24gb2YgdGhlIGZyb250ZW5kIGNoYW5uZWwgYmVjYXVzZSB0aGF0CisgICAgICAgIHByZW1h
dHVyZWx5IGRlc3Ryb3lzIHRoZSBpbnNwZWN0b3IgZnJvbnRlbmQgY2xpZW50LgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAocnVuVGVz
dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAg
ICAgICAgKHJ1blRlc3QpOgorCiAyMDE1LTA4LTI4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFVucmV2aWV3ZWQgRVdTIGNvcnJlY3Rpb24uCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggM2RkNzJhMGQz
OWE3OGNhYWUzZTdiMmE4YWJlYTM4OWVkNmM3MTBlZi4uZmU1NzVjOGI5NTYwZDkyYThkOWY5YTk5
ZjkyZmM4OTUzNTlhMTg0ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZS5tbQpAQCAtMjAyOCw2ICsyMDI4LDEzIEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qg
c3RyaW5nJiBpbnB1dExpbmUpCiAKICAgICB3b3JrUXVldWUuY2xlYXIoKTsKIAorICAgIC8vIElm
IHRoZSB0ZXN0IHBhZ2UgY291bGQgaGF2ZSBwb3NzaWJseSBvcGVuZWQgdGhlIFdlYiBJbnNwZWN0
b3IgZnJvbnRlbmQsCisgICAgLy8gdGhlbiB0cnkgdG8gY2xvc2UgaXQgaW4gY2FzZSBpdCB3YXMg
YWNjaWRlbnRhbGx5IGxlZnQgb3Blbi4KKyAgICBpZiAoc2hvdWxkRW5hYmxlRGV2ZWxvcGVyRXh0
cmFzKHBhdGhPclVSTC5jX3N0cigpKSkgeworICAgICAgICBnVGVzdFJ1bm5lci0+Y2xvc2VXZWJJ
bnNwZWN0b3IoKTsKKyAgICAgICAgZ1Rlc3RSdW5uZXItPnNldERldmVsb3BlckV4dHJhc0VuYWJs
ZWQoZmFsc2UpOworICAgIH0KKwogICAgIGlmIChnVGVzdFJ1bm5lci0+Y2xvc2VSZW1haW5pbmdX
aW5kb3dzV2hlbkNvbXBsZXRlKCkpIHsKICAgICAgICAgTlNBcnJheSogYXJyYXkgPSBbRHVtcFJl
bmRlclRyZWVXaW5kb3cgb3BlbldpbmRvd3NdOwogCkBAIC0yMDUxLDEyICsyMDU4LDYgQEAgc3Rh
dGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TGluZSkKICAgICAgICAgfQogICAg
IH0KIAotICAgIC8vIElmIGRldmVsb3BlciBleHRyYXMgZW5hYmxlZCBXZWIgSW5zcGVjdG9yIG1h
eSBoYXZlIGJlZW4gb3BlbiBieSB0aGUgdGVzdC4KLSAgICBpZiAoc2hvdWxkRW5hYmxlRGV2ZWxv
cGVyRXh0cmFzKHBhdGhPclVSTC5jX3N0cigpKSkgewotICAgICAgICBnVGVzdFJ1bm5lci0+Y2xv
c2VXZWJJbnNwZWN0b3IoKTsKLSAgICAgICAgZ1Rlc3RSdW5uZXItPnNldERldmVsb3BlckV4dHJh
c0VuYWJsZWQoZmFsc2UpOwotICAgIH0KLQogICAgIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0
YXRlQmVmb3JlVGVzdGluZygpOwogCiAgICAgLy8gTG9hZGluZyBhbiBlbXB0eSByZXF1ZXN0IHN5
bmNocm9ub3VzbHkgcmVwbGFjZXMgdGhlIGRvY3VtZW50IHdpdGggYSBibGFuayBvbmUsIHdoaWNo
IGlzIG5lY2Vzc2FyeQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBS
ZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5j
cHAKaW5kZXggZTU2ZWIxZjUzN2I5NDAzZjU1YzZlZDAzYzlkMTdiODc5MDgwOWQ1Ni4uZDAyY2Zl
YzU4ODI1NDQ1Nzk0YmRhMGI5NWZkMGZlYzAzODkxNzQwMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC0xMTQ3LDYgKzExNDcsMTMgQEAgc3RhdGlj
IHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TGluZSkKICAgICAvLyBFdmVudFNlbmRp
bmdDb250cm9sbGVyIGNsZWFyU2F2ZWRFdmVudHMKICAgICB3b3JrUXVldWUuY2xlYXIoKTsKIAor
ICAgIC8vIElmIHRoZSB0ZXN0IHBhZ2UgY291bGQgaGF2ZSBwb3NzaWJseSBvcGVuZWQgdGhlIFdl
YiBJbnNwZWN0b3IgZnJvbnRlbmQsCisgICAgLy8gdGhlbiB0cnkgdG8gY2xvc2UgaXQgaW4gY2Fz
ZSBpdCB3YXMgYWNjaWRlbnRhbGx5IGxlZnQgb3Blbi4KKyAgICBpZiAoc2hvdWxkRW5hYmxlRGV2
ZWxvcGVyRXh0cmFzKHBhdGhPclVSTC5jX3N0cigpKSkgeworICAgICAgICA6OmdUZXN0UnVubmVy
LT5jbG9zZVdlYkluc3BlY3RvcigpOworICAgICAgICA6OmdUZXN0UnVubmVyLT5zZXREZXZlbG9w
ZXJFeHRyYXNFbmFibGVkKGZhbHNlKTsKKyAgICB9CisKICAgICBpZiAoOjpnVGVzdFJ1bm5lci0+
Y2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKCkpIHsKICAgICAgICAgVmVjdG9yPEhX
TkQ+IHdpbmRvd3MgPSBvcGVuV2luZG93cygpOwogICAgICAgICB1bnNpZ25lZCBzaXplID0gd2lu
ZG93cy5zaXplKCk7CkBAIC0xMTYxLDExICsxMTY4LDYgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChj
b25zdCBzdHJpbmcmIGlucHV0TGluZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChzaG91
bGRFbmFibGVEZXZlbG9wZXJFeHRyYXMocGF0aE9yVVJMLmNfc3RyKCkpKSB7Ci0gICAgICAgIDo6
Z1Rlc3RSdW5uZXItPmNsb3NlV2ViSW5zcGVjdG9yKCk7Ci0gICAgICAgIDo6Z1Rlc3RSdW5uZXIt
PnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoZmFsc2UpOwotICAgIH0KLQogICAgIHJlc2V0V2Vi
Vmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpOwogCiAgICAgLy8gTG9hZGluZyBh
biBlbXB0eSByZXF1ZXN0IHN5bmNocm9ub3VzbHkgcmVwbGFjZXMgdGhlIGRvY3VtZW50IHdpdGgg
YSBibGFuayBvbmUsIHdoaWNoIGlzIG5lY2Vzc2FyeQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260204</attachid>
            <date>2015-08-28 19:48:15 -0700</date>
            <delta_ts>2015-08-28 21:48:02 -0700</delta_ts>
            <desc>Proposed Fix (EWS)</desc>
            <filename>bug-148538-20150828194801.patch</filename>
            <type>text/plain</type>
            <size>80404</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YjExNjU3MmEyOWIyMzA0YWEzYzRjNTFkZjIwY2NjYmM3NGUyYWZkLi42YjkyYmU3OTllMjVkNmYw
Mzg1MmEyMmNiZTQzYWUzYzkwMzM3NDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OCBAQAorMjAxNS0wOC0yOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250cm9sbGVyIHNob3VsZCBzdXBwb3J0
IG11bHRpcGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIGEgc2luZ2xldG9uLCBpdCBzaG91bGQgYmUg
cG9zc2libGUgdG8gaGF2ZSBtdWx0aXBsZSBjaGFubmVscyBvcGVuCisgICAgICAgIGF0IHRoZSBz
YW1lIHRpbWUgYW5kIHRvIGluZGl2aWR1YWxseSBjbG9zZSBjaGFubmVscyBhcyBmcm9udGVuZHMg
Y29tZSBhbmQgZ28uCisKKyAgICAgICAgVGhlIEZyb250ZW5kUm91dGVyIGNsYXNzIGtlZXBzIGEg
bGlzdCBvZiBvcGVuIEZyb250ZW5kQ2hhbm5lbHMgYW5kIHNlbmRzIG1lc3NhZ2VzCisgICAgICAg
IHRvIHRoZSBhcHByb3ByaWF0ZSBmcm9udGVuZHMgYmFzZWQgb24gd2hldGhlciB0aGUgbWVzc2Fn
ZSBpcyBhIHJlc3BvbnNlIG9yIGV2ZW50LgorICAgICAgICBFYWNoIEluc3BlY3RvckNvbnRyb2xs
ZXIgb3ducyBhIHNpbmdsZSBGcm9udGVuZFJvdXRlciBhbmQgQmFja2VuZERpc3BhdGNoZXIgaW5z
dGFuY2UuCisgICAgICAgIEluc3BlY3RvciBiYWNrZW5kIGNvZGUgdGhhdCBzZW5kcyBtZXNzYWdl
cyB0byB0aGUgZnJvbnRlbmQgc2hvdWxkIHN3aXRjaCBvdmVyIHRvCisgICAgICAgIHVzaW5nIHRo
ZSByb3V0ZXIgcmF0aGVyIHRoYW4gZGlyZWN0bHkgdXNpbmcgYSBGcm9udGVuZENoYW5uZWwuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuY3BwOiBNb3ZlIGNvbnN0cnVjdG9ycy9kZXN0cnVjdG9ycyBvdXQgb2Yg
dGhlIGhlYWRlcgorICAgICAgICB0byBhdm9pZCBpbmNsdWRpbmcgSW5zcGVjdG9yRnJvbnRlbmRS
b3V0ZXIgZXZlcnl3aGVyZS4gVXNlIHRoZSByb3V0ZXIgaW5zdGVhZCBvZiBhCisgICAgICAgIHNw
ZWNpZmljIGZyb250ZW5kIGNoYW5uZWwuIFJlbW92ZSBndWFyZHMgdGhhdCBhcmUgbm8gbG9uZ2Vy
IG5lY2Vzc2FyeSBzaW5jZSB0aGUgcm91dGVyCisgICAgICAgIGlzIGd1YXJhbnRlZWQgdG8gb3V0
bGl2ZSB0aGUgYmFja2VuZCBkaXNwYXRjaGVyLgorCisgICAgICAgIChJbnNwZWN0b3I6OlN1cHBs
ZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyOjpTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcik6
CisgICAgICAgIChJbnNwZWN0b3I6OlN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyOjp+U3Vw
cGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlcjo6QmFja2VuZERpc3BhdGNoZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXI6OmlzQWN0aXZlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6
OnJlZ2lzdGVyRGlzcGF0Y2hlckZvckRvbWFpbik6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlcjo6c2VuZFBlbmRpbmdFcnJvcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOgorICAgICAgICAoSW5zcGVjdG9yOjpTdXBwbGVtZW50
YWxCYWNrZW5kRGlzcGF0Y2hlcjo6U3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIpOiBEZWxl
dGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcjo6
flN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OmNsZWFyRnJvbnRlbmQpOiBEZWxldGVkLCBubyBsb25n
ZXIgbmVjZXNzYXJ5LgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6aXNB
Y3RpdmUpOiBNb3ZlZCB0byBpbXBsZW1lbnRhdGlvbiBmaWxlLgorICAgICAgICAoSW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlcjo6QmFja2VuZERpc3BhdGNoZXIpOiBNb3ZlZCB0byBpbXBsZW1l
bnRhdGlvbiBmaWxlLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6Y3JlYXRl
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI6OmNvbm5lY3RGcm9udGVuZCk6
CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpkaXNjb25uZWN0RnJvbnRlbmQp
OgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6ZGlzY29ubmVjdEFsbEZyb250
ZW5kcyk6CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpsZWFrQ2hhbm5lbCk6
CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpoYXNMb2NhbEZyb250ZW5kKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI6Omhhc1JlbW90ZUZyb250ZW5kKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI6OnNlbmRFdmVudCk6CisgICAgICAg
IChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpzZW5kUmVzcG9uc2UpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcDogUmVtb3ZlIGd1YXJk
cyB0aGF0IGFyZSBubyBsb25nZXIgbmVjZXNzYXJ5LgorICAgICAgICBUaGUgZnJvbnRlbmQgcm91
dGVyIGFuZCBiYWNrZW5kIGRpc3BhdGNoZXIgbm93IGhhdmUgdGhlIHNhbWUgbGlmZXRpbWUgYXMg
dGhlIGNvbnRyb2xsZXIuCisgICAgICAgIEV4cGxpY2l0bHkgY29ubmVjdC9kaXNjb25uZWN0IHRo
ZSBmcm9udGVuZCBjaGFubmVsLgorCisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
SW5zcGVjdG9yQ29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpn
bG9iYWxPYmplY3REZXN0cm95ZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChJbnNwZWN0
b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5k
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
OjpkaXNjb25uZWN0QWxsRnJvbnRlbmRzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmFw
cGVuZEV4dHJhQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXI6OnBhdXNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL2F1
Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAoSW5z
cGVjdG9yOjpBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RlZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlv
bi5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb246OmNsb3NlKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVy
YXRlX2NwcF9hbHRlcm5hdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weToKKyAgICAgICAg
KENwcEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yLmdlbmVyYXRlX291
dHB1dCk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpj
X2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAgIChPYmpDRnJv
bnRlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2V2ZW50KTog
VXNlIHRoZSByb3V0ZXIuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2Fi
bGUuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmRpc2Nvbm5l
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmg6CisKIDIw
MTUtMDgtMjggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBN
YWNyb0Fzc2VtYmxlclByaW50ZXIgc3VwcG9ydCBmb3IgcHJpbnRpbmcgbWVtb3J5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGQxZjM0YWJjZjMxYjNiYTNiNjczZDUzNzU4YzY2ODg0MzlkYmM4ZWMuLjE3ZGUwZjk3
ZTQ2YmJiYTQ2OGMzMWU5N2E0OTA5MDU4NzA2N2JjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
NiBAQAorMjAxNS0wOC0yOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250cm9sbGVyIHNob3VsZCBzdXBwb3J0IG11bHRp
cGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZSBmcm9tIHRoaXMg
cGF0Y2guIFRlYXJkb3duIHNjZW5hcmlvcyBhcmUKKyAgICAgICAgY292ZXJlZCBieSBleGlzdGlu
ZyBwcm90b2NvbCBhbmQgaW5zcGVjdG9yIHRlc3RzIHJ1bm5pbmcgdW5kZXIgRFJUIGFuZCBXS1RS
LgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kUm91dGVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oOiBTdG9wIHVzaW5n
IGZvcndhcmRlZCB0eXBlcy4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JD
b250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omluc3Bl
Y3RlZFBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6aGFzTG9jYWxGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyOjpoYXNSZW1vdGVGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RBbGxGcm9udGVuZHMpOiBBZGRlZC4gRGlzY29ubmVjdHMg
YWxsCisgICAgICAgIGZyb250ZW5kcyBhbmQgc2lnbmFscyBEaXNjb25uZWN0UmVhc29uOjpJbnNw
ZWN0ZWRUYXJnZXREZXN0cm95ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNsb3Nl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoTWVzc2Fn
ZUZyb21Gcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aDogQWRkIGRlZmF1bHQgdmFsdWUgZm9yIGlzQXV0b21hdGljSW5zcGVjdGlvbi4KKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwOiBVc2UgYSByb3V0ZXIgd2l0aCBhIHNpbmdsZXRvbiBjaGFubmVs
CisgICAgICAgIHRoYXQgZm9yd2FyZHMgbWVzc2FnZXMgb3ZlciB0byB0aGUgbWFpbiBwYWdlLgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVj
dG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBw
YWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dhYmxl
OjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VEZWJ1Z2dhYmxlLmg6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOiBDbGVhciB0aGUgZnJvbnRlbmQgY2xpZW50IGJlZm9y
ZSBkaXNjb25uZWN0aW5nIGZyb250ZW5kIGNoYW5uZWwuCisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6Om9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKToKKwogMjAxNS0wOC0yOCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBSZXN0
cnVjdHVyZSBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyIGZvciB0ZXN0aW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggYWQ5MWFiMTUyMzJhMzhiY2NlZDc4NWZhNGY4NjZjN2ExOWYwMTc5ZC4uNTIzYzMyMjli
MTAwMzE0NmVmMTIyODVmNjE5M2Q4NDVjMWMzYTVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIzIEBACisyMDE1LTA4LTI4ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEluc3BlY3RvckNvbnRyb2xsZXIgc2hvdWxkIHN1cHBvcnQg
bXVsdGlwbGUgZnJvbnRlbmQgY2hhbm5lbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0ODUzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgbm90aWZ5SW5zcGVjdG9yQ29udHJvbGxlciBm
bGFnIGZyb20gY2xvc2VXaW5kb3cuIFNpbmNlIEluc3BlY3RvckNsaWVudHMKKyAgICAgICAgbXVz
dCBub3cgbWFudWFsbHkgZGlzY29ubmVjdCB0aGVpciBGcm9udGVuZENoYW5uZWwocyksIHdlIHNo
b3VsZCBhbHdheXMKKyAgICAgICAgcGVyZm9ybSB0aGUgdGVhcmRvd24gdGhhdCB3YXMgZ3VhcmRl
ZCBieSB0aGlzIGZsYWcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06
CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmJyaW5nRnJvbnRlbmRUb0Zyb250KTogQWRk
IGEgbWlzc2luZyBhc3NlcnRpb24uCisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDo6Y2xvc2VXaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRp
c2Nvbm5lY3RGcm9tQmFja2VuZCk6CisgICAgICAgICgtW1dlYkluc3BlY3RvcldpbmRvd0NvbnRy
b2xsZXIgd2luZG93U2hvdWxkQ2xvc2U6XSk6CisgICAgICAgICgtW1dlYkluc3BlY3RvcldpbmRv
d0NvbnRyb2xsZXIgZGVzdHJveUluc3BlY3RvclZpZXddKTogQWx3YXlzIGNsZWFyIHRoZSBmcm9u
dGVuZCBjbGllbnQuCisgICAgICAgICgtW1dlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgZGVz
dHJveUluc3BlY3RvclZpZXc6XSk6IFJlbmFtZWQgdG8gYWJvdmUuCisKIDIwMTUtMDgtMjggIEVy
aWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gUmVz
dHJ1Y3R1cmUgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciBmb3IgdGVzdGluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CmluZGV4IGFjMjI3NjBiNTVjMDI4ODMxZjllZGFhNjhjNmQyZGJhNjEzMWFiOGUuLmE5ZjBlMGJh
OWY2ZWJkYWUwMGJjMDJmMDMxYzMyOGU2N2FlYzI5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNS0wOC0yOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250cm9sbGVyIHNob3VsZCBzdXBwb3J0
IG11bHRpcGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIG5vdGlmeUluc3BlY3RvckNvbnRyb2xsZXIg
ZmxhZyBmcm9tIGNsb3NlV2luZG93LiBTaW5jZSBJbnNwZWN0b3JDbGllbnRzCisgICAgICAgIG11
c3Qgbm93IG1hbnVhbGx5IGRpc2Nvbm5lY3QgdGhlaXIgRnJvbnRlbmRDaGFubmVsKHMpLCB3ZSBz
aG91bGQgYWx3YXlzCisgICAgICAgIHBlcmZvcm0gdGhlIHRlYXJkb3duIHRoYXQgd2FzIGd1YXJk
ZWQgYnkgdGhpcyBmbGFnLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJbnNwZWN0b3JG
cm9udGVuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6fldlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50KToKKyAgICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
OjpjbG9zZVdpbmRvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGVz
dHJveUluc3BlY3RvclZpZXcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oOgorCiAyMDE1LTA4LTI3ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEZyb250ZW5kQ2hhbm5lbCBzaG91bGQga25vdyBpdHMg
b3duIGNvbm5lY3Rpb24gdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDIxNTg4NzAwZjMyYjMwNmJiMGExZWRj
NWM4ZGI3ZjNjNmZkYzhjN2MuLjdkNjViMmI0MzBiZTZkODg4ZGZiOGJhNjhlYmE1ZTdjY2RlMjU3
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNS0wOC0yOCAgQnJpYW4gQnVyZyAg
PGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250
cm9sbGVyIHNob3VsZCBzdXBwb3J0IG11bHRpcGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBsaWNpdGx5IGRpc2Nv
bm5lY3QgdGhlIGZyb250ZW5kIGNoYW5uZWwgd2hlbiBjbG9zaW5nIHRoZSBmcm9udGVuZC4KKwor
ICAgICAgICBSZW5hbWUgY3JlYXRlSW5zcGVjdG9yUGFnZS9jbG9zZUZyb250ZW5kIHRvIHRoZSBz
eW1tZXRyaWMgYW5kIHVuYW1iaWd1b3VzCisgICAgICAgIHtvcGVuLGNsb3NlfUZyb250ZW5kQ29u
bmVjdGlvbiBpbiB0aGUgV2ViSW5zcGVjdG9yIGNsYXNzLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDogU3Rv
cCB1c2luZyBhIGZvcndhcmRlZCB0eXBlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6Om9wZW5Gcm9u
dGVuZENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNsb3NlRnJv
bnRlbmRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpyZW1vdGVG
cm9udGVuZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6cmVtb3Rl
RnJvbnRlbmREaXNjb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNy
ZWF0ZUluc3BlY3RvclBhZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3I6OmNsb3NlRnJvbnRlbmQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3IuaDoKKwogMjAxNS0wOC0yOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJs
c29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBSZXN0cnVjdHVyZSBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyIGZvciB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggNjgwNjBhNjk5ZmI0ODk3MDA2ZTRmYTk5MzIwMTI3MGM0ZDJlYzNkOS4uYTA5OWVkNDM2ZGRi
ODA3ODIxZDc5MWU2ODI1MjQ4OTBmYjc3NzYwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMzIzLDYgKzMyMyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAg
ICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKICAgICBpbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0
cnkuY3BwCisgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmNwcAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKICAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmNwcAogICAgIGluc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGll
bnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCAwOGUwMjdi
MmU1ZTU3ZjczNjYwM2ZiMDMyMDg0NGY3ZTYwZDcyODAxLi5jNGExMTQ0NzM5NTE3ZGFjODhkMTFj
Mzk4ZmM3MGJhZTJjZjAwODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2oKQEAgLTU5NSw2ICs1OTUsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVj
dG9yXEluamVjdGVkU2NyaXB0TW9kdWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAi
IC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRl
bmRSb3V0ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXElu
c3BlY3RvclZhbHVlcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0
b3JcSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caW5zcGVjdG9yXEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcCIgLz4KQEAgLTEz
ODUsNiArMTM4Niw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGluc3BlY3RvclxJbnNwZWN0b3JFbnZpcm9ubWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kUm91dGVyLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVz
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSlNJbmplY3RlZFNj
cmlwdEhvc3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxKU0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAwY2M5YThiMWEwMjEzMDQ2MmUwYTYzYzY1YzgzNWE2MDcyOTA4YTAyLi4zODUyODM5
OWQxMTYwMTYyNWY5ZDFlMzNjOGVhZDk2NGEwZDhhYmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTE5Miw2ICsxMTkyLDggQEAKIAkJOTlFNDVBMjYxOEExQjI1OTAwMjZEODhG
IC8qIEVuY29kZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTlFNDVBMjExOEExQjI1OTAwMjZEODhGIC8qIEVuY29kZWRWYWx1ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5RTQ1QTI3MThB
MUIyNTkwMDI2RDg4RiAvKiBJbnB1dEN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNDVBMjIxOEExQjI1OTAwMjZEODhGIC8qIElucHV0Q3Vy
c29yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OTlFNDVBMjgxOEExQjI1OTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJbnB1dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNDVBMjMxOEExQjI1
OTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJbnB1dC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5RjFBNkZFMUI4RTZEOTQwMDQ2M0IyNiAv
KiBJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OUYxQTZGQzFCOEU2RDk0MDA0NjNCMjYgLyogSW5zcGVjdG9y
RnJvbnRlbmRSb3V0ZXIuY3BwICovOyB9OworCQk5OUYxQTZGRjFCOEU2RDk0MDA0NjNCMjYgLyog
SW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk5RjFBNkZEMUI4RTZEOTQwMDQ2M0IyNiAvKiBJbnNwZWN0b3JGcm9u
dGVuZFJvdXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTlFNzI5NDA3MTkwRjAxQTUwMDFBOTFCNSAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzg2MzZD
MEQ5QkVFQzMwMEQ3NEU3NSAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmNwcCAqLzsgfTsKIAkJOUU3
Mjk0MDgxOTBGMDIxRTAwMUE5MUI1IC8qIEluaXRpYWxpemVMTFZNUE9TSVguY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDRUZBQzUxODA1RTc1NTAw
NDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNUE9TSVguY3BwICovOyB9OwogCQk5RTcyOTQwQjE5MEYw
NTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUU3Mjk0MEExOTBGMDUxNDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGgu
aCAqLzsgfTsKQEAgLTMwNTUsNiArMzA1Nyw4IEBACiAJCTk5RTQ1QTIxMThBMUIyNTkwMDI2RDg4
RiAvKiBFbmNvZGVkVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW5j
b2RlZFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5RTQ1QTIyMThBMUIy
NTkwMDI2RDg4RiAvKiBJbnB1dEN1cnNvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnB1dEN1cnNvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUU0NUEy
MzE4QTFCMjU5MDAyNkQ4OEYgLyogTm9uZGV0ZXJtaW5pc3RpY0lucHV0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbmRldGVybWluaXN0aWNJbnB1dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5OUYxQTZGQzFCOEU2RDk0MDA0NjNCMjYgLyogSW5zcGVjdG9y
RnJvbnRlbmRSb3V0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5OUYxQTZGRDFCOEU2RDk0MDA0NjNCMjYgLyogSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI0OTU0RTgxQTY2NDBEQjAwMjgxNUE2
IC8qIFBhcnNlckZ1bmN0aW9uSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZXJGdW5jdGlvbklu
Zm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUU3Mjk0MDkxOTBGMDMwNjAwMUE5
MUI1IC8qIEJ1bmRsZVBhdGgubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBCdW5kbGVQYXRoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RTcyOTQw
QTE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCdW5kbGVQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01
NzMwLDYgKzU3MzQsOCBAQAogCQkJCUE1OTNDRjdCMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5oICovLAogCQkJCUE1RDBBMUJBMTg2MjMwMUIwMEM3QjQ5NiAv
KiBJbnNwZWN0b3JFbnZpcm9ubWVudC5oICovLAogCQkJCUE1OTQ1NTk0MTgyNDc5RUIwMENDMzg0
MyAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLywKKwkJCQk5OUYxQTZGQzFCOEU2RDk0
MDA0NjNCMjYgLyogSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwICovLAorCQkJCTk5RjFBNkZE
MUI4RTZEOTQwMDQ2M0IyNiAvKiBJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oICovLAogCQkJCUE1
NUQ5M0FCMTg1MTRGNzkwMDQwMERFRCAvKiBJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmggKi8sCiAJ
CQkJQTU5M0NGODAxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi8sCiAJ
CQkJQTU5M0NGODExODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oICovLApAQCAt
NTg5Miw2ICs1ODk4LDcgQEAKIAkJCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRB
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODk4RjMyMUIyNzY4OUYwMDgzQTMzQyAv
KiBERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTlGMUE2RkYxQjhFNkQ5NDAwNDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyODFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVk
QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkMwNjExRjFBQTUxRTFDMDBCNEFEQkEg
LyogUnVudGltZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEQ1NUI4MUFFNzE2Q0EwMDUy
RTQ1OSAvKiBJdGVyYXRpb25TdGF0dXMuaCBpbiBIZWFkZXJzICovLApAQCAtNzkyMSw2ICs3OTI4
LDcgQEAKIAkJCQlDMjI1NDk0MzE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTMzMDQwMkMwRTZBNzY0MDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5n
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFM0VGODg3NDFCNjZERjIzMDAzRjI2Q0IgLyogSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5OUYxQTZGRTFCOEU2
RDk0MDA0NjNCMjYgLyogSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY4RjJCOUUxNzMwNkM4RDAwN0RCREE1IC8qIFNvdXJjZUNvZGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY0OTNBRkExNkQwQ0FEMzAwODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUzM0U4RDFDMUI5MDEzQzMwMDM0NkI1MiAvKiBKU05hdGl2
ZVN0ZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNw
cAppbmRleCA0ZDQ1ZGE5OWUxYmY2NjQ3NTM3ZDg0YzE0MTM1MjI5MzliMDk4MDg5Li4wOTM2YjQx
MTFjMjQxMzM0ZDc0OWMyMjQxZDNiNmMxNDUxODY5MDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmgiCiAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVl
cy5oIgogI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CkBAIC0zNSw2ICszNiwxNSBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IAorU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXI6OlN1cHBsZW1lbnRhbEJhY2tlbmREaXNw
YXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlcikKKyAgICA6IG1fYmFj
a2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCit7Cit9CisKK1N1cHBsZW1lbnRhbEJh
Y2tlbmREaXNwYXRjaGVyOjp+U3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoKQoreworfQor
CiBCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFja0Jhc2UoUmVmPEJhY2tl
bmREaXNwYXRjaGVyPiYmIGJhY2tlbmREaXNwYXRjaGVyLCBsb25nIHJlcXVlc3RJZCkKICAgICA6
IG1fYmFja2VuZERpc3BhdGNoZXIoV1RGOjptb3ZlKGJhY2tlbmREaXNwYXRjaGVyKSkKICAgICAs
IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKQEAgLTY5LDE1ICs3OSwyOCBAQCB2b2lkIEJhY2tlbmRE
aXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OnNlbmRTdWNjZXNzKFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiYgcGFydAogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShtX3JlcXVl
c3RJZCwgV1RGOjptb3ZlKHBhcnRpYWxNZXNzYWdlKSk7CiB9CiAKLVJlZjxCYWNrZW5kRGlzcGF0
Y2hlcj4gQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCkKK0JhY2tlbmREaXNwYXRjaGVyOjpCYWNrZW5kRGlzcGF0Y2hlcihSZWY8RnJvbnRl
bmRSb3V0ZXI+JiYgcm91dGVyKQorICAgIDogbV9mcm9udGVuZFJvdXRlcihXVEY6Om1vdmUocm91
dGVyKSkKK3sKK30KKworUmVmPEJhY2tlbmREaXNwYXRjaGVyPiBCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKFJlZjxGcm9udGVuZFJvdXRlcj4mJiByb3V0ZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQmFja2VuZERpc3BhdGNoZXIoZnJvbnRlbmRDaGFubmVsKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQmFja2VuZERpc3BhdGNoZXIoV1RGOjptb3ZlKHJvdXRlcikpKTsKK30K
KworYm9vbCBCYWNrZW5kRGlzcGF0Y2hlcjo6aXNBY3RpdmUoKSBjb25zdAoreworICAgIHJldHVy
biBtX2Zyb250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMoKTsKIH0KIAogdm9pZCBCYWNrZW5kRGlz
cGF0Y2hlcjo6cmVnaXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWlu
LCBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciogZGlzcGF0Y2hlcikKIHsKLSAgICBhdXRv
IHJlc3VsdCA9IG1fZGlzcGF0Y2hlcnMuYWRkKGRvbWFpbiwgZGlzcGF0Y2hlcik7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBBU1NFUlRfQVJHKGRp
c3BhdGNoZXIsIGRpc3BhdGNoZXIpOworCisgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5v
cmcvYi8xNDg0OTI+IEFnZW50cyBzaG91bGQgb25seSByZWdpc3RlciB3aXRoIHRoZSBiYWNrZW5k
IG9uY2UsCisgICAgLy8gYW5kIHdlIHNob3VsZCByZS1hZGQgdGhlIGFzc2VydGlvbiB0aGF0IG9u
bHkgb25lIGRpc3BhdGNoZXIgaXMgcmVnaXN0ZXJlZCBwZXIgZG9tYWluLgorICAgIG1fZGlzcGF0
Y2hlcnMuc2V0KGRvbWFpbiwgZGlzcGF0Y2hlcik7CiB9CiAKIHZvaWQgQmFja2VuZERpc3BhdGNo
ZXI6OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKQEAgLTE2NSw5ICsxODgsNiBAQCB2
b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAK
IHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnNlbmRSZXNwb25zZShsb25nIHJlcXVlc3RJZCwgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mJiByZXN1bHQpCiB7Ci0gICAgaWYgKCFtX2Zyb250ZW5kQ2hh
bm5lbCkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgQVNTRVJUKCFtX3Byb3RvY29sRXJyb3JzLnNp
emUoKSk7CiAKICAgICAvLyBUaGUgSlNPTi1SUEMgMi4wIHNwZWNpZmljYXRpb24gcmVxdWlyZXMg
dGhhdCB0aGUgImVycm9yIiBtZW1iZXIgaGF2ZSB0aGUgdmFsdWUgJ251bGwnCkBAIC0xNzUsNyAr
MTk1LDcgQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFJlc3BvbnNlKGxvbmcgcmVxdWVz
dElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIHIKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0
PiByZXNwb25zZU1lc3NhZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHJlc3Bv
bnNlTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicmVzdWx0IiksIHJlc3VsdCk7CiAg
ICAgcmVzcG9uc2VNZXNzYWdlLT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiaWQiKSwgcmVxdWVz
dElkKTsKLSAgICBtX2Zyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKHJlc3Bv
bnNlTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOworICAgIG1fZnJvbnRlbmRSb3V0ZXItPnNlbmRS
ZXNwb25zZShyZXNwb25zZU1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKIH0KIAogdm9pZCBCYWNr
ZW5kRGlzcGF0Y2hlcjo6c2VuZFBlbmRpbmdFcnJvcnMoKQpAQCAtMTkwLDkgKzIxMCw2IEBAIHZv
aWQgQmFja2VuZERpc3BhdGNoZXI6OnNlbmRQZW5kaW5nRXJyb3JzKCkKICAgICAgICAgLTMyMDAw
LCAvLyBTZXJ2ZXJFcnJvcgogICAgIH07CiAKLSAgICBpZiAoIW1fZnJvbnRlbmRDaGFubmVsKQot
ICAgICAgICByZXR1cm47Ci0gICAgCiAgICAgLy8gVG8gY29uc3RydWN0IHRoZSBlcnJvciBvYmpl
Y3QsIG9ubHkgdXNlIHRoZSBsYXN0IGVycm9yJ3MgY29kZSBhbmQgbWVzc2FnZS4KICAgICAvLyBQ
ZXIgSlNPTi1SUEMgMi4wLCBTZWN0aW9uIDUuMSwgdGhlICdkYXRhJyBtZW1iZXIgbWF5IGNvbnRh
aW4gbmVzdGVkIGVycm9ycywKICAgICAvLyBidXQgb25seSBvbmUgdG9wLWxldmVsIEVycm9yIG9i
amVjdCBzaG91bGQgYmUgc2VudCBwZXIgcmVxdWVzdC4KQEAgLTIyNyw3ICsyNDQsNyBAQCB2b2lk
IEJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUGVuZGluZ0Vycm9ycygpCiAgICAgICAgIG1lc3NhZ2Ut
PnNldFZhbHVlKEFTQ0lJTGl0ZXJhbCgiaWQiKSwgSW5zcGVjdG9yVmFsdWU6Om51bGwoKSk7CiAg
ICAgfQogCi0gICAgbV9mcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNz
YWdlLT50b0pTT05TdHJpbmcoKSk7CisgICAgbV9mcm9udGVuZFJvdXRlci0+c2VuZFJlc3BvbnNl
KG1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKIAogICAgIG1fcHJvdG9jb2xFcnJvcnMuY2xlYXIo
KTsKICAgICBtX2N1cnJlbnRSZXF1ZXN0SWQgPSBOdWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5oCmluZGV4IGYyMjQ4MmQ5YjBmOTUxMjg5NzM5NTFjZjgzMjMyN2YwYWIzODE1MDMuLmM2MWNm
MWQwY2QzZjg1NDdlNGQ1NjA4MjgwZDAwYWM4NzdlOTVjMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmgKQEAgLTM1LDE1ICszNSwxNCBAQAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNz
IEJhY2tlbmREaXNwYXRjaGVyOwotY2xhc3MgRnJvbnRlbmRDaGFubmVsOworY2xhc3MgRnJvbnRl
bmRSb3V0ZXI7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiBjbGFzcyBTdXBwbGVt
ZW50YWxCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPFN1cHBsZW1lbnRhbEJh
Y2tlbmREaXNwYXRjaGVyPiB7CiBwdWJsaWM6Ci0gICAgU3VwcGxlbWVudGFsQmFja2VuZERpc3Bh
dGNoZXIoQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyKQotICAgICAgICA6IG1f
YmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpIHsgfQotICAgIHZpcnR1YWwgflN1
cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKCkgeyB9CisgICAgU3VwcGxlbWVudGFsQmFja2Vu
ZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXImKTsKKyAgICB2aXJ0dWFsIH5TdXBwbGVtZW50
YWxCYWNrZW5kRGlzcGF0Y2hlcigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVz
c2FnZSkgPSAwOwogcHJvdGVjdGVkOgogICAgIFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKQEAgLTUxLDcgKzUwLDcgQEAgcHJvdGVjdGVkOgogCiBjbGFzcyBCYWNr
ZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPEJhY2tlbmREaXNwYXRjaGVyPiB7CiBw
dWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxCYWNrZW5kRGlzcGF0Y2hl
cj4gY3JlYXRlKEZyb250ZW5kQ2hhbm5lbCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8QmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShSZWY8RnJvbnRlbmRSb3V0ZXI+JiYpOwog
CiAgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQ2FsbGJhY2tCYXNlIDogcHVibGljIFJlZkNv
dW50ZWQ8Q2FsbGJhY2tCYXNlPiB7CiAgICAgcHVibGljOgpAQCAtNjksOCArNjgsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGJvb2wgbV9hbHJlYWR5U2VudCB7IGZhbHNlIH07CiAgICAgfTsKIAotICAg
IHZvaWQgY2xlYXJGcm9udGVuZCgpIHsgbV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOyB9Ci0g
ICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9mcm9udGVuZENoYW5uZWw7IH0K
KyAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CiAKICAgICBib29sIGhhc1Byb3RvY29sRXJyb3Jz
KCkgY29uc3QgeyByZXR1cm4gbV9wcm90b2NvbEVycm9ycy5zaXplKCkgPiAwOyB9CiAKQEAgLTEw
NCwxMiArMTAyLDkgQEAgcHVibGljOgogICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gZ2V0QXJy
YXkoSW5zcGVjdG9yT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5k
KTsKIAogcHJpdmF0ZToKLSAgICBCYWNrZW5kRGlzcGF0Y2hlcihGcm9udGVuZENoYW5uZWwqIGNo
YW5uZWwpCi0gICAgICAgIDogbV9mcm9udGVuZENoYW5uZWwoY2hhbm5lbCkKLSAgICB7Ci0gICAg
fQorICAgIEJhY2tlbmREaXNwYXRjaGVyKFJlZjxGcm9udGVuZFJvdXRlcj4mJik7CiAKLSAgICBG
cm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFubmVsOworICAgIFJlZjxGcm9udGVuZFJvdXRl
cj4gbV9mcm9udGVuZFJvdXRlcjsKICAgICBIYXNoTWFwPFN0cmluZywgU3VwcGxlbWVudGFsQmFj
a2VuZERpc3BhdGNoZXIqPiBtX2Rpc3BhdGNoZXJzOwogCiAgICAgLy8gUHJvdG9jb2wgZXJyb3Jz
IHJlcG9ydGVkIGZvciB0aGUgdG9wLWxldmVsIHJlcXVlc3QgYmVpbmcgcHJvY2Vzc2VkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZFJvdXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kUm91dGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODdhNjc4YTY1ZWZiZWI2MGY1ZmRkOGIzYzEy
Mjk1ZmRkNmVkMzEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHAKQEAgLTAsMCArMSwxMTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRl
bmRSb3V0ZXIuaCIKKworI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitSZWY8
RnJvbnRlbmRSb3V0ZXI+IEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZyb250ZW5kUm91dGVyKTsKK30KKwordm9pZCBGcm9udGVuZFJvdXRlcjo6
Y29ubmVjdEZyb250ZW5kKEZyb250ZW5kQ2hhbm5lbCogY29ubmVjdGlvbikKK3sKKyAgICBBU1NF
UlRfQVJHKGNvbm5lY3Rpb24sIGNvbm5lY3Rpb24pOworCisgICAgaWYgKG1fY29ubmVjdGlvbnMu
Y29udGFpbnMoY29ubmVjdGlvbikpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0
aW9uKTsKK30KKwordm9pZCBGcm9udGVuZFJvdXRlcjo6ZGlzY29ubmVjdEZyb250ZW5kKEZyb250
ZW5kQ2hhbm5lbCogY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlRfQVJHKGNvbm5lY3Rpb24sIGNv
bm5lY3Rpb24pOworCisgICAgaWYgKCFtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24p
KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgbV9jb25uZWN0aW9ucy5yZW1vdmVGaXJzdChjb25uZWN0aW9uKTsKK30KKwordm9p
ZCBGcm9udGVuZFJvdXRlcjo6ZGlzY29ubmVjdEFsbEZyb250ZW5kcygpCit7CisgICAgbV9jb25u
ZWN0aW9ucy5jbGVhcigpOworfQorCisvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0
ODQ5Mj4gcmVtb3ZlIHRoaXMgbWV0aG9kIG9uY2UgYWdlbnRzIG1vdmUgdG8gdXNpbmcgRnJvbnRl
bmRSb3V0ZXIgZGlyZWN0bHkuCitGcm9udGVuZENoYW5uZWwqIEZyb250ZW5kUm91dGVyOjpsZWFr
Q2hhbm5lbCgpIGNvbnN0Cit7CisgICAgaWYgKG1fY29ubmVjdGlvbnMuc2l6ZSgpKQorICAgICAg
ICByZXR1cm4gbV9jb25uZWN0aW9ucy5hdCgwKTsKKworICAgIHJldHVybiBudWxscHRyOworfQor
Citib29sIEZyb250ZW5kUm91dGVyOjpoYXNMb2NhbEZyb250ZW5kKCkgY29uc3QKK3sKKyAgICBm
b3IgKGF1dG8qIGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zKSB7CisgICAgICAgIGlmIChjb25u
ZWN0aW9uLT5jb25uZWN0aW9uVHlwZSgpID09IEZyb250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5
cGU6OkxvY2FsKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEZyb250ZW5kUm91dGVyOjpoYXNSZW1vdGVGcm9udGVuZCgpIGNv
bnN0Cit7CisgICAgZm9yIChhdXRvKiBjb25uZWN0aW9uIDogbV9jb25uZWN0aW9ucykgeworICAg
ICAgICBpZiAoY29ubmVjdGlvbi0+Y29ubmVjdGlvblR5cGUoKSA9PSBGcm9udGVuZENoYW5uZWw6
OkNvbm5lY3Rpb25UeXBlOjpSZW1vdGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRnJvbnRlbmRSb3V0ZXI6OnNlbmRFdmVu
dChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvKiBjb25uZWN0
aW9uIDogbV9jb25uZWN0aW9ucykKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKG1lc3NhZ2UpOworfQorCit2b2lkIEZyb250ZW5kUm91dGVyOjpzZW5kUmVzcG9uc2Uo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBzZW5kIHJlc3Bv
bnNlcyB0byB0aGUgYXBwcm9wcmlhdGUgZnJvbnRlbmQuCisgICAgZm9yIChhdXRvKiBjb25uZWN0
aW9uIDogbV9jb25uZWN0aW9ucykKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKG1lc3NhZ2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRS
b3V0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42MTUyY2QwMWFlNWU4NGExMWQ4YTBjYjExYzk1MTQyYTcyOTQ5
YWYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZFJvdXRlci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEluc3BlY3RvckZyb250ZW5kUm91dGVyX2gKKyNkZWZpbmUgSW5zcGVjdG9yRnJvbnRl
bmRSb3V0ZXJfaAorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgRnJvbnRlbmRD
aGFubmVsOworCitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBGcm9udGVuZFJvdXRlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPEZyb250ZW5kUm91dGVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxG
cm9udGVuZFJvdXRlcj4gY3JlYXRlKCk7CisKKyAgICBib29sIGhhc0Zyb250ZW5kcygpIGNvbnN0
IHsgcmV0dXJuIG1fY29ubmVjdGlvbnMuc2l6ZSgpID4gMDsgfQorICAgIGJvb2wgaGFzTG9jYWxG
cm9udGVuZCgpIGNvbnN0OworICAgIGJvb2wgaGFzUmVtb3RlRnJvbnRlbmQoKSBjb25zdDsKKwor
ICAgIHZvaWQgY29ubmVjdEZyb250ZW5kKEZyb250ZW5kQ2hhbm5lbCopOworICAgIHZvaWQgZGlz
Y29ubmVjdEZyb250ZW5kKEZyb250ZW5kQ2hhbm5lbCopOworICAgIHZvaWQgZGlzY29ubmVjdEFs
bEZyb250ZW5kcygpOworCisgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDg0
OTI+IHJlbW92ZSB0aGlzIG1ldGhvZCBvbmNlIGFnZW50cyBtb3ZlIHRvIHVzaW5nIEZyb250ZW5k
Um91dGVyIGRpcmVjdGx5LgorICAgIEZyb250ZW5kQ2hhbm5lbCogbGVha0NoYW5uZWwoKSBjb25z
dDsKKworICAgIHZvaWQgc2VuZEV2ZW50KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgY29uc3Q7Cisg
ICAgdm9pZCBzZW5kUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBjb25zdDsKKworcHJp
dmF0ZToKKyAgICBWZWN0b3I8RnJvbnRlbmRDaGFubmVsKiwgMj4gbV9jb25uZWN0aW9uczsKK307
CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVj
dG9yRnJvbnRlbmRSb3V0ZXJfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmNwcAppbmRleCAxMWQ4NmVkMzI5NzUwMzE3MzcxNmE4NWQ5MzU4MDhmYzY3N2I1ZDQ4Li5mNjY0
N2VkZWU3MzVjMjhmOWFjYTI4NDQwZmE2NDBhNTQ3YmJiNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSW5z
cGVjdG9yQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kUm91dGVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
Q29uc29sZUNsaWVudC5oIgpAQCAtNjMsNyArNjQsOCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyKEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBtX2dsb2Jh
bE9iamVjdChnbG9iYWxPYmplY3QpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6
Om1ha2VfdW5pcXVlPEluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIEluamVjdGVkU2NyaXB0
SG9zdDo6Y3JlYXRlKCkpKQotICAgICwgbV9mcm9udGVuZENoYW5uZWwobnVsbHB0cikKKyAgICAs
IG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQorICAgICwgbV9iYWNr
ZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIu
Y29weVJlZigpKSkKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRl
KCkpCiAgICAgLCBtX2luY2x1ZGVOYXRpdmVDYWxsU3RhY2tXaXRoRXhjZXB0aW9ucyh0cnVlKQog
ICAgICwgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24oZmFsc2UpCkBAIC05OCwyMiArMTAwLDIwIEBA
IEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6fkpTR2xvYmFsT2JqZWN0SW5zcGVj
dG9yQ29udHJvbGxlcigpCiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
OjpnbG9iYWxPYmplY3REZXN0cm95ZWQoKQogewotICAgIGRpc2Nvbm5lY3RGcm9udGVuZChEaXNj
b25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpOworICAgIGRpc2Nvbm5lY3RB
bGxGcm9udGVuZHMoKTsKIAogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5kaXNjb25uZWN0
KCk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0
RnJvbnRlbmQoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIGJvb2wgaXNBdXRvbWF0
aWNJbnNwZWN0aW9uKQogewotICAgIEFTU0VSVCghbV9mcm9udGVuZENoYW5uZWwpOwotICAgIEFT
U0VSVCghbV9iYWNrZW5kRGlzcGF0Y2hlcik7CisgICAgQVNTRVJUX0FSRyhmcm9udGVuZENoYW5u
ZWwsIGZyb250ZW5kQ2hhbm5lbCk7CiAKICAgICBtX2lzQXV0b21hdGljSW5zcGVjdGlvbiA9IGlz
QXV0b21hdGljSW5zcGVjdGlvbjsKIAotICAgIG1fZnJvbnRlbmRDaGFubmVsID0gZnJvbnRlbmRD
aGFubmVsOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9mcm9udGVuZFJvdXRlci0+Y29ubmVjdEZyb250
ZW5kKGZyb250ZW5kQ2hhbm5lbCk7CiAKLSAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoZnJvbnRlbmRDaGFubmVsLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKKyAg
ICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoZnJvbnRlbmRDaGFubmVsLCAm
bV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSUykKICAgICBtX2luc3BlY3RvckFnZW50LT5hY3RpdmF0ZUV4dHJhRG9t
YWlucyhtX2FnZW50cy5leHRyYURvbWFpbnMoKSk7CkBAIC0xMjMsMTYgKzEyMywyNyBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbgogI2VuZGlmCiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoRGlzY29ubmVjdFJlYXNvbiByZWFz
b24pCit2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZy
b250ZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQogewotICAgIGlmICghbV9m
cm9udGVuZENoYW5uZWwpCi0gICAgICAgIHJldHVybjsKKyAgICBBU1NFUlRfQVJHKGZyb250ZW5k
Q2hhbm5lbCwgZnJvbnRlbmRDaGFubmVsKTsKKworICAgIG1fYWdlbnRzLndpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisK
KyAgICBtX2Zyb250ZW5kUm91dGVyLT5kaXNjb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVs
KTsKKworICAgIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2U7CisKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyAgICBpZiAobV9hdWdtZW50aW5nQ2xp
ZW50KQorICAgICAgICBtX2F1Z21lbnRpbmdDbGllbnQtPmluc3BlY3RvckRpc2Nvbm5lY3RlZCgp
OworI2VuZGlmCit9CiAKLSAgICBtX2FnZW50cy53aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChyZWFzb24pOwordm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nv
bm5lY3RBbGxGcm9udGVuZHMoKQoreworICAgIG1fYWdlbnRzLndpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCk7CiAK
LSAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5jbGVhckZyb250ZW5kKCk7Ci0gICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOwor
ICAgIG1fZnJvbnRlbmRSb3V0ZXItPmRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKTsKIAogICAgIG1f
aXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2U7CiAKQEAgLTE0NCwxNSArMTU1LDExIEBAIHZv
aWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQo
RGlzY29ubmVjdFJlYXNvbiByZWFzCiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogewotICAgIGlmIChtX2JhY2tlbmREaXNwYXRjaGVyKQotICAgICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5kaXNw
YXRjaChtZXNzYWdlKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXI6OnBhdXNlKCkKIHsKLSAgICBpZiAoIW1fZnJvbnRlbmRDaGFubmVsKQotICAgICAgICByZXR1
cm47Ci0KICAgICBFcnJvclN0cmluZyBkdW1teUVycm9yOwogICAgIG1fZGVidWdnZXJBZ2VudC0+
ZW5hYmxlKGR1bW15RXJyb3IpOwogICAgIG1fZGVidWdnZXJBZ2VudC0+cGF1c2UoZHVtbXlFcnJv
cik7CkBAIC0yNjIsMTMgKzI2OSwxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlcjo6YXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdAogewogICAg
IFN0cmluZyBkb21haW5OYW1lID0gYWdlbnQtPmRvbWFpbk5hbWUoKTsKIAotICAgIGlmIChtX2Zy
b250ZW5kQ2hhbm5lbCkKLSAgICAgICAgYWdlbnQtPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChtX2Zyb250ZW5kQ2hhbm5lbCwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgYWdl
bnQtPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChtX2Zyb250ZW5kUm91dGVyLT5sZWFrQ2hh
bm5lbCgpLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAKICAgICBtX2FnZW50cy5hcHBl
bmRFeHRyYUFnZW50KFdURjo6bW92ZShhZ2VudCkpOwogCi0gICAgaWYgKG1fZnJvbnRlbmRDaGFu
bmVsKQotICAgICAgICBtX2luc3BlY3RvckFnZW50LT5hY3RpdmF0ZUV4dHJhRG9tYWluKGRvbWFp
bk5hbWUpOworICAgIG1faW5zcGVjdG9yQWdlbnQtPmFjdGl2YXRlRXh0cmFEb21haW4oZG9tYWlu
TmFtZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgK
aW5kZXggNmUzZjk0ZWFjMjM0ZWM4OTgzNjk4Y2VhYzczZjE2ZTAzNjA0Y2JjZi4uYWFlMzJlM2M4
OTkzYmY3MDdlNjZiN2Y1MjA1ODIzMmE3M2E3Mzk3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVj
dG9yQ29udHJvbGxlci5oCkBAIC01Myw2ICs1Myw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3Igewog
CiBjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEZyb250ZW5kQ2hhbm5lbDsKK2NsYXNz
IEZyb250ZW5kUm91dGVyOwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5z
cGVjdG9yQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQ7CkBAIC03Myw3ICs3NCw5
IEBAIHB1YmxpYzoKICAgICB+SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKCk7CiAK
ICAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21h
dGljSW5zcGVjdGlvbik7Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoRGlzY29ubmVjdFJl
YXNvbik7CisgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRDaGFubmVsKik7Cisg
ICAgdm9pZCBkaXNjb25uZWN0QWxsRnJvbnRlbmRzKCk7CisKICAgICB2b2lkIGRpc3BhdGNoTWVz
c2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgZ2xvYmFsT2JqZWN0
RGVzdHJveWVkKCk7CkBAIC05OSw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBBdWdt
ZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQqIGF1Z21lbnRhYmxlSW5zcGVjdG9yQ29u
dHJvbGxlckNsaWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXVnbWVudGluZ0NsaWVu
dDsgfSAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVy
Q2xpZW50KEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCogY2xpZW50KSBvdmVy
cmlkZSB7IG1fYXVnbWVudGluZ0NsaWVudCA9IGNsaWVudDsgfQogCi0gICAgdmlydHVhbCBGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
ZnJvbnRlbmRDaGFubmVsOyB9CisgICAgdmlydHVhbCBjb25zdCBGcm9udGVuZFJvdXRlciYgZnJv
bnRlbmRSb3V0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Zyb250ZW5kUm91dGVyLmdl
dCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZEV4dHJhQWdlbnQoc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3RvckFnZW50QmFzZT4pIG92ZXJyaWRlOwogI2VuZGlmCiAKQEAgLTExMyw4ICsxMTYs
OCBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudCogbV9jb25zb2xlQWdlbnQ7
CiAgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFnZW50OwogICAgIEFnZW50
UmVnaXN0cnkgbV9hZ2VudHM7Ci0gICAgRnJvbnRlbmRDaGFubmVsKiBtX2Zyb250ZW5kQ2hhbm5l
bDsKLSAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Cisg
ICAgUmVmPEZyb250ZW5kUm91dGVyPiBtX2Zyb250ZW5kUm91dGVyOworICAgIFJlZjxCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBSZWY8V1RGOjpTdG9wd2F0Y2g+
IG1fZXhlY3V0aW9uU3RvcHdhdGNoOwogICAgIGJvb2wgbV9pbmNsdWRlTmF0aXZlQ2FsbFN0YWNr
V2l0aEV4Y2VwdGlvbnM7CiAgICAgYm9vbCBtX2lzQXV0b21hdGljSW5zcGVjdGlvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQXVnbWVu
dGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDI0
NTZhYzU5MTlkOGEwZDU2NTlkNmY3MWNjMDc1ODhmNmM3NzY4YjIuLmIwZDI1YjBiNjcyYTI5Njdj
YWZmNTc4YmY0ZjU4ODhlOWU5NTRmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BdWdtZW50
YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShJ
TlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4KIAogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKQEAgLTQyLDEwICs0MiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBBdWdtZW50YWJs
ZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQqIGF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxl
ckNsaWVudCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXVnbWVudGFibGVJbnNw
ZWN0b3JDb250cm9sbGVyQ2xpZW50KEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVu
dCopID0gMDsKIAotICAgIHZpcnR1YWwgRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBGcm9udGVuZFJvdXRlciYgZnJvbnRlbmRS
b3V0ZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZEV4dHJhQWdlbnQoc3Rk
Ojp1bmlxdWVfcHRyPEluc3BlY3RvckFnZW50QmFzZT4pID0gMDsKIAotICAgIGJvb2wgY29ubmVj
dGVkKCkgY29uc3QgeyByZXR1cm4gISFmcm9udGVuZENoYW5uZWwoKTsgfQorICAgIGJvb2wgY29u
bmVjdGVkKCkgY29uc3QgeyByZXR1cm4gZnJvbnRlbmRSb3V0ZXIoKS5oYXNGcm9udGVuZHMoKTsg
fQogfTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlLmgKaW5kZXggMDY0YjgzYWU4MzgzOGUxYWIzNmU1ZTc1ZjA2ZjZmOTc1MGYwODgw
OS4uZGEyNDI5OWU0ZGQyNWYzNmYyMTU2NWI2MTNhNmRjMDZkYWJiMDE3NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgY29ubmVjdChGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlv
bikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaXNjb25uZWN0KEZyb250ZW5kQ2hhbm5lbCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpIHsgfSAvLyBEZWZhdWx0
IGlzIHRvIGRvIG5vdGhpbmcuCiAgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgeyB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbQppbmRleCBi
ZWRhYWQ3ZmFlNDBjNThjODk2NzJlNGQxYTBiMGE1MTFlOTY1YWI0Li5lZDZjZDYwZGNjMDEwMWQw
YjhmNmQzNWE4ODQxZjNmZTIxZjQ5MDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbQpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmNsb3NlKCkKIAogICAgICAgICAgICAg
aWYgKG1fZGVidWdnYWJsZSkgewogICAgICAgICAgICAgICAgIGlmIChtX2Nvbm5lY3RlZCkKLSAg
ICAgICAgICAgICAgICAgICAgbV9kZWJ1Z2dhYmxlLT5kaXNjb25uZWN0KCk7CisgICAgICAgICAg
ICAgICAgICAgIG1fZGVidWdnYWJsZS0+ZGlzY29ubmVjdCh0aGlzKTsKIAogICAgICAgICAgICAg
ICAgIG1fZGVidWdnYWJsZSA9IG51bGxwdHI7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9j
cHBfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYWx0ZXJuYXRl
X2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKaW5kZXggZDRhOGQ1YWZlZWQ0NDUyZWU5ZmJm
NzhlYTUyYjk0MzNmYWIyMzY3OC4uMzc1Y2UwNWNhNDRhYjRlNDA5NTU4MzU0NjczNzAzMzIyZDU5
MWFiNCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2FsdGVybmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVy
LnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX2NwcF9hbHRlcm5hdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weQpAQCAt
NDcsNiArNDcsNyBAQCBjbGFzcyBDcHBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdl
bmVyYXRvcihHZW5lcmF0b3IpOgogICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CiAgICAg
ICAgIGhlYWRlcnMgPSBbCiAgICAgICAgICAgICAnIkluc3BlY3RvclByb3RvY29sVHlwZXMuaCIn
LAorICAgICAgICAgICAgJzxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4nLAog
ICAgICAgICAgICAgJzxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
PicsCiAgICAgICAgIF0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBs
ZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkK
aW5kZXggMTI1MTE0OTMzY2U5Mjg4MTViNDJkNDUyZjUyM2VhZWNkMzA3YTExZS4uYjM2YzBiMTNj
MDhkOTExMTI5NDY0N2I2Yjg2ZGJkYmUyOGJmZDczNSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRf
ZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVy
X2ltcGxlbWVudGF0aW9uLnB5CkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIENwcEJhY2tlbmREaXNw
YXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICBkZWYgZ2VuZXJh
dGVfb3V0cHV0KHNlbGYpOgogICAgICAgICBzZWNvbmRhcnlfaGVhZGVycyA9IFsKICAgICAgICAg
ICAgICc8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPicsCisgICAgICAgICAg
ICAnPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPicsCiAgICAgICAgICAgICAn
PGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4nLAogICAgICAgICAgICAgJzx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4nLAogICAgICAgICAgICAgJzx3dGYvdGV4dC9DU3RyaW5nLmg+J10KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNf
ZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCBmYjJkZTRmNjFmM2Zj
MDFkN2E0NjA4MDhhOTg1NWM1YWRhMmY5MDAwLi45NDAxOGU1OWY2ZmFmNjAyMDdiYWVjZDY1YmI1
NTNhNTJiMGZlNTdkIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVt
ZW50YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9u
LnB5CkBAIC05OCw5ICs5OCw3IEBAIGNsYXNzIE9iakNGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1l
bnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBsaW5lcyA9IFtdCiAgICAgICAg
IGxpbmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9ldmVudF9zaWduYXR1cmUoZG9tYWluLCBldmVu
dCkpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgneycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAg
IEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gX2NvbnRyb2xsZXItPmZyb250ZW5k
Q2hhbm5lbCgpOycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlmICghZnJvbnRlbmRDaGFu
bmVsKScpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICByZXR1cm47JykKKyAgICAgICAg
bGluZXMuYXBwZW5kKCcgICAgY29uc3QgRnJvbnRlbmRSb3V0ZXImIHJvdXRlciA9IF9jb250cm9s
bGVyLT5mcm9udGVuZFJvdXRlcigpOycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKIAogICAg
ICAgICByZXF1aXJlZF9wb2ludGVyX3BhcmFtZXRlcnMgPSBmaWx0ZXIobGFtYmRhIHBhcmFtZXRl
cjogbm90IHBhcmFtZXRlci5pc19vcHRpb25hbCBhbmQgT2JqQ0dlbmVyYXRvci5pc190eXBlX29i
amNfcG9pbnRlcl90eXBlKHBhcmFtZXRlci50eXBlKSwgZXZlbnQuZXZlbnRfcGFyYW1ldGVycykK
QEAgLTEyNiw3ICsxMjQsNyBAQCBjbGFzcyBPYmpDRnJvbnRlbmREaXNwYXRjaGVySW1wbGVtZW50
YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAganNv
bk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm1ldGhvZCIpLCBBU0NJSUxpdGVyYWwo
IiVzLiVzIikpOycgJSAoZG9tYWluLmRvbWFpbl9uYW1lLCBldmVudC5ldmVudF9uYW1lKSkKICAg
ICAgICAgaWYgZXZlbnQuZXZlbnRfcGFyYW1ldGVyczoKICAgICAgICAgICAgIGxpbmVzLmV4dGVu
ZChzZWxmLl9nZW5lcmF0ZV9ldmVudF9vdXRfcGFyYW1ldGVycyhkb21haW4sIGV2ZW50KSkKLSAg
ICAgICAgbGluZXMuYXBwZW5kKCcgICAgZnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJv
bnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsnKQorICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICByb3V0ZXIuc2VuZEV2ZW50KGpzb25NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7JykK
ICAgICAgICAgbGluZXMuYXBwZW5kKCd9JykKICAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5l
cykKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKaW5kZXggZWVjYzViYTAzMGFiNTQwY2E1ZTQzZGRkNWFh
OGFkMjJjMzczNjkxZS4uMmFlYTIwMzVmMzFhZmVmOWU3YTFlNjEzZTVlYjQ3MmFiNGU1MDZhOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdERlYnVnZ2FibGUuY3BwCkBAIC01NiwxMSArNTYsMTEgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdERlYnVnZ2FibGU6OmNvbm5lY3QoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWws
IGJvb2wgYXUKICAgICBtX2dsb2JhbE9iamVjdC5pbnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVj
dEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCwgYXV0b21hdGljSW5zcGVjdGlvbik7CiB9CiAKLXZv
aWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KCkKK3ZvaWQgSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoJm1fZ2xvYmFsT2JqZWN0LnZtKCkpOwog
Ci0gICAgbV9nbG9iYWxPYmplY3QuaW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9u
dGVuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOworICAgIG1fZ2xvYmFs
T2JqZWN0Lmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRD
aGFubmVsKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OnBhdXNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlLmgKaW5kZXggNjBjZTU4YTQ0Yzc5MzU5YTc3MzlhOTA3OWI5OTMwZGQxMmFiYTM5
NC4uMDNmZDE3ZDBmZjBhNDY2Njk2NjU5M2EyMjZjNTA0ZjNlMTZhMmFhYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dh
YmxlLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNMb2Nh
bERlYnVnZ2VyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgYm9vbCBhdXRvbWF0
aWNJbnNwZWN0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRD
aGFubmVsKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21S
ZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZFJvdXRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhOWI2YTdmYzQ3ZGQxNjllMjZhNDY1Y2YzYjc0ZTNhNDQz
YTYyOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaApAQCAtMCwwICsxLDQgQEAKKyNp
Zm5kZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXJfaAorI2RlZmluZSBXZWJD
b3JlX0ZXRF9JbnNwZWN0b3JGcm9udGVuZFJvdXRlcl9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggMDUwOTY0ZmE3NWJhOGY3ZDll
ZDVjMjdhNTliOWIwZTQ0ZTA4Y2JkMC4uOTYzZjcwYzI0MDE1ZjhhZmQxMzVlMGVlN2M3YTJhY2Vm
NDkxZjQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qCkBAIC0yMDM5Myw2ICsyMDM5Myw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3Bl
Y3RvclxJbnNwZWN0b3JFbnZpcm9ubWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVj
dG9yXEluc3BlY3RvckZyb250ZW5kUm91dGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXJzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xp
bnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvclByb3Rv
Y29sT2JqZWN0cy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVu
dC5oCmluZGV4IGVlN2Q4ZmFjNDY1ZDFlNWNlZGUyMGUyYzE4ZWRlNWQ1ZjgxMDYxMWUuLjZkMzlh
NGM5MmFkY2Y1Mjg2ZjI0ODE1MmVjMWM1MjY5M2JhZGRkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTI3LDExICsyNywxNCBAQAogI2lmbmRlZiBJ
bnNwZWN0b3JDbGllbnRfaAogI2RlZmluZSBJbnNwZWN0b3JDbGllbnRfaAogCi0jaW5jbHVkZSAi
SW5zcGVjdG9yRm9yd2FyZGluZy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCituYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKK2NsYXNzIEZyb250ZW5kQ2hhbm5lbDsKK30KKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBGbG9hdFJlY3Q7CkBAIC00NSw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNv
bnRyb2xsZXIqKSA9IDA7CisgICAgdmlydHVhbCBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCog
b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNpemVN
YWluRnJhbWUoRnJhbWUqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCAzYjAxMjNkZmFiNTZmNTlkMDBmYjFjNjc0YWJlZDgz
MmEwMzc2N2UxLi40MzhkNmI1Y2E5NGM4ZjhlNDYzMDI1YTgyZjIzNDlhZDJiNTk2ZTI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBA
IC02OCw2ICs2OCw3IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
cy5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmg+
CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+CiAjaW5jbHVk
ZSA8aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oPgogI2luY2x1ZGUgPHByb2ZpbGVy
L0xlZ2FjeVByb2ZpbGVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KQEAgLTg2LDYg
Kzg3LDggQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlJiBw
YWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICA6IG1faW5zdHJ1bWVudGluZ0Fn
ZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+
KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fb3Zlcmxh
eShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvck92ZXJsYXk+KHBhZ2UsIGluc3BlY3RvckNsaWVu
dCkpCisgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKKyAg
ICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250
ZW5kUm91dGVyLmNvcHlSZWYoKSkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0
Y2g6OmNyZWF0ZSgpKQogICAgICwgbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2luc3BlY3RvckNsaWVu
dChpbnNwZWN0b3JDbGllbnQpCkBAIC0xNzcsNyArMTgwLDggQEAgSW5zcGVjdG9yQ29udHJvbGxl
cjo6fkluc3BlY3RvckNvbnRyb2xsZXIoKQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omlu
c3BlY3RlZFBhZ2VEZXN0cm95ZWQoKQogewotICAgIGRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25u
ZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpOworICAgIGRpc2Nvbm5lY3RBbGxG
cm9udGVuZHMoKTsKKwogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5kaXNjb25uZWN0KCk7
CiAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmluc3BlY3RvckRlc3Ryb3llZCgpOwogICAgIG1faW5z
cGVjdG9yQ2xpZW50ID0gbnVsbHB0cjsKQEAgLTE5MCwxMiArMTk0LDEyIEBAIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQqIGluCiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzTG9jYWxGcm9udGVu
ZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZnJvbnRlbmRDaGFubmVsICYmIG1fZnJvbnRlbmRD
aGFubmVsLT5jb25uZWN0aW9uVHlwZSgpID09IEZyb250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5
cGU6OkxvY2FsOworICAgIHJldHVybiBtX2Zyb250ZW5kUm91dGVyLT5oYXNMb2NhbEZyb250ZW5k
KCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzUmVtb3RlRnJvbnRlbmQoKSBj
b25zdAogewotICAgIHJldHVybiBtX2Zyb250ZW5kQ2hhbm5lbCAmJiBtX2Zyb250ZW5kQ2hhbm5l
bC0+Y29ubmVjdGlvblR5cGUoKSA9PSBGcm9udGVuZENoYW5uZWw6OkNvbm5lY3Rpb25UeXBlOjpS
ZW1vdGU7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRSb3V0ZXItPmhhc1JlbW90ZUZyb250ZW5kKCk7
CiB9CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQoKSBjb25zdApAQCAtMjE3LDc2ICsyMjEsOTYgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lLCBET01XcmFwcGVyV28K
ICAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudC0+d2luZG93T2JqZWN0Q2xlYXJlZCgp
OwogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBib29sIGlzQXV0b21hdGljSW5z
cGVjdGlvbikKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikK
IHsKLSAgICBBU1NFUlQoZnJvbnRlbmRDaGFubmVsKTsKKyAgICBBU1NFUlRfQVJHKGZyb250ZW5k
Q2hhbm5lbCwgZnJvbnRlbmRDaGFubmVsKTsKICAgICBBU1NFUlQobV9pbnNwZWN0b3JDbGllbnQp
OwotICAgIEFTU0VSVCghbV9mcm9udGVuZENoYW5uZWwpOwotICAgIEFTU0VSVCghbV9iYWNrZW5k
RGlzcGF0Y2hlcik7CiAKICAgICBtX2lzQXV0b21hdGljSW5zcGVjdGlvbiA9IGlzQXV0b21hdGlj
SW5zcGVjdGlvbjsKIAotICAgIG1fZnJvbnRlbmRDaGFubmVsID0gZnJvbnRlbmRDaGFubmVsOwot
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGZyb250
ZW5kQ2hhbm5lbCk7CisgICAgbV9mcm9udGVuZFJvdXRlci0+Y29ubmVjdEZyb250ZW5kKGZyb250
ZW5kQ2hhbm5lbCk7CiAKLSAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
ZnJvbnRlbmRDaGFubmVsLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKKyAgICBtX2FnZW50
cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoZnJvbnRlbmRDaGFubmVsLCAmbV9iYWNrZW5k
RGlzcGF0Y2hlci5nZXQoKSk7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlZ2lz
dGVySW5zdHJ1bWVudGluZ0FnZW50cygqbV9pbnN0cnVtZW50aW5nQWdlbnRzKTsKICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmZyb250ZW5kQ3JlYXRlZCgpOwogCiAjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCi0gICAgaWYgKCFoYXNSZW1vdGVGcm9udGVuZCgpKQorICAgIGlmICgh
bV9mcm9udGVuZFJvdXRlci0+aGFzUmVtb3RlRnJvbnRlbmQoKSkKICAgICAgICAgbV9wYWdlLnJl
bW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CiAjZW5kaWYKIH0KIAotdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoRGlzY29ubmVjdFJlYXNvbiBy
ZWFzb24pCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkKIHsKLSAgICBpZiAoIW1fZnJvbnRlbmRDaGFu
bmVsKQotICAgICAgICByZXR1cm47CisgICAgLy8gVGhlIGxvY2FsIGZyb250ZW5kIGNsaWVudCBz
aG91bGQgYmUgZGlzY29ubmVjdGVkIGZpcnN0IHNvIGl0IHN0b3BzIHNlbmRpbmcgbWVzc2FnZXMu
CisgICAgQVNTRVJUKCFtX2Zyb250ZW5kUm91dGVyLT5oYXNMb2NhbEZyb250ZW5kKCkgfHwgIW1f
aW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOworCisgICAgbV9hZ2VudHMud2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKwor
ICAgIGJvb2wgZGlkSGF2ZVJlbW90ZUZyb250ZW5kID0gbV9mcm9udGVuZFJvdXRlci0+aGFzUmVt
b3RlRnJvbnRlbmQoKTsKKyAgICBtX2Zyb250ZW5kUm91dGVyLT5kaXNjb25uZWN0RnJvbnRlbmQo
ZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2lzQXV0b21hdGljSW5zcGVjdGlvbiA9IGZhbHNlOwor
CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZERlbGV0ZWQoKTsKKworICAg
IGlmICghbV9mcm9udGVuZFJvdXRlci0+aGFzRnJvbnRlbmRzKCkpIHsKKyAgICAgICAgLy8gUmVs
ZWFzZSBvdmVybGF5IHBhZ2UgcmVzb3VyY2VzLgorICAgICAgICBtX292ZXJsYXktPmZyZWVQYWdl
KCk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dW5yZWdpc3Rlckluc3RydW1l
bnRpbmdBZ2VudHMoKm1faW5zdHJ1bWVudGluZ0FnZW50cyk7CisgICAgfQogCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCi0gICAgaWYgKCFoYXNSZW1vdGVGcm9udGVuZCgpKQorICAgIGlm
ICghbV9mcm9udGVuZFJvdXRlci0+aGFzUmVtb3RlRnJvbnRlbmQoKSAmJiBkaWRIYXZlUmVtb3Rl
RnJvbnRlbmQpCiAgICAgICAgIG1fcGFnZS5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENo
YW5nZSgpOwogI2VuZGlmCit9CiAKLSAgICBtX2FnZW50cy53aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZChyZWFzb24pOwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0QWxs
RnJvbnRlbmRzKCkKK3sKKyAgICAvLyBUaGUgbG9jYWwgZnJvbnRlbmQgY2xpZW50IHNob3VsZCBi
ZSBkaXNjb25uZWN0ZWQgZmlyc3Qgc28gaXQgc3RvcHMgc2VuZGluZyBtZXNzYWdlcy4KKyAgICBB
U1NFUlQoIW1fZnJvbnRlbmRSb3V0ZXItPmhhc0xvY2FsRnJvbnRlbmQoKSB8fCAhbV9pbnNwZWN0
b3JGcm9udGVuZENsaWVudCk7CiAKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5jbGVhckZyb250
ZW5kKCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9mcm9udGVu
ZENoYW5uZWwgPSBudWxscHRyOworICAgIG1fYWdlbnRzLndpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCk7CiAKKyAg
ICBtX2Zyb250ZW5kUm91dGVyLT5kaXNjb25uZWN0QWxsRnJvbnRlbmRzKCk7CiAgICAgbV9pc0F1
dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKIAogICAgIC8vIFJlbGVhc2Ugb3ZlcmxheSBwYWdl
IHJlc291cmNlcy4KICAgICBtX292ZXJsYXktPmZyZWVQYWdlKCk7Ci0gICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpmcm9udGVuZERlbGV0ZWQoKTsKKworICAgIHdoaWxlIChJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpKQorICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmZyb250ZW5kRGVsZXRlZCgpOworCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp1bnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cygqbV9pbnN0cnVtZW50aW5nQWdlbnRz
KTsKKyAgICAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBtX3BhZ2UucmVtb3Rl
SW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKTsKKyNlbmRpZgogfQogCiB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OnNob3coKQogewotICAgIEFTU0VSVCghaGFzUmVtb3RlRnJvbnRlbmQo
KSk7CisgICAgQVNTRVJUKCFtX2Zyb250ZW5kUm91dGVyLT5oYXNSZW1vdGVGcm9udGVuZCgpKTsK
KworICAgIC8vIFRoZSBsb2NhbCBmcm9udGVuZCBjbGllbnQgc2hvdWxkIGJlIGRpc2Nvbm5lY3Rl
ZCBpZiB0aGVyZSdzIG5vIGxvY2FsIGZyb250ZW5kLgorICAgIEFTU0VSVChtX2Zyb250ZW5kUm91
dGVyLT5oYXNMb2NhbEZyb250ZW5kKCkgfHwgIW1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOwog
CiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2Zyb250
ZW5kQ2hhbm5lbCkKKyAgICBpZiAobV9mcm9udGVuZFJvdXRlci0+aGFzTG9jYWxGcm9udGVuZCgp
KQogICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+YnJpbmdGcm9udGVuZFRvRnJvbnQoKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgaWYgKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVu
ZENoYW5uZWwgPSBtX2luc3BlY3RvckNsaWVudC0+b3Blbkluc3BlY3RvckZyb250ZW5kKHRoaXMp
KSB7Ci0gICAgICAgICAgICBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiA9IGZhbHNlOwotICAg
ICAgICAgICAgY29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCwgaXNBdXRvbWF0aWNJbnNw
ZWN0aW9uKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBlbHNlIGlmIChJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gbV9pbnNwZWN0b3JDbGllbnQtPm9wZW5JbnNw
ZWN0b3JGcm9udGVuZCh0aGlzKSkKKyAgICAgICAgY29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hh
bm5lbCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xvc2UoKQogewotICAgIGlm
ICghbV9mcm9udGVuZENoYW5uZWwpCi0gICAgICAgIHJldHVybjsKLSAgICBkaXNjb25uZWN0RnJv
bnRlbmQoRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKLSAgICBtX2luc3Bl
Y3RvckNsaWVudC0+Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpOworICAgIGlmIChtX2Zyb250ZW5k
Um91dGVyLT5oYXNMb2NhbEZyb250ZW5kKCkpCisgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5j
bG9zZUluc3BlY3RvckZyb250ZW5kKCk7CisKKyAgICBBU1NFUlQoIW1fZnJvbnRlbmRSb3V0ZXIt
Pmhhc0xvY2FsRnJvbnRlbmQoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0
UHJvY2Vzc0lkKGxvbmcgcHJvY2Vzc0lkKQpAQCAtMzM3LDggKzM2MSw3IEBAIFBhZ2UmIEluc3Bl
Y3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFBhZ2UoKSBjb25zdAogCiB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiB7Ci0gICAgaWYgKG1fYmFja2VuZERpc3BhdGNoZXIpCi0gICAgICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPmRpc3BhdGNoKG1lc3NhZ2UpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXItPmRp
c3BhdGNoKG1lc3NhZ2UpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmhpZGVIaWdo
bGlnaHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmgKaW5kZXggY2ViM2RlMmFmMTViODRiY2I3N2JiYWFkZGNlMjE1NzI3YmI0YTlmMC4uZGJmYmUz
ZmRlODhhOTM2ZWRjMjVkNTJiMGEyMzA5MTMyZTQwNGMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC00NCw2ICs0NCw3IEBACiBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEJhY2tlbmREaXNwYXRjaGVyOwogY2xhc3MgRnJvbnRl
bmRDaGFubmVsOworY2xhc3MgRnJvbnRlbmRSb3V0ZXI7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsK
IGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIApAQCAtOTcsOCArOTgsOSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBoYXNMb2NhbEZyb250ZW5kKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNSZW1vdGVGcm9udGVu
ZCgpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5z
cGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpEaXNj
b25uZWN0UmVhc29uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3RGcm9udGVuZChJ
bnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uID0g
ZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzY29ubmVjdEZyb250ZW5kKEluc3Bl
Y3Rvcjo6RnJvbnRlbmRDaGFubmVsKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNjb25u
ZWN0QWxsRnJvbnRlbmRzKCk7CiAgICAgdm9pZCBzZXRQcm9jZXNzSWQobG9uZyk7CiAKICAgICB2
b2lkIGluc3BlY3QoTm9kZSopOwpAQCAtMTQ5LDggKzE1MSw4IEBAIHByaXZhdGU6CiAgICAgSW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudCogbV9kb21EZWJ1Z2dlckFnZW50OwogICAgIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIG1fdGltZWxpbmVBZ2VudDsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6
OkJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwotICAgIEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsKiBtX2Zyb250ZW5kQ2hhbm5lbCB7IG51bGxwdHIgfTsKKyAgICBSZWY8
SW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcj4gbV9mcm9udGVuZFJvdXRlcjsKKyAgICBSZWY8SW5z
cGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBSZWY8
V1RGOjpTdG9wd2F0Y2g+IG1fZXhlY3V0aW9uU3RvcHdhdGNoOwogICAgIFBhZ2UmIG1fcGFnZTsK
ICAgICBJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCmluZGV4IGJlMjdm
OTU2MTQ0NTlmYmZmZDFiMDJkNDg1Y2YxZDc3ZGVkOTY2ZWQuLjEyYWI1NDNiNzM4ZWZjMDQ3ZGVi
OTkyMDAxMDA5OWQ0N2JmODRiZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRl
ICJTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgog
I2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZFJvdXRlci5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDE3MmZiNTgxMjgwMjBhM2Fl
NTVkNjVkNGYwOGY1N2FlMTZhMGVjZjcuLmMwM2JmN2U2MmIzYWQwMzVkMzNiOTJkZWQ2OGQ2YzRk
ZDk2MmFkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcApAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1h
bmFnZXIuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVy
cy5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPgogI2lu
Y2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggN2I1NmEwZmY5
ZDE1OGY2YmE4YjEzNTNhMGJhYjJlNGQwZTg5YTFkNy4uNTNlMGJjYjI2ODIwYzUyMGQyNTMwOWFm
YzNhZmE1MWYxNWJkMzRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0lk
ZW50aWZpZXJzRmFjdG9yeS5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZFJvdXRlci5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNs
dWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1Nj
cmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCAxMmNlZDQ2MDgzZDBjZTNj
NWRjNDY3ZWEwMWE4NzdiYjM2MGUwYjViLi4xYjAyNzU5YTE3NzRhMzdiMjBmYTRkY2QxNjg0OTlm
Njk0YTZkZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiV29y
a2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMu
aD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4KICNpbmNs
dWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CkBAIC04
MSw2ICs4Miw4IEBAIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsCiAgICAgLCBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRo
aXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQogICAgICwgbV9ydW50aW1lQWdl
bnQobnVsbHB0cikKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRl
KCkpCisgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKKyAg
ICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250
ZW5kUm91dGVyLmNvcHlSZWYoKSkpCiB7CiAgICAgYXV0byBydW50aW1lQWdlbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdvcmtlclJ1bnRpbWVBZ2VudD4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0
KCksICZ3b3JrZXJHbG9iYWxTY29wZSk7CiAgICAgbV9ydW50aW1lQWdlbnQgPSBydW50aW1lQWdl
bnQuZ2V0KCk7CkBAIC0xMTUsMjcgKzExOCwyNyBAQCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
Ojp+V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpCiAKIHZvaWQgV29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKCkKIHsKLSAgICBBU1NFUlQoIW1fZnJvbnRlbmRDaGFu
bmVsKTsKLSAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUluc3Bl
Y3RvclByb3h5PihtX3dvcmtlckdsb2JhbFNjb3BlKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVy
ID0gQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSk7Ci0g
ICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKG1fZnJvbnRlbmRDaGFubmVs
LmdldCgpLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKKyAgICBBU1NFUlQoIW1fZnJvbnRl
bmRSb3V0ZXItPmhhc0Zyb250ZW5kcygpKTsKKyAgICBBU1NFUlQoIW1fZm9yd2FyZGluZ0NoYW5u
ZWwpOworCisgICAgbV9mb3J3YXJkaW5nQ2hhbm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUlu
c3BlY3RvclByb3h5PihtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBtX2Zyb250ZW5kUm91dGVy
LT5jb25uZWN0RnJvbnRlbmQobV9mb3J3YXJkaW5nQ2hhbm5lbC5nZXQoKSk7CisgICAgbV9hZ2Vu
dHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKG1fZm9yd2FyZGluZ0NoYW5uZWwuZ2V0KCks
ICZtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIH0KIAogdm9pZCBXb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29u
IHJlYXNvbikKIHsKLSAgICBpZiAoIW1fZnJvbnRlbmRDaGFubmVsKQotICAgICAgICByZXR1cm47
CisgICAgQVNTRVJUKG1fZnJvbnRlbmRSb3V0ZXItPmhhc0Zyb250ZW5kcygpKTsKKyAgICBBU1NF
UlQobV9mb3J3YXJkaW5nQ2hhbm5lbCk7CiAKICAgICBtX2FnZW50cy53aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChyZWFzb24pOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXItPmNsZWFyRnJv
bnRlbmQoKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLSAgICBtX2Zyb250
ZW5kQ2hhbm5lbCA9IG51bGxwdHI7CisgICAgbV9mcm9udGVuZFJvdXRlci0+ZGlzY29ubmVjdEZy
b250ZW5kKG1fZm9yd2FyZGluZ0NoYW5uZWwuZ2V0KCkpOworICAgIG1fZm9yd2FyZGluZ0NoYW5u
ZWwgPSBudWxscHRyOwogfQogCiB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3Bh
dGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgaWYg
KG1fYmFja2VuZERpc3BhdGNoZXIpCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPmRpc3Bh
dGNoKG1lc3NhZ2UpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXItPmRpc3BhdGNoKG1lc3NhZ2Up
OwogfQogCiB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3VtZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaApp
bmRleCA5Njc0MDgzY2RlY2FkYzkxZTUwMzAyMjI3ZmRjNGQxYTkxOGJlYTA0Li5hYTRmNDNmZDgx
MzAzMTY1ZjliZWY3ZjQyYjZjMTczYjE3ZjE1ZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTQxLDYgKzQxLDEw
IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAor
bmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBGcm9udGVuZFJvdXRlcjsKK307CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOwpAQCAtNzgs
OSArODIsMTAgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyPiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBXb3JrZXJSdW50aW1lQWdl
bnQqIG1fcnVudGltZUFnZW50OwogICAgIEluc3BlY3Rvcjo6QWdlbnRSZWdpc3RyeSBtX2FnZW50
czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWw+IG1fZnJv
bnRlbmRDaGFubmVsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkZyb250ZW5kQ2hh
bm5lbD4gbV9mb3J3YXJkaW5nQ2hhbm5lbDsKICAgICBSZWY8V1RGOjpTdG9wd2F0Y2g+IG1fZXhl
Y3V0aW9uU3RvcHdhdGNoOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
PiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZjxJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVy
PiBtX2Zyb250ZW5kUm91dGVyOworICAgIFJlZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
PiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIFZlY3RvcjxJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUsIDI+IG1faW5qZWN0ZWRTY3JpcHRJbnN0cnVtZW50YXRpb25Db29raWVzOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcAppbmRleCBmZTdiMjk0ODZhZGU4
YjRmYTNmM2Y0OWEwZWZhZDljZDcwMDk3ZGRkLi4yNDk4M2JlYzRhNzljZTczOGI0M2U5MGUyOGRj
MDA1ZTM4YTZiNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dh
YmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcApAQCAt
ODAsMTAgKzgwLDEwIEBAIHZvaWQgUGFnZURlYnVnZ2FibGU6OmNvbm5lY3QoSW5zcGVjdG9yOjpG
cm9udGVuZENoYW5uZWwqIGNoYW5uZWwsIGJvb2wgaXNBdXRvbWF0CiAgICAgaW5zcGVjdG9yQ29u
dHJvbGxlci5jb25uZWN0RnJvbnRlbmQoY2hhbm5lbCwgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsK
IH0KIAotdm9pZCBQYWdlRGVidWdnYWJsZTo6ZGlzY29ubmVjdCgpCit2b2lkIFBhZ2VEZWJ1Z2dh
YmxlOjpkaXNjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBjaGFubmVsKQogewog
ICAgIEluc3BlY3RvckNvbnRyb2xsZXImIGluc3BlY3RvckNvbnRyb2xsZXIgPSBtX3BhZ2UuaW5z
cGVjdG9yQ29udHJvbGxlcigpOwotICAgIGluc3BlY3RvckNvbnRyb2xsZXIuZGlzY29ubmVjdEZy
b250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsK
KyAgICBpbnNwZWN0b3JDb250cm9sbGVyLmRpc2Nvbm5lY3RGcm9udGVuZChjaGFubmVsKTsKIAog
ICAgIGlmIChtX2ZvcmNlZERldmVsb3BlckV4dHJhc0VuYWJsZWQpIHsKICAgICAgICAgbV9mb3Jj
ZWREZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1
Z2dhYmxlLmgKaW5kZXggNmFlZmNjM2NiNDViOTIwMTcwZTk3OTQ1OGJlNWFiMDYwYjM2YTRkMy4u
YjI5MDk0ZjU5OWMxYWMxZGQzZjVkZDIzNzQxYjVmZGIxYjZhYzU3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZURlYnVnZ2FibGUuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwg
dm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgYm9vbCBpc0F1dG9tYXRp
Y0luc3BlY3Rpb24pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENo
YW5uZWwqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJl
bW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHNldEluZGljYXRpbmcoYm9vbCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCAyYTVjN2ViYTg2NTUzZWNjYjM3ODc1YzY2NTlhYzVmMzkzOWJl
Y2EwLi4zYjllYWFjMmJlMjhmN2FjOGZkNGE3Mjg1MzNmZDI5MTE1MGY4Y2QxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNzMyLDkgKzE3MzIsOCBAQCBQYXNzUmVmUHRy
PERPTVdpbmRvdz4gSW50ZXJuYWxzOjpvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBT
dHJpbmcmIHVybCkKICAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JGcm9udGVuZENsaWVudER1bW15PigmcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBm
cm9udGVuZFBhZ2UpOwogICAgIGZyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNl
dEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1fZnJvbnRlbmRDbGllbnQuZ2V0KCkpOwogCi0gICAg
Ym9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKICAgICBtX2Zyb250ZW5kQ2hhbm5l
bCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRHVtbXk+KGZyb250
ZW5kUGFnZSk7Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVu
ZChtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSwgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKKyAgICBw
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKG1fZnJvbnRlbmRDaGFu
bmVsLmdldCgpKTsKIAogICAgIHJldHVybiBtX2Zyb250ZW5kV2luZG93OwogfQpAQCAtMTc0NSw5
ICsxNzQ0LDEzIEBAIHZvaWQgSW50ZXJuYWxzOjpjbG9zZUR1bW15SW5zcGVjdG9yRnJvbnRlbmQo
KQogICAgIEFTU0VSVChwYWdlKTsKICAgICBBU1NFUlQobV9mcm9udGVuZFdpbmRvdyk7CiAKLSAg
ICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rv
cjo6RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKyAgICBQYWdlKiBmcm9u
dGVuZFBhZ2UgPSBtX2Zyb250ZW5kV2luZG93LT5kb2N1bWVudCgpLT5wYWdlKCk7CisgICAgQVNT
RVJUKGZyb250ZW5kUGFnZSk7CiAKKyAgICBmcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChudWxscHRyKTsKICAgICBtX2Zyb250ZW5k
Q2xpZW50ID0gbnVsbHB0cjsKKworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNj
b25uZWN0RnJvbnRlbmQobV9mcm9udGVuZENoYW5uZWwuZ2V0KCkpOwogICAgIG1fZnJvbnRlbmRD
aGFubmVsID0gbnVsbHB0cjsKIAogICAgIG1fZnJvbnRlbmRXaW5kb3ctPmNsb3NlKG1fZnJvbnRl
bmRXaW5kb3ctPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IGM1MGRi
YjdhNThkOGI2NDM2MDA2YTVmOWMwY2Q4ZWRkOTc0ZDdiNmUuLjAxYjRiYzkwNGM3MzU3MWNkYjZh
M2M5MTM5MjJmMzQ4YmU1YWVlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGJyaW5nVG9Gcm9udCgpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBjbG9zZVdpbmRvdygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNj
b25uZWN0RnJvbUJhY2tlbmQoKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tQmFja2VuZCgpOwog
CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IDgw
NjAwM2E2MjQ1NDA1NzI5Y2FlZjhhNjcxMjNjNjMxNWJhZTRlOGUuLjZlNTQ1NmIzMTAzNWMxMjI5
NTI4MjEyZjllNGRkOGM3Y2Q3MmQ0ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTg3LDcgKzg3LDcgQEAg
LSAodm9pZClzZXRJbnNwZWN0b3JDbGllbnQ6KFdlYkluc3BlY3RvckNsaWVudCopaW5zcGVjdG9y
Q2xpZW50OwogLSAoV2ViSW5zcGVjdG9yQ2xpZW50KilpbnNwZWN0b3JDbGllbnQ7CiAtICh2b2lk
KXNldEF0dGFjaGVkV2luZG93SGVpZ2h0Oih1bnNpZ25lZCloZWlnaHQ7CiAtICh2b2lkKXNldERv
Y2tpbmdVbmF2YWlsYWJsZTooQk9PTCl1bmF2YWlsYWJsZTsKLS0gKHZvaWQpZGVzdHJveUluc3Bl
Y3RvclZpZXc6KGJvb2wpbm90aWZ5SW5zcGVjdG9yQ29udHJvbGxlcjsKKy0gKHZvaWQpZGVzdHJv
eUluc3BlY3RvclZpZXc7CiBAZW5kCiAKIApAQCAtMTMwLDYgKzEzMCw3IEBAIHZvaWQgV2ViSW5z
cGVjdG9yQ2xpZW50OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKCkKIAogdm9pZCBXZWJJbnNwZWN0
b3JDbGllbnQ6OmJyaW5nRnJvbnRlbmRUb0Zyb250KCkKIHsKKyAgICBBU1NFUlQobV9mcm9udGVu
ZENsaWVudCk7CiAgICAgbV9mcm9udGVuZENsaWVudC0+YnJpbmdUb0Zyb250KCk7CiB9CiAKQEAg
LTI1MiwxMiArMjUzLDEyIEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmJyaW5n
VG9Gcm9udCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNsb3NlV2luZG93
KCkKIHsKLSAgICBbbV93aW5kb3dDb250cm9sbGVyLmdldCgpIGRlc3Ryb3lJbnNwZWN0b3JWaWV3
OnRydWVdOworICAgIFttX3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgZGVzdHJveUluc3BlY3RvclZp
ZXddOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkaXNjb25uZWN0RnJv
bUJhY2tlbmQoKQogewotICAgIFttX3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgZGVzdHJveUluc3Bl
Y3RvclZpZXc6ZmFsc2VdOworICAgIFttX3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgZGVzdHJveUlu
c3BlY3RvclZpZXddOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRh
Y2hXaW5kb3coRG9ja1NpZGUpCkBAIC01MjIsNyArNTIzLDcgQEAgLSAoTlNSZWN0KXdpbmRvdzoo
TlNXaW5kb3cgKil3aW5kb3cgd2lsbFBvc2l0aW9uU2hlZXQ6KE5TV2luZG93ICopc2hlZXQgdXNp
bmdSZWMKIAogLSAoQk9PTCl3aW5kb3dTaG91bGRDbG9zZTooaWQpc2VuZGVyCiB7Ci0gICAgW3Nl
bGYgZGVzdHJveUluc3BlY3RvclZpZXc6dHJ1ZV07CisgICAgW3NlbGYgZGVzdHJveUluc3BlY3Rv
clZpZXddOwogCiAgICAgcmV0dXJuIFlFUzsKIH0KQEAgLTY3Niw3ICs2NzcsNyBAQCAtICh2b2lk
KXNldERvY2tpbmdVbmF2YWlsYWJsZTooQk9PTCl1bmF2YWlsYWJsZQogICAgIC8vIERvIG5vdGhp
bmcuCiB9CiAKLS0gKHZvaWQpZGVzdHJveUluc3BlY3RvclZpZXc6KGJvb2wpbm90aWZ5SW5zcGVj
dG9yQ29udHJvbGxlcgorLSAodm9pZClkZXN0cm95SW5zcGVjdG9yVmlldwogewogICAgIFJldGFp
blB0cjxXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyPiBwcm90ZWN0KHNlbGYpOwogCkBAIC02
OTIsOSArNjkzLDkgQEAgLSAodm9pZClkZXN0cm95SW5zcGVjdG9yVmlldzooYm9vbClub3RpZnlJ
bnNwZWN0b3JDb250cm9sbGVyCiAKICAgICBfdmlzaWJsZSA9IE5POwogCi0gICAgaWYgKG5vdGlm
eUluc3BlY3RvckNvbnRyb2xsZXIpIHsKLSAgICAgICAgaWYgKFBhZ2UqIGluc3BlY3RlZFBhZ2Ug
PSBbX2luc3BlY3RlZFdlYlZpZXcuZ2V0KCkgcGFnZV0pCi0gICAgICAgICAgICBpbnNwZWN0ZWRQ
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6
RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKyAgICBpZiAoUGFnZSogaW5z
cGVjdGVkUGFnZSA9IFtfaW5zcGVjdGVkV2ViVmlldy5nZXQoKSBwYWdlXSkgeworICAgICAgICBp
bnNwZWN0ZWRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQobnVsbHB0cik7CisgICAgICAgIGluc3BlY3RlZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoX2luc3BlY3RvckNsaWVudCk7CiAgICAgfQogCiAgICAg
W193ZWJWaWV3IGNsb3NlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDQ1ZDRhYjBkYTE2MDc0Yzc2YjA4
YmI2MzRkMTNhZGFiZDZkNmJhY2EuLjJhYmE1MzcyMGJkMDAwMDAyMTY2OGRjZTMzYWM5ODcxMmRm
OTMzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJv
bnRlbmQoSW5zCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVu
ZCgpCiB7CiAgICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGll
bnQtPmRlc3Ryb3lJbnNwZWN0b3JWaWV3KGZhbHNlKTsKKyAgICAgICAgbV9mcm9udGVuZENsaWVu
dC0+ZGVzdHJveUluc3BlY3RvclZpZXcoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6
OmJyaW5nRnJvbnRlbmRUb0Zyb250KCkKQEAgLTIzNyw3ICsyMzcsNyBAQCBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyogaW5zcGVj
dGVkV2ViVmlldwogCiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6fldlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50KCkKIHsKLSAgICBkZXN0cm95SW5zcGVjdG9yVmlldyh0cnVlKTsKKyAgICBk
ZXN0cm95SW5zcGVjdG9yVmlldygpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50Ojpmcm9udGVuZExvYWRlZCgpCkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6YnJpbmdUb0Zyb250KCkKIAogdm9pZCBXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDo6Y2xvc2VXaW5kb3coKQogewotICAgIGRlc3Ryb3lJbnNwZWN0b3JWaWV3KHRy
dWUpOworICAgIGRlc3Ryb3lJbnNwZWN0b3JWaWV3KCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ6OmF0dGFjaFdpbmRvdyhEb2NrU2lkZSkKQEAgLTQyMSw3ICs0MjEsNyBA
QCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzaG93V2luZG93V2l0aG91dE5vdGlm
aWNhdGlvbnMoKQogICAgIG1faW5zcGVjdG9yQ2xpZW50LT51cGRhdGVIaWdobGlnaHQoKTsKIH0K
IAotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGVzdHJveUluc3BlY3RvclZpZXco
Ym9vbCBub3RpZnlJbnNwZWN0b3JDb250cm9sbGVyKQordm9pZCBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6ZGVzdHJveUluc3BlY3RvclZpZXcoKQogewogICAgIG1faW5zcGVjdG9yQ2xpZW50
LT5yZWxlYXNlRnJvbnRlbmQoKTsKIApAQCAtNDMxLDEwICs0MzEsMTAgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6ZGVzdHJveUluc3BlY3RvclZpZXcoYm9vbCBub3RpZnlJbnNw
ZWN0b3JDb250cm8KIAogICAgIGNsb3NlV2luZG93V2l0aG91dE5vdGlmaWNhdGlvbnMoKTsKIAot
ICAgIGlmIChub3RpZnlJbnNwZWN0b3JDb250cm9sbGVyKSB7Ci0gICAgICAgIG1faW5zcGVjdGVk
V2ViVmlldy0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5k
KEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKLSAgICAg
ICAgbV9pbnNwZWN0b3JDbGllbnQtPnVwZGF0ZUhpZ2hsaWdodCgpOwotICAgIH0KKyAgICBtX2lu
c3BlY3RlZFdlYlZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KG51bGxwdHIpOworICAgIG1faW5zcGVjdGVkV2ViVmlldy0+cGFnZSgp
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKHRoaXMpOworICAgIG1f
aW5zcGVjdG9yQ2xpZW50LT51cGRhdGVIaWdobGlnaHQoKTsKKwogICAgIDo6RGVzdHJveVdpbmRv
dyhtX2Zyb250ZW5kSHduZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggOWZiMzg2ZTMxY2Q5NGRhMDdi
NjhmMmM1MWY4NTYzYjM5NTVlYzcyNC4uOTU2OGRhMDMzZmU0NjQ3N2FmZjEzY2I3MzQ4NzFhNjNl
MDMwMjJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBXVEY6OlN0cmluZyYgbmV3VVJM
KTsKIAotICAgIHZvaWQgZGVzdHJveUluc3BlY3RvclZpZXcoYm9vbCBub3RpZnlJbnNwZWN0b3JD
b250cm9sbGVyKTsKKyAgICB2b2lkIGRlc3Ryb3lJbnNwZWN0b3JWaWV3KCk7CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBjbG9zZVdpbmRvd1dpdGhvdXROb3RpZmljYXRpb25zKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5jcHAKaW5kZXggNWE3ZjE3MDBiZDE5YWJjYWE3Zjc4NTZkYTJhMDNlYjZj
ZTI2ZjFiMC4uNjZlOWJjNzBkYWMwNDQ4NzY5NDNmYjVkZDM5Y2RiMmE3NGQyMzZmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtODIsMTcgKzgyLDE5IEBAIHZvaWQgV2ViSW5z
cGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0aGlzOwogfQog
Ci1XZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6
b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitJ
bnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVj
dG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlcikKIHsKLSAgICBtX3Bh
Z2UtPmluc3BlY3RvcigpLT5jcmVhdGVJbnNwZWN0b3JQYWdlKGNvbnRyb2xsZXItPmlzVW5kZXJU
ZXN0KCkpOworICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPm9wZW5Gcm9udGVuZENvbm5lY3Rpb24o
Y29udHJvbGxlci0+aXNVbmRlclRlc3QoKSk7CiAKICAgICByZXR1cm4gbV9wYWdlLT5pbnNwZWN0
b3IoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRl
bmQoKQogewotICAgIGlmIChtX3BhZ2UtPmluc3BlY3RvcigpKQotICAgICAgICBtX3BhZ2UtPmlu
c3BlY3RvcigpLT5jbG9zZUZyb250ZW5kKCk7CisgICAgaWYgKG1fcGFnZS0+aW5zcGVjdG9yKCkp
IHsKKyAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlz
Y29ubmVjdEZyb250ZW5kKG1fcGFnZS0+aW5zcGVjdG9yKCkpOworICAgICAgICBtX3BhZ2UtPmlu
c3BlY3RvcigpLT5jbG9zZUZyb250ZW5kQ29ubmVjdGlvbigpOworICAgIH0KIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3JDbGllbnQ6OmJyaW5nRnJvbnRlbmRUb0Zyb250KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oCmluZGV4IDlhNDQwMGJlNWFiYTZiOTk1MTVmNmQ4OTFmNmU5YTgxNTY3OGE0MTUu
LmI4MzgwYjFiODhiMTc2MTQxZmZjNGE4NDU3Mzg4NDBkN2JkOThkOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBXZWJJbnNwZWN0b3JDbGll
bnRfaAogCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDbGllbnQuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0luc3BlY3RvckZvcndhcmRpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VPdmVy
bGF5Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIApAQCAtNTMsNyArNTIsNyBAQCBwcml2
YXRlOgogICAgIC8vIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudAogICAgIHZvaWQgaW5zcGVjdG9y
RGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
Kikgb3ZlcnJpZGU7CisgICAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0
b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBicmluZ0Zy
b250ZW5kVG9Gcm9udCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVzaXplTWFpbkZyYW1lKFdl
YkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IGUwYWQ3NTQ0NDU4NWQ4YTllN2EyZTcx
NjMxNWExNTE5Zjk1ZWZmYjkuLjU5NjlhYTIyZjM2ZGY5NDExZDVkYTEwNTZmMWQyNmQzMDIwZWQ1
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuY3BwCkBAIC03MCw3ICs3MCw3IEBAIFdlYkluc3BlY3Rvcjo6fldlYkluc3BlY3Rvcigp
CiB9CiAKIC8vIENhbGxlZCBmcm9tIFdlYkluc3BlY3RvckNsaWVudAotdm9pZCBXZWJJbnNwZWN0
b3I6OmNyZWF0ZUluc3BlY3RvclBhZ2UoYm9vbCB1bmRlclRlc3QpCit2b2lkIFdlYkluc3BlY3Rv
cjo6b3BlbkZyb250ZW5kQ29ubmVjdGlvbihib29sIHVuZGVyVGVzdCkKIHsKICNpZiBPUyhEQVJX
SU4pCiAgICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKQEAgLTkzLDcgKzkzLDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3I6OmNyZWF0ZUluc3BlY3RvclBhZ2UoYm9vbCB1bmRlclRlc3QpCiAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2UoY29ubmVjdGlv
bkNsaWVudFBvcnQsIGNhbkF0dGFjaFdpbmRvdygpLCB1bmRlclRlc3QpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OmNsb3NlRnJvbnRlbmQoKQordm9pZCBXZWJJ
bnNwZWN0b3I6OmNsb3NlRnJvbnRlbmRDb25uZWN0aW9uKCkKIHsKICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JQcm94eTo6RGlkQ2xvc2UoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiAKQEAgLTI2Miw4
ICsyNjIsNyBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKQog
ewogICAgIGlmIChtX3BhZ2UtPmNvcmVQYWdlKCkpIHsKICAgICAgICAgbV9yZW1vdGVGcm9udGVu
ZENvbm5lY3RlZCA9IHRydWU7Ci0gICAgICAgIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uID0g
ZmFsc2U7Ci0gICAgICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LmNvbm5lY3RGcm9udGVuZCh0aGlzLCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pOworICAgICAgICBt
X3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQo
dGhpcyk7CiAgICAgfQogfQogCkBAIC0yNzIsNyArMjcxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6
OnJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkKICAgICBtX3JlbW90ZUZyb250ZW5kQ29ubmVj
dGVkID0gZmFsc2U7CiAKICAgICBpZiAobV9wYWdlLT5jb3JlUGFnZSgpKQotICAgICAgICBtX3Bh
Z2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQo
SW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOworICAgICAg
ICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJv
bnRlbmQodGhpcyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCmluZGV4IDA0MDA4ZTE1ZGM3YTI2ZmZiYTM3N2FjYjA2
NzE1NjI4NjYxMWRlYTkuLjAwMTI4NzljZmE5YzZkMWI0NWQyMzA4ODBjZTIyZDk4ZGRiOGFkMjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
LmgKQEAgLTk3LDkgKzk3LDkgQEAgcHJpdmF0ZToKICAgICBib29sIGNhbkF0dGFjaFdpbmRvdygp
OwogCiAgICAgLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9yQ2xpZW50Ci0gICAgdm9pZCBjcmVh
dGVJbnNwZWN0b3JQYWdlKGJvb2wgdW5kZXJUZXN0KTsKKyAgICB2b2lkIG9wZW5Gcm9udGVuZENv
bm5lY3Rpb24oYm9vbCB1bmRlclRlc3QpOworICAgIHZvaWQgY2xvc2VGcm9udGVuZENvbm5lY3Rp
b24oKTsKIAotICAgIHZvaWQgY2xvc2VGcm9udGVuZCgpOwogICAgIHZvaWQgYnJpbmdUb0Zyb250
KCk7CiAKICAgICBXZWJQYWdlKiBtX3BhZ2U7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGMxZGRhNWY1YjI0ZTY3MTQxNzc3NjJjNjE4MjUwZTFl
NTExNDM1My4uMjY2MzU4MjA0NDI5ZDdmYzMxMDY1NTc3YzYxNjcwODM3NTEzYTc4MSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDE1LTA4LTI4ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IEluc3BlY3RvckNvbnRyb2xsZXIgc2hvdWxkIHN1cHBvcnQgbXVsdGlw
bGUgZnJvbnRlbmQgY2hhbm5lbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0ODUzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluc3BlY3RvckNsaWVudHMgbXVzdCBleHBsaWNpdGx5IGRpc2Nvbm5lY3Qg
dGhlaXIgZnJvbnRlbmQgY2hhbm5lbChzKSBmcm9tIHRoZQorICAgICAgICBpbnNwZWN0ZWQgcGFn
ZSdzIEluc3BlY3RvckNvbnRyb2xsZXIuCisKKyAgICAgICAgVG8gbWFrZSB0aGlzIHBvc3NpYmxl
LCBEdW1wUmVuZGVyVHJlZSBzaG91bGQgbm90IGRlc3Ryb3kgbm9uLXByaW1hcnkgdmlld3MgdW50
aWwKKyAgICAgICAgaXQgaGFzIHRyaWVkIHRvIGNsb3NlIGFueSBhYmFuZG9uZWQgV2ViIEluc3Bl
Y3RvciBpbnN0YW5jZXMuIFBlcmZvcm1pbmcgdGVhcmRvd24KKyAgICAgICAgaW4gdGhlIHJldmVy
c2Ugb3JkZXIgcHJldmVudHMgZGlzY29ubmVjdGlvbiBvZiB0aGUgZnJvbnRlbmQgY2hhbm5lbCBi
ZWNhdXNlIHRoYXQKKyAgICAgICAgcHJlbWF0dXJlbHkgZGVzdHJveXMgdGhlIGluc3BlY3RvciBm
cm9udGVuZCBjbGllbnQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWUubW06CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAocnVuVGVzdCk6CisKIDIwMTUtMDgtMjgg
IFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSBhbiBvbGQgdGVtcG9yYXJ5IHNjcmlwdCB0aGF0IGhhcyBzZXJ2ZWQgaXRzIHB1cnBvc2UK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCAwYjU2ZWRi
OWRiNjRjZWU5MDQ2M2E2MjQyNGVmZjFjNzBkYmNlNzMzLi44YTAxYzNhMzE5NDQ4ODVhZjY4OGU2
YjE1OTJkMjljN2YzMjEyZjBjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCkBAIC0yMDI4LDYgKzIwMjgsMTMgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25z
dCBzdHJpbmcmIGlucHV0TGluZSkKIAogICAgIHdvcmtRdWV1ZS5jbGVhcigpOwogCisgICAgLy8g
SWYgdGhlIHRlc3QgcGFnZSBjb3VsZCBoYXZlIHBvc3NpYmx5IG9wZW5lZCB0aGUgV2ViIEluc3Bl
Y3RvciBmcm9udGVuZCwKKyAgICAvLyB0aGVuIHRyeSB0byBjbG9zZSBpdCBpbiBjYXNlIGl0IHdh
cyBhY2NpZGVudGFsbHkgbGVmdCBvcGVuLgorICAgIGlmIChzaG91bGRFbmFibGVEZXZlbG9wZXJF
eHRyYXMocGF0aE9yVVJMLmNfc3RyKCkpKSB7CisgICAgICAgIGdUZXN0UnVubmVyLT5jbG9zZVdl
Ykluc3BlY3RvcigpOworICAgICAgICBnVGVzdFJ1bm5lci0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZChmYWxzZSk7CisgICAgfQorCiAgICAgaWYgKGdUZXN0UnVubmVyLT5jbG9zZVJlbWFpbmlu
Z1dpbmRvd3NXaGVuQ29tcGxldGUoKSkgewogICAgICAgICBOU0FycmF5KiBhcnJheSA9IFtEdW1w
UmVuZGVyVHJlZVdpbmRvdyBvcGVuV2luZG93c107CiAKQEAgLTIwNTEsMTIgKzIwNTgsNiBAQCBz
dGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMaW5lKQogICAgICAgICB9CiAg
ICAgfQogCi0gICAgLy8gSWYgZGV2ZWxvcGVyIGV4dHJhcyBlbmFibGVkIFdlYiBJbnNwZWN0b3Ig
bWF5IGhhdmUgYmVlbiBvcGVuIGJ5IHRoZSB0ZXN0LgotICAgIGlmIChzaG91bGRFbmFibGVEZXZl
bG9wZXJFeHRyYXMocGF0aE9yVVJMLmNfc3RyKCkpKSB7Ci0gICAgICAgIGdUZXN0UnVubmVyLT5j
bG9zZVdlYkluc3BlY3RvcigpOwotICAgICAgICBnVGVzdFJ1bm5lci0+c2V0RGV2ZWxvcGVyRXh0
cmFzRW5hYmxlZChmYWxzZSk7Ci0gICAgfQotCiAgICAgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50
U3RhdGVCZWZvcmVUZXN0aW5nKCk7CiAKICAgICAvLyBMb2FkaW5nIGFuIGVtcHR5IHJlcXVlc3Qg
c3luY2hyb25vdXNseSByZXBsYWNlcyB0aGUgZG9jdW1lbnQgd2l0aCBhIGJsYW5rIG9uZSwgd2hp
Y2ggaXMgbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcAppbmRleCBlNTZlYjFmNTM3Yjk0MDNmNTVjNmVkMDNjOWQxN2I4NzkwODA5ZDU2Li5kMDJj
ZmVjNTg4MjU0NDU3OTRiZGEwYjk1ZmQwZmVjMDM4OTE3NDAyIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTExNDcsNiArMTE0NywxMyBAQCBzdGF0
aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMaW5lKQogICAgIC8vIEV2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIgY2xlYXJTYXZlZEV2ZW50cwogICAgIHdvcmtRdWV1ZS5jbGVhcigpOwog
CisgICAgLy8gSWYgdGhlIHRlc3QgcGFnZSBjb3VsZCBoYXZlIHBvc3NpYmx5IG9wZW5lZCB0aGUg
V2ViIEluc3BlY3RvciBmcm9udGVuZCwKKyAgICAvLyB0aGVuIHRyeSB0byBjbG9zZSBpdCBpbiBj
YXNlIGl0IHdhcyBhY2NpZGVudGFsbHkgbGVmdCBvcGVuLgorICAgIGlmIChzaG91bGRFbmFibGVE
ZXZlbG9wZXJFeHRyYXMocGF0aE9yVVJMLmNfc3RyKCkpKSB7CisgICAgICAgIDo6Z1Rlc3RSdW5u
ZXItPmNsb3NlV2ViSW5zcGVjdG9yKCk7CisgICAgICAgIDo6Z1Rlc3RSdW5uZXItPnNldERldmVs
b3BlckV4dHJhc0VuYWJsZWQoZmFsc2UpOworICAgIH0KKwogICAgIGlmICg6OmdUZXN0UnVubmVy
LT5jbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUoKSkgewogICAgICAgICBWZWN0b3I8
SFdORD4gd2luZG93cyA9IG9wZW5XaW5kb3dzKCk7CiAgICAgICAgIHVuc2lnbmVkIHNpemUgPSB3
aW5kb3dzLnNpemUoKTsKQEAgLTExNjEsMTEgKzExNjgsNiBAQCBzdGF0aWMgdm9pZCBydW5UZXN0
KGNvbnN0IHN0cmluZyYgaW5wdXRMaW5lKQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHNo
b3VsZEVuYWJsZURldmVsb3BlckV4dHJhcyhwYXRoT3JVUkwuY19zdHIoKSkpIHsKLSAgICAgICAg
OjpnVGVzdFJ1bm5lci0+Y2xvc2VXZWJJbnNwZWN0b3IoKTsKLSAgICAgICAgOjpnVGVzdFJ1bm5l
ci0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChmYWxzZSk7Ci0gICAgfQotCiAgICAgcmVzZXRX
ZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCk7CiAKICAgICAvLyBMb2FkaW5n
IGFuIGVtcHR5IHJlcXVlc3Qgc3luY2hyb25vdXNseSByZXBsYWNlcyB0aGUgZG9jdW1lbnQgd2l0
aCBhIGJsYW5rIG9uZSwgd2hpY2ggaXMgbmVjZXNzYXJ5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260214</attachid>
            <date>2015-08-28 21:48:06 -0700</date>
            <delta_ts>2015-09-03 16:11:58 -0700</delta_ts>
            <desc>Proposed Fix (EWS)</desc>
            <filename>bug-148538-20150828214752.patch</filename>
            <type>text/plain</type>
            <size>80957</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YjExNjU3MmEyOWIyMzA0YWEzYzRjNTFkZjIwY2NjYmM3NGUyYWZkLi42YjkyYmU3OTllMjVkNmYw
Mzg1MmEyMmNiZTQzYWUzYzkwMzM3NDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OCBAQAorMjAxNS0wOC0yOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250cm9sbGVyIHNob3VsZCBzdXBwb3J0
IG11bHRpcGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIGEgc2luZ2xldG9uLCBpdCBzaG91bGQgYmUg
cG9zc2libGUgdG8gaGF2ZSBtdWx0aXBsZSBjaGFubmVscyBvcGVuCisgICAgICAgIGF0IHRoZSBz
YW1lIHRpbWUgYW5kIHRvIGluZGl2aWR1YWxseSBjbG9zZSBjaGFubmVscyBhcyBmcm9udGVuZHMg
Y29tZSBhbmQgZ28uCisKKyAgICAgICAgVGhlIEZyb250ZW5kUm91dGVyIGNsYXNzIGtlZXBzIGEg
bGlzdCBvZiBvcGVuIEZyb250ZW5kQ2hhbm5lbHMgYW5kIHNlbmRzIG1lc3NhZ2VzCisgICAgICAg
IHRvIHRoZSBhcHByb3ByaWF0ZSBmcm9udGVuZHMgYmFzZWQgb24gd2hldGhlciB0aGUgbWVzc2Fn
ZSBpcyBhIHJlc3BvbnNlIG9yIGV2ZW50LgorICAgICAgICBFYWNoIEluc3BlY3RvckNvbnRyb2xs
ZXIgb3ducyBhIHNpbmdsZSBGcm9udGVuZFJvdXRlciBhbmQgQmFja2VuZERpc3BhdGNoZXIgaW5z
dGFuY2UuCisgICAgICAgIEluc3BlY3RvciBiYWNrZW5kIGNvZGUgdGhhdCBzZW5kcyBtZXNzYWdl
cyB0byB0aGUgZnJvbnRlbmQgc2hvdWxkIHN3aXRjaCBvdmVyIHRvCisgICAgICAgIHVzaW5nIHRo
ZSByb3V0ZXIgcmF0aGVyIHRoYW4gZGlyZWN0bHkgdXNpbmcgYSBGcm9udGVuZENoYW5uZWwuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuY3BwOiBNb3ZlIGNvbnN0cnVjdG9ycy9kZXN0cnVjdG9ycyBvdXQgb2Yg
dGhlIGhlYWRlcgorICAgICAgICB0byBhdm9pZCBpbmNsdWRpbmcgSW5zcGVjdG9yRnJvbnRlbmRS
b3V0ZXIgZXZlcnl3aGVyZS4gVXNlIHRoZSByb3V0ZXIgaW5zdGVhZCBvZiBhCisgICAgICAgIHNw
ZWNpZmljIGZyb250ZW5kIGNoYW5uZWwuIFJlbW92ZSBndWFyZHMgdGhhdCBhcmUgbm8gbG9uZ2Vy
IG5lY2Vzc2FyeSBzaW5jZSB0aGUgcm91dGVyCisgICAgICAgIGlzIGd1YXJhbnRlZWQgdG8gb3V0
bGl2ZSB0aGUgYmFja2VuZCBkaXNwYXRjaGVyLgorCisgICAgICAgIChJbnNwZWN0b3I6OlN1cHBs
ZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyOjpTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcik6
CisgICAgICAgIChJbnNwZWN0b3I6OlN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyOjp+U3Vw
cGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlcjo6QmFja2VuZERpc3BhdGNoZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXI6OmlzQWN0aXZlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6
OnJlZ2lzdGVyRGlzcGF0Y2hlckZvckRvbWFpbik6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlcjo6c2VuZFBlbmRpbmdFcnJvcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOgorICAgICAgICAoSW5zcGVjdG9yOjpTdXBwbGVtZW50
YWxCYWNrZW5kRGlzcGF0Y2hlcjo6U3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIpOiBEZWxl
dGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcjo6
flN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OmNsZWFyRnJvbnRlbmQpOiBEZWxldGVkLCBubyBsb25n
ZXIgbmVjZXNzYXJ5LgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6aXNB
Y3RpdmUpOiBNb3ZlZCB0byBpbXBsZW1lbnRhdGlvbiBmaWxlLgorICAgICAgICAoSW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlcjo6QmFja2VuZERpc3BhdGNoZXIpOiBNb3ZlZCB0byBpbXBsZW1l
bnRhdGlvbiBmaWxlLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6Y3JlYXRl
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI6OmNvbm5lY3RGcm9udGVuZCk6
CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpkaXNjb25uZWN0RnJvbnRlbmQp
OgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6ZGlzY29ubmVjdEFsbEZyb250
ZW5kcyk6CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpsZWFrQ2hhbm5lbCk6
CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpoYXNMb2NhbEZyb250ZW5kKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI6Omhhc1JlbW90ZUZyb250ZW5kKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI6OnNlbmRFdmVudCk6CisgICAgICAg
IChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpzZW5kUmVzcG9uc2UpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcDogUmVtb3ZlIGd1YXJk
cyB0aGF0IGFyZSBubyBsb25nZXIgbmVjZXNzYXJ5LgorICAgICAgICBUaGUgZnJvbnRlbmQgcm91
dGVyIGFuZCBiYWNrZW5kIGRpc3BhdGNoZXIgbm93IGhhdmUgdGhlIHNhbWUgbGlmZXRpbWUgYXMg
dGhlIGNvbnRyb2xsZXIuCisgICAgICAgIEV4cGxpY2l0bHkgY29ubmVjdC9kaXNjb25uZWN0IHRo
ZSBmcm9udGVuZCBjaGFubmVsLgorCisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
SW5zcGVjdG9yQ29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpn
bG9iYWxPYmplY3REZXN0cm95ZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChJbnNwZWN0
b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5k
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
OjpkaXNjb25uZWN0QWxsRnJvbnRlbmRzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmFw
cGVuZEV4dHJhQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXI6OnBhdXNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL2F1
Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAoSW5z
cGVjdG9yOjpBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RlZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlv
bi5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb246OmNsb3NlKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVy
YXRlX2NwcF9hbHRlcm5hdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weToKKyAgICAgICAg
KENwcEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yLmdlbmVyYXRlX291
dHB1dCk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpj
X2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAgIChPYmpDRnJv
bnRlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2V2ZW50KTog
VXNlIHRoZSByb3V0ZXIuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2Fi
bGUuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmRpc2Nvbm5l
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmg6CisKIDIw
MTUtMDgtMjggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBN
YWNyb0Fzc2VtYmxlclByaW50ZXIgc3VwcG9ydCBmb3IgcHJpbnRpbmcgbWVtb3J5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGQxZjM0YWJjZjMxYjNiYTNiNjczZDUzNzU4YzY2ODg0MzlkYmM4ZWMuLmUwMjQ2N2U3
ODQxZDllMDVlNzI5ZjUxZmEwYzZiODBjZDE3ZDZiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
OCBAQAorMjAxNS0wOC0yOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250cm9sbGVyIHNob3VsZCBzdXBwb3J0IG11bHRp
cGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZSBmcm9tIHRoaXMg
cGF0Y2guIFRlYXJkb3duIHNjZW5hcmlvcyBhcmUKKyAgICAgICAgY292ZXJlZCBieSBleGlzdGlu
ZyBwcm90b2NvbCBhbmQgaW5zcGVjdG9yIHRlc3RzIHJ1bm5pbmcgdW5kZXIgRFJUIGFuZCBXS1RS
LgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kUm91dGVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oOiBTdG9wIHVzaW5n
IGZvcndhcmRlZCB0eXBlcy4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JD
b250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omluc3Bl
Y3RlZFBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6aGFzTG9jYWxGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyOjpoYXNSZW1vdGVGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RBbGxGcm9udGVuZHMpOiBBZGRlZC4gRGlzY29ubmVjdHMg
YWxsCisgICAgICAgIGZyb250ZW5kcyBhbmQgc2lnbmFscyBEaXNjb25uZWN0UmVhc29uOjpJbnNw
ZWN0ZWRUYXJnZXREZXN0cm95ZWQuCisKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xv
c2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNz
YWdlRnJvbUZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5oOiBBZGQgZGVmYXVsdCB2YWx1ZSBmb3IgaXNBdXRvbWF0aWNJbnNwZWN0aW9uLgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlci5jcHA6IFVzZSBhIHJvdXRlciB3aXRoIGEgc2luZ2xldG9uIGNoYW5u
ZWwKKyAgICAgICAgdGhhdCBmb3J3YXJkcyBtZXNzYWdlcyBvdmVyIHRvIHRoZSBtYWluIHBhZ2Uu
CisKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAg
ICogcGFnZS9QYWdlRGVidWdnYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdn
YWJsZTo6ZGlzY29ubmVjdCk6CisgICAgICAgICogcGFnZS9QYWdlRGVidWdnYWJsZS5oOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDogQ2xlYXIgdGhlIGZyb250ZW5kIGNsaWVudCBi
ZWZvcmUgZGlzY29ubmVjdGluZyBmcm9udGVuZCBjaGFubmVsLgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OmNsb3NlRHVtbXlJbnNwZWN0b3JGcm9udGVuZCk6CisKIDIwMTUtMDgtMjgg
IEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10g
UmVzdHJ1Y3R1cmUgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciBmb3IgdGVzdGluZwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IGFkOTFhYjE1MjMyYTM4YmNjZWQ3ODVmYTRmODY2YzdhMTlmMDE3OWQuLjUyM2Mz
MjI5YjEwMDMxNDZlZjEyMjg1ZjYxOTNkODQ1YzFjM2E1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMyBAQAorMjAxNS0wOC0yOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250cm9sbGVyIHNob3VsZCBzdXBw
b3J0IG11bHRpcGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIG5vdGlmeUluc3BlY3RvckNvbnRyb2xs
ZXIgZmxhZyBmcm9tIGNsb3NlV2luZG93LiBTaW5jZSBJbnNwZWN0b3JDbGllbnRzCisgICAgICAg
IG11c3Qgbm93IG1hbnVhbGx5IGRpc2Nvbm5lY3QgdGhlaXIgRnJvbnRlbmRDaGFubmVsKHMpLCB3
ZSBzaG91bGQgYWx3YXlzCisgICAgICAgIHBlcmZvcm0gdGhlIHRlYXJkb3duIHRoYXQgd2FzIGd1
YXJkZWQgYnkgdGhpcyBmbGFnLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpicmluZ0Zyb250ZW5kVG9Gcm9udCk6
IEFkZCBhIG1pc3NpbmcgYXNzZXJ0aW9uLgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OmNsb3NlV2luZG93KToKKyAgICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
OjpkaXNjb25uZWN0RnJvbUJhY2tlbmQpOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dD
b250cm9sbGVyIHdpbmRvd1Nob3VsZENsb3NlOl0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JX
aW5kb3dDb250cm9sbGVyIGRlc3Ryb3lJbnNwZWN0b3JWaWV3XSk6IEFsd2F5cyBjbGVhciB0aGUg
ZnJvbnRlbmQgY2xpZW50LgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVy
IGRlc3Ryb3lJbnNwZWN0b3JWaWV3Ol0pOiBSZW5hbWVkIHRvIGFib3ZlLgorCiAyMDE1LTA4LTI4
ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNd
IFJlc3RydWN0dXJlIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXIgZm9yIHRlc3RpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwppbmRleCBhYzIyNzYwYjU1YzAyODgzMWY5ZWRhYTY4YzZkMmRiYTYxMzFhYjhlLi5hOWYw
ZTBiYTlmNmViZGFlMDBiYzAyZjAzMWMzMjhlNjdhZWMyOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTUtMDgtMjggIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yQ29udHJvbGxlciBzaG91bGQgc3Vw
cG9ydCBtdWx0aXBsZSBmcm9udGVuZCBjaGFubmVscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBub3RpZnlJbnNwZWN0b3JDb250cm9s
bGVyIGZsYWcgZnJvbSBjbG9zZVdpbmRvdy4gU2luY2UgSW5zcGVjdG9yQ2xpZW50cworICAgICAg
ICBtdXN0IG5vdyBtYW51YWxseSBkaXNjb25uZWN0IHRoZWlyIEZyb250ZW5kQ2hhbm5lbChzKSwg
d2Ugc2hvdWxkIGFsd2F5cworICAgICAgICBwZXJmb3JtIHRoZSB0ZWFyZG93biB0aGF0IHdhcyBn
dWFyZGVkIGJ5IHRoaXMgZmxhZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVj
dG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6On5XZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6Y2xvc2VXaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OmRlc3Ryb3lJbnNwZWN0b3JWaWV3KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaDoKKwogMjAxNS0wOC0yNyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBGcm9udGVuZENoYW5uZWwgc2hvdWxkIGtub3cg
aXRzIG93biBjb25uZWN0aW9uIHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyMTU4ODcwMGYzMmIzMDZiYjBh
MWVkYzVjOGRiN2YzYzZmZGM4YzdjLi43ZDY1YjJiNDMwYmU2ZDg4OGRmYjhiYTY4ZWJhNWU3Y2Nk
ZTI1Nzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTUtMDgtMjggIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9y
Q29udHJvbGxlciBzaG91bGQgc3VwcG9ydCBtdWx0aXBsZSBmcm9udGVuZCBjaGFubmVscworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTM4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwbGljaXRseSBk
aXNjb25uZWN0IHRoZSBmcm9udGVuZCBjaGFubmVsIHdoZW4gY2xvc2luZyB0aGUgZnJvbnRlbmQu
CisKKyAgICAgICAgUmVuYW1lIGNyZWF0ZUluc3BlY3RvclBhZ2UvY2xvc2VGcm9udGVuZCB0byB0
aGUgc3ltbWV0cmljIGFuZCB1bmFtYmlndW91cworICAgICAgICB7b3BlbixjbG9zZX1Gcm9udGVu
ZENvbm5lY3Rpb24gaW4gdGhlIFdlYkluc3BlY3RvciBjbGFzcy4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6
IFN0b3AgdXNpbmcgYSBmb3J3YXJkZWQgdHlwZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpvcGVu
RnJvbnRlbmRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpjbG9z
ZUZyb250ZW5kQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6cmVt
b3RlRnJvbnRlbmRDb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnJl
bW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
OjpjcmVhdGVJbnNwZWN0b3JQYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yOjpjbG9zZUZyb250ZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yLmg6CisKIDIwMTUtMDgtMjggIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gUmVzdHJ1Y3R1cmUgV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlciBmb3IgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDY4MDYwYTY5OWZiNDg5NzAwNmU0ZmE5OTMyMDEyNzBjNGQyZWMzZDkuLmEwOTllZDQz
NmRkYjgwNzgyMWQ3OTFlNjgyNTI0ODkwZmI3Nzc2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTMyMyw2ICszMjMsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNF
UwogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCiAgICAgaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5LmNwcAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHAKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCiAgICAgaW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5jcHAKICAgICBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xl
Q2xpZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggMDhl
MDI3YjJlNWU1N2Y3MzY2MDNmYjAzMjA4NDRmN2U2MGQ3MjgwMS4uYzRhMTE0NDczOTUxN2RhYzg4
ZDExYzM5OGZjNzBiYWUyY2YwMDg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qCkBAIC01OTUsNiArNTk1LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGlu
c3BlY3RvclxJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
Y3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZy
b250ZW5kUm91dGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3Rv
clxJbnNwZWN0b3JWYWx1ZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5z
cGVjdG9yXEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAiIC8+CkBA
IC0xMzg1LDYgKzEzODYsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9y
XEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRW52aXJvbm1lbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZFJvdXRl
ci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclZh
bHVlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEpTSW5qZWN0
ZWRTY3JpcHRIb3N0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMGNjOWE4YjFhMDIxMzA0NjJlMGE2M2M2NWM4MzVhNjA3MjkwOGEwMi4uMzg1
MjgzOTlkMTE2MDE2MjVmOWQxZTMzYzhlYWQ5NjRhMGQ4YWJlZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTExOTIsNiArMTE5Miw4IEBACiAJCTk5RTQ1QTI2MThBMUIyNTkwMDI2
RDg4RiAvKiBFbmNvZGVkVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk5RTQ1QTIxMThBMUIyNTkwMDI2RDg4RiAvKiBFbmNvZGVkVmFsdWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OUU0NUEy
NzE4QTFCMjU5MDAyNkQ4OEYgLyogSW5wdXRDdXJzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTQ1QTIyMThBMUIyNTkwMDI2RDg4RiAvKiBJbnB1
dEN1cnNvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTk5RTQ1QTI4MThBMUIyNTkwMDI2RDg4RiAvKiBOb25kZXRlcm1pbmlzdGljSW5wdXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTQ1QTIzMThB
MUIyNTkwMDI2RDg4RiAvKiBOb25kZXRlcm1pbmlzdGljSW5wdXQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OUYxQTZGRTFCOEU2RDk0MDA0NjNC
MjYgLyogSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlGMUE2RkMxQjhFNkQ5NDAwNDYzQjI2IC8qIEluc3Bl
Y3RvckZyb250ZW5kUm91dGVyLmNwcCAqLzsgfTsKKwkJOTlGMUE2RkYxQjhFNkQ5NDAwNDYzQjI2
IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OUYxQTZGRDFCOEU2RDk0MDA0NjNCMjYgLyogSW5zcGVjdG9y
RnJvbnRlbmRSb3V0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5RTcyOTQwNzE5MEYwMUE1MDAxQTkxQjUgLyogSW5pdGlhbGl6ZVRocmVhZGlu
Zy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTc4
NjM2QzBEOUJFRUMzMDBENzRFNzUgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgKi87IH07CiAJ
CTlFNzI5NDA4MTkwRjAyMUUwMDFBOTFCNSAvKiBJbml0aWFsaXplTExWTVBPU0lYLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0VGQUM1MTgwNUU3
NTUwMDQ3MkNFNCAvKiBJbml0aWFsaXplTExWTVBPU0lYLmNwcCAqLzsgfTsKIAkJOUU3Mjk0MEIx
OTBGMDUxNDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlFNzI5NDBBMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQ
YXRoLmggKi87IH07CkBAIC0zMDU1LDYgKzMwNTcsOCBAQAogCQk5OUU0NUEyMTE4QTFCMjU5MDAy
NkQ4OEYgLyogRW5jb2RlZFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEVuY29kZWRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUU0NUEyMjE4
QTFCMjU5MDAyNkQ4OEYgLyogSW5wdXRDdXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5wdXRDdXJzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlF
NDVBMjMxOEExQjI1OTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJbnB1dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb25kZXRlcm1pbmlzdGljSW5wdXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlGMUE2RkMxQjhFNkQ5NDAwNDYzQjI2IC8qIEluc3Bl
Y3RvckZyb250ZW5kUm91dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluc3BlY3RvckZyb250ZW5kUm91dGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTlGMUE2RkQxQjhFNkQ5NDAwNDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kUm91
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNDk1NEU4MUE2NjQwREIwMDI4
MTVBNiAvKiBQYXJzZXJGdW5jdGlvbkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VyRnVuY3Rp
b25JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlFNzI5NDA5MTkwRjAzMDYw
MDFBOTFCNSAvKiBCdW5kbGVQYXRoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQnVuZGxlUGF0aC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUU3
Mjk0MEExOTBGMDUxNDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQnVuZGxlUGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNTczMCw2ICs1NzM0LDggQEAKIAkJCQlBNTkzQ0Y3QjE4NDAzNjAzMDBCRkNFMjcgLyogSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLywKIAkJCQlBNUQwQTFCQTE4NjIzMDFCMDBDN0I0
OTYgLyogSW5zcGVjdG9yRW52aXJvbm1lbnQuaCAqLywKIAkJCQlBNTk0NTU5NDE4MjQ3OUVCMDBD
QzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggKi8sCisJCQkJOTlGMUE2RkMxQjhF
NkQ5NDAwNDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVyLmNwcCAqLywKKwkJCQk5OUYx
QTZGRDFCOEU2RDk0MDA0NjNCMjYgLyogSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCAqLywKIAkJ
CQlBNTVEOTNBQjE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oICov
LAogCQkJCUE1OTNDRjgwMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICov
LAogCQkJCUE1OTNDRjgxMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLywK
QEAgLTU4OTIsNiArNTg5OCw3IEBACiAJCQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFS
TTY0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjg5OEYzMjFCMjc2ODlGMDA4M0Ez
M0MgLyogREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2RDNCMkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk5RjFBNkZGMUI4RTZEOTQwMDQ2M0IyNiAvKiBJbnNwZWN0b3JGcm9udGVuZFJv
dXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMjgxQUE5MDk1NjAwRDMzQjMzIC8qIFNj
b3BlZEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJDMDYxMUYxQUE1MUUxQzAwQjRB
REJBIC8qIFJ1bnRpbWVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTRENTVCODFBRTcxNkNB
MDA1MkU0NTkgLyogSXRlcmF0aW9uU3RhdHVzLmggaW4gSGVhZGVycyAqLywKQEAgLTc5MjEsNiAr
NzkyOCw3IEBACiAJCQkJQzIyNTQ5NDMxNUY3REJBQTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA0MDJDMEU2QTc2NDAwMDc4NkU2QSAvKiBTbWFsbFN0
cmluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTNFRjg4NzQxQjY2REYyMzAwM0YyNkNCIC8q
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTlGMUE2RkUx
QjhFNkQ5NDAwNDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGOEYyQjlFMTczMDZDOEQwMDdEQkRBNSAvKiBTb3VyY2VDb2RlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGNDkzQUZBMTZEMENBRDMwMDg0NTA4QiAvKiBTb3VyY2VQcm92aWRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzNFOEQxQzFCOTAxM0MzMDAzNDZCNTIgLyogSlNO
YXRpdmVTdGRGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5jcHAKaW5kZXggNGQ0NWRhOTllMWJmNjY0NzUzN2Q4NGMxNDEzNTIyOTM5YjA5ODA4OS4uMDkz
NmI0MTExYzI0MTMzNGQ3NDljMjI0MWQzYjZjMTQ1MTg2OTA3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5oIgogCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JW
YWx1ZXMuaCIKICNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgpAQCAtMzUsNiArMzYsMTUgQEAKIAogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKK1N1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyOjpTdXBwbGVtZW50YWxCYWNrZW5k
RGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIpCisgICAgOiBt
X2JhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKQoreworfQorCitTdXBwbGVtZW50
YWxCYWNrZW5kRGlzcGF0Y2hlcjo6flN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKCkKK3sK
K30KKwogQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKFJlZjxC
YWNrZW5kRGlzcGF0Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwgbG9uZyByZXF1ZXN0SWQpCiAg
ICAgOiBtX2JhY2tlbmREaXNwYXRjaGVyKFdURjo6bW92ZShiYWNrZW5kRGlzcGF0Y2hlcikpCiAg
ICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpCkBAIC02OSwxNSArNzksMjggQEAgdm9pZCBCYWNr
ZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpzZW5kU3VjY2VzcyhSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiYmIHBhcnQKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UobV9y
ZXF1ZXN0SWQsIFdURjo6bW92ZShwYXJ0aWFsTWVzc2FnZSkpOwogfQogCi1SZWY8QmFja2VuZERp
c3BhdGNoZXI+IEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwpCitCYWNrZW5kRGlzcGF0Y2hlcjo6QmFja2VuZERpc3BhdGNoZXIoUmVmPEZy
b250ZW5kUm91dGVyPiYmIHJvdXRlcikKKyAgICA6IG1fZnJvbnRlbmRSb3V0ZXIoV1RGOjptb3Zl
KHJvdXRlcikpCit7Cit9CisKK1JlZjxCYWNrZW5kRGlzcGF0Y2hlcj4gQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShSZWY8RnJvbnRlbmRSb3V0ZXI+JiYgcm91dGVyKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEJhY2tlbmREaXNwYXRjaGVyKGZyb250ZW5kQ2hhbm5lbCkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEJhY2tlbmREaXNwYXRjaGVyKFdURjo6bW92ZShyb3V0ZXIpKSk7
Cit9CisKK2Jvb2wgQmFja2VuZERpc3BhdGNoZXI6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9mcm9udGVuZFJvdXRlci0+aGFzRnJvbnRlbmRzKCk7CiB9CiAKIHZvaWQgQmFja2Vu
ZERpc3BhdGNoZXI6OnJlZ2lzdGVyRGlzcGF0Y2hlckZvckRvbWFpbihjb25zdCBTdHJpbmcmIGRv
bWFpbiwgU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIqIGRpc3BhdGNoZXIpCiB7Ci0gICAg
YXV0byByZXN1bHQgPSBtX2Rpc3BhdGNoZXJzLmFkZChkb21haW4sIGRpc3BhdGNoZXIpOwotICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgQVNTRVJUX0FS
RyhkaXNwYXRjaGVyLCBkaXNwYXRjaGVyKTsKKworICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTQ4NDkyPiBBZ2VudHMgc2hvdWxkIG9ubHkgcmVnaXN0ZXIgd2l0aCB0aGUgYmFj
a2VuZCBvbmNlLAorICAgIC8vIGFuZCB3ZSBzaG91bGQgcmUtYWRkIHRoZSBhc3NlcnRpb24gdGhh
dCBvbmx5IG9uZSBkaXNwYXRjaGVyIGlzIHJlZ2lzdGVyZWQgcGVyIGRvbWFpbi4KKyAgICBtX2Rp
c3BhdGNoZXJzLnNldChkb21haW4sIGRpc3BhdGNoZXIpOwogfQogCiB2b2lkIEJhY2tlbmREaXNw
YXRjaGVyOjpkaXNwYXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0xNjUsOSArMTg4LDYg
QEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogCiB2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UobG9uZyByZXF1ZXN0SWQs
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgcmVzdWx0KQogewotICAgIGlmICghbV9mcm9udGVu
ZENoYW5uZWwpCi0gICAgICAgIHJldHVybjsKLQogICAgIEFTU0VSVCghbV9wcm90b2NvbEVycm9y
cy5zaXplKCkpOwogCiAgICAgLy8gVGhlIEpTT04tUlBDIDIuMCBzcGVjaWZpY2F0aW9uIHJlcXVp
cmVzIHRoYXQgdGhlICJlcnJvciIgbWVtYmVyIGhhdmUgdGhlIHZhbHVlICdudWxsJwpAQCAtMTc1
LDcgKzE5NSw3IEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnNlbmRSZXNwb25zZShsb25nIHJl
cXVlc3RJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiByCiAgICAgUmVmPEluc3BlY3Rvck9i
amVjdD4gcmVzcG9uc2VNZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBy
ZXNwb25zZU1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInJlc3VsdCIpLCByZXN1bHQp
OwogICAgIHJlc3BvbnNlTWVzc2FnZS0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImlkIiksIHJl
cXVlc3RJZCk7Ci0gICAgbV9mcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChy
ZXNwb25zZU1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKKyAgICBtX2Zyb250ZW5kUm91dGVyLT5z
ZW5kUmVzcG9uc2UocmVzcG9uc2VNZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiB9CiAKIHZvaWQg
QmFja2VuZERpc3BhdGNoZXI6OnNlbmRQZW5kaW5nRXJyb3JzKCkKQEAgLTE5MCw5ICsyMTAsNiBA
QCB2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUGVuZGluZ0Vycm9ycygpCiAgICAgICAgIC0z
MjAwMCwgLy8gU2VydmVyRXJyb3IKICAgICB9OwogCi0gICAgaWYgKCFtX2Zyb250ZW5kQ2hhbm5l
bCkKLSAgICAgICAgcmV0dXJuOwotICAgIAogICAgIC8vIFRvIGNvbnN0cnVjdCB0aGUgZXJyb3Ig
b2JqZWN0LCBvbmx5IHVzZSB0aGUgbGFzdCBlcnJvcidzIGNvZGUgYW5kIG1lc3NhZ2UuCiAgICAg
Ly8gUGVyIEpTT04tUlBDIDIuMCwgU2VjdGlvbiA1LjEsIHRoZSAnZGF0YScgbWVtYmVyIG1heSBj
b250YWluIG5lc3RlZCBlcnJvcnMsCiAgICAgLy8gYnV0IG9ubHkgb25lIHRvcC1sZXZlbCBFcnJv
ciBvYmplY3Qgc2hvdWxkIGJlIHNlbnQgcGVyIHJlcXVlc3QuCkBAIC0yMjcsNyArMjQ0LDcgQEAg
dm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFBlbmRpbmdFcnJvcnMoKQogICAgICAgICBtZXNz
YWdlLT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoImlkIiksIEluc3BlY3RvclZhbHVlOjpudWxsKCkp
OwogICAgIH0KIAotICAgIG1fZnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQo
bWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOworICAgIG1fZnJvbnRlbmRSb3V0ZXItPnNlbmRSZXNw
b25zZShtZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiAKICAgICBtX3Byb3RvY29sRXJyb3JzLmNs
ZWFyKCk7CiAgICAgbV9jdXJyZW50UmVxdWVzdElkID0gTnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuaAppbmRleCBmMjI0ODJkOWIwZjk1MTI4OTczOTUxY2Y4MzIzMjdmMGFiMzgxNTAzLi5j
NjFjZjFkMGNkM2Y4NTQ3ZTRkNTYwODI4MGQwMGFjODc3ZTk1YzA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5oCkBAIC0zNSwxNSArMzUsMTQgQEAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBj
bGFzcyBCYWNrZW5kRGlzcGF0Y2hlcjsKLWNsYXNzIEZyb250ZW5kQ2hhbm5lbDsKK2NsYXNzIEZy
b250ZW5kUm91dGVyOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogY2xhc3MgU3Vw
cGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTdXBwbGVtZW50
YWxCYWNrZW5kRGlzcGF0Y2hlcj4gewogcHVibGljOgotICAgIFN1cHBsZW1lbnRhbEJhY2tlbmRE
aXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlcikKLSAgICAgICAg
OiBtX2JhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKSB7IH0KLSAgICB2aXJ0dWFs
IH5TdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQorICAgIFN1cHBsZW1lbnRhbEJh
Y2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJik7CisgICAgdmlydHVhbCB+U3VwcGxl
bWVudGFsQmFja2VuZERpc3BhdGNoZXIoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9u
ZyByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYm
IG1lc3NhZ2UpID0gMDsKIHByb3RlY3RlZDoKICAgICBSZWY8QmFja2VuZERpc3BhdGNoZXI+IG1f
YmFja2VuZERpc3BhdGNoZXI7CkBAIC01MSw3ICs1MCw3IEBAIHByb3RlY3RlZDoKIAogY2xhc3Mg
QmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxCYWNrZW5kRGlzcGF0Y2hlcj4g
ewogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QmFja2VuZERpc3Bh
dGNoZXI+IGNyZWF0ZShGcm9udGVuZENoYW5uZWwqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPEJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoUmVmPEZyb250ZW5kUm91dGVyPiYm
KTsKIAogICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIENhbGxiYWNrQmFzZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPENhbGxiYWNrQmFzZT4gewogICAgIHB1YmxpYzoKQEAgLTY5LDggKzY4LDcgQEAg
cHVibGljOgogICAgICAgICBib29sIG1fYWxyZWFkeVNlbnQgeyBmYWxzZSB9OwogICAgIH07CiAK
LSAgICB2b2lkIGNsZWFyRnJvbnRlbmQoKSB7IG1fZnJvbnRlbmRDaGFubmVsID0gbnVsbHB0cjsg
fQotICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiAhIW1fZnJvbnRlbmRDaGFubmVs
OyB9CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNQcm90b2NvbEVy
cm9ycygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG9jb2xFcnJvcnMuc2l6ZSgpID4gMDsgfQogCkBA
IC0xMDQsMTIgKzEwMiw5IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGdl
dEFycmF5KEluc3BlY3Rvck9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVG
b3VuZCk7CiAKIHByaXZhdGU6Ci0gICAgQmFja2VuZERpc3BhdGNoZXIoRnJvbnRlbmRDaGFubmVs
KiBjaGFubmVsKQotICAgICAgICA6IG1fZnJvbnRlbmRDaGFubmVsKGNoYW5uZWwpCi0gICAgewot
ICAgIH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hlcihSZWY8RnJvbnRlbmRSb3V0ZXI+JiYpOwogCi0g
ICAgRnJvbnRlbmRDaGFubmVsKiBtX2Zyb250ZW5kQ2hhbm5lbDsKKyAgICBSZWY8RnJvbnRlbmRS
b3V0ZXI+IG1fZnJvbnRlbmRSb3V0ZXI7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN1cHBsZW1lbnRh
bEJhY2tlbmREaXNwYXRjaGVyKj4gbV9kaXNwYXRjaGVyczsKIAogICAgIC8vIFByb3RvY29sIGVy
cm9ycyByZXBvcnRlZCBmb3IgdGhlIHRvcC1sZXZlbCByZXF1ZXN0IGJlaW5nIHByb2Nlc3NlZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRSb3V0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZFJvdXRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg3YTY3OGE2NWVmYmViNjBmNWZkZDhi
M2MxMjI5NWZkZDZlZDMxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwCkBAIC0wLDAgKzEsMTEwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZy
b250ZW5kUm91dGVyLmgiCisKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIK
KyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKwor
UmVmPEZyb250ZW5kUm91dGVyPiBGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGcm9udGVuZFJvdXRlcik7Cit9CisKK3ZvaWQgRnJvbnRlbmRSb3V0
ZXI6OmNvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqIGNvbm5lY3Rpb24pCit7CisgICAg
QVNTRVJUX0FSRyhjb25uZWN0aW9uLCBjb25uZWN0aW9uKTsKKworICAgIGlmIChtX2Nvbm5lY3Rp
b25zLmNvbnRhaW5zKGNvbm5lY3Rpb24pKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb25uZWN0aW9ucy5hcHBlbmQoY29u
bmVjdGlvbik7Cit9CisKK3ZvaWQgRnJvbnRlbmRSb3V0ZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChG
cm9udGVuZENoYW5uZWwqIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUX0FSRyhjb25uZWN0aW9u
LCBjb25uZWN0aW9uKTsKKworICAgIGlmICghbV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0
aW9uKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIG1fY29ubmVjdGlvbnMucmVtb3ZlRmlyc3QoY29ubmVjdGlvbik7Cit9CisK
K3ZvaWQgRnJvbnRlbmRSb3V0ZXI6OmRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKQoreworICAgIG1f
Y29ubmVjdGlvbnMuY2xlYXIoKTsKK30KKworLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcv
Yi8xNDg0OTI+IHJlbW92ZSB0aGlzIG1ldGhvZCBvbmNlIGFnZW50cyBtb3ZlIHRvIHVzaW5nIEZy
b250ZW5kUm91dGVyIGRpcmVjdGx5LgorRnJvbnRlbmRDaGFubmVsKiBGcm9udGVuZFJvdXRlcjo6
bGVha0NoYW5uZWwoKSBjb25zdAoreworICAgIGlmIChtX2Nvbm5lY3Rpb25zLnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuIG1fY29ubmVjdGlvbnMuYXQoMCk7CisKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworYm9vbCBGcm9udGVuZFJvdXRlcjo6aGFzTG9jYWxGcm9udGVuZCgpIGNvbnN0Cit7Cisg
ICAgZm9yIChhdXRvKiBjb25uZWN0aW9uIDogbV9jb25uZWN0aW9ucykgeworICAgICAgICBpZiAo
Y29ubmVjdGlvbi0+Y29ubmVjdGlvblR5cGUoKSA9PSBGcm9udGVuZENoYW5uZWw6OkNvbm5lY3Rp
b25UeXBlOjpMb2NhbCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBGcm9udGVuZFJvdXRlcjo6aGFzUmVtb3RlRnJvbnRlbmQo
KSBjb25zdAoreworICAgIGZvciAoYXV0byogY29ubmVjdGlvbiA6IG1fY29ubmVjdGlvbnMpIHsK
KyAgICAgICAgaWYgKGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25UeXBlKCkgPT0gRnJvbnRlbmRDaGFu
bmVsOjpDb25uZWN0aW9uVHlwZTo6UmVtb3RlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEZyb250ZW5kUm91dGVyOjpzZW5k
RXZlbnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBjb25zdAoreworICAgIGZvciAoYXV0byogY29u
bmVjdGlvbiA6IG1fY29ubmVjdGlvbnMpCisgICAgICAgIGNvbm5lY3Rpb24tPnNlbmRNZXNzYWdl
VG9Gcm9udGVuZChtZXNzYWdlKTsKK30KKwordm9pZCBGcm9udGVuZFJvdXRlcjo6c2VuZFJlc3Bv
bnNlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogc2VuZCBy
ZXNwb25zZXMgdG8gdGhlIGFwcHJvcHJpYXRlIGZyb250ZW5kLgorICAgIGZvciAoYXV0byogY29u
bmVjdGlvbiA6IG1fY29ubmVjdGlvbnMpCisgICAgICAgIGNvbm5lY3Rpb24tPnNlbmRNZXNzYWdl
VG9Gcm9udGVuZChtZXNzYWdlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Um91dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kUm91dGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE2NDExYmVjNDI2NTc3MDA1ZDI4OWJkNDMzZGIwYTAz
ODIzMzliYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBJbnNwZWN0b3JGcm9udGVuZFJvdXRlcl9oCisjZGVmaW5lIEluc3BlY3RvckZy
b250ZW5kUm91dGVyX2gKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIEZyb250
ZW5kQ2hhbm5lbDsKKworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRnJvbnRlbmRSb3V0ZXIgOiBw
dWJsaWMgUmVmQ291bnRlZDxGcm9udGVuZFJvdXRlcj4geworcHVibGljOgorICAgIHN0YXRpYyBS
ZWY8RnJvbnRlbmRSb3V0ZXI+IGNyZWF0ZSgpOworCisgICAgYm9vbCBoYXNGcm9udGVuZHMoKSBj
b25zdCB7IHJldHVybiAhbV9jb25uZWN0aW9ucy5pc0VtcHR5KCk7IH0KKyAgICBib29sIGhhc0xv
Y2FsRnJvbnRlbmQoKSBjb25zdDsKKyAgICBib29sIGhhc1JlbW90ZUZyb250ZW5kKCkgY29uc3Q7
CisKKyAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqKTsKKyAgICB2b2lk
IGRpc2Nvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqKTsKKyAgICB2b2lkIGRpc2Nvbm5l
Y3RBbGxGcm9udGVuZHMoKTsKKworICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTQ4NDkyPiByZW1vdmUgdGhpcyBtZXRob2Qgb25jZSBhZ2VudHMgbW92ZSB0byB1c2luZyBGcm9u
dGVuZFJvdXRlciBkaXJlY3RseS4KKyAgICBGcm9udGVuZENoYW5uZWwqIGxlYWtDaGFubmVsKCkg
Y29uc3Q7CisKKyAgICB2b2lkIHNlbmRFdmVudChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0
OworICAgIHZvaWQgc2VuZFJlc3BvbnNlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgVmVjdG9yPEZyb250ZW5kQ2hhbm5lbCosIDI+IG1fY29ubmVjdGlvbnM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vICFkZWZpbmVkKElu
c3BlY3RvckZyb250ZW5kUm91dGVyX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKaW5kZXggMTFkODZlZDMyOTc1MDMxNzM3MTZhODVkOTM1ODA4ZmM2NzdiNWQ0OC4u
MGFjYWU4MDlhNWNjMTg5YzVjODI2ZjBlYzk1MDA0NTVhODBiMjc4MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
Ikluc3BlY3RvckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JGcm9udGVuZFJvdXRlci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdENvbnNvbGVDbGllbnQuaCIKQEAgLTYzLDcgKzY0LDggQEAgbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcihKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIDogbV9n
bG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIo
c3RkOjptYWtlX3VuaXF1ZTxJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBJbmplY3RlZFNj
cmlwdEhvc3Q6OmNyZWF0ZSgpKSkKLSAgICAsIG1fZnJvbnRlbmRDaGFubmVsKG51bGxwdHIpCisg
ICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKKyAgICAsIG1f
YmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91
dGVyLmNvcHlSZWYoKSkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNy
ZWF0ZSgpKQogICAgICwgbV9pbmNsdWRlTmF0aXZlQ2FsbFN0YWNrV2l0aEV4Y2VwdGlvbnModHJ1
ZSkKICAgICAsIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uKGZhbHNlKQpAQCAtOTgsMjIgKzEwMCwy
NCBAQCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6On5KU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXIoKQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlcjo6Z2xvYmFsT2JqZWN0RGVzdHJveWVkKCkKIHsKLSAgICBkaXNjb25uZWN0RnJvbnRlbmQo
RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkKTsKKyAgICBkaXNjb25u
ZWN0QWxsRnJvbnRlbmRzKCk7CiAKICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+ZGlzY29u
bmVjdCgpOwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29u
bmVjdEZyb250ZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBib29sIGlzQXV0
b21hdGljSW5zcGVjdGlvbikKIHsKLSAgICBBU1NFUlQoIW1fZnJvbnRlbmRDaGFubmVsKTsKLSAg
ICBBU1NFUlQoIW1fYmFja2VuZERpc3BhdGNoZXIpOworICAgIEFTU0VSVF9BUkcoZnJvbnRlbmRD
aGFubmVsLCBmcm9udGVuZENoYW5uZWwpOwogCiAgICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24g
PSBpc0F1dG9tYXRpY0luc3BlY3Rpb247CiAKLSAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IGZyb250
ZW5kQ2hhbm5lbDsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShmcm9udGVuZENoYW5uZWwpOworICAgIGJvb2wgY29ubmVjdGVkRmlyc3RGcm9udGVu
ZCA9ICFtX2Zyb250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMoKTsKKyAgICBtX2Zyb250ZW5kUm91
dGVyLT5jb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVsKTsKIAotICAgIG1fYWdlbnRzLmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChmcm9udGVuZENoYW5uZWwsIG1fYmFja2VuZERpc3Bh
dGNoZXIuZ2V0KCkpOworICAgIGlmICghY29ubmVjdGVkRmlyc3RGcm9udGVuZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250
ZW5kQ2hhbm5lbCwgJm1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgbV9pbnNwZWN0b3JBZ2VudC0+YWN0
aXZhdGVFeHRyYURvbWFpbnMobV9hZ2VudHMuZXh0cmFEb21haW5zKCkpOwpAQCAtMTIzLDE2ICsx
MjcsMzEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RG
cm9udGVuZChGcm9udGVuZENoYW5uZWwqIGZyb250ZW4KICNlbmRpZgogfQogCi12b2lkIEpTR2xv
YmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5l
Y3RSZWFzb24gcmVhc29uKQordm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6
OmRpc2Nvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkKIHsK
LSAgICBpZiAoIW1fZnJvbnRlbmRDaGFubmVsKQorICAgIEFTU0VSVF9BUkcoZnJvbnRlbmRDaGFu
bmVsLCBmcm9udGVuZENoYW5uZWwpOworCisgICAgbV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKworICAg
IG1fZnJvbnRlbmRSb3V0ZXItPmRpc2Nvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwpOwor
CisgICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKKworICAgIGJvb2wgZGlzY29u
bmVjdGVkTGFzdEZyb250ZW5kID0gIW1fZnJvbnRlbmRSb3V0ZXItPmhhc0Zyb250ZW5kcygpOwor
ICAgIGlmICghZGlzY29ubmVjdGVkTGFzdEZyb250ZW5kKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX2FnZW50cy53aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChyZWFzb24pOworI2lmIEVO
QUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorICAgIGlmIChtX2F1Z21lbnRp
bmdDbGllbnQpCisgICAgICAgIG1fYXVnbWVudGluZ0NsaWVudC0+aW5zcGVjdG9yRGlzY29ubmVj
dGVkKCk7CisjZW5kaWYKK30KKwordm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKQoreworICAgIG1fYWdlbnRzLndpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ry
b3llZCk7CiAKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5jbGVhckZyb250ZW5kKCk7Ci0gICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9mcm9udGVuZENoYW5uZWwgPSBu
dWxscHRyOworICAgIG1fZnJvbnRlbmRSb3V0ZXItPmRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKTsK
IAogICAgIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2U7CiAKQEAgLTE0NCwxNSArMTYz
LDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0
RnJvbnRlbmQoRGlzY29ubmVjdFJlYXNvbiByZWFzCiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogewotICAgIGlmIChtX2JhY2tlbmREaXNwYXRjaGVyKQotICAgICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKKyAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3Rv
ckNvbnRyb2xsZXI6OnBhdXNlKCkKIHsKLSAgICBpZiAoIW1fZnJvbnRlbmRDaGFubmVsKQotICAg
ICAgICByZXR1cm47Ci0KICAgICBFcnJvclN0cmluZyBkdW1teUVycm9yOwogICAgIG1fZGVidWdn
ZXJBZ2VudC0+ZW5hYmxlKGR1bW15RXJyb3IpOwogICAgIG1fZGVidWdnZXJBZ2VudC0+cGF1c2Uo
ZHVtbXlFcnJvcik7CkBAIC0yNjIsMTMgKzI3NywxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcjo6YXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dAogewogICAgIFN0cmluZyBkb21haW5OYW1lID0gYWdlbnQtPmRvbWFpbk5hbWUoKTsKIAotICAg
IGlmIChtX2Zyb250ZW5kQ2hhbm5lbCkKLSAgICAgICAgYWdlbnQtPmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChtX2Zyb250ZW5kQ2hhbm5lbCwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7
CisgICAgYWdlbnQtPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChtX2Zyb250ZW5kUm91dGVy
LT5sZWFrQ2hhbm5lbCgpLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAKICAgICBtX2Fn
ZW50cy5hcHBlbmRFeHRyYUFnZW50KFdURjo6bW92ZShhZ2VudCkpOwogCi0gICAgaWYgKG1fZnJv
bnRlbmRDaGFubmVsKQotICAgICAgICBtX2luc3BlY3RvckFnZW50LT5hY3RpdmF0ZUV4dHJhRG9t
YWluKGRvbWFpbk5hbWUpOworICAgIG1faW5zcGVjdG9yQWdlbnQtPmFjdGl2YXRlRXh0cmFEb21h
aW4oZG9tYWluTmFtZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyLmgKaW5kZXggNmUzZjk0ZWFjMjM0ZWM4OTgzNjk4Y2VhYzczZjE2ZTAzNjA0Y2JjZi4u
YWFlMzJlM2M4OTkzYmY3MDdlNjZiN2Y1MjA1ODIzMmE3M2E3Mzk3MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2Jq
ZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC01Myw2ICs1Myw3IEBAIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCiBjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEZyb250ZW5kQ2hhbm5l
bDsKK2NsYXNzIEZyb250ZW5kUm91dGVyOwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwog
Y2xhc3MgSW5zcGVjdG9yQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQ7CkBAIC03
Myw3ICs3NCw5IEBAIHB1YmxpYzoKICAgICB+SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyKCk7CiAKICAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqLCBib29s
IGlzQXV0b21hdGljSW5zcGVjdGlvbik7Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoRGlz
Y29ubmVjdFJlYXNvbik7CisgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRDaGFu
bmVsKik7CisgICAgdm9pZCBkaXNjb25uZWN0QWxsRnJvbnRlbmRzKCk7CisKICAgICB2b2lkIGRp
c3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgZ2xv
YmFsT2JqZWN0RGVzdHJveWVkKCk7CkBAIC05OSw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQqIGF1Z21lbnRhYmxlSW5z
cGVjdG9yQ29udHJvbGxlckNsaWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXVnbWVu
dGluZ0NsaWVudDsgfSAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXVnbWVudGFibGVJbnNwZWN0b3JD
b250cm9sbGVyQ2xpZW50KEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCogY2xp
ZW50KSBvdmVycmlkZSB7IG1fYXVnbWVudGluZ0NsaWVudCA9IGNsaWVudDsgfQogCi0gICAgdmly
dHVhbCBGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fZnJvbnRlbmRDaGFubmVsOyB9CisgICAgdmlydHVhbCBjb25zdCBGcm9udGVuZFJv
dXRlciYgZnJvbnRlbmRSb3V0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Zyb250ZW5k
Um91dGVyLmdldCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZEV4dHJhQWdlbnQoc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3RvckFnZW50QmFzZT4pIG92ZXJyaWRlOwogI2VuZGlmCiAKQEAgLTEx
Myw4ICsxMTYsOCBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudCogbV9jb25z
b2xlQWdlbnQ7CiAgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFnZW50Owog
ICAgIEFnZW50UmVnaXN0cnkgbV9hZ2VudHM7Ci0gICAgRnJvbnRlbmRDaGFubmVsKiBtX2Zyb250
ZW5kQ2hhbm5lbDsKLSAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CisgICAgUmVmPEZyb250ZW5kUm91dGVyPiBtX2Zyb250ZW5kUm91dGVyOworICAgIFJl
ZjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBSZWY8V1RGOjpT
dG9wd2F0Y2g+IG1fZXhlY3V0aW9uU3RvcHdhdGNoOwogICAgIGJvb2wgbV9pbmNsdWRlTmF0aXZl
Q2FsbFN0YWNrV2l0aEV4Y2VwdGlvbnM7CiAgICAgYm9vbCBtX2lzQXV0b21hdGljSW5zcGVjdGlv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFi
bGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5o
CmluZGV4IDI0NTZhYzU5MTlkOGEwZDU2NTlkNmY3MWNjMDc1ODhmNmM3NzY4YjIuLmIwZDI1YjBi
NjcyYTI5NjdjYWZmNTc4YmY0ZjU4ODhlOWU5NTRmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250
cm9sbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJs
ZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMjksNyArMjksNyBAQAogI2lm
IEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50Lmg+Ci0jaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4KIAogbmFtZXNwYWNl
IEluc3BlY3RvciB7CiAKQEAgLTQyLDEwICs0MiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBB
dWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQqIGF1Z21lbnRhYmxlSW5zcGVjdG9y
Q29udHJvbGxlckNsaWVudCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXVnbWVu
dGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJv
bGxlckNsaWVudCopID0gMDsKIAotICAgIHZpcnR1YWwgRnJvbnRlbmRDaGFubmVsKiBmcm9udGVu
ZENoYW5uZWwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBGcm9udGVuZFJvdXRlciYg
ZnJvbnRlbmRSb3V0ZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZEV4dHJh
QWdlbnQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckFnZW50QmFzZT4pID0gMDsKIAotICAgIGJv
b2wgY29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gISFmcm9udGVuZENoYW5uZWwoKTsgfQorICAg
IGJvb2wgY29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gZnJvbnRlbmRSb3V0ZXIoKS5oYXNGcm9u
dGVuZHMoKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlLmgKaW5kZXggMDY0YjgzYWU4MzgzOGUxYWIzNmU1ZTc1ZjA2ZjZm
OTc1MGYwODgwOS4uZGEyNDI5OWU0ZGQyNWYzNmYyMTU2NWI2MTNhNmRjMDZkYWJiMDE3NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgY29ubmVjdChGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGlj
SW5zcGVjdGlvbikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KEZyb250ZW5kQ2hhbm5lbCopID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpIHsgfSAv
LyBEZWZhdWx0IGlzIHRvIGRvIG5vdGhpbmcuCiAgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgeyB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5t
bQppbmRleCBiZWRhYWQ3ZmFlNDBjNThjODk2NzJlNGQxYTBiMGE1MTFlOTY1YWI0Li5lZDZjZDYw
ZGNjMDEwMWQwYjhmNmQzNWE4ODQxZjNmZTIxZjQ5MDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29u
bmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbQpAQCAtMTkxLDcgKzE5MSw3IEBA
IHZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmNsb3NlKCkKIAogICAg
ICAgICAgICAgaWYgKG1fZGVidWdnYWJsZSkgewogICAgICAgICAgICAgICAgIGlmIChtX2Nvbm5l
Y3RlZCkKLSAgICAgICAgICAgICAgICAgICAgbV9kZWJ1Z2dhYmxlLT5kaXNjb25uZWN0KCk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fZGVidWdnYWJsZS0+ZGlzY29ubmVjdCh0aGlzKTsKIAogICAg
ICAgICAgICAgICAgIG1fZGVidWdnYWJsZSA9IG51bGxwdHI7CiAgICAgICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9jcHBfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBf
YWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKaW5kZXggZDRhOGQ1YWZlZWQ0
NDUyZWU5ZmJmNzhlYTUyYjk0MzNmYWIyMzY3OC4uMzc1Y2UwNWNhNDRhYjRlNDA5NTU4MzU0Njcz
NzAzMzIyZDU5MWFiNCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2FsdGVybmF0ZV9iYWNrZW5kX2Rpc3BhdGNo
ZXJfaGVhZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9hbHRlcm5hdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRl
ci5weQpAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBDcHBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
ckhlYWRlckdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2Vs
Zik6CiAgICAgICAgIGhlYWRlcnMgPSBbCiAgICAgICAgICAgICAnIkluc3BlY3RvclByb3RvY29s
VHlwZXMuaCInLAorICAgICAgICAgICAgJzxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0
ZXIuaD4nLAogICAgICAgICAgICAgJzxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5oPicsCiAgICAgICAgIF0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0
Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50
YXRpb24ucHkKaW5kZXggMTI1MTE0OTMzY2U5Mjg4MTViNDJkNDUyZjUyM2VhZWNkMzA3YTExZS4u
YjM2YzBiMTNjMDhkOTExMTI5NDY0N2I2Yjg2ZGJkYmUyOGJmZDczNSAxMDA3NTUKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3Bw
X2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9k
aXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIENwcEJh
Y2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICBk
ZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgogICAgICAgICBzZWNvbmRhcnlfaGVhZGVycyA9IFsK
ICAgICAgICAgICAgICc8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPicsCisg
ICAgICAgICAgICAnPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPicsCiAgICAg
ICAgICAgICAnPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4nLAogICAgICAgICAgICAgJzx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4nLAogICAgICAgICAgICAgJzx3dGYvdGV4dC9DU3RyaW5nLmg+
J10KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5w
eSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVy
YXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCBmYjJk
ZTRmNjFmM2ZjMDFkN2E0NjA4MDhhOTg1NWM1YWRhMmY5MDAwLi45NDAxOGU1OWY2ZmFmNjAyMDdi
YWVjZDY1YmI1NTNhNTJiMGZlNTdkIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNo
ZXJfaW1wbGVtZW50YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxl
bWVudGF0aW9uLnB5CkBAIC05OCw5ICs5OCw3IEBAIGNsYXNzIE9iakNGcm9udGVuZERpc3BhdGNo
ZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBsaW5lcyA9IFtd
CiAgICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9ldmVudF9zaWduYXR1cmUoZG9t
YWluLCBldmVudCkpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgneycpCi0gICAgICAgIGxpbmVzLmFw
cGVuZCgnICAgIEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gX2NvbnRyb2xsZXIt
PmZyb250ZW5kQ2hhbm5lbCgpOycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlmICghZnJv
bnRlbmRDaGFubmVsKScpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICByZXR1cm47JykK
KyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgY29uc3QgRnJvbnRlbmRSb3V0ZXImIHJvdXRlciA9
IF9jb250cm9sbGVyLT5mcm9udGVuZFJvdXRlcigpOycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgn
JykKIAogICAgICAgICByZXF1aXJlZF9wb2ludGVyX3BhcmFtZXRlcnMgPSBmaWx0ZXIobGFtYmRh
IHBhcmFtZXRlcjogbm90IHBhcmFtZXRlci5pc19vcHRpb25hbCBhbmQgT2JqQ0dlbmVyYXRvci5p
c190eXBlX29iamNfcG9pbnRlcl90eXBlKHBhcmFtZXRlci50eXBlKSwgZXZlbnQuZXZlbnRfcGFy
YW1ldGVycykKQEAgLTEyNiw3ICsxMjQsNyBAQCBjbGFzcyBPYmpDRnJvbnRlbmREaXNwYXRjaGVy
SW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgbGluZXMuYXBwZW5k
KCcgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm1ldGhvZCIpLCBBU0NJ
SUxpdGVyYWwoIiVzLiVzIikpOycgJSAoZG9tYWluLmRvbWFpbl9uYW1lLCBldmVudC5ldmVudF9u
YW1lKSkKICAgICAgICAgaWYgZXZlbnQuZXZlbnRfcGFyYW1ldGVyczoKICAgICAgICAgICAgIGxp
bmVzLmV4dGVuZChzZWxmLl9nZW5lcmF0ZV9ldmVudF9vdXRfcGFyYW1ldGVycyhkb21haW4sIGV2
ZW50KSkKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgZnJvbnRlbmRDaGFubmVsLT5zZW5kTWVz
c2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsnKQorICAgICAgICBs
aW5lcy5hcHBlbmQoJyAgICByb3V0ZXIuc2VuZEV2ZW50KGpzb25NZXNzYWdlLT50b0pTT05TdHJp
bmcoKSk7JykKICAgICAgICAgbGluZXMuYXBwZW5kKCd9JykKICAgICAgICAgcmV0dXJuICdcbicu
am9pbihsaW5lcykKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKaW5kZXggZWVjYzViYTAzMGFiNTQwY2E1
ZTQzZGRkNWFhOGFkMjJjMzczNjkxZS4uMmFlYTIwMzVmMzFhZmVmOWU3YTFlNjEzZTVlYjQ3MmFi
NGU1MDZhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCkBAIC01NiwxMSArNTYsMTEgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmNvbm5lY3QoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVu
ZENoYW5uZWwsIGJvb2wgYXUKICAgICBtX2dsb2JhbE9iamVjdC5pbnNwZWN0b3JDb250cm9sbGVy
KCkuY29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCwgYXV0b21hdGljSW5zcGVjdGlvbik7
CiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KCkKK3ZvaWQg
SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KEZyb250ZW5kQ2hhbm5lbCogZnJv
bnRlbmRDaGFubmVsKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoJm1fZ2xvYmFsT2JqZWN0
LnZtKCkpOwogCi0gICAgbV9nbG9iYWxPYmplY3QuaW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nv
bm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOworICAg
IG1fZ2xvYmFsT2JqZWN0Lmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQo
ZnJvbnRlbmRDaGFubmVsKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OnBh
dXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlLmgKaW5kZXggNjBjZTU4YTQ0Yzc5MzU5YTc3MzlhOTA3OWI5OTMw
ZGQxMmFiYTM5NC4uMDNmZDE3ZDBmZjBhNDY2Njk2NjU5M2EyMjZjNTA0ZjNlMTZhMmFhYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBoYXNMb2NhbERlYnVnZ2VyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgYm9v
bCBhdXRvbWF0aWNJbnNwZWN0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29u
bmVjdCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTWVz
c2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZFJvdXRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhOWI2YTdmYzQ3ZGQxNjllMjZhNDY1Y2Yz
Yjc0ZTNhNDQzYTYyOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaApAQCAtMCwwICsx
LDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXJfaAorI2Rl
ZmluZSBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JGcm9udGVuZFJvdXRlcl9oCisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggMDUwOTY0ZmE3
NWJhOGY3ZDllZDVjMjdhNTliOWIwZTQ0ZTA4Y2JkMC4uOTYzZjcwYzI0MDE1ZjhhZmQxMzVlMGVl
N2M3YTJhY2VmNDkxZjQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qCkBAIC0yMDM5Myw2ICsyMDM5Myw3IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFk
ZXJzXGluc3BlY3RvclxJbnNwZWN0b3JFbnZpcm9ubWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRl
cnNcaW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kUm91dGVyLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXJzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5n
SGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3Bl
Y3RvclByb3RvY29sT2JqZWN0cy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNsaWVudC5oCmluZGV4IGVlN2Q4ZmFjNDY1ZDFlNWNlZGUyMGUyYzE4ZWRlNWQ1ZjgxMDYx
MWUuLjZkMzlhNGM5MmFkY2Y1Mjg2ZjI0ODE1MmVjMWM1MjY5M2JhZGRkODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTI3LDExICsyNywxNCBAQAog
I2lmbmRlZiBJbnNwZWN0b3JDbGllbnRfaAogI2RlZmluZSBJbnNwZWN0b3JDbGllbnRfaAogCi0j
aW5jbHVkZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCitu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEZyb250ZW5kQ2hhbm5lbDsKK30KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFJlY3Q7CkBAIC00NSw3ICs0OCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSA9IDA7CiAKLSAgICB2
aXJ0dWFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKElu
c3BlY3RvckNvbnRyb2xsZXIqKSA9IDA7CisgICAgdmlydHVhbCBJbnNwZWN0b3I6OkZyb250ZW5k
Q2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZXNpemVNYWluRnJhbWUoRnJhbWUqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCAzYjAxMjNkZmFiNTZmNTlkMDBmYjFj
Njc0YWJlZDgzMmEwMzc2N2UxLi5lNWRjNzhiZjVjNTBlNzhkMDkzYjMwZTI3MmFjYWQxNTQ4ZDdm
YWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCkBAIC02OCw2ICs2OCw3IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVycy5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZERpc3Bh
dGNoZXJzLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+
CiAjaW5jbHVkZSA8aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oPgogI2luY2x1ZGUg
PHByb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4K
QEAgLTg2LDYgKzg3LDggQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxl
cihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICA6IG1faW5zdHJ1
bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQogICAgICwg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlw
dE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAs
IG1fb3ZlcmxheShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvck92ZXJsYXk+KHBhZ2UsIGluc3Bl
Y3RvckNsaWVudCkpCisgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVh
dGUoKSkKKyAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRj
aChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQogICAgICwgbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2luc3Bl
Y3RvckNsaWVudChpbnNwZWN0b3JDbGllbnQpCkBAIC0xNzcsNyArMTgwLDggQEAgSW5zcGVjdG9y
Q29udHJvbGxlcjo6fkluc3BlY3RvckNvbnRyb2xsZXIoKQogCiB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKQogewotICAgIGRpc2Nvbm5lY3RGcm9udGVu
ZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpOworICAgIGRpc2Nv
bm5lY3RBbGxGcm9udGVuZHMoKTsKKwogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5kaXNj
b25uZWN0KCk7CiAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmluc3BlY3RvckRlc3Ryb3llZCgpOwog
ICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbnVsbHB0cjsKQEAgLTE5MCwxMiArMTk0LDEyIEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQqIGluCiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzTG9j
YWxGcm9udGVuZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZnJvbnRlbmRDaGFubmVsICYmIG1f
ZnJvbnRlbmRDaGFubmVsLT5jb25uZWN0aW9uVHlwZSgpID09IEZyb250ZW5kQ2hhbm5lbDo6Q29u
bmVjdGlvblR5cGU6OkxvY2FsOworICAgIHJldHVybiBtX2Zyb250ZW5kUm91dGVyLT5oYXNMb2Nh
bEZyb250ZW5kKCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzUmVtb3RlRnJv
bnRlbmQoKSBjb25zdAogewotICAgIHJldHVybiBtX2Zyb250ZW5kQ2hhbm5lbCAmJiBtX2Zyb250
ZW5kQ2hhbm5lbC0+Y29ubmVjdGlvblR5cGUoKSA9PSBGcm9udGVuZENoYW5uZWw6OkNvbm5lY3Rp
b25UeXBlOjpSZW1vdGU7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRSb3V0ZXItPmhhc1JlbW90ZUZy
b250ZW5kKCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQoKSBjb25zdApAQCAtMjE3LDc2ICsyMjEsMTAxIEBAIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lJiBmcmFtZSwgRE9N
V3JhcHBlcldvCiAgICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQtPndpbmRvd09iamVj
dENsZWFyZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRl
bmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCBpc0F1
dG9tYXRpY0luc3BlY3Rpb24pCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9u
dGVuZChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCBpc0F1dG9tYXRpY0lu
c3BlY3Rpb24pCiB7Ci0gICAgQVNTRVJUKGZyb250ZW5kQ2hhbm5lbCk7CisgICAgQVNTRVJUX0FS
Ryhmcm9udGVuZENoYW5uZWwsIGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgQVNTRVJUKG1faW5zcGVj
dG9yQ2xpZW50KTsKLSAgICBBU1NFUlQoIW1fZnJvbnRlbmRDaGFubmVsKTsKLSAgICBBU1NFUlQo
IW1fYmFja2VuZERpc3BhdGNoZXIpOwogCisgICAgYm9vbCBjb25uZWN0ZWRGaXJzdEZyb250ZW5k
ID0gIW1fZnJvbnRlbmRSb3V0ZXItPmhhc0Zyb250ZW5kcygpOwogICAgIG1faXNBdXRvbWF0aWNJ
bnNwZWN0aW9uID0gaXNBdXRvbWF0aWNJbnNwZWN0aW9uOwogCi0gICAgbV9mcm9udGVuZENoYW5u
ZWwgPSBmcm9udGVuZENoYW5uZWw7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoZnJvbnRlbmRDaGFubmVsKTsKLQotICAgIG1fYWdlbnRzLmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChmcm9udGVuZENoYW5uZWwsIG1fYmFja2VuZERpc3BhdGNo
ZXIuZ2V0KCkpOworICAgIG1fZnJvbnRlbmRSb3V0ZXItPmNvbm5lY3RGcm9udGVuZChmcm9udGVu
ZENoYW5uZWwpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZWdpc3Rlckluc3Ry
dW1lbnRpbmdBZ2VudHMoKm1faW5zdHJ1bWVudGluZ0FnZW50cyk7CiAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpmcm9udGVuZENyZWF0ZWQoKTsKIAorICAgIGlmIChjb25uZWN0ZWRGaXJz
dEZyb250ZW5kKSB7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVnaXN0ZXJJ
bnN0cnVtZW50aW5nQWdlbnRzKCptX2luc3RydW1lbnRpbmdBZ2VudHMpOworICAgICAgICBtX2Fn
ZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoZnJvbnRlbmRDaGFubmVsLCAmbV9iYWNr
ZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgfQorCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCi0gICAgaWYgKCFoYXNSZW1vdGVGcm9udGVuZCgpKQorICAgIGlmICghbV9mcm9udGVuZFJv
dXRlci0+aGFzUmVtb3RlRnJvbnRlbmQoKSkKICAgICAgICAgbV9wYWdlLnJlbW90ZUluc3BlY3Rv
ckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CiAjZW5kaWYKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCit2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCkKIHsKLSAgICBpZiAoIW1fZnJvbnRlbmRDaGFubmVsKQotICAgICAg
ICByZXR1cm47CisgICAgLy8gVGhlIGxvY2FsIGZyb250ZW5kIGNsaWVudCBzaG91bGQgYmUgZGlz
Y29ubmVjdGVkIGZpcnN0IHNvIGl0IHN0b3BzIHNlbmRpbmcgbWVzc2FnZXMuCisgICAgQVNTRVJU
KCFtX2Zyb250ZW5kUm91dGVyLT5oYXNMb2NhbEZyb250ZW5kKCkgfHwgIW1faW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQpOworCisgICAgYm9vbCBkaWRIYXZlUmVtb3RlRnJvbnRlbmQgPSBtX2Zyb250
ZW5kUm91dGVyLT5oYXNSZW1vdGVGcm9udGVuZCgpOworICAgIG1fZnJvbnRlbmRSb3V0ZXItPmRp
c2Nvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwpOworICAgIG1faXNBdXRvbWF0aWNJbnNw
ZWN0aW9uID0gZmFsc2U7CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyb250ZW5k
RGVsZXRlZCgpOworCisgICAgYm9vbCBkaXNjb25uZWN0ZWRMYXN0RnJvbnRlbmQgPSAhbV9mcm9u
dGVuZFJvdXRlci0+aGFzRnJvbnRlbmRzKCk7CisgICAgaWYgKGRpc2Nvbm5lY3RlZExhc3RGcm9u
dGVuZCkgeworICAgICAgICAvLyBSZWxlYXNlIG92ZXJsYXkgcGFnZSByZXNvdXJjZXMuCisgICAg
ICAgIG1fb3ZlcmxheS0+ZnJlZVBhZ2UoKTsKKyAgICAgICAgbV9hZ2VudHMud2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsK
KyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1bnJlZ2lzdGVySW5zdHJ1bWVudGlu
Z0FnZW50cygqbV9pbnN0cnVtZW50aW5nQWdlbnRzKTsKKyAgICB9CiAKICNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKLSAgICBpZiAoIWhhc1JlbW90ZUZyb250ZW5kKCkpCisgICAgaWYgKCFt
X2Zyb250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMoKSAmJiBkaWRIYXZlUmVtb3RlRnJvbnRlbmQp
CiAgICAgICAgIG1fcGFnZS5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZGlkSGF2ZVJlbW90ZUZyb250ZW5kKTsKICNlbmRpZgor
fQogCi0gICAgbV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQocmVhc29uKTsK
K3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEFsbEZyb250ZW5kcygpCit7Cisg
ICAgLy8gVGhlIGxvY2FsIGZyb250ZW5kIGNsaWVudCBzaG91bGQgYmUgZGlzY29ubmVjdGVkIGZp
cnN0IHNvIGl0IHN0b3BzIHNlbmRpbmcgbWVzc2FnZXMuCisgICAgQVNTRVJUKCFtX2Zyb250ZW5k
Um91dGVyLT5oYXNMb2NhbEZyb250ZW5kKCkgfHwgIW1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQp
OwogCi0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+Y2xlYXJGcm9udGVuZCgpOwotICAgIG1fYmFj
a2VuZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fZnJvbnRlbmRDaGFubmVsID0gbnVsbHB0
cjsKKyAgICBtX2FnZW50cy53aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0
UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpOwogCisgICAgbV9mcm9udGVuZFJvdXRl
ci0+ZGlzY29ubmVjdEFsbEZyb250ZW5kcygpOwogICAgIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9u
ID0gZmFsc2U7CiAKICAgICAvLyBSZWxlYXNlIG92ZXJsYXkgcGFnZSByZXNvdXJjZXMuCiAgICAg
bV9vdmVybGF5LT5mcmVlUGFnZSgpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJv
bnRlbmREZWxldGVkKCk7CisKKyAgICB3aGlsZSAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpo
YXNGcm9udGVuZHMoKSkKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVu
ZERlbGV0ZWQoKTsKKwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dW5yZWdpc3Rlcklu
c3RydW1lbnRpbmdBZ2VudHMoKm1faW5zdHJ1bWVudGluZ0FnZW50cyk7CisgICAgCisjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgbV9wYWdlLnJlbW90ZUluc3BlY3RvckluZm9ybWF0
aW9uRGlkQ2hhbmdlKCk7CisjZW5kaWYKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpz
aG93KCkKIHsKLSAgICBBU1NFUlQoIWhhc1JlbW90ZUZyb250ZW5kKCkpOworICAgIEFTU0VSVCgh
bV9mcm9udGVuZFJvdXRlci0+aGFzUmVtb3RlRnJvbnRlbmQoKSk7CisKKyAgICAvLyBUaGUgbG9j
YWwgZnJvbnRlbmQgY2xpZW50IHNob3VsZCBiZSBkaXNjb25uZWN0ZWQgaWYgdGhlcmUncyBubyBs
b2NhbCBmcm9udGVuZC4KKyAgICBBU1NFUlQobV9mcm9udGVuZFJvdXRlci0+aGFzTG9jYWxGcm9u
dGVuZCgpIHx8ICFtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50KTsKIAogICAgIGlmICghZW5hYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9mcm9udGVuZENoYW5uZWwpCisgICAg
aWYgKG1fZnJvbnRlbmRSb3V0ZXItPmhhc0xvY2FsRnJvbnRlbmQoKSkKICAgICAgICAgbV9pbnNw
ZWN0b3JDbGllbnQtPmJyaW5nRnJvbnRlbmRUb0Zyb250KCk7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IGlmIChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gbV9pbnNw
ZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVuZCh0aGlzKSkgewotICAgICAgICAgICAg
Ym9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKLSAgICAgICAgICAgIGNvbm5lY3RG
cm9udGVuZChmcm9udGVuZENoYW5uZWwsIGlzQXV0b21hdGljSW5zcGVjdGlvbik7Ci0gICAgICAg
IH0KLSAgICB9CisgICAgZWxzZSBpZiAoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250
ZW5kQ2hhbm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9yRnJvbnRlbmQodGhp
cykpCisgICAgICAgIGNvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwpOwogfQogCiB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmNsb3NlKCkKIHsKLSAgICBpZiAoIW1fZnJvbnRlbmRDaGFu
bmVsKQotICAgICAgICByZXR1cm47Ci0gICAgZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RS
ZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7Ci0gICAgbV9pbnNwZWN0b3JDbGllbnQtPmNsb3Nl
SW5zcGVjdG9yRnJvbnRlbmQoKTsKKyAgICBpZiAobV9mcm9udGVuZFJvdXRlci0+aGFzTG9jYWxG
cm9udGVuZCgpKQorICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+Y2xvc2VJbnNwZWN0b3JGcm9u
dGVuZCgpOworCisgICAgQVNTRVJUKCFtX2Zyb250ZW5kUm91dGVyLT5oYXNMb2NhbEZyb250ZW5k
KCkpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldFByb2Nlc3NJZChsb25nIHBy
b2Nlc3NJZCkKQEAgLTMzNyw4ICszNjYsNyBAQCBQYWdlJiBJbnNwZWN0b3JDb250cm9sbGVyOjpp
bnNwZWN0ZWRQYWdlKCkgY29uc3QKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNwYXRj
aE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIGlmICht
X2JhY2tlbmREaXNwYXRjaGVyKQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5kaXNwYXRj
aChtZXNzYWdlKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpoaWRlSGlnaGxpZ2h0KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGNlYjNkZTJh
ZjE1Yjg0YmNiNzdiYmFhZGRjZTIxNTcyN2JiNGE5ZjAuLmRiZmJlM2ZkZTg4YTkzNmVkYzI1ZDUy
YjBhMjMwOTEzMmU0MDRjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaApAQCAtNDQsNiArNDQsNyBAQAogbmFtZXNwYWNlIEluc3BlY3RvciB7
CiBjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEZyb250ZW5kQ2hhbm5lbDsKK2NsYXNz
IEZyb250ZW5kUm91dGVyOwogY2xhc3MgSW5zcGVjdG9yQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JP
YmplY3Q7CiAKQEAgLTk3LDggKzk4LDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzTG9jYWxGcm9u
dGVuZCgpIGNvbnN0OwogICAgIGJvb2wgaGFzUmVtb3RlRnJvbnRlbmQoKSBjb25zdDsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRD
aGFubmVsKiwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiA9IGZhbHNlKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hh
bm5lbCopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzY29ubmVjdEFsbEZyb250ZW5kcygp
OwogICAgIHZvaWQgc2V0UHJvY2Vzc0lkKGxvbmcpOwogCiAgICAgdm9pZCBpbnNwZWN0KE5vZGUq
KTsKQEAgLTE0OSw4ICsxNTEsOCBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQqIG1fZG9tRGVidWdnZXJBZ2VudDsKICAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBt
X3RpbWVsaW5lQWdlbnQ7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hl
cj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCog
bV9mcm9udGVuZENoYW5uZWwgeyBudWxscHRyIH07CisgICAgUmVmPEluc3BlY3Rvcjo6RnJvbnRl
bmRSb3V0ZXI+IG1fZnJvbnRlbmRSb3V0ZXI7CisgICAgUmVmPEluc3BlY3Rvcjo6QmFja2VuZERp
c3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgUmVmPFdURjo6U3RvcHdhdGNoPiBt
X2V4ZWN1dGlvblN0b3B3YXRjaDsKICAgICBQYWdlJiBtX3BhZ2U7CiAgICAgSW5zcGVjdG9yQ2xp
ZW50KiBtX2luc3BlY3RvckNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCBiZTI3Zjk1NjE0NDU5ZmJmZmQxYjAy
ZDQ4NWNmMWQ3N2RlZDk2NmVkLi4xMmFiNTQzYjczOGVmYzA0N2RlYjk5MjAwMTAwOTlkNDdiZjg0
YmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFi
YXNlQWdlbnQuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25F
cnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU1FMVmFsdWUuaCIKICNpbmNsdWRlICJWb2lkQ2Fs
bGJhY2suaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4K
ICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmNwcAppbmRleCAxNzJmYjU4MTI4MDIwYTNhZTU1ZDY1ZDRmMDhmNTdhZTE2
YTBlY2Y3Li5jMDNiZjdlNjJiM2FkMDM1ZDMzYjkyZGVkNjhkNmM0ZGQ5NjJhZDcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5j
cHAKQEAgLTY0LDYgKzY0LDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQu
aD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+CiAjaW5jbHVk
ZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaD4KKyNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3Iv
SW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDdiNTZhMGZmOWQxNThmNmJhOGIxMzUzYTBi
YWIyZTRkMGU4OWExZDcuLjUzZTBiY2IyNjgyMGM1MjBkMjUzMDlhZmMzYWZhNTFmMTViZDM0YjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5jcHAKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJX
ZWJTb2NrZXRGcmFtZS5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3Rvcnku
aD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4KICNpbmNs
dWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1Nj
cmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKaW5kZXggMTJjZWQ0NjA4M2QwY2UzYzVkYzQ2N2VhMDFhODc3YmIz
NjBlMGI1Yi4uMWIwMjc1OWExNzc0YTM3YjIwZmE0ZGNkMTY4NDk5ZjY5NGE2ZGQ3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2lu
Y2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmg+CisjaW5jbHVkZSA8aW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRj
aC5oPgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwpAQCAtODEsNiArODIsOCBAQCBXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckds
b2JhbFNjb3BlJiB3b3JrZXJHbAogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjpt
YWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNj
cmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fcnVudGltZUFnZW50KG51bGxwdHIpCiAgICAg
LCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQorICAgICwgbV9mcm9u
dGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCisgICAgLCBtX2JhY2tlbmREaXNw
YXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVm
KCkpKQogewogICAgIGF1dG8gcnVudGltZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJS
dW50aW1lQWdlbnQ+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCAmd29ya2VyR2xvYmFs
U2NvcGUpOwogICAgIG1fcnVudGltZUFnZW50ID0gcnVudGltZUFnZW50LmdldCgpOwpAQCAtMTE1
LDI3ICsxMTgsMjcgQEAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6fldvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIoKQogCiB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RG
cm9udGVuZCgpCiB7Ci0gICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9mcm9u
dGVuZENoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VJbnNwZWN0b3JQcm94eT4obV93b3Jr
ZXJHbG9iYWxTY29wZSk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUobV9mcm9udGVuZENoYW5uZWwuZ2V0KCkpOwotICAgIG1fYWdlbnRzLmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSwgbV9iYWNrZW5k
RGlzcGF0Y2hlci5nZXQoKSk7CisgICAgQVNTRVJUKCFtX2Zyb250ZW5kUm91dGVyLT5oYXNGcm9u
dGVuZHMoKSk7CisgICAgQVNTRVJUKCFtX2ZvcndhcmRpbmdDaGFubmVsKTsKKworICAgIG1fZm9y
d2FyZGluZ0NoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VJbnNwZWN0b3JQcm94eT4obV93
b3JrZXJHbG9iYWxTY29wZSk7CisgICAgbV9mcm9udGVuZFJvdXRlci0+Y29ubmVjdEZyb250ZW5k
KG1fZm9yd2FyZGluZ0NoYW5uZWwuZ2V0KCkpOworICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChtX2ZvcndhcmRpbmdDaGFubmVsLmdldCgpLCAmbV9iYWNrZW5kRGlzcGF0
Y2hlci5nZXQoKSk7CiB9CiAKIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29u
bmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7Ci0gICAg
aWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkKLSAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX2Zy
b250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMoKSk7CisgICAgQVNTRVJUKG1fZm9yd2FyZGluZ0No
YW5uZWwpOwogCiAgICAgbV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQocmVh
c29uKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5jbGVhckZyb250ZW5kKCk7Ci0gICAgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9mcm9udGVuZENoYW5uZWwgPSBudWxs
cHRyOworICAgIG1fZnJvbnRlbmRSb3V0ZXItPmRpc2Nvbm5lY3RGcm9udGVuZChtX2ZvcndhcmRp
bmdDaGFubmVsLmdldCgpKTsKKyAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0gbnVsbHB0cjsKIH0K
IAogdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIGlmIChtX2JhY2tlbmREaXNwYXRj
aGVyKQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKKyAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKIH0KIAogdm9pZCBXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN1bWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggOTY3NDA4M2NkZWNh
ZGM5MWU1MDMwMjIyN2ZkYzRkMWE5MThiZWEwNC4uYWE0ZjQzZmQ4MTMwMzE2NWY5YmVmN2Y0MmI2
YzE3M2IxN2YxNWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VySW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC00MSw2ICs0MSwxMCBAQAogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0
b3IgeworY2xhc3MgRnJvbnRlbmRSb3V0ZXI7Cit9OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjsKQEAgLTc4LDkgKzgyLDEwIEBAIHByaXZh
dGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4gbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgV29ya2VyUnVudGltZUFnZW50KiBtX3J1bnRpbWVBZ2Vu
dDsKICAgICBJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnkgbV9hZ2VudHM7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsPiBtX2Zyb250ZW5kQ2hhbm5lbDsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWw+IG1fZm9yd2FyZGlu
Z0NoYW5uZWw7CiAgICAgUmVmPFdURjo6U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsK
LSAgICBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0
Y2hlcjsKKyAgICBSZWY8SW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcj4gbV9mcm9udGVuZFJvdXRl
cjsKKyAgICBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0
Y2hlcjsKICAgICBWZWN0b3I8SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLCAyPiBtX2lu
amVjdGVkU2NyaXB0SW5zdHJ1bWVudGF0aW9uQ29va2llczsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlRGVidWdnYWJsZS5jcHAKaW5kZXggZmU3YjI5NDg2YWRlOGI0ZmEzZjNmNDlhMGVmYWQ5
Y2Q3MDA5N2RkZC4uMjQ5ODNiZWM0YTc5Y2U3MzhiNDNlOTBlMjhkYzAwNWUzOGE2YjRhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKQEAgLTgwLDEwICs4MCwxMCBAQCB2
b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBj
aGFubmVsLCBib29sIGlzQXV0b21hdAogICAgIGluc3BlY3RvckNvbnRyb2xsZXIuY29ubmVjdEZy
b250ZW5kKGNoYW5uZWwsIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CiB9CiAKLXZvaWQgUGFnZURl
YnVnZ2FibGU6OmRpc2Nvbm5lY3QoKQordm9pZCBQYWdlRGVidWdnYWJsZTo6ZGlzY29ubmVjdChJ
bnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCkKIHsKICAgICBJbnNwZWN0b3JDb250
cm9sbGVyJiBpbnNwZWN0b3JDb250cm9sbGVyID0gbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIo
KTsKLSAgICBpbnNwZWN0b3JDb250cm9sbGVyLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6
OkRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgaW5zcGVjdG9yQ29u
dHJvbGxlci5kaXNjb25uZWN0RnJvbnRlbmQoY2hhbm5lbCk7CiAKICAgICBpZiAobV9mb3JjZWRE
ZXZlbG9wZXJFeHRyYXNFbmFibGVkKSB7CiAgICAgICAgIG1fZm9yY2VkRGV2ZWxvcGVyRXh0cmFz
RW5hYmxlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVi
dWdnYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5oCmluZGV4IDZh
ZWZjYzNjYjQ1YjkyMDE3MGU5Nzk0NThiZTVhYjA2MGIzNmE0ZDMuLmIyOTA5NGY1OTljMWFjMWRk
M2Y1ZGQyMzc0MWI1ZmRiMWI2YWM1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZURlYnVnZ2FibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxl
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNMb2NhbERl
YnVnZ2VyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJbnNw
ZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBkaXNjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRpY2F0
aW5nKGJvb2wpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5k
ZXggMmE1YzdlYmE4NjU1M2VjY2IzNzg3NWM2NjU5YWM1ZjM5MzliZWNhMC4uM2I5ZWFhYzJiZTI4
ZjdhYzhmZDRhNzI4NTMzZmQyOTExNTBmOGNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcApAQCAtMTczMiw5ICsxNzMyLDggQEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IEludGVy
bmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAg
bV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnREdW1teT4oJnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRlbmRQYWdlKTsKICAg
ICBmcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVu
ZENsaWVudChtX2Zyb250ZW5kQ2xpZW50LmdldCgpKTsKIAotICAgIGJvb2wgaXNBdXRvbWF0aWNJ
bnNwZWN0aW9uID0gZmFsc2U7CiAgICAgbV9mcm9udGVuZENoYW5uZWwgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbER1bW15Pihmcm9udGVuZFBhZ2UpOwotICAgIHBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQobV9mcm9udGVuZENoYW5u
ZWwuZ2V0KCksIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CisgICAgcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZChtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSk7CiAKICAg
ICByZXR1cm4gbV9mcm9udGVuZFdpbmRvdzsKIH0KQEAgLTE3NDUsOSArMTc0NCwxMyBAQCB2b2lk
IEludGVybmFsczo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKCkKICAgICBBU1NFUlQocGFn
ZSk7CiAgICAgQVNTRVJUKG1fZnJvbnRlbmRXaW5kb3cpOwogCi0gICAgcGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFz
b246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgUGFnZSogZnJvbnRlbmRQYWdlID0gbV9mcm9u
dGVuZFdpbmRvdy0+ZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIEFTU0VSVChmcm9udGVuZFBhZ2Up
OwogCisgICAgZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQobnVsbHB0cik7CiAgICAgbV9mcm9udGVuZENsaWVudCA9IG51bGxwdHI7
CisKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKG1f
ZnJvbnRlbmRDaGFubmVsLmdldCgpKTsKICAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7
CiAKICAgICBtX2Zyb250ZW5kV2luZG93LT5jbG9zZShtX2Zyb250ZW5kV2luZG93LT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBjNTBkYmI3YTU4ZDhiNjQzNjAwNmE1
ZjljMGNkOGVkZDk3NGQ3YjZlLi4wMWI0YmM5MDRjNzM1NzFjZGI2YTNjOTEzOTIyZjM0OGJlNWFl
ZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaApAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgdm9pZCBicmluZ1RvRnJvbnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VX
aW5kb3coKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyb21CYWNrZW5k
KCk7CisgICAgdm9pZCBkaXNjb25uZWN0RnJvbUJhY2tlbmQoKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBhdHRhY2hXaW5kb3coRG9ja1NpZGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkZXRh
Y2hXaW5kb3coKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCA4MDYwMDNhNjI0NTQwNTcyOWNh
ZWY4YTY3MTIzYzYzMTViYWU0ZThlLi42ZTU0NTZiMzEwMzVjMTIyOTUyODIxMmY5ZTRkZDhjN2Nk
NzJkNGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC04Nyw3ICs4Nyw3IEBAIC0gKHZvaWQpc2V0SW5zcGVj
dG9yQ2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQqKWluc3BlY3RvckNsaWVudDsKIC0gKFdlYklu
c3BlY3RvckNsaWVudCopaW5zcGVjdG9yQ2xpZW50OwogLSAodm9pZClzZXRBdHRhY2hlZFdpbmRv
d0hlaWdodDoodW5zaWduZWQpaGVpZ2h0OwogLSAodm9pZClzZXREb2NraW5nVW5hdmFpbGFibGU6
KEJPT0wpdW5hdmFpbGFibGU7Ci0tICh2b2lkKWRlc3Ryb3lJbnNwZWN0b3JWaWV3Oihib29sKW5v
dGlmeUluc3BlY3RvckNvbnRyb2xsZXI7CistICh2b2lkKWRlc3Ryb3lJbnNwZWN0b3JWaWV3Owog
QGVuZAogCiAKQEAgLTEzMCw2ICsxMzAsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6Y2xv
c2VJbnNwZWN0b3JGcm9udGVuZCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpicmluZ0Zy
b250ZW5kVG9Gcm9udCgpCiB7CisgICAgQVNTRVJUKG1fZnJvbnRlbmRDbGllbnQpOwogICAgIG1f
ZnJvbnRlbmRDbGllbnQtPmJyaW5nVG9Gcm9udCgpOwogfQogCkBAIC0yNTIsMTIgKzI1MywxMiBA
QCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpicmluZ1RvRnJvbnQoKQogCiB2b2lk
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjbG9zZVdpbmRvdygpCiB7Ci0gICAgW21fd2lu
ZG93Q29udHJvbGxlci5nZXQoKSBkZXN0cm95SW5zcGVjdG9yVmlldzp0cnVlXTsKKyAgICBbbV93
aW5kb3dDb250cm9sbGVyLmdldCgpIGRlc3Ryb3lJbnNwZWN0b3JWaWV3XTsKIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGlzY29ubmVjdEZyb21CYWNrZW5kKCkKIHsKLSAg
ICBbbV93aW5kb3dDb250cm9sbGVyLmdldCgpIGRlc3Ryb3lJbnNwZWN0b3JWaWV3OmZhbHNlXTsK
KyAgICBbbV93aW5kb3dDb250cm9sbGVyLmdldCgpIGRlc3Ryb3lJbnNwZWN0b3JWaWV3XTsKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNoV2luZG93KERvY2tTaWRl
KQpAQCAtNTIyLDcgKzUyMyw3IEBAIC0gKE5TUmVjdCl3aW5kb3c6KE5TV2luZG93ICopd2luZG93
IHdpbGxQb3NpdGlvblNoZWV0OihOU1dpbmRvdyAqKXNoZWV0IHVzaW5nUmVjCiAKIC0gKEJPT0wp
d2luZG93U2hvdWxkQ2xvc2U6KGlkKXNlbmRlcgogewotICAgIFtzZWxmIGRlc3Ryb3lJbnNwZWN0
b3JWaWV3OnRydWVdOworICAgIFtzZWxmIGRlc3Ryb3lJbnNwZWN0b3JWaWV3XTsKIAogICAgIHJl
dHVybiBZRVM7CiB9CkBAIC02NzYsNyArNjc3LDcgQEAgLSAodm9pZClzZXREb2NraW5nVW5hdmFp
bGFibGU6KEJPT0wpdW5hdmFpbGFibGUKICAgICAvLyBEbyBub3RoaW5nLgogfQogCi0tICh2b2lk
KWRlc3Ryb3lJbnNwZWN0b3JWaWV3Oihib29sKW5vdGlmeUluc3BlY3RvckNvbnRyb2xsZXIKKy0g
KHZvaWQpZGVzdHJveUluc3BlY3RvclZpZXcKIHsKICAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9y
V2luZG93Q29udHJvbGxlcj4gcHJvdGVjdChzZWxmKTsKIApAQCAtNjkyLDkgKzY5Myw5IEBAIC0g
KHZvaWQpZGVzdHJveUluc3BlY3RvclZpZXc6KGJvb2wpbm90aWZ5SW5zcGVjdG9yQ29udHJvbGxl
cgogCiAgICAgX3Zpc2libGUgPSBOTzsKIAotICAgIGlmIChub3RpZnlJbnNwZWN0b3JDb250cm9s
bGVyKSB7Ci0gICAgICAgIGlmIChQYWdlKiBpbnNwZWN0ZWRQYWdlID0gW19pbnNwZWN0ZWRXZWJW
aWV3LmdldCgpIHBhZ2VdKQotICAgICAgICAgICAgaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246
Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgaWYgKFBhZ2UqIGluc3BlY3RlZFBhZ2UgPSBbX2lu
c3BlY3RlZFdlYlZpZXcuZ2V0KCkgcGFnZV0pIHsKKyAgICAgICAgaW5zcGVjdGVkUGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG51bGxwdHIpOwor
ICAgICAgICBpbnNwZWN0ZWRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZy
b250ZW5kKF9pbnNwZWN0b3JDbGllbnQpOwogICAgIH0KIAogICAgIFtfd2ViVmlldyBjbG9zZV07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmNwcAppbmRleCA0NWQ0YWIwZGExNjA3NGM3NmIwOGJiNjM0ZDEzYWRhYmQ2ZDZi
YWNhLi4yYWJhNTM3MjBiZDAwMDAwMjE2NjhkY2UzM2FjOTg3MTJkZjkzM2EyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKElucwogdm9pZCBX
ZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQogewogICAgIGlmICht
X2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5kZXN0cm95SW5zcGVj
dG9yVmlldyhmYWxzZSk7CisgICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPmRlc3Ryb3lJbnNwZWN0
b3JWaWV3KCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpicmluZ0Zyb250ZW5kVG9G
cm9udCgpCkBAIC0yMzcsNyArMjM3LDcgQEAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Oldl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcKIAogV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6On5XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpCiB7
Ci0gICAgZGVzdHJveUluc3BlY3RvclZpZXcodHJ1ZSk7CisgICAgZGVzdHJveUluc3BlY3RvclZp
ZXcoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZnJvbnRlbmRMb2Fk
ZWQoKQpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OmJyaW5nVG9Gcm9udCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNsb3Nl
V2luZG93KCkKIHsKLSAgICBkZXN0cm95SW5zcGVjdG9yVmlldyh0cnVlKTsKKyAgICBkZXN0cm95
SW5zcGVjdG9yVmlldygpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojph
dHRhY2hXaW5kb3coRG9ja1NpZGUpCkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6c2hvd1dpbmRvd1dpdGhvdXROb3RpZmljYXRpb25zKCkKICAgICBt
X2luc3BlY3RvckNsaWVudC0+dXBkYXRlSGlnaGxpZ2h0KCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ryb3lJbnNwZWN0b3JWaWV3KGJvb2wgbm90aWZ5SW5zcGVj
dG9yQ29udHJvbGxlcikKK3ZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ryb3lJ
bnNwZWN0b3JWaWV3KCkKIHsKICAgICBtX2luc3BlY3RvckNsaWVudC0+cmVsZWFzZUZyb250ZW5k
KCk7CiAKQEAgLTQzMSwxMCArNDMxLDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OmRlc3Ryb3lJbnNwZWN0b3JWaWV3KGJvb2wgbm90aWZ5SW5zcGVjdG9yQ29udHJvCiAKICAg
ICBjbG9zZVdpbmRvd1dpdGhvdXROb3RpZmljYXRpb25zKCk7CiAKLSAgICBpZiAobm90aWZ5SW5z
cGVjdG9yQ29udHJvbGxlcikgewotICAgICAgICBtX2luc3BlY3RlZFdlYlZpZXctPnBhZ2UoKS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nv
bm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7Ci0gICAgICAgIG1faW5zcGVjdG9yQ2xp
ZW50LT51cGRhdGVIaWdobGlnaHQoKTsKLSAgICB9CisgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5w
YWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChu
dWxscHRyKTsKKyAgICBtX2luc3BlY3RlZFdlYlZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZCh0aGlzKTsKKyAgICBtX2luc3BlY3RvckNsaWVudC0+
dXBkYXRlSGlnaGxpZ2h0KCk7CisKICAgICA6OkRlc3Ryb3lXaW5kb3cobV9mcm9udGVuZEh3bmQp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5oCmluZGV4IDlmYjM4NmUzMWNkOTRkYTA3YjY4ZjJjNTFmODU2M2IzOTU1
ZWM3MjQuLjk1NjhkYTAzM2ZlNDY0NzdhZmYxM2NiNzM0ODcxYTYzZTAzMDIyY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5oCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluc3Bl
Y3RlZFVSTENoYW5nZWQoY29uc3QgV1RGOjpTdHJpbmcmIG5ld1VSTCk7CiAKLSAgICB2b2lkIGRl
c3Ryb3lJbnNwZWN0b3JWaWV3KGJvb2wgbm90aWZ5SW5zcGVjdG9yQ29udHJvbGxlcik7CisgICAg
dm9pZCBkZXN0cm95SW5zcGVjdG9yVmlldygpOwogCiBwcml2YXRlOgogICAgIHZvaWQgY2xvc2VX
aW5kb3dXaXRob3V0Tm90aWZpY2F0aW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
CmluZGV4IDVhN2YxNzAwYmQxOWFiY2FhN2Y3ODU2ZGEyYTAzZWI2Y2UyNmYxYjAuLjY2ZTliYzcw
ZGFjMDQ0ODc2OTQzZmI1ZGQzOWNkYjJhNzRkMjM2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHAKQEAgLTgyLDE3ICs4MiwxOSBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5z
cGVjdG9yRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAotV2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9u
dGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyKQorSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCiB7Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+
Y3JlYXRlSW5zcGVjdG9yUGFnZShjb250cm9sbGVyLT5pc1VuZGVyVGVzdCgpKTsKKyAgICBtX3Bh
Z2UtPmluc3BlY3RvcigpLT5vcGVuRnJvbnRlbmRDb25uZWN0aW9uKGNvbnRyb2xsZXItPmlzVW5k
ZXJUZXN0KCkpOwogCiAgICAgcmV0dXJuIG1fcGFnZS0+aW5zcGVjdG9yKCk7CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKCkKIHsKLSAgICBpZiAo
bV9wYWdlLT5pbnNwZWN0b3IoKSkKLSAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y2xvc2VG
cm9udGVuZCgpOworICAgIGlmIChtX3BhZ2UtPmluc3BlY3RvcigpKSB7CisgICAgICAgIG1fcGFn
ZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZCht
X3BhZ2UtPmluc3BlY3RvcigpKTsKKyAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y2xvc2VG
cm9udGVuZENvbm5lY3Rpb24oKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50
OjpicmluZ0Zyb250ZW5kVG9Gcm9udCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA5
YTQ0MDBiZTVhYmE2Yjk5NTE1ZjZkODkxZjZlOWE4MTU2NzhhNDE1Li5iODM4MGIxYjg4YjE3NjE0
MWZmYzRhODQ1NzM4ODQwZDdiZDk4ZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAg
LTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgV2ViSW5zcGVjdG9yQ2xpZW50X2gKIAogI2luY2x1ZGUg
PFdlYkNvcmUvSW5zcGVjdG9yQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JG
b3J3YXJkaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlT3ZlcmxheS5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAKQEAgLTUzLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJD
b3JlOjpJbnNwZWN0b3JDbGllbnQKICAgICB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpIG92ZXJy
aWRlOwogCi0gICAgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVj
dG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlOworICAg
IEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlOwogICAgIHZvaWQgY2xvc2VJbnNwZWN0
b3JGcm9udGVuZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZFJlc2l6ZU1haW5GcmFtZShXZWJDb3JlOjpGcmFtZSopIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5z
cGVjdG9yLmNwcAppbmRleCBlMGFkNzU0NDQ1ODVkOGE5ZTdhMmU3MTYzMTVhMTUxOWY5NWVmZmI5
Li41OTY5YWEyMmYzNmRmOTQxMWQ1ZGExMDU2ZjFkMjZkMzAyMGVkNTI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApAQCAtNzAs
NyArNzAsNyBAQCBXZWJJbnNwZWN0b3I6On5XZWJJbnNwZWN0b3IoKQogfQogCiAvLyBDYWxsZWQg
ZnJvbSBXZWJJbnNwZWN0b3JDbGllbnQKLXZvaWQgV2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0
b3JQYWdlKGJvb2wgdW5kZXJUZXN0KQordm9pZCBXZWJJbnNwZWN0b3I6Om9wZW5Gcm9udGVuZENv
bm5lY3Rpb24oYm9vbCB1bmRlclRlc3QpCiB7CiAjaWYgT1MoREFSV0lOKQogICAgIG1hY2hfcG9y
dF90IGxpc3RlbmluZ1BvcnQ7CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpj
cmVhdGVJbnNwZWN0b3JQYWdlKGJvb2wgdW5kZXJUZXN0KQogICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpDcmVhdGVJbnNwZWN0b3JQYWdlKGNvbm5lY3Rpb25DbGllbnRQb3J0LCBjYW5B
dHRhY2hXaW5kb3coKSwgdW5kZXJUZXN0KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQg
V2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kKCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZUZy
b250ZW5kQ29ubmVjdGlvbigpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRp
ZENsb3NlKCksIG1fcGFnZS0+cGFnZUlEKCkpOwogCkBAIC0yNjIsOCArMjYyLDcgQEAgdm9pZCBX
ZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkKIHsKICAgICBpZiAobV9wYWdl
LT5jb3JlUGFnZSgpKSB7CiAgICAgICAgIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQgPSB0cnVl
OwotICAgICAgICBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiA9IGZhbHNlOwotICAgICAgICBt
X3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQo
dGhpcywgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKKyAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgp
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKHRoaXMpOwogICAgIH0KIH0K
IApAQCAtMjcyLDcgKzI3MSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZERp
c2Nvbm5lY3RlZCgpCiAgICAgbV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCA9IGZhbHNlOwogCiAg
ICAgaWYgKG1fcGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5p
bnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29u
bmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKyAgICAgICAgbV9wYWdlLT5jb3JlUGFn
ZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKHRoaXMpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuaAppbmRleCAwNDAwOGUxNWRjN2EyNmZmYmEzNzdhY2IwNjcxNTYyODY2MTFkZWE5Li4w
MDEyODc5Y2ZhOWM2ZDFiNDVkMjMwODgwY2UyMmQ5OGRkYjhhZDI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCkBAIC05Nyw5ICs5Nyw5
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5BdHRhY2hXaW5kb3coKTsKIAogICAgIC8vIENhbGxl
ZCBmcm9tIFdlYkluc3BlY3RvckNsaWVudAotICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZShi
b29sIHVuZGVyVGVzdCk7CisgICAgdm9pZCBvcGVuRnJvbnRlbmRDb25uZWN0aW9uKGJvb2wgdW5k
ZXJUZXN0KTsKKyAgICB2b2lkIGNsb3NlRnJvbnRlbmRDb25uZWN0aW9uKCk7CiAKLSAgICB2b2lk
IGNsb3NlRnJvbnRlbmQoKTsKICAgICB2b2lkIGJyaW5nVG9Gcm9udCgpOwogCiAgICAgV2ViUGFn
ZSogbV9wYWdlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDhjMWRkYTVmNWIyNGU2NzE0MTc3NzYyYzYxODI1MGUxZTUxMTQzNTMuLjI2NjM1ODIw
NDQyOWQ3ZmMzMTA2NTU3N2M2MTY3MDgzNzUxM2E3ODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNS0wOC0yOCAg
QnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJ
bnNwZWN0b3JDb250cm9sbGVyIHNob3VsZCBzdXBwb3J0IG11bHRpcGxlIGZyb250ZW5kIGNoYW5u
ZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1
MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnNw
ZWN0b3JDbGllbnRzIG11c3QgZXhwbGljaXRseSBkaXNjb25uZWN0IHRoZWlyIGZyb250ZW5kIGNo
YW5uZWwocykgZnJvbSB0aGUKKyAgICAgICAgaW5zcGVjdGVkIHBhZ2UncyBJbnNwZWN0b3JDb250
cm9sbGVyLgorCisgICAgICAgIFRvIG1ha2UgdGhpcyBwb3NzaWJsZSwgRHVtcFJlbmRlclRyZWUg
c2hvdWxkIG5vdCBkZXN0cm95IG5vbi1wcmltYXJ5IHZpZXdzIHVudGlsCisgICAgICAgIGl0IGhh
cyB0cmllZCB0byBjbG9zZSBhbnkgYWJhbmRvbmVkIFdlYiBJbnNwZWN0b3IgaW5zdGFuY2VzLiBQ
ZXJmb3JtaW5nIHRlYXJkb3duCisgICAgICAgIGluIHRoZSByZXZlcnNlIG9yZGVyIHByZXZlbnRz
IGRpc2Nvbm5lY3Rpb24gb2YgdGhlIGZyb250ZW5kIGNoYW5uZWwgYmVjYXVzZSB0aGF0CisgICAg
ICAgIHByZW1hdHVyZWx5IGRlc3Ryb3lzIHRoZSBpbnNwZWN0b3IgZnJvbnRlbmQgY2xpZW50Lgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAg
ICAocnVuVGVzdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcDoKKyAgICAgICAgKHJ1blRlc3QpOgorCiAyMDE1LTA4LTI4ICBUaW1vdGh5IEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgYW4gb2xkIHRlbXBv
cmFyeSBzY3JpcHQgdGhhdCBoYXMgc2VydmVkIGl0cyBwdXJwb3NlCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggMGI1NmVkYjlkYjY0Y2VlOTA0NjNhNjI0
MjRlZmYxYzcwZGJjZTczMy4uOGEwMWMzYTMxOTQ0ODg1YWY2ODhlNmIxNTkyZDI5YzdmMzIxMmYw
YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMjAy
OCw2ICsyMDI4LDEzIEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1dExp
bmUpCiAKICAgICB3b3JrUXVldWUuY2xlYXIoKTsKIAorICAgIC8vIElmIHRoZSB0ZXN0IHBhZ2Ug
Y291bGQgaGF2ZSBwb3NzaWJseSBvcGVuZWQgdGhlIFdlYiBJbnNwZWN0b3IgZnJvbnRlbmQsCisg
ICAgLy8gdGhlbiB0cnkgdG8gY2xvc2UgaXQgaW4gY2FzZSBpdCB3YXMgYWNjaWRlbnRhbGx5IGxl
ZnQgb3Blbi4KKyAgICBpZiAoc2hvdWxkRW5hYmxlRGV2ZWxvcGVyRXh0cmFzKHBhdGhPclVSTC5j
X3N0cigpKSkgeworICAgICAgICBnVGVzdFJ1bm5lci0+Y2xvc2VXZWJJbnNwZWN0b3IoKTsKKyAg
ICAgICAgZ1Rlc3RSdW5uZXItPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoZmFsc2UpOworICAg
IH0KKwogICAgIGlmIChnVGVzdFJ1bm5lci0+Y2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBs
ZXRlKCkpIHsKICAgICAgICAgTlNBcnJheSogYXJyYXkgPSBbRHVtcFJlbmRlclRyZWVXaW5kb3cg
b3BlbldpbmRvd3NdOwogCkBAIC0yMDUxLDEyICsyMDU4LDYgQEAgc3RhdGljIHZvaWQgcnVuVGVz
dChjb25zdCBzdHJpbmcmIGlucHV0TGluZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIElm
IGRldmVsb3BlciBleHRyYXMgZW5hYmxlZCBXZWIgSW5zcGVjdG9yIG1heSBoYXZlIGJlZW4gb3Bl
biBieSB0aGUgdGVzdC4KLSAgICBpZiAoc2hvdWxkRW5hYmxlRGV2ZWxvcGVyRXh0cmFzKHBhdGhP
clVSTC5jX3N0cigpKSkgewotICAgICAgICBnVGVzdFJ1bm5lci0+Y2xvc2VXZWJJbnNwZWN0b3Io
KTsKLSAgICAgICAgZ1Rlc3RSdW5uZXItPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoZmFsc2Up
OwotICAgIH0KLQogICAgIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGlu
ZygpOwogCiAgICAgLy8gTG9hZGluZyBhbiBlbXB0eSByZXF1ZXN0IHN5bmNocm9ub3VzbHkgcmVw
bGFjZXMgdGhlIGRvY3VtZW50IHdpdGggYSBibGFuayBvbmUsIHdoaWNoIGlzIG5lY2Vzc2FyeQpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggZTU2ZWIx
ZjUzN2I5NDAzZjU1YzZlZDAzYzlkMTdiODc5MDgwOWQ1Ni4uZDAyY2ZlYzU4ODI1NDQ1Nzk0YmRh
MGI5NWZkMGZlYzAzODkxNzQwMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJl
bmRlclRyZWUuY3BwCkBAIC0xMTQ3LDYgKzExNDcsMTMgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChj
b25zdCBzdHJpbmcmIGlucHV0TGluZSkKICAgICAvLyBFdmVudFNlbmRpbmdDb250cm9sbGVyIGNs
ZWFyU2F2ZWRFdmVudHMKICAgICB3b3JrUXVldWUuY2xlYXIoKTsKIAorICAgIC8vIElmIHRoZSB0
ZXN0IHBhZ2UgY291bGQgaGF2ZSBwb3NzaWJseSBvcGVuZWQgdGhlIFdlYiBJbnNwZWN0b3IgZnJv
bnRlbmQsCisgICAgLy8gdGhlbiB0cnkgdG8gY2xvc2UgaXQgaW4gY2FzZSBpdCB3YXMgYWNjaWRl
bnRhbGx5IGxlZnQgb3Blbi4KKyAgICBpZiAoc2hvdWxkRW5hYmxlRGV2ZWxvcGVyRXh0cmFzKHBh
dGhPclVSTC5jX3N0cigpKSkgeworICAgICAgICA6OmdUZXN0UnVubmVyLT5jbG9zZVdlYkluc3Bl
Y3RvcigpOworICAgICAgICA6OmdUZXN0UnVubmVyLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVk
KGZhbHNlKTsKKyAgICB9CisKICAgICBpZiAoOjpnVGVzdFJ1bm5lci0+Y2xvc2VSZW1haW5pbmdX
aW5kb3dzV2hlbkNvbXBsZXRlKCkpIHsKICAgICAgICAgVmVjdG9yPEhXTkQ+IHdpbmRvd3MgPSBv
cGVuV2luZG93cygpOwogICAgICAgICB1bnNpZ25lZCBzaXplID0gd2luZG93cy5zaXplKCk7CkBA
IC0xMTYxLDExICsxMTY4LDYgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlu
cHV0TGluZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChzaG91bGRFbmFibGVEZXZlbG9w
ZXJFeHRyYXMocGF0aE9yVVJMLmNfc3RyKCkpKSB7Ci0gICAgICAgIDo6Z1Rlc3RSdW5uZXItPmNs
b3NlV2ViSW5zcGVjdG9yKCk7Ci0gICAgICAgIDo6Z1Rlc3RSdW5uZXItPnNldERldmVsb3BlckV4
dHJhc0VuYWJsZWQoZmFsc2UpOwotICAgIH0KLQogICAgIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVu
dFN0YXRlQmVmb3JlVGVzdGluZygpOwogCiAgICAgLy8gTG9hZGluZyBhbiBlbXB0eSByZXF1ZXN0
IHN5bmNocm9ub3VzbHkgcmVwbGFjZXMgdGhlIGRvY3VtZW50IHdpdGggYSBibGFuayBvbmUsIHdo
aWNoIGlzIG5lY2Vzc2FyeQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260530</attachid>
            <date>2015-09-03 15:31:13 -0700</date>
            <delta_ts>2015-09-03 16:12:03 -0700</delta_ts>
            <desc>Proposed Fix (for EWS)</desc>
            <filename>bug-148538-20150903153111.patch</filename>
            <type>text/plain</type>
            <size>81028</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZTg5NWY4YzIzODcxZWMzM2M1MDgxYWU3YTAwNTg1MzYyMjMwMjA1Li44NmFkZDdhNTU4YTU2Yzll
NTY3ZGJjN2M0ZTI2ZDNhNjcwYmY4NGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OCBAQAorMjAxNS0wOS0wMyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250cm9sbGVyIHNob3VsZCBzdXBwb3J0
IG11bHRpcGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGgg
UGVjb3Jhcm8uCisKKyAgICAgICAgSW5zdGVhZCBvZiBhIHNpbmdsZXRvbiwgaXQgc2hvdWxkIGJl
IHBvc3NpYmxlIHRvIGhhdmUgbXVsdGlwbGUgY2hhbm5lbHMgb3BlbgorICAgICAgICBhdCB0aGUg
c2FtZSB0aW1lIGFuZCB0byBpbmRpdmlkdWFsbHkgY2xvc2UgY2hhbm5lbHMgYXMgZnJvbnRlbmRz
IGNvbWUgYW5kIGdvLgorCisgICAgICAgIFRoZSBGcm9udGVuZFJvdXRlciBjbGFzcyBrZWVwcyBh
IGxpc3Qgb2Ygb3BlbiBGcm9udGVuZENoYW5uZWxzIGFuZCBzZW5kcyBtZXNzYWdlcworICAgICAg
ICB0byB0aGUgYXBwcm9wcmlhdGUgZnJvbnRlbmRzIGJhc2VkIG9uIHdoZXRoZXIgdGhlIG1lc3Nh
Z2UgaXMgYSByZXNwb25zZSBvciBldmVudC4KKyAgICAgICAgRWFjaCBJbnNwZWN0b3JDb250cm9s
bGVyIG93bnMgYSBzaW5nbGUgRnJvbnRlbmRSb3V0ZXIgYW5kIEJhY2tlbmREaXNwYXRjaGVyIGlu
c3RhbmNlLgorICAgICAgICBJbnNwZWN0b3IgYmFja2VuZCBjb2RlIHRoYXQgc2VuZHMgbWVzc2Fn
ZXMgdG8gdGhlIGZyb250ZW5kIHNob3VsZCBzd2l0Y2ggb3ZlciB0bworICAgICAgICB1c2luZyB0
aGUgcm91dGVyIHJhdGhlciB0aGFuIGRpcmVjdGx5IHVzaW5nIGEgRnJvbnRlbmRDaGFubmVsLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNwcDogTW92ZSBjb25zdHJ1Y3RvcnMvZGVzdHJ1Y3RvcnMgb3V0IG9m
IHRoZSBoZWFkZXIKKyAgICAgICAgdG8gYXZvaWQgaW5jbHVkaW5nIEluc3BlY3RvckZyb250ZW5k
Um91dGVyIGV2ZXJ5d2hlcmUuIFVzZSB0aGUgcm91dGVyIGluc3RlYWQgb2YgYQorICAgICAgICBz
cGVjaWZpYyBmcm9udGVuZCBjaGFubmVsLiBSZW1vdmUgZ3VhcmRzIHRoYXQgYXJlIG5vIGxvbmdl
ciBuZWNlc3Nhcnkgc2luY2UgdGhlIHJvdXRlcgorICAgICAgICBpcyBndWFyYW50ZWVkIHRvIG91
dGxpdmUgdGhlIGJhY2tlbmQgZGlzcGF0Y2hlci4KKworICAgICAgICAoSW5zcGVjdG9yOjpTdXBw
bGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcjo6U3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIp
OgorICAgICAgICAoSW5zcGVjdG9yOjpTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcjo6flN1
cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OkJhY2tlbmREaXNwYXRjaGVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyOjppc0FjdGl2ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
OjpyZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4pOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlcjo6c2VuZFJlc3BvbnNlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OnNlbmRQZW5kaW5nRXJyb3JzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDoKKyAgICAgICAgKEluc3BlY3Rvcjo6U3VwcGxlbWVu
dGFsQmFja2VuZERpc3BhdGNoZXI6OlN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6U3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXI6
On5TdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcik6IERlbGV0ZWQuCisgICAgICAgIChJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpjbGVhckZyb250ZW5kKTogRGVsZXRlZCwgbm8gbG9u
Z2VyIG5lY2Vzc2FyeS4KKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6Omlz
QWN0aXZlKTogTW92ZWQgdG8gaW1wbGVtZW50YXRpb24gZmlsZS4KKyAgICAgICAgKEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXI6OkJhY2tlbmREaXNwYXRjaGVyKTogTW92ZWQgdG8gaW1wbGVt
ZW50YXRpb24gZmlsZS4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI6OmNyZWF0
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpjb25uZWN0RnJvbnRlbmQp
OgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6ZGlzY29ubmVjdEZyb250ZW5k
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI6OmRpc2Nvbm5lY3RBbGxGcm9u
dGVuZHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6bGVha0NoYW5uZWwp
OgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6aGFzTG9jYWxGcm9udGVuZCk6
CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpoYXNSZW1vdGVGcm9udGVuZCk6
CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpzZW5kRXZlbnQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6c2VuZFJlc3BvbnNlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaDogQWRkZWQuCisgICAgICAgICogaW5z
cGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHA6IFJlbW92ZSBndWFy
ZHMgdGhhdCBhcmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KKyAgICAgICAgVGhlIGZyb250ZW5kIHJv
dXRlciBhbmQgYmFja2VuZCBkaXNwYXRjaGVyIG5vdyBoYXZlIHRoZSBzYW1lIGxpZmV0aW1lIGFz
IHRoZSBjb250cm9sbGVyLgorICAgICAgICBFeHBsaWNpdGx5IGNvbm5lY3QvZGlzY29ubmVjdCB0
aGUgZnJvbnRlbmQgY2hhbm5lbC4KKworICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcik6
CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
Z2xvYmFsT2JqZWN0RGVzdHJveWVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoSW5zcGVj
dG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVu
ZCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlzY29ubmVjdEFsbEZyb250ZW5kcyk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjph
cHBlbmRFeHRyYUFnZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyOjpwYXVzZSk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0pT
R2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9h
dWdtZW50YWJsZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKElu
c3BlY3Rvcjo6QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0ZWQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rp
b24ubW06CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uOjpjbG9zZSk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9jcHBfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHk6CisgICAgICAg
IChDcHBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdlbmVyYXRvci5nZW5lcmF0ZV9v
dXRwdXQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2Jq
Y19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5OgorICAgICAgICAoT2JqQ0Zy
b250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9ldmVudCk6
IFVzZSB0aGUgcm91dGVyLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNjb25u
ZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oOgorCiAy
MDE1LTA5LTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgR2V0
IHJpZCBvZiBSZXBhdGNoQnVmZmVyIGFuZCByZXBsYWNlIGl0IHdpdGggc3RhdGljIGZ1bmN0aW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDkyNjMzNWUxOTBkNzllZmUyYWIyNDk5OGZhNjc1Mzc1ZTE5MTlhNTEu
LjkzNzIwMjYzNzZlOGMyYmJmMWI1MzI2ODQxOWQ2YWUxOTkwM2U0NGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0OCBAQAorMjAxNS0wOS0wMyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250cm9sbGVyIHNob3VsZCBzdXBw
b3J0IG11bHRpcGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAgICBSZXZpZXdlZCBieSBKb3Nl
cGggUGVjb3Jhcm8uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2Ug
ZnJvbSB0aGlzIHBhdGNoLiBUZWFyZG93biBzY2VuYXJpb3MgYXJlCisgICAgICAgIGNvdmVyZWQg
YnkgZXhpc3RpbmcgcHJvdG9jb2wgYW5kIGluc3BlY3RvciB0ZXN0cyBydW5uaW5nIHVuZGVyIERS
VCBhbmQgV0tUUi4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZFJvdXRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaDog
U3RvcCB1c2luZyBmb3J3YXJkZWQgdHlwZXMuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyOjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6Omhhc0xvY2FsRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6aGFzUmVtb3RlRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0QWxsRnJvbnRlbmRzKTogQWRkZWQuIERp
c2Nvbm5lY3RzIGFsbAorICAgICAgICBmcm9udGVuZHMgYW5kIHNpZ25hbHMgRGlzY29ubmVjdFJl
YXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkLgorCisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRp
c3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaDogQWRkIGRlZmF1bHQgdmFsdWUgZm9yIGlzQXV0b21hdGljSW5zcGVjdGlv
bi4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOiBVc2UgYSByb3V0ZXIgd2l0aCBhIHNpbmds
ZXRvbiBjaGFubmVsCisgICAgICAgIHRoYXQgZm9yd2FyZHMgbWVzc2FnZXMgb3ZlciB0byB0aGUg
bWFpbiBwYWdlLgorCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
OjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZy
b250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBhZ2UvUGFnZURlYnVnZ2FibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3QpOgorICAgICAgICAqIHBhZ2UvUGFnZURlYnVnZ2Fi
bGUuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6IENsZWFyIHRoZSBmcm9udGVu
ZCBjbGllbnQgYmVmb3JlIGRpc2Nvbm5lY3RpbmcgZnJvbnRlbmQgY2hhbm5lbC4KKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjbG9zZUR1bW15SW5zcGVjdG9yRnJvbnRlbmQpOgorCiAy
MDE1LTA5LTAzICBBZGVuaWxzb24gQ2F2YWxjYW50aSAgPGNhdmFsY2FudGlpQGdtYWlsLmNvbT4K
IAogICAgICAgICBJbXByb3ZlIGFjY2VzcyBzcGVjaWZpZXIgdXNlIGluIFJlbmRlck9iamVjdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCmluZGV4IDA0Njk0YTAyOWQzNTcxM2Y5YWJkMDNjM2Y2N2IzOWFhOGEzNDNm
YzYuLjkxZGVlOTkyM2M1ZTY4MzJjM2FkMjNhNzRiYWYyYzNjNmI4MTI0ZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNS0wOS0wMyAgQnJpYW4gQnVyZyAgPGJidXJnQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250cm9sbGVyIHNo
b3VsZCBzdXBwb3J0IG11bHRpcGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAgICBSZXZpZXdl
ZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgUmVtb3ZlIHRoZSBub3RpZnlJbnNwZWN0
b3JDb250cm9sbGVyIGZsYWcgZnJvbSBjbG9zZVdpbmRvdy4gU2luY2UgSW5zcGVjdG9yQ2xpZW50
cworICAgICAgICBtdXN0IG5vdyBtYW51YWxseSBkaXNjb25uZWN0IHRoZWlyIEZyb250ZW5kQ2hh
bm5lbChzKSwgd2Ugc2hvdWxkIGFsd2F5cworICAgICAgICBwZXJmb3JtIHRoZSB0ZWFyZG93biB0
aGF0IHdhcyBndWFyZGVkIGJ5IHRoaXMgZmxhZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6YnJpbmdGcm9udGVu
ZFRvRnJvbnQpOiBBZGQgYSBtaXNzaW5nIGFzc2VydGlvbi4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpjbG9zZVdpbmRvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDo6ZGlzY29ubmVjdEZyb21CYWNrZW5kKToKKyAgICAgICAgKC1bV2ViSW5zcGVj
dG9yV2luZG93Q29udHJvbGxlciB3aW5kb3dTaG91bGRDbG9zZTpdKToKKyAgICAgICAgKC1bV2Vi
SW5zcGVjdG9yV2luZG93Q29udHJvbGxlciBkZXN0cm95SW5zcGVjdG9yVmlld10pOiBBbHdheXMg
Y2xlYXIgdGhlIGZyb250ZW5kIGNsaWVudC4KKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yV2luZG93
Q29udHJvbGxlciBkZXN0cm95SW5zcGVjdG9yVmlldzpdKTogUmVuYW1lZCB0byBhYm92ZS4KKwog
MjAxNS0wOC0yNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW0Nv
bnRlbnQgRmlsdGVyaW5nXSBEZXRlcm1pbmUgbmF2aWdhdGlvbiBhbmQgY29udGVudCBwb2xpY3kg
YmVmb3JlIGNvbnRpbnVpbmcgdG8gZmlsdGVyIGEgbG9hZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDQ5
YTEyNDg0MDFjNWE4NWQzMDc5NjYzNjFlZGE0NTFjOTQ5NGExOGQuLjM2NmQ2MWQ0MTM5ODZhNmJm
ZDhjOTkxMDJmNGY4MTEwNDcwMGM1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBA
QAorMjAxNS0wOS0wMyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250cm9sbGVyIHNob3VsZCBzdXBwb3J0IG11bHRpcGxl
IGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8u
CisKKyAgICAgICAgUmVtb3ZlIHRoZSBub3RpZnlJbnNwZWN0b3JDb250cm9sbGVyIGZsYWcgZnJv
bSBjbG9zZVdpbmRvdy4gU2luY2UgSW5zcGVjdG9yQ2xpZW50cworICAgICAgICBtdXN0IG5vdyBt
YW51YWxseSBkaXNjb25uZWN0IHRoZWlyIEZyb250ZW5kQ2hhbm5lbChzKSwgd2Ugc2hvdWxkIGFs
d2F5cworICAgICAgICBwZXJmb3JtIHRoZSB0ZWFyZG93biB0aGF0IHdhcyBndWFyZGVkIGJ5IHRo
aXMgZmxhZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6On5XZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2xvc2VX
aW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ryb3lJbnNw
ZWN0b3JWaWV3KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
aDoKKwogMjAxNS0wOS0wMiAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgU2Nyb2xsYmFyVGhlbWVzIHNob3VsZCBiZSByZXR1cm5lZCBieSByZWZlcmVuY2UuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggZDU0ZWRhYTQwNWEyMDk1YzMzMzNlYWYzZGU0ODFjYmQ5NjcwYjZlOC4uMmY0
YTU0YzgzZDJmNjU1ODE1MzBlZDg3YzY5NzQ2Y2I4NTM4ZWViMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI4IEBACisyMDE1LTA5LTAzICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEluc3BlY3RvckNvbnRyb2xsZXIgc2hvdWxkIHN1cHBvcnQg
bXVsdGlwbGUgZnJvbnRlbmQgY2hhbm5lbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0ODUzOAorCisgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQ
ZWNvcmFyby4KKworICAgICAgICBFeHBsaWNpdGx5IGRpc2Nvbm5lY3QgdGhlIGZyb250ZW5kIGNo
YW5uZWwgd2hlbiBjbG9zaW5nIHRoZSBmcm9udGVuZC4KKworICAgICAgICBSZW5hbWUgY3JlYXRl
SW5zcGVjdG9yUGFnZS9jbG9zZUZyb250ZW5kIHRvIHRoZSBzeW1tZXRyaWMgYW5kIHVuYW1iaWd1
b3VzCisgICAgICAgIHtvcGVuLGNsb3NlfUZyb250ZW5kQ29ubmVjdGlvbiBpbiB0aGUgV2ViSW5z
cGVjdG9yIGNsYXNzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6
Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckNs
aWVudDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDogU3RvcCB1c2luZyBhIGZvcndhcmRlZCB0
eXBlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6Om9wZW5Gcm9udGVuZENvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNsb3NlRnJvbnRlbmRDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNyZWF0ZUluc3BlY3RvclBhZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNsb3NlRnJvbnRlbmQpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaDoKKwog
MjAxNS0wOS0wMyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTWFjXSBBZGQgc3VwcG9ydCBmb3IgdGVzdGluZyBzd2lwZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCAyZDMwYmI5MTc1NTcyNDQzNDYzNGRhMTdmMzJkOTZhODZl
MGRjZTc0Li4yMzkxOWYwMTMxYzc1MmNmODNjZWIxODRjODhiODY3ZGU3YzRhZTY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zMjMsNiArMzIzLDcgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1NPVVJDRVMKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNw
cAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKICAgICBpbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKKyAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRSb3V0ZXIuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNw
cAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCiAgICAgaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qCmluZGV4IGFmZjEyZWIzYTQ5ZTI0ZjBjOWYwMWFkMmMzYjExZDgwNzg1ZmY0YmMuLmI4
MTU2MGMyMTJhNGRkMmQ3ZmUwNWMzYzI5YzRkOWIzZmEzMDFmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNTk1LDYgKzU5NSw3IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFnZW50UmVnaXN0cnku
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGluc3BlY3RvclxKU0luamVjdGVkU2NyaXB0SG9zdC5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGUuY3BwIiAvPgpAQCAtMTM4NCw2ICsxMzg1LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckVudmlyb25tZW50LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVj
dG9yRnJvbnRlbmRSb3V0ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxJbnNwZWN0b3JWYWx1ZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGlu
c3BlY3RvclxKU0luamVjdGVkU2NyaXB0SG9zdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBjNWI2YTRiMjZkYzRhNDhjNGRlNTYzMWNlYTYy
YjJiYTIyNDg3ZmUuLmYzYmE4NmRmNjBlZjA4MzNhMWMzM2M5YjRlZWM5OWZmYzA4Mjc5N2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTk1LDYgKzExOTUsOCBAQAogCQk5OUU0
NUEyNjE4QTFCMjU5MDAyNkQ4OEYgLyogRW5jb2RlZFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU0NUEyMTE4QTFCMjU5MDAyNkQ4OEYgLyog
RW5jb2RlZFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTlFNDVBMjcxOEExQjI1OTAwMjZEODhGIC8qIElucHV0Q3Vyc29yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU0NUEyMjE4QTFCMjU5
MDAyNkQ4OEYgLyogSW5wdXRDdXJzb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5OUU0NUEyODE4QTFCMjU5MDAyNkQ4OEYgLyogTm9uZGV0ZXJt
aW5pc3RpY0lucHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5OUU0NUEyMzE4QTFCMjU5MDAyNkQ4OEYgLyogTm9uZGV0ZXJtaW5pc3RpY0lucHV0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlGMUE2
RkUxQjhFNkQ5NDAwNDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RjFBNkZDMUI4RTZEOTQw
MDQ2M0IyNiAvKiBJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHAgKi87IH07CisJCTk5RjFBNzAx
MUI5OEZCRUMwMDQ2M0IyNiAvKiBJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlGMUE3MDAxQjk4RkJFQzAwNDYz
QjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8qIElu
aXRpYWxpemVUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTE3ODYzNkMwRDlCRUVDMzAwRDc0RTc1IC8qIEluaXRpYWxpemVUaHJlYWRp
bmcuY3BwICovOyB9OwogCQk5RTcyOTQwODE5MEYwMjFFMDAxQTkxQjUgLyogSW5pdGlhbGl6ZUxM
Vk1QT1NJWC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkNFRkFDNTE4MDVFNzU1MDA0NzJDRTQgLyogSW5pdGlhbGl6ZUxMVk1QT1NJWC5jcHAgKi87
IH07CiAJCTlFNzI5NDBCMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RTcyOTQwQTE5MEYwNTE0MDAx
QTkxQjUgLyogQnVuZGxlUGF0aC5oICovOyB9OwpAQCAtMzA2MSw2ICszMDYzLDggQEAKIAkJOTlF
NDVBMjExOEExQjI1OTAwMjZEODhGIC8qIEVuY29kZWRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBFbmNvZGVkVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTlFNDVBMjIxOEExQjI1OTAwMjZEODhGIC8qIElucHV0Q3Vyc29yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElucHV0Q3Vyc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk5RTQ1QTIzMThBMUIyNTkwMDI2RDg4RiAvKiBOb25kZXRlcm1pbmlzdGlj
SW5wdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9uZGV0ZXJtaW5pc3Rp
Y0lucHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5RjFBNkZDMUI4RTZEOTQw
MDQ2M0IyNiAvKiBJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5RjFBNzAwMUI5OEZCRUMwMDQ2M0IyNiAvKiBJbnNwZWN0
b3JGcm9udGVuZFJvdXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JGcm9udGVuZFJvdXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjQ5
NTRFODFBNjY0MERCMDAyODE1QTYgLyogUGFyc2VyRnVuY3Rpb25JbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhcnNlckZ1bmN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
RTcyOTQwOTE5MEYwMzA2MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1bmRsZVBhdGgubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlFNzI5NDBBMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1bmRsZVBhdGguaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTU3MDcsNiArNTcxMSw3IEBACiAJCUE1QkExNURGMTgyMzQwOTIw
MEE4MkU2OSAvKiBpbnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTk5RjFBNzAwMUI5OEZCRUMwMDQ2M0IyNiAvKiBJbnNwZWN0b3JGcm9udGVu
ZFJvdXRlci5oICovLAogCQkJCUE1MTNFNUNDMTg1RkI5OTIwMDdFOTVBRCAvKiBhZ2VudHMgKi8s
CiAJCQkJQTVFQTcwRTMxOUY1QjBFMjAwOThGNUVDIC8qIGF1Z21lbnRhYmxlICovLAogCQkJCUE1
MzI0MzhEMTg1Njk2Q0EwMDJFRDY5MiAvKiBwcm90b2NvbCAqLywKQEAgLTU3MzgsNiArNTc0Myw3
IEBACiAJCQkJQTU5M0NGN0IxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmggKi8sCiAJCQkJQTVEMEExQkExODYyMzAxQjAwQzdCNDk2IC8qIEluc3BlY3RvckVu
dmlyb25tZW50LmggKi8sCiAJCQkJQTU5NDU1OTQxODI0NzlFQjAwQ0MzODQzIC8qIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbC5oICovLAorCQkJCTk5RjFBNkZDMUI4RTZEOTQwMDQ2M0IyNiAvKiBJ
bnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHAgKi8sCiAJCQkJQTU1RDkzQUIxODUxNEY3OTAwNDAw
REVEIC8qIEluc3BlY3RvclByb3RvY29sVHlwZXMuaCAqLywKIAkJCQlBNTkzQ0Y4MDE4NDAzNzcx
MDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLywKIAkJCQlBNTkzQ0Y4MTE4NDAzNzcx
MDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmggKi8sCkBAIC01OTAxLDYgKzU5MDcsNyBAQAog
CQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY4OThGMzIxQjI3Njg5RjAwODNBMzNDIC8qIERGR0ludGVnZXJSYW5nZU9w
dGltaXphdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAy
ODY1RTcgLyogQVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OUYxQTcwMTFCOThG
QkVDMDA0NjNCMjYgLyogSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTc5NjQ2NTZBMUI5NTJGRjAwMDMwNTlFRSAvKiBHZXRQdXRJbmZvLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3OTdFMDdBQTFCOEZDRkI5MDA4NDAwQkEgLyogSlNHbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDI4MUFBOTA5NTYwMEQzM0IzMyAvKiBT
Y29wZWRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLApAQCAtNzkzMyw2ICs3OTQwLDcgQEAKIAkJ
CQlDMjI1NDk0MzE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTMzMDQwMkMwRTZBNzY0MDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFM0VGODg3NDFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5OUYxQTZGRTFCOEU2RDk0MDA0NjNC
MjYgLyogSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4
RjJCOUUxNzMwNkM4RDAwN0RCREE1IC8qIFNvdXJjZUNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY0OTNBRkExNkQwQ0FEMzAwODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUzM0U4RDFDMUI5MDEzQzMwMDM0NkI1MiAvKiBKU05hdGl2ZVN0ZEZ1bmN0
aW9uLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAppbmRleCA0
ZDQ1ZGE5OWUxYmY2NjQ3NTM3ZDg0YzE0MTM1MjI5MzliMDk4MDg5Li4wOTM2YjQxMTFjMjQxMzM0
ZDc0OWMyMjQxZDNiNmMxNDUxODY5MDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcApA
QCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgi
CiAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JGcm9udGVuZFJvdXRlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CkBAIC0zNSw2ICszNiwxNSBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAorU3VwcGxl
bWVudGFsQmFja2VuZERpc3BhdGNoZXI6OlN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKEJh
Y2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlcikKKyAgICA6IG1fYmFja2VuZERpc3Bh
dGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCit7Cit9CisKK1N1cHBsZW1lbnRhbEJhY2tlbmREaXNw
YXRjaGVyOjp+U3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoKQoreworfQorCiBCYWNrZW5k
RGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFja0Jhc2UoUmVmPEJhY2tlbmREaXNwYXRj
aGVyPiYmIGJhY2tlbmREaXNwYXRjaGVyLCBsb25nIHJlcXVlc3RJZCkKICAgICA6IG1fYmFja2Vu
ZERpc3BhdGNoZXIoV1RGOjptb3ZlKGJhY2tlbmREaXNwYXRjaGVyKSkKICAgICAsIG1fcmVxdWVz
dElkKHJlcXVlc3RJZCkKQEAgLTY5LDE1ICs3OSwyOCBAQCB2b2lkIEJhY2tlbmREaXNwYXRjaGVy
OjpDYWxsYmFja0Jhc2U6OnNlbmRTdWNjZXNzKFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgcGFy
dAogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShtX3JlcXVlc3RJZCwgV1RG
Ojptb3ZlKHBhcnRpYWxNZXNzYWdlKSk7CiB9CiAKLVJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4gQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkK
K0JhY2tlbmREaXNwYXRjaGVyOjpCYWNrZW5kRGlzcGF0Y2hlcihSZWY8RnJvbnRlbmRSb3V0ZXI+
JiYgcm91dGVyKQorICAgIDogbV9mcm9udGVuZFJvdXRlcihXVEY6Om1vdmUocm91dGVyKSkKK3sK
K30KKworUmVmPEJhY2tlbmREaXNwYXRjaGVyPiBCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKFJl
ZjxGcm9udGVuZFJvdXRlcj4mJiByb3V0ZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QmFja2VuZERpc3BhdGNoZXIoZnJvbnRlbmRDaGFubmVsKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQmFja2VuZERpc3BhdGNoZXIoV1RGOjptb3ZlKHJvdXRlcikpKTsKK30KKworYm9vbCBC
YWNrZW5kRGlzcGF0Y2hlcjo6aXNBY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiBtX2Zyb250
ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMoKTsKIH0KIAogdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6
cmVnaXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWluLCBTdXBwbGVt
ZW50YWxCYWNrZW5kRGlzcGF0Y2hlciogZGlzcGF0Y2hlcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9
IG1fZGlzcGF0Y2hlcnMuYWRkKGRvbWFpbiwgZGlzcGF0Y2hlcik7Ci0gICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBBU1NFUlRfQVJHKGRpc3BhdGNoZXIs
IGRpc3BhdGNoZXIpOworCisgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDg0
OTI+IEFnZW50cyBzaG91bGQgb25seSByZWdpc3RlciB3aXRoIHRoZSBiYWNrZW5kIG9uY2UsCisg
ICAgLy8gYW5kIHdlIHNob3VsZCByZS1hZGQgdGhlIGFzc2VydGlvbiB0aGF0IG9ubHkgb25lIGRp
c3BhdGNoZXIgaXMgcmVnaXN0ZXJlZCBwZXIgZG9tYWluLgorICAgIG1fZGlzcGF0Y2hlcnMuc2V0
KGRvbWFpbiwgZGlzcGF0Y2hlcik7CiB9CiAKIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OmRpc3Bh
dGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKQEAgLTE2NSw5ICsxODgsNiBAQCB2b2lkIEJhY2tl
bmREaXNwYXRjaGVyOjpkaXNwYXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAKIHZvaWQgQmFj
a2VuZERpc3BhdGNoZXI6OnNlbmRSZXNwb25zZShsb25nIHJlcXVlc3RJZCwgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4mJiByZXN1bHQpCiB7Ci0gICAgaWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkKLSAg
ICAgICAgcmV0dXJuOwotCiAgICAgQVNTRVJUKCFtX3Byb3RvY29sRXJyb3JzLnNpemUoKSk7CiAK
ICAgICAvLyBUaGUgSlNPTi1SUEMgMi4wIHNwZWNpZmljYXRpb24gcmVxdWlyZXMgdGhhdCB0aGUg
ImVycm9yIiBtZW1iZXIgaGF2ZSB0aGUgdmFsdWUgJ251bGwnCkBAIC0xNzUsNyArMTk1LDcgQEAg
dm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFJlc3BvbnNlKGxvbmcgcmVxdWVzdElkLCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiYmIHIKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXNwb25z
ZU1lc3NhZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHJlc3BvbnNlTWVzc2Fn
ZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicmVzdWx0IiksIHJlc3VsdCk7CiAgICAgcmVzcG9u
c2VNZXNzYWdlLT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiaWQiKSwgcmVxdWVzdElkKTsKLSAg
ICBtX2Zyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKHJlc3BvbnNlTWVzc2Fn
ZS0+dG9KU09OU3RyaW5nKCkpOworICAgIG1fZnJvbnRlbmRSb3V0ZXItPnNlbmRSZXNwb25zZShy
ZXNwb25zZU1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKIH0KIAogdm9pZCBCYWNrZW5kRGlzcGF0
Y2hlcjo6c2VuZFBlbmRpbmdFcnJvcnMoKQpAQCAtMTkwLDkgKzIxMCw2IEBAIHZvaWQgQmFja2Vu
ZERpc3BhdGNoZXI6OnNlbmRQZW5kaW5nRXJyb3JzKCkKICAgICAgICAgLTMyMDAwLCAvLyBTZXJ2
ZXJFcnJvcgogICAgIH07CiAKLSAgICBpZiAoIW1fZnJvbnRlbmRDaGFubmVsKQotICAgICAgICBy
ZXR1cm47Ci0gICAgCiAgICAgLy8gVG8gY29uc3RydWN0IHRoZSBlcnJvciBvYmplY3QsIG9ubHkg
dXNlIHRoZSBsYXN0IGVycm9yJ3MgY29kZSBhbmQgbWVzc2FnZS4KICAgICAvLyBQZXIgSlNPTi1S
UEMgMi4wLCBTZWN0aW9uIDUuMSwgdGhlICdkYXRhJyBtZW1iZXIgbWF5IGNvbnRhaW4gbmVzdGVk
IGVycm9ycywKICAgICAvLyBidXQgb25seSBvbmUgdG9wLWxldmVsIEVycm9yIG9iamVjdCBzaG91
bGQgYmUgc2VudCBwZXIgcmVxdWVzdC4KQEAgLTIyNyw3ICsyNDQsNyBAQCB2b2lkIEJhY2tlbmRE
aXNwYXRjaGVyOjpzZW5kUGVuZGluZ0Vycm9ycygpCiAgICAgICAgIG1lc3NhZ2UtPnNldFZhbHVl
KEFTQ0lJTGl0ZXJhbCgiaWQiKSwgSW5zcGVjdG9yVmFsdWU6Om51bGwoKSk7CiAgICAgfQogCi0g
ICAgbV9mcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlLT50b0pT
T05TdHJpbmcoKSk7CisgICAgbV9mcm9udGVuZFJvdXRlci0+c2VuZFJlc3BvbnNlKG1lc3NhZ2Ut
PnRvSlNPTlN0cmluZygpKTsKIAogICAgIG1fcHJvdG9jb2xFcnJvcnMuY2xlYXIoKTsKICAgICBt
X2N1cnJlbnRSZXF1ZXN0SWQgPSBOdWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCmluZGV4
IGYyMjQ4MmQ5YjBmOTUxMjg5NzM5NTFjZjgzMjMyN2YwYWIzODE1MDMuLmM2MWNmMWQwY2QzZjg1
NDdlNGQ1NjA4MjgwZDAwYWM4NzdlOTVjMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKQEAg
LTM1LDE1ICszNSwxNCBAQAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIEJhY2tlbmRE
aXNwYXRjaGVyOwotY2xhc3MgRnJvbnRlbmRDaGFubmVsOworY2xhc3MgRnJvbnRlbmRSb3V0ZXI7
CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiBjbGFzcyBTdXBwbGVtZW50YWxCYWNr
ZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPFN1cHBsZW1lbnRhbEJhY2tlbmREaXNw
YXRjaGVyPiB7CiBwdWJsaWM6Ci0gICAgU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoQmFj
a2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyKQotICAgICAgICA6IG1fYmFja2VuZERp
c3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpIHsgfQotICAgIHZpcnR1YWwgflN1cHBsZW1lbnRh
bEJhY2tlbmREaXNwYXRjaGVyKCkgeyB9CisgICAgU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNo
ZXIoQmFja2VuZERpc3BhdGNoZXImKTsKKyAgICB2aXJ0dWFsIH5TdXBwbGVtZW50YWxCYWNrZW5k
RGlzcGF0Y2hlcigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgPSAw
OwogcHJvdGVjdGVkOgogICAgIFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0
Y2hlcjsKQEAgLTUxLDcgKzUwLDcgQEAgcHJvdGVjdGVkOgogCiBjbGFzcyBCYWNrZW5kRGlzcGF0
Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPEJhY2tlbmREaXNwYXRjaGVyPiB7CiBwdWJsaWM6Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRl
KEZyb250ZW5kQ2hhbm5lbCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QmFj
a2VuZERpc3BhdGNoZXI+IGNyZWF0ZShSZWY8RnJvbnRlbmRSb3V0ZXI+JiYpOwogCiAgICAgY2xh
c3MgSlNfRVhQT1JUX1BSSVZBVEUgQ2FsbGJhY2tCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8Q2Fs
bGJhY2tCYXNlPiB7CiAgICAgcHVibGljOgpAQCAtNjksOCArNjgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGJvb2wgbV9hbHJlYWR5U2VudCB7IGZhbHNlIH07CiAgICAgfTsKIAotICAgIHZvaWQgY2xl
YXJGcm9udGVuZCgpIHsgbV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOyB9Ci0gICAgYm9vbCBp
c0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9mcm9udGVuZENoYW5uZWw7IH0KKyAgICBib29s
IGlzQWN0aXZlKCkgY29uc3Q7CiAKICAgICBib29sIGhhc1Byb3RvY29sRXJyb3JzKCkgY29uc3Qg
eyByZXR1cm4gbV9wcm90b2NvbEVycm9ycy5zaXplKCkgPiAwOyB9CiAKQEAgLTEwNCwxMiArMTAy
LDkgQEAgcHVibGljOgogICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gZ2V0QXJyYXkoSW5zcGVj
dG9yT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kKTsKIAogcHJp
dmF0ZToKLSAgICBCYWNrZW5kRGlzcGF0Y2hlcihGcm9udGVuZENoYW5uZWwqIGNoYW5uZWwpCi0g
ICAgICAgIDogbV9mcm9udGVuZENoYW5uZWwoY2hhbm5lbCkKLSAgICB7Ci0gICAgfQorICAgIEJh
Y2tlbmREaXNwYXRjaGVyKFJlZjxGcm9udGVuZFJvdXRlcj4mJik7CiAKLSAgICBGcm9udGVuZENo
YW5uZWwqIG1fZnJvbnRlbmRDaGFubmVsOworICAgIFJlZjxGcm9udGVuZFJvdXRlcj4gbV9mcm9u
dGVuZFJvdXRlcjsKICAgICBIYXNoTWFwPFN0cmluZywgU3VwcGxlbWVudGFsQmFja2VuZERpc3Bh
dGNoZXIqPiBtX2Rpc3BhdGNoZXJzOwogCiAgICAgLy8gUHJvdG9jb2wgZXJyb3JzIHJlcG9ydGVk
IGZvciB0aGUgdG9wLWxldmVsIHJlcXVlc3QgYmVpbmcgcHJvY2Vzc2VkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91
dGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yODdhNjc4YTY1ZWZiZWI2MGY1ZmRkOGIzYzEyMjk1ZmRkNmVk
MzEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHAKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIu
aCIKKworI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitSZWY8RnJvbnRlbmRS
b3V0ZXI+IEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEZyb250ZW5kUm91dGVyKTsKK30KKwordm9pZCBGcm9udGVuZFJvdXRlcjo6Y29ubmVjdEZy
b250ZW5kKEZyb250ZW5kQ2hhbm5lbCogY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlRfQVJHKGNv
bm5lY3Rpb24sIGNvbm5lY3Rpb24pOworCisgICAgaWYgKG1fY29ubmVjdGlvbnMuY29udGFpbnMo
Y29ubmVjdGlvbikpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBtX2Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uKTsKK30K
Kwordm9pZCBGcm9udGVuZFJvdXRlcjo6ZGlzY29ubmVjdEZyb250ZW5kKEZyb250ZW5kQ2hhbm5l
bCogY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlRfQVJHKGNvbm5lY3Rpb24sIGNvbm5lY3Rpb24p
OworCisgICAgaWYgKCFtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24pKSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9jb25uZWN0aW9ucy5yZW1vdmVGaXJzdChjb25uZWN0aW9uKTsKK30KKwordm9pZCBGcm9udGVu
ZFJvdXRlcjo6ZGlzY29ubmVjdEFsbEZyb250ZW5kcygpCit7CisgICAgbV9jb25uZWN0aW9ucy5j
bGVhcigpOworfQorCisvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0ODQ5Mj4gcmVt
b3ZlIHRoaXMgbWV0aG9kIG9uY2UgYWdlbnRzIG1vdmUgdG8gdXNpbmcgRnJvbnRlbmRSb3V0ZXIg
ZGlyZWN0bHkuCitGcm9udGVuZENoYW5uZWwqIEZyb250ZW5kUm91dGVyOjpsZWFrQ2hhbm5lbCgp
IGNvbnN0Cit7CisgICAgaWYgKG1fY29ubmVjdGlvbnMuc2l6ZSgpKQorICAgICAgICByZXR1cm4g
bV9jb25uZWN0aW9ucy5hdCgwKTsKKworICAgIHJldHVybiBudWxscHRyOworfQorCitib29sIEZy
b250ZW5kUm91dGVyOjpoYXNMb2NhbEZyb250ZW5kKCkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8q
IGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zKSB7CisgICAgICAgIGlmIChjb25uZWN0aW9uLT5j
b25uZWN0aW9uVHlwZSgpID09IEZyb250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGU6OkxvY2Fs
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIEZyb250ZW5kUm91dGVyOjpoYXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0Cit7Cisg
ICAgZm9yIChhdXRvKiBjb25uZWN0aW9uIDogbV9jb25uZWN0aW9ucykgeworICAgICAgICBpZiAo
Y29ubmVjdGlvbi0+Y29ubmVjdGlvblR5cGUoKSA9PSBGcm9udGVuZENoYW5uZWw6OkNvbm5lY3Rp
b25UeXBlOjpSZW1vdGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRnJvbnRlbmRSb3V0ZXI6OnNlbmRFdmVudChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvKiBjb25uZWN0aW9uIDogbV9j
b25uZWN0aW9ucykKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1l
c3NhZ2UpOworfQorCit2b2lkIEZyb250ZW5kUm91dGVyOjpzZW5kUmVzcG9uc2UoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBzZW5kIHJlc3BvbnNlcyB0byB0
aGUgYXBwcm9wcmlhdGUgZnJvbnRlbmQuCisgICAgZm9yIChhdXRvKiBjb25uZWN0aW9uIDogbV9j
b25uZWN0aW9ucykKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1l
c3NhZ2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YTY0MTFiZWM0MjY1NzcwMDVkMjg5YmQ0MzNkYjBhMDM4MjMzOWJhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZFJvdXRlci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElu
c3BlY3RvckZyb250ZW5kUm91dGVyX2gKKyNkZWZpbmUgSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXJf
aAorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgRnJvbnRlbmRDaGFubmVsOwor
CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBGcm9udGVuZFJvdXRlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEZyb250ZW5kUm91dGVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxGcm9udGVuZFJv
dXRlcj4gY3JlYXRlKCk7CisKKyAgICBib29sIGhhc0Zyb250ZW5kcygpIGNvbnN0IHsgcmV0dXJu
ICFtX2Nvbm5lY3Rpb25zLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaGFzTG9jYWxGcm9udGVuZCgp
IGNvbnN0OworICAgIGJvb2wgaGFzUmVtb3RlRnJvbnRlbmQoKSBjb25zdDsKKworICAgIHZvaWQg
Y29ubmVjdEZyb250ZW5kKEZyb250ZW5kQ2hhbm5lbCopOworICAgIHZvaWQgZGlzY29ubmVjdEZy
b250ZW5kKEZyb250ZW5kQ2hhbm5lbCopOworICAgIHZvaWQgZGlzY29ubmVjdEFsbEZyb250ZW5k
cygpOworCisgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDg0OTI+IHJlbW92
ZSB0aGlzIG1ldGhvZCBvbmNlIGFnZW50cyBtb3ZlIHRvIHVzaW5nIEZyb250ZW5kUm91dGVyIGRp
cmVjdGx5LgorICAgIEZyb250ZW5kQ2hhbm5lbCogbGVha0NoYW5uZWwoKSBjb25zdDsKKworICAg
IHZvaWQgc2VuZEV2ZW50KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgY29uc3Q7CisgICAgdm9pZCBz
ZW5kUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBjb25zdDsKKworcHJpdmF0ZToKKyAg
ICBWZWN0b3I8RnJvbnRlbmRDaGFubmVsKiwgMj4gbV9jb25uZWN0aW9uczsKK307CisKK30gLy8g
bmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yRnJvbnRl
bmRSb3V0ZXJfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRl
eCAxNDNkN2YxMzQ3ZWFiMmM1ZjFmYzFjMzc5OGNiODVmMzI0NzUyOTFlLi4zMzUwZmMwZDE4OTUx
ZjA4MmZhNzk3MTEyMDdhNWIyODA3ZWY0Y2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdl
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5k
Um91dGVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdENvbnNvbGVBZ2VudC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Q29uc29sZUNs
aWVudC5oIgpAQCAtNjMsNyArNjQsOCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIEpTR2xvYmFs
T2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyKEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBtX2dsb2JhbE9iamVjdChn
bG9iYWxPYmplY3QpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5p
cXVlPEluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIEluamVjdGVkU2NyaXB0SG9zdDo6Y3Jl
YXRlKCkpKQotICAgICwgbV9mcm9udGVuZENoYW5uZWwobnVsbHB0cikKKyAgICAsIG1fZnJvbnRl
bmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0
Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigp
KSkKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAg
LCBtX2luY2x1ZGVOYXRpdmVDYWxsU3RhY2tXaXRoRXhjZXB0aW9ucyh0cnVlKQogICAgICwgbV9p
c0F1dG9tYXRpY0luc3BlY3Rpb24oZmFsc2UpCkBAIC05OCwyMiArMTAwLDI0IEBAIEpTR2xvYmFs
T2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6fkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlcigpCiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpnbG9iYWxP
YmplY3REZXN0cm95ZWQoKQogewotICAgIGRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVh
c29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpOworICAgIGRpc2Nvbm5lY3RBbGxGcm9udGVu
ZHMoKTsKIAogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5kaXNjb25uZWN0KCk7CiB9CiAK
IHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQo
RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0
aW9uKQogewotICAgIEFTU0VSVCghbV9mcm9udGVuZENoYW5uZWwpOwotICAgIEFTU0VSVCghbV9i
YWNrZW5kRGlzcGF0Y2hlcik7CisgICAgQVNTRVJUX0FSRyhmcm9udGVuZENoYW5uZWwsIGZyb250
ZW5kQ2hhbm5lbCk7CiAKICAgICBtX2lzQXV0b21hdGljSW5zcGVjdGlvbiA9IGlzQXV0b21hdGlj
SW5zcGVjdGlvbjsKIAotICAgIG1fZnJvbnRlbmRDaGFubmVsID0gZnJvbnRlbmRDaGFubmVsOwot
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGZyb250
ZW5kQ2hhbm5lbCk7CisgICAgYm9vbCBjb25uZWN0ZWRGaXJzdEZyb250ZW5kID0gIW1fZnJvbnRl
bmRSb3V0ZXItPmhhc0Zyb250ZW5kcygpOworICAgIG1fZnJvbnRlbmRSb3V0ZXItPmNvbm5lY3RG
cm9udGVuZChmcm9udGVuZENoYW5uZWwpOwogCi0gICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7
CisgICAgaWYgKCFjb25uZWN0ZWRGaXJzdEZyb250ZW5kKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoZnJvbnRlbmRDaGFubmVsLCAm
bV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSUykKICAgICBtX2luc3BlY3RvckFnZW50LT5hY3RpdmF0ZUV4dHJhRG9t
YWlucyhtX2FnZW50cy5leHRyYURvbWFpbnMoKSk7CkBAIC0xMjMsMTYgKzEyNywzMSBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbgogI2VuZGlmCiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoRGlzY29ubmVjdFJlYXNvbiByZWFz
b24pCit2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZy
b250ZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQogewotICAgIGlmICghbV9m
cm9udGVuZENoYW5uZWwpCisgICAgQVNTRVJUX0FSRyhmcm9udGVuZENoYW5uZWwsIGZyb250ZW5k
Q2hhbm5lbCk7CisKKyAgICBtX2FnZW50cy53aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChE
aXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOworCisgICAgbV9mcm9udGVuZFJv
dXRlci0+ZGlzY29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCk7CisKKyAgICBtX2lzQXV0
b21hdGljSW5zcGVjdGlvbiA9IGZhbHNlOworCisgICAgYm9vbCBkaXNjb25uZWN0ZWRMYXN0RnJv
bnRlbmQgPSAhbV9mcm9udGVuZFJvdXRlci0+aGFzRnJvbnRlbmRzKCk7CisgICAgaWYgKCFkaXNj
b25uZWN0ZWRMYXN0RnJvbnRlbmQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fYWdlbnRzLndp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKHJlYXNvbik7CisjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisgICAgaWYgKG1fYXVnbWVudGluZ0NsaWVudCkKKyAg
ICAgICAgbV9hdWdtZW50aW5nQ2xpZW50LT5pbnNwZWN0b3JEaXNjb25uZWN0ZWQoKTsKKyNlbmRp
ZgorfQorCit2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVj
dEFsbEZyb250ZW5kcygpCit7CisgICAgbV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkKTsKIAotICAg
IG1fYmFja2VuZERpc3BhdGNoZXItPmNsZWFyRnJvbnRlbmQoKTsKLSAgICBtX2JhY2tlbmREaXNw
YXRjaGVyID0gbnVsbHB0cjsKLSAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7CisgICAg
bV9mcm9udGVuZFJvdXRlci0+ZGlzY29ubmVjdEFsbEZyb250ZW5kcygpOwogCiAgICAgbV9pc0F1
dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKIApAQCAtMTQ0LDE1ICsxNjMsMTEgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChEaXNj
b25uZWN0UmVhc29uIHJlYXMKIAogdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7
Ci0gICAgaWYgKG1fYmFja2VuZERpc3BhdGNoZXIpCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNo
ZXItPmRpc3BhdGNoKG1lc3NhZ2UpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXItPmRpc3BhdGNo
KG1lc3NhZ2UpOwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
cGF1c2UoKQogewotICAgIGlmICghbV9mcm9udGVuZENoYW5uZWwpCi0gICAgICAgIHJldHVybjsK
LQogICAgIEVycm9yU3RyaW5nIGR1bW15RXJyb3I7CiAgICAgbV9kZWJ1Z2dlckFnZW50LT5lbmFi
bGUoZHVtbXlFcnJvcik7CiAgICAgbV9kZWJ1Z2dlckFnZW50LT5wYXVzZShkdW1teUVycm9yKTsK
QEAgLTI2MiwxMyArMjc3LDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyOjphcHBlbmRFeHRyYUFnZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0CiB7CiAgICAgU3Ry
aW5nIGRvbWFpbk5hbWUgPSBhZ2VudC0+ZG9tYWluTmFtZSgpOwogCi0gICAgaWYgKG1fZnJvbnRl
bmRDaGFubmVsKQotICAgICAgICBhZ2VudC0+ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKG1f
ZnJvbnRlbmRDaGFubmVsLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKKyAgICBhZ2VudC0+
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKG1fZnJvbnRlbmRSb3V0ZXItPmxlYWtDaGFubmVs
KCksICZtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIAogICAgIG1fYWdlbnRzLmFwcGVuZEV4
dHJhQWdlbnQoV1RGOjptb3ZlKGFnZW50KSk7CiAKLSAgICBpZiAobV9mcm9udGVuZENoYW5uZWwp
Ci0gICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPmFjdGl2YXRlRXh0cmFEb21haW4oZG9tYWluTmFt
ZSk7CisgICAgbV9pbnNwZWN0b3JBZ2VudC0+YWN0aXZhdGVFeHRyYURvbWFpbihkb21haW5OYW1l
KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRl
eCA2ZTNmOTRlYWMyMzRlYzg5ODM2OThjZWFjNzNmMTZlMDM2MDRjYmNmLi5hYWUzMmUzYzg5OTNi
ZjcwN2U2NmI3ZjUyMDU4MjMyYTczYTczOTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmgKQEAgLTUzLDYgKzUzLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNs
YXNzIEJhY2tlbmREaXNwYXRjaGVyOwogY2xhc3MgRnJvbnRlbmRDaGFubmVsOworY2xhc3MgRnJv
bnRlbmRSb3V0ZXI7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0
b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudDsKQEAgLTczLDcgKzc0LDkgQEAg
cHVibGljOgogICAgIH5KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoKTsKIAogICAg
IHZvaWQgY29ubmVjdEZyb250ZW5kKEZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJ
bnNwZWN0aW9uKTsKLSAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29u
KTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqKTsKKyAgICB2
b2lkIGRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKTsKKwogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdl
RnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBnbG9iYWxPYmplY3REZXN0
cm95ZWQoKTsKQEAgLTk5LDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEF1Z21lbnRh
YmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCogYXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9s
bGVyQ2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdWdtZW50aW5nQ2xpZW50OyB9
IAogICAgIHZpcnR1YWwgdm9pZCBzZXRBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGll
bnQoQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KiBjbGllbnQpIG92ZXJyaWRl
IHsgbV9hdWdtZW50aW5nQ2xpZW50ID0gY2xpZW50OyB9CiAKLSAgICB2aXJ0dWFsIEZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcm9u
dGVuZENoYW5uZWw7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEZyb250ZW5kUm91dGVyJiBmcm9udGVu
ZFJvdXRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yQWdlbnRCYXNlPikgb3ZlcnJpZGU7CiAjZW5kaWYKIApAQCAtMTEzLDggKzExNiw4IEBA
IHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBtX2NvbnNvbGVBZ2VudDsKICAg
ICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBtX2RlYnVnZ2VyQWdlbnQ7CiAgICAgQWdlbnRSZWdp
c3RyeSBtX2FnZW50czsKLSAgICBGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFubmVsOwot
ICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBS
ZWY8RnJvbnRlbmRSb3V0ZXI+IG1fZnJvbnRlbmRSb3V0ZXI7CisgICAgUmVmPEJhY2tlbmREaXNw
YXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIFJlZjxXVEY6OlN0b3B3YXRjaD4gbV9l
eGVjdXRpb25TdG9wd2F0Y2g7CiAgICAgYm9vbCBtX2luY2x1ZGVOYXRpdmVDYWxsU3RhY2tXaXRo
RXhjZXB0aW9uczsKICAgICBib29sIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BdWdtZW50YWJs
ZUluc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YXVnbWVudGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggMjQ1NmFj
NTkxOWQ4YTBkNTY1OWQ2ZjcxY2MwNzU4OGY2Yzc3NjhiMi4uYjBkMjViMGI2NzJhMjk2N2NhZmY1
NzhiZjRmNTg4OGU5ZTk1NGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hdWdtZW50YWJsZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxl
SW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9B
dWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQuaD4KLSNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IApAQCAtNDIsMTAgKzQyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEF1Z21lbnRhYmxlSW5z
cGVjdG9yQ29udHJvbGxlckNsaWVudCogYXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xp
ZW50KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdWdtZW50YWJsZUluc3BlY3Rv
ckNvbnRyb2xsZXJDbGllbnQoQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50Kikg
PSAwOwogCi0gICAgdmlydHVhbCBGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRl
cigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVu
aXF1ZV9wdHI8SW5zcGVjdG9yQWdlbnRCYXNlPikgPSAwOwogCi0gICAgYm9vbCBjb25uZWN0ZWQo
KSBjb25zdCB7IHJldHVybiAhIWZyb250ZW5kQ2hhbm5lbCgpOyB9CisgICAgYm9vbCBjb25uZWN0
ZWQoKSBjb25zdCB7IHJldHVybiBmcm9udGVuZFJvdXRlcigpLmhhc0Zyb250ZW5kcygpOyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGUuaAppbmRleCAwNjRiODNhZTgzODM4ZTFhYjM2ZTVlNzVmMDZmNmY5NzUwZjA4ODA5Li5k
YTI0Mjk5ZTRkZDI1ZjM2ZjIxNTY1YjYxM2E2ZGMwNmRhYmIwMTc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaGFzTG9jYWxEZWJ1Z2dlcigpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBjb25uZWN0KEZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpc2Nvbm5lY3QoRnJvbnRlbmRDaGFubmVsKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNldEluZGljYXRpbmcoYm9vbCkgeyB9IC8vIERlZmF1bHQgaXMg
dG8gZG8gbm90aGluZy4KICAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKSB7IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tCmluZGV4IGJlZGFh
ZDdmYWU0MGM1OGM4OTY3MmU0ZDFhMGIwYTUxMWU5NjVhYjQuLmVkNmNkNjBkY2MwMTAxZDBiOGY2
ZDM1YTg4NDFmM2ZlMjFmNDkwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y2xvc2UoKQogCiAgICAgICAgICAgICBpZiAo
bV9kZWJ1Z2dhYmxlKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fY29ubmVjdGVkKQotICAgICAg
ICAgICAgICAgICAgICBtX2RlYnVnZ2FibGUtPmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9kZWJ1Z2dhYmxlLT5kaXNjb25uZWN0KHRoaXMpOwogCiAgICAgICAgICAgICAgICAg
bV9kZWJ1Z2dhYmxlID0gbnVsbHB0cjsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9h
bHRlcm5hdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9hbHRlcm5hdGVfYmFj
a2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weQppbmRleCBkNGE4ZDVhZmVlZDQ0NTJlZTlmYmY3OGVh
NTJiOTQzM2ZhYjIzNjc4Li4zNzVjZTA1Y2E0NGFiNGU0MDk1NTgzNTQ2NzM3MDMzMjJkNTkxYWI0
IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9jcHBfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2Vu
ZXJhdGVfY3BwX2FsdGVybmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5CkBAIC00Nyw2
ICs0Nyw3IEBAIGNsYXNzIENwcEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJh
dG9yKEdlbmVyYXRvcik6CiAgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKICAgICAgICAg
aGVhZGVycyA9IFsKICAgICAgICAgICAgICciSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIicsCisg
ICAgICAgICAgICAnPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPicsCiAgICAg
ICAgICAgICAnPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+JywK
ICAgICAgICAgXQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVu
dGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRl
eCAxMjUxMTQ5MzNjZTkyODgxNWI0MmQ0NTJmNTIzZWFlY2QzMDdhMTFlLi5iMzZjMGIxM2MwOGQ5
MTExMjk0NjQ3YjZiODZkYmRiZTI4YmZkNzM1IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNw
YXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1w
bGVtZW50YXRpb24ucHkKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNo
ZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgIGRlZiBnZW5lcmF0ZV9v
dXRwdXQoc2VsZik6CiAgICAgICAgIHNlY29uZGFyeV9oZWFkZXJzID0gWwogICAgICAgICAgICAg
JzxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+JywKKyAgICAgICAgICAgICc8
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+JywKICAgICAgICAgICAgICc8aW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPicsCiAgICAgICAgICAgICAnPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPicsCiAgICAgICAgICAgICAnPHd0Zi90ZXh0L0NTdHJpbmcuaD4nXQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9u
dGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IGZiMmRlNGY2MWYzZmMwMWQ3
YTQ2MDgwOGE5ODU1YzVhZGEyZjkwMDAuLjk0MDE4ZTU5ZjZmYWY2MDIwN2JhZWNkNjViYjU1M2E1
MmIwZmU1N2QgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRh
dGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkK
QEAgLTk4LDkgKzk4LDcgQEAgY2xhc3MgT2JqQ0Zyb250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0
aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgIGxpbmVzID0gW10KICAgICAgICAgbGlu
ZXMuYXBwZW5kKHNlbGYuX2dlbmVyYXRlX2V2ZW50X3NpZ25hdHVyZShkb21haW4sIGV2ZW50KSkK
ICAgICAgICAgbGluZXMuYXBwZW5kKCd7JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBfY29udHJvbGxlci0+ZnJvbnRlbmRDaGFu
bmVsKCk7JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgaWYgKCFmcm9udGVuZENoYW5uZWwp
JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIHJldHVybjsnKQorICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICBjb25zdCBGcm9udGVuZFJvdXRlciYgcm91dGVyID0gX2NvbnRyb2xsZXIt
PmZyb250ZW5kUm91dGVyKCk7JykKICAgICAgICAgbGluZXMuYXBwZW5kKCcnKQogCiAgICAgICAg
IHJlcXVpcmVkX3BvaW50ZXJfcGFyYW1ldGVycyA9IGZpbHRlcihsYW1iZGEgcGFyYW1ldGVyOiBu
b3QgcGFyYW1ldGVyLmlzX29wdGlvbmFsIGFuZCBPYmpDR2VuZXJhdG9yLmlzX3R5cGVfb2JqY19w
b2ludGVyX3R5cGUocGFyYW1ldGVyLnR5cGUpLCBldmVudC5ldmVudF9wYXJhbWV0ZXJzKQpAQCAt
MTI2LDcgKzEyNCw3IEBAIGNsYXNzIE9iakNGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBqc29uTWVz
c2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWV0aG9kIiksIEFTQ0lJTGl0ZXJhbCgiJXMu
JXMiKSk7JyAlIChkb21haW4uZG9tYWluX25hbWUsIGV2ZW50LmV2ZW50X25hbWUpKQogICAgICAg
ICBpZiBldmVudC5ldmVudF9wYXJhbWV0ZXJzOgogICAgICAgICAgICAgbGluZXMuZXh0ZW5kKHNl
bGYuX2dlbmVyYXRlX2V2ZW50X291dF9wYXJhbWV0ZXJzKGRvbWFpbiwgZXZlbnQpKQotICAgICAg
ICBsaW5lcy5hcHBlbmQoJyAgICBmcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVu
ZChqc29uTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOycpCisgICAgICAgIGxpbmVzLmFwcGVuZCgn
ICAgIHJvdXRlci5zZW5kRXZlbnQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsnKQogICAg
ICAgICBsaW5lcy5hcHBlbmQoJ30nKQogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dERlYnVnZ2FibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlLmNwcAppbmRleCBlZWNjNWJhMDMwYWI1NDBjYTVlNDNkZGQ1YWE4YWQy
MmMzNzM2OTFlLi4yYWVhMjAzNWYzMWFmZWY5ZTdhMWU2MTNlNWViNDcyYWI0ZTUwNmE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVn
Z2FibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RGVidWdnYWJsZS5jcHAKQEAgLTU2LDExICs1NiwxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZTo6Y29ubmVjdChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9v
bCBhdQogICAgIG1fZ2xvYmFsT2JqZWN0Lmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJv
bnRlbmQoZnJvbnRlbmRDaGFubmVsLCBhdXRvbWF0aWNJbnNwZWN0aW9uKTsKIH0KIAotdm9pZCBK
U0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmRpc2Nvbm5lY3QoKQordm9pZCBKU0dsb2JhbE9iamVj
dERlYnVnZ2FibGU6OmRpc2Nvbm5lY3QoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwp
CiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcigmbV9nbG9iYWxPYmplY3Qudm0oKSk7CiAKLSAg
ICBtX2dsb2JhbE9iamVjdC5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5k
KERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgbV9nbG9iYWxPYmpl
Y3QuaW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5u
ZWwpOwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6cGF1c2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dh
YmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVn
Z2FibGUuaAppbmRleCA2MGNlNThhNDRjNzkzNTlhNzczOWE5MDc5Yjk5MzBkZDEyYWJhMzk0Li4w
M2ZkMTdkMGZmMGE0NjY2OTY2NTkzYTIyNmM1MDRmM2UxNmEyYWFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUu
aApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc0xvY2FsRGVi
dWdnZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBib29sIGF1dG9tYXRpY0lu
c3BlY3Rpb24pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5u
ZWwqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90
ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHBhdXNlKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oIGIvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91
dGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGE5YjZhN2ZjNDdkZDE2OWUyNmE0NjVjZjNiNzRlM2E0NDNhNjI5
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRl
ZiBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JGcm9udGVuZFJvdXRlcl9oCisjZGVmaW5lIFdlYkNvcmVf
RldEX0luc3BlY3RvckZyb250ZW5kUm91dGVyX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
bnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCAwNjZjM2FlZWU1NjQ2M2ZiMzEzNWYx
OTY5N2I1YjNkYzk3YTJhZWE3Li5jNDVhYzFmZjVmNDZmOGRhYWFiMjZmODdiNTdhZjQ3OTkzZjY2
YzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2oKQEAgLTIwMzM2LDYgKzIwMzM2LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZv
cndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9y
XEluc3BlY3RvckVudmlyb25tZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxG
b3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3Jc
SW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3Bl
Y3RvclxJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yUHJvdG9jb2xP
YmplY3RzLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgK
aW5kZXggZWU3ZDhmYWM0NjVkMWU1Y2VkZTIwZTJjMThlZGU1ZDVmODEwNjExZS4uNmQzOWE0Yzky
YWRjZjUyODZmMjQ4MTUyZWMxYzUyNjkzYmFkZGQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAtMjcsMTEgKzI3LDE0IEBACiAjaWZuZGVmIEluc3Bl
Y3RvckNsaWVudF9oCiAjZGVmaW5lIEluc3BlY3RvckNsaWVudF9oCiAKLSNpbmNsdWRlICJJbnNw
ZWN0b3JGb3J3YXJkaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKK25hbWVzcGFjZSBJbnNw
ZWN0b3IgeworY2xhc3MgRnJvbnRlbmRDaGFubmVsOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEZsb2F0UmVjdDsKQEAgLTQ1LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpID0gMDsKIAotICAgIHZpcnR1YWwgSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJv
bGxlciopID0gMDsKKyAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBvcGVu
SW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnJp
bmdGcm9udGVuZFRvRnJvbnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlc2l6ZU1haW5G
cmFtZShGcmFtZSopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCmluZGV4IDI3N2YxNmI2ZjQ3NTA1N2IxNzQ2MzdiMzY3ZDNjYTVhMDVh
ODNjYmEuLjhhN2RmMjBhYzA0YzdlMDJmYjlhY2NiOTg5NzllZDM1NjQxNTBmN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTY4
LDYgKzY4LDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+
CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaD4KKyNp
bmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4KICNpbmNsdWRlIDxp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50Lmg+CiAjaW5jbHVkZSA8cHJvZmlsZXIvTGVn
YWN5UHJvZmlsZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgpAQCAtODUsNiArODYs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JD
b250cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KQog
ICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2VudHM6OmNyZWF0ZSgq
dGhpcykpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFdl
YkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6Y3Jl
YXRlKCkpKQorICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkp
CisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9m
cm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogICAgICwgbV9vdmVybGF5KHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yT3ZlcmxheT4ocGFnZSwgaW5zcGVjdG9yQ2xpZW50KSkKICAgICAsIG1fZXhl
Y3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAgLCBtX3BhZ2UocGFnZSkK
QEAgLTE3Nyw3ICsxODAsOCBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjp+SW5zcGVjdG9yQ29udHJv
bGxlcigpCiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3ll
ZCgpCiB7Ci0gICAgZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3Rl
ZFRhcmdldERlc3Ryb3llZCk7CisgICAgZGlzY29ubmVjdEFsbEZyb250ZW5kcygpOworCiAgICAg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmRpc2Nvbm5lY3QoKTsKICAgICBtX2luc3BlY3RvckNs
aWVudC0+aW5zcGVjdG9yRGVzdHJveWVkKCk7CiAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBudWxs
cHRyOwpAQCAtMTkwLDEyICsxOTQsMTIgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRJ
bnNwZWN0b3JGcm9udGVuZENsaWVudChJbnNwZWN0b3JGcm9udGVuZENsaWVudCogaW4KIAogYm9v
bCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNMb2NhbEZyb250ZW5kKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9mcm9udGVuZENoYW5uZWwgJiYgbV9mcm9udGVuZENoYW5uZWwtPmNvbm5lY3Rpb25U
eXBlKCkgPT0gRnJvbnRlbmRDaGFubmVsOjpDb25uZWN0aW9uVHlwZTo6TG9jYWw7CisgICAgcmV0
dXJuIG1fZnJvbnRlbmRSb3V0ZXItPmhhc0xvY2FsRnJvbnRlbmQoKTsKIH0KIAogYm9vbCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpoYXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fZnJvbnRlbmRDaGFubmVsICYmIG1fZnJvbnRlbmRDaGFubmVsLT5jb25uZWN0aW9uVHlwZSgp
ID09IEZyb250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGU6OlJlbW90ZTsKKyAgICByZXR1cm4g
bV9mcm9udGVuZFJvdXRlci0+aGFzUmVtb3RlRnJvbnRlbmQoKTsKIH0KIAogYm9vbCBJbnNwZWN0
b3JDb250cm9sbGVyOjpoYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIGNvbnN0CkBAIC0yMTks
NzQgKzIyMyw5NiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENsZWFyV2luZG93T2Jq
ZWN0SW5Xb3JsZChGcmFtZSYgZnJhbWUsIERPTVdyYXBwZXJXbwogCiB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJv
bnRlbmRDaGFubmVsLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikKIHsKLSAgICBBU1NFUlQo
ZnJvbnRlbmRDaGFubmVsKTsKKyAgICBBU1NFUlRfQVJHKGZyb250ZW5kQ2hhbm5lbCwgZnJvbnRl
bmRDaGFubmVsKTsKICAgICBBU1NFUlQobV9pbnNwZWN0b3JDbGllbnQpOwotICAgIEFTU0VSVCgh
bV9mcm9udGVuZENoYW5uZWwpOwotICAgIEFTU0VSVCghbV9iYWNrZW5kRGlzcGF0Y2hlcik7CiAK
KyAgICBib29sIGNvbm5lY3RlZEZpcnN0RnJvbnRlbmQgPSAhbV9mcm9udGVuZFJvdXRlci0+aGFz
RnJvbnRlbmRzKCk7CiAgICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBpc0F1dG9tYXRpY0lu
c3BlY3Rpb247CiAKLSAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IGZyb250ZW5kQ2hhbm5lbDsKLSAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyID0gQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShmcm9udGVu
ZENoYW5uZWwpOwotCi0gICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZy
b250ZW5kQ2hhbm5lbCwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgbV9mcm9udGVu
ZFJvdXRlci0+Y29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCk7CiAKLSAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhtX2luc3RydW1l
bnRpbmdBZ2VudHMuZ2V0KCkpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRl
bmRDcmVhdGVkKCk7CiAKKyAgICBpZiAoY29ubmVjdGVkRmlyc3RGcm9udGVuZCkgeworICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyht
X2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpOworICAgICAgICBtX2FnZW50cy5kaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoZnJvbnRlbmRDaGFubmVsLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5n
ZXQoKSk7CisgICAgfQorCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgaWYgKCFo
YXNSZW1vdGVGcm9udGVuZCgpKQorICAgIGlmICghbV9mcm9udGVuZFJvdXRlci0+aGFzUmVtb3Rl
RnJvbnRlbmQoKSkKICAgICAgICAgbV9wYWdlLnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlk
Q2hhbmdlKCk7CiAjZW5kaWYKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25u
ZWN0RnJvbnRlbmQoRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCit2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5l
bCkKIHsKLSAgICBpZiAoIW1fZnJvbnRlbmRDaGFubmVsKQotICAgICAgICByZXR1cm47CisgICAg
Ly8gVGhlIGxvY2FsIGZyb250ZW5kIGNsaWVudCBzaG91bGQgYmUgZGlzY29ubmVjdGVkIGZpcnN0
IHNvIGl0IHN0b3BzIHNlbmRpbmcgbWVzc2FnZXMuCisgICAgQVNTRVJUKCFtX2Zyb250ZW5kUm91
dGVyLT5oYXNMb2NhbEZyb250ZW5kKCkgfHwgIW1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOwor
CisgICAgbV9mcm9udGVuZFJvdXRlci0+ZGlzY29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5l
bCk7CisgICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKKworICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmREZWxldGVkKCk7CisKKyAgICBib29sIGRpc2Nvbm5l
Y3RlZExhc3RGcm9udGVuZCA9ICFtX2Zyb250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMoKTsKKyAg
ICBpZiAoZGlzY29ubmVjdGVkTGFzdEZyb250ZW5kKSB7CisgICAgICAgIC8vIFJlbGVhc2Ugb3Zl
cmxheSBwYWdlIHJlc291cmNlcy4KKyAgICAgICAgbV9vdmVybGF5LT5mcmVlUGFnZSgpOworICAg
ICAgICBtX2FnZW50cy53aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVh
c29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnVucmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKG1faW5zdHJ1bWVudGluZ0FnZW50cy5n
ZXQoKSk7CisgICAgfQogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgaWYgKCFo
YXNSZW1vdGVGcm9udGVuZCgpKQorICAgIGlmICghbV9mcm9udGVuZFJvdXRlci0+aGFzRnJvbnRl
bmRzKCkpCiAgICAgICAgIG1fcGFnZS5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5n
ZSgpOwogI2VuZGlmCit9CiAKLSAgICBtX2FnZW50cy53aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChyZWFzb24pOwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0QWxsRnJv
bnRlbmRzKCkKK3sKKyAgICAvLyBUaGUgbG9jYWwgZnJvbnRlbmQgY2xpZW50IHNob3VsZCBiZSBk
aXNjb25uZWN0ZWQgZmlyc3Qgc28gaXQgc3RvcHMgc2VuZGluZyBtZXNzYWdlcy4KKyAgICBBU1NF
UlQoIW1fZnJvbnRlbmRSb3V0ZXItPmhhc0xvY2FsRnJvbnRlbmQoKSB8fCAhbV9pbnNwZWN0b3JG
cm9udGVuZENsaWVudCk7CiAKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5jbGVhckZyb250ZW5k
KCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9mcm9udGVuZENo
YW5uZWwgPSBudWxscHRyOworICAgIG1fYWdlbnRzLndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCk7CiAKKyAgICBt
X2Zyb250ZW5kUm91dGVyLT5kaXNjb25uZWN0QWxsRnJvbnRlbmRzKCk7CiAgICAgbV9pc0F1dG9t
YXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKIAogICAgIC8vIFJlbGVhc2Ugb3ZlcmxheSBwYWdlIHJl
c291cmNlcy4KICAgICBtX292ZXJsYXktPmZyZWVQYWdlKCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpmcm9udGVuZERlbGV0ZWQoKTsKKworICAgIHdoaWxlIChJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpKQorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmZyb250ZW5kRGVsZXRlZCgpOworCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp1bnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0
KCkpOworICAgIAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIG1fcGFnZS5yZW1v
dGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOworI2VuZGlmCiB9CiAKIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6c2hvdygpCiB7Ci0gICAgQVNTRVJUKCFoYXNSZW1vdGVGcm9udGVu
ZCgpKTsKKyAgICBBU1NFUlQoIW1fZnJvbnRlbmRSb3V0ZXItPmhhc1JlbW90ZUZyb250ZW5kKCkp
OworCisgICAgLy8gVGhlIGxvY2FsIGZyb250ZW5kIGNsaWVudCBzaG91bGQgYmUgZGlzY29ubmVj
dGVkIGlmIHRoZXJlJ3Mgbm8gbG9jYWwgZnJvbnRlbmQuCisgICAgQVNTRVJUKG1fZnJvbnRlbmRS
b3V0ZXItPmhhc0xvY2FsRnJvbnRlbmQoKSB8fCAhbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudCk7
CiAKICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fZnJv
bnRlbmRDaGFubmVsKQorICAgIGlmIChtX2Zyb250ZW5kUm91dGVyLT5oYXNMb2NhbEZyb250ZW5k
KCkpCiAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5icmluZ0Zyb250ZW5kVG9Gcm9udCgpOwot
ICAgIGVsc2UgewotICAgICAgICBpZiAoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250
ZW5kQ2hhbm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9yRnJvbnRlbmQodGhp
cykpIHsKLSAgICAgICAgICAgIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2U7Ci0g
ICAgICAgICAgICBjb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVsLCBpc0F1dG9tYXRpY0lu
c3BlY3Rpb24pOwotICAgICAgICB9Ci0gICAgfQorICAgIGVsc2UgaWYgKEluc3BlY3Rvcjo6RnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBtX2luc3BlY3RvckNsaWVudC0+b3Blbklu
c3BlY3RvckZyb250ZW5kKHRoaXMpKQorICAgICAgICBjb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRD
aGFubmVsKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjbG9zZSgpCiB7Ci0gICAg
aWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkKLSAgICAgICAgcmV0dXJuOwotICAgIGRpc2Nvbm5lY3RG
cm9udGVuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwotICAgIG1faW5z
cGVjdG9yQ2xpZW50LT5jbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CisgICAgaWYgKG1fZnJvbnRl
bmRSb3V0ZXItPmhhc0xvY2FsRnJvbnRlbmQoKSkKKyAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQt
PmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKKworICAgIEFTU0VSVCghbV9mcm9udGVuZFJvdXRl
ci0+aGFzTG9jYWxGcm9udGVuZCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpz
ZXRQcm9jZXNzSWQobG9uZyBwcm9jZXNzSWQpCkBAIC0zMzcsOCArMzYzLDcgQEAgUGFnZSYgSW5z
cGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZSgpIGNvbnN0CiAKIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKIHsKLSAgICBpZiAobV9iYWNrZW5kRGlzcGF0Y2hlcikKLSAgICAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlci0+ZGlzcGF0Y2gobWVzc2FnZSk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+
ZGlzcGF0Y2gobWVzc2FnZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGlkZUhp
Z2hsaWdodCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaAppbmRleCBkZmI3ZTg1MDlhYzZjN2I5NzA0ZjliNTRhMzJhMDY4OTRhYTFmODhhLi42ZTE1
Y2VkZDdiNTc4MmYzOThhZjM0NTQzNmNjNjExODZlNzc3OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAKIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgQmFja2VuZERpc3BhdGNoZXI7CiBjbGFzcyBGcm9u
dGVuZENoYW5uZWw7CitjbGFzcyBGcm9udGVuZFJvdXRlcjsKIGNsYXNzIEluc3BlY3RvckFnZW50
OwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogCkBAIC05OCw4ICs5OSw5IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc0xvY2FsRnJvbnRlbmQoKSBjb25zdDsKICAgICBib29sIGhhc1JlbW90ZUZyb250
ZW5kKCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3RGcm9udGVuZChJ
bnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRp
c2Nvbm5lY3RSZWFzb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVjdEZyb250ZW5k
KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24g
PSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoSW5z
cGVjdG9yOjpGcm9udGVuZENoYW5uZWwqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc2Nv
bm5lY3RBbGxGcm9udGVuZHMoKTsKICAgICB2b2lkIHNldFByb2Nlc3NJZChsb25nKTsKIAogICAg
IHZvaWQgaW5zcGVjdChOb2RlKik7CkBAIC0xNDAsOCArMTQyLDggQEAgcHJpdmF0ZToKIAogICAg
IFJlZjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4gbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXI7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2Vu
ZERpc3BhdGNoZXI7Ci0gICAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRD
aGFubmVsIHsgbnVsbHB0ciB9OworICAgIFJlZjxJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyPiBt
X2Zyb250ZW5kUm91dGVyOworICAgIFJlZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JPdmVybGF5
PiBtX292ZXJsYXk7CiAgICAgUmVmPFdURjo6U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRj
aDsKICAgICBJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggY2M0
NzNkNzYxN2I3Yjk5ZmIzZWYxMGEyOWFhM2VjZjlhNWQwNjc1Yy4uYzdmNmE2ZTM0MjMwOWI1Y2Ex
ZjUxNzM0NDJmYTUxYjRmZTExNGMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1
ZGUgIlNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNRTFZhbHVlLmgi
CiAjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kUm91dGVyLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggZWYzYjE4NWMzNjFkODcy
NzRmYzA0Y2RlYjQ1NWUxMmI0ZGVhYTQ5My4uYTNlYWJiN2IxMTQ4NzA1ZmRmNGNlMmYxZWU0Zjhk
OGNhMTBjZGM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSA8aW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TWFuYWdlci5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZERpc3BhdGNo
ZXJzLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+CiAj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCA4NTc5MTk5
OWZjM2IwNzE1NjM0ZDI2YmZjZWFjODAzODQ4ZDEzZDc1Li4xNDMyZWYwZDkzZTMyYzY5ZTU3MDVi
ZDRlZmYzZDQwZGQ0MWY0YWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3Iv
SWRlbnRpZmllcnNGYWN0b3J5Lmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kUm91dGVyLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2lu
Y2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDxpbnNwZWN0b3Iv
U2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDIyYjA4N2UxODVlNWNj
YTUyZGRiOGM0ZjM1ODQzMTZiYTRkZWQyYTQuLjhhMjJkNWM2ZjczODFlMjJkNDdjZDc3ODIyNzMz
NTcyYTA2NzI5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJX
b3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVy
cy5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdG9wd2F0Y2guaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKQEAg
LTgwLDYgKzgxLDggQEAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2wKICAgICAsIG1faW5zdHJ1bWVu
dGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1h
bmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1f
ZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCisgICAgLCBtX2Zyb250ZW5k
Um91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKKyAgICAsIG1fYmFja2VuZERpc3BhdGNo
ZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkp
CiB7CiAgICAgYXV0byBydW50aW1lQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclJ1bnRp
bWVBZ2VudD4oKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCAmd29ya2VyR2xvYmFsU2NvcGUpOwog
ICAgIG1fcnVudGltZUFnZW50ID0gcnVudGltZUFnZW50LmdldCgpOwpAQCAtMTE0LDI3ICsxMTcs
MjcgQEAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6fldvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIoKQogCiB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgp
CiB7Ci0gICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9mcm9udGVuZENoYW5u
ZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VJbnNwZWN0b3JQcm94eT4obV93b3JrZXJHbG9iYWxT
Y29wZSk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUobV9mcm9udGVuZENoYW5uZWwuZ2V0KCkpOwotICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0Y2hl
ci5nZXQoKSk7CisgICAgQVNTRVJUKCFtX2Zyb250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMoKSk7
CisgICAgQVNTRVJUKCFtX2ZvcndhcmRpbmdDaGFubmVsKTsKKworICAgIG1fZm9yd2FyZGluZ0No
YW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VJbnNwZWN0b3JQcm94eT4obV93b3JrZXJHbG9i
YWxTY29wZSk7CisgICAgbV9mcm9udGVuZFJvdXRlci0+Y29ubmVjdEZyb250ZW5kKG1fZm9yd2Fy
ZGluZ0NoYW5uZWwuZ2V0KCkpOworICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChtX2ZvcndhcmRpbmdDaGFubmVsLmdldCgpLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQo
KSk7CiB9CiAKIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250
ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7Ci0gICAgaWYgKCFtX2Zy
b250ZW5kQ2hhbm5lbCkKLSAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX2Zyb250ZW5kUm91
dGVyLT5oYXNGcm9udGVuZHMoKSk7CisgICAgQVNTRVJUKG1fZm9yd2FyZGluZ0NoYW5uZWwpOwog
CiAgICAgbV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQocmVhc29uKTsKLSAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyLT5jbGVhckZyb250ZW5kKCk7Ci0gICAgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOworICAg
IG1fZnJvbnRlbmRSb3V0ZXItPmRpc2Nvbm5lY3RGcm9udGVuZChtX2ZvcndhcmRpbmdDaGFubmVs
LmdldCgpKTsKKyAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0gbnVsbHB0cjsKIH0KIAogdm9pZCBX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIGlmIChtX2JhY2tlbmREaXNwYXRjaGVyKQotICAg
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKKyAgICBtX2JhY2tl
bmREaXNwYXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKIH0KIAogdm9pZCBXb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyOjpyZXN1bWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZGU4MTQ4MGQwODNjNTBjZDgwZGMy
N2ZhNDE2MWRjZjAzNWY1YmUxYS4uNWJkZTFlMWI3OTY3ZTViNmNlZTVhYTlmYTc3OTdlMGQ1Yjkw
MTNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5oCkBAIC00MSw2ICs0MSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xh
c3MgRnJvbnRlbmRSb3V0ZXI7Cit9OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjsKQEAgLTc4LDkgKzgyLDEwIEBAIHByaXZhdGU6CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXI7CiAgICAgV29ya2VyUnVudGltZUFnZW50KiBtX3J1bnRpbWVBZ2VudCB7IG51bGxw
dHIgfTsKICAgICBJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnkgbV9hZ2VudHM7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsPiBtX2Zyb250ZW5kQ2hhbm5lbDsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWw+IG1fZm9yd2Fy
ZGluZ0NoYW5uZWw7CiAgICAgUmVmPFdURjo6U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRj
aDsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlz
cGF0Y2hlcjsKKyAgICBSZWY8SW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcj4gbV9mcm9udGVuZFJv
dXRlcjsKKyAgICBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlz
cGF0Y2hlcjsKICAgICBWZWN0b3I8SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLCAyPiBt
X2luamVjdGVkU2NyaXB0SW5zdHJ1bWVudGF0aW9uQ29va2llczsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKaW5kZXggZmU3YjI5NDg2YWRlOGI0ZmEzZjNmNDlhMGVm
YWQ5Y2Q3MDA5N2RkZC4uMjQ5ODNiZWM0YTc5Y2U3MzhiNDNlOTBlMjhkYzAwNWUzOGE2YjRhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKQEAgLTgwLDEwICs4MCwxMCBA
QCB2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVs
KiBjaGFubmVsLCBib29sIGlzQXV0b21hdAogICAgIGluc3BlY3RvckNvbnRyb2xsZXIuY29ubmVj
dEZyb250ZW5kKGNoYW5uZWwsIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CiB9CiAKLXZvaWQgUGFn
ZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3QoKQordm9pZCBQYWdlRGVidWdnYWJsZTo6ZGlzY29ubmVj
dChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCkKIHsKICAgICBJbnNwZWN0b3JD
b250cm9sbGVyJiBpbnNwZWN0b3JDb250cm9sbGVyID0gbV9wYWdlLmluc3BlY3RvckNvbnRyb2xs
ZXIoKTsKLSAgICBpbnNwZWN0b3JDb250cm9sbGVyLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0
b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgaW5zcGVjdG9y
Q29udHJvbGxlci5kaXNjb25uZWN0RnJvbnRlbmQoY2hhbm5lbCk7CiAKICAgICBpZiAobV9mb3Jj
ZWREZXZlbG9wZXJFeHRyYXNFbmFibGVkKSB7CiAgICAgICAgIG1fZm9yY2VkRGV2ZWxvcGVyRXh0
cmFzRW5hYmxlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
RGVidWdnYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5oCmluZGV4
IDZhZWZjYzNjYjQ1YjkyMDE3MGU5Nzk0NThiZTVhYjA2MGIzNmE0ZDMuLmIyOTA5NGY1OTljMWFj
MWRkM2Y1ZGQyMzc0MWI1ZmRiMWI2YWM1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZURlYnVnZ2FibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dh
YmxlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNMb2Nh
bERlYnVnZ2VyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJ
bnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBkaXNjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRp
Y2F0aW5nKGJvb2wpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggMzFiZjUxNzQzYTg4MWNmY2I4MjVhNTc4YjQ2YWIyY2MyY2NmNTU1Ny4uMGVmN2NmNzI2
MTFiZGNmMmVlYzg5YmU2ODc4NTM5YmM5N2NlYzRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtMTczNCw5ICsxNzM0LDggQEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IElu
dGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpCiAg
ICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnREdW1teT4oJnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRlbmRQYWdlKTsK
ICAgICBmcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9u
dGVuZENsaWVudChtX2Zyb250ZW5kQ2xpZW50LmdldCgpKTsKIAotICAgIGJvb2wgaXNBdXRvbWF0
aWNJbnNwZWN0aW9uID0gZmFsc2U7CiAgICAgbV9mcm9udGVuZENoYW5uZWwgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbER1bW15Pihmcm9udGVuZFBhZ2UpOwotICAg
IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQobV9mcm9udGVuZENo
YW5uZWwuZ2V0KCksIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CisgICAgcGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZChtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSk7CiAK
ICAgICByZXR1cm4gbV9mcm9udGVuZFdpbmRvdzsKIH0KQEAgLTE3NDcsOSArMTc0NiwxMyBAQCB2
b2lkIEludGVybmFsczo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKCkKICAgICBBU1NFUlQo
cGFnZSk7CiAgICAgQVNTRVJUKG1fZnJvbnRlbmRXaW5kb3cpOwogCi0gICAgcGFnZS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RS
ZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgUGFnZSogZnJvbnRlbmRQYWdlID0gbV9m
cm9udGVuZFdpbmRvdy0+ZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIEFTU0VSVChmcm9udGVuZFBh
Z2UpOwogCisgICAgZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQobnVsbHB0cik7CiAgICAgbV9mcm9udGVuZENsaWVudCA9IG51bGxw
dHI7CisKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5k
KG1fZnJvbnRlbmRDaGFubmVsLmdldCgpKTsKICAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IG51bGxw
dHI7CiAKICAgICBtX2Zyb250ZW5kV2luZG93LT5jbG9zZShtX2Zyb250ZW5kV2luZG93LT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBjNTBkYmI3YTU4ZDhiNjQzNjAw
NmE1ZjljMGNkOGVkZDk3NGQ3YjZlLi4wMWI0YmM5MDRjNzM1NzFjZGI2YTNjOTEzOTIyZjM0OGJl
NWFlZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBicmluZ1RvRnJvbnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2xv
c2VXaW5kb3coKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyb21CYWNr
ZW5kKCk7CisgICAgdm9pZCBkaXNjb25uZWN0RnJvbUJhY2tlbmQoKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBhdHRhY2hXaW5kb3coRG9ja1NpZGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBk
ZXRhY2hXaW5kb3coKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCA4MDYwMDNhNjI0NTQwNTcy
OWNhZWY4YTY3MTIzYzYzMTViYWU0ZThlLi42ZTU0NTZiMzEwMzVjMTIyOTUyODIxMmY5ZTRkZDhj
N2NkNzJkNGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBjb25zdCBD
R0Zsb2F0IGluaXRpYWxXaW5kb3dIZWlnaHQgPSA2NTA7CiAtIChXZWJJbnNwZWN0b3JDbGllbnQq
KWluc3BlY3RvckNsaWVudDsKIC0gKHZvaWQpc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQ6KHVuc2ln
bmVkKWhlaWdodDsKIC0gKHZvaWQpc2V0RG9ja2luZ1VuYXZhaWxhYmxlOihCT09MKXVuYXZhaWxh
YmxlOwotLSAodm9pZClkZXN0cm95SW5zcGVjdG9yVmlldzooYm9vbClub3RpZnlJbnNwZWN0b3JD
b250cm9sbGVyOworLSAodm9pZClkZXN0cm95SW5zcGVjdG9yVmlldzsKIEBlbmQKIAogCkBAIC0x
MzAsNiArMTMwLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJv
bnRlbmQoKQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6YnJpbmdGcm9udGVuZFRvRnJvbnQo
KQogeworICAgIEFTU0VSVChtX2Zyb250ZW5kQ2xpZW50KTsKICAgICBtX2Zyb250ZW5kQ2xpZW50
LT5icmluZ1RvRnJvbnQoKTsKIH0KIApAQCAtMjUyLDEyICsyNTMsMTIgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6YnJpbmdUb0Zyb250KCkKIAogdm9pZCBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6Y2xvc2VXaW5kb3coKQogewotICAgIFttX3dpbmRvd0NvbnRyb2xsZXIu
Z2V0KCkgZGVzdHJveUluc3BlY3RvclZpZXc6dHJ1ZV07CisgICAgW21fd2luZG93Q29udHJvbGxl
ci5nZXQoKSBkZXN0cm95SW5zcGVjdG9yVmlld107CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OmRpc2Nvbm5lY3RGcm9tQmFja2VuZCgpCiB7Ci0gICAgW21fd2luZG93Q29u
dHJvbGxlci5nZXQoKSBkZXN0cm95SW5zcGVjdG9yVmlldzpmYWxzZV07CisgICAgW21fd2luZG93
Q29udHJvbGxlci5nZXQoKSBkZXN0cm95SW5zcGVjdG9yVmlld107CiB9CiAKIHZvaWQgV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OmF0dGFjaFdpbmRvdyhEb2NrU2lkZSkKQEAgLTUyMiw3ICs1
MjMsNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQoY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZwogCiAtIChCT09MKXdpbmRvd1Nob3VsZENs
b3NlOihpZClzZW5kZXIKIHsKLSAgICBbc2VsZiBkZXN0cm95SW5zcGVjdG9yVmlldzp0cnVlXTsK
KyAgICBbc2VsZiBkZXN0cm95SW5zcGVjdG9yVmlld107CiAKICAgICByZXR1cm4gWUVTOwogfQpA
QCAtNjc2LDcgKzY3Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVu
ZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nCiAgICAgLy8gRG8gbm90
aGluZy4KIH0KIAotLSAodm9pZClkZXN0cm95SW5zcGVjdG9yVmlldzooYm9vbClub3RpZnlJbnNw
ZWN0b3JDb250cm9sbGVyCistICh2b2lkKWRlc3Ryb3lJbnNwZWN0b3JWaWV3CiB7CiAgICAgUmV0
YWluUHRyPFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXI+IHByb3RlY3Qoc2VsZik7CiAKQEAg
LTY5Miw5ICs2OTMsOSBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQo
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZwogCiAgICAgX3Zpc2libGUg
PSBOTzsKIAotICAgIGlmIChub3RpZnlJbnNwZWN0b3JDb250cm9sbGVyKSB7Ci0gICAgICAgIGlm
IChQYWdlKiBpbnNwZWN0ZWRQYWdlID0gW19pbnNwZWN0ZWRXZWJWaWV3LmdldCgpIHBhZ2VdKQot
ICAgICAgICAgICAgaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5l
Y3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3ll
ZCk7CisgICAgaWYgKFBhZ2UqIGluc3BlY3RlZFBhZ2UgPSBbX2luc3BlY3RlZFdlYlZpZXcuZ2V0
KCkgcGFnZV0pIHsKKyAgICAgICAgaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG51bGxwdHIpOworICAgICAgICBpbnNwZWN0ZWRQ
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKF9pbnNwZWN0b3JD
bGllbnQpOwogICAgIH0KIAogICAgIFtfd2ViVmlldyBjbG9zZV07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRl
eCA0NWQ0YWIwZGExNjA3NGM3NmIwOGJiNjM0ZDEzYWRhYmQ2ZDZiYWNhLi4yYWJhNTM3MjBiZDAw
MDAwMjE2NjhkY2UzM2FjOTg3MTJkZjkzM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE3NCw3ICsx
NzQsNyBAQCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNs
aWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKElucwogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6
OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQogewogICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQot
ICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5kZXN0cm95SW5zcGVjdG9yVmlldyhmYWxzZSk7Cisg
ICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPmRlc3Ryb3lJbnNwZWN0b3JWaWV3KCk7CiB9CiAKIHZv
aWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpicmluZ0Zyb250ZW5kVG9Gcm9udCgpCkBAIC0yMzcsNyAr
MjM3LDcgQEAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcKIAogV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6On5XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpCiB7Ci0gICAgZGVzdHJveUluc3Bl
Y3RvclZpZXcodHJ1ZSk7CisgICAgZGVzdHJveUluc3BlY3RvclZpZXcoKTsKIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZnJvbnRlbmRMb2FkZWQoKQpAQCAtMjY5LDcgKzI2
OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmJyaW5nVG9Gcm9udCgpCiAK
IHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNsb3NlV2luZG93KCkKIHsKLSAgICBk
ZXN0cm95SW5zcGVjdG9yVmlldyh0cnVlKTsKKyAgICBkZXN0cm95SW5zcGVjdG9yVmlldygpOwog
fQogCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3coRG9ja1Np
ZGUpCkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
c2hvd1dpbmRvd1dpdGhvdXROb3RpZmljYXRpb25zKCkKICAgICBtX2luc3BlY3RvckNsaWVudC0+
dXBkYXRlSGlnaGxpZ2h0KCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OmRlc3Ryb3lJbnNwZWN0b3JWaWV3KGJvb2wgbm90aWZ5SW5zcGVjdG9yQ29udHJvbGxlcikKK3Zv
aWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ryb3lJbnNwZWN0b3JWaWV3KCkKIHsK
ICAgICBtX2luc3BlY3RvckNsaWVudC0+cmVsZWFzZUZyb250ZW5kKCk7CiAKQEAgLTQzMSwxMCAr
NDMxLDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ryb3lJbnNwZWN0
b3JWaWV3KGJvb2wgbm90aWZ5SW5zcGVjdG9yQ29udHJvCiAKICAgICBjbG9zZVdpbmRvd1dpdGhv
dXROb3RpZmljYXRpb25zKCk7CiAKLSAgICBpZiAobm90aWZ5SW5zcGVjdG9yQ29udHJvbGxlcikg
ewotICAgICAgICBtX2luc3BlY3RlZFdlYlZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3Bl
Y3RvckRlc3Ryb3llZCk7Ci0gICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT51cGRhdGVIaWdobGln
aHQoKTsKLSAgICB9CisgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCktPmluc3BlY3RvckNv
bnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChudWxscHRyKTsKKyAgICBtX2lu
c3BlY3RlZFdlYlZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RG
cm9udGVuZCh0aGlzKTsKKyAgICBtX2luc3BlY3RvckNsaWVudC0+dXBkYXRlSGlnaGxpZ2h0KCk7
CisKICAgICA6OkRlc3Ryb3lXaW5kb3cobV9mcm9udGVuZEh3bmQpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmlu
ZGV4IDlmYjM4NmUzMWNkOTRkYTA3YjY4ZjJjNTFmODU2M2IzOTU1ZWM3MjQuLjk1NjhkYTAzM2Zl
NDY0NzdhZmYxM2NiNzM0ODcxYTYzZTAzMDIyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC0xMTMsNyArMTEz
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29u
c3QgV1RGOjpTdHJpbmcmIG5ld1VSTCk7CiAKLSAgICB2b2lkIGRlc3Ryb3lJbnNwZWN0b3JWaWV3
KGJvb2wgbm90aWZ5SW5zcGVjdG9yQ29udHJvbGxlcik7CisgICAgdm9pZCBkZXN0cm95SW5zcGVj
dG9yVmlldygpOwogCiBwcml2YXRlOgogICAgIHZvaWQgY2xvc2VXaW5kb3dXaXRob3V0Tm90aWZp
Y2F0aW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDVhN2YxNzAwYmQx
OWFiY2FhN2Y3ODU2ZGEyYTAzZWI2Y2UyNmYxYjAuLjY2ZTliYzcwZGFjMDQ0ODc2OTQzZmI1ZGQz
OWNkYjJhNzRkMjM2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTgyLDE3
ICs4MiwxOSBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKCkK
ICAgICBkZWxldGUgdGhpczsKIH0KIAotV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250
cm9sbGVyKiBjb250cm9sbGVyKQorSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIFdlYkluc3Bl
Y3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGNv
bnRyb2xsZXIpCiB7Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y3JlYXRlSW5zcGVjdG9yUGFn
ZShjb250cm9sbGVyLT5pc1VuZGVyVGVzdCgpKTsKKyAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5v
cGVuRnJvbnRlbmRDb25uZWN0aW9uKGNvbnRyb2xsZXItPmlzVW5kZXJUZXN0KCkpOwogCiAgICAg
cmV0dXJuIG1fcGFnZS0+aW5zcGVjdG9yKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50
OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKCkKIHsKLSAgICBpZiAobV9wYWdlLT5pbnNwZWN0b3Io
KSkKLSAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y2xvc2VGcm9udGVuZCgpOworICAgIGlm
IChtX3BhZ2UtPmluc3BlY3RvcigpKSB7CisgICAgICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChtX3BhZ2UtPmluc3BlY3Rvcigp
KTsKKyAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y2xvc2VGcm9udGVuZENvbm5lY3Rpb24o
KTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpicmluZ0Zyb250ZW5kVG9G
cm9udCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA5YTQ0MDBiZTVhYmE2Yjk5NTE1
ZjZkODkxZjZlOWE4MTU2NzhhNDE1Li5iODM4MGIxYjg4YjE3NjE0MWZmYzRhODQ1NzM4ODQwZDdi
ZDk4ZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTI3LDcgKzI3LDYgQEAKICNk
ZWZpbmUgV2ViSW5zcGVjdG9yQ2xpZW50X2gKIAogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9y
Q2xpZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGb3J3YXJkaW5nLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlT3ZlcmxheS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAK
QEAgLTUzLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpJbnNwZWN0b3JDbGll
bnQKICAgICB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpIG92ZXJyaWRlOwogCi0gICAgV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlOworICAgIEluc3BlY3Rvcjo6RnJvbnRl
bmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlciopIG92ZXJyaWRlOwogICAgIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpIG92ZXJy
aWRlOwogICAgIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZFJlc2l6ZU1haW5GcmFtZShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCBl
MGFkNzU0NDQ1ODVkOGE5ZTdhMmU3MTYzMTVhMTUxOWY5NWVmZmI5Li41OTY5YWEyMmYzNmRmOTQx
MWQ1ZGExMDU2ZjFkMjZkMzAyMGVkNTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApAQCAtNzAsNyArNzAsNyBAQCBXZWJJbnNw
ZWN0b3I6On5XZWJJbnNwZWN0b3IoKQogfQogCiAvLyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JD
bGllbnQKLXZvaWQgV2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0b3JQYWdlKGJvb2wgdW5kZXJU
ZXN0KQordm9pZCBXZWJJbnNwZWN0b3I6Om9wZW5Gcm9udGVuZENvbm5lY3Rpb24oYm9vbCB1bmRl
clRlc3QpCiB7CiAjaWYgT1MoREFSV0lOKQogICAgIG1hY2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7
CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0b3JQYWdl
KGJvb2wgdW5kZXJUZXN0KQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpDcmVhdGVJ
bnNwZWN0b3JQYWdlKGNvbm5lY3Rpb25DbGllbnRQb3J0LCBjYW5BdHRhY2hXaW5kb3coKSwgdW5k
ZXJUZXN0KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpjbG9z
ZUZyb250ZW5kKCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kQ29ubmVjdGlvbigp
CiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRpZENsb3NlKCksIG1fcGFnZS0+
cGFnZUlEKCkpOwogCkBAIC0yNjIsOCArMjYyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90
ZUZyb250ZW5kQ29ubmVjdGVkKCkKIHsKICAgICBpZiAobV9wYWdlLT5jb3JlUGFnZSgpKSB7CiAg
ICAgICAgIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQgPSB0cnVlOwotICAgICAgICBib29sIGlz
QXV0b21hdGljSW5zcGVjdGlvbiA9IGZhbHNlOwotICAgICAgICBtX3BhZ2UtPmNvcmVQYWdlKCkt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQodGhpcywgaXNBdXRvbWF0aWNJ
bnNwZWN0aW9uKTsKKyAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkuY29ubmVjdEZyb250ZW5kKHRoaXMpOwogICAgIH0KIH0KIApAQCAtMjcyLDcgKzI3MSw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCiAgICAg
bV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCA9IGZhbHNlOwogCiAgICAgaWYgKG1fcGFnZS0+Y29y
ZVBhZ2UoKSkKLSAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVj
dG9yRGVzdHJveWVkKTsKKyAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250
cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKHRoaXMpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAppbmRleCAwNDAw
OGUxNWRjN2EyNmZmYmEzNzdhY2IwNjcxNTYyODY2MTFkZWE5Li4wMDEyODc5Y2ZhOWM2ZDFiNDVk
MjMwODgwY2UyMmQ5OGRkYjhhZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCkBAIC05Nyw5ICs5Nyw5IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBjYW5BdHRhY2hXaW5kb3coKTsKIAogICAgIC8vIENhbGxlZCBmcm9tIFdlYkluc3BlY3Rv
ckNsaWVudAotICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZShib29sIHVuZGVyVGVzdCk7Cisg
ICAgdm9pZCBvcGVuRnJvbnRlbmRDb25uZWN0aW9uKGJvb2wgdW5kZXJUZXN0KTsKKyAgICB2b2lk
IGNsb3NlRnJvbnRlbmRDb25uZWN0aW9uKCk7CiAKLSAgICB2b2lkIGNsb3NlRnJvbnRlbmQoKTsK
ICAgICB2b2lkIGJyaW5nVG9Gcm9udCgpOwogCiAgICAgV2ViUGFnZSogbV9wYWdlOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDliZDE3OTgyNjAy
MWIxZWIzNzY4MzlmZTc2NzRiOGI1Y2I1MTRiNGIuLmVjNzFhOGQ2YzA1NTk0ZjcwMGI3YTE4MjY2
NzAyYWExOTllOTcxYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNS0wOS0wMyAgQnJpYW4gQnVyZyAgPGJidXJn
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250cm9sbGVy
IHNob3VsZCBzdXBwb3J0IG11bHRpcGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAgICBSZXZp
ZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgSW5zcGVjdG9yQ2xpZW50cyBtdXN0
IGV4cGxpY2l0bHkgZGlzY29ubmVjdCB0aGVpciBmcm9udGVuZCBjaGFubmVsKHMpIGZyb20gdGhl
CisgICAgICAgIGluc3BlY3RlZCBwYWdlJ3MgSW5zcGVjdG9yQ29udHJvbGxlci4KKworICAgICAg
ICBUbyBtYWtlIHRoaXMgcG9zc2libGUsIER1bXBSZW5kZXJUcmVlIHNob3VsZCBub3QgZGVzdHJv
eSBub24tcHJpbWFyeSB2aWV3cyB1bnRpbAorICAgICAgICBpdCBoYXMgdHJpZWQgdG8gY2xvc2Ug
YW55IGFiYW5kb25lZCBXZWIgSW5zcGVjdG9yIGluc3RhbmNlcy4gUGVyZm9ybWluZyB0ZWFyZG93
bgorICAgICAgICBpbiB0aGUgcmV2ZXJzZSBvcmRlciBwcmV2ZW50cyBkaXNjb25uZWN0aW9uIG9m
IHRoZSBmcm9udGVuZCBjaGFubmVsIGJlY2F1c2UgdGhhdAorICAgICAgICBwcmVtYXR1cmVseSBk
ZXN0cm95cyB0aGUgaW5zcGVjdG9yIGZyb250ZW5kIGNsaWVudC4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHJ1blRlc3QpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChy
dW5UZXN0KToKKwogMjAxNS0wOS0wMyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KIAogICAgICAgICBbTWFjXSBBZGQgc3VwcG9ydCBmb3IgdGVzdGluZyBzd2lwZXMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCAwYjU2ZWRiOWRi
NjRjZWU5MDQ2M2E2MjQyNGVmZjFjNzBkYmNlNzMzLi44YTAxYzNhMzE5NDQ4ODVhZjY4OGU2YjE1
OTJkMjljN2YzMjEyZjBjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCkBAIC0yMDI4LDYgKzIwMjgsMTMgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBz
dHJpbmcmIGlucHV0TGluZSkKIAogICAgIHdvcmtRdWV1ZS5jbGVhcigpOwogCisgICAgLy8gSWYg
dGhlIHRlc3QgcGFnZSBjb3VsZCBoYXZlIHBvc3NpYmx5IG9wZW5lZCB0aGUgV2ViIEluc3BlY3Rv
ciBmcm9udGVuZCwKKyAgICAvLyB0aGVuIHRyeSB0byBjbG9zZSBpdCBpbiBjYXNlIGl0IHdhcyBh
Y2NpZGVudGFsbHkgbGVmdCBvcGVuLgorICAgIGlmIChzaG91bGRFbmFibGVEZXZlbG9wZXJFeHRy
YXMocGF0aE9yVVJMLmNfc3RyKCkpKSB7CisgICAgICAgIGdUZXN0UnVubmVyLT5jbG9zZVdlYklu
c3BlY3RvcigpOworICAgICAgICBnVGVzdFJ1bm5lci0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxl
ZChmYWxzZSk7CisgICAgfQorCiAgICAgaWYgKGdUZXN0UnVubmVyLT5jbG9zZVJlbWFpbmluZ1dp
bmRvd3NXaGVuQ29tcGxldGUoKSkgewogICAgICAgICBOU0FycmF5KiBhcnJheSA9IFtEdW1wUmVu
ZGVyVHJlZVdpbmRvdyBvcGVuV2luZG93c107CiAKQEAgLTIwNTEsMTIgKzIwNTgsNiBAQCBzdGF0
aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMaW5lKQogICAgICAgICB9CiAgICAg
fQogCi0gICAgLy8gSWYgZGV2ZWxvcGVyIGV4dHJhcyBlbmFibGVkIFdlYiBJbnNwZWN0b3IgbWF5
IGhhdmUgYmVlbiBvcGVuIGJ5IHRoZSB0ZXN0LgotICAgIGlmIChzaG91bGRFbmFibGVEZXZlbG9w
ZXJFeHRyYXMocGF0aE9yVVJMLmNfc3RyKCkpKSB7Ci0gICAgICAgIGdUZXN0UnVubmVyLT5jbG9z
ZVdlYkluc3BlY3RvcigpOwotICAgICAgICBnVGVzdFJ1bm5lci0+c2V0RGV2ZWxvcGVyRXh0cmFz
RW5hYmxlZChmYWxzZSk7Ci0gICAgfQotCiAgICAgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3Rh
dGVCZWZvcmVUZXN0aW5nKCk7CiAKICAgICAvLyBMb2FkaW5nIGFuIGVtcHR5IHJlcXVlc3Qgc3lu
Y2hyb25vdXNseSByZXBsYWNlcyB0aGUgZG9jdW1lbnQgd2l0aCBhIGJsYW5rIG9uZSwgd2hpY2gg
aXMgbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJl
bmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNw
cAppbmRleCBlNTZlYjFmNTM3Yjk0MDNmNTVjNmVkMDNjOWQxN2I4NzkwODA5ZDU2Li5kMDJjZmVj
NTg4MjU0NDU3OTRiZGEwYjk1ZmQwZmVjMDM4OTE3NDAyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTExNDcsNiArMTE0NywxMyBAQCBzdGF0aWMg
dm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMaW5lKQogICAgIC8vIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIgY2xlYXJTYXZlZEV2ZW50cwogICAgIHdvcmtRdWV1ZS5jbGVhcigpOwogCisg
ICAgLy8gSWYgdGhlIHRlc3QgcGFnZSBjb3VsZCBoYXZlIHBvc3NpYmx5IG9wZW5lZCB0aGUgV2Vi
IEluc3BlY3RvciBmcm9udGVuZCwKKyAgICAvLyB0aGVuIHRyeSB0byBjbG9zZSBpdCBpbiBjYXNl
IGl0IHdhcyBhY2NpZGVudGFsbHkgbGVmdCBvcGVuLgorICAgIGlmIChzaG91bGRFbmFibGVEZXZl
bG9wZXJFeHRyYXMocGF0aE9yVVJMLmNfc3RyKCkpKSB7CisgICAgICAgIDo6Z1Rlc3RSdW5uZXIt
PmNsb3NlV2ViSW5zcGVjdG9yKCk7CisgICAgICAgIDo6Z1Rlc3RSdW5uZXItPnNldERldmVsb3Bl
ckV4dHJhc0VuYWJsZWQoZmFsc2UpOworICAgIH0KKwogICAgIGlmICg6OmdUZXN0UnVubmVyLT5j
bG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUoKSkgewogICAgICAgICBWZWN0b3I8SFdO
RD4gd2luZG93cyA9IG9wZW5XaW5kb3dzKCk7CiAgICAgICAgIHVuc2lnbmVkIHNpemUgPSB3aW5k
b3dzLnNpemUoKTsKQEAgLTExNjEsMTEgKzExNjgsNiBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNv
bnN0IHN0cmluZyYgaW5wdXRMaW5lKQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHNob3Vs
ZEVuYWJsZURldmVsb3BlckV4dHJhcyhwYXRoT3JVUkwuY19zdHIoKSkpIHsKLSAgICAgICAgOjpn
VGVzdFJ1bm5lci0+Y2xvc2VXZWJJbnNwZWN0b3IoKTsKLSAgICAgICAgOjpnVGVzdFJ1bm5lci0+
c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChmYWxzZSk7Ci0gICAgfQotCiAgICAgcmVzZXRXZWJW
aWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCk7CiAKICAgICAvLyBMb2FkaW5nIGFu
IGVtcHR5IHJlcXVlc3Qgc3luY2hyb25vdXNseSByZXBsYWNlcyB0aGUgZG9jdW1lbnQgd2l0aCBh
IGJsYW5rIG9uZSwgd2hpY2ggaXMgbmVjZXNzYXJ5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260534</attachid>
            <date>2015-09-03 16:12:10 -0700</date>
            <delta_ts>2015-09-03 17:13:20 -0700</delta_ts>
            <desc>Proposed Fix (for Win EWS)</desc>
            <filename>bug-148538-20150903161208.patch</filename>
            <type>text/plain</type>
            <size>83685</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5Mjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NTdjOGY4N2IzYTU4NWQwYTlhODU3NDI0NWRlYWRhOGFmYmIzZjEwLi43NjI4YzU2NDNjOGM4YzNl
ZWNkNmNkNGM1OGZjNDJiM2YwOWIwNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw4NCBAQAogMjAxNS0wOS0wMyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250cm9sbGVyIHNob3VsZCBzdXBwb3J0
IG11bHRpcGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGgg
UGVjb3Jhcm8uCisKKyAgICAgICAgSW5zdGVhZCBvZiBhIHNpbmdsZXRvbiwgaXQgc2hvdWxkIGJl
IHBvc3NpYmxlIHRvIGhhdmUgbXVsdGlwbGUgY2hhbm5lbHMgb3BlbgorICAgICAgICBhdCB0aGUg
c2FtZSB0aW1lIGFuZCB0byBpbmRpdmlkdWFsbHkgY2xvc2UgY2hhbm5lbHMgYXMgZnJvbnRlbmRz
IGNvbWUgYW5kIGdvLgorCisgICAgICAgIFRoZSBGcm9udGVuZFJvdXRlciBjbGFzcyBrZWVwcyBh
IGxpc3Qgb2Ygb3BlbiBGcm9udGVuZENoYW5uZWxzIGFuZCBzZW5kcyBtZXNzYWdlcworICAgICAg
ICB0byB0aGUgYXBwcm9wcmlhdGUgZnJvbnRlbmRzIGJhc2VkIG9uIHdoZXRoZXIgdGhlIG1lc3Nh
Z2UgaXMgYSByZXNwb25zZSBvciBldmVudC4KKyAgICAgICAgRWFjaCBJbnNwZWN0b3JDb250cm9s
bGVyIG93bnMgYSBzaW5nbGUgRnJvbnRlbmRSb3V0ZXIgYW5kIEJhY2tlbmREaXNwYXRjaGVyIGlu
c3RhbmNlLgorICAgICAgICBJbnNwZWN0b3IgYmFja2VuZCBjb2RlIHRoYXQgc2VuZHMgbWVzc2Fn
ZXMgdG8gdGhlIGZyb250ZW5kIHNob3VsZCBzd2l0Y2ggb3ZlciB0bworICAgICAgICB1c2luZyB0
aGUgcm91dGVyIHJhdGhlciB0aGFuIGRpcmVjdGx5IHVzaW5nIGEgRnJvbnRlbmRDaGFubmVsLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNwcDogTW92ZSBjb25zdHJ1Y3RvcnMvZGVzdHJ1Y3RvcnMgb3V0IG9m
IHRoZSBoZWFkZXIKKyAgICAgICAgdG8gYXZvaWQgaW5jbHVkaW5nIEluc3BlY3RvckZyb250ZW5k
Um91dGVyIGV2ZXJ5d2hlcmUuIFVzZSB0aGUgcm91dGVyIGluc3RlYWQgb2YgYQorICAgICAgICBz
cGVjaWZpYyBmcm9udGVuZCBjaGFubmVsLiBSZW1vdmUgZ3VhcmRzIHRoYXQgYXJlIG5vIGxvbmdl
ciBuZWNlc3Nhcnkgc2luY2UgdGhlIHJvdXRlcgorICAgICAgICBpcyBndWFyYW50ZWVkIHRvIG91
dGxpdmUgdGhlIGJhY2tlbmQgZGlzcGF0Y2hlci4KKworICAgICAgICAoSW5zcGVjdG9yOjpTdXBw
bGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcjo6U3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIp
OgorICAgICAgICAoSW5zcGVjdG9yOjpTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcjo6flN1
cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OkJhY2tlbmREaXNwYXRjaGVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyOjppc0FjdGl2ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
OjpyZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4pOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlcjo6c2VuZFJlc3BvbnNlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OnNlbmRQZW5kaW5nRXJyb3JzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDoKKyAgICAgICAgKEluc3BlY3Rvcjo6U3VwcGxlbWVu
dGFsQmFja2VuZERpc3BhdGNoZXI6OlN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6U3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXI6
On5TdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcik6IERlbGV0ZWQuCisgICAgICAgIChJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpjbGVhckZyb250ZW5kKTogRGVsZXRlZCwgbm8gbG9u
Z2VyIG5lY2Vzc2FyeS4KKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6Omlz
QWN0aXZlKTogTW92ZWQgdG8gaW1wbGVtZW50YXRpb24gZmlsZS4KKyAgICAgICAgKEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXI6OkJhY2tlbmREaXNwYXRjaGVyKTogTW92ZWQgdG8gaW1wbGVt
ZW50YXRpb24gZmlsZS4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI6OmNyZWF0
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpjb25uZWN0RnJvbnRlbmQp
OgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6ZGlzY29ubmVjdEZyb250ZW5k
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI6OmRpc2Nvbm5lY3RBbGxGcm9u
dGVuZHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6bGVha0NoYW5uZWwp
OgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6aGFzTG9jYWxGcm9udGVuZCk6
CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpoYXNSZW1vdGVGcm9udGVuZCk6
CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpzZW5kRXZlbnQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6c2VuZFJlc3BvbnNlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaDogQWRkZWQuCisgICAgICAgICogaW5z
cGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHA6IFJlbW92ZSBndWFy
ZHMgdGhhdCBhcmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KKyAgICAgICAgVGhlIGZyb250ZW5kIHJv
dXRlciBhbmQgYmFja2VuZCBkaXNwYXRjaGVyIG5vdyBoYXZlIHRoZSBzYW1lIGxpZmV0aW1lIGFz
IHRoZSBjb250cm9sbGVyLgorICAgICAgICBFeHBsaWNpdGx5IGNvbm5lY3QvZGlzY29ubmVjdCB0
aGUgZnJvbnRlbmQgY2hhbm5lbC4KKworICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcik6
CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
Z2xvYmFsT2JqZWN0RGVzdHJveWVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoSW5zcGVj
dG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVu
ZCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlzY29ubmVjdEFsbEZyb250ZW5kcyk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjph
cHBlbmRFeHRyYUFnZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyOjpwYXVzZSk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0pT
R2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYXVnbWVudGFibGUvQXVn
bWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgIChJbnNwZWN0b3I6OkF1Z21l
bnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdGVkKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y2xvc2Up
OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2FsdGVy
bmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5OgorICAgICAgICAoQ3BwQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlz
cGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKE9iakNGcm9udGVuZERpc3BhdGNo
ZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfZXZlbnQpOiBVc2UgdGhlIHJvdXRl
ci4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHA6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzY29ubmVjdCk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaDoKKworMjAxNS0wOS0wMyAgQnJp
YW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBzaG91
bGQgY3Jhc2ggb24gcHVycG9zZSBpZiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBpcyB1bnBhcnNl
YWJsZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
NzUwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA5MjYzMzVlMTkwZDc5ZWZlMmFiMjQ5OThmYTY3NTM3NWUxOTE5
YTUxLi45MzcyMDI2Mzc2ZThjMmJiZjFiNTMyNjg0MTlkNmFlMTk5MDNlNDRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDggQEAKKzIwMTUtMDktMDMgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yQ29udHJvbGxlciBzaG91bGQg
c3VwcG9ydCBtdWx0aXBsZSBmcm9udGVuZCBjaGFubmVscworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Sm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hh
bmdlIGZyb20gdGhpcyBwYXRjaC4gVGVhcmRvd24gc2NlbmFyaW9zIGFyZQorICAgICAgICBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIHByb3RvY29sIGFuZCBpbnNwZWN0b3IgdGVzdHMgcnVubmluZyB1bmRl
ciBEUlQgYW5kIFdLVFIuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50
Lmg6IFN0b3AgdXNpbmcgZm9yd2FyZGVkIHR5cGVzLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjpoYXNMb2NhbEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6Omhhc1JlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEFsbEZyb250ZW5kcyk6IEFkZGVk
LiBEaXNjb25uZWN0cyBhbGwKKyAgICAgICAgZnJvbnRlbmRzIGFuZCBzaWduYWxzIERpc2Nvbm5l
Y3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZC4KKworICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmg6IEFkZCBkZWZhdWx0IHZhbHVlIGZvciBpc0F1dG9tYXRpY0luc3Bl
Y3Rpb24uCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcDogVXNlIGEgcm91dGVyIHdpdGggYSBz
aW5nbGV0b24gY2hhbm5lbAorICAgICAgICB0aGF0IGZvcndhcmRzIG1lc3NhZ2VzIG92ZXIgdG8g
dGhlIG1haW4gcGFnZS4KKworICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZy
b21Gcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VEZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VEZWJ1
Z2dhYmxlLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOiBDbGVhciB0aGUgZnJv
bnRlbmQgY2xpZW50IGJlZm9yZSBkaXNjb25uZWN0aW5nIGZyb250ZW5kIGNoYW5uZWwuCisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKToK
KwogMjAxNS0wOS0wMyAgQWRlbmlsc29uIENhdmFsY2FudGkgIDxjYXZhbGNhbnRpaUBnbWFpbC5j
b20+CiAKICAgICAgICAgSW1wcm92ZSBhY2Nlc3Mgc3BlY2lmaWVyIHVzZSBpbiBSZW5kZXJPYmpl
Y3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwppbmRleCAwNDY5NGEwMjlkMzU3MTNmOWFiZDAzYzNmNjdiMzlhYThh
MzQzZmM2Li45MWRlZTk5MjNjNWU2ODMyYzNhZDIzYTc0YmFmMmMzYzZiODEyNGY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTUtMDktMDMgIEJyaWFuIEJ1cmcgIDxiYnVy
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yQ29udHJvbGxl
ciBzaG91bGQgc3VwcG9ydCBtdWx0aXBsZSBmcm9udGVuZCBjaGFubmVscworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTM4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgIFJlbW92ZSB0aGUgbm90aWZ5SW5z
cGVjdG9yQ29udHJvbGxlciBmbGFnIGZyb20gY2xvc2VXaW5kb3cuIFNpbmNlIEluc3BlY3RvckNs
aWVudHMKKyAgICAgICAgbXVzdCBub3cgbWFudWFsbHkgZGlzY29ubmVjdCB0aGVpciBGcm9udGVu
ZENoYW5uZWwocyksIHdlIHNob3VsZCBhbHdheXMKKyAgICAgICAgcGVyZm9ybSB0aGUgdGVhcmRv
d24gdGhhdCB3YXMgZ3VhcmRlZCBieSB0aGlzIGZsYWcuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmJyaW5nRnJv
bnRlbmRUb0Zyb250KTogQWRkIGEgbWlzc2luZyBhc3NlcnRpb24uCisgICAgICAgIChXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6Y2xvc2VXaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ6OmRpc2Nvbm5lY3RGcm9tQmFja2VuZCk6CisgICAgICAgICgtW1dlYklu
c3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgd2luZG93U2hvdWxkQ2xvc2U6XSk6CisgICAgICAgICgt
W1dlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgZGVzdHJveUluc3BlY3RvclZpZXddKTogQWx3
YXlzIGNsZWFyIHRoZSBmcm9udGVuZCBjbGllbnQuCisgICAgICAgICgtW1dlYkluc3BlY3Rvcldp
bmRvd0NvbnRyb2xsZXIgZGVzdHJveUluc3BlY3RvclZpZXc6XSk6IFJlbmFtZWQgdG8gYWJvdmUu
CisKIDIwMTUtMDgtMjYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IFtDb250ZW50IEZpbHRlcmluZ10gRGV0ZXJtaW5lIG5hdmlnYXRpb24gYW5kIGNvbnRlbnQgcG9s
aWN5IGJlZm9yZSBjb250aW51aW5nIHRvIGZpbHRlciBhIGxvYWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRl
eCA0OWExMjQ4NDAxYzVhODVkMzA3OTY2MzYxZWRhNDUxYzk0OTRhMThkLi4zNjZkNjFkNDEzOTg2
YTZiZmQ4Yzk5MTAyZjRmODExMDQ3MDBjNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTUtMDktMDMgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yQ29udHJvbGxlciBzaG91bGQgc3VwcG9ydCBtdWx0
aXBsZSBmcm9udGVuZCBjaGFubmVscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ4NTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29y
YXJvLgorCisgICAgICAgIFJlbW92ZSB0aGUgbm90aWZ5SW5zcGVjdG9yQ29udHJvbGxlciBmbGFn
IGZyb20gY2xvc2VXaW5kb3cuIFNpbmNlIEluc3BlY3RvckNsaWVudHMKKyAgICAgICAgbXVzdCBu
b3cgbWFudWFsbHkgZGlzY29ubmVjdCB0aGVpciBGcm9udGVuZENoYW5uZWwocyksIHdlIHNob3Vs
ZCBhbHdheXMKKyAgICAgICAgcGVyZm9ybSB0aGUgdGVhcmRvd24gdGhhdCB3YXMgZ3VhcmRlZCBi
eSB0aGlzIGZsYWcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUluc3BlY3RvckZyb250
ZW5kKToKKyAgICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojp+V2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNs
b3NlV2luZG93KToKKyAgICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkZXN0cm95
SW5zcGVjdG9yVmlldyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lmg6CisKIDIwMTUtMDktMDIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgog
CiAgICAgICAgIFNjcm9sbGJhclRoZW1lcyBzaG91bGQgYmUgcmV0dXJuZWQgYnkgcmVmZXJlbmNl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGQ1NGVkYWE0MDVhMjA5NWMzMzMzZWFmM2RlNDgxY2JkOTY3MGI2ZTgu
LjJmNGE1NGM4M2QyZjY1NTgxNTMwZWQ4N2M2OTc0NmNiODUzOGVlYjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAxNS0wOS0wMyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250cm9sbGVyIHNob3VsZCBzdXBw
b3J0IG11bHRpcGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAgICBSZXZpZXdlZCBieSBKb3Nl
cGggUGVjb3Jhcm8uCisKKyAgICAgICAgRXhwbGljaXRseSBkaXNjb25uZWN0IHRoZSBmcm9udGVu
ZCBjaGFubmVsIHdoZW4gY2xvc2luZyB0aGUgZnJvbnRlbmQuCisKKyAgICAgICAgUmVuYW1lIGNy
ZWF0ZUluc3BlY3RvclBhZ2UvY2xvc2VGcm9udGVuZCB0byB0aGUgc3ltbWV0cmljIGFuZCB1bmFt
YmlndW91cworICAgICAgICB7b3BlbixjbG9zZX1Gcm9udGVuZENvbm5lY3Rpb24gaW4gdGhlIFdl
Ykluc3BlY3RvciBjbGFzcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yQ2xp
ZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6IFN0b3AgdXNpbmcgYSBmb3J3YXJk
ZWQgdHlwZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpvcGVuRnJvbnRlbmRDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kQ29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kRGlzY29ubmVj
dGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0b3JQYWdl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5k
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmg6
CisKIDIwMTUtMDktMDMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW01hY10gQWRkIHN1cHBvcnQgZm9yIHRlc3Rpbmcgc3dpcGVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMmQzMGJiOTE3NTU3MjQ0MzQ2MzRkYTE3ZjMyZDk2
YTg2ZTBkY2U3NC4uMjM5MTlmMDEzMWM3NTJjZjgzY2ViMTg0Yzg4Yjg2N2RlN2M0YWU2NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMzIzLDYgKzMyMyw3IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdl
ci5jcHAKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCiAgICAgaW5zcGVj
dG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCisgICAgaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kUm91dGVyLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAogICAgIGluc3BlY3Rvci9K
U0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvagppbmRleCBhZmYxMmViM2E0OWUyNGYwYzlmMDFhZDJjM2IxMWQ4MDc4NWZmNGJj
Li5iODE1NjBjMjEyYTRkZDJkN2ZlMDVjM2MyOWM0ZDliM2ZhMzAxZmEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTU5NSw2ICs1OTUsNyBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluamVjdGVkU2NyaXB0TW9kdWxlLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxp
bnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEpTSW5qZWN0ZWRTY3JpcHRIb3N0
UHJvdG90eXBlLmNwcCIgLz4KQEAgLTEzODQsNiArMTM4NSw3IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JFbnZpcm9ubWVudC5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXElu
c3BlY3RvckZyb250ZW5kUm91dGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxp
bnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxpbnNwZWN0b3JcSlNJbmplY3RlZFNjcmlwdEhvc3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oIiAvPgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYzViNmE0YjI2ZGM0YTQ4YzRkZTU2MzFj
ZWE2MmIyYmEyMjQ4N2ZlLi5mM2JhODZkZjYwZWYwODMzYTFjMzNjOWI0ZWVjOTlmZmMwODI3OTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE5NSw2ICsxMTk1LDggQEAKIAkJ
OTlFNDVBMjYxOEExQjI1OTAwMjZEODhGIC8qIEVuY29kZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNDVBMjExOEExQjI1OTAwMjZEODhG
IC8qIEVuY29kZWRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTk5RTQ1QTI3MThBMUIyNTkwMDI2RDg4RiAvKiBJbnB1dEN1cnNvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNDVBMjIxOEEx
QjI1OTAwMjZEODhGIC8qIElucHV0Q3Vyc29yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTlFNDVBMjgxOEExQjI1OTAwMjZEODhGIC8qIE5vbmRl
dGVybWluaXN0aWNJbnB1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTlFNDVBMjMxOEExQjI1OTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJbnB1
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5
RjFBNkZFMUI4RTZEOTQwMDQ2M0IyNiAvKiBJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUYxQTZGQzFCOEU2
RDk0MDA0NjNCMjYgLyogSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwICovOyB9OworCQk5OUYx
QTcwMTFCOThGQkVDMDA0NjNCMjYgLyogSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RjFBNzAwMUI5OEZCRUMw
MDQ2M0IyNiAvKiBJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlFNzI5NDA3MTkwRjAxQTUwMDFBOTFCNSAv
KiBJbml0aWFsaXplVGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxNzg2MzZDMEQ5QkVFQzMwMEQ3NEU3NSAvKiBJbml0aWFsaXplVGhy
ZWFkaW5nLmNwcCAqLzsgfTsKIAkJOUU3Mjk0MDgxOTBGMDIxRTAwMUE5MUI1IC8qIEluaXRpYWxp
emVMTFZNUE9TSVguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZDRUZBQzUxODA1RTc1NTAwNDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNUE9TSVguY3Bw
ICovOyB9OwogCQk5RTcyOTQwQjE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUU3Mjk0MEExOTBGMDUx
NDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGguaCAqLzsgfTsKQEAgLTMwNjEsNiArMzA2Myw4IEBACiAJ
CTk5RTQ1QTIxMThBMUIyNTkwMDI2RDg4RiAvKiBFbmNvZGVkVmFsdWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRW5jb2RlZFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk5RTQ1QTIyMThBMUIyNTkwMDI2RDg4RiAvKiBJbnB1dEN1cnNvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnB1dEN1cnNvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5OUU0NUEyMzE4QTFCMjU5MDAyNkQ4OEYgLyogTm9uZGV0ZXJtaW5p
c3RpY0lucHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbmRldGVybWlu
aXN0aWNJbnB1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUYxQTZGQzFCOEU2
RDk0MDA0NjNCMjYgLyogSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUYxQTcwMDFCOThGQkVDMDA0NjNCMjYgLyogSW5z
cGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OUI0OTU0RTgxQTY2NDBEQjAwMjgxNUE2IC8qIFBhcnNlckZ1bmN0aW9uSW5mby5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQYXJzZXJGdW5jdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOUU3Mjk0MDkxOTBGMDMwNjAwMUE5MUI1IC8qIEJ1bmRsZVBhdGgubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBCdW5kbGVQYXRoLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5RTcyOTQwQTE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdW5kbGVQYXRoLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NzA3LDYgKzU3MTEsNyBAQAogCQlBNUJBMTVERjE4MjM0
MDkyMDBBODJFNjkgLyogaW5zcGVjdG9yICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk5OUYxQTcwMDFCOThGQkVDMDA0NjNCMjYgLyogSW5zcGVjdG9yRnJv
bnRlbmRSb3V0ZXIuaCAqLywKIAkJCQlBNTEzRTVDQzE4NUZCOTkyMDA3RTk1QUQgLyogYWdlbnRz
ICovLAogCQkJCUE1RUE3MEUzMTlGNUIwRTIwMDk4RjVFQyAvKiBhdWdtZW50YWJsZSAqLywKIAkJ
CQlBNTMyNDM4RDE4NTY5NkNBMDAyRUQ2OTIgLyogcHJvdG9jb2wgKi8sCkBAIC01NzM4LDYgKzU3
NDMsNyBAQAogCQkJCUE1OTNDRjdCMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5oICovLAogCQkJCUE1RDBBMUJBMTg2MjMwMUIwMEM3QjQ5NiAvKiBJbnNwZWN0
b3JFbnZpcm9ubWVudC5oICovLAogCQkJCUE1OTQ1NTk0MTgyNDc5RUIwMENDMzg0MyAvKiBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLywKKwkJCQk5OUYxQTZGQzFCOEU2RDk0MDA0NjNCMjYg
LyogSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwICovLAogCQkJCUE1NUQ5M0FCMTg1MTRGNzkw
MDQwMERFRCAvKiBJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmggKi8sCiAJCQkJQTU5M0NGODAxODQw
Mzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi8sCiAJCQkJQTU5M0NGODExODQw
Mzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oICovLApAQCAtNTkwMSw2ICs1OTA3LDcg
QEAKIAkJCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGODk4RjMyMUIyNzY4OUYwMDgzQTMzQyAvKiBERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IyQzQxMDE1NkJE
RTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlGMUE3MDEx
Qjk4RkJFQzAwNDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3OTY0NjU2QTFCOTUyRkYwMDAzMDU5RUUgLyogR2V0UHV0SW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzk3RTA3QUExQjhGQ0ZCOTAwODQwMEJBIC8qIEpTR2xvYmFsTGV4aWNhbEVu
dmlyb25tZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyODFBQTkwOTU2MDBEMzNCMzMg
LyogU2NvcGVkQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKQEAgLTc5MzMsNiArNzk0MCw3IEBA
CiAJCQkJQzIyNTQ5NDMxNUY3REJBQTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzMzA0MDJDMEU2QTc2NDAwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTNFRjg4NzQxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTlGMUE2RkUxQjhFNkQ5NDAw
NDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGOEYyQjlFMTczMDZDOEQwMDdEQkRBNSAvKiBTb3VyY2VDb2RlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGNDkzQUZBMTZEMENBRDMwMDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFMzNFOEQxQzFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRG
dW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKaW5k
ZXggNGQ0NWRhOTllMWJmNjY0NzUzN2Q4NGMxNDEzNTIyOTM5YjA5ODA4OS4uMDkzNmI0MTExYzI0
MTMzNGQ3NDljMjI0MWQzYjZjMTQ1MTg2OTA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5j
cHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5oIgogCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIK
ICNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgpAQCAtMzUsNiArMzYsMTUgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKK1N1
cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyOjpTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hl
cihCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIpCisgICAgOiBtX2JhY2tlbmRE
aXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKQoreworfQorCitTdXBwbGVtZW50YWxCYWNrZW5k
RGlzcGF0Y2hlcjo6flN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKCkKK3sKK30KKwogQmFj
a2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKFJlZjxCYWNrZW5kRGlz
cGF0Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwgbG9uZyByZXF1ZXN0SWQpCiAgICAgOiBtX2Jh
Y2tlbmREaXNwYXRjaGVyKFdURjo6bW92ZShiYWNrZW5kRGlzcGF0Y2hlcikpCiAgICAgLCBtX3Jl
cXVlc3RJZChyZXF1ZXN0SWQpCkBAIC02OSwxNSArNzksMjggQEAgdm9pZCBCYWNrZW5kRGlzcGF0
Y2hlcjo6Q2FsbGJhY2tCYXNlOjpzZW5kU3VjY2VzcyhSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYm
IHBhcnQKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UobV9yZXF1ZXN0SWQs
IFdURjo6bW92ZShwYXJ0aWFsTWVzc2FnZSkpOwogfQogCi1SZWY8QmFja2VuZERpc3BhdGNoZXI+
IEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwpCitCYWNrZW5kRGlzcGF0Y2hlcjo6QmFja2VuZERpc3BhdGNoZXIoUmVmPEZyb250ZW5kUm91
dGVyPiYmIHJvdXRlcikKKyAgICA6IG1fZnJvbnRlbmRSb3V0ZXIoV1RGOjptb3ZlKHJvdXRlcikp
Cit7Cit9CisKK1JlZjxCYWNrZW5kRGlzcGF0Y2hlcj4gQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShSZWY8RnJvbnRlbmRSb3V0ZXI+JiYgcm91dGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEJhY2tlbmREaXNwYXRjaGVyKGZyb250ZW5kQ2hhbm5lbCkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEJhY2tlbmREaXNwYXRjaGVyKFdURjo6bW92ZShyb3V0ZXIpKSk7Cit9CisKK2Jv
b2wgQmFja2VuZERpc3BhdGNoZXI6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9m
cm9udGVuZFJvdXRlci0+aGFzRnJvbnRlbmRzKCk7CiB9CiAKIHZvaWQgQmFja2VuZERpc3BhdGNo
ZXI6OnJlZ2lzdGVyRGlzcGF0Y2hlckZvckRvbWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbiwgU3Vw
cGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIqIGRpc3BhdGNoZXIpCiB7Ci0gICAgYXV0byByZXN1
bHQgPSBtX2Rpc3BhdGNoZXJzLmFkZChkb21haW4sIGRpc3BhdGNoZXIpOwotICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgQVNTRVJUX0FSRyhkaXNwYXRj
aGVyLCBkaXNwYXRjaGVyKTsKKworICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTQ4NDkyPiBBZ2VudHMgc2hvdWxkIG9ubHkgcmVnaXN0ZXIgd2l0aCB0aGUgYmFja2VuZCBvbmNl
LAorICAgIC8vIGFuZCB3ZSBzaG91bGQgcmUtYWRkIHRoZSBhc3NlcnRpb24gdGhhdCBvbmx5IG9u
ZSBkaXNwYXRjaGVyIGlzIHJlZ2lzdGVyZWQgcGVyIGRvbWFpbi4KKyAgICBtX2Rpc3BhdGNoZXJz
LnNldChkb21haW4sIGRpc3BhdGNoZXIpOwogfQogCiB2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpk
aXNwYXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0xNjUsOSArMTg4LDYgQEAgdm9pZCBC
YWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiB2b2lk
IEJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UobG9uZyByZXF1ZXN0SWQsIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+JiYgcmVzdWx0KQogewotICAgIGlmICghbV9mcm9udGVuZENoYW5uZWwp
Ci0gICAgICAgIHJldHVybjsKLQogICAgIEFTU0VSVCghbV9wcm90b2NvbEVycm9ycy5zaXplKCkp
OwogCiAgICAgLy8gVGhlIEpTT04tUlBDIDIuMCBzcGVjaWZpY2F0aW9uIHJlcXVpcmVzIHRoYXQg
dGhlICJlcnJvciIgbWVtYmVyIGhhdmUgdGhlIHZhbHVlICdudWxsJwpAQCAtMTc1LDcgKzE5NSw3
IEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnNlbmRSZXNwb25zZShsb25nIHJlcXVlc3RJZCwg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiByCiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVz
cG9uc2VNZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICByZXNwb25zZU1l
c3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInJlc3VsdCIpLCByZXN1bHQpOwogICAgIHJl
c3BvbnNlTWVzc2FnZS0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImlkIiksIHJlcXVlc3RJZCk7
Ci0gICAgbV9mcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChyZXNwb25zZU1l
c3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKKyAgICBtX2Zyb250ZW5kUm91dGVyLT5zZW5kUmVzcG9u
c2UocmVzcG9uc2VNZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiB9CiAKIHZvaWQgQmFja2VuZERp
c3BhdGNoZXI6OnNlbmRQZW5kaW5nRXJyb3JzKCkKQEAgLTE5MCw5ICsyMTAsNiBAQCB2b2lkIEJh
Y2tlbmREaXNwYXRjaGVyOjpzZW5kUGVuZGluZ0Vycm9ycygpCiAgICAgICAgIC0zMjAwMCwgLy8g
U2VydmVyRXJyb3IKICAgICB9OwogCi0gICAgaWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAogICAgIC8vIFRvIGNvbnN0cnVjdCB0aGUgZXJyb3Igb2JqZWN0LCBv
bmx5IHVzZSB0aGUgbGFzdCBlcnJvcidzIGNvZGUgYW5kIG1lc3NhZ2UuCiAgICAgLy8gUGVyIEpT
T04tUlBDIDIuMCwgU2VjdGlvbiA1LjEsIHRoZSAnZGF0YScgbWVtYmVyIG1heSBjb250YWluIG5l
c3RlZCBlcnJvcnMsCiAgICAgLy8gYnV0IG9ubHkgb25lIHRvcC1sZXZlbCBFcnJvciBvYmplY3Qg
c2hvdWxkIGJlIHNlbnQgcGVyIHJlcXVlc3QuCkBAIC0yMjcsNyArMjQ0LDcgQEAgdm9pZCBCYWNr
ZW5kRGlzcGF0Y2hlcjo6c2VuZFBlbmRpbmdFcnJvcnMoKQogICAgICAgICBtZXNzYWdlLT5zZXRW
YWx1ZShBU0NJSUxpdGVyYWwoImlkIiksIEluc3BlY3RvclZhbHVlOjpudWxsKCkpOwogICAgIH0K
IAotICAgIG1fZnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZS0+
dG9KU09OU3RyaW5nKCkpOworICAgIG1fZnJvbnRlbmRSb3V0ZXItPnNlbmRSZXNwb25zZShtZXNz
YWdlLT50b0pTT05TdHJpbmcoKSk7CiAKICAgICBtX3Byb3RvY29sRXJyb3JzLmNsZWFyKCk7CiAg
ICAgbV9jdXJyZW50UmVxdWVzdElkID0gTnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaApp
bmRleCBmMjI0ODJkOWIwZjk1MTI4OTczOTUxY2Y4MzIzMjdmMGFiMzgxNTAzLi5jNjFjZjFkMGNk
M2Y4NTQ3ZTRkNTYwODI4MGQwMGFjODc3ZTk1YzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
CkBAIC0zNSwxNSArMzUsMTQgQEAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBCYWNr
ZW5kRGlzcGF0Y2hlcjsKLWNsYXNzIEZyb250ZW5kQ2hhbm5lbDsKK2NsYXNzIEZyb250ZW5kUm91
dGVyOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogY2xhc3MgU3VwcGxlbWVudGFs
QmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTdXBwbGVtZW50YWxCYWNrZW5k
RGlzcGF0Y2hlcj4gewogcHVibGljOgotICAgIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVy
KEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlcikKLSAgICAgICAgOiBtX2JhY2tl
bmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKSB7IH0KLSAgICB2aXJ0dWFsIH5TdXBwbGVt
ZW50YWxCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQorICAgIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNw
YXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJik7CisgICAgdmlydHVhbCB+U3VwcGxlbWVudGFsQmFj
a2VuZERpc3BhdGNoZXIoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyByZXF1ZXN0
SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2Up
ID0gMDsKIHByb3RlY3RlZDoKICAgICBSZWY8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERp
c3BhdGNoZXI7CkBAIC01MSw3ICs1MCw3IEBAIHByb3RlY3RlZDoKIAogY2xhc3MgQmFja2VuZERp
c3BhdGNoZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxCYWNrZW5kRGlzcGF0Y2hlcj4gewogcHVibGlj
OgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QmFja2VuZERpc3BhdGNoZXI+IGNy
ZWF0ZShGcm9udGVuZENoYW5uZWwqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PEJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoUmVmPEZyb250ZW5kUm91dGVyPiYmKTsKIAogICAg
IGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIENhbGxiYWNrQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVk
PENhbGxiYWNrQmFzZT4gewogICAgIHB1YmxpYzoKQEAgLTY5LDggKzY4LDcgQEAgcHVibGljOgog
ICAgICAgICBib29sIG1fYWxyZWFkeVNlbnQgeyBmYWxzZSB9OwogICAgIH07CiAKLSAgICB2b2lk
IGNsZWFyRnJvbnRlbmQoKSB7IG1fZnJvbnRlbmRDaGFubmVsID0gbnVsbHB0cjsgfQotICAgIGJv
b2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiAhIW1fZnJvbnRlbmRDaGFubmVsOyB9CisgICAg
Ym9vbCBpc0FjdGl2ZSgpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNQcm90b2NvbEVycm9ycygpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvdG9jb2xFcnJvcnMuc2l6ZSgpID4gMDsgfQogCkBAIC0xMDQsMTIg
KzEwMiw5IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGdldEFycmF5KElu
c3BlY3Rvck9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCk7CiAK
IHByaXZhdGU6Ci0gICAgQmFja2VuZERpc3BhdGNoZXIoRnJvbnRlbmRDaGFubmVsKiBjaGFubmVs
KQotICAgICAgICA6IG1fZnJvbnRlbmRDaGFubmVsKGNoYW5uZWwpCi0gICAgewotICAgIH0KKyAg
ICBCYWNrZW5kRGlzcGF0Y2hlcihSZWY8RnJvbnRlbmRSb3V0ZXI+JiYpOwogCi0gICAgRnJvbnRl
bmRDaGFubmVsKiBtX2Zyb250ZW5kQ2hhbm5lbDsKKyAgICBSZWY8RnJvbnRlbmRSb3V0ZXI+IG1f
ZnJvbnRlbmRSb3V0ZXI7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN1cHBsZW1lbnRhbEJhY2tlbmRE
aXNwYXRjaGVyKj4gbV9kaXNwYXRjaGVyczsKIAogICAgIC8vIFByb3RvY29sIGVycm9ycyByZXBv
cnRlZCBmb3IgdGhlIHRvcC1sZXZlbCByZXF1ZXN0IGJlaW5nIHByb2Nlc3NlZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZFJvdXRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg3YTY3OGE2NWVmYmViNjBmNWZkZDhiM2MxMjI5NWZk
ZDZlZDMxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kUm91
dGVyLmgiCisKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworUmVmPEZyb250
ZW5kUm91dGVyPiBGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGcm9udGVuZFJvdXRlcik7Cit9CisKK3ZvaWQgRnJvbnRlbmRSb3V0ZXI6OmNvbm5l
Y3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUX0FS
Ryhjb25uZWN0aW9uLCBjb25uZWN0aW9uKTsKKworICAgIGlmIChtX2Nvbm5lY3Rpb25zLmNvbnRh
aW5zKGNvbm5lY3Rpb24pKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9jb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbik7
Cit9CisKK3ZvaWQgRnJvbnRlbmRSb3V0ZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChGcm9udGVuZENo
YW5uZWwqIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUX0FSRyhjb25uZWN0aW9uLCBjb25uZWN0
aW9uKTsKKworICAgIGlmICghbV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uKSkgewor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1fY29ubmVjdGlvbnMucmVtb3ZlRmlyc3QoY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgRnJv
bnRlbmRSb3V0ZXI6OmRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKQoreworICAgIG1fY29ubmVjdGlv
bnMuY2xlYXIoKTsKK30KKworLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDg0OTI+
IHJlbW92ZSB0aGlzIG1ldGhvZCBvbmNlIGFnZW50cyBtb3ZlIHRvIHVzaW5nIEZyb250ZW5kUm91
dGVyIGRpcmVjdGx5LgorRnJvbnRlbmRDaGFubmVsKiBGcm9udGVuZFJvdXRlcjo6bGVha0NoYW5u
ZWwoKSBjb25zdAoreworICAgIGlmIChtX2Nvbm5lY3Rpb25zLnNpemUoKSkKKyAgICAgICAgcmV0
dXJuIG1fY29ubmVjdGlvbnMuYXQoMCk7CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9v
bCBGcm9udGVuZFJvdXRlcjo6aGFzTG9jYWxGcm9udGVuZCgpIGNvbnN0Cit7CisgICAgZm9yIChh
dXRvKiBjb25uZWN0aW9uIDogbV9jb25uZWN0aW9ucykgeworICAgICAgICBpZiAoY29ubmVjdGlv
bi0+Y29ubmVjdGlvblR5cGUoKSA9PSBGcm9udGVuZENoYW5uZWw6OkNvbm5lY3Rpb25UeXBlOjpM
b2NhbCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBGcm9udGVuZFJvdXRlcjo6aGFzUmVtb3RlRnJvbnRlbmQoKSBjb25zdAor
eworICAgIGZvciAoYXV0byogY29ubmVjdGlvbiA6IG1fY29ubmVjdGlvbnMpIHsKKyAgICAgICAg
aWYgKGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25UeXBlKCkgPT0gRnJvbnRlbmRDaGFubmVsOjpDb25u
ZWN0aW9uVHlwZTo6UmVtb3RlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEZyb250ZW5kUm91dGVyOjpzZW5kRXZlbnQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKSBjb25zdAoreworICAgIGZvciAoYXV0byogY29ubmVjdGlvbiA6
IG1fY29ubmVjdGlvbnMpCisgICAgICAgIGNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlVG9Gcm9udGVu
ZChtZXNzYWdlKTsKK30KKwordm9pZCBGcm9udGVuZFJvdXRlcjo6c2VuZFJlc3BvbnNlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogc2VuZCByZXNwb25zZXMg
dG8gdGhlIGFwcHJvcHJpYXRlIGZyb250ZW5kLgorICAgIGZvciAoYXV0byogY29ubmVjdGlvbiA6
IG1fY29ubmVjdGlvbnMpCisgICAgICAgIGNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlVG9Gcm9udGVu
ZChtZXNzYWdlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGE2NDExYmVjNDI2NTc3MDA1ZDI4OWJkNDMzZGIwYTAzODIzMzliYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRSb3V0ZXIuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBJbnNwZWN0b3JGcm9udGVuZFJvdXRlcl9oCisjZGVmaW5lIEluc3BlY3RvckZyb250ZW5kUm91
dGVyX2gKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIEZyb250ZW5kQ2hhbm5l
bDsKKworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRnJvbnRlbmRSb3V0ZXIgOiBwdWJsaWMgUmVm
Q291bnRlZDxGcm9udGVuZFJvdXRlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8RnJvbnRl
bmRSb3V0ZXI+IGNyZWF0ZSgpOworCisgICAgYm9vbCBoYXNGcm9udGVuZHMoKSBjb25zdCB7IHJl
dHVybiAhbV9jb25uZWN0aW9ucy5pc0VtcHR5KCk7IH0KKyAgICBib29sIGhhc0xvY2FsRnJvbnRl
bmQoKSBjb25zdDsKKyAgICBib29sIGhhc1JlbW90ZUZyb250ZW5kKCkgY29uc3Q7CisKKyAgICB2
b2lkIGNvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqKTsKKyAgICB2b2lkIGRpc2Nvbm5l
Y3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RBbGxGcm9u
dGVuZHMoKTsKKworICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTQ4NDkyPiBy
ZW1vdmUgdGhpcyBtZXRob2Qgb25jZSBhZ2VudHMgbW92ZSB0byB1c2luZyBGcm9udGVuZFJvdXRl
ciBkaXJlY3RseS4KKyAgICBGcm9udGVuZENoYW5uZWwqIGxlYWtDaGFubmVsKCkgY29uc3Q7CisK
KyAgICB2b2lkIHNlbmRFdmVudChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0OworICAgIHZv
aWQgc2VuZFJlc3BvbnNlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgY29uc3Q7CisKK3ByaXZhdGU6
CisgICAgVmVjdG9yPEZyb250ZW5kQ2hhbm5lbCosIDI+IG1fY29ubmVjdGlvbnM7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckZy
b250ZW5kUm91dGVyX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
aW5kZXggMTQzZDdmMTM0N2VhYjJjNWYxZmMxYzM3OThjYjg1ZjMyNDc1MjkxZS4uMzM1MGZjMGQx
ODk1MWYwODJmYTc5NzExMjA3YTViMjgwN2VmNGNhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rv
ckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZFJvdXRlci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3RDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdENvbnNv
bGVDbGllbnQuaCIKQEAgLTYzLDcgKzY0LDggQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiBKU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlcihKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIDogbV9nbG9iYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtl
X3VuaXF1ZTxJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBJbmplY3RlZFNjcmlwdEhvc3Q6
OmNyZWF0ZSgpKSkKLSAgICAsIG1fZnJvbnRlbmRDaGFubmVsKG51bGxwdHIpCisgICAgLCBtX2Zy
b250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKKyAgICAsIG1fYmFja2VuZERp
c3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlS
ZWYoKSkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQog
ICAgICwgbV9pbmNsdWRlTmF0aXZlQ2FsbFN0YWNrV2l0aEV4Y2VwdGlvbnModHJ1ZSkKICAgICAs
IG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uKGZhbHNlKQpAQCAtOTgsMjIgKzEwMCwyNCBAQCBKU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6On5KU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXIoKQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2xv
YmFsT2JqZWN0RGVzdHJveWVkKCkKIHsKLSAgICBkaXNjb25uZWN0RnJvbnRlbmQoRGlzY29ubmVj
dFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkKTsKKyAgICBkaXNjb25uZWN0QWxsRnJv
bnRlbmRzKCk7CiAKICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+ZGlzY29ubmVjdCgpOwog
fQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250
ZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBib29sIGlzQXV0b21hdGljSW5z
cGVjdGlvbikKIHsKLSAgICBBU1NFUlQoIW1fZnJvbnRlbmRDaGFubmVsKTsKLSAgICBBU1NFUlQo
IW1fYmFja2VuZERpc3BhdGNoZXIpOworICAgIEFTU0VSVF9BUkcoZnJvbnRlbmRDaGFubmVsLCBm
cm9udGVuZENoYW5uZWwpOwogCiAgICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBpc0F1dG9t
YXRpY0luc3BlY3Rpb247CiAKLSAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IGZyb250ZW5kQ2hhbm5l
bDsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShm
cm9udGVuZENoYW5uZWwpOworICAgIGJvb2wgY29ubmVjdGVkRmlyc3RGcm9udGVuZCA9ICFtX2Zy
b250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMoKTsKKyAgICBtX2Zyb250ZW5kUm91dGVyLT5jb25u
ZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVsKTsKIAotICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChmcm9udGVuZENoYW5uZWwsIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0
KCkpOworICAgIGlmICghY29ubmVjdGVkRmlyc3RGcm9udGVuZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5l
bCwgJm1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9B
TFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgbV9pbnNwZWN0b3JBZ2VudC0+YWN0aXZhdGVFeHRy
YURvbWFpbnMobV9hZ2VudHMuZXh0cmFEb21haW5zKCkpOwpAQCAtMTIzLDE2ICsxMjcsMzEgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChG
cm9udGVuZENoYW5uZWwqIGZyb250ZW4KICNlbmRpZgogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb24g
cmVhc29uKQordm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5l
Y3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkKIHsKLSAgICBpZiAo
IW1fZnJvbnRlbmRDaGFubmVsKQorICAgIEFTU0VSVF9BUkcoZnJvbnRlbmRDaGFubmVsLCBmcm9u
dGVuZENoYW5uZWwpOworCisgICAgbV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKworICAgIG1fZnJvbnRl
bmRSb3V0ZXItPmRpc2Nvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwpOworCisgICAgbV9p
c0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKKworICAgIGJvb2wgZGlzY29ubmVjdGVkTGFz
dEZyb250ZW5kID0gIW1fZnJvbnRlbmRSb3V0ZXItPmhhc0Zyb250ZW5kcygpOworICAgIGlmICgh
ZGlzY29ubmVjdGVkTGFzdEZyb250ZW5kKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2FnZW50
cy53aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChyZWFzb24pOworI2lmIEVOQUJMRShJTlNQ
RUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorICAgIGlmIChtX2F1Z21lbnRpbmdDbGllbnQp
CisgICAgICAgIG1fYXVnbWVudGluZ0NsaWVudC0+aW5zcGVjdG9yRGlzY29ubmVjdGVkKCk7Cisj
ZW5kaWYKK30KKwordm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nv
bm5lY3RBbGxGcm9udGVuZHMoKQoreworICAgIG1fYWdlbnRzLndpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCk7CiAK
LSAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5jbGVhckZyb250ZW5kKCk7Ci0gICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOwor
ICAgIG1fZnJvbnRlbmRSb3V0ZXItPmRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKTsKIAogICAgIG1f
aXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2U7CiAKQEAgLTE0NCwxNSArMTYzLDExIEBAIHZv
aWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQo
RGlzY29ubmVjdFJlYXNvbiByZWFzCiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogewotICAgIGlmIChtX2JhY2tlbmREaXNwYXRjaGVyKQotICAgICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5kaXNw
YXRjaChtZXNzYWdlKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXI6OnBhdXNlKCkKIHsKLSAgICBpZiAoIW1fZnJvbnRlbmRDaGFubmVsKQotICAgICAgICByZXR1
cm47Ci0KICAgICBFcnJvclN0cmluZyBkdW1teUVycm9yOwogICAgIG1fZGVidWdnZXJBZ2VudC0+
ZW5hYmxlKGR1bW15RXJyb3IpOwogICAgIG1fZGVidWdnZXJBZ2VudC0+cGF1c2UoZHVtbXlFcnJv
cik7CkBAIC0yNjIsMTMgKzI3NywxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlcjo6YXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdAogewogICAg
IFN0cmluZyBkb21haW5OYW1lID0gYWdlbnQtPmRvbWFpbk5hbWUoKTsKIAotICAgIGlmIChtX2Zy
b250ZW5kQ2hhbm5lbCkKLSAgICAgICAgYWdlbnQtPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChtX2Zyb250ZW5kQ2hhbm5lbCwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgYWdl
bnQtPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChtX2Zyb250ZW5kUm91dGVyLT5sZWFrQ2hh
bm5lbCgpLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAKICAgICBtX2FnZW50cy5hcHBl
bmRFeHRyYUFnZW50KFdURjo6bW92ZShhZ2VudCkpOwogCi0gICAgaWYgKG1fZnJvbnRlbmRDaGFu
bmVsKQotICAgICAgICBtX2luc3BlY3RvckFnZW50LT5hY3RpdmF0ZUV4dHJhRG9tYWluKGRvbWFp
bk5hbWUpOworICAgIG1faW5zcGVjdG9yQWdlbnQtPmFjdGl2YXRlRXh0cmFEb21haW4oZG9tYWlu
TmFtZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgK
aW5kZXggNmUzZjk0ZWFjMjM0ZWM4OTgzNjk4Y2VhYzczZjE2ZTAzNjA0Y2JjZi4uYWFlMzJlM2M4
OTkzYmY3MDdlNjZiN2Y1MjA1ODIzMmE3M2E3Mzk3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVj
dG9yQ29udHJvbGxlci5oCkBAIC01Myw2ICs1Myw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3Igewog
CiBjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEZyb250ZW5kQ2hhbm5lbDsKK2NsYXNz
IEZyb250ZW5kUm91dGVyOwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5z
cGVjdG9yQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQ7CkBAIC03Myw3ICs3NCw5
IEBAIHB1YmxpYzoKICAgICB+SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKCk7CiAK
ICAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21h
dGljSW5zcGVjdGlvbik7Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoRGlzY29ubmVjdFJl
YXNvbik7CisgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRDaGFubmVsKik7Cisg
ICAgdm9pZCBkaXNjb25uZWN0QWxsRnJvbnRlbmRzKCk7CisKICAgICB2b2lkIGRpc3BhdGNoTWVz
c2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgZ2xvYmFsT2JqZWN0
RGVzdHJveWVkKCk7CkBAIC05OSw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBBdWdt
ZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQqIGF1Z21lbnRhYmxlSW5zcGVjdG9yQ29u
dHJvbGxlckNsaWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXVnbWVudGluZ0NsaWVu
dDsgfSAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVy
Q2xpZW50KEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCogY2xpZW50KSBvdmVy
cmlkZSB7IG1fYXVnbWVudGluZ0NsaWVudCA9IGNsaWVudDsgfQogCi0gICAgdmlydHVhbCBGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
ZnJvbnRlbmRDaGFubmVsOyB9CisgICAgdmlydHVhbCBjb25zdCBGcm9udGVuZFJvdXRlciYgZnJv
bnRlbmRSb3V0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Zyb250ZW5kUm91dGVyLmdl
dCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZEV4dHJhQWdlbnQoc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3RvckFnZW50QmFzZT4pIG92ZXJyaWRlOwogI2VuZGlmCiAKQEAgLTExMyw4ICsxMTYs
OCBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudCogbV9jb25zb2xlQWdlbnQ7
CiAgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFnZW50OwogICAgIEFnZW50
UmVnaXN0cnkgbV9hZ2VudHM7Ci0gICAgRnJvbnRlbmRDaGFubmVsKiBtX2Zyb250ZW5kQ2hhbm5l
bDsKLSAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Cisg
ICAgUmVmPEZyb250ZW5kUm91dGVyPiBtX2Zyb250ZW5kUm91dGVyOworICAgIFJlZjxCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBSZWY8V1RGOjpTdG9wd2F0Y2g+
IG1fZXhlY3V0aW9uU3RvcHdhdGNoOwogICAgIGJvb2wgbV9pbmNsdWRlTmF0aXZlQ2FsbFN0YWNr
V2l0aEV4Y2VwdGlvbnM7CiAgICAgYm9vbCBtX2lzQXV0b21hdGljSW5zcGVjdGlvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFn
ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckFnZW50LmNwcAppbmRleCA3YjJmM2NmMTgwYzRlNzgyODhkZDA5YzA5MjQ2OTQ5MTljNjc5ODRh
Li44NjIyNGJhNmJiNjNiNDk1ZWRhYTA2NmMyN2ZjNDNhYzc2ODBlNjkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuaCIKIAog
I2luY2x1ZGUgIkluc3BlY3RvckVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJv
bnRlbmRSb3V0ZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJT
Y3JpcHRWYWx1ZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAppbmRleCA4OGQ4
MTUxODI2ZGU0NTc3NzUyODA4MjYwOTRmY2VhNmVhYjQxNzY4Li4xZjFkOWIxYmEwNDc2NzNhNmQw
ODE0Nzk1NTE1M2IwMDBkMzAxOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvbnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRS
b3V0ZXIuaCIKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRD
YWxsRnJhbWUuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAKaW5kZXggYzJmNjNjZWNhYzZiNmE4NWIzNTRhZjBlMDUyMmE1Yjk0
MzcyYjgwMS4uYWNhYzE3MGE0MDMxNTEwMGMxNjMyNzg5NWZiNzQ5Y2Y5MGZjN2E5NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJDb250ZW50U2VhcmNoVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JG
cm9udGVuZFJvdXRlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUg
IlJlZ3VsYXJFeHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IDMyMTA0YTJkZjI4YTk2MGEzZDQ5ODJm
Zjg0YWMxOTNkMjczM2IzYTIuLmFkZGZlYmMxOTBiODBlYzdmNmY2NDgzMDZmNzM3MjQ5MDY5M2Fh
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcApAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0
LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yRnJvbnRlbmRSb3V0ZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNs
dWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BdWdtZW50YWJsZUluc3Bl
Y3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVu
dGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggMjQ1NmFjNTkxOWQ4
YTBkNTY1OWQ2ZjcxY2MwNzU4OGY2Yzc3NjhiMi4uYjBkMjViMGI2NzJhMjk2N2NhZmY1NzhiZjRm
NTg4OGU5ZTk1NGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hdWdtZW50YWJsZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVj
dG9yQ29udHJvbGxlci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9B
TFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50
YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
bnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIApAQCAt
NDIsMTAgKzQyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEF1Z21lbnRhYmxlSW5zcGVjdG9y
Q29udHJvbGxlckNsaWVudCogYXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdWdtZW50YWJsZUluc3BlY3RvckNvbnRy
b2xsZXJDbGllbnQoQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KikgPSAwOwog
Ci0gICAgdmlydHVhbCBGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGNvbnN0IEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlcigpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9w
dHI8SW5zcGVjdG9yQWdlbnRCYXNlPikgPSAwOwogCi0gICAgYm9vbCBjb25uZWN0ZWQoKSBjb25z
dCB7IHJldHVybiAhIWZyb250ZW5kQ2hhbm5lbCgpOyB9CisgICAgYm9vbCBjb25uZWN0ZWQoKSBj
b25zdCB7IHJldHVybiBmcm9udGVuZFJvdXRlcigpLmhhc0Zyb250ZW5kcygpOyB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUu
aAppbmRleCAwNjRiODNhZTgzODM4ZTFhYjM2ZTVlNzVmMDZmNmY5NzUwZjA4ODA5Li5kYTI0Mjk5
ZTRkZDI1ZjM2ZjIxNTY1YjYxM2E2ZGMwNmRhYmIwMTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgaGFzTG9jYWxEZWJ1Z2dlcigpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBjb25u
ZWN0KEZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nv
bm5lY3QoRnJvbnRlbmRDaGFubmVsKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1l
c3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldEluZGljYXRpbmcoYm9vbCkgeyB9IC8vIERlZmF1bHQgaXMgdG8gZG8g
bm90aGluZy4KICAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKSB7IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tCmluZGV4IGJlZGFhZDdmYWU0
MGM1OGM4OTY3MmU0ZDFhMGIwYTUxMWU5NjVhYjQuLmVkNmNkNjBkY2MwMTAxZDBiOGY2ZDM1YTg4
NDFmM2ZlMjFmNDkwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uLm1tCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y2xvc2UoKQogCiAgICAgICAgICAgICBpZiAobV9kZWJ1
Z2dhYmxlKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fY29ubmVjdGVkKQotICAgICAgICAgICAg
ICAgICAgICBtX2RlYnVnZ2FibGUtPmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9kZWJ1Z2dhYmxlLT5kaXNjb25uZWN0KHRoaXMpOwogCiAgICAgICAgICAgICAgICAgbV9kZWJ1
Z2dhYmxlID0gbnVsbHB0cjsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9hbHRlcm5h
dGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9hbHRlcm5hdGVfYmFja2VuZF9k
aXNwYXRjaGVyX2hlYWRlci5weQppbmRleCBkNGE4ZDVhZmVlZDQ0NTJlZTlmYmY3OGVhNTJiOTQz
M2ZhYjIzNjc4Li4zNzVjZTA1Y2E0NGFiNGU0MDk1NTgzNTQ2NzM3MDMzMjJkNTkxYWI0IDEwMDc1
NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9jcHBfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
Y3BwX2FsdGVybmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5CkBAIC00Nyw2ICs0Nyw3
IEBAIGNsYXNzIENwcEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yKEdl
bmVyYXRvcik6CiAgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKICAgICAgICAgaGVhZGVy
cyA9IFsKICAgICAgICAgICAgICciSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIicsCisgICAgICAg
ICAgICAnPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPicsCiAgICAgICAgICAg
ICAnPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+JywKICAgICAg
ICAgXQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9u
LnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2Vu
ZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCAxMjUx
MTQ5MzNjZTkyODgxNWI0MmQ0NTJmNTIzZWFlY2QzMDdhMTFlLi5iMzZjMGIxM2MwOGQ5MTExMjk0
NjQ3YjZiODZkYmRiZTI4YmZkNzM1IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVy
X2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50
YXRpb24ucHkKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNoZXJJbXBs
ZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQo
c2VsZik6CiAgICAgICAgIHNlY29uZGFyeV9oZWFkZXJzID0gWwogICAgICAgICAgICAgJzxpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+JywKKyAgICAgICAgICAgICc8aW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+JywKICAgICAgICAgICAgICc8aW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5oPicsCiAgICAgICAgICAgICAnPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PicsCiAgICAgICAgICAgICAnPHd0Zi90ZXh0L0NTdHJpbmcuaD4nXQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2Jq
Y19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9k
aXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IGZiMmRlNGY2MWYzZmMwMWQ3YTQ2MDgw
OGE5ODU1YzVhZGEyZjkwMDAuLjk0MDE4ZTU5ZjZmYWY2MDIwN2JhZWNkNjViYjU1M2E1MmIwZmU1
N2QgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5w
eQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKQEAgLTk4
LDkgKzk4LDcgQEAgY2xhc3MgT2JqQ0Zyb250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2Vu
ZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgIGxpbmVzID0gW10KICAgICAgICAgbGluZXMuYXBw
ZW5kKHNlbGYuX2dlbmVyYXRlX2V2ZW50X3NpZ25hdHVyZShkb21haW4sIGV2ZW50KSkKICAgICAg
ICAgbGluZXMuYXBwZW5kKCd7JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgRnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBfY29udHJvbGxlci0+ZnJvbnRlbmRDaGFubmVsKCk7
JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgaWYgKCFmcm9udGVuZENoYW5uZWwpJykKLSAg
ICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIHJldHVybjsnKQorICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICBjb25zdCBGcm9udGVuZFJvdXRlciYgcm91dGVyID0gX2NvbnRyb2xsZXItPmZyb250
ZW5kUm91dGVyKCk7JykKICAgICAgICAgbGluZXMuYXBwZW5kKCcnKQogCiAgICAgICAgIHJlcXVp
cmVkX3BvaW50ZXJfcGFyYW1ldGVycyA9IGZpbHRlcihsYW1iZGEgcGFyYW1ldGVyOiBub3QgcGFy
YW1ldGVyLmlzX29wdGlvbmFsIGFuZCBPYmpDR2VuZXJhdG9yLmlzX3R5cGVfb2JqY19wb2ludGVy
X3R5cGUocGFyYW1ldGVyLnR5cGUpLCBldmVudC5ldmVudF9wYXJhbWV0ZXJzKQpAQCAtMTI2LDcg
KzEyNCw3IEBAIGNsYXNzIE9iakNGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVy
YXRvcihHZW5lcmF0b3IpOgogICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBqc29uTWVzc2FnZS0+
c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWV0aG9kIiksIEFTQ0lJTGl0ZXJhbCgiJXMuJXMiKSk7
JyAlIChkb21haW4uZG9tYWluX25hbWUsIGV2ZW50LmV2ZW50X25hbWUpKQogICAgICAgICBpZiBl
dmVudC5ldmVudF9wYXJhbWV0ZXJzOgogICAgICAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuX2dl
bmVyYXRlX2V2ZW50X291dF9wYXJhbWV0ZXJzKGRvbWFpbiwgZXZlbnQpKQotICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICBmcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChqc29u
TWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOycpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHJv
dXRlci5zZW5kRXZlbnQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsnKQogICAgICAgICBs
aW5lcy5hcHBlbmQoJ30nKQogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVn
Z2FibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlLmNwcAppbmRleCBlZWNjNWJhMDMwYWI1NDBjYTVlNDNkZGQ1YWE4YWQyMmMzNzM2
OTFlLi4yYWVhMjAzNWYzMWFmZWY5ZTdhMWU2MTNlNWViNDcyYWI0ZTUwNmE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZS5jcHAKQEAgLTU2LDExICs1NiwxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdn
YWJsZTo6Y29ubmVjdChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCBhdQog
ICAgIG1fZ2xvYmFsT2JqZWN0Lmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQo
ZnJvbnRlbmRDaGFubmVsLCBhdXRvbWF0aWNJbnNwZWN0aW9uKTsKIH0KIAotdm9pZCBKU0dsb2Jh
bE9iamVjdERlYnVnZ2FibGU6OmRpc2Nvbm5lY3QoKQordm9pZCBKU0dsb2JhbE9iamVjdERlYnVn
Z2FibGU6OmRpc2Nvbm5lY3QoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwpCiB7CiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2tlcigmbV9nbG9iYWxPYmplY3Qudm0oKSk7CiAKLSAgICBtX2ds
b2JhbE9iamVjdC5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKERpc2Nv
bm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgbV9nbG9iYWxPYmplY3QuaW5z
cGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwpOwog
fQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6cGF1c2UoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUu
aAppbmRleCA2MGNlNThhNDRjNzkzNTlhNzczOWE5MDc5Yjk5MzBkZDEyYWJhMzk0Li4wM2ZkMTdk
MGZmMGE0NjY2OTY2NTkzYTIyNmM1MDRmM2UxNmEyYWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaApAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc0xvY2FsRGVidWdnZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGNv
bm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBib29sIGF1dG9tYXRpY0luc3BlY3Rp
b24pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHBh
dXNlKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oIGIvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGE5YjZhN2ZjNDdkZDE2OWUyNmE0NjVjZjNiNzRlM2E0NDNhNjI5OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJD
b3JlX0ZXRF9JbnNwZWN0b3JGcm9udGVuZFJvdXRlcl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0lu
c3BlY3RvckZyb250ZW5kUm91dGVyX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3JGcm9udGVuZFJvdXRlci5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCAwNjZjM2FlZWU1NjQ2M2ZiMzEzNWYxOTY5N2I1
YjNkYzk3YTJhZWE3Li5jNDVhYzFmZjVmNDZmOGRhYWFiMjZmODdiNTdhZjQ3OTkzZjY2YzZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAg
LTIwMzM2LDYgKzIwMzM2LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRp
bmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3Bl
Y3RvckVudmlyb25tZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJk
aW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVj
dG9yRnJvbnRlbmRSb3V0ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndh
cmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJ
bnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yUHJvdG9jb2xPYmplY3Rz
LmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXgg
ZWU3ZDhmYWM0NjVkMWU1Y2VkZTIwZTJjMThlZGU1ZDVmODEwNjExZS4uNmQzOWE0YzkyYWRjZjUy
ODZmMjQ4MTUyZWMxYzUyNjkzYmFkZGQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDbGllbnQuaApAQCAtMjcsMTEgKzI3LDE0IEBACiAjaWZuZGVmIEluc3BlY3RvckNs
aWVudF9oCiAjZGVmaW5lIEluc3BlY3RvckNsaWVudF9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JG
b3J3YXJkaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworY2xhc3MgRnJvbnRlbmRDaGFubmVsOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEZsb2F0UmVjdDsKQEAgLTQ1LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpID0gMDsKIAotICAgIHZpcnR1YWwgSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciop
ID0gMDsKKyAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVj
dG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9u
dGVuZFRvRnJvbnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlc2l6ZU1haW5GcmFtZShG
cmFtZSopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwCmluZGV4IDI3N2YxNmI2ZjQ3NTA1N2IxNzQ2MzdiMzY3ZDNjYTVhMDVhODNjYmEu
LjhhN2RmMjBhYzA0YzdlMDJmYjlhY2NiOTg5NzllZDM1NjQxNTBmN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTY4LDYgKzY4
LDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4K
ICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+CiAjaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaD4KKyNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4KICNpbmNsdWRlIDxpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckFnZW50Lmg+CiAjaW5jbHVkZSA8cHJvZmlsZXIvTGVnYWN5UHJv
ZmlsZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgpAQCAtODUsNiArODYsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9s
bGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KQogICAgIDog
bV9pbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2VudHM6OmNyZWF0ZSgqdGhpcykp
CiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkluamVj
dGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkp
KQorICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCisgICAg
LCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVu
ZFJvdXRlci5jb3B5UmVmKCkpKQogICAgICwgbV9vdmVybGF5KHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yT3ZlcmxheT4ocGFnZSwgaW5zcGVjdG9yQ2xpZW50KSkKICAgICAsIG1fZXhlY3V0aW9u
U3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAgLCBtX3BhZ2UocGFnZSkKQEAgLTE3
Nyw3ICsxODAsOCBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjp+SW5zcGVjdG9yQ29udHJvbGxlcigp
CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpCiB7
Ci0gICAgZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdl
dERlc3Ryb3llZCk7CisgICAgZGlzY29ubmVjdEFsbEZyb250ZW5kcygpOworCiAgICAgbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXItPmRpc2Nvbm5lY3QoKTsKICAgICBtX2luc3BlY3RvckNsaWVudC0+
aW5zcGVjdG9yRGVzdHJveWVkKCk7CiAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBudWxscHRyOwpA
QCAtMTkwLDEyICsxOTQsMTIgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbnNwZWN0
b3JGcm9udGVuZENsaWVudChJbnNwZWN0b3JGcm9udGVuZENsaWVudCogaW4KIAogYm9vbCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpoYXNMb2NhbEZyb250ZW5kKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9mcm9udGVuZENoYW5uZWwgJiYgbV9mcm9udGVuZENoYW5uZWwtPmNvbm5lY3Rpb25UeXBlKCkg
PT0gRnJvbnRlbmRDaGFubmVsOjpDb25uZWN0aW9uVHlwZTo6TG9jYWw7CisgICAgcmV0dXJuIG1f
ZnJvbnRlbmRSb3V0ZXItPmhhc0xvY2FsRnJvbnRlbmQoKTsKIH0KIAogYm9vbCBJbnNwZWN0b3JD
b250cm9sbGVyOjpoYXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZnJv
bnRlbmRDaGFubmVsICYmIG1fZnJvbnRlbmRDaGFubmVsLT5jb25uZWN0aW9uVHlwZSgpID09IEZy
b250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGU6OlJlbW90ZTsKKyAgICByZXR1cm4gbV9mcm9u
dGVuZFJvdXRlci0+aGFzUmVtb3RlRnJvbnRlbmQoKTsKIH0KIAogYm9vbCBJbnNwZWN0b3JDb250
cm9sbGVyOjpoYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIGNvbnN0CkBAIC0yMTksNzQgKzIy
Myw5NiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENsZWFyV2luZG93T2JqZWN0SW5X
b3JsZChGcmFtZSYgZnJhbWUsIERPTVdyYXBwZXJXbwogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikKIHsKLSAgICBBU1NFUlQoZnJvbnRl
bmRDaGFubmVsKTsKKyAgICBBU1NFUlRfQVJHKGZyb250ZW5kQ2hhbm5lbCwgZnJvbnRlbmRDaGFu
bmVsKTsKICAgICBBU1NFUlQobV9pbnNwZWN0b3JDbGllbnQpOwotICAgIEFTU0VSVCghbV9mcm9u
dGVuZENoYW5uZWwpOwotICAgIEFTU0VSVCghbV9iYWNrZW5kRGlzcGF0Y2hlcik7CiAKKyAgICBi
b29sIGNvbm5lY3RlZEZpcnN0RnJvbnRlbmQgPSAhbV9mcm9udGVuZFJvdXRlci0+aGFzRnJvbnRl
bmRzKCk7CiAgICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBpc0F1dG9tYXRpY0luc3BlY3Rp
b247CiAKLSAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IGZyb250ZW5kQ2hhbm5lbDsKLSAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShmcm9udGVuZENoYW5u
ZWwpOwotCi0gICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5k
Q2hhbm5lbCwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgbV9mcm9udGVuZFJvdXRl
ci0+Y29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCk7CiAKLSAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhtX2luc3RydW1lbnRpbmdB
Z2VudHMuZ2V0KCkpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmRDcmVh
dGVkKCk7CiAKKyAgICBpZiAoY29ubmVjdGVkRmlyc3RGcm9udGVuZCkgeworICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZ2V0KCkpOworICAgICAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoZnJvbnRlbmRDaGFubmVsLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7
CisgICAgfQorCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgaWYgKCFoYXNSZW1v
dGVGcm9udGVuZCgpKQorICAgIGlmICghbV9mcm9udGVuZFJvdXRlci0+aGFzUmVtb3RlRnJvbnRl
bmQoKSkKICAgICAgICAgbV9wYWdlLnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdl
KCk7CiAjZW5kaWYKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJv
bnRlbmQoRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmRpc2Nvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkKIHsK
LSAgICBpZiAoIW1fZnJvbnRlbmRDaGFubmVsKQotICAgICAgICByZXR1cm47CisgICAgLy8gVGhl
IGxvY2FsIGZyb250ZW5kIGNsaWVudCBzaG91bGQgYmUgZGlzY29ubmVjdGVkIGZpcnN0IHNvIGl0
IHN0b3BzIHNlbmRpbmcgbWVzc2FnZXMuCisgICAgQVNTRVJUKCFtX2Zyb250ZW5kUm91dGVyLT5o
YXNMb2NhbEZyb250ZW5kKCkgfHwgIW1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOworCisgICAg
bV9mcm9udGVuZFJvdXRlci0+ZGlzY29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCk7Cisg
ICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKKworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZnJvbnRlbmREZWxldGVkKCk7CisKKyAgICBib29sIGRpc2Nvbm5lY3RlZExh
c3RGcm9udGVuZCA9ICFtX2Zyb250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMoKTsKKyAgICBpZiAo
ZGlzY29ubmVjdGVkTGFzdEZyb250ZW5kKSB7CisgICAgICAgIC8vIFJlbGVhc2Ugb3ZlcmxheSBw
YWdlIHJlc291cmNlcy4KKyAgICAgICAgbV9vdmVybGF5LT5mcmVlUGFnZSgpOworICAgICAgICBt
X2FnZW50cy53aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uOjpJ
bnNwZWN0b3JEZXN0cm95ZWQpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnVu
cmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSk7
CisgICAgfQogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgaWYgKCFoYXNSZW1v
dGVGcm9udGVuZCgpKQorICAgIGlmICghbV9mcm9udGVuZFJvdXRlci0+aGFzRnJvbnRlbmRzKCkp
CiAgICAgICAgIG1fcGFnZS5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOwog
I2VuZGlmCit9CiAKLSAgICBtX2FnZW50cy53aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChy
ZWFzb24pOwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0QWxsRnJvbnRlbmRz
KCkKK3sKKyAgICAvLyBUaGUgbG9jYWwgZnJvbnRlbmQgY2xpZW50IHNob3VsZCBiZSBkaXNjb25u
ZWN0ZWQgZmlyc3Qgc28gaXQgc3RvcHMgc2VuZGluZyBtZXNzYWdlcy4KKyAgICBBU1NFUlQoIW1f
ZnJvbnRlbmRSb3V0ZXItPmhhc0xvY2FsRnJvbnRlbmQoKSB8fCAhbV9pbnNwZWN0b3JGcm9udGVu
ZENsaWVudCk7CiAKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5jbGVhckZyb250ZW5kKCk7Ci0g
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9mcm9udGVuZENoYW5uZWwg
PSBudWxscHRyOworICAgIG1fYWdlbnRzLndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERp
c2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCk7CiAKKyAgICBtX2Zyb250
ZW5kUm91dGVyLT5kaXNjb25uZWN0QWxsRnJvbnRlbmRzKCk7CiAgICAgbV9pc0F1dG9tYXRpY0lu
c3BlY3Rpb24gPSBmYWxzZTsKIAogICAgIC8vIFJlbGVhc2Ugb3ZlcmxheSBwYWdlIHJlc291cmNl
cy4KICAgICBtX292ZXJsYXktPmZyZWVQYWdlKCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpmcm9udGVuZERlbGV0ZWQoKTsKKworICAgIHdoaWxlIChJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246Omhhc0Zyb250ZW5kcygpKQorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmZyb250ZW5kRGVsZXRlZCgpOworCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1bnJl
Z2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpOwor
ICAgIAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIG1fcGFnZS5yZW1vdGVJbnNw
ZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOworI2VuZGlmCiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6c2hvdygpCiB7Ci0gICAgQVNTRVJUKCFoYXNSZW1vdGVGcm9udGVuZCgpKTsK
KyAgICBBU1NFUlQoIW1fZnJvbnRlbmRSb3V0ZXItPmhhc1JlbW90ZUZyb250ZW5kKCkpOworCisg
ICAgLy8gVGhlIGxvY2FsIGZyb250ZW5kIGNsaWVudCBzaG91bGQgYmUgZGlzY29ubmVjdGVkIGlm
IHRoZXJlJ3Mgbm8gbG9jYWwgZnJvbnRlbmQuCisgICAgQVNTRVJUKG1fZnJvbnRlbmRSb3V0ZXIt
Pmhhc0xvY2FsRnJvbnRlbmQoKSB8fCAhbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudCk7CiAKICAg
ICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fZnJvbnRlbmRD
aGFubmVsKQorICAgIGlmIChtX2Zyb250ZW5kUm91dGVyLT5oYXNMb2NhbEZyb250ZW5kKCkpCiAg
ICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5icmluZ0Zyb250ZW5kVG9Gcm9udCgpOwotICAgIGVs
c2UgewotICAgICAgICBpZiAoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9yRnJvbnRlbmQodGhpcykpIHsK
LSAgICAgICAgICAgIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2U7Ci0gICAgICAg
ICAgICBjb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVsLCBpc0F1dG9tYXRpY0luc3BlY3Rp
b24pOwotICAgICAgICB9Ci0gICAgfQorICAgIGVsc2UgaWYgKEluc3BlY3Rvcjo6RnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBtX2luc3BlY3RvckNsaWVudC0+b3Blbkluc3BlY3Rv
ckZyb250ZW5kKHRoaXMpKQorICAgICAgICBjb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVs
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjbG9zZSgpCiB7Ci0gICAgaWYgKCFt
X2Zyb250ZW5kQ2hhbm5lbCkKLSAgICAgICAgcmV0dXJuOwotICAgIGRpc2Nvbm5lY3RGcm9udGVu
ZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwotICAgIG1faW5zcGVjdG9y
Q2xpZW50LT5jbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CisgICAgaWYgKG1fZnJvbnRlbmRSb3V0
ZXItPmhhc0xvY2FsRnJvbnRlbmQoKSkKKyAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmNsb3Nl
SW5zcGVjdG9yRnJvbnRlbmQoKTsKKworICAgIEFTU0VSVCghbV9mcm9udGVuZFJvdXRlci0+aGFz
TG9jYWxGcm9udGVuZCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRQcm9j
ZXNzSWQobG9uZyBwcm9jZXNzSWQpCkBAIC0zMzcsOCArMzYzLDcgQEAgUGFnZSYgSW5zcGVjdG9y
Q29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZSgpIGNvbnN0CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
IHsKLSAgICBpZiAobV9iYWNrZW5kRGlzcGF0Y2hlcikKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlci0+ZGlzcGF0Y2gobWVzc2FnZSk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+ZGlzcGF0
Y2gobWVzc2FnZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGlkZUhpZ2hsaWdo
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApp
bmRleCBkZmI3ZTg1MDlhYzZjN2I5NzA0ZjliNTRhMzJhMDY4OTRhYTFmODhhLi42ZTE1Y2VkZDdi
NTc4MmYzOThhZjM0NTQzNmNjNjExODZlNzc3OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAKIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewogY2xhc3MgQmFja2VuZERpc3BhdGNoZXI7CiBjbGFzcyBGcm9udGVuZENo
YW5uZWw7CitjbGFzcyBGcm9udGVuZFJvdXRlcjsKIGNsYXNzIEluc3BlY3RvckFnZW50OwogY2xh
c3MgSW5zcGVjdG9yT2JqZWN0OwogCkBAIC05OCw4ICs5OSw5IEBAIHB1YmxpYzoKICAgICBib29s
IGhhc0xvY2FsRnJvbnRlbmQoKSBjb25zdDsKICAgICBib29sIGhhc1JlbW90ZUZyb250ZW5kKCkg
Y29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5l
Y3RSZWFzb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVjdEZyb250ZW5kKEluc3Bl
Y3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxz
ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZENoYW5uZWwqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc2Nvbm5lY3RB
bGxGcm9udGVuZHMoKTsKICAgICB2b2lkIHNldFByb2Nlc3NJZChsb25nKTsKIAogICAgIHZvaWQg
aW5zcGVjdChOb2RlKik7CkBAIC0xNDAsOCArMTQyLDggQEAgcHJpdmF0ZToKIAogICAgIFJlZjxJ
bnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7
Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7Ci0gICAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFubmVs
IHsgbnVsbHB0ciB9OworICAgIFJlZjxJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyPiBtX2Zyb250
ZW5kUm91dGVyOworICAgIFJlZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JPdmVybGF5PiBtX292
ZXJsYXk7CiAgICAgUmVmPFdURjo6U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsKICAg
ICBJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggY2M0NzNkNzYx
N2I3Yjk5ZmIzZWYxMGEyOWFhM2VjZjlhNWQwNjc1Yy4uYzdmNmE2ZTM0MjMwOWI1Y2ExZjUxNzM0
NDJmYTUxYjRmZTExNGMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlNR
TFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNRTFZhbHVlLmgiCiAjaW5j
bHVkZSAiVm9pZENhbGxiYWNrLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kUm91dGVyLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggZWYzYjE4NWMzNjFkODcyNzRmYzA0
Y2RlYjQ1NWUxMmI0ZGVhYTQ5My4uYTNlYWJiN2IxMTQ4NzA1ZmRmNGNlMmYxZWU0ZjhkOGNhMTBj
ZGM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdl
ci5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmg+
CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+CiAjaW5jbHVk
ZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCA4NTc5MTk5OWZjM2Iw
NzE1NjM0ZDI2YmZjZWFjODAzODQ4ZDEzZDc1Li4xNDMyZWYwZDkzZTMyYzY5ZTU3MDViZDRlZmYz
ZDQwZGQ0MWY0YWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSWRlbnRp
ZmllcnNGYWN0b3J5Lmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91
dGVyLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUg
PGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDIyYjA4N2UxODVlNWNjYTUyZGRi
OGM0ZjM1ODQzMTZiYTRkZWQyYTQuLjhhMjJkNWM2ZjczODFlMjJkNDdjZDc3ODIyNzMzNTcyYTA2
NzI5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJXb3JrZXJU
aHJlYWQuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5oPgor
I2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPgogI2luY2x1ZGUg
PHd0Zi9TdG9wd2F0Y2guaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKQEAgLTgwLDYg
KzgxLDggQEAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2wKICAgICAsIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+
KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fZXhlY3V0
aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCisgICAgLCBtX2Zyb250ZW5kUm91dGVy
KEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKKyAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCiB7CiAg
ICAgYXV0byBydW50aW1lQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclJ1bnRpbWVBZ2Vu
dD4oKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCAmd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIG1f
cnVudGltZUFnZW50ID0gcnVudGltZUFnZW50LmdldCgpOwpAQCAtMTE0LDI3ICsxMTcsMjcgQEAg
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6fldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKQog
CiB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpCiB7Ci0g
ICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9mcm9udGVuZENoYW5uZWwgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBhZ2VJbnNwZWN0b3JQcm94eT4obV93b3JrZXJHbG9iYWxTY29wZSk7
Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9m
cm9udGVuZENoYW5uZWwuZ2V0KCkpOwotICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQo
KSk7CisgICAgQVNTRVJUKCFtX2Zyb250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMoKSk7CisgICAg
QVNTRVJUKCFtX2ZvcndhcmRpbmdDaGFubmVsKTsKKworICAgIG1fZm9yd2FyZGluZ0NoYW5uZWwg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VJbnNwZWN0b3JQcm94eT4obV93b3JrZXJHbG9iYWxTY29w
ZSk7CisgICAgbV9mcm9udGVuZFJvdXRlci0+Y29ubmVjdEZyb250ZW5kKG1fZm9yd2FyZGluZ0No
YW5uZWwuZ2V0KCkpOworICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCht
X2ZvcndhcmRpbmdDaGFubmVsLmdldCgpLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiB9
CiAKIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKElu
c3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7Ci0gICAgaWYgKCFtX2Zyb250ZW5k
Q2hhbm5lbCkKLSAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX2Zyb250ZW5kUm91dGVyLT5o
YXNGcm9udGVuZHMoKSk7CisgICAgQVNTRVJUKG1fZm9yd2FyZGluZ0NoYW5uZWwpOwogCiAgICAg
bV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQocmVhc29uKTsKLSAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyLT5jbGVhckZyb250ZW5kKCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ciA9IG51bGxwdHI7Ci0gICAgbV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOworICAgIG1fZnJv
bnRlbmRSb3V0ZXItPmRpc2Nvbm5lY3RGcm9udGVuZChtX2ZvcndhcmRpbmdDaGFubmVsLmdldCgp
KTsKKyAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0gbnVsbHB0cjsKIH0KIAogdm9pZCBXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewotICAgIGlmIChtX2JhY2tlbmREaXNwYXRjaGVyKQotICAgICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKKyAgICBtX2JhY2tlbmREaXNw
YXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKIH0KIAogdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyOjpyZXN1bWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZGU4MTQ4MGQwODNjNTBjZDgwZGMyN2ZhNDE2
MWRjZjAzNWY1YmUxYS4uNWJkZTFlMWI3OTY3ZTViNmNlZTVhYTlmYTc3OTdlMGQ1YjkwMTNkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlci5oCkBAIC00MSw2ICs0MSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgRnJv
bnRlbmRSb3V0ZXI7Cit9OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjsKQEAgLTc4LDkgKzgyLDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4gbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXI7CiAgICAgV29ya2VyUnVudGltZUFnZW50KiBtX3J1bnRpbWVBZ2VudCB7IG51bGxwdHIgfTsK
ICAgICBJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnkgbV9hZ2VudHM7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsPiBtX2Zyb250ZW5kQ2hhbm5lbDsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWw+IG1fZm9yd2FyZGluZ0No
YW5uZWw7CiAgICAgUmVmPFdURjo6U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsKLSAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hl
cjsKKyAgICBSZWY8SW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcj4gbV9mcm9udGVuZFJvdXRlcjsK
KyAgICBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hl
cjsKICAgICBWZWN0b3I8SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLCAyPiBtX2luamVj
dGVkU2NyaXB0SW5zdHJ1bWVudGF0aW9uQ29va2llczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlRGVidWdnYWJsZS5jcHAKaW5kZXggZmU3YjI5NDg2YWRlOGI0ZmEzZjNmNDlhMGVmYWQ5Y2Q3
MDA5N2RkZC4uMjQ5ODNiZWM0YTc5Y2U3MzhiNDNlOTBlMjhkYzAwNWUzOGE2YjRhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKQEAgLTgwLDEwICs4MCwxMCBAQCB2b2lk
IFBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBjaGFu
bmVsLCBib29sIGlzQXV0b21hdAogICAgIGluc3BlY3RvckNvbnRyb2xsZXIuY29ubmVjdEZyb250
ZW5kKGNoYW5uZWwsIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CiB9CiAKLXZvaWQgUGFnZURlYnVn
Z2FibGU6OmRpc2Nvbm5lY3QoKQordm9pZCBQYWdlRGVidWdnYWJsZTo6ZGlzY29ubmVjdChJbnNw
ZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCkKIHsKICAgICBJbnNwZWN0b3JDb250cm9s
bGVyJiBpbnNwZWN0b3JDb250cm9sbGVyID0gbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKTsK
LSAgICBpbnNwZWN0b3JDb250cm9sbGVyLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRp
c2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgaW5zcGVjdG9yQ29udHJv
bGxlci5kaXNjb25uZWN0RnJvbnRlbmQoY2hhbm5lbCk7CiAKICAgICBpZiAobV9mb3JjZWREZXZl
bG9wZXJFeHRyYXNFbmFibGVkKSB7CiAgICAgICAgIG1fZm9yY2VkRGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdn
YWJsZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5oCmluZGV4IDZhZWZj
YzNjYjQ1YjkyMDE3MGU5Nzk0NThiZTVhYjA2MGIzNmE0ZDMuLmIyOTA5NGY1OTljMWFjMWRkM2Y1
ZGQyMzc0MWI1ZmRiMWI2YWM1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZURlYnVnZ2FibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNMb2NhbERlYnVn
Z2VyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBkaXNjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRpY2F0aW5n
KGJvb2wpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
MzFiZjUxNzQzYTg4MWNmY2I4MjVhNTc4YjQ2YWIyY2MyY2NmNTU1Ny4uMGVmN2NmNzI2MTFiZGNm
MmVlYzg5YmU2ODc4NTM5YmM5N2NlYzRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcApAQCAtMTczNCw5ICsxNzM0LDggQEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IEludGVybmFs
czo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgbV9m
cm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRE
dW1teT4oJnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRlbmRQYWdlKTsKICAgICBm
cm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENs
aWVudChtX2Zyb250ZW5kQ2xpZW50LmdldCgpKTsKIAotICAgIGJvb2wgaXNBdXRvbWF0aWNJbnNw
ZWN0aW9uID0gZmFsc2U7CiAgICAgbV9mcm9udGVuZENoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbER1bW15Pihmcm9udGVuZFBhZ2UpOwotICAgIHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQobV9mcm9udGVuZENoYW5uZWwu
Z2V0KCksIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLmNvbm5lY3RGcm9udGVuZChtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSk7CiAKICAgICBy
ZXR1cm4gbV9mcm9udGVuZFdpbmRvdzsKIH0KQEAgLTE3NDcsOSArMTc0NiwxMyBAQCB2b2lkIElu
dGVybmFsczo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKCkKICAgICBBU1NFUlQocGFnZSk7
CiAgICAgQVNTRVJUKG1fZnJvbnRlbmRXaW5kb3cpOwogCi0gICAgcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246
Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgUGFnZSogZnJvbnRlbmRQYWdlID0gbV9mcm9udGVu
ZFdpbmRvdy0+ZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIEFTU0VSVChmcm9udGVuZFBhZ2UpOwog
CisgICAgZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQobnVsbHB0cik7CiAgICAgbV9mcm9udGVuZENsaWVudCA9IG51bGxwdHI7CisK
KyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKG1fZnJv
bnRlbmRDaGFubmVsLmdldCgpKTsKICAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7CiAK
ICAgICBtX2Zyb250ZW5kV2luZG93LT5jbG9zZShtX2Zyb250ZW5kV2luZG93LT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBjNTBkYmI3YTU4ZDhiNjQzNjAwNmE1Zjlj
MGNkOGVkZDk3NGQ3YjZlLi4wMWI0YmM5MDRjNzM1NzFjZGI2YTNjOTEzOTIyZjM0OGJlNWFlZTZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaApAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBicmluZ1RvRnJvbnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5k
b3coKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyb21CYWNrZW5kKCk7
CisgICAgdm9pZCBkaXNjb25uZWN0RnJvbUJhY2tlbmQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBh
dHRhY2hXaW5kb3coRG9ja1NpZGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hX
aW5kb3coKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCA4MDYwMDNhNjI0NTQwNTcyOWNhZWY4
YTY3MTIzYzYzMTViYWU0ZThlLi42ZTU0NTZiMzEwMzVjMTIyOTUyODIxMmY5ZTRkZDhjN2NkNzJk
NGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBjb25zdCBDR0Zsb2F0
IGluaXRpYWxXaW5kb3dIZWlnaHQgPSA2NTA7CiAtIChXZWJJbnNwZWN0b3JDbGllbnQqKWluc3Bl
Y3RvckNsaWVudDsKIC0gKHZvaWQpc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQ6KHVuc2lnbmVkKWhl
aWdodDsKIC0gKHZvaWQpc2V0RG9ja2luZ1VuYXZhaWxhYmxlOihCT09MKXVuYXZhaWxhYmxlOwot
LSAodm9pZClkZXN0cm95SW5zcGVjdG9yVmlldzooYm9vbClub3RpZnlJbnNwZWN0b3JDb250cm9s
bGVyOworLSAodm9pZClkZXN0cm95SW5zcGVjdG9yVmlldzsKIEBlbmQKIAogCkBAIC0xMzAsNiAr
MTMwLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQo
KQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6YnJpbmdGcm9udGVuZFRvRnJvbnQoKQogewor
ICAgIEFTU0VSVChtX2Zyb250ZW5kQ2xpZW50KTsKICAgICBtX2Zyb250ZW5kQ2xpZW50LT5icmlu
Z1RvRnJvbnQoKTsKIH0KIApAQCAtMjUyLDEyICsyNTMsMTIgQEAgdm9pZCBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6YnJpbmdUb0Zyb250KCkKIAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6Y2xvc2VXaW5kb3coKQogewotICAgIFttX3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkg
ZGVzdHJveUluc3BlY3RvclZpZXc6dHJ1ZV07CisgICAgW21fd2luZG93Q29udHJvbGxlci5nZXQo
KSBkZXN0cm95SW5zcGVjdG9yVmlld107CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OmRpc2Nvbm5lY3RGcm9tQmFja2VuZCgpCiB7Ci0gICAgW21fd2luZG93Q29udHJvbGxl
ci5nZXQoKSBkZXN0cm95SW5zcGVjdG9yVmlldzpmYWxzZV07CisgICAgW21fd2luZG93Q29udHJv
bGxlci5nZXQoKSBkZXN0cm95SW5zcGVjdG9yVmlld107CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ6OmF0dGFjaFdpbmRvdyhEb2NrU2lkZSkKQEAgLTUyMiw3ICs1MjMsNyBA
QCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQoY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZwogCiAtIChCT09MKXdpbmRvd1Nob3VsZENsb3NlOihp
ZClzZW5kZXIKIHsKLSAgICBbc2VsZiBkZXN0cm95SW5zcGVjdG9yVmlldzp0cnVlXTsKKyAgICBb
c2VsZiBkZXN0cm95SW5zcGVjdG9yVmlld107CiAKICAgICByZXR1cm4gWUVTOwogfQpAQCAtNjc2
LDcgKzY3Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZChjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nCiAgICAgLy8gRG8gbm90aGluZy4K
IH0KIAotLSAodm9pZClkZXN0cm95SW5zcGVjdG9yVmlldzooYm9vbClub3RpZnlJbnNwZWN0b3JD
b250cm9sbGVyCistICh2b2lkKWRlc3Ryb3lJbnNwZWN0b3JWaWV3CiB7CiAgICAgUmV0YWluUHRy
PFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXI+IHByb3RlY3Qoc2VsZik7CiAKQEAgLTY5Miw5
ICs2OTMsOSBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQoY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZwogCiAgICAgX3Zpc2libGUgPSBOTzsK
IAotICAgIGlmIChub3RpZnlJbnNwZWN0b3JDb250cm9sbGVyKSB7Ci0gICAgICAgIGlmIChQYWdl
KiBpbnNwZWN0ZWRQYWdlID0gW19pbnNwZWN0ZWRXZWJWaWV3LmdldCgpIHBhZ2VdKQotICAgICAg
ICAgICAgaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9u
dGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7Cisg
ICAgaWYgKFBhZ2UqIGluc3BlY3RlZFBhZ2UgPSBbX2luc3BlY3RlZFdlYlZpZXcuZ2V0KCkgcGFn
ZV0pIHsKKyAgICAgICAgaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldElu
c3BlY3RvckZyb250ZW5kQ2xpZW50KG51bGxwdHIpOworICAgICAgICBpbnNwZWN0ZWRQYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKF9pbnNwZWN0b3JDbGllbnQp
OwogICAgIH0KIAogICAgIFtfd2ViVmlldyBjbG9zZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA0NWQ0
YWIwZGExNjA3NGM3NmIwOGJiNjM0ZDEzYWRhYmQ2ZDZiYWNhLi4yYWJhNTM3MjBiZDAwMDAwMjE2
NjhkY2UzM2FjOTg3MTJkZjkzM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE3NCw3ICsxNzQsNyBA
QCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6
b3Blbkluc3BlY3RvckZyb250ZW5kKElucwogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3Nl
SW5zcGVjdG9yRnJvbnRlbmQoKQogewogICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAg
ICBtX2Zyb250ZW5kQ2xpZW50LT5kZXN0cm95SW5zcGVjdG9yVmlldyhmYWxzZSk7CisgICAgICAg
IG1fZnJvbnRlbmRDbGllbnQtPmRlc3Ryb3lJbnNwZWN0b3JWaWV3KCk7CiB9CiAKIHZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50OjpicmluZ0Zyb250ZW5kVG9Gcm9udCgpCkBAIC0yMzcsNyArMjM3LDcg
QEAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcKIAogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
On5XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpCiB7Ci0gICAgZGVzdHJveUluc3BlY3RvclZp
ZXcodHJ1ZSk7CisgICAgZGVzdHJveUluc3BlY3RvclZpZXcoKTsKIH0KIAogdm9pZCBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6ZnJvbnRlbmRMb2FkZWQoKQpAQCAtMjY5LDcgKzI2OSw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmJyaW5nVG9Gcm9udCgpCiAKIHZvaWQg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNsb3NlV2luZG93KCkKIHsKLSAgICBkZXN0cm95
SW5zcGVjdG9yVmlldyh0cnVlKTsKKyAgICBkZXN0cm95SW5zcGVjdG9yVmlldygpOwogfQogCiB2
b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3coRG9ja1NpZGUpCkBA
IC00MjEsNyArNDIxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2hvd1dp
bmRvd1dpdGhvdXROb3RpZmljYXRpb25zKCkKICAgICBtX2luc3BlY3RvckNsaWVudC0+dXBkYXRl
SGlnaGxpZ2h0KCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ry
b3lJbnNwZWN0b3JWaWV3KGJvb2wgbm90aWZ5SW5zcGVjdG9yQ29udHJvbGxlcikKK3ZvaWQgV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ryb3lJbnNwZWN0b3JWaWV3KCkKIHsKICAgICBt
X2luc3BlY3RvckNsaWVudC0+cmVsZWFzZUZyb250ZW5kKCk7CiAKQEAgLTQzMSwxMCArNDMxLDEw
IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ryb3lJbnNwZWN0b3JWaWV3
KGJvb2wgbm90aWZ5SW5zcGVjdG9yQ29udHJvCiAKICAgICBjbG9zZVdpbmRvd1dpdGhvdXROb3Rp
ZmljYXRpb25zKCk7CiAKLSAgICBpZiAobm90aWZ5SW5zcGVjdG9yQ29udHJvbGxlcikgewotICAg
ICAgICBtX2luc3BlY3RlZFdlYlZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRp
c2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRl
c3Ryb3llZCk7Ci0gICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT51cGRhdGVIaWdobGlnaHQoKTsK
LSAgICB9CisgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChudWxscHRyKTsKKyAgICBtX2luc3BlY3Rl
ZFdlYlZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVu
ZCh0aGlzKTsKKyAgICBtX2luc3BlY3RvckNsaWVudC0+dXBkYXRlSGlnaGxpZ2h0KCk7CisKICAg
ICA6OkRlc3Ryb3lXaW5kb3cobV9mcm9udGVuZEh3bmQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDlm
YjM4NmUzMWNkOTRkYTA3YjY4ZjJjNTFmODU2M2IzOTU1ZWM3MjQuLjk1NjhkYTAzM2ZlNDY0Nzdh
ZmYxM2NiNzM0ODcxYTYzZTAzMDIyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC0xMTMsNyArMTEzLDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgV1RG
OjpTdHJpbmcmIG5ld1VSTCk7CiAKLSAgICB2b2lkIGRlc3Ryb3lJbnNwZWN0b3JWaWV3KGJvb2wg
bm90aWZ5SW5zcGVjdG9yQ29udHJvbGxlcik7CisgICAgdm9pZCBkZXN0cm95SW5zcGVjdG9yVmll
dygpOwogCiBwcml2YXRlOgogICAgIHZvaWQgY2xvc2VXaW5kb3dXaXRob3V0Tm90aWZpY2F0aW9u
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDVhN2YxNzAwYmQxOWFiY2Fh
N2Y3ODU2ZGEyYTAzZWI2Y2UyNmYxYjAuLjY2ZTliYzcwZGFjMDQ0ODc2OTQzZmI1ZGQzOWNkYjJh
NzRkMjM2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTgyLDE3ICs4Miwx
OSBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKICAgICBk
ZWxldGUgdGhpczsKIH0KIAotV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBXZWJJ
bnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVy
KiBjb250cm9sbGVyKQorSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNs
aWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xs
ZXIpCiB7Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y3JlYXRlSW5zcGVjdG9yUGFnZShjb250
cm9sbGVyLT5pc1VuZGVyVGVzdCgpKTsKKyAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5vcGVuRnJv
bnRlbmRDb25uZWN0aW9uKGNvbnRyb2xsZXItPmlzVW5kZXJUZXN0KCkpOwogCiAgICAgcmV0dXJu
IG1fcGFnZS0+aW5zcGVjdG9yKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9z
ZUluc3BlY3RvckZyb250ZW5kKCkKIHsKLSAgICBpZiAobV9wYWdlLT5pbnNwZWN0b3IoKSkKLSAg
ICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y2xvc2VGcm9udGVuZCgpOworICAgIGlmIChtX3Bh
Z2UtPmluc3BlY3RvcigpKSB7CisgICAgICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChtX3BhZ2UtPmluc3BlY3RvcigpKTsKKyAg
ICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y2xvc2VGcm9udGVuZENvbm5lY3Rpb24oKTsKKyAg
ICB9CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpicmluZ0Zyb250ZW5kVG9Gcm9udCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA5YTQ0MDBiZTVhYmE2Yjk5NTE1ZjZkODkx
ZjZlOWE4MTU2NzhhNDE1Li5iODM4MGIxYjg4YjE3NjE0MWZmYzRhODQ1NzM4ODQwZDdiZDk4ZDhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUg
V2ViSW5zcGVjdG9yQ2xpZW50X2gKIAogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ2xpZW50
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGb3J3YXJkaW5nLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlT3ZlcmxheS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKQEAgLTUz
LDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQKICAg
ICB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpIG92ZXJyaWRlOwogCi0gICAgV2ViQ29yZTo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlOworICAgIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFu
bmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciop
IG92ZXJyaWRlOwogICAgIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJl
c2l6ZU1haW5GcmFtZShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCBlMGFkNzU0
NDQ1ODVkOGE5ZTdhMmU3MTYzMTVhMTUxOWY5NWVmZmI5Li41OTY5YWEyMmYzNmRmOTQxMWQ1ZGEx
MDU2ZjFkMjZkMzAyMGVkNTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApAQCAtNzAsNyArNzAsNyBAQCBXZWJJbnNwZWN0b3I6
On5XZWJJbnNwZWN0b3IoKQogfQogCiAvLyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JDbGllbnQK
LXZvaWQgV2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0b3JQYWdlKGJvb2wgdW5kZXJUZXN0KQor
dm9pZCBXZWJJbnNwZWN0b3I6Om9wZW5Gcm9udGVuZENvbm5lY3Rpb24oYm9vbCB1bmRlclRlc3Qp
CiB7CiAjaWYgT1MoREFSV0lOKQogICAgIG1hY2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7CkBAIC05
Myw3ICs5Myw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0b3JQYWdlKGJvb2wg
dW5kZXJUZXN0KQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpDcmVhdGVJbnNwZWN0
b3JQYWdlKGNvbm5lY3Rpb25DbGllbnRQb3J0LCBjYW5BdHRhY2hXaW5kb3coKSwgdW5kZXJUZXN0
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZUZyb250
ZW5kKCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kQ29ubmVjdGlvbigpCiB7CiAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRpZENsb3NlKCksIG1fcGFnZS0+cGFnZUlE
KCkpOwogCkBAIC0yNjIsOCArMjYyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250
ZW5kQ29ubmVjdGVkKCkKIHsKICAgICBpZiAobV9wYWdlLT5jb3JlUGFnZSgpKSB7CiAgICAgICAg
IG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQgPSB0cnVlOwotICAgICAgICBib29sIGlzQXV0b21h
dGljSW5zcGVjdGlvbiA9IGZhbHNlOwotICAgICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQodGhpcywgaXNBdXRvbWF0aWNJbnNwZWN0
aW9uKTsKKyAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCku
Y29ubmVjdEZyb250ZW5kKHRoaXMpOwogICAgIH0KIH0KIApAQCAtMjcyLDcgKzI3MSw3IEBAIHZv
aWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCiAgICAgbV9yZW1v
dGVGcm9udGVuZENvbm5lY3RlZCA9IGZhbHNlOwogCiAgICAgaWYgKG1fcGFnZS0+Y29yZVBhZ2Uo
KSkKLSAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlz
Y29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVz
dHJveWVkKTsKKyAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCkuZGlzY29ubmVjdEZyb250ZW5kKHRoaXMpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAppbmRleCAwNDAwOGUxNWRj
N2EyNmZmYmEzNzdhY2IwNjcxNTYyODY2MTFkZWE5Li4wMDEyODc5Y2ZhOWM2ZDFiNDVkMjMwODgw
Y2UyMmQ5OGRkYjhhZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5oCkBAIC05Nyw5ICs5Nyw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBj
YW5BdHRhY2hXaW5kb3coKTsKIAogICAgIC8vIENhbGxlZCBmcm9tIFdlYkluc3BlY3RvckNsaWVu
dAotICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZShib29sIHVuZGVyVGVzdCk7CisgICAgdm9p
ZCBvcGVuRnJvbnRlbmRDb25uZWN0aW9uKGJvb2wgdW5kZXJUZXN0KTsKKyAgICB2b2lkIGNsb3Nl
RnJvbnRlbmRDb25uZWN0aW9uKCk7CiAKLSAgICB2b2lkIGNsb3NlRnJvbnRlbmQoKTsKICAgICB2
b2lkIGJyaW5nVG9Gcm9udCgpOwogCiAgICAgV2ViUGFnZSogbV9wYWdlOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDkwNGMxYzg0ZWUyYWU5ZDBm
YTBiY2U5OGFkMmNjOTgxM2E0OTVmNzAuLjk0MjYzZjRkZjQyNDY0YTU5Y2U2MjAwMTk5MjU2ZjA5
Y2VkOGJiOTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNS0wOS0wMyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxl
LmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250cm9sbGVyIHNob3Vs
ZCBzdXBwb3J0IG11bHRpcGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgSW5zcGVjdG9yQ2xpZW50cyBtdXN0IGV4cGxp
Y2l0bHkgZGlzY29ubmVjdCB0aGVpciBmcm9udGVuZCBjaGFubmVsKHMpIGZyb20gdGhlCisgICAg
ICAgIGluc3BlY3RlZCBwYWdlJ3MgSW5zcGVjdG9yQ29udHJvbGxlci4KKworICAgICAgICBUbyBt
YWtlIHRoaXMgcG9zc2libGUsIER1bXBSZW5kZXJUcmVlIHNob3VsZCBub3QgZGVzdHJveSBub24t
cHJpbWFyeSB2aWV3cyB1bnRpbAorICAgICAgICBpdCBoYXMgdHJpZWQgdG8gY2xvc2UgYW55IGFi
YW5kb25lZCBXZWIgSW5zcGVjdG9yIGluc3RhbmNlcy4gUGVyZm9ybWluZyB0ZWFyZG93bgorICAg
ICAgICBpbiB0aGUgcmV2ZXJzZSBvcmRlciBwcmV2ZW50cyBkaXNjb25uZWN0aW9uIG9mIHRoZSBm
cm9udGVuZCBjaGFubmVsIGJlY2F1c2UgdGhhdAorICAgICAgICBwcmVtYXR1cmVseSBkZXN0cm95
cyB0aGUgaW5zcGVjdG9yIGZyb250ZW5kIGNsaWVudC4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChydW5UZXN0
KToKKwogMjAxNS0wOS0wMyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
IAogICAgICAgICBGaXggdGhlIDMyLWJpdCBidWlsZApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDBiNTZlZGI5ZGI2NGNlZTkwNDYzYTYyNDI0ZWZmMWM3
MGRiY2U3MzMuLjhhMDFjM2EzMTk0NDg4NWFmNjg4ZTZiMTU5MmQyOWM3ZjMyMTJmMGMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTIwMjgsNiArMjAy
OCwxMyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMaW5lKQogCiAg
ICAgd29ya1F1ZXVlLmNsZWFyKCk7CiAKKyAgICAvLyBJZiB0aGUgdGVzdCBwYWdlIGNvdWxkIGhh
dmUgcG9zc2libHkgb3BlbmVkIHRoZSBXZWIgSW5zcGVjdG9yIGZyb250ZW5kLAorICAgIC8vIHRo
ZW4gdHJ5IHRvIGNsb3NlIGl0IGluIGNhc2UgaXQgd2FzIGFjY2lkZW50YWxseSBsZWZ0IG9wZW4u
CisgICAgaWYgKHNob3VsZEVuYWJsZURldmVsb3BlckV4dHJhcyhwYXRoT3JVUkwuY19zdHIoKSkp
IHsKKyAgICAgICAgZ1Rlc3RSdW5uZXItPmNsb3NlV2ViSW5zcGVjdG9yKCk7CisgICAgICAgIGdU
ZXN0UnVubmVyLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGZhbHNlKTsKKyAgICB9CisKICAg
ICBpZiAoZ1Rlc3RSdW5uZXItPmNsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSgpKSB7
CiAgICAgICAgIE5TQXJyYXkqIGFycmF5ID0gW0R1bXBSZW5kZXJUcmVlV2luZG93IG9wZW5XaW5k
b3dzXTsKIApAQCAtMjA1MSwxMiArMjA1OCw2IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qg
c3RyaW5nJiBpbnB1dExpbmUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBJZiBkZXZlbG9w
ZXIgZXh0cmFzIGVuYWJsZWQgV2ViIEluc3BlY3RvciBtYXkgaGF2ZSBiZWVuIG9wZW4gYnkgdGhl
IHRlc3QuCi0gICAgaWYgKHNob3VsZEVuYWJsZURldmVsb3BlckV4dHJhcyhwYXRoT3JVUkwuY19z
dHIoKSkpIHsKLSAgICAgICAgZ1Rlc3RSdW5uZXItPmNsb3NlV2ViSW5zcGVjdG9yKCk7Ci0gICAg
ICAgIGdUZXN0UnVubmVyLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGZhbHNlKTsKLSAgICB9
Ci0KICAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKTsKIAog
ICAgIC8vIExvYWRpbmcgYW4gZW1wdHkgcmVxdWVzdCBzeW5jaHJvbm91c2x5IHJlcGxhY2VzIHRo
ZSBkb2N1bWVudCB3aXRoIGEgYmxhbmsgb25lLCB3aGljaCBpcyBuZWNlc3NhcnkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGU1NmViMWY1MzdiOTQw
M2Y1NWM2ZWQwM2M5ZDE3Yjg3OTA4MDlkNTYuLmQwMmNmZWM1ODgyNTQ0NTc5NGJkYTBiOTVmZDBm
ZWMwMzg5MTc0MDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVu
ZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcApAQCAtMTE0Nyw2ICsxMTQ3LDEzIEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3Ry
aW5nJiBpbnB1dExpbmUpCiAgICAgLy8gRXZlbnRTZW5kaW5nQ29udHJvbGxlciBjbGVhclNhdmVk
RXZlbnRzCiAgICAgd29ya1F1ZXVlLmNsZWFyKCk7CiAKKyAgICAvLyBJZiB0aGUgdGVzdCBwYWdl
IGNvdWxkIGhhdmUgcG9zc2libHkgb3BlbmVkIHRoZSBXZWIgSW5zcGVjdG9yIGZyb250ZW5kLAor
ICAgIC8vIHRoZW4gdHJ5IHRvIGNsb3NlIGl0IGluIGNhc2UgaXQgd2FzIGFjY2lkZW50YWxseSBs
ZWZ0IG9wZW4uCisgICAgaWYgKHNob3VsZEVuYWJsZURldmVsb3BlckV4dHJhcyhwYXRoT3JVUkwu
Y19zdHIoKSkpIHsKKyAgICAgICAgOjpnVGVzdFJ1bm5lci0+Y2xvc2VXZWJJbnNwZWN0b3IoKTsK
KyAgICAgICAgOjpnVGVzdFJ1bm5lci0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChmYWxzZSk7
CisgICAgfQorCiAgICAgaWYgKDo6Z1Rlc3RSdW5uZXItPmNsb3NlUmVtYWluaW5nV2luZG93c1do
ZW5Db21wbGV0ZSgpKSB7CiAgICAgICAgIFZlY3RvcjxIV05EPiB3aW5kb3dzID0gb3BlbldpbmRv
d3MoKTsKICAgICAgICAgdW5zaWduZWQgc2l6ZSA9IHdpbmRvd3Muc2l6ZSgpOwpAQCAtMTE2MSwx
MSArMTE2OCw2IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1dExpbmUp
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoc2hvdWxkRW5hYmxlRGV2ZWxvcGVyRXh0cmFz
KHBhdGhPclVSTC5jX3N0cigpKSkgewotICAgICAgICA6OmdUZXN0UnVubmVyLT5jbG9zZVdlYklu
c3BlY3RvcigpOwotICAgICAgICA6OmdUZXN0UnVubmVyLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFi
bGVkKGZhbHNlKTsKLSAgICB9Ci0KICAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJl
Zm9yZVRlc3RpbmcoKTsKIAogICAgIC8vIExvYWRpbmcgYW4gZW1wdHkgcmVxdWVzdCBzeW5jaHJv
bm91c2x5IHJlcGxhY2VzIHRoZSBkb2N1bWVudCB3aXRoIGEgYmxhbmsgb25lLCB3aGljaCBpcyBu
ZWNlc3NhcnkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260541</attachid>
            <date>2015-09-03 17:13:31 -0700</date>
            <delta_ts>2015-09-04 11:41:08 -0700</delta_ts>
            <desc>Proposed Fix (for Win EWS)</desc>
            <filename>bug-148538-20150903171329.patch</filename>
            <type>text/plain</type>
            <size>83698</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5Mjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NTdjOGY4N2IzYTU4NWQwYTlhODU3NDI0NWRlYWRhOGFmYmIzZjEwLi43NjI4YzU2NDNjOGM4YzNl
ZWNkNmNkNGM1OGZjNDJiM2YwOWIwNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw4NCBAQAogMjAxNS0wOS0wMyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250cm9sbGVyIHNob3VsZCBzdXBwb3J0
IG11bHRpcGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGgg
UGVjb3Jhcm8uCisKKyAgICAgICAgSW5zdGVhZCBvZiBhIHNpbmdsZXRvbiwgaXQgc2hvdWxkIGJl
IHBvc3NpYmxlIHRvIGhhdmUgbXVsdGlwbGUgY2hhbm5lbHMgb3BlbgorICAgICAgICBhdCB0aGUg
c2FtZSB0aW1lIGFuZCB0byBpbmRpdmlkdWFsbHkgY2xvc2UgY2hhbm5lbHMgYXMgZnJvbnRlbmRz
IGNvbWUgYW5kIGdvLgorCisgICAgICAgIFRoZSBGcm9udGVuZFJvdXRlciBjbGFzcyBrZWVwcyBh
IGxpc3Qgb2Ygb3BlbiBGcm9udGVuZENoYW5uZWxzIGFuZCBzZW5kcyBtZXNzYWdlcworICAgICAg
ICB0byB0aGUgYXBwcm9wcmlhdGUgZnJvbnRlbmRzIGJhc2VkIG9uIHdoZXRoZXIgdGhlIG1lc3Nh
Z2UgaXMgYSByZXNwb25zZSBvciBldmVudC4KKyAgICAgICAgRWFjaCBJbnNwZWN0b3JDb250cm9s
bGVyIG93bnMgYSBzaW5nbGUgRnJvbnRlbmRSb3V0ZXIgYW5kIEJhY2tlbmREaXNwYXRjaGVyIGlu
c3RhbmNlLgorICAgICAgICBJbnNwZWN0b3IgYmFja2VuZCBjb2RlIHRoYXQgc2VuZHMgbWVzc2Fn
ZXMgdG8gdGhlIGZyb250ZW5kIHNob3VsZCBzd2l0Y2ggb3ZlciB0bworICAgICAgICB1c2luZyB0
aGUgcm91dGVyIHJhdGhlciB0aGFuIGRpcmVjdGx5IHVzaW5nIGEgRnJvbnRlbmRDaGFubmVsLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNwcDogTW92ZSBjb25zdHJ1Y3RvcnMvZGVzdHJ1Y3RvcnMgb3V0IG9m
IHRoZSBoZWFkZXIKKyAgICAgICAgdG8gYXZvaWQgaW5jbHVkaW5nIEluc3BlY3RvckZyb250ZW5k
Um91dGVyIGV2ZXJ5d2hlcmUuIFVzZSB0aGUgcm91dGVyIGluc3RlYWQgb2YgYQorICAgICAgICBz
cGVjaWZpYyBmcm9udGVuZCBjaGFubmVsLiBSZW1vdmUgZ3VhcmRzIHRoYXQgYXJlIG5vIGxvbmdl
ciBuZWNlc3Nhcnkgc2luY2UgdGhlIHJvdXRlcgorICAgICAgICBpcyBndWFyYW50ZWVkIHRvIG91
dGxpdmUgdGhlIGJhY2tlbmQgZGlzcGF0Y2hlci4KKworICAgICAgICAoSW5zcGVjdG9yOjpTdXBw
bGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcjo6U3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIp
OgorICAgICAgICAoSW5zcGVjdG9yOjpTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcjo6flN1
cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OkJhY2tlbmREaXNwYXRjaGVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyOjppc0FjdGl2ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
OjpyZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4pOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlcjo6c2VuZFJlc3BvbnNlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OnNlbmRQZW5kaW5nRXJyb3JzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDoKKyAgICAgICAgKEluc3BlY3Rvcjo6U3VwcGxlbWVu
dGFsQmFja2VuZERpc3BhdGNoZXI6OlN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6U3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXI6
On5TdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcik6IERlbGV0ZWQuCisgICAgICAgIChJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpjbGVhckZyb250ZW5kKTogRGVsZXRlZCwgbm8gbG9u
Z2VyIG5lY2Vzc2FyeS4KKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6Omlz
QWN0aXZlKTogTW92ZWQgdG8gaW1wbGVtZW50YXRpb24gZmlsZS4KKyAgICAgICAgKEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXI6OkJhY2tlbmREaXNwYXRjaGVyKTogTW92ZWQgdG8gaW1wbGVt
ZW50YXRpb24gZmlsZS4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI6OmNyZWF0
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpjb25uZWN0RnJvbnRlbmQp
OgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6ZGlzY29ubmVjdEZyb250ZW5k
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI6OmRpc2Nvbm5lY3RBbGxGcm9u
dGVuZHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6bGVha0NoYW5uZWwp
OgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6aGFzTG9jYWxGcm9udGVuZCk6
CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpoYXNSZW1vdGVGcm9udGVuZCk6
CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpzZW5kRXZlbnQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6c2VuZFJlc3BvbnNlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaDogQWRkZWQuCisgICAgICAgICogaW5z
cGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHA6IFJlbW92ZSBndWFy
ZHMgdGhhdCBhcmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KKyAgICAgICAgVGhlIGZyb250ZW5kIHJv
dXRlciBhbmQgYmFja2VuZCBkaXNwYXRjaGVyIG5vdyBoYXZlIHRoZSBzYW1lIGxpZmV0aW1lIGFz
IHRoZSBjb250cm9sbGVyLgorICAgICAgICBFeHBsaWNpdGx5IGNvbm5lY3QvZGlzY29ubmVjdCB0
aGUgZnJvbnRlbmQgY2hhbm5lbC4KKworICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcik6
CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
Z2xvYmFsT2JqZWN0RGVzdHJveWVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoSW5zcGVj
dG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVu
ZCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlzY29ubmVjdEFsbEZyb250ZW5kcyk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjph
cHBlbmRFeHRyYUFnZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyOjpwYXVzZSk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0pT
R2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYXVnbWVudGFibGUvQXVn
bWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgIChJbnNwZWN0b3I6OkF1Z21l
bnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdGVkKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y2xvc2Up
OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2FsdGVy
bmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5OgorICAgICAgICAoQ3BwQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlz
cGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKE9iakNGcm9udGVuZERpc3BhdGNo
ZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfZXZlbnQpOiBVc2UgdGhlIHJvdXRl
ci4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHA6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzY29ubmVjdCk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaDoKKworMjAxNS0wOS0wMyAgQnJp
YW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBzaG91
bGQgY3Jhc2ggb24gcHVycG9zZSBpZiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBpcyB1bnBhcnNl
YWJsZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
NzUwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA5MjYzMzVlMTkwZDc5ZWZlMmFiMjQ5OThmYTY3NTM3NWUxOTE5
YTUxLi45MzcyMDI2Mzc2ZThjMmJiZjFiNTMyNjg0MTlkNmFlMTk5MDNlNDRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDggQEAKKzIwMTUtMDktMDMgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yQ29udHJvbGxlciBzaG91bGQg
c3VwcG9ydCBtdWx0aXBsZSBmcm9udGVuZCBjaGFubmVscworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Sm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hh
bmdlIGZyb20gdGhpcyBwYXRjaC4gVGVhcmRvd24gc2NlbmFyaW9zIGFyZQorICAgICAgICBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIHByb3RvY29sIGFuZCBpbnNwZWN0b3IgdGVzdHMgcnVubmluZyB1bmRl
ciBEUlQgYW5kIFdLVFIuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50
Lmg6IFN0b3AgdXNpbmcgZm9yd2FyZGVkIHR5cGVzLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjpoYXNMb2NhbEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6Omhhc1JlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEFsbEZyb250ZW5kcyk6IEFkZGVk
LiBEaXNjb25uZWN0cyBhbGwKKyAgICAgICAgZnJvbnRlbmRzIGFuZCBzaWduYWxzIERpc2Nvbm5l
Y3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZC4KKworICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmg6IEFkZCBkZWZhdWx0IHZhbHVlIGZvciBpc0F1dG9tYXRpY0luc3Bl
Y3Rpb24uCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcDogVXNlIGEgcm91dGVyIHdpdGggYSBz
aW5nbGV0b24gY2hhbm5lbAorICAgICAgICB0aGF0IGZvcndhcmRzIG1lc3NhZ2VzIG92ZXIgdG8g
dGhlIG1haW4gcGFnZS4KKworICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZy
b21Gcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VEZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VEZWJ1
Z2dhYmxlLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOiBDbGVhciB0aGUgZnJv
bnRlbmQgY2xpZW50IGJlZm9yZSBkaXNjb25uZWN0aW5nIGZyb250ZW5kIGNoYW5uZWwuCisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKToK
KwogMjAxNS0wOS0wMyAgQWRlbmlsc29uIENhdmFsY2FudGkgIDxjYXZhbGNhbnRpaUBnbWFpbC5j
b20+CiAKICAgICAgICAgSW1wcm92ZSBhY2Nlc3Mgc3BlY2lmaWVyIHVzZSBpbiBSZW5kZXJPYmpl
Y3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwppbmRleCAwNDY5NGEwMjlkMzU3MTNmOWFiZDAzYzNmNjdiMzlhYThh
MzQzZmM2Li45MWRlZTk5MjNjNWU2ODMyYzNhZDIzYTc0YmFmMmMzYzZiODEyNGY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTUtMDktMDMgIEJyaWFuIEJ1cmcgIDxiYnVy
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yQ29udHJvbGxl
ciBzaG91bGQgc3VwcG9ydCBtdWx0aXBsZSBmcm9udGVuZCBjaGFubmVscworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTM4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgIFJlbW92ZSB0aGUgbm90aWZ5SW5z
cGVjdG9yQ29udHJvbGxlciBmbGFnIGZyb20gY2xvc2VXaW5kb3cuIFNpbmNlIEluc3BlY3RvckNs
aWVudHMKKyAgICAgICAgbXVzdCBub3cgbWFudWFsbHkgZGlzY29ubmVjdCB0aGVpciBGcm9udGVu
ZENoYW5uZWwocyksIHdlIHNob3VsZCBhbHdheXMKKyAgICAgICAgcGVyZm9ybSB0aGUgdGVhcmRv
d24gdGhhdCB3YXMgZ3VhcmRlZCBieSB0aGlzIGZsYWcuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmJyaW5nRnJv
bnRlbmRUb0Zyb250KTogQWRkIGEgbWlzc2luZyBhc3NlcnRpb24uCisgICAgICAgIChXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6Y2xvc2VXaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ6OmRpc2Nvbm5lY3RGcm9tQmFja2VuZCk6CisgICAgICAgICgtW1dlYklu
c3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgd2luZG93U2hvdWxkQ2xvc2U6XSk6CisgICAgICAgICgt
W1dlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgZGVzdHJveUluc3BlY3RvclZpZXddKTogQWx3
YXlzIGNsZWFyIHRoZSBmcm9udGVuZCBjbGllbnQuCisgICAgICAgICgtW1dlYkluc3BlY3Rvcldp
bmRvd0NvbnRyb2xsZXIgZGVzdHJveUluc3BlY3RvclZpZXc6XSk6IFJlbmFtZWQgdG8gYWJvdmUu
CisKIDIwMTUtMDgtMjYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IFtDb250ZW50IEZpbHRlcmluZ10gRGV0ZXJtaW5lIG5hdmlnYXRpb24gYW5kIGNvbnRlbnQgcG9s
aWN5IGJlZm9yZSBjb250aW51aW5nIHRvIGZpbHRlciBhIGxvYWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRl
eCA0OWExMjQ4NDAxYzVhODVkMzA3OTY2MzYxZWRhNDUxYzk0OTRhMThkLi4zNjZkNjFkNDEzOTg2
YTZiZmQ4Yzk5MTAyZjRmODExMDQ3MDBjNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTUtMDktMDMgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yQ29udHJvbGxlciBzaG91bGQgc3VwcG9ydCBtdWx0
aXBsZSBmcm9udGVuZCBjaGFubmVscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ4NTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29y
YXJvLgorCisgICAgICAgIFJlbW92ZSB0aGUgbm90aWZ5SW5zcGVjdG9yQ29udHJvbGxlciBmbGFn
IGZyb20gY2xvc2VXaW5kb3cuIFNpbmNlIEluc3BlY3RvckNsaWVudHMKKyAgICAgICAgbXVzdCBu
b3cgbWFudWFsbHkgZGlzY29ubmVjdCB0aGVpciBGcm9udGVuZENoYW5uZWwocyksIHdlIHNob3Vs
ZCBhbHdheXMKKyAgICAgICAgcGVyZm9ybSB0aGUgdGVhcmRvd24gdGhhdCB3YXMgZ3VhcmRlZCBi
eSB0aGlzIGZsYWcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUluc3BlY3RvckZyb250
ZW5kKToKKyAgICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojp+V2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNs
b3NlV2luZG93KToKKyAgICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkZXN0cm95
SW5zcGVjdG9yVmlldyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lmg6CisKIDIwMTUtMDktMDIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgog
CiAgICAgICAgIFNjcm9sbGJhclRoZW1lcyBzaG91bGQgYmUgcmV0dXJuZWQgYnkgcmVmZXJlbmNl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGQ1NGVkYWE0MDVhMjA5NWMzMzMzZWFmM2RlNDgxY2JkOTY3MGI2ZTgu
LjJmNGE1NGM4M2QyZjY1NTgxNTMwZWQ4N2M2OTc0NmNiODUzOGVlYjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAxNS0wOS0wMyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250cm9sbGVyIHNob3VsZCBzdXBw
b3J0IG11bHRpcGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAgICBSZXZpZXdlZCBieSBKb3Nl
cGggUGVjb3Jhcm8uCisKKyAgICAgICAgRXhwbGljaXRseSBkaXNjb25uZWN0IHRoZSBmcm9udGVu
ZCBjaGFubmVsIHdoZW4gY2xvc2luZyB0aGUgZnJvbnRlbmQuCisKKyAgICAgICAgUmVuYW1lIGNy
ZWF0ZUluc3BlY3RvclBhZ2UvY2xvc2VGcm9udGVuZCB0byB0aGUgc3ltbWV0cmljIGFuZCB1bmFt
YmlndW91cworICAgICAgICB7b3BlbixjbG9zZX1Gcm9udGVuZENvbm5lY3Rpb24gaW4gdGhlIFdl
Ykluc3BlY3RvciBjbGFzcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yQ2xp
ZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6IFN0b3AgdXNpbmcgYSBmb3J3YXJk
ZWQgdHlwZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpvcGVuRnJvbnRlbmRDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kQ29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kRGlzY29ubmVj
dGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0b3JQYWdl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5k
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmg6
CisKIDIwMTUtMDktMDMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW01hY10gQWRkIHN1cHBvcnQgZm9yIHRlc3Rpbmcgc3dpcGVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMmQzMGJiOTE3NTU3MjQ0MzQ2MzRkYTE3ZjMyZDk2
YTg2ZTBkY2U3NC4uMjM5MTlmMDEzMWM3NTJjZjgzY2ViMTg0Yzg4Yjg2N2RlN2M0YWU2NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMzIzLDYgKzMyMyw3IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdl
ci5jcHAKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCiAgICAgaW5zcGVj
dG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCisgICAgaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kUm91dGVyLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAogICAgIGluc3BlY3Rvci9K
U0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvagppbmRleCBhZmYxMmViM2E0OWUyNGYwYzlmMDFhZDJjM2IxMWQ4MDc4NWZmNGJj
Li5iODE1NjBjMjEyYTRkZDJkN2ZlMDVjM2MyOWM0ZDliM2ZhMzAxZmEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTU5NSw2ICs1OTUsNyBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluamVjdGVkU2NyaXB0TW9kdWxlLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxp
bnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEpTSW5qZWN0ZWRTY3JpcHRIb3N0
UHJvdG90eXBlLmNwcCIgLz4KQEAgLTEzODQsNiArMTM4NSw3IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JFbnZpcm9ubWVudC5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXElu
c3BlY3RvckZyb250ZW5kUm91dGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxp
bnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxpbnNwZWN0b3JcSlNJbmplY3RlZFNjcmlwdEhvc3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oIiAvPgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYzViNmE0YjI2ZGM0YTQ4YzRkZTU2MzFj
ZWE2MmIyYmEyMjQ4N2ZlLi5mM2JhODZkZjYwZWYwODMzYTFjMzNjOWI0ZWVjOTlmZmMwODI3OTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE5NSw2ICsxMTk1LDggQEAKIAkJ
OTlFNDVBMjYxOEExQjI1OTAwMjZEODhGIC8qIEVuY29kZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNDVBMjExOEExQjI1OTAwMjZEODhG
IC8qIEVuY29kZWRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTk5RTQ1QTI3MThBMUIyNTkwMDI2RDg4RiAvKiBJbnB1dEN1cnNvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNDVBMjIxOEEx
QjI1OTAwMjZEODhGIC8qIElucHV0Q3Vyc29yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTlFNDVBMjgxOEExQjI1OTAwMjZEODhGIC8qIE5vbmRl
dGVybWluaXN0aWNJbnB1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTlFNDVBMjMxOEExQjI1OTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJbnB1
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5
RjFBNkZFMUI4RTZEOTQwMDQ2M0IyNiAvKiBJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUYxQTZGQzFCOEU2
RDk0MDA0NjNCMjYgLyogSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwICovOyB9OworCQk5OUYx
QTcwMTFCOThGQkVDMDA0NjNCMjYgLyogSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RjFBNzAwMUI5OEZCRUMw
MDQ2M0IyNiAvKiBJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlFNzI5NDA3MTkwRjAxQTUwMDFBOTFCNSAv
KiBJbml0aWFsaXplVGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxNzg2MzZDMEQ5QkVFQzMwMEQ3NEU3NSAvKiBJbml0aWFsaXplVGhy
ZWFkaW5nLmNwcCAqLzsgfTsKIAkJOUU3Mjk0MDgxOTBGMDIxRTAwMUE5MUI1IC8qIEluaXRpYWxp
emVMTFZNUE9TSVguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZDRUZBQzUxODA1RTc1NTAwNDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNUE9TSVguY3Bw
ICovOyB9OwogCQk5RTcyOTQwQjE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUU3Mjk0MEExOTBGMDUx
NDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGguaCAqLzsgfTsKQEAgLTMwNjEsNiArMzA2Myw4IEBACiAJ
CTk5RTQ1QTIxMThBMUIyNTkwMDI2RDg4RiAvKiBFbmNvZGVkVmFsdWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRW5jb2RlZFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk5RTQ1QTIyMThBMUIyNTkwMDI2RDg4RiAvKiBJbnB1dEN1cnNvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnB1dEN1cnNvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5OUU0NUEyMzE4QTFCMjU5MDAyNkQ4OEYgLyogTm9uZGV0ZXJtaW5p
c3RpY0lucHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbmRldGVybWlu
aXN0aWNJbnB1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUYxQTZGQzFCOEU2
RDk0MDA0NjNCMjYgLyogSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUYxQTcwMDFCOThGQkVDMDA0NjNCMjYgLyogSW5z
cGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OUI0OTU0RTgxQTY2NDBEQjAwMjgxNUE2IC8qIFBhcnNlckZ1bmN0aW9uSW5mby5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQYXJzZXJGdW5jdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOUU3Mjk0MDkxOTBGMDMwNjAwMUE5MUI1IC8qIEJ1bmRsZVBhdGgubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBCdW5kbGVQYXRoLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5RTcyOTQwQTE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdW5kbGVQYXRoLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NzA3LDYgKzU3MTEsNyBAQAogCQlBNUJBMTVERjE4MjM0
MDkyMDBBODJFNjkgLyogaW5zcGVjdG9yICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk5OUYxQTcwMDFCOThGQkVDMDA0NjNCMjYgLyogSW5zcGVjdG9yRnJv
bnRlbmRSb3V0ZXIuaCAqLywKIAkJCQlBNTEzRTVDQzE4NUZCOTkyMDA3RTk1QUQgLyogYWdlbnRz
ICovLAogCQkJCUE1RUE3MEUzMTlGNUIwRTIwMDk4RjVFQyAvKiBhdWdtZW50YWJsZSAqLywKIAkJ
CQlBNTMyNDM4RDE4NTY5NkNBMDAyRUQ2OTIgLyogcHJvdG9jb2wgKi8sCkBAIC01NzM4LDYgKzU3
NDMsNyBAQAogCQkJCUE1OTNDRjdCMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5oICovLAogCQkJCUE1RDBBMUJBMTg2MjMwMUIwMEM3QjQ5NiAvKiBJbnNwZWN0
b3JFbnZpcm9ubWVudC5oICovLAogCQkJCUE1OTQ1NTk0MTgyNDc5RUIwMENDMzg0MyAvKiBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLywKKwkJCQk5OUYxQTZGQzFCOEU2RDk0MDA0NjNCMjYg
LyogSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwICovLAogCQkJCUE1NUQ5M0FCMTg1MTRGNzkw
MDQwMERFRCAvKiBJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmggKi8sCiAJCQkJQTU5M0NGODAxODQw
Mzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi8sCiAJCQkJQTU5M0NGODExODQw
Mzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oICovLApAQCAtNTkwMSw2ICs1OTA3LDcg
QEAKIAkJCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGODk4RjMyMUIyNzY4OUYwMDgzQTMzQyAvKiBERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IyQzQxMDE1NkJE
RTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlGMUE3MDEx
Qjk4RkJFQzAwNDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3OTY0NjU2QTFCOTUyRkYwMDAzMDU5RUUgLyogR2V0UHV0SW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzk3RTA3QUExQjhGQ0ZCOTAwODQwMEJBIC8qIEpTR2xvYmFsTGV4aWNhbEVu
dmlyb25tZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyODFBQTkwOTU2MDBEMzNCMzMg
LyogU2NvcGVkQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKQEAgLTc5MzMsNiArNzk0MCw3IEBA
CiAJCQkJQzIyNTQ5NDMxNUY3REJBQTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzMzA0MDJDMEU2QTc2NDAwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTNFRjg4NzQxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTlGMUE2RkUxQjhFNkQ5NDAw
NDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGOEYyQjlFMTczMDZDOEQwMDdEQkRBNSAvKiBTb3VyY2VDb2RlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGNDkzQUZBMTZEMENBRDMwMDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFMzNFOEQxQzFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRG
dW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKaW5k
ZXggNGQ0NWRhOTllMWJmNjY0NzUzN2Q4NGMxNDEzNTIyOTM5YjA5ODA4OS4uMDkzNmI0MTExYzI0
MTMzNGQ3NDljMjI0MWQzYjZjMTQ1MTg2OTA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5j
cHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5oIgogCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIK
ICNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgpAQCAtMzUsNiArMzYsMTUgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKK1N1
cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyOjpTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hl
cihCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIpCisgICAgOiBtX2JhY2tlbmRE
aXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKQoreworfQorCitTdXBwbGVtZW50YWxCYWNrZW5k
RGlzcGF0Y2hlcjo6flN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKCkKK3sKK30KKwogQmFj
a2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKFJlZjxCYWNrZW5kRGlz
cGF0Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwgbG9uZyByZXF1ZXN0SWQpCiAgICAgOiBtX2Jh
Y2tlbmREaXNwYXRjaGVyKFdURjo6bW92ZShiYWNrZW5kRGlzcGF0Y2hlcikpCiAgICAgLCBtX3Jl
cXVlc3RJZChyZXF1ZXN0SWQpCkBAIC02OSwxNSArNzksMjggQEAgdm9pZCBCYWNrZW5kRGlzcGF0
Y2hlcjo6Q2FsbGJhY2tCYXNlOjpzZW5kU3VjY2VzcyhSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYm
IHBhcnQKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UobV9yZXF1ZXN0SWQs
IFdURjo6bW92ZShwYXJ0aWFsTWVzc2FnZSkpOwogfQogCi1SZWY8QmFja2VuZERpc3BhdGNoZXI+
IEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwpCitCYWNrZW5kRGlzcGF0Y2hlcjo6QmFja2VuZERpc3BhdGNoZXIoUmVmPEZyb250ZW5kUm91
dGVyPiYmIHJvdXRlcikKKyAgICA6IG1fZnJvbnRlbmRSb3V0ZXIoV1RGOjptb3ZlKHJvdXRlcikp
Cit7Cit9CisKK1JlZjxCYWNrZW5kRGlzcGF0Y2hlcj4gQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShSZWY8RnJvbnRlbmRSb3V0ZXI+JiYgcm91dGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEJhY2tlbmREaXNwYXRjaGVyKGZyb250ZW5kQ2hhbm5lbCkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEJhY2tlbmREaXNwYXRjaGVyKFdURjo6bW92ZShyb3V0ZXIpKSk7Cit9CisKK2Jv
b2wgQmFja2VuZERpc3BhdGNoZXI6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9m
cm9udGVuZFJvdXRlci0+aGFzRnJvbnRlbmRzKCk7CiB9CiAKIHZvaWQgQmFja2VuZERpc3BhdGNo
ZXI6OnJlZ2lzdGVyRGlzcGF0Y2hlckZvckRvbWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbiwgU3Vw
cGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIqIGRpc3BhdGNoZXIpCiB7Ci0gICAgYXV0byByZXN1
bHQgPSBtX2Rpc3BhdGNoZXJzLmFkZChkb21haW4sIGRpc3BhdGNoZXIpOwotICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgQVNTRVJUX0FSRyhkaXNwYXRj
aGVyLCBkaXNwYXRjaGVyKTsKKworICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTQ4NDkyPiBBZ2VudHMgc2hvdWxkIG9ubHkgcmVnaXN0ZXIgd2l0aCB0aGUgYmFja2VuZCBvbmNl
LAorICAgIC8vIGFuZCB3ZSBzaG91bGQgcmUtYWRkIHRoZSBhc3NlcnRpb24gdGhhdCBvbmx5IG9u
ZSBkaXNwYXRjaGVyIGlzIHJlZ2lzdGVyZWQgcGVyIGRvbWFpbi4KKyAgICBtX2Rpc3BhdGNoZXJz
LnNldChkb21haW4sIGRpc3BhdGNoZXIpOwogfQogCiB2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpk
aXNwYXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0xNjUsOSArMTg4LDYgQEAgdm9pZCBC
YWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiB2b2lk
IEJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UobG9uZyByZXF1ZXN0SWQsIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+JiYgcmVzdWx0KQogewotICAgIGlmICghbV9mcm9udGVuZENoYW5uZWwp
Ci0gICAgICAgIHJldHVybjsKLQogICAgIEFTU0VSVCghbV9wcm90b2NvbEVycm9ycy5zaXplKCkp
OwogCiAgICAgLy8gVGhlIEpTT04tUlBDIDIuMCBzcGVjaWZpY2F0aW9uIHJlcXVpcmVzIHRoYXQg
dGhlICJlcnJvciIgbWVtYmVyIGhhdmUgdGhlIHZhbHVlICdudWxsJwpAQCAtMTc1LDcgKzE5NSw3
IEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnNlbmRSZXNwb25zZShsb25nIHJlcXVlc3RJZCwg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiByCiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVz
cG9uc2VNZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICByZXNwb25zZU1l
c3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInJlc3VsdCIpLCByZXN1bHQpOwogICAgIHJl
c3BvbnNlTWVzc2FnZS0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImlkIiksIHJlcXVlc3RJZCk7
Ci0gICAgbV9mcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChyZXNwb25zZU1l
c3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKKyAgICBtX2Zyb250ZW5kUm91dGVyLT5zZW5kUmVzcG9u
c2UocmVzcG9uc2VNZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiB9CiAKIHZvaWQgQmFja2VuZERp
c3BhdGNoZXI6OnNlbmRQZW5kaW5nRXJyb3JzKCkKQEAgLTE5MCw5ICsyMTAsNiBAQCB2b2lkIEJh
Y2tlbmREaXNwYXRjaGVyOjpzZW5kUGVuZGluZ0Vycm9ycygpCiAgICAgICAgIC0zMjAwMCwgLy8g
U2VydmVyRXJyb3IKICAgICB9OwogCi0gICAgaWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAogICAgIC8vIFRvIGNvbnN0cnVjdCB0aGUgZXJyb3Igb2JqZWN0LCBv
bmx5IHVzZSB0aGUgbGFzdCBlcnJvcidzIGNvZGUgYW5kIG1lc3NhZ2UuCiAgICAgLy8gUGVyIEpT
T04tUlBDIDIuMCwgU2VjdGlvbiA1LjEsIHRoZSAnZGF0YScgbWVtYmVyIG1heSBjb250YWluIG5l
c3RlZCBlcnJvcnMsCiAgICAgLy8gYnV0IG9ubHkgb25lIHRvcC1sZXZlbCBFcnJvciBvYmplY3Qg
c2hvdWxkIGJlIHNlbnQgcGVyIHJlcXVlc3QuCkBAIC0yMjcsNyArMjQ0LDcgQEAgdm9pZCBCYWNr
ZW5kRGlzcGF0Y2hlcjo6c2VuZFBlbmRpbmdFcnJvcnMoKQogICAgICAgICBtZXNzYWdlLT5zZXRW
YWx1ZShBU0NJSUxpdGVyYWwoImlkIiksIEluc3BlY3RvclZhbHVlOjpudWxsKCkpOwogICAgIH0K
IAotICAgIG1fZnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZS0+
dG9KU09OU3RyaW5nKCkpOworICAgIG1fZnJvbnRlbmRSb3V0ZXItPnNlbmRSZXNwb25zZShtZXNz
YWdlLT50b0pTT05TdHJpbmcoKSk7CiAKICAgICBtX3Byb3RvY29sRXJyb3JzLmNsZWFyKCk7CiAg
ICAgbV9jdXJyZW50UmVxdWVzdElkID0gTnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaApp
bmRleCBmMjI0ODJkOWIwZjk1MTI4OTczOTUxY2Y4MzIzMjdmMGFiMzgxNTAzLi5jNjFjZjFkMGNk
M2Y4NTQ3ZTRkNTYwODI4MGQwMGFjODc3ZTk1YzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
CkBAIC0zNSwxNSArMzUsMTQgQEAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBCYWNr
ZW5kRGlzcGF0Y2hlcjsKLWNsYXNzIEZyb250ZW5kQ2hhbm5lbDsKK2NsYXNzIEZyb250ZW5kUm91
dGVyOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogY2xhc3MgU3VwcGxlbWVudGFs
QmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTdXBwbGVtZW50YWxCYWNrZW5k
RGlzcGF0Y2hlcj4gewogcHVibGljOgotICAgIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVy
KEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlcikKLSAgICAgICAgOiBtX2JhY2tl
bmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKSB7IH0KLSAgICB2aXJ0dWFsIH5TdXBwbGVt
ZW50YWxCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQorICAgIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNw
YXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJik7CisgICAgdmlydHVhbCB+U3VwcGxlbWVudGFsQmFj
a2VuZERpc3BhdGNoZXIoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyByZXF1ZXN0
SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2Up
ID0gMDsKIHByb3RlY3RlZDoKICAgICBSZWY8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERp
c3BhdGNoZXI7CkBAIC01MSw3ICs1MCw3IEBAIHByb3RlY3RlZDoKIAogY2xhc3MgQmFja2VuZERp
c3BhdGNoZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxCYWNrZW5kRGlzcGF0Y2hlcj4gewogcHVibGlj
OgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QmFja2VuZERpc3BhdGNoZXI+IGNy
ZWF0ZShGcm9udGVuZENoYW5uZWwqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PEJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoUmVmPEZyb250ZW5kUm91dGVyPiYmKTsKIAogICAg
IGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIENhbGxiYWNrQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVk
PENhbGxiYWNrQmFzZT4gewogICAgIHB1YmxpYzoKQEAgLTY5LDggKzY4LDcgQEAgcHVibGljOgog
ICAgICAgICBib29sIG1fYWxyZWFkeVNlbnQgeyBmYWxzZSB9OwogICAgIH07CiAKLSAgICB2b2lk
IGNsZWFyRnJvbnRlbmQoKSB7IG1fZnJvbnRlbmRDaGFubmVsID0gbnVsbHB0cjsgfQotICAgIGJv
b2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiAhIW1fZnJvbnRlbmRDaGFubmVsOyB9CisgICAg
Ym9vbCBpc0FjdGl2ZSgpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNQcm90b2NvbEVycm9ycygpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvdG9jb2xFcnJvcnMuc2l6ZSgpID4gMDsgfQogCkBAIC0xMDQsMTIg
KzEwMiw5IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGdldEFycmF5KElu
c3BlY3Rvck9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCk7CiAK
IHByaXZhdGU6Ci0gICAgQmFja2VuZERpc3BhdGNoZXIoRnJvbnRlbmRDaGFubmVsKiBjaGFubmVs
KQotICAgICAgICA6IG1fZnJvbnRlbmRDaGFubmVsKGNoYW5uZWwpCi0gICAgewotICAgIH0KKyAg
ICBCYWNrZW5kRGlzcGF0Y2hlcihSZWY8RnJvbnRlbmRSb3V0ZXI+JiYpOwogCi0gICAgRnJvbnRl
bmRDaGFubmVsKiBtX2Zyb250ZW5kQ2hhbm5lbDsKKyAgICBSZWY8RnJvbnRlbmRSb3V0ZXI+IG1f
ZnJvbnRlbmRSb3V0ZXI7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN1cHBsZW1lbnRhbEJhY2tlbmRE
aXNwYXRjaGVyKj4gbV9kaXNwYXRjaGVyczsKIAogICAgIC8vIFByb3RvY29sIGVycm9ycyByZXBv
cnRlZCBmb3IgdGhlIHRvcC1sZXZlbCByZXF1ZXN0IGJlaW5nIHByb2Nlc3NlZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZFJvdXRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg3YTY3OGE2NWVmYmViNjBmNWZkZDhiM2MxMjI5NWZk
ZDZlZDMxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kUm91
dGVyLmgiCisKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworUmVmPEZyb250
ZW5kUm91dGVyPiBGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGcm9udGVuZFJvdXRlcik7Cit9CisKK3ZvaWQgRnJvbnRlbmRSb3V0ZXI6OmNvbm5l
Y3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUX0FS
Ryhjb25uZWN0aW9uLCBjb25uZWN0aW9uKTsKKworICAgIGlmIChtX2Nvbm5lY3Rpb25zLmNvbnRh
aW5zKGNvbm5lY3Rpb24pKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9jb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbik7
Cit9CisKK3ZvaWQgRnJvbnRlbmRSb3V0ZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChGcm9udGVuZENo
YW5uZWwqIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUX0FSRyhjb25uZWN0aW9uLCBjb25uZWN0
aW9uKTsKKworICAgIGlmICghbV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uKSkgewor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1fY29ubmVjdGlvbnMucmVtb3ZlRmlyc3QoY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgRnJv
bnRlbmRSb3V0ZXI6OmRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKQoreworICAgIG1fY29ubmVjdGlv
bnMuY2xlYXIoKTsKK30KKworLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDg0OTI+
IHJlbW92ZSB0aGlzIG1ldGhvZCBvbmNlIGFnZW50cyBtb3ZlIHRvIHVzaW5nIEZyb250ZW5kUm91
dGVyIGRpcmVjdGx5LgorRnJvbnRlbmRDaGFubmVsKiBGcm9udGVuZFJvdXRlcjo6bGVha0NoYW5u
ZWwoKSBjb25zdAoreworICAgIGlmIChtX2Nvbm5lY3Rpb25zLnNpemUoKSkKKyAgICAgICAgcmV0
dXJuIG1fY29ubmVjdGlvbnMuYXQoMCk7CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9v
bCBGcm9udGVuZFJvdXRlcjo6aGFzTG9jYWxGcm9udGVuZCgpIGNvbnN0Cit7CisgICAgZm9yIChh
dXRvKiBjb25uZWN0aW9uIDogbV9jb25uZWN0aW9ucykgeworICAgICAgICBpZiAoY29ubmVjdGlv
bi0+Y29ubmVjdGlvblR5cGUoKSA9PSBGcm9udGVuZENoYW5uZWw6OkNvbm5lY3Rpb25UeXBlOjpM
b2NhbCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBGcm9udGVuZFJvdXRlcjo6aGFzUmVtb3RlRnJvbnRlbmQoKSBjb25zdAor
eworICAgIGZvciAoYXV0byogY29ubmVjdGlvbiA6IG1fY29ubmVjdGlvbnMpIHsKKyAgICAgICAg
aWYgKGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25UeXBlKCkgPT0gRnJvbnRlbmRDaGFubmVsOjpDb25u
ZWN0aW9uVHlwZTo6UmVtb3RlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEZyb250ZW5kUm91dGVyOjpzZW5kRXZlbnQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKSBjb25zdAoreworICAgIGZvciAoYXV0byogY29ubmVjdGlvbiA6
IG1fY29ubmVjdGlvbnMpCisgICAgICAgIGNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlVG9Gcm9udGVu
ZChtZXNzYWdlKTsKK30KKwordm9pZCBGcm9udGVuZFJvdXRlcjo6c2VuZFJlc3BvbnNlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogc2VuZCByZXNwb25zZXMg
dG8gdGhlIGFwcHJvcHJpYXRlIGZyb250ZW5kLgorICAgIGZvciAoYXV0byogY29ubmVjdGlvbiA6
IG1fY29ubmVjdGlvbnMpCisgICAgICAgIGNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlVG9Gcm9udGVu
ZChtZXNzYWdlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGE2NDExYmVjNDI2NTc3MDA1ZDI4OWJkNDMzZGIwYTAzODIzMzliYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRSb3V0ZXIuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBJbnNwZWN0b3JGcm9udGVuZFJvdXRlcl9oCisjZGVmaW5lIEluc3BlY3RvckZyb250ZW5kUm91
dGVyX2gKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIEZyb250ZW5kQ2hhbm5l
bDsKKworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRnJvbnRlbmRSb3V0ZXIgOiBwdWJsaWMgUmVm
Q291bnRlZDxGcm9udGVuZFJvdXRlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8RnJvbnRl
bmRSb3V0ZXI+IGNyZWF0ZSgpOworCisgICAgYm9vbCBoYXNGcm9udGVuZHMoKSBjb25zdCB7IHJl
dHVybiAhbV9jb25uZWN0aW9ucy5pc0VtcHR5KCk7IH0KKyAgICBib29sIGhhc0xvY2FsRnJvbnRl
bmQoKSBjb25zdDsKKyAgICBib29sIGhhc1JlbW90ZUZyb250ZW5kKCkgY29uc3Q7CisKKyAgICB2
b2lkIGNvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqKTsKKyAgICB2b2lkIGRpc2Nvbm5l
Y3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RBbGxGcm9u
dGVuZHMoKTsKKworICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTQ4NDkyPiBy
ZW1vdmUgdGhpcyBtZXRob2Qgb25jZSBhZ2VudHMgbW92ZSB0byB1c2luZyBGcm9udGVuZFJvdXRl
ciBkaXJlY3RseS4KKyAgICBGcm9udGVuZENoYW5uZWwqIGxlYWtDaGFubmVsKCkgY29uc3Q7CisK
KyAgICB2b2lkIHNlbmRFdmVudChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0OworICAgIHZv
aWQgc2VuZFJlc3BvbnNlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgY29uc3Q7CisKK3ByaXZhdGU6
CisgICAgVmVjdG9yPEZyb250ZW5kQ2hhbm5lbCosIDI+IG1fY29ubmVjdGlvbnM7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckZy
b250ZW5kUm91dGVyX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
aW5kZXggMTQzZDdmMTM0N2VhYjJjNWYxZmMxYzM3OThjYjg1ZjMyNDc1MjkxZS4uMzM1MGZjMGQx
ODk1MWYwODJmYTc5NzExMjA3YTViMjgwN2VmNGNhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rv
ckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZFJvdXRlci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3RDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdENvbnNv
bGVDbGllbnQuaCIKQEAgLTYzLDcgKzY0LDggQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiBKU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlcihKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIDogbV9nbG9iYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtl
X3VuaXF1ZTxJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBJbmplY3RlZFNjcmlwdEhvc3Q6
OmNyZWF0ZSgpKSkKLSAgICAsIG1fZnJvbnRlbmRDaGFubmVsKG51bGxwdHIpCisgICAgLCBtX2Zy
b250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKKyAgICAsIG1fYmFja2VuZERp
c3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlS
ZWYoKSkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQog
ICAgICwgbV9pbmNsdWRlTmF0aXZlQ2FsbFN0YWNrV2l0aEV4Y2VwdGlvbnModHJ1ZSkKICAgICAs
IG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uKGZhbHNlKQpAQCAtOTgsMjIgKzEwMCwyNCBAQCBKU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6On5KU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXIoKQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2xv
YmFsT2JqZWN0RGVzdHJveWVkKCkKIHsKLSAgICBkaXNjb25uZWN0RnJvbnRlbmQoRGlzY29ubmVj
dFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkKTsKKyAgICBkaXNjb25uZWN0QWxsRnJv
bnRlbmRzKCk7CiAKICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+ZGlzY29ubmVjdCgpOwog
fQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250
ZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBib29sIGlzQXV0b21hdGljSW5z
cGVjdGlvbikKIHsKLSAgICBBU1NFUlQoIW1fZnJvbnRlbmRDaGFubmVsKTsKLSAgICBBU1NFUlQo
IW1fYmFja2VuZERpc3BhdGNoZXIpOworICAgIEFTU0VSVF9BUkcoZnJvbnRlbmRDaGFubmVsLCBm
cm9udGVuZENoYW5uZWwpOwogCiAgICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBpc0F1dG9t
YXRpY0luc3BlY3Rpb247CiAKLSAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IGZyb250ZW5kQ2hhbm5l
bDsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShm
cm9udGVuZENoYW5uZWwpOworICAgIGJvb2wgY29ubmVjdGVkRmlyc3RGcm9udGVuZCA9ICFtX2Zy
b250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMoKTsKKyAgICBtX2Zyb250ZW5kUm91dGVyLT5jb25u
ZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVsKTsKIAotICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChmcm9udGVuZENoYW5uZWwsIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0
KCkpOworICAgIGlmICghY29ubmVjdGVkRmlyc3RGcm9udGVuZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5l
bCwgJm1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9B
TFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgbV9pbnNwZWN0b3JBZ2VudC0+YWN0aXZhdGVFeHRy
YURvbWFpbnMobV9hZ2VudHMuZXh0cmFEb21haW5zKCkpOwpAQCAtMTIzLDE2ICsxMjcsMzEgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChG
cm9udGVuZENoYW5uZWwqIGZyb250ZW4KICNlbmRpZgogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb24g
cmVhc29uKQordm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5l
Y3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkKIHsKLSAgICBpZiAo
IW1fZnJvbnRlbmRDaGFubmVsKQorICAgIEFTU0VSVF9BUkcoZnJvbnRlbmRDaGFubmVsLCBmcm9u
dGVuZENoYW5uZWwpOworCisgICAgbV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKworICAgIG1fZnJvbnRl
bmRSb3V0ZXItPmRpc2Nvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwpOworCisgICAgbV9p
c0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKKworICAgIGJvb2wgZGlzY29ubmVjdGVkTGFz
dEZyb250ZW5kID0gIW1fZnJvbnRlbmRSb3V0ZXItPmhhc0Zyb250ZW5kcygpOworICAgIGlmICgh
ZGlzY29ubmVjdGVkTGFzdEZyb250ZW5kKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2FnZW50
cy53aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChyZWFzb24pOworI2lmIEVOQUJMRShJTlNQ
RUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorICAgIGlmIChtX2F1Z21lbnRpbmdDbGllbnQp
CisgICAgICAgIG1fYXVnbWVudGluZ0NsaWVudC0+aW5zcGVjdG9yRGlzY29ubmVjdGVkKCk7Cisj
ZW5kaWYKK30KKwordm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nv
bm5lY3RBbGxGcm9udGVuZHMoKQoreworICAgIG1fYWdlbnRzLndpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCk7CiAK
LSAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5jbGVhckZyb250ZW5kKCk7Ci0gICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOwor
ICAgIG1fZnJvbnRlbmRSb3V0ZXItPmRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKTsKIAogICAgIG1f
aXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2U7CiAKQEAgLTE0NCwxNSArMTYzLDExIEBAIHZv
aWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQo
RGlzY29ubmVjdFJlYXNvbiByZWFzCiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogewotICAgIGlmIChtX2JhY2tlbmREaXNwYXRjaGVyKQotICAgICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5kaXNw
YXRjaChtZXNzYWdlKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXI6OnBhdXNlKCkKIHsKLSAgICBpZiAoIW1fZnJvbnRlbmRDaGFubmVsKQotICAgICAgICByZXR1
cm47Ci0KICAgICBFcnJvclN0cmluZyBkdW1teUVycm9yOwogICAgIG1fZGVidWdnZXJBZ2VudC0+
ZW5hYmxlKGR1bW15RXJyb3IpOwogICAgIG1fZGVidWdnZXJBZ2VudC0+cGF1c2UoZHVtbXlFcnJv
cik7CkBAIC0yNjIsMTMgKzI3NywxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlcjo6YXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdAogewogICAg
IFN0cmluZyBkb21haW5OYW1lID0gYWdlbnQtPmRvbWFpbk5hbWUoKTsKIAotICAgIGlmIChtX2Zy
b250ZW5kQ2hhbm5lbCkKLSAgICAgICAgYWdlbnQtPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChtX2Zyb250ZW5kQ2hhbm5lbCwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgYWdl
bnQtPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChtX2Zyb250ZW5kUm91dGVyLT5sZWFrQ2hh
bm5lbCgpLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAKICAgICBtX2FnZW50cy5hcHBl
bmRFeHRyYUFnZW50KFdURjo6bW92ZShhZ2VudCkpOwogCi0gICAgaWYgKG1fZnJvbnRlbmRDaGFu
bmVsKQotICAgICAgICBtX2luc3BlY3RvckFnZW50LT5hY3RpdmF0ZUV4dHJhRG9tYWluKGRvbWFp
bk5hbWUpOworICAgIG1faW5zcGVjdG9yQWdlbnQtPmFjdGl2YXRlRXh0cmFEb21haW4oZG9tYWlu
TmFtZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgK
aW5kZXggNmUzZjk0ZWFjMjM0ZWM4OTgzNjk4Y2VhYzczZjE2ZTAzNjA0Y2JjZi4uYWFlMzJlM2M4
OTkzYmY3MDdlNjZiN2Y1MjA1ODIzMmE3M2E3Mzk3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVj
dG9yQ29udHJvbGxlci5oCkBAIC01Myw2ICs1Myw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3Igewog
CiBjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEZyb250ZW5kQ2hhbm5lbDsKK2NsYXNz
IEZyb250ZW5kUm91dGVyOwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5z
cGVjdG9yQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQ7CkBAIC03Myw3ICs3NCw5
IEBAIHB1YmxpYzoKICAgICB+SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKCk7CiAK
ICAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21h
dGljSW5zcGVjdGlvbik7Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoRGlzY29ubmVjdFJl
YXNvbik7CisgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRDaGFubmVsKik7Cisg
ICAgdm9pZCBkaXNjb25uZWN0QWxsRnJvbnRlbmRzKCk7CisKICAgICB2b2lkIGRpc3BhdGNoTWVz
c2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgZ2xvYmFsT2JqZWN0
RGVzdHJveWVkKCk7CkBAIC05OSw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBBdWdt
ZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQqIGF1Z21lbnRhYmxlSW5zcGVjdG9yQ29u
dHJvbGxlckNsaWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXVnbWVudGluZ0NsaWVu
dDsgfSAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVy
Q2xpZW50KEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCogY2xpZW50KSBvdmVy
cmlkZSB7IG1fYXVnbWVudGluZ0NsaWVudCA9IGNsaWVudDsgfQogCi0gICAgdmlydHVhbCBGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
ZnJvbnRlbmRDaGFubmVsOyB9CisgICAgdmlydHVhbCBjb25zdCBGcm9udGVuZFJvdXRlciYgZnJv
bnRlbmRSb3V0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Zyb250ZW5kUm91dGVyLmdl
dCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZEV4dHJhQWdlbnQoc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3RvckFnZW50QmFzZT4pIG92ZXJyaWRlOwogI2VuZGlmCiAKQEAgLTExMyw4ICsxMTYs
OCBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudCogbV9jb25zb2xlQWdlbnQ7
CiAgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFnZW50OwogICAgIEFnZW50
UmVnaXN0cnkgbV9hZ2VudHM7Ci0gICAgRnJvbnRlbmRDaGFubmVsKiBtX2Zyb250ZW5kQ2hhbm5l
bDsKLSAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Cisg
ICAgUmVmPEZyb250ZW5kUm91dGVyPiBtX2Zyb250ZW5kUm91dGVyOworICAgIFJlZjxCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBSZWY8V1RGOjpTdG9wd2F0Y2g+
IG1fZXhlY3V0aW9uU3RvcHdhdGNoOwogICAgIGJvb2wgbV9pbmNsdWRlTmF0aXZlQ2FsbFN0YWNr
V2l0aEV4Y2VwdGlvbnM7CiAgICAgYm9vbCBtX2lzQXV0b21hdGljSW5zcGVjdGlvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFn
ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckFnZW50LmNwcAppbmRleCA3YjJmM2NmMTgwYzRlNzgyODhkZDA5YzA5MjQ2OTQ5MTljNjc5ODRh
Li44NjIyNGJhNmJiNjNiNDk1ZWRhYTA2NmMyN2ZjNDNhYzc2ODBlNjkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuaCIKIAog
I2luY2x1ZGUgIkluc3BlY3RvckVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJv
bnRlbmRSb3V0ZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJT
Y3JpcHRWYWx1ZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAppbmRleCA4OGQ4
MTUxODI2ZGU0NTc3NzUyODA4MjYwOTRmY2VhNmVhYjQxNzY4Li4xZjFkOWIxYmEwNDc2NzNhNmQw
ODE0Nzk1NTE1M2IwMDBkMzAxOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvbnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRS
b3V0ZXIuaCIKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRD
YWxsRnJhbWUuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAKaW5kZXggYzJmNjNjZWNhYzZiNmE4NWIzNTRhZjBlMDUyMmE1Yjk0
MzcyYjgwMS4uYWNhYzE3MGE0MDMxNTEwMGMxNjMyNzg5NWZiNzQ5Y2Y5MGZjN2E5NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJDb250ZW50U2VhcmNoVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JG
cm9udGVuZFJvdXRlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUg
IlJlZ3VsYXJFeHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IDMyMTA0YTJkZjI4YTk2MGEzZDQ5ODJm
Zjg0YWMxOTNkMjczM2IzYTIuLmFkZGZlYmMxOTBiODBlYzdmNmY2NDgzMDZmNzM3MjQ5MDY5M2Fh
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcApAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0
LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yRnJvbnRlbmRSb3V0ZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNs
dWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BdWdtZW50YWJsZUluc3Bl
Y3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVu
dGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggMjQ1NmFjNTkxOWQ4
YTBkNTY1OWQ2ZjcxY2MwNzU4OGY2Yzc3NjhiMi4uYjBkMjViMGI2NzJhMjk2N2NhZmY1NzhiZjRm
NTg4OGU5ZTk1NGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hdWdtZW50YWJsZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVj
dG9yQ29udHJvbGxlci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9B
TFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50
YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
bnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIApAQCAt
NDIsMTAgKzQyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEF1Z21lbnRhYmxlSW5zcGVjdG9y
Q29udHJvbGxlckNsaWVudCogYXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdWdtZW50YWJsZUluc3BlY3RvckNvbnRy
b2xsZXJDbGllbnQoQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KikgPSAwOwog
Ci0gICAgdmlydHVhbCBGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGNvbnN0IEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlcigpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9w
dHI8SW5zcGVjdG9yQWdlbnRCYXNlPikgPSAwOwogCi0gICAgYm9vbCBjb25uZWN0ZWQoKSBjb25z
dCB7IHJldHVybiAhIWZyb250ZW5kQ2hhbm5lbCgpOyB9CisgICAgYm9vbCBjb25uZWN0ZWQoKSBj
b25zdCB7IHJldHVybiBmcm9udGVuZFJvdXRlcigpLmhhc0Zyb250ZW5kcygpOyB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUu
aAppbmRleCAwNjRiODNhZTgzODM4ZTFhYjM2ZTVlNzVmMDZmNmY5NzUwZjA4ODA5Li5kYTI0Mjk5
ZTRkZDI1ZjM2ZjIxNTY1YjYxM2E2ZGMwNmRhYmIwMTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgaGFzTG9jYWxEZWJ1Z2dlcigpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBjb25u
ZWN0KEZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nv
bm5lY3QoRnJvbnRlbmRDaGFubmVsKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1l
c3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldEluZGljYXRpbmcoYm9vbCkgeyB9IC8vIERlZmF1bHQgaXMgdG8gZG8g
bm90aGluZy4KICAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKSB7IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tCmluZGV4IGJlZGFhZDdmYWU0
MGM1OGM4OTY3MmU0ZDFhMGIwYTUxMWU5NjVhYjQuLmVkNmNkNjBkY2MwMTAxZDBiOGY2ZDM1YTg4
NDFmM2ZlMjFmNDkwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uLm1tCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y2xvc2UoKQogCiAgICAgICAgICAgICBpZiAobV9kZWJ1
Z2dhYmxlKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fY29ubmVjdGVkKQotICAgICAgICAgICAg
ICAgICAgICBtX2RlYnVnZ2FibGUtPmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9kZWJ1Z2dhYmxlLT5kaXNjb25uZWN0KHRoaXMpOwogCiAgICAgICAgICAgICAgICAgbV9kZWJ1
Z2dhYmxlID0gbnVsbHB0cjsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9hbHRlcm5h
dGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9hbHRlcm5hdGVfYmFja2VuZF9k
aXNwYXRjaGVyX2hlYWRlci5weQppbmRleCBkNGE4ZDVhZmVlZDQ0NTJlZTlmYmY3OGVhNTJiOTQz
M2ZhYjIzNjc4Li4zNzVjZTA1Y2E0NGFiNGU0MDk1NTgzNTQ2NzM3MDMzMjJkNTkxYWI0IDEwMDc1
NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9jcHBfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
Y3BwX2FsdGVybmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5CkBAIC00Nyw2ICs0Nyw3
IEBAIGNsYXNzIENwcEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yKEdl
bmVyYXRvcik6CiAgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKICAgICAgICAgaGVhZGVy
cyA9IFsKICAgICAgICAgICAgICciSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIicsCisgICAgICAg
ICAgICAnPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPicsCiAgICAgICAgICAg
ICAnPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+JywKICAgICAg
ICAgXQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9u
LnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2Vu
ZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCAxMjUx
MTQ5MzNjZTkyODgxNWI0MmQ0NTJmNTIzZWFlY2QzMDdhMTFlLi5iMzZjMGIxM2MwOGQ5MTExMjk0
NjQ3YjZiODZkYmRiZTI4YmZkNzM1IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVy
X2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50
YXRpb24ucHkKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNoZXJJbXBs
ZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQo
c2VsZik6CiAgICAgICAgIHNlY29uZGFyeV9oZWFkZXJzID0gWwogICAgICAgICAgICAgJzxpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+JywKKyAgICAgICAgICAgICc8aW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+JywKICAgICAgICAgICAgICc8aW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5oPicsCiAgICAgICAgICAgICAnPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PicsCiAgICAgICAgICAgICAnPHd0Zi90ZXh0L0NTdHJpbmcuaD4nXQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2Jq
Y19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9k
aXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IGZiMmRlNGY2MWYzZmMwMWQ3YTQ2MDgw
OGE5ODU1YzVhZGEyZjkwMDAuLjk0MDE4ZTU5ZjZmYWY2MDIwN2JhZWNkNjViYjU1M2E1MmIwZmU1
N2QgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5w
eQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKQEAgLTk4
LDkgKzk4LDcgQEAgY2xhc3MgT2JqQ0Zyb250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2Vu
ZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgIGxpbmVzID0gW10KICAgICAgICAgbGluZXMuYXBw
ZW5kKHNlbGYuX2dlbmVyYXRlX2V2ZW50X3NpZ25hdHVyZShkb21haW4sIGV2ZW50KSkKICAgICAg
ICAgbGluZXMuYXBwZW5kKCd7JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgRnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBfY29udHJvbGxlci0+ZnJvbnRlbmRDaGFubmVsKCk7
JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgaWYgKCFmcm9udGVuZENoYW5uZWwpJykKLSAg
ICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIHJldHVybjsnKQorICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICBjb25zdCBGcm9udGVuZFJvdXRlciYgcm91dGVyID0gX2NvbnRyb2xsZXItPmZyb250
ZW5kUm91dGVyKCk7JykKICAgICAgICAgbGluZXMuYXBwZW5kKCcnKQogCiAgICAgICAgIHJlcXVp
cmVkX3BvaW50ZXJfcGFyYW1ldGVycyA9IGZpbHRlcihsYW1iZGEgcGFyYW1ldGVyOiBub3QgcGFy
YW1ldGVyLmlzX29wdGlvbmFsIGFuZCBPYmpDR2VuZXJhdG9yLmlzX3R5cGVfb2JqY19wb2ludGVy
X3R5cGUocGFyYW1ldGVyLnR5cGUpLCBldmVudC5ldmVudF9wYXJhbWV0ZXJzKQpAQCAtMTI2LDcg
KzEyNCw3IEBAIGNsYXNzIE9iakNGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVy
YXRvcihHZW5lcmF0b3IpOgogICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBqc29uTWVzc2FnZS0+
c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWV0aG9kIiksIEFTQ0lJTGl0ZXJhbCgiJXMuJXMiKSk7
JyAlIChkb21haW4uZG9tYWluX25hbWUsIGV2ZW50LmV2ZW50X25hbWUpKQogICAgICAgICBpZiBl
dmVudC5ldmVudF9wYXJhbWV0ZXJzOgogICAgICAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuX2dl
bmVyYXRlX2V2ZW50X291dF9wYXJhbWV0ZXJzKGRvbWFpbiwgZXZlbnQpKQotICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICBmcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChqc29u
TWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOycpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHJv
dXRlci5zZW5kRXZlbnQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsnKQogICAgICAgICBs
aW5lcy5hcHBlbmQoJ30nKQogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVn
Z2FibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlLmNwcAppbmRleCBlZWNjNWJhMDMwYWI1NDBjYTVlNDNkZGQ1YWE4YWQyMmMzNzM2
OTFlLi4yYWVhMjAzNWYzMWFmZWY5ZTdhMWU2MTNlNWViNDcyYWI0ZTUwNmE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZS5jcHAKQEAgLTU2LDExICs1NiwxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdn
YWJsZTo6Y29ubmVjdChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCBhdQog
ICAgIG1fZ2xvYmFsT2JqZWN0Lmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQo
ZnJvbnRlbmRDaGFubmVsLCBhdXRvbWF0aWNJbnNwZWN0aW9uKTsKIH0KIAotdm9pZCBKU0dsb2Jh
bE9iamVjdERlYnVnZ2FibGU6OmRpc2Nvbm5lY3QoKQordm9pZCBKU0dsb2JhbE9iamVjdERlYnVn
Z2FibGU6OmRpc2Nvbm5lY3QoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwpCiB7CiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2tlcigmbV9nbG9iYWxPYmplY3Qudm0oKSk7CiAKLSAgICBtX2ds
b2JhbE9iamVjdC5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKERpc2Nv
bm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgbV9nbG9iYWxPYmplY3QuaW5z
cGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwpOwog
fQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6cGF1c2UoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUu
aAppbmRleCA2MGNlNThhNDRjNzkzNTlhNzczOWE5MDc5Yjk5MzBkZDEyYWJhMzk0Li4wM2ZkMTdk
MGZmMGE0NjY2OTY2NTkzYTIyNmM1MDRmM2UxNmEyYWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaApAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc0xvY2FsRGVidWdnZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGNv
bm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBib29sIGF1dG9tYXRpY0luc3BlY3Rp
b24pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHBh
dXNlKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oIGIvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGE5YjZhN2ZjNDdkZDE2OWUyNmE0NjVjZjNiNzRlM2E0NDNhNjI5OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJD
b3JlX0ZXRF9JbnNwZWN0b3JGcm9udGVuZFJvdXRlcl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0lu
c3BlY3RvckZyb250ZW5kUm91dGVyX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3JGcm9udGVuZFJvdXRlci5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCAwNjZjM2FlZWU1NjQ2M2ZiMzEzNWYxOTY5N2I1
YjNkYzk3YTJhZWE3Li5jNDVhYzFmZjVmNDZmOGRhYWFiMjZmODdiNTdhZjQ3OTkzZjY2YzZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAg
LTIwMzM2LDYgKzIwMzM2LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRp
bmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3Bl
Y3RvckVudmlyb25tZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJk
aW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVj
dG9yRnJvbnRlbmRSb3V0ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndh
cmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJ
bnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yUHJvdG9jb2xPYmplY3Rz
LmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXgg
ZWU3ZDhmYWM0NjVkMWU1Y2VkZTIwZTJjMThlZGU1ZDVmODEwNjExZS4uNmQzOWE0YzkyYWRjZjUy
ODZmMjQ4MTUyZWMxYzUyNjkzYmFkZGQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDbGllbnQuaApAQCAtMjcsMTEgKzI3LDE0IEBACiAjaWZuZGVmIEluc3BlY3RvckNs
aWVudF9oCiAjZGVmaW5lIEluc3BlY3RvckNsaWVudF9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JG
b3J3YXJkaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworY2xhc3MgRnJvbnRlbmRDaGFubmVsOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEZsb2F0UmVjdDsKQEAgLTQ1LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpID0gMDsKIAotICAgIHZpcnR1YWwgSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciop
ID0gMDsKKyAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVj
dG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9u
dGVuZFRvRnJvbnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlc2l6ZU1haW5GcmFtZShG
cmFtZSopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwCmluZGV4IDI3N2YxNmI2ZjQ3NTA1N2IxNzQ2MzdiMzY3ZDNjYTVhMDVhODNjYmEu
LjhhN2RmMjBhYzA0YzdlMDJmYjlhY2NiOTg5NzllZDM1NjQxNTBmN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTY4LDYgKzY4
LDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4K
ICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+CiAjaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaD4KKyNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4KICNpbmNsdWRlIDxpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckFnZW50Lmg+CiAjaW5jbHVkZSA8cHJvZmlsZXIvTGVnYWN5UHJv
ZmlsZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgpAQCAtODUsNiArODYsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9s
bGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KQogICAgIDog
bV9pbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2VudHM6OmNyZWF0ZSgqdGhpcykp
CiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkluamVj
dGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkp
KQorICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCisgICAg
LCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVu
ZFJvdXRlci5jb3B5UmVmKCkpKQogICAgICwgbV9vdmVybGF5KHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yT3ZlcmxheT4ocGFnZSwgaW5zcGVjdG9yQ2xpZW50KSkKICAgICAsIG1fZXhlY3V0aW9u
U3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAgLCBtX3BhZ2UocGFnZSkKQEAgLTE3
Nyw3ICsxODAsOCBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjp+SW5zcGVjdG9yQ29udHJvbGxlcigp
CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpCiB7
Ci0gICAgZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdl
dERlc3Ryb3llZCk7CisgICAgZGlzY29ubmVjdEFsbEZyb250ZW5kcygpOworCiAgICAgbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXItPmRpc2Nvbm5lY3QoKTsKICAgICBtX2luc3BlY3RvckNsaWVudC0+
aW5zcGVjdG9yRGVzdHJveWVkKCk7CiAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBudWxscHRyOwpA
QCAtMTkwLDEyICsxOTQsMTIgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbnNwZWN0
b3JGcm9udGVuZENsaWVudChJbnNwZWN0b3JGcm9udGVuZENsaWVudCogaW4KIAogYm9vbCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpoYXNMb2NhbEZyb250ZW5kKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9mcm9udGVuZENoYW5uZWwgJiYgbV9mcm9udGVuZENoYW5uZWwtPmNvbm5lY3Rpb25UeXBlKCkg
PT0gRnJvbnRlbmRDaGFubmVsOjpDb25uZWN0aW9uVHlwZTo6TG9jYWw7CisgICAgcmV0dXJuIG1f
ZnJvbnRlbmRSb3V0ZXItPmhhc0xvY2FsRnJvbnRlbmQoKTsKIH0KIAogYm9vbCBJbnNwZWN0b3JD
b250cm9sbGVyOjpoYXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZnJv
bnRlbmRDaGFubmVsICYmIG1fZnJvbnRlbmRDaGFubmVsLT5jb25uZWN0aW9uVHlwZSgpID09IEZy
b250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGU6OlJlbW90ZTsKKyAgICByZXR1cm4gbV9mcm9u
dGVuZFJvdXRlci0+aGFzUmVtb3RlRnJvbnRlbmQoKTsKIH0KIAogYm9vbCBJbnNwZWN0b3JDb250
cm9sbGVyOjpoYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIGNvbnN0CkBAIC0yMTksNzQgKzIy
Myw5NiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENsZWFyV2luZG93T2JqZWN0SW5X
b3JsZChGcmFtZSYgZnJhbWUsIERPTVdyYXBwZXJXbwogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikKIHsKLSAgICBBU1NFUlQoZnJvbnRl
bmRDaGFubmVsKTsKKyAgICBBU1NFUlRfQVJHKGZyb250ZW5kQ2hhbm5lbCwgZnJvbnRlbmRDaGFu
bmVsKTsKICAgICBBU1NFUlQobV9pbnNwZWN0b3JDbGllbnQpOwotICAgIEFTU0VSVCghbV9mcm9u
dGVuZENoYW5uZWwpOwotICAgIEFTU0VSVCghbV9iYWNrZW5kRGlzcGF0Y2hlcik7CiAKKyAgICBi
b29sIGNvbm5lY3RlZEZpcnN0RnJvbnRlbmQgPSAhbV9mcm9udGVuZFJvdXRlci0+aGFzRnJvbnRl
bmRzKCk7CiAgICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBpc0F1dG9tYXRpY0luc3BlY3Rp
b247CiAKLSAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IGZyb250ZW5kQ2hhbm5lbDsKLSAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShmcm9udGVuZENoYW5u
ZWwpOwotCi0gICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5k
Q2hhbm5lbCwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgbV9mcm9udGVuZFJvdXRl
ci0+Y29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCk7CiAKLSAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhtX2luc3RydW1lbnRpbmdB
Z2VudHMuZ2V0KCkpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmRDcmVh
dGVkKCk7CiAKKyAgICBpZiAoY29ubmVjdGVkRmlyc3RGcm9udGVuZCkgeworICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZ2V0KCkpOworICAgICAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoZnJvbnRlbmRDaGFubmVsLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7
CisgICAgfQorCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgaWYgKCFoYXNSZW1v
dGVGcm9udGVuZCgpKQorICAgIGlmICghbV9mcm9udGVuZFJvdXRlci0+aGFzUmVtb3RlRnJvbnRl
bmQoKSkKICAgICAgICAgbV9wYWdlLnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdl
KCk7CiAjZW5kaWYKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJv
bnRlbmQoRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmRpc2Nvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkKIHsK
LSAgICBpZiAoIW1fZnJvbnRlbmRDaGFubmVsKQotICAgICAgICByZXR1cm47CisgICAgLy8gVGhl
IGxvY2FsIGZyb250ZW5kIGNsaWVudCBzaG91bGQgYmUgZGlzY29ubmVjdGVkIGZpcnN0IHNvIGl0
IHN0b3BzIHNlbmRpbmcgbWVzc2FnZXMuCisgICAgQVNTRVJUKCFtX2Zyb250ZW5kUm91dGVyLT5o
YXNMb2NhbEZyb250ZW5kKCkgfHwgIW1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOworCisgICAg
bV9mcm9udGVuZFJvdXRlci0+ZGlzY29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCk7Cisg
ICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKKworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZnJvbnRlbmREZWxldGVkKCk7CisKKyAgICBib29sIGRpc2Nvbm5lY3RlZExh
c3RGcm9udGVuZCA9ICFtX2Zyb250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMoKTsKKyAgICBpZiAo
ZGlzY29ubmVjdGVkTGFzdEZyb250ZW5kKSB7CisgICAgICAgIC8vIFJlbGVhc2Ugb3ZlcmxheSBw
YWdlIHJlc291cmNlcy4KKyAgICAgICAgbV9vdmVybGF5LT5mcmVlUGFnZSgpOworICAgICAgICBt
X2FnZW50cy53aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uOjpJ
bnNwZWN0b3JEZXN0cm95ZWQpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnVu
cmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSk7
CisgICAgfQogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgaWYgKCFoYXNSZW1v
dGVGcm9udGVuZCgpKQorICAgIGlmICghbV9mcm9udGVuZFJvdXRlci0+aGFzRnJvbnRlbmRzKCkp
CiAgICAgICAgIG1fcGFnZS5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOwog
I2VuZGlmCit9CiAKLSAgICBtX2FnZW50cy53aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChy
ZWFzb24pOwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0QWxsRnJvbnRlbmRz
KCkKK3sKKyAgICAvLyBUaGUgbG9jYWwgZnJvbnRlbmQgY2xpZW50IHNob3VsZCBiZSBkaXNjb25u
ZWN0ZWQgZmlyc3Qgc28gaXQgc3RvcHMgc2VuZGluZyBtZXNzYWdlcy4KKyAgICBBU1NFUlQoIW1f
ZnJvbnRlbmRSb3V0ZXItPmhhc0xvY2FsRnJvbnRlbmQoKSB8fCAhbV9pbnNwZWN0b3JGcm9udGVu
ZENsaWVudCk7CiAKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5jbGVhckZyb250ZW5kKCk7Ci0g
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7Ci0gICAgbV9mcm9udGVuZENoYW5uZWwg
PSBudWxscHRyOworICAgIG1fYWdlbnRzLndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERp
c2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCk7CiAKKyAgICBtX2Zyb250
ZW5kUm91dGVyLT5kaXNjb25uZWN0QWxsRnJvbnRlbmRzKCk7CiAgICAgbV9pc0F1dG9tYXRpY0lu
c3BlY3Rpb24gPSBmYWxzZTsKIAogICAgIC8vIFJlbGVhc2Ugb3ZlcmxheSBwYWdlIHJlc291cmNl
cy4KICAgICBtX292ZXJsYXktPmZyZWVQYWdlKCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpmcm9udGVuZERlbGV0ZWQoKTsKKworICAgIHdoaWxlIChJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246Omhhc0Zyb250ZW5kcygpKQorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmZyb250ZW5kRGVsZXRlZCgpOworCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1bnJl
Z2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpOwor
ICAgIAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIG1fcGFnZS5yZW1vdGVJbnNw
ZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOworI2VuZGlmCiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6c2hvdygpCiB7Ci0gICAgQVNTRVJUKCFoYXNSZW1vdGVGcm9udGVuZCgpKTsK
KyAgICBBU1NFUlQoIW1fZnJvbnRlbmRSb3V0ZXItPmhhc1JlbW90ZUZyb250ZW5kKCkpOworCisg
ICAgLy8gVGhlIGxvY2FsIGZyb250ZW5kIGNsaWVudCBzaG91bGQgYmUgZGlzY29ubmVjdGVkIGlm
IHRoZXJlJ3Mgbm8gbG9jYWwgZnJvbnRlbmQuCisgICAgQVNTRVJUKG1fZnJvbnRlbmRSb3V0ZXIt
Pmhhc0xvY2FsRnJvbnRlbmQoKSB8fCAhbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudCk7CiAKICAg
ICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fZnJvbnRlbmRD
aGFubmVsKQorICAgIGlmIChtX2Zyb250ZW5kUm91dGVyLT5oYXNMb2NhbEZyb250ZW5kKCkpCiAg
ICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5icmluZ0Zyb250ZW5kVG9Gcm9udCgpOwotICAgIGVs
c2UgewotICAgICAgICBpZiAoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9yRnJvbnRlbmQodGhpcykpIHsK
LSAgICAgICAgICAgIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2U7Ci0gICAgICAg
ICAgICBjb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVsLCBpc0F1dG9tYXRpY0luc3BlY3Rp
b24pOwotICAgICAgICB9Ci0gICAgfQorICAgIGVsc2UgaWYgKEluc3BlY3Rvcjo6RnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBtX2luc3BlY3RvckNsaWVudC0+b3Blbkluc3BlY3Rv
ckZyb250ZW5kKHRoaXMpKQorICAgICAgICBjb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVs
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjbG9zZSgpCiB7Ci0gICAgaWYgKCFt
X2Zyb250ZW5kQ2hhbm5lbCkKLSAgICAgICAgcmV0dXJuOwotICAgIGRpc2Nvbm5lY3RGcm9udGVu
ZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwotICAgIG1faW5zcGVjdG9y
Q2xpZW50LT5jbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CisgICAgaWYgKG1fZnJvbnRlbmRSb3V0
ZXItPmhhc0xvY2FsRnJvbnRlbmQoKSkKKyAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmNsb3Nl
SW5zcGVjdG9yRnJvbnRlbmQoKTsKKworICAgIEFTU0VSVCghbV9mcm9udGVuZFJvdXRlci0+aGFz
TG9jYWxGcm9udGVuZCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRQcm9j
ZXNzSWQobG9uZyBwcm9jZXNzSWQpCkBAIC0zMzcsOCArMzYzLDcgQEAgUGFnZSYgSW5zcGVjdG9y
Q29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZSgpIGNvbnN0CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
IHsKLSAgICBpZiAobV9iYWNrZW5kRGlzcGF0Y2hlcikKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlci0+ZGlzcGF0Y2gobWVzc2FnZSk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+ZGlzcGF0
Y2gobWVzc2FnZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGlkZUhpZ2hsaWdo
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApp
bmRleCBkZmI3ZTg1MDlhYzZjN2I5NzA0ZjliNTRhMzJhMDY4OTRhYTFmODhhLi42ZTE1Y2VkZDdi
NTc4MmYzOThhZjM0NTQzNmNjNjExODZlNzc3OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAKIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewogY2xhc3MgQmFja2VuZERpc3BhdGNoZXI7CiBjbGFzcyBGcm9udGVuZENo
YW5uZWw7CitjbGFzcyBGcm9udGVuZFJvdXRlcjsKIGNsYXNzIEluc3BlY3RvckFnZW50OwogY2xh
c3MgSW5zcGVjdG9yT2JqZWN0OwogCkBAIC05OCw4ICs5OSw5IEBAIHB1YmxpYzoKICAgICBib29s
IGhhc0xvY2FsRnJvbnRlbmQoKSBjb25zdDsKICAgICBib29sIGhhc1JlbW90ZUZyb250ZW5kKCkg
Y29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5l
Y3RSZWFzb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVjdEZyb250ZW5kKEluc3Bl
Y3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxz
ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZENoYW5uZWwqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc2Nvbm5lY3RB
bGxGcm9udGVuZHMoKTsKICAgICB2b2lkIHNldFByb2Nlc3NJZChsb25nKTsKIAogICAgIHZvaWQg
aW5zcGVjdChOb2RlKik7CkBAIC0xNDAsOCArMTQyLDggQEAgcHJpdmF0ZToKIAogICAgIFJlZjxJ
bnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7
Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7Ci0gICAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFubmVs
IHsgbnVsbHB0ciB9OworICAgIFJlZjxJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyPiBtX2Zyb250
ZW5kUm91dGVyOworICAgIFJlZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JPdmVybGF5PiBtX292
ZXJsYXk7CiAgICAgUmVmPFdURjo6U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsKICAg
ICBJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggY2M0NzNkNzYx
N2I3Yjk5ZmIzZWYxMGEyOWFhM2VjZjlhNWQwNjc1Yy4uYzdmNmE2ZTM0MjMwOWI1Y2ExZjUxNzM0
NDJmYTUxYjRmZTExNGMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlNR
TFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNRTFZhbHVlLmgiCiAjaW5j
bHVkZSAiVm9pZENhbGxiYWNrLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kUm91dGVyLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggZWYzYjE4NWMzNjFkODcyNzRmYzA0
Y2RlYjQ1NWUxMmI0ZGVhYTQ5My4uYTNlYWJiN2IxMTQ4NzA1ZmRmNGNlMmYxZWU0ZjhkOGNhMTBj
ZGM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdl
ci5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmg+
CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+CiAjaW5jbHVk
ZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCA4NTc5MTk5OWZjM2Iw
NzE1NjM0ZDI2YmZjZWFjODAzODQ4ZDEzZDc1Li4xNDMyZWYwZDkzZTMyYzY5ZTU3MDViZDRlZmYz
ZDQwZGQ0MWY0YWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSWRlbnRp
ZmllcnNGYWN0b3J5Lmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91
dGVyLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUg
PGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDIyYjA4N2UxODVlNWNjYTUyZGRi
OGM0ZjM1ODQzMTZiYTRkZWQyYTQuLjhhMjJkNWM2ZjczODFlMjJkNDdjZDc3ODIyNzMzNTcyYTA2
NzI5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJXb3JrZXJU
aHJlYWQuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5oPgor
I2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPgogI2luY2x1ZGUg
PHd0Zi9TdG9wd2F0Y2guaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKQEAgLTgwLDYg
KzgxLDggQEAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2wKICAgICAsIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+
KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fZXhlY3V0
aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCisgICAgLCBtX2Zyb250ZW5kUm91dGVy
KEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKKyAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCiB7CiAg
ICAgYXV0byBydW50aW1lQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclJ1bnRpbWVBZ2Vu
dD4oKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCAmd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIG1f
cnVudGltZUFnZW50ID0gcnVudGltZUFnZW50LmdldCgpOwpAQCAtMTE0LDI3ICsxMTcsMjcgQEAg
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6fldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKQog
CiB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpCiB7Ci0g
ICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9mcm9udGVuZENoYW5uZWwgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBhZ2VJbnNwZWN0b3JQcm94eT4obV93b3JrZXJHbG9iYWxTY29wZSk7
Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9m
cm9udGVuZENoYW5uZWwuZ2V0KCkpOwotICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQo
KSk7CisgICAgQVNTRVJUKCFtX2Zyb250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMoKSk7CisgICAg
QVNTRVJUKCFtX2ZvcndhcmRpbmdDaGFubmVsKTsKKworICAgIG1fZm9yd2FyZGluZ0NoYW5uZWwg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VJbnNwZWN0b3JQcm94eT4obV93b3JrZXJHbG9iYWxTY29w
ZSk7CisgICAgbV9mcm9udGVuZFJvdXRlci0+Y29ubmVjdEZyb250ZW5kKG1fZm9yd2FyZGluZ0No
YW5uZWwuZ2V0KCkpOworICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCht
X2ZvcndhcmRpbmdDaGFubmVsLmdldCgpLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiB9
CiAKIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKElu
c3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7Ci0gICAgaWYgKCFtX2Zyb250ZW5k
Q2hhbm5lbCkKLSAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX2Zyb250ZW5kUm91dGVyLT5o
YXNGcm9udGVuZHMoKSk7CisgICAgQVNTRVJUKG1fZm9yd2FyZGluZ0NoYW5uZWwpOwogCiAgICAg
bV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQocmVhc29uKTsKLSAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyLT5jbGVhckZyb250ZW5kKCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ciA9IG51bGxwdHI7Ci0gICAgbV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOworICAgIG1fZnJv
bnRlbmRSb3V0ZXItPmRpc2Nvbm5lY3RGcm9udGVuZChtX2ZvcndhcmRpbmdDaGFubmVsLmdldCgp
KTsKKyAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0gbnVsbHB0cjsKIH0KIAogdm9pZCBXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewotICAgIGlmIChtX2JhY2tlbmREaXNwYXRjaGVyKQotICAgICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKKyAgICBtX2JhY2tlbmREaXNw
YXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKIH0KIAogdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyOjpyZXN1bWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZGU4MTQ4MGQwODNjNTBjZDgwZGMyN2ZhNDE2
MWRjZjAzNWY1YmUxYS4uNWJkZTFlMWI3OTY3ZTViNmNlZTVhYTlmYTc3OTdlMGQ1YjkwMTNkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlci5oCkBAIC00MSw2ICs0MSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgRnJv
bnRlbmRSb3V0ZXI7Cit9OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjsKQEAgLTc4LDkgKzgyLDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4gbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXI7CiAgICAgV29ya2VyUnVudGltZUFnZW50KiBtX3J1bnRpbWVBZ2VudCB7IG51bGxwdHIgfTsK
ICAgICBJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnkgbV9hZ2VudHM7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsPiBtX2Zyb250ZW5kQ2hhbm5lbDsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWw+IG1fZm9yd2FyZGluZ0No
YW5uZWw7CiAgICAgUmVmPFdURjo6U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsKLSAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hl
cjsKKyAgICBSZWY8SW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcj4gbV9mcm9udGVuZFJvdXRlcjsK
KyAgICBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hl
cjsKICAgICBWZWN0b3I8SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLCAyPiBtX2luamVj
dGVkU2NyaXB0SW5zdHJ1bWVudGF0aW9uQ29va2llczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlRGVidWdnYWJsZS5jcHAKaW5kZXggZmU3YjI5NDg2YWRlOGI0ZmEzZjNmNDlhMGVmYWQ5Y2Q3
MDA5N2RkZC4uMjQ5ODNiZWM0YTc5Y2U3MzhiNDNlOTBlMjhkYzAwNWUzOGE2YjRhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKQEAgLTgwLDEwICs4MCwxMCBAQCB2b2lk
IFBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBjaGFu
bmVsLCBib29sIGlzQXV0b21hdAogICAgIGluc3BlY3RvckNvbnRyb2xsZXIuY29ubmVjdEZyb250
ZW5kKGNoYW5uZWwsIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CiB9CiAKLXZvaWQgUGFnZURlYnVn
Z2FibGU6OmRpc2Nvbm5lY3QoKQordm9pZCBQYWdlRGVidWdnYWJsZTo6ZGlzY29ubmVjdChJbnNw
ZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCkKIHsKICAgICBJbnNwZWN0b3JDb250cm9s
bGVyJiBpbnNwZWN0b3JDb250cm9sbGVyID0gbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKTsK
LSAgICBpbnNwZWN0b3JDb250cm9sbGVyLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRp
c2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgaW5zcGVjdG9yQ29udHJv
bGxlci5kaXNjb25uZWN0RnJvbnRlbmQoY2hhbm5lbCk7CiAKICAgICBpZiAobV9mb3JjZWREZXZl
bG9wZXJFeHRyYXNFbmFibGVkKSB7CiAgICAgICAgIG1fZm9yY2VkRGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdn
YWJsZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5oCmluZGV4IDZhZWZj
YzNjYjQ1YjkyMDE3MGU5Nzk0NThiZTVhYjA2MGIzNmE0ZDMuLmIyOTA5NGY1OTljMWFjMWRkM2Y1
ZGQyMzc0MWI1ZmRiMWI2YWM1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZURlYnVnZ2FibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNMb2NhbERlYnVn
Z2VyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBkaXNjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRpY2F0aW5n
KGJvb2wpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
MzFiZjUxNzQzYTg4MWNmY2I4MjVhNTc4YjQ2YWIyY2MyY2NmNTU1Ny4uMGVmN2NmNzI2MTFiZGNm
MmVlYzg5YmU2ODc4NTM5YmM5N2NlYzRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcApAQCAtMTczNCw5ICsxNzM0LDggQEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IEludGVybmFs
czo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgbV9m
cm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRE
dW1teT4oJnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRlbmRQYWdlKTsKICAgICBm
cm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENs
aWVudChtX2Zyb250ZW5kQ2xpZW50LmdldCgpKTsKIAotICAgIGJvb2wgaXNBdXRvbWF0aWNJbnNw
ZWN0aW9uID0gZmFsc2U7CiAgICAgbV9mcm9udGVuZENoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbER1bW15Pihmcm9udGVuZFBhZ2UpOwotICAgIHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQobV9mcm9udGVuZENoYW5uZWwu
Z2V0KCksIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLmNvbm5lY3RGcm9udGVuZChtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSk7CiAKICAgICBy
ZXR1cm4gbV9mcm9udGVuZFdpbmRvdzsKIH0KQEAgLTE3NDcsOSArMTc0NiwxMyBAQCB2b2lkIElu
dGVybmFsczo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKCkKICAgICBBU1NFUlQocGFnZSk7
CiAgICAgQVNTRVJUKG1fZnJvbnRlbmRXaW5kb3cpOwogCi0gICAgcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246
Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgUGFnZSogZnJvbnRlbmRQYWdlID0gbV9mcm9udGVu
ZFdpbmRvdy0+ZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIEFTU0VSVChmcm9udGVuZFBhZ2UpOwog
CisgICAgZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQobnVsbHB0cik7CiAgICAgbV9mcm9udGVuZENsaWVudCA9IG51bGxwdHI7CisK
KyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKG1fZnJv
bnRlbmRDaGFubmVsLmdldCgpKTsKICAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7CiAK
ICAgICBtX2Zyb250ZW5kV2luZG93LT5jbG9zZShtX2Zyb250ZW5kV2luZG93LT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBjNTBkYmI3YTU4ZDhiNjQzNjAwNmE1Zjlj
MGNkOGVkZDk3NGQ3YjZlLi4wMWI0YmM5MDRjNzM1NzFjZGI2YTNjOTEzOTIyZjM0OGJlNWFlZTZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaApAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBicmluZ1RvRnJvbnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5k
b3coKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyb21CYWNrZW5kKCk7
CisgICAgdm9pZCBkaXNjb25uZWN0RnJvbUJhY2tlbmQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBh
dHRhY2hXaW5kb3coRG9ja1NpZGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hX
aW5kb3coKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCA4MDYwMDNhNjI0NTQwNTcyOWNhZWY4
YTY3MTIzYzYzMTViYWU0ZThlLi42ZTU0NTZiMzEwMzVjMTIyOTUyODIxMmY5ZTRkZDhjN2NkNzJk
NGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBjb25zdCBDR0Zsb2F0
IGluaXRpYWxXaW5kb3dIZWlnaHQgPSA2NTA7CiAtIChXZWJJbnNwZWN0b3JDbGllbnQqKWluc3Bl
Y3RvckNsaWVudDsKIC0gKHZvaWQpc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQ6KHVuc2lnbmVkKWhl
aWdodDsKIC0gKHZvaWQpc2V0RG9ja2luZ1VuYXZhaWxhYmxlOihCT09MKXVuYXZhaWxhYmxlOwot
LSAodm9pZClkZXN0cm95SW5zcGVjdG9yVmlldzooYm9vbClub3RpZnlJbnNwZWN0b3JDb250cm9s
bGVyOworLSAodm9pZClkZXN0cm95SW5zcGVjdG9yVmlldzsKIEBlbmQKIAogCkBAIC0xMzAsNiAr
MTMwLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQo
KQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6YnJpbmdGcm9udGVuZFRvRnJvbnQoKQogewor
ICAgIEFTU0VSVChtX2Zyb250ZW5kQ2xpZW50KTsKICAgICBtX2Zyb250ZW5kQ2xpZW50LT5icmlu
Z1RvRnJvbnQoKTsKIH0KIApAQCAtMjUyLDEyICsyNTMsMTIgQEAgdm9pZCBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6YnJpbmdUb0Zyb250KCkKIAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6Y2xvc2VXaW5kb3coKQogewotICAgIFttX3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkg
ZGVzdHJveUluc3BlY3RvclZpZXc6dHJ1ZV07CisgICAgW21fd2luZG93Q29udHJvbGxlci5nZXQo
KSBkZXN0cm95SW5zcGVjdG9yVmlld107CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OmRpc2Nvbm5lY3RGcm9tQmFja2VuZCgpCiB7Ci0gICAgW21fd2luZG93Q29udHJvbGxl
ci5nZXQoKSBkZXN0cm95SW5zcGVjdG9yVmlldzpmYWxzZV07CisgICAgW21fd2luZG93Q29udHJv
bGxlci5nZXQoKSBkZXN0cm95SW5zcGVjdG9yVmlld107CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ6OmF0dGFjaFdpbmRvdyhEb2NrU2lkZSkKQEAgLTUyMiw3ICs1MjMsNyBA
QCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQoY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZwogCiAtIChCT09MKXdpbmRvd1Nob3VsZENsb3NlOihp
ZClzZW5kZXIKIHsKLSAgICBbc2VsZiBkZXN0cm95SW5zcGVjdG9yVmlldzp0cnVlXTsKKyAgICBb
c2VsZiBkZXN0cm95SW5zcGVjdG9yVmlld107CiAKICAgICByZXR1cm4gWUVTOwogfQpAQCAtNjc2
LDcgKzY3Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZChjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nCiAgICAgLy8gRG8gbm90aGluZy4K
IH0KIAotLSAodm9pZClkZXN0cm95SW5zcGVjdG9yVmlldzooYm9vbClub3RpZnlJbnNwZWN0b3JD
b250cm9sbGVyCistICh2b2lkKWRlc3Ryb3lJbnNwZWN0b3JWaWV3CiB7CiAgICAgUmV0YWluUHRy
PFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXI+IHByb3RlY3Qoc2VsZik7CiAKQEAgLTY5Miw5
ICs2OTMsOSBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQoY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZwogCiAgICAgX3Zpc2libGUgPSBOTzsK
IAotICAgIGlmIChub3RpZnlJbnNwZWN0b3JDb250cm9sbGVyKSB7Ci0gICAgICAgIGlmIChQYWdl
KiBpbnNwZWN0ZWRQYWdlID0gW19pbnNwZWN0ZWRXZWJWaWV3LmdldCgpIHBhZ2VdKQotICAgICAg
ICAgICAgaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9u
dGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7Cisg
ICAgaWYgKFBhZ2UqIGluc3BlY3RlZFBhZ2UgPSBbX2luc3BlY3RlZFdlYlZpZXcuZ2V0KCkgcGFn
ZV0pIHsKKyAgICAgICAgaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldElu
c3BlY3RvckZyb250ZW5kQ2xpZW50KG51bGxwdHIpOworICAgICAgICBpbnNwZWN0ZWRQYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKF9pbnNwZWN0b3JDbGllbnQp
OwogICAgIH0KIAogICAgIFtfd2ViVmlldyBjbG9zZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA0NWQ0
YWIwZGExNjA3NGM3NmIwOGJiNjM0ZDEzYWRhYmQ2ZDZiYWNhLi5mODQ1ZTI1YmE4OGNlZTdjY2Zi
MDFmMWM2NTM4NzFkNjBlMTExMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE3NCw3ICsxNzQsNyBA
QCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6
b3Blbkluc3BlY3RvckZyb250ZW5kKElucwogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3Nl
SW5zcGVjdG9yRnJvbnRlbmQoKQogewogICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAg
ICBtX2Zyb250ZW5kQ2xpZW50LT5kZXN0cm95SW5zcGVjdG9yVmlldyhmYWxzZSk7CisgICAgICAg
IG1fZnJvbnRlbmRDbGllbnQtPmRlc3Ryb3lJbnNwZWN0b3JWaWV3KCk7CiB9CiAKIHZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50OjpicmluZ0Zyb250ZW5kVG9Gcm9udCgpCkBAIC0yMzcsNyArMjM3LDcg
QEAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcKIAogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
On5XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpCiB7Ci0gICAgZGVzdHJveUluc3BlY3RvclZp
ZXcodHJ1ZSk7CisgICAgZGVzdHJveUluc3BlY3RvclZpZXcoKTsKIH0KIAogdm9pZCBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6ZnJvbnRlbmRMb2FkZWQoKQpAQCAtMjY5LDcgKzI2OSw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmJyaW5nVG9Gcm9udCgpCiAKIHZvaWQg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNsb3NlV2luZG93KCkKIHsKLSAgICBkZXN0cm95
SW5zcGVjdG9yVmlldyh0cnVlKTsKKyAgICBkZXN0cm95SW5zcGVjdG9yVmlldygpOwogfQogCiB2
b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3coRG9ja1NpZGUpCkBA
IC00MjEsNyArNDIxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2hvd1dp
bmRvd1dpdGhvdXROb3RpZmljYXRpb25zKCkKICAgICBtX2luc3BlY3RvckNsaWVudC0+dXBkYXRl
SGlnaGxpZ2h0KCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ry
b3lJbnNwZWN0b3JWaWV3KGJvb2wgbm90aWZ5SW5zcGVjdG9yQ29udHJvbGxlcikKK3ZvaWQgV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ryb3lJbnNwZWN0b3JWaWV3KCkKIHsKICAgICBt
X2luc3BlY3RvckNsaWVudC0+cmVsZWFzZUZyb250ZW5kKCk7CiAKQEAgLTQzMSwxMCArNDMxLDEw
IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ryb3lJbnNwZWN0b3JWaWV3
KGJvb2wgbm90aWZ5SW5zcGVjdG9yQ29udHJvCiAKICAgICBjbG9zZVdpbmRvd1dpdGhvdXROb3Rp
ZmljYXRpb25zKCk7CiAKLSAgICBpZiAobm90aWZ5SW5zcGVjdG9yQ29udHJvbGxlcikgewotICAg
ICAgICBtX2luc3BlY3RlZFdlYlZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRp
c2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRl
c3Ryb3llZCk7Ci0gICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT51cGRhdGVIaWdobGlnaHQoKTsK
LSAgICB9CisgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChudWxscHRyKTsKKyAgICBtX2luc3BlY3Rl
ZFdlYlZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVu
ZChtX2luc3BlY3RvckNsaWVudCk7CisgICAgbV9pbnNwZWN0b3JDbGllbnQtPnVwZGF0ZUhpZ2hs
aWdodCgpOworCiAgICAgOjpEZXN0cm95V2luZG93KG1fZnJvbnRlbmRId25kKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuaAppbmRleCA5ZmIzODZlMzFjZDk0ZGEwN2I2OGYyYzUxZjg1NjNiMzk1NWVjNzI0Li45NTY4
ZGEwMzNmZTQ2NDc3YWZmMTNjYjczNDg3MWE2M2UwMzAyMmNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMTEz
LDcgKzExMyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRVUkxDaGFu
Z2VkKGNvbnN0IFdURjo6U3RyaW5nJiBuZXdVUkwpOwogCi0gICAgdm9pZCBkZXN0cm95SW5zcGVj
dG9yVmlldyhib29sIG5vdGlmeUluc3BlY3RvckNvbnRyb2xsZXIpOworICAgIHZvaWQgZGVzdHJv
eUluc3BlY3RvclZpZXcoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNsb3NlV2luZG93V2l0aG91
dE5vdGlmaWNhdGlvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA1YTdm
MTcwMGJkMTlhYmNhYTdmNzg1NmRhMmEwM2ViNmNlMjZmMWIwLi42NmU5YmM3MGRhYzA0NDg3Njk0
M2ZiNWRkMzljZGIyYTc0ZDIzNmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBA
IC04MiwxNyArODIsMTkgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ry
b3llZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLVdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVj
dG9yQ29udHJvbGxlciogY29udHJvbGxlcikKK0luc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBX
ZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9s
bGVyKiBjb250cm9sbGVyKQogewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmNyZWF0ZUluc3Bl
Y3RvclBhZ2UoY29udHJvbGxlci0+aXNVbmRlclRlc3QoKSk7CisgICAgbV9wYWdlLT5pbnNwZWN0
b3IoKS0+b3BlbkZyb250ZW5kQ29ubmVjdGlvbihjb250cm9sbGVyLT5pc1VuZGVyVGVzdCgpKTsK
IAogICAgIHJldHVybiBtX3BhZ2UtPmluc3BlY3RvcigpOwogfQogCiB2b2lkIFdlYkluc3BlY3Rv
ckNsaWVudDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpCiB7Ci0gICAgaWYgKG1fcGFnZS0+aW5z
cGVjdG9yKCkpCi0gICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmNsb3NlRnJvbnRlbmQoKTsK
KyAgICBpZiAobV9wYWdlLT5pbnNwZWN0b3IoKSkgeworICAgICAgICBtX3BhZ2UtPmNvcmVQYWdl
KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQobV9wYWdlLT5pbnNw
ZWN0b3IoKSk7CisgICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmNsb3NlRnJvbnRlbmRDb25u
ZWN0aW9uKCk7CisgICAgfQogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6YnJpbmdGcm9u
dGVuZFRvRnJvbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggOWE0NDAwYmU1YWJh
NmI5OTUxNWY2ZDg5MWY2ZTlhODE1Njc4YTQxNS4uYjgzODBiMWI4OGIxNzYxNDFmZmM0YTg0NTcz
ODg0MGQ3YmQ5OGQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC0yNyw3ICsyNyw2
IEBACiAjZGVmaW5lIFdlYkluc3BlY3RvckNsaWVudF9oCiAKICNpbmNsdWRlIDxXZWJDb3JlL0lu
c3BlY3RvckNsaWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRm9yd2FyZGluZy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZU92ZXJsYXkuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogCkBAIC01Myw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50CiAgICAgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAotICAg
IFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5k
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKSBvdmVycmlkZTsKKyAgICBJbnNwZWN0b3I6
OkZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXIqKSBvdmVycmlkZTsKICAgICB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQo
KSBvdmVycmlkZTsKICAgICB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRSZXNpemVNYWluRnJhbWUoV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3Iu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAK
aW5kZXggZTBhZDc1NDQ0NTg1ZDhhOWU3YTJlNzE2MzE1YTE1MTlmOTVlZmZiOS4uNTk2OWFhMjJm
MzZkZjk0MTFkNWRhMTA1NmYxZDI2ZDMwMjBlZDUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKQEAgLTcwLDcgKzcwLDcgQEAg
V2ViSW5zcGVjdG9yOjp+V2ViSW5zcGVjdG9yKCkKIH0KIAogLy8gQ2FsbGVkIGZyb20gV2ViSW5z
cGVjdG9yQ2xpZW50Ci12b2lkIFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5zcGVjdG9yUGFnZShib29s
IHVuZGVyVGVzdCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpvcGVuRnJvbnRlbmRDb25uZWN0aW9uKGJv
b2wgdW5kZXJUZXN0KQogewogI2lmIE9TKERBUldJTikKICAgICBtYWNoX3BvcnRfdCBsaXN0ZW5p
bmdQb3J0OwpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5zcGVj
dG9yUGFnZShib29sIHVuZGVyVGVzdCkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6
Q3JlYXRlSW5zcGVjdG9yUGFnZShjb25uZWN0aW9uQ2xpZW50UG9ydCwgY2FuQXR0YWNoV2luZG93
KCksIHVuZGVyVGVzdCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCi12b2lkIFdlYkluc3BlY3Rv
cjo6Y2xvc2VGcm9udGVuZCgpCit2b2lkIFdlYkluc3BlY3Rvcjo6Y2xvc2VGcm9udGVuZENvbm5l
Y3Rpb24oKQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKIApAQCAtMjYyLDggKzI2Miw3IEBAIHZvaWQgV2ViSW5zcGVjdG9y
OjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpCiB7CiAgICAgaWYgKG1fcGFnZS0+Y29yZVBhZ2Uo
KSkgewogICAgICAgICBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkID0gdHJ1ZTsKLSAgICAgICAg
Ym9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKLSAgICAgICAgbV9wYWdlLT5jb3Jl
UGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKHRoaXMsIGlzQXV0
b21hdGljSW5zcGVjdGlvbik7CisgICAgICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZCh0aGlzKTsKICAgICB9CiB9CiAKQEAgLTI3Miw3
ICsyNzEsNyBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQo
KQogICAgIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQgPSBmYWxzZTsKIAogICAgIGlmIChtX3Bh
Z2UtPmNvcmVQYWdlKCkpCi0gICAgICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246
Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZCh0aGlzKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKaW5k
ZXggMDQwMDhlMTVkYzdhMjZmZmJhMzc3YWNiMDY3MTU2Mjg2NjExZGVhOS4uMDAxMjg3OWNmYTlj
NmQxYjQ1ZDIzMDg4MGNlMjJkOThkZGI4YWQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaApAQCAtOTcsOSArOTcsOSBAQCBwcml2YXRl
OgogICAgIGJvb2wgY2FuQXR0YWNoV2luZG93KCk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBXZWJJ
bnNwZWN0b3JDbGllbnQKLSAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclBhZ2UoYm9vbCB1bmRlclRl
c3QpOworICAgIHZvaWQgb3BlbkZyb250ZW5kQ29ubmVjdGlvbihib29sIHVuZGVyVGVzdCk7Cisg
ICAgdm9pZCBjbG9zZUZyb250ZW5kQ29ubmVjdGlvbigpOwogCi0gICAgdm9pZCBjbG9zZUZyb250
ZW5kKCk7CiAgICAgdm9pZCBicmluZ1RvRnJvbnQoKTsKIAogICAgIFdlYlBhZ2UqIG1fcGFnZTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5MDRj
MWM4NGVlMmFlOWQwZmEwYmNlOThhZDJjYzk4MTNhNDk1ZjcwLi45NDI2M2Y0ZGY0MjQ2NGE1OWNl
NjIwMDE5OTI1NmYwOWNlZDhiYjkxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTUtMDktMDMgIEJyaWFuIEJ1cmcg
IDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yQ29u
dHJvbGxlciBzaG91bGQgc3VwcG9ydCBtdWx0aXBsZSBmcm9udGVuZCBjaGFubmVscworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgIEluc3BlY3RvckNsaWVu
dHMgbXVzdCBleHBsaWNpdGx5IGRpc2Nvbm5lY3QgdGhlaXIgZnJvbnRlbmQgY2hhbm5lbChzKSBm
cm9tIHRoZQorICAgICAgICBpbnNwZWN0ZWQgcGFnZSdzIEluc3BlY3RvckNvbnRyb2xsZXIuCisK
KyAgICAgICAgVG8gbWFrZSB0aGlzIHBvc3NpYmxlLCBEdW1wUmVuZGVyVHJlZSBzaG91bGQgbm90
IGRlc3Ryb3kgbm9uLXByaW1hcnkgdmlld3MgdW50aWwKKyAgICAgICAgaXQgaGFzIHRyaWVkIHRv
IGNsb3NlIGFueSBhYmFuZG9uZWQgV2ViIEluc3BlY3RvciBpbnN0YW5jZXMuIFBlcmZvcm1pbmcg
dGVhcmRvd24KKyAgICAgICAgaW4gdGhlIHJldmVyc2Ugb3JkZXIgcHJldmVudHMgZGlzY29ubmVj
dGlvbiBvZiB0aGUgZnJvbnRlbmQgY2hhbm5lbCBiZWNhdXNlIHRoYXQKKyAgICAgICAgcHJlbWF0
dXJlbHkgZGVzdHJveXMgdGhlIGluc3BlY3RvciBmcm9udGVuZCBjbGllbnQuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChydW5UZXN0
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAg
ICAgICAocnVuVGVzdCk6CisKIDIwMTUtMDktMDMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSAzMi1iaXQgYnVpbGQKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCAwYjU2ZWRiOWRiNjRjZWU5MDQ2
M2E2MjQyNGVmZjFjNzBkYmNlNzMzLi44YTAxYzNhMzE5NDQ4ODVhZjY4OGU2YjE1OTJkMjljN2Yz
MjEyZjBjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBA
IC0yMDI4LDYgKzIwMjgsMTMgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlu
cHV0TGluZSkKIAogICAgIHdvcmtRdWV1ZS5jbGVhcigpOwogCisgICAgLy8gSWYgdGhlIHRlc3Qg
cGFnZSBjb3VsZCBoYXZlIHBvc3NpYmx5IG9wZW5lZCB0aGUgV2ViIEluc3BlY3RvciBmcm9udGVu
ZCwKKyAgICAvLyB0aGVuIHRyeSB0byBjbG9zZSBpdCBpbiBjYXNlIGl0IHdhcyBhY2NpZGVudGFs
bHkgbGVmdCBvcGVuLgorICAgIGlmIChzaG91bGRFbmFibGVEZXZlbG9wZXJFeHRyYXMocGF0aE9y
VVJMLmNfc3RyKCkpKSB7CisgICAgICAgIGdUZXN0UnVubmVyLT5jbG9zZVdlYkluc3BlY3Rvcigp
OworICAgICAgICBnVGVzdFJ1bm5lci0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChmYWxzZSk7
CisgICAgfQorCiAgICAgaWYgKGdUZXN0UnVubmVyLT5jbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVu
Q29tcGxldGUoKSkgewogICAgICAgICBOU0FycmF5KiBhcnJheSA9IFtEdW1wUmVuZGVyVHJlZVdp
bmRvdyBvcGVuV2luZG93c107CiAKQEAgLTIwNTEsMTIgKzIwNTgsNiBAQCBzdGF0aWMgdm9pZCBy
dW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMaW5lKQogICAgICAgICB9CiAgICAgfQogCi0gICAg
Ly8gSWYgZGV2ZWxvcGVyIGV4dHJhcyBlbmFibGVkIFdlYiBJbnNwZWN0b3IgbWF5IGhhdmUgYmVl
biBvcGVuIGJ5IHRoZSB0ZXN0LgotICAgIGlmIChzaG91bGRFbmFibGVEZXZlbG9wZXJFeHRyYXMo
cGF0aE9yVVJMLmNfc3RyKCkpKSB7Ci0gICAgICAgIGdUZXN0UnVubmVyLT5jbG9zZVdlYkluc3Bl
Y3RvcigpOwotICAgICAgICBnVGVzdFJ1bm5lci0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChm
YWxzZSk7Ci0gICAgfQotCiAgICAgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVU
ZXN0aW5nKCk7CiAKICAgICAvLyBMb2FkaW5nIGFuIGVtcHR5IHJlcXVlc3Qgc3luY2hyb25vdXNs
eSByZXBsYWNlcyB0aGUgZG9jdW1lbnQgd2l0aCBhIGJsYW5rIG9uZSwgd2hpY2ggaXMgbmVjZXNz
YXJ5CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBl
NTZlYjFmNTM3Yjk0MDNmNTVjNmVkMDNjOWQxN2I4NzkwODA5ZDU2Li5kMDJjZmVjNTg4MjU0NDU3
OTRiZGEwYjk1ZmQwZmVjMDM4OTE3NDAyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS5jcHAKQEAgLTExNDcsNiArMTE0NywxMyBAQCBzdGF0aWMgdm9pZCBydW5U
ZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMaW5lKQogICAgIC8vIEV2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIgY2xlYXJTYXZlZEV2ZW50cwogICAgIHdvcmtRdWV1ZS5jbGVhcigpOwogCisgICAgLy8gSWYg
dGhlIHRlc3QgcGFnZSBjb3VsZCBoYXZlIHBvc3NpYmx5IG9wZW5lZCB0aGUgV2ViIEluc3BlY3Rv
ciBmcm9udGVuZCwKKyAgICAvLyB0aGVuIHRyeSB0byBjbG9zZSBpdCBpbiBjYXNlIGl0IHdhcyBh
Y2NpZGVudGFsbHkgbGVmdCBvcGVuLgorICAgIGlmIChzaG91bGRFbmFibGVEZXZlbG9wZXJFeHRy
YXMocGF0aE9yVVJMLmNfc3RyKCkpKSB7CisgICAgICAgIDo6Z1Rlc3RSdW5uZXItPmNsb3NlV2Vi
SW5zcGVjdG9yKCk7CisgICAgICAgIDo6Z1Rlc3RSdW5uZXItPnNldERldmVsb3BlckV4dHJhc0Vu
YWJsZWQoZmFsc2UpOworICAgIH0KKwogICAgIGlmICg6OmdUZXN0UnVubmVyLT5jbG9zZVJlbWFp
bmluZ1dpbmRvd3NXaGVuQ29tcGxldGUoKSkgewogICAgICAgICBWZWN0b3I8SFdORD4gd2luZG93
cyA9IG9wZW5XaW5kb3dzKCk7CiAgICAgICAgIHVuc2lnbmVkIHNpemUgPSB3aW5kb3dzLnNpemUo
KTsKQEAgLTExNjEsMTEgKzExNjgsNiBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmlu
ZyYgaW5wdXRMaW5lKQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHNob3VsZEVuYWJsZURl
dmVsb3BlckV4dHJhcyhwYXRoT3JVUkwuY19zdHIoKSkpIHsKLSAgICAgICAgOjpnVGVzdFJ1bm5l
ci0+Y2xvc2VXZWJJbnNwZWN0b3IoKTsKLSAgICAgICAgOjpnVGVzdFJ1bm5lci0+c2V0RGV2ZWxv
cGVyRXh0cmFzRW5hYmxlZChmYWxzZSk7Ci0gICAgfQotCiAgICAgcmVzZXRXZWJWaWV3VG9Db25z
aXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCk7CiAKICAgICAvLyBMb2FkaW5nIGFuIGVtcHR5IHJl
cXVlc3Qgc3luY2hyb25vdXNseSByZXBsYWNlcyB0aGUgZG9jdW1lbnQgd2l0aCBhIGJsYW5rIG9u
ZSwgd2hpY2ggaXMgbmVjZXNzYXJ5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260605</attachid>
            <date>2015-09-04 11:41:14 -0700</date>
            <delta_ts>2015-09-04 13:00:30 -0700</delta_ts>
            <desc>Proposed Fix (Fix Crash)</desc>
            <filename>bug-148538-20150904114111.patch</filename>
            <type>text/plain</type>
            <size>83862</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZmZmZGY4MDdjMTExYmQ0NTYxNjc5MTI1OGQ5OGMxMTQ3MDg0MGNlLi43NGQwMjkzNjU4NDBlMjBj
YTk4MWI2ODA5OTBmZmUzNGY4OWU4YmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MiBAQAorMjAxNS0wOS0wNCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250cm9sbGVyIHNob3VsZCBzdXBwb3J0
IG11bHRpcGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGgg
UGVjb3Jhcm8uCisKKyAgICAgICAgSW5zdGVhZCBvZiBhIHNpbmdsZXRvbiwgaXQgc2hvdWxkIGJl
IHBvc3NpYmxlIHRvIGhhdmUgbXVsdGlwbGUgY2hhbm5lbHMgb3BlbgorICAgICAgICBhdCB0aGUg
c2FtZSB0aW1lIGFuZCB0byBpbmRpdmlkdWFsbHkgY2xvc2UgY2hhbm5lbHMgYXMgZnJvbnRlbmRz
IGNvbWUgYW5kIGdvLgorCisgICAgICAgIFRoZSBGcm9udGVuZFJvdXRlciBjbGFzcyBrZWVwcyBh
IGxpc3Qgb2Ygb3BlbiBGcm9udGVuZENoYW5uZWxzIGFuZCBzZW5kcyBtZXNzYWdlcworICAgICAg
ICB0byB0aGUgYXBwcm9wcmlhdGUgZnJvbnRlbmRzIGJhc2VkIG9uIHdoZXRoZXIgdGhlIG1lc3Nh
Z2UgaXMgYSByZXNwb25zZSBvciBldmVudC4KKyAgICAgICAgRWFjaCBJbnNwZWN0b3JDb250cm9s
bGVyIG93bnMgYSBzaW5nbGUgRnJvbnRlbmRSb3V0ZXIgYW5kIEJhY2tlbmREaXNwYXRjaGVyIGlu
c3RhbmNlLgorICAgICAgICBJbnNwZWN0b3IgYmFja2VuZCBjb2RlIHRoYXQgc2VuZHMgbWVzc2Fn
ZXMgdG8gdGhlIGZyb250ZW5kIHNob3VsZCBzd2l0Y2ggb3ZlciB0bworICAgICAgICB1c2luZyB0
aGUgcm91dGVyIHJhdGhlciB0aGFuIGRpcmVjdGx5IHVzaW5nIGEgRnJvbnRlbmRDaGFubmVsLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNwcDogTW92ZSBjb25zdHJ1Y3RvcnMvZGVzdHJ1Y3RvcnMgb3V0IG9m
IHRoZSBoZWFkZXIKKyAgICAgICAgdG8gYXZvaWQgaW5jbHVkaW5nIEluc3BlY3RvckZyb250ZW5k
Um91dGVyIGV2ZXJ5d2hlcmUuIFVzZSB0aGUgcm91dGVyIGluc3RlYWQgb2YgYQorICAgICAgICBz
cGVjaWZpYyBmcm9udGVuZCBjaGFubmVsLiBSZW1vdmUgZ3VhcmRzIHRoYXQgYXJlIG5vIGxvbmdl
ciBuZWNlc3Nhcnkgc2luY2UgdGhlIHJvdXRlcgorICAgICAgICBpcyBndWFyYW50ZWVkIHRvIG91
dGxpdmUgdGhlIGJhY2tlbmQgZGlzcGF0Y2hlci4KKworICAgICAgICAoSW5zcGVjdG9yOjpTdXBw
bGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcjo6U3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIp
OgorICAgICAgICAoSW5zcGVjdG9yOjpTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcjo6flN1
cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OkJhY2tlbmREaXNwYXRjaGVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyOjppc0FjdGl2ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
OjpyZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4pOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlcjo6c2VuZFJlc3BvbnNlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OnNlbmRQZW5kaW5nRXJyb3JzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDoKKyAgICAgICAgKEluc3BlY3Rvcjo6U3VwcGxlbWVu
dGFsQmFja2VuZERpc3BhdGNoZXI6OlN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6U3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXI6
On5TdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcik6IERlbGV0ZWQuCisgICAgICAgIChJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpjbGVhckZyb250ZW5kKTogRGVsZXRlZCwgbm8gbG9u
Z2VyIG5lY2Vzc2FyeS4KKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6Omlz
QWN0aXZlKTogTW92ZWQgdG8gaW1wbGVtZW50YXRpb24gZmlsZS4KKyAgICAgICAgKEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXI6OkJhY2tlbmREaXNwYXRjaGVyKTogTW92ZWQgdG8gaW1wbGVt
ZW50YXRpb24gZmlsZS4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI6OmNyZWF0
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpjb25uZWN0RnJvbnRlbmQp
OgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6ZGlzY29ubmVjdEZyb250ZW5k
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI6OmRpc2Nvbm5lY3RBbGxGcm9u
dGVuZHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6bGVha0NoYW5uZWwp
OgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6aGFzTG9jYWxGcm9udGVuZCk6
CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpoYXNSZW1vdGVGcm9udGVuZCk6
CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyOjpzZW5kRXZlbnQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6c2VuZFJlc3BvbnNlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaDogQWRkZWQuCisgICAgICAgICogaW5z
cGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHA6IFJlbW92ZSBndWFy
ZHMgdGhhdCBhcmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KKyAgICAgICAgVGhlIGZyb250ZW5kIHJv
dXRlciBhbmQgYmFja2VuZCBkaXNwYXRjaGVyIG5vdyBoYXZlIHRoZSBzYW1lIGxpZmV0aW1lIGFz
IHRoZSBjb250cm9sbGVyLgorICAgICAgICBFeHBsaWNpdGx5IGNvbm5lY3QvZGlzY29ubmVjdCB0
aGUgZnJvbnRlbmQgY2hhbm5lbC4KKworICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcik6
CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
Z2xvYmFsT2JqZWN0RGVzdHJveWVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoSW5zcGVj
dG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVu
ZCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlzY29ubmVjdEFsbEZyb250ZW5kcyk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjph
cHBlbmRFeHRyYUFnZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyOjpwYXVzZSk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0pT
R2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYXVnbWVudGFibGUvQXVn
bWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgIChJbnNwZWN0b3I6OkF1Z21l
bnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdGVkKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y2xvc2Up
OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2FsdGVy
bmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5OgorICAgICAgICAoQ3BwQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlz
cGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKE9iakNGcm9udGVuZERpc3BhdGNo
ZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfZXZlbnQpOiBVc2UgdGhlIHJvdXRl
ci4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHA6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzY29ubmVjdCk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaDoKKwogMjAxNS0wOC0yNSAgQmFz
aWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0IHJp
ZCBvZiBGVExWYWx1ZUZvcm1hdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA2YzY5NjA3MWMzZmY3YjRiY2I3N2Iz
ZDI0NWY4MmJkNjg2OTBiYmIuLjY0ZGViZjhlOTEyMTdlNWEwYTZlYjE4YzFjODM2M2VjMTZiNjc2
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxNS0wOS0wNCAgQnJpYW4gQnVyZyAg
PGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250
cm9sbGVyIHNob3VsZCBzdXBwb3J0IG11bHRpcGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBu
byBiZWhhdmlvciBjaGFuZ2UgZnJvbSB0aGlzIHBhdGNoLiBUZWFyZG93biBzY2VuYXJpb3MgYXJl
CisgICAgICAgIGNvdmVyZWQgYnkgZXhpc3RpbmcgcHJvdG9jb2wgYW5kIGluc3BlY3RvciB0ZXN0
cyBydW5uaW5nIHVuZGVyIERSVCBhbmQgV0tUUi4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFk
ZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDbGllbnQuaDogU3RvcCB1c2luZyBmb3J3YXJkZWQgdHlwZXMuCisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omhhc0xvY2FsRnJvbnRlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzUmVtb3RlRnJvbnRlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0QWxsRnJv
bnRlbmRzKTogQWRkZWQuIERpc2Nvbm5lY3RzIGFsbAorICAgICAgICBmcm9udGVuZHMgYW5kIHNp
Z25hbHMgRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkLgorCisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDogQWRkIGRlZmF1bHQgdmFsdWUgZm9yIGlz
QXV0b21hdGljSW5zcGVjdGlvbi4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOiBVc2UgYSBy
b3V0ZXIgd2l0aCBhIHNpbmdsZXRvbiBjaGFubmVsCisgICAgICAgIHRoYXQgZm9yd2FyZHMgbWVz
c2FnZXMgb3ZlciB0byB0aGUgbWFpbiBwYWdlLgorCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJv
bnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlz
cGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvUGFnZURlYnVnZ2FibGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3QpOgorICAgICAgICAq
IHBhZ2UvUGFnZURlYnVnZ2FibGUuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
IENsZWFyIHRoZSBmcm9udGVuZCBjbGllbnQgYmVmb3JlIGRpc2Nvbm5lY3RpbmcgZnJvbnRlbmQg
Y2hhbm5lbC4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9y
RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjbG9zZUR1bW15SW5zcGVj
dG9yRnJvbnRlbmQpOgorCiAyMDE1LTA5LTA0ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNv
bT4KIAogICAgICAgICBbbWVkaWFjb250cm9sc10gVGVzdCB0aGUgb3JkZXJpbmcgb2YgZWxlbWVu
dHMgaW4gdGhlIGNvbnRyb2xzIHBhbmVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggODFmYjJiMmNjZTcy
OGZiYTlkZjk1MWViOTBmZTA0MjY0ZDBhMzI3NC4uZTNmYzVhYTU1MzY4Y2E5YzM1ZTNjNGM0YWFl
MmM3NjdmNjEzODk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTA5
LTA0ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEluc3BlY3RvckNvbnRyb2xsZXIgc2hvdWxkIHN1cHBvcnQgbXVsdGlwbGUgZnJvbnRlbmQg
Y2hhbm5lbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0ODUzOAorCisgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4KKworICAgICAg
ICBSZW1vdmUgdGhlIG5vdGlmeUluc3BlY3RvckNvbnRyb2xsZXIgZmxhZyBmcm9tIGNsb3NlV2lu
ZG93LiBTaW5jZSBJbnNwZWN0b3JDbGllbnRzCisgICAgICAgIG11c3Qgbm93IG1hbnVhbGx5IGRp
c2Nvbm5lY3QgdGhlaXIgRnJvbnRlbmRDaGFubmVsKHMpLCB3ZSBzaG91bGQgYWx3YXlzCisgICAg
ICAgIHBlcmZvcm0gdGhlIHRlYXJkb3duIHRoYXQgd2FzIGd1YXJkZWQgYnkgdGhpcyBmbGFnLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5z
cGVjdG9yQ2xpZW50OjpicmluZ0Zyb250ZW5kVG9Gcm9udCk6IEFkZCBhIG1pc3NpbmcgYXNzZXJ0
aW9uLgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNsb3NlV2luZG93KToK
KyAgICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkaXNjb25uZWN0RnJvbUJhY2tl
bmQpOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIHdpbmRvd1Nob3Vs
ZENsb3NlOl0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIGRlc3Ry
b3lJbnNwZWN0b3JWaWV3XSk6IEFsd2F5cyBjbGVhciB0aGUgZnJvbnRlbmQgY2xpZW50LgorICAg
ICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIGRlc3Ryb3lJbnNwZWN0b3JWaWV3
Ol0pOiBSZW5hbWVkIHRvIGFib3ZlLgorCiAyMDE1LTA5LTAzICBDb21taXQgUXVldWUgIDxjb21t
aXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTg5MzM4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDRjNjBhZTJjMDg2MDQ4ZWNlYTFhNGM2MjJhODNm
YjhkYWIyYzkxM2YuLjkwZTdkYTI4YmQ2OWQxMTMwNzQ3ZWZkNjExOGE2MTkwOGZiYjUzMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNS0wOS0wNCAgQnJpYW4gQnVyZyAg
PGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JDb250
cm9sbGVyIHNob3VsZCBzdXBwb3J0IG11bHRpcGxlIGZyb250ZW5kIGNoYW5uZWxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgUmVtb3ZlIHRoZSBub3Rp
ZnlJbnNwZWN0b3JDb250cm9sbGVyIGZsYWcgZnJvbSBjbG9zZVdpbmRvdy4gU2luY2UgSW5zcGVj
dG9yQ2xpZW50cworICAgICAgICBtdXN0IG5vdyBtYW51YWxseSBkaXNjb25uZWN0IHRoZWlyIEZy
b250ZW5kQ2hhbm5lbChzKSwgd2Ugc2hvdWxkIGFsd2F5cworICAgICAgICBwZXJmb3JtIHRoZSB0
ZWFyZG93biB0aGF0IHdhcyBndWFyZGVkIGJ5IHRoaXMgZmxhZy4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JD
bGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6On5XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2xvc2VXaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ryb3lJbnNwZWN0b3JWaWV3KToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKwogMjAxNS0wOS0wMyAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjE4OTMzOC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxYmY5NTVmZTFjNzk2YmZjMGQxZmYzYmI3
MDhkYjcxYWEyMGQyMTExLi45MmU4OTBhY2Y5NzNjZDRhM2Q2ZGY4YjY4ODU0Y2RlNzY0ODU3YmRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTUtMDktMDQgIEJyaWFuIEJ1cmcgIDxi
YnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yQ29udHJv
bGxlciBzaG91bGQgc3VwcG9ydCBtdWx0aXBsZSBmcm9udGVuZCBjaGFubmVscworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTM4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgIEV4cGxpY2l0bHkgZGlzY29u
bmVjdCB0aGUgZnJvbnRlbmQgY2hhbm5lbCB3aGVuIGNsb3NpbmcgdGhlIGZyb250ZW5kLgorCisg
ICAgICAgIFJlbmFtZSBjcmVhdGVJbnNwZWN0b3JQYWdlL2Nsb3NlRnJvbnRlbmQgdG8gdGhlIHN5
bW1ldHJpYyBhbmQgdW5hbWJpZ3VvdXMKKyAgICAgICAge29wZW4sY2xvc2V9RnJvbnRlbmRDb25u
ZWN0aW9uIGluIHRoZSBXZWJJbnNwZWN0b3IgY2xhc3MuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOiBTdG9w
IHVzaW5nIGEgZm9yd2FyZGVkIHR5cGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6b3BlbkZyb250
ZW5kQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6Y2xvc2VGcm9u
dGVuZENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnJlbW90ZUZy
b250ZW5kQ29ubmVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpyZW1vdGVG
cm9udGVuZERpc2Nvbm5lY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6Y3Jl
YXRlSW5zcGVjdG9yUGFnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
cjo6Y2xvc2VGcm9udGVuZCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3Rvci5oOgorCiAyMDE1LTA5LTAzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVl
dWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTg5MzM4
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDYwMWZmNzVhMDRmZGM4OTAw
ZDE0Njg1YzI5YzhhMTRmNzcwOWZhNjkuLjJkYjNlMjk0OTk2ZmYzNjQ0M2I3ZjFhNGI5MTA1NmU1
NjUxZDdkNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTMyNCw2ICsz
MjQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGluc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuY3BwCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNw
cAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcAorICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKICAg
ICBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggNDc5NzExNDYxNTg2ZGQ5YjM0NGMzYTQzMjVi
MWFiZGI5MDlhZjBjMS4uNTExZjEwOWFiNmEwYjgxMWU0ODc5ZjlkYTA2ZjljMDliYzNmMjIwYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC01OTUsNiArNTk1LDcg
QEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbmplY3RlZFNjcmlwdE1v
ZHVsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNw
ZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIiAvPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kUm91dGVyLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEpTSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxKU0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAiIC8+CkBAIC0xMzg0LDYgKzEzODUsNyBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9y
RW52aXJvbm1lbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGUuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGE3YzQ1Y2NlNWVi
NWY2MWVhNzFkZmUyMDhmMTAxOTIyYjE2ZWY3Yi4uMDRhMTIzZmUzNjVjZjU3MjZmMmJmMzFmNzZh
N2JkZmNkYWU3NjY5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExOTUsNiAr
MTE5NSw4IEBACiAJCTk5RTQ1QTI2MThBMUIyNTkwMDI2RDg4RiAvKiBFbmNvZGVkVmFsdWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTQ1QTIxMThB
MUIyNTkwMDI2RDg4RiAvKiBFbmNvZGVkVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OUU0NUEyNzE4QTFCMjU5MDAyNkQ4OEYgLyogSW5w
dXRDdXJzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5RTQ1QTIyMThBMUIyNTkwMDI2RDg4RiAvKiBJbnB1dEN1cnNvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5RTQ1QTI4MThBMUIyNTkwMDI2
RDg4RiAvKiBOb25kZXRlcm1pbmlzdGljSW5wdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTQ1QTIzMThBMUIyNTkwMDI2RDg4RiAvKiBOb25kZXRl
cm1pbmlzdGljSW5wdXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk5OUYxQTZGRTFCOEU2RDk0MDA0NjNCMjYgLyogSW5zcGVjdG9yRnJvbnRlbmRS
b3V0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTlGMUE2RkMxQjhFNkQ5NDAwNDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVyLmNwcCAq
LzsgfTsKKwkJOTlGMUE3MDExQjk4RkJFQzAwNDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUYx
QTcwMDFCOThGQkVDMDA0NjNCMjYgLyogSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5RTcyOTQwNzE5MEYw
MUE1MDAxQTkxQjUgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTc4NjM2QzBEOUJFRUMzMDBENzRFNzUgLyog
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgKi87IH07CiAJCTlFNzI5NDA4MTkwRjAyMUUwMDFBOTFC
NSAvKiBJbml0aWFsaXplTExWTVBPU0lYLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0VGQUM1MTgwNUU3NTUwMDQ3MkNFNCAvKiBJbml0aWFsaXpl
TExWTVBPU0lYLmNwcCAqLzsgfTsKIAkJOUU3Mjk0MEIxOTBGMDUxNDAwMUE5MUI1IC8qIEJ1bmRs
ZVBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlF
NzI5NDBBMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLmggKi87IH07CkBAIC0zMDYzLDYg
KzMwNjUsOCBAQAogCQk5OUU0NUEyMTE4QTFCMjU5MDAyNkQ4OEYgLyogRW5jb2RlZFZhbHVlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVuY29kZWRWYWx1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5OUU0NUEyMjE4QTFCMjU5MDAyNkQ4OEYgLyogSW5wdXRD
dXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5wdXRDdXJzb3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlFNDVBMjMxOEExQjI1OTAwMjZEODhGIC8q
IE5vbmRldGVybWluaXN0aWNJbnB1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOb25kZXRlcm1pbmlzdGljSW5wdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTlGMUE2RkMxQjhFNkQ5NDAwNDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kUm91
dGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlGMUE3MDAxQjk4RkJFQzAw
NDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kUm91dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCNDk1NEU4MUE2NjQwREIwMDI4MTVBNiAvKiBQYXJzZXJGdW5jdGlvbklu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VyRnVuY3Rpb25JbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTlFNzI5NDA5MTkwRjAzMDYwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQnVuZGxlUGF0aC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUU3Mjk0MEExOTBGMDUxNDAwMUE5MUI1IC8q
IEJ1bmRsZVBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVuZGxlUGF0
aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTcxMyw2ICs1NzE3LDcgQEAKIAkJ
QTVCQTE1REYxODIzNDA5MjAwQTgyRTY5IC8qIGluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTlGMUE3MDAxQjk4RkJFQzAwNDYzQjI2IC8q
IEluc3BlY3RvckZyb250ZW5kUm91dGVyLmggKi8sCiAJCQkJQTUxM0U1Q0MxODVGQjk5MjAwN0U5
NUFEIC8qIGFnZW50cyAqLywKIAkJCQlBNUVBNzBFMzE5RjVCMEUyMDA5OEY1RUMgLyogYXVnbWVu
dGFibGUgKi8sCiAJCQkJQTUzMjQzOEQxODU2OTZDQTAwMkVENjkyIC8qIHByb3RvY29sICovLApA
QCAtNTc0NCw2ICs1NzQ5LDcgQEAKIAkJCQlBNTkzQ0Y3QjE4NDAzNjAzMDBCRkNFMjcgLyogSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLywKIAkJCQlBNUQwQTFCQTE4NjIzMDFCMDBDN0I0
OTYgLyogSW5zcGVjdG9yRW52aXJvbm1lbnQuaCAqLywKIAkJCQlBNTk0NTU5NDE4MjQ3OUVCMDBD
QzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggKi8sCisJCQkJOTlGMUE2RkMxQjhF
NkQ5NDAwNDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVyLmNwcCAqLywKIAkJCQlBNTVE
OTNBQjE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oICovLAogCQkJ
CUE1OTNDRjgwMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovLAogCQkJ
CUE1OTNDRjgxMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLywKQEAgLTU5
MDcsNiArNTkxMyw3IEBACiAJCQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjg5OEYzMjFCMjc2ODlGMDA4M0EzM0MgLyog
REZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
RDNCMkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTk5RjFBNzAxMUI5OEZCRUMwMDQ2M0IyNiAvKiBJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNzk2NDY1NkExQjk1MkZGMDAwMzA1OUVFIC8qIEdldFB1dElu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTc5N0UwN0FBMUI4RkNGQjkwMDg0MDBCQSAvKiBKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMjgxQUE5
MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCkBAIC03OTQx
LDYgKzc5NDgsNyBAQAogCQkJCUMyMjU0OTQzMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwNDAyQzBFNkE3NjQwMDA3ODZFNkEgLyogU21h
bGxTdHJpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzRUY4ODc0MUI2NkRGMjMwMDNGMjZD
QiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk5RjFB
NkZFMUI4RTZEOTQwMDQ2M0IyNiAvKiBJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjhGMkI5RTE3MzA2QzhEMDA3REJEQTUgLyogU291cmNlQ29kZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjQ5M0FGQTE2RDBDQUQzMDA4NDUwOEIgLyogU291cmNlUHJv
dmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMzRThEMUMxQjkwMTNDMzAwMzQ2QjUyIC8q
IEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuY3BwCmluZGV4IDRkNDVkYTk5ZTFiZjY2NDc1MzdkODRjMTQxMzUyMjkzOWIwOTgwODku
LjA5MzZiNDExMWMyNDEzMzRkNzQ5YzIyNDFkM2I2YzE0NTE4NjkwN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuaCIKIAogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kUm91dGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yVmFsdWVzLmgiCiAjaW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTM1LDYgKzM2LDE1IEBACiAKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCitTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcjo6U3VwcGxlbWVudGFsQmFj
a2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyKQorICAg
IDogbV9iYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKK3sKK30KKworU3VwcGxl
bWVudGFsQmFja2VuZERpc3BhdGNoZXI6On5TdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcigp
Cit7Cit9CisKIEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OkNhbGxiYWNrQmFzZShS
ZWY8QmFja2VuZERpc3BhdGNoZXI+JiYgYmFja2VuZERpc3BhdGNoZXIsIGxvbmcgcmVxdWVzdElk
KQogICAgIDogbV9iYWNrZW5kRGlzcGF0Y2hlcihXVEY6Om1vdmUoYmFja2VuZERpc3BhdGNoZXIp
KQogICAgICwgbV9yZXF1ZXN0SWQocmVxdWVzdElkKQpAQCAtNjksMTUgKzc5LDI4IEBAIHZvaWQg
QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6c2VuZFN1Y2Nlc3MoUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4mJiBwYXJ0CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNl
KG1fcmVxdWVzdElkLCBXVEY6Om1vdmUocGFydGlhbE1lc3NhZ2UpKTsKIH0KIAotUmVmPEJhY2tl
bmREaXNwYXRjaGVyPiBCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsKQorQmFja2VuZERpc3BhdGNoZXI6OkJhY2tlbmREaXNwYXRjaGVyKFJl
ZjxGcm9udGVuZFJvdXRlcj4mJiByb3V0ZXIpCisgICAgOiBtX2Zyb250ZW5kUm91dGVyKFdURjo6
bW92ZShyb3V0ZXIpKQoreworfQorCitSZWY8QmFja2VuZERpc3BhdGNoZXI+IEJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoUmVmPEZyb250ZW5kUm91dGVyPiYmIHJvdXRlcikKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBCYWNrZW5kRGlzcGF0Y2hlcihmcm9udGVuZENoYW5uZWwpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYWNrZW5kRGlzcGF0Y2hlcihXVEY6Om1vdmUocm91dGVy
KSkpOworfQorCitib29sIEJhY2tlbmREaXNwYXRjaGVyOjppc0FjdGl2ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fZnJvbnRlbmRSb3V0ZXItPmhhc0Zyb250ZW5kcygpOwogfQogCiB2b2lkIEJh
Y2tlbmREaXNwYXRjaGVyOjpyZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oY29uc3QgU3RyaW5n
JiBkb21haW4sIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKiBkaXNwYXRjaGVyKQogewot
ICAgIGF1dG8gcmVzdWx0ID0gbV9kaXNwYXRjaGVycy5hZGQoZG9tYWluLCBkaXNwYXRjaGVyKTsK
LSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworICAgIEFTU0VS
VF9BUkcoZGlzcGF0Y2hlciwgZGlzcGF0Y2hlcik7CisKKyAgICAvLyBGSVhNRTogPGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzE0ODQ5Mj4gQWdlbnRzIHNob3VsZCBvbmx5IHJlZ2lzdGVyIHdpdGggdGhl
IGJhY2tlbmQgb25jZSwKKyAgICAvLyBhbmQgd2Ugc2hvdWxkIHJlLWFkZCB0aGUgYXNzZXJ0aW9u
IHRoYXQgb25seSBvbmUgZGlzcGF0Y2hlciBpcyByZWdpc3RlcmVkIHBlciBkb21haW4uCisgICAg
bV9kaXNwYXRjaGVycy5zZXQoZG9tYWluLCBkaXNwYXRjaGVyKTsKIH0KIAogdm9pZCBCYWNrZW5k
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpAQCAtMTY1LDkgKzE4
OCw2IEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKIAogdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFJlc3BvbnNlKGxvbmcgcmVxdWVz
dElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIHJlc3VsdCkKIHsKLSAgICBpZiAoIW1fZnJv
bnRlbmRDaGFubmVsKQotICAgICAgICByZXR1cm47Ci0KICAgICBBU1NFUlQoIW1fcHJvdG9jb2xF
cnJvcnMuc2l6ZSgpKTsKIAogICAgIC8vIFRoZSBKU09OLVJQQyAyLjAgc3BlY2lmaWNhdGlvbiBy
ZXF1aXJlcyB0aGF0IHRoZSAiZXJyb3IiIG1lbWJlciBoYXZlIHRoZSB2YWx1ZSAnbnVsbCcKQEAg
LTE3NSw3ICsxOTUsNyBAQCB2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UobG9u
ZyByZXF1ZXN0SWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgcgogICAgIFJlZjxJbnNwZWN0
b3JPYmplY3Q+IHJlc3BvbnNlTWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAg
ICAgcmVzcG9uc2VNZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJyZXN1bHQiKSwgcmVz
dWx0KTsKICAgICByZXNwb25zZU1lc3NhZ2UtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJpZCIp
LCByZXF1ZXN0SWQpOwotICAgIG1fZnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRl
bmQocmVzcG9uc2VNZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CisgICAgbV9mcm9udGVuZFJvdXRl
ci0+c2VuZFJlc3BvbnNlKHJlc3BvbnNlTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOwogfQogCiB2
b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUGVuZGluZ0Vycm9ycygpCkBAIC0xOTAsOSArMjEw
LDYgQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFBlbmRpbmdFcnJvcnMoKQogICAgICAg
ICAtMzIwMDAsIC8vIFNlcnZlckVycm9yCiAgICAgfTsKIAotICAgIGlmICghbV9mcm9udGVuZENo
YW5uZWwpCi0gICAgICAgIHJldHVybjsKLSAgICAKICAgICAvLyBUbyBjb25zdHJ1Y3QgdGhlIGVy
cm9yIG9iamVjdCwgb25seSB1c2UgdGhlIGxhc3QgZXJyb3IncyBjb2RlIGFuZCBtZXNzYWdlLgog
ICAgIC8vIFBlciBKU09OLVJQQyAyLjAsIFNlY3Rpb24gNS4xLCB0aGUgJ2RhdGEnIG1lbWJlciBt
YXkgY29udGFpbiBuZXN0ZWQgZXJyb3JzLAogICAgIC8vIGJ1dCBvbmx5IG9uZSB0b3AtbGV2ZWwg
RXJyb3Igb2JqZWN0IHNob3VsZCBiZSBzZW50IHBlciByZXF1ZXN0LgpAQCAtMjI3LDcgKzI0NCw3
IEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnNlbmRQZW5kaW5nRXJyb3JzKCkKICAgICAgICAg
bWVzc2FnZS0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJpZCIpLCBJbnNwZWN0b3JWYWx1ZTo6bnVs
bCgpKTsKICAgICB9CiAKLSAgICBtX2Zyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250
ZW5kKG1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKKyAgICBtX2Zyb250ZW5kUm91dGVyLT5zZW5k
UmVzcG9uc2UobWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOwogCiAgICAgbV9wcm90b2NvbEVycm9y
cy5jbGVhcigpOwogICAgIG1fY3VycmVudFJlcXVlc3RJZCA9IE51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmgKaW5kZXggZjIyNDgyZDliMGY5NTEyODk3Mzk1MWNmODMyMzI3ZjBhYjM4MTUw
My4uYzYxY2YxZDBjZDNmODU0N2U0ZDU2MDgyODBkMDBhYzg3N2U5NWMwOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuaApAQCAtMzUsMTUgKzM1LDE0IEBACiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IAogY2xhc3MgQmFja2VuZERpc3BhdGNoZXI7Ci1jbGFzcyBGcm9udGVuZENoYW5uZWw7CitjbGFz
cyBGcm9udGVuZFJvdXRlcjsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKIGNsYXNz
IFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U3VwcGxl
bWVudGFsQmFja2VuZERpc3BhdGNoZXI+IHsKIHB1YmxpYzoKLSAgICBTdXBwbGVtZW50YWxCYWNr
ZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIpCi0gICAg
ICAgIDogbV9iYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikgeyB9Ci0gICAgdmly
dHVhbCB+U3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoKSB7IH0KKyAgICBTdXBwbGVtZW50
YWxCYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlciYpOworICAgIHZpcnR1YWwgflN1
cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
KGxvbmcgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVj
dD4mJiBtZXNzYWdlKSA9IDA7CiBwcm90ZWN0ZWQ6CiAgICAgUmVmPEJhY2tlbmREaXNwYXRjaGVy
PiBtX2JhY2tlbmREaXNwYXRjaGVyOwpAQCAtNTEsNyArNTAsNyBAQCBwcm90ZWN0ZWQ6CiAKIGNs
YXNzIEJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIFJlZkNvdW50ZWQ8QmFja2VuZERpc3BhdGNo
ZXI+IHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEJhY2tlbmRE
aXNwYXRjaGVyPiBjcmVhdGUoRnJvbnRlbmRDaGFubmVsKik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKFJlZjxGcm9udGVuZFJvdXRl
cj4mJik7CiAKICAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBDYWxsYmFja0Jhc2UgOiBwdWJs
aWMgUmVmQ291bnRlZDxDYWxsYmFja0Jhc2U+IHsKICAgICBwdWJsaWM6CkBAIC02OSw4ICs2OCw3
IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBtX2FscmVhZHlTZW50IHsgZmFsc2UgfTsKICAgICB9
OwogCi0gICAgdm9pZCBjbGVhckZyb250ZW5kKCkgeyBtX2Zyb250ZW5kQ2hhbm5lbCA9IG51bGxw
dHI7IH0KLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gISFtX2Zyb250ZW5kQ2hh
bm5lbDsgfQorICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKIAogICAgIGJvb2wgaGFzUHJvdG9j
b2xFcnJvcnMoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvY29sRXJyb3JzLnNpemUoKSA+IDA7IH0K
IApAQCAtMTA0LDEyICsxMDIsOSBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5
PiBnZXRBcnJheShJbnNwZWN0b3JPYmplY3QqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZh
bHVlRm91bmQpOwogCiBwcml2YXRlOgotICAgIEJhY2tlbmREaXNwYXRjaGVyKEZyb250ZW5kQ2hh
bm5lbCogY2hhbm5lbCkKLSAgICAgICAgOiBtX2Zyb250ZW5kQ2hhbm5lbChjaGFubmVsKQotICAg
IHsKLSAgICB9CisgICAgQmFja2VuZERpc3BhdGNoZXIoUmVmPEZyb250ZW5kUm91dGVyPiYmKTsK
IAotICAgIEZyb250ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENoYW5uZWw7CisgICAgUmVmPEZyb250
ZW5kUm91dGVyPiBtX2Zyb250ZW5kUm91dGVyOwogICAgIEhhc2hNYXA8U3RyaW5nLCBTdXBwbGVt
ZW50YWxCYWNrZW5kRGlzcGF0Y2hlcio+IG1fZGlzcGF0Y2hlcnM7CiAKICAgICAvLyBQcm90b2Nv
bCBlcnJvcnMgcmVwb3J0ZWQgZm9yIHRoZSB0b3AtbGV2ZWwgcmVxdWVzdCBiZWluZyBwcm9jZXNz
ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kUm91dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4N2E2NzhhNjVlZmJlYjYwZjVm
ZGQ4YjNjMTIyOTVmZGQ2ZWQzMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmNwcApAQCAtMCwwICsxLDEx
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JGcm9udGVuZFJvdXRlci5oIgorCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
LmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7
CisKK1JlZjxGcm9udGVuZFJvdXRlcj4gRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJvbnRlbmRSb3V0ZXIpOworfQorCit2b2lkIEZyb250ZW5k
Um91dGVyOjpjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRDaGFubmVsKiBjb25uZWN0aW9uKQorewor
ICAgIEFTU0VSVF9BUkcoY29ubmVjdGlvbiwgY29ubmVjdGlvbik7CisKKyAgICBpZiAobV9jb25u
ZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29ubmVjdGlvbnMuYXBwZW5k
KGNvbm5lY3Rpb24pOworfQorCit2b2lkIEZyb250ZW5kUm91dGVyOjpkaXNjb25uZWN0RnJvbnRl
bmQoRnJvbnRlbmRDaGFubmVsKiBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVF9BUkcoY29ubmVj
dGlvbiwgY29ubmVjdGlvbik7CisKKyAgICBpZiAoIW1fY29ubmVjdGlvbnMuY29udGFpbnMoY29u
bmVjdGlvbikpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZUZpcnN0KGNvbm5lY3Rpb24pOwor
fQorCit2b2lkIEZyb250ZW5kUm91dGVyOjpkaXNjb25uZWN0QWxsRnJvbnRlbmRzKCkKK3sKKyAg
ICBtX2Nvbm5lY3Rpb25zLmNsZWFyKCk7Cit9CisKKy8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQu
b3JnL2IvMTQ4NDkyPiByZW1vdmUgdGhpcyBtZXRob2Qgb25jZSBhZ2VudHMgbW92ZSB0byB1c2lu
ZyBGcm9udGVuZFJvdXRlciBkaXJlY3RseS4KK0Zyb250ZW5kQ2hhbm5lbCogRnJvbnRlbmRSb3V0
ZXI6OmxlYWtDaGFubmVsKCkgY29uc3QKK3sKKyAgICBpZiAobV9jb25uZWN0aW9ucy5zaXplKCkp
CisgICAgICAgIHJldHVybiBtX2Nvbm5lY3Rpb25zLmF0KDApOworCisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK2Jvb2wgRnJvbnRlbmRSb3V0ZXI6Omhhc0xvY2FsRnJvbnRlbmQoKSBjb25zdAor
eworICAgIGZvciAoYXV0byogY29ubmVjdGlvbiA6IG1fY29ubmVjdGlvbnMpIHsKKyAgICAgICAg
aWYgKGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25UeXBlKCkgPT0gRnJvbnRlbmRDaGFubmVsOjpDb25u
ZWN0aW9uVHlwZTo6TG9jYWwpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRnJvbnRlbmRSb3V0ZXI6Omhhc1JlbW90ZUZyb250
ZW5kKCkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8qIGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25z
KSB7CisgICAgICAgIGlmIChjb25uZWN0aW9uLT5jb25uZWN0aW9uVHlwZSgpID09IEZyb250ZW5k
Q2hhbm5lbDo6Q29ubmVjdGlvblR5cGU6OlJlbW90ZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBGcm9udGVuZFJvdXRlcjo6
c2VuZEV2ZW50KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8q
IGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zKQorICAgICAgICBjb25uZWN0aW9uLT5zZW5kTWVz
c2FnZVRvRnJvbnRlbmQobWVzc2FnZSk7Cit9CisKK3ZvaWQgRnJvbnRlbmRSb3V0ZXI6OnNlbmRS
ZXNwb25zZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IHNl
bmQgcmVzcG9uc2VzIHRvIHRoZSBhcHByb3ByaWF0ZSBmcm9udGVuZC4KKyAgICBmb3IgKGF1dG8q
IGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zKQorICAgICAgICBjb25uZWN0aW9uLT5zZW5kTWVz
c2FnZVRvRnJvbnRlbmQobWVzc2FnZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3Rvcgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZFJvdXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZFJvdXRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhNjQxMWJlYzQyNjU3NzAwNWQyODliZDQzM2Ri
MGEwMzgyMzM5YmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXJfaAorI2RlZmluZSBJbnNwZWN0
b3JGcm9udGVuZFJvdXRlcl9oCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBG
cm9udGVuZENoYW5uZWw7CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEZyb250ZW5kUm91dGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8RnJvbnRlbmRSb3V0ZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPEZyb250ZW5kUm91dGVyPiBjcmVhdGUoKTsKKworICAgIGJvb2wgaGFzRnJvbnRlbmRz
KCkgY29uc3QgeyByZXR1cm4gIW1fY29ubmVjdGlvbnMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBo
YXNMb2NhbEZyb250ZW5kKCkgY29uc3Q7CisgICAgYm9vbCBoYXNSZW1vdGVGcm9udGVuZCgpIGNv
bnN0OworCisgICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRDaGFubmVsKik7CisgICAg
dm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRDaGFubmVsKik7CisgICAgdm9pZCBkaXNj
b25uZWN0QWxsRnJvbnRlbmRzKCk7CisKKyAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzE0ODQ5Mj4gcmVtb3ZlIHRoaXMgbWV0aG9kIG9uY2UgYWdlbnRzIG1vdmUgdG8gdXNpbmcg
RnJvbnRlbmRSb3V0ZXIgZGlyZWN0bHkuCisgICAgRnJvbnRlbmRDaGFubmVsKiBsZWFrQ2hhbm5l
bCgpIGNvbnN0OworCisgICAgdm9pZCBzZW5kRXZlbnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBj
b25zdDsKKyAgICB2b2lkIHNlbmRSZXNwb25zZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0
OworCitwcml2YXRlOgorICAgIFZlY3RvcjxGcm9udGVuZENoYW5uZWwqLCAyPiBtX2Nvbm5lY3Rp
b25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyAhZGVmaW5l
ZChJbnNwZWN0b3JGcm9udGVuZFJvdXRlcl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXIuY3BwCmluZGV4IDE0M2Q3ZjEzNDdlYWIyYzVmMWZjMWMzNzk4Y2I4NWYzMjQ3NTI5
MWUuLjMzNTBmYzBkMTg5NTFmMDgyZmE3OTcxMTIwN2E1YjI4MDdlZjRjYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJJbnNwZWN0b3JBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgog
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50LmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3RDb25zb2xlQ2xpZW50LmgiCkBAIC02Myw3ICs2NCw4IEBAIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICA6
IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKHN0ZDo6bWFrZV91bmlxdWU8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgSW5qZWN0
ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCi0gICAgLCBtX2Zyb250ZW5kQ2hhbm5lbChudWxscHRy
KQorICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCisgICAg
LCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVu
ZFJvdXRlci5jb3B5UmVmKCkpKQogICAgICwgbV9leGVjdXRpb25TdG9wd2F0Y2goU3RvcHdhdGNo
OjpjcmVhdGUoKSkKICAgICAsIG1faW5jbHVkZU5hdGl2ZUNhbGxTdGFja1dpdGhFeGNlcHRpb25z
KHRydWUpCiAgICAgLCBtX2lzQXV0b21hdGljSW5zcGVjdGlvbihmYWxzZSkKQEAgLTk4LDIyICsx
MDAsMjQgQEAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjp+SlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyKCkKIAogdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXI6Omdsb2JhbE9iamVjdERlc3Ryb3llZCgpCiB7Ci0gICAgZGlzY29ubmVjdEZyb250
ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCk7CisgICAgZGlz
Y29ubmVjdEFsbEZyb250ZW5kcygpOwogCiAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmRp
c2Nvbm5lY3QoKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6
OmNvbm5lY3RGcm9udGVuZChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCBp
c0F1dG9tYXRpY0luc3BlY3Rpb24pCiB7Ci0gICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2hhbm5lbCk7
Ci0gICAgQVNTRVJUKCFtX2JhY2tlbmREaXNwYXRjaGVyKTsKKyAgICBBU1NFUlRfQVJHKGZyb250
ZW5kQ2hhbm5lbCwgZnJvbnRlbmRDaGFubmVsKTsKIAogICAgIG1faXNBdXRvbWF0aWNJbnNwZWN0
aW9uID0gaXNBdXRvbWF0aWNJbnNwZWN0aW9uOwogCi0gICAgbV9mcm9udGVuZENoYW5uZWwgPSBm
cm9udGVuZENoYW5uZWw7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoZnJvbnRlbmRDaGFubmVsKTsKKyAgICBib29sIGNvbm5lY3RlZEZpcnN0RnJv
bnRlbmQgPSAhbV9mcm9udGVuZFJvdXRlci0+aGFzRnJvbnRlbmRzKCk7CisgICAgbV9mcm9udGVu
ZFJvdXRlci0+Y29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCk7CiAKLSAgICBtX2FnZW50
cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoZnJvbnRlbmRDaGFubmVsLCBtX2JhY2tlbmRE
aXNwYXRjaGVyLmdldCgpKTsKKyAgICBpZiAoIWNvbm5lY3RlZEZpcnN0RnJvbnRlbmQpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChm
cm9udGVuZENoYW5uZWwsICZtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogICAgIG1faW5zcGVjdG9yQWdlbnQt
PmFjdGl2YXRlRXh0cmFEb21haW5zKG1fYWdlbnRzLmV4dHJhRG9tYWlucygpKTsKQEAgLTEyMywx
NiArMTI3LDMxIEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpjb25u
ZWN0RnJvbnRlbmQoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuCiAjZW5kaWYKIH0KIAotdm9pZCBK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChEaXNj
b25uZWN0UmVhc29uIHJlYXNvbikKK3ZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwp
CiB7Ci0gICAgaWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkKKyAgICBBU1NFUlRfQVJHKGZyb250ZW5k
Q2hhbm5lbCwgZnJvbnRlbmRDaGFubmVsKTsKKworICAgIG1fYWdlbnRzLndpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisK
KyAgICBtX2Zyb250ZW5kUm91dGVyLT5kaXNjb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVs
KTsKKworICAgIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2U7CisKKyAgICBib29sIGRp
c2Nvbm5lY3RlZExhc3RGcm9udGVuZCA9ICFtX2Zyb250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMo
KTsKKyAgICBpZiAoIWRpc2Nvbm5lY3RlZExhc3RGcm9udGVuZCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQocmVhc29uKTsKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyAgICBpZiAobV9hdWdt
ZW50aW5nQ2xpZW50KQorICAgICAgICBtX2F1Z21lbnRpbmdDbGllbnQtPmluc3BlY3RvckRpc2Nv
bm5lY3RlZCgpOworI2VuZGlmCit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyOjpkaXNjb25uZWN0QWxsRnJvbnRlbmRzKCkKK3sKKyAgICBtX2FnZW50cy53aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXRE
ZXN0cm95ZWQpOwogCi0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+Y2xlYXJGcm9udGVuZCgpOwot
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fZnJvbnRlbmRDaGFubmVs
ID0gbnVsbHB0cjsKKyAgICBtX2Zyb250ZW5kUm91dGVyLT5kaXNjb25uZWN0QWxsRnJvbnRlbmRz
KCk7CiAKICAgICBtX2lzQXV0b21hdGljSW5zcGVjdGlvbiA9IGZhbHNlOwogCkBAIC0xNDQsMTUg
KzE2MywxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29u
bmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb24gcmVhcwogCiB2b2lkIEpTR2xvYmFsT2JqZWN0
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKIHsKLSAgICBpZiAobV9iYWNrZW5kRGlzcGF0Y2hlcikKLSAgICAgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlci0+ZGlzcGF0Y2gobWVzc2FnZSk7CisgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlci0+ZGlzcGF0Y2gobWVzc2FnZSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyOjpwYXVzZSgpCiB7Ci0gICAgaWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkK
LSAgICAgICAgcmV0dXJuOwotCiAgICAgRXJyb3JTdHJpbmcgZHVtbXlFcnJvcjsKICAgICBtX2Rl
YnVnZ2VyQWdlbnQtPmVuYWJsZShkdW1teUVycm9yKTsKICAgICBtX2RlYnVnZ2VyQWdlbnQtPnBh
dXNlKGR1bW15RXJyb3IpOwpAQCAtMjYyLDEzICsyNzcsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXI6OmFwcGVuZEV4dHJhQWdlbnQoc3RkOjp1bmlxdWVfcHRyPElu
c3BlY3QKIHsKICAgICBTdHJpbmcgZG9tYWluTmFtZSA9IGFnZW50LT5kb21haW5OYW1lKCk7CiAK
LSAgICBpZiAobV9mcm9udGVuZENoYW5uZWwpCi0gICAgICAgIGFnZW50LT5kaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQobV9mcm9udGVuZENoYW5uZWwsIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0
KCkpOworICAgIGFnZW50LT5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQobV9mcm9udGVuZFJv
dXRlci0+bGVha0NoYW5uZWwoKSwgJm1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogCiAgICAg
bV9hZ2VudHMuYXBwZW5kRXh0cmFBZ2VudChXVEY6Om1vdmUoYWdlbnQpKTsKIAotICAgIGlmICht
X2Zyb250ZW5kQ2hhbm5lbCkKLSAgICAgICAgbV9pbnNwZWN0b3JBZ2VudC0+YWN0aXZhdGVFeHRy
YURvbWFpbihkb21haW5OYW1lKTsKKyAgICBtX2luc3BlY3RvckFnZW50LT5hY3RpdmF0ZUV4dHJh
RG9tYWluKGRvbWFpbk5hbWUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlci5oCmluZGV4IDZlM2Y5NGVhYzIzNGVjODk4MzY5OGNlYWM3M2YxNmUwMzYwNGNi
Y2YuLmFhZTMyZTNjODk5M2JmNzA3ZTY2YjdmNTIwNTgyMzJhNzNhNzM5NzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNTMsNiArNTMsNyBAQCBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIAogY2xhc3MgQmFja2VuZERpc3BhdGNoZXI7CiBjbGFzcyBGcm9udGVuZENo
YW5uZWw7CitjbGFzcyBGcm9udGVuZFJvdXRlcjsKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdl
cjsKIGNsYXNzIEluc3BlY3RvckFnZW50OwogY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50OwpA
QCAtNzMsNyArNzQsOSBAQCBwdWJsaWM6CiAgICAgfkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlcigpOwogCiAgICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRDaGFubmVsKiwg
Ym9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pOwotICAgIHZvaWQgZGlzY29ubmVjdEZyb250ZW5k
KERpc2Nvbm5lY3RSZWFzb24pOworICAgIHZvaWQgZGlzY29ubmVjdEZyb250ZW5kKEZyb250ZW5k
Q2hhbm5lbCopOworICAgIHZvaWQgZGlzY29ubmVjdEFsbEZyb250ZW5kcygpOworCiAgICAgdm9p
ZCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lk
IGdsb2JhbE9iamVjdERlc3Ryb3llZCgpOwpAQCAtOTksNyArMTAyLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KiBhdWdtZW50YWJs
ZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2F1
Z21lbnRpbmdDbGllbnQ7IH0gCiAgICAgdmlydHVhbCB2b2lkIHNldEF1Z21lbnRhYmxlSW5zcGVj
dG9yQ29udHJvbGxlckNsaWVudChBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQq
IGNsaWVudCkgb3ZlcnJpZGUgeyBtX2F1Z21lbnRpbmdDbGllbnQgPSBjbGllbnQ7IH0KIAotICAg
IHZpcnR1YWwgRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2Zyb250ZW5kQ2hhbm5lbDsgfQorICAgIHZpcnR1YWwgY29uc3QgRnJvbnRl
bmRSb3V0ZXImIGZyb250ZW5kUm91dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcm9u
dGVuZFJvdXRlci5nZXQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRFeHRyYUFnZW50KHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+KSBvdmVycmlkZTsKICNlbmRpZgogCkBA
IC0xMTMsOCArMTE2LDggQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQqIG1f
Y29uc29sZUFnZW50OwogICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIG1fZGVidWdnZXJBZ2Vu
dDsKICAgICBBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOwotICAgIEZyb250ZW5kQ2hhbm5lbCogbV9m
cm9udGVuZENoYW5uZWw7Ci0gICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmRE
aXNwYXRjaGVyOworICAgIFJlZjxGcm9udGVuZFJvdXRlcj4gbV9mcm9udGVuZFJvdXRlcjsKKyAg
ICBSZWY8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgUmVmPFdU
Rjo6U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsKICAgICBib29sIG1faW5jbHVkZU5h
dGl2ZUNhbGxTdGFja1dpdGhFeGNlcHRpb25zOwogICAgIGJvb2wgbV9pc0F1dG9tYXRpY0luc3Bl
Y3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggN2IyZjNjZjE4MGM0ZTc4Mjg4ZGQwOWMwOTI0
Njk0OTE5YzY3OTg0YS4uODYyMjRiYTZiYjYzYjQ5NWVkYWEwNjZjMjdmYzQzYWM3NjgwZTY5MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckFnZW50LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rv
ckFnZW50LmgiCiAKICNpbmNsdWRlICJJbnNwZWN0b3JFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kUm91dGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgi
CiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5j
cHAKaW5kZXggODhkODE1MTgyNmRlNDU3Nzc1MjgwODI2MDk0ZmNlYTZlYWI0MTc2OC4uMWYxZDli
MWJhMDQ3NjczYTZkMDgxNDc5NTUxNTNiMDAwZDMwMThhZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25z
b2xlQWdlbnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDb25zb2xlTWVzc2Fn
ZS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgorI2luY2x1ZGUgIkluc3Bl
Y3RvckZyb250ZW5kUm91dGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGMyZjYzY2VjYWM2YjZhODViMzU0
YWYwZTA1MjJhNWI5NDM3MmI4MDEuLmFjYWMxNzBhNDAzMTUxMDBjMTYzMjc4OTVmYjc0OWNmOTBm
YzdhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiQ29udGVudFNlYXJjaFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMu
aCIKICNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVn
U2VydmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAppbmRleCAzMjEwNGEyZGYy
OGE5NjBhM2Q0OTgyZmY4NGFjMTkzZDI3MzNiM2EyLi5hZGRmZWJjMTkwYjgwZWM3ZjZmNjQ4MzA2
ZjczNzI0OTA2OTNhYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJJ
bmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckZyb250ZW5kUm91dGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFs
dWVzLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQXVn
bWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4
IDI0NTZhYzU5MTlkOGEwZDU2NTlkNmY3MWNjMDc1ODhmNmM3NzY4YjIuLmIwZDI1YjBiNjcyYTI5
NjdjYWZmNTc4YmY0ZjU4ODhlOWU5NTRmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BdWdt
ZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJM
RShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4KIAogbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKQEAgLTQyLDEwICs0MiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBBdWdtZW50
YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQqIGF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJv
bGxlckNsaWVudCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXVnbWVudGFibGVJ
bnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNs
aWVudCopID0gMDsKIAotICAgIHZpcnR1YWwgRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBGcm9udGVuZFJvdXRlciYgZnJvbnRl
bmRSb3V0ZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZEV4dHJhQWdlbnQo
c3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckFnZW50QmFzZT4pID0gMDsKIAotICAgIGJvb2wgY29u
bmVjdGVkKCkgY29uc3QgeyByZXR1cm4gISFmcm9udGVuZENoYW5uZWwoKTsgfQorICAgIGJvb2wg
Y29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gZnJvbnRlbmRSb3V0ZXIoKS5oYXNGcm9udGVuZHMo
KTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlLmgKaW5kZXggMDY0YjgzYWU4MzgzOGUxYWIzNmU1ZTc1ZjA2ZjZmOTc1MGYw
ODgwOS4uZGEyNDI5OWU0ZGQyNWYzNmYyMTU2NWI2MTNhNmRjMDZkYWJiMDE3NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgY29ubmVjdChGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVj
dGlvbikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkaXNjb25uZWN0KEZyb250ZW5kQ2hhbm5lbCopID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpIHsgfSAvLyBEZWZh
dWx0IGlzIHRvIGRvIG5vdGhpbmcuCiAgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgeyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbQppbmRl
eCBiZWRhYWQ3ZmFlNDBjNThjODk2NzJlNGQxYTBiMGE1MTFlOTY1YWI0Li5lZDZjZDYwZGNjMDEw
MWQwYjhmNmQzNWE4ODQxZjNmZTIxZjQ5MDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlv
bi5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbQpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQg
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmNsb3NlKCkKIAogICAgICAgICAg
ICAgaWYgKG1fZGVidWdnYWJsZSkgewogICAgICAgICAgICAgICAgIGlmIChtX2Nvbm5lY3RlZCkK
LSAgICAgICAgICAgICAgICAgICAgbV9kZWJ1Z2dhYmxlLT5kaXNjb25uZWN0KCk7CisgICAgICAg
ICAgICAgICAgICAgIG1fZGVidWdnYWJsZS0+ZGlzY29ubmVjdCh0aGlzKTsKIAogICAgICAgICAg
ICAgICAgIG1fZGVidWdnYWJsZSA9IG51bGxwdHI7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0
ZV9jcHBfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYWx0ZXJu
YXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKaW5kZXggZDRhOGQ1YWZlZWQ0NDUyZWU5
ZmJmNzhlYTUyYjk0MzNmYWIyMzY3OC4uMzc1Y2UwNWNhNDRhYjRlNDA5NTU4MzU0NjczNzAzMzIy
ZDU5MWFiNCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2FsdGVybmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVh
ZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX2NwcF9hbHRlcm5hdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weQpA
QCAtNDcsNiArNDcsNyBAQCBjbGFzcyBDcHBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlckhlYWRl
ckdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CiAg
ICAgICAgIGhlYWRlcnMgPSBbCiAgICAgICAgICAgICAnIkluc3BlY3RvclByb3RvY29sVHlwZXMu
aCInLAorICAgICAgICAgICAgJzxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4n
LAogICAgICAgICAgICAgJzxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5oPicsCiAgICAgICAgIF0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9p
bXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24u
cHkKaW5kZXggMTI1MTE0OTMzY2U5Mjg4MTViNDJkNDUyZjUyM2VhZWNkMzA3YTExZS4uYjM2YzBi
MTNjMDhkOTExMTI5NDY0N2I2Yjg2ZGJkYmUyOGJmZDczNSAxMDA3NTUKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tl
bmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRj
aGVyX2ltcGxlbWVudGF0aW9uLnB5CkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIENwcEJhY2tlbmRE
aXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICBkZWYgZ2Vu
ZXJhdGVfb3V0cHV0KHNlbGYpOgogICAgICAgICBzZWNvbmRhcnlfaGVhZGVycyA9IFsKICAgICAg
ICAgICAgICc8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPicsCisgICAgICAg
ICAgICAnPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPicsCiAgICAgICAgICAg
ICAnPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4nLAogICAgICAgICAgICAgJzx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4nLAogICAgICAgICAgICAgJzx3dGYvdGV4dC9DU3RyaW5nLmg+J10KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29i
amNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCBmYjJkZTRmNjFm
M2ZjMDFkN2E0NjA4MDhhOTg1NWM1YWRhMmY5MDAwLi45NDAxOGU1OWY2ZmFmNjAyMDdiYWVjZDY1
YmI1NTNhNTJiMGZlNTdkIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1w
bGVtZW50YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0
aW9uLnB5CkBAIC05OCw5ICs5OCw3IEBAIGNsYXNzIE9iakNGcm9udGVuZERpc3BhdGNoZXJJbXBs
ZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBsaW5lcyA9IFtdCiAgICAg
ICAgIGxpbmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9ldmVudF9zaWduYXR1cmUoZG9tYWluLCBl
dmVudCkpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgneycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgn
ICAgIEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gX2NvbnRyb2xsZXItPmZyb250
ZW5kQ2hhbm5lbCgpOycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlmICghZnJvbnRlbmRD
aGFubmVsKScpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICByZXR1cm47JykKKyAgICAg
ICAgbGluZXMuYXBwZW5kKCcgICAgY29uc3QgRnJvbnRlbmRSb3V0ZXImIHJvdXRlciA9IF9jb250
cm9sbGVyLT5mcm9udGVuZFJvdXRlcigpOycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKIAog
ICAgICAgICByZXF1aXJlZF9wb2ludGVyX3BhcmFtZXRlcnMgPSBmaWx0ZXIobGFtYmRhIHBhcmFt
ZXRlcjogbm90IHBhcmFtZXRlci5pc19vcHRpb25hbCBhbmQgT2JqQ0dlbmVyYXRvci5pc190eXBl
X29iamNfcG9pbnRlcl90eXBlKHBhcmFtZXRlci50eXBlKSwgZXZlbnQuZXZlbnRfcGFyYW1ldGVy
cykKQEAgLTEyNiw3ICsxMjQsNyBAQCBjbGFzcyBPYmpDRnJvbnRlbmREaXNwYXRjaGVySW1wbGVt
ZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAg
anNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm1ldGhvZCIpLCBBU0NJSUxpdGVy
YWwoIiVzLiVzIikpOycgJSAoZG9tYWluLmRvbWFpbl9uYW1lLCBldmVudC5ldmVudF9uYW1lKSkK
ICAgICAgICAgaWYgZXZlbnQuZXZlbnRfcGFyYW1ldGVyczoKICAgICAgICAgICAgIGxpbmVzLmV4
dGVuZChzZWxmLl9nZW5lcmF0ZV9ldmVudF9vdXRfcGFyYW1ldGVycyhkb21haW4sIGV2ZW50KSkK
LSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgZnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRv
RnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsnKQorICAgICAgICBsaW5lcy5h
cHBlbmQoJyAgICByb3V0ZXIuc2VuZEV2ZW50KGpzb25NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7
JykKICAgICAgICAgbGluZXMuYXBwZW5kKCd9JykKICAgICAgICAgcmV0dXJuICdcbicuam9pbihs
aW5lcykKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKaW5kZXggZWVjYzViYTAzMGFiNTQwY2E1ZTQzZGRk
NWFhOGFkMjJjMzczNjkxZS4uMmFlYTIwMzVmMzFhZmVmOWU3YTFlNjEzZTVlYjQ3MmFiNGU1MDZh
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCkBAIC01NiwxMSArNTYsMTEgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdERlYnVnZ2FibGU6OmNvbm5lY3QoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwsIGJvb2wgYXUKICAgICBtX2dsb2JhbE9iamVjdC5pbnNwZWN0b3JDb250cm9sbGVyKCkuY29u
bmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCwgYXV0b21hdGljSW5zcGVjdGlvbik7CiB9CiAK
LXZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KCkKK3ZvaWQgSlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoJm1fZ2xvYmFsT2JqZWN0LnZtKCkp
OwogCi0gICAgbV9nbG9iYWxPYmplY3QuaW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RG
cm9udGVuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOworICAgIG1fZ2xv
YmFsT2JqZWN0Lmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoZnJvbnRl
bmRDaGFubmVsKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OnBhdXNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlLmgKaW5kZXggNjBjZTU4YTQ0Yzc5MzU5YTc3MzlhOTA3OWI5OTMwZGQxMmFi
YTM5NC4uMDNmZDE3ZDBmZjBhNDY2Njk2NjU5M2EyMjZjNTA0ZjNlMTZhMmFhYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNM
b2NhbERlYnVnZ2VyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgYm9vbCBhdXRv
bWF0aWNJbnNwZWN0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRl
bmRDaGFubmVsKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZy
b21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZFJvdXRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhOWI2YTdmYzQ3ZGQxNjllMjZhNDY1Y2YzYjc0ZTNh
NDQzYTYyOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaApAQCAtMCwwICsxLDQgQEAK
KyNpZm5kZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXJfaAorI2RlZmluZSBX
ZWJDb3JlX0ZXRF9JbnNwZWN0b3JGcm9udGVuZFJvdXRlcl9oCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggMDY2YzNhZWVlNTY0NjNm
YjMxMzVmMTk2OTdiNWIzZGM5N2EyYWVhNy4uYzQ1YWMxZmY1ZjQ2ZjhkYWFhYjI2Zjg3YjU3YWY0
Nzk5M2Y2NmM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCkBAIC0yMDMzNiw2ICsyMDMzNiw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGlu
c3BlY3RvclxJbnNwZWN0b3JFbnZpcm9ubWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5z
cGVjdG9yXEluc3BlY3RvckZyb250ZW5kUm91dGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVy
c1xpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvclBy
b3RvY29sT2JqZWN0cy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNs
aWVudC5oCmluZGV4IGVlN2Q4ZmFjNDY1ZDFlNWNlZGUyMGUyYzE4ZWRlNWQ1ZjgxMDYxMWUuLjZk
MzlhNGM5MmFkY2Y1Mjg2ZjI0ODE1MmVjMWM1MjY5M2JhZGRkODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTI3LDExICsyNywxNCBAQAogI2lmbmRl
ZiBJbnNwZWN0b3JDbGllbnRfaAogI2RlZmluZSBJbnNwZWN0b3JDbGllbnRfaAogCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCituYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKK2NsYXNzIEZyb250ZW5kQ2hhbm5lbDsKK30KKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBGbG9hdFJlY3Q7CkBAIC00NSw3ICs0OCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSA9IDA7CiAKLSAgICB2aXJ0dWFs
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3Rv
ckNvbnRyb2xsZXIqKSA9IDA7CisgICAgdmlydHVhbCBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5l
bCogb3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNp
emVNYWluRnJhbWUoRnJhbWUqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCAyNzdmMTZiNmY0NzUwNTdiMTc0NjM3YjM2N2Qz
Y2E1YTA1YTgzY2JhLi44YTdkZjIwYWMwNGM3ZTAyZmI5YWNjYjk4OTc5ZWQzNTY0MTUwZjdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CkBAIC02OCw2ICs2OCw3IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVycy5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJz
Lmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+CiAjaW5j
bHVkZSA8aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oPgogI2luY2x1ZGUgPHByb2Zp
bGVyL0xlZ2FjeVByb2ZpbGVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KQEAgLTg1
LDYgKzg2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5z
cGVjdG9yQ29udHJvbGxlcihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNs
aWVudCkKICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpj
cmVhdGUoKnRoaXMpKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3Vu
aXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhv
c3Q6OmNyZWF0ZSgpKSkKKyAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNy
ZWF0ZSgpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigpKSkKICAgICAsIG1fb3ZlcmxheShzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvck92ZXJsYXk+KHBhZ2UsIGluc3BlY3RvckNsaWVudCkpCiAgICAg
LCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQogICAgICwgbV9wYWdl
KHBhZ2UpCkBAIC0xNzcsNyArMTgwLDggQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6fkluc3BlY3Rv
ckNvbnRyb2xsZXIoKQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFBhZ2VE
ZXN0cm95ZWQoKQogewotICAgIGRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uOjpJ
bnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpOworICAgIGRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKTsK
KwogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5kaXNjb25uZWN0KCk7CiAgICAgbV9pbnNw
ZWN0b3JDbGllbnQtPmluc3BlY3RvckRlc3Ryb3llZCgpOwogICAgIG1faW5zcGVjdG9yQ2xpZW50
ID0gbnVsbHB0cjsKQEAgLTE5MCwxMiArMTk0LDEyIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIGlu
CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzTG9jYWxGcm9udGVuZCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fZnJvbnRlbmRDaGFubmVsICYmIG1fZnJvbnRlbmRDaGFubmVsLT5jb25u
ZWN0aW9uVHlwZSgpID09IEZyb250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGU6OkxvY2FsOwor
ICAgIHJldHVybiBtX2Zyb250ZW5kUm91dGVyLT5oYXNMb2NhbEZyb250ZW5kKCk7CiB9CiAKIGJv
b2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzUmVtb3RlRnJvbnRlbmQoKSBjb25zdAogewotICAg
IHJldHVybiBtX2Zyb250ZW5kQ2hhbm5lbCAmJiBtX2Zyb250ZW5kQ2hhbm5lbC0+Y29ubmVjdGlv
blR5cGUoKSA9PSBGcm9udGVuZENoYW5uZWw6OkNvbm5lY3Rpb25UeXBlOjpSZW1vdGU7CisgICAg
cmV0dXJuIG1fZnJvbnRlbmRSb3V0ZXItPmhhc1JlbW90ZUZyb250ZW5kKCk7CiB9CiAKIGJvb2wg
SW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSBjb25zdApA
QCAtMjE5LDc0ICsyMjMsOTYgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDbGVhcldp
bmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lLCBET01XcmFwcGVyV28KIAogdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pCiB7Ci0gICAg
QVNTRVJUKGZyb250ZW5kQ2hhbm5lbCk7CisgICAgQVNTRVJUX0FSRyhmcm9udGVuZENoYW5uZWws
IGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgQVNTRVJUKG1faW5zcGVjdG9yQ2xpZW50KTsKLSAgICBB
U1NFUlQoIW1fZnJvbnRlbmRDaGFubmVsKTsKLSAgICBBU1NFUlQoIW1fYmFja2VuZERpc3BhdGNo
ZXIpOwogCisgICAgYm9vbCBjb25uZWN0ZWRGaXJzdEZyb250ZW5kID0gIW1fZnJvbnRlbmRSb3V0
ZXItPmhhc0Zyb250ZW5kcygpOwogICAgIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gaXNBdXRv
bWF0aWNJbnNwZWN0aW9uOwogCi0gICAgbV9mcm9udGVuZENoYW5uZWwgPSBmcm9udGVuZENoYW5u
ZWw7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUo
ZnJvbnRlbmRDaGFubmVsKTsKLQotICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChmcm9udGVuZENoYW5uZWwsIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworICAgIG1f
ZnJvbnRlbmRSb3V0ZXItPmNvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwpOwogCi0gICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMobV9p
bnN0cnVtZW50aW5nQWdlbnRzLmdldCgpKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmZyb250ZW5kQ3JlYXRlZCgpOwogCisgICAgaWYgKGNvbm5lY3RlZEZpcnN0RnJvbnRlbmQpIHsK
KyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZWdpc3Rlckluc3RydW1lbnRpbmdB
Z2VudHMobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpKTsKKyAgICAgICAgbV9hZ2VudHMuZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgJm1fYmFja2VuZERpc3Bh
dGNoZXIuZ2V0KCkpOworICAgIH0KKwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAg
IGlmICghaGFzUmVtb3RlRnJvbnRlbmQoKSkKKyAgICBpZiAoIW1fZnJvbnRlbmRSb3V0ZXItPmhh
c1JlbW90ZUZyb250ZW5kKCkpCiAgICAgICAgIG1fcGFnZS5yZW1vdGVJbnNwZWN0b3JJbmZvcm1h
dGlvbkRpZENoYW5nZSgpOwogI2VuZGlmCiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQordm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVu
ZENoYW5uZWwpCiB7Ci0gICAgaWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkKLSAgICAgICAgcmV0dXJu
OworICAgIC8vIFRoZSBsb2NhbCBmcm9udGVuZCBjbGllbnQgc2hvdWxkIGJlIGRpc2Nvbm5lY3Rl
ZCBmaXJzdCBzbyBpdCBzdG9wcyBzZW5kaW5nIG1lc3NhZ2VzLgorICAgIEFTU0VSVCghbV9mcm9u
dGVuZFJvdXRlci0+aGFzTG9jYWxGcm9udGVuZCgpIHx8ICFtX2luc3BlY3RvckZyb250ZW5kQ2xp
ZW50KTsKKworICAgIG1fZnJvbnRlbmRSb3V0ZXItPmRpc2Nvbm5lY3RGcm9udGVuZChmcm9udGVu
ZENoYW5uZWwpOworICAgIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2U7CisKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyb250ZW5kRGVsZXRlZCgpOworCisgICAgYm9vbCBk
aXNjb25uZWN0ZWRMYXN0RnJvbnRlbmQgPSAhbV9mcm9udGVuZFJvdXRlci0+aGFzRnJvbnRlbmRz
KCk7CisgICAgaWYgKGRpc2Nvbm5lY3RlZExhc3RGcm9udGVuZCkgeworICAgICAgICAvLyBSZWxl
YXNlIG92ZXJsYXkgcGFnZSByZXNvdXJjZXMuCisgICAgICAgIG1fb3ZlcmxheS0+ZnJlZVBhZ2Uo
KTsKKyAgICAgICAgbV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29u
bmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp1bnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhtX2luc3RydW1lbnRpbmdB
Z2VudHMuZ2V0KCkpOworICAgIH0KIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAg
IGlmICghaGFzUmVtb3RlRnJvbnRlbmQoKSkKKyAgICBpZiAoIW1fZnJvbnRlbmRSb3V0ZXItPmhh
c0Zyb250ZW5kcygpKQogICAgICAgICBtX3BhZ2UucmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25E
aWRDaGFuZ2UoKTsKICNlbmRpZgorfQogCi0gICAgbV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQocmVhc29uKTsKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVj
dEFsbEZyb250ZW5kcygpCit7CisgICAgLy8gVGhlIGxvY2FsIGZyb250ZW5kIGNsaWVudCBzaG91
bGQgYmUgZGlzY29ubmVjdGVkIGZpcnN0IHNvIGl0IHN0b3BzIHNlbmRpbmcgbWVzc2FnZXMuCisg
ICAgQVNTRVJUKCFtX2Zyb250ZW5kUm91dGVyLT5oYXNMb2NhbEZyb250ZW5kKCkgfHwgIW1faW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQpOwogCi0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+Y2xlYXJG
cm9udGVuZCgpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1fZnJv
bnRlbmRDaGFubmVsID0gbnVsbHB0cjsKKyAgICBtX2FnZW50cy53aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpOwog
CisgICAgbV9mcm9udGVuZFJvdXRlci0+ZGlzY29ubmVjdEFsbEZyb250ZW5kcygpOwogICAgIG1f
aXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2U7CiAKICAgICAvLyBSZWxlYXNlIG92ZXJsYXkg
cGFnZSByZXNvdXJjZXMuCiAgICAgbV9vdmVybGF5LT5mcmVlUGFnZSgpOwotICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmREZWxldGVkKCk7CisKKyAgICB3aGlsZSAoSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSkKKyAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpmcm9udGVuZERlbGV0ZWQoKTsKKwogICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6dW5yZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMobV9pbnN0cnVtZW50aW5nQWdl
bnRzLmdldCgpKTsKKyAgICAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBtX3Bh
Z2UucmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKTsKKyNlbmRpZgogfQogCiB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNob3coKQogewotICAgIEFTU0VSVCghaGFzUmVtb3Rl
RnJvbnRlbmQoKSk7CisgICAgQVNTRVJUKCFtX2Zyb250ZW5kUm91dGVyLT5oYXNSZW1vdGVGcm9u
dGVuZCgpKTsKKworICAgIC8vIFRoZSBsb2NhbCBmcm9udGVuZCBjbGllbnQgc2hvdWxkIGJlIGRp
c2Nvbm5lY3RlZCBpZiB0aGVyZSdzIG5vIGxvY2FsIGZyb250ZW5kLgorICAgIEFTU0VSVChtX2Zy
b250ZW5kUm91dGVyLT5oYXNMb2NhbEZyb250ZW5kKCkgfHwgIW1faW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQpOwogCiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChtX2Zyb250ZW5kQ2hhbm5lbCkKKyAgICBpZiAobV9mcm9udGVuZFJvdXRlci0+aGFzTG9jYWxG
cm9udGVuZCgpKQogICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+YnJpbmdGcm9udGVuZFRvRnJv
bnQoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwgPSBtX2luc3BlY3RvckNsaWVudC0+b3Blbkluc3BlY3RvckZyb250
ZW5kKHRoaXMpKSB7Ci0gICAgICAgICAgICBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiA9IGZh
bHNlOwotICAgICAgICAgICAgY29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCwgaXNBdXRv
bWF0aWNJbnNwZWN0aW9uKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBlbHNlIGlmIChJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gbV9pbnNwZWN0b3JDbGllbnQt
Pm9wZW5JbnNwZWN0b3JGcm9udGVuZCh0aGlzKSkKKyAgICAgICAgY29ubmVjdEZyb250ZW5kKGZy
b250ZW5kQ2hhbm5lbCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xvc2UoKQog
ewotICAgIGlmICghbV9mcm9udGVuZENoYW5uZWwpCi0gICAgICAgIHJldHVybjsKLSAgICBkaXNj
b25uZWN0RnJvbnRlbmQoRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKLSAg
ICBtX2luc3BlY3RvckNsaWVudC0+Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpOworICAgIGlmICht
X2Zyb250ZW5kUm91dGVyLT5oYXNMb2NhbEZyb250ZW5kKCkpCisgICAgICAgIG1faW5zcGVjdG9y
Q2xpZW50LT5jbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CisKKyAgICBBU1NFUlQoIW1fZnJvbnRl
bmRSb3V0ZXItPmhhc0xvY2FsRnJvbnRlbmQoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6c2V0UHJvY2Vzc0lkKGxvbmcgcHJvY2Vzc0lkKQpAQCAtMzM3LDggKzM2Myw3IEBAIFBh
Z2UmIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFBhZ2UoKSBjb25zdAogCiB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiB7Ci0gICAgaWYgKG1fYmFja2VuZERpc3BhdGNoZXIpCi0gICAgICAgIG1f
YmFja2VuZERpc3BhdGNoZXItPmRpc3BhdGNoKG1lc3NhZ2UpOworICAgIG1fYmFja2VuZERpc3Bh
dGNoZXItPmRpc3BhdGNoKG1lc3NhZ2UpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmhpZGVIaWdobGlnaHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmgKaW5kZXggZGZiN2U4NTA5YWM2YzdiOTcwNGY5YjU0YTMyYTA2ODk0YWExZjg4
YS4uNmUxNWNlZGQ3YjU3ODJmMzk4YWYzNDU0MzZjYzYxMTg2ZTc3Nzk4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC00NSw2ICs0NSw3
IEBACiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEJhY2tlbmREaXNwYXRjaGVyOwogY2xh
c3MgRnJvbnRlbmRDaGFubmVsOworY2xhc3MgRnJvbnRlbmRSb3V0ZXI7CiBjbGFzcyBJbnNwZWN0
b3JBZ2VudDsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIApAQCAtOTgsOCArOTksOSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNMb2NhbEZyb250ZW5kKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNSZW1v
dGVGcm9udGVuZCgpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25uZWN0RnJv
bnRlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVj
dGlvbik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVj
dG9yOjpEaXNjb25uZWN0UmVhc29uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3RG
cm9udGVuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNw
ZWN0aW9uID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzY29ubmVjdEZyb250
ZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaXNjb25uZWN0QWxsRnJvbnRlbmRzKCk7CiAgICAgdm9pZCBzZXRQcm9jZXNzSWQobG9uZyk7
CiAKICAgICB2b2lkIGluc3BlY3QoTm9kZSopOwpAQCAtMTQwLDggKzE0Miw4IEBAIHByaXZhdGU6
CiAKICAgICBSZWY8SW5zdHJ1bWVudGluZ0FnZW50cz4gbV9pbnN0cnVtZW50aW5nQWdlbnRzOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+IG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOwotICAgIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBtX2Zy
b250ZW5kQ2hhbm5lbCB7IG51bGxwdHIgfTsKKyAgICBSZWY8SW5zcGVjdG9yOjpGcm9udGVuZFJv
dXRlcj4gbV9mcm9udGVuZFJvdXRlcjsKKyAgICBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9y
T3ZlcmxheT4gbV9vdmVybGF5OwogICAgIFJlZjxXVEY6OlN0b3B3YXRjaD4gbV9leGVjdXRpb25T
dG9wd2F0Y2g7CiAgICAgSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCmlu
ZGV4IGNjNDczZDc2MTdiN2I5OWZiM2VmMTBhMjlhYTNlY2Y5YTVkMDY3NWMuLmM3ZjZhNmUzNDIz
MDliNWNhMWY1MTczNDQyZmE1MWI0ZmUxMTRjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAK
ICNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJTUUxW
YWx1ZS5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IGVmM2IxODVj
MzYxZDg3Mjc0ZmMwNGNkZWI0NTVlMTJiNGRlYWE0OTMuLmEzZWFiYjdiMTE0ODcwNWZkZjRjZTJm
MWVlNGY4ZDhjYTEwY2RjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUg
PGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRE
aXNwYXRjaGVycy5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRl
ci5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXgg
ODU3OTE5OTlmYzNiMDcxNTYzNGQyNmJmY2VhYzgwMzg0OGQxM2Q3NS4uMTQzMmVmMGQ5M2UzMmM2
OWU1NzA1YmQ0ZWZmM2Q0MGRkNDFmNGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtNjIsNiArNjIsNyBAQAogI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCiAjaW5jbHVkZSA8aW5z
cGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZFJvdXRlci5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
aD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8aW5z
cGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCAyMmIwODdl
MTg1ZTVjY2E1MmRkYjhjNGYzNTg0MzE2YmE0ZGVkMmE0Li42MjliNDZlNDVhNzhlOTFiZTBjYzEw
MjAwNzRkYWFjNmRmMGYzYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5j
bHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kRGlz
cGF0Y2hlcnMuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIu
aD4KICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CkBAIC04MCw2ICs4MSw4IEBAIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsCiAgICAgLCBtX2lu
c3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50czo6Y3JlYXRlKCp0aGlzKSkKICAg
ICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCiAg
ICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQorICAgICwgbV9m
cm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCisgICAgLCBtX2JhY2tlbmRE
aXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5
UmVmKCkpKQogewogICAgIGF1dG8gcnVudGltZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3Jr
ZXJSdW50aW1lQWdlbnQ+KCptX2luamVjdGVkU2NyaXB0TWFuYWdlciwgJndvcmtlckdsb2JhbFNj
b3BlKTsKICAgICBtX3J1bnRpbWVBZ2VudCA9IHJ1bnRpbWVBZ2VudC5nZXQoKTsKQEAgLTEwOCwz
MyArMTExLDM2IEBAIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsCiAgCiBXb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyOjp+V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpCiB7CisgICAgQVNTRVJUKCFt
X2Zyb250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMoKSk7CisgICAgQVNTRVJUKCFtX2ZvcndhcmRp
bmdDaGFubmVsKTsKKwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+cmVzZXQoKTsKLSAgICBk
aXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRU
YXJnZXREZXN0cm95ZWQpOworICAgIG1fYWdlbnRzLmRpc2NhcmRBZ2VudHMoKTsKIH0KIAogdm9p
ZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQogewotICAgIEFT
U0VSVCghbV9mcm9udGVuZENoYW5uZWwpOwotICAgIG1fZnJvbnRlbmRDaGFubmVsID0gc3RkOjpt
YWtlX3VuaXF1ZTxQYWdlSW5zcGVjdG9yUHJveHk+KG1fd29ya2VyR2xvYmFsU2NvcGUpOwotICAg
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRl
bmRDaGFubmVsLmdldCgpKTsKLSAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQobV9mcm9udGVuZENoYW5uZWwuZ2V0KCksIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwor
ICAgIEFTU0VSVCghbV9mcm9udGVuZFJvdXRlci0+aGFzRnJvbnRlbmRzKCkpOworICAgIEFTU0VS
VCghbV9mb3J3YXJkaW5nQ2hhbm5lbCk7CisKKyAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0gc3Rk
OjptYWtlX3VuaXF1ZTxQYWdlSW5zcGVjdG9yUHJveHk+KG1fd29ya2VyR2xvYmFsU2NvcGUpOwor
ICAgIG1fZnJvbnRlbmRSb3V0ZXItPmNvbm5lY3RGcm9udGVuZChtX2ZvcndhcmRpbmdDaGFubmVs
LmdldCgpKTsKKyAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQobV9mb3J3
YXJkaW5nQ2hhbm5lbC5nZXQoKSwgJm1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogfQogCiB2
b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0
b3I6OkRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQogewotICAgIGlmICghbV9mcm9udGVuZENoYW5u
ZWwpCi0gICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9mcm9udGVuZFJvdXRlci0+aGFzRnJv
bnRlbmRzKCkpOworICAgIEFTU0VSVChtX2ZvcndhcmRpbmdDaGFubmVsKTsKIAogICAgIG1fYWdl
bnRzLndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKHJlYXNvbik7Ci0gICAgbV9iYWNrZW5k
RGlzcGF0Y2hlci0+Y2xlYXJGcm9udGVuZCgpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBu
dWxscHRyOwotICAgIG1fZnJvbnRlbmRDaGFubmVsID0gbnVsbHB0cjsKKyAgICBtX2Zyb250ZW5k
Um91dGVyLT5kaXNjb25uZWN0RnJvbnRlbmQobV9mb3J3YXJkaW5nQ2hhbm5lbC5nZXQoKSk7Cisg
ICAgbV9mb3J3YXJkaW5nQ2hhbm5lbCA9IG51bGxwdHI7CiB9CiAKIHZvaWQgV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKIHsKLSAgICBpZiAobV9iYWNrZW5kRGlzcGF0Y2hlcikKLSAgICAgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlci0+ZGlzcGF0Y2gobWVzc2FnZSk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ci0+ZGlzcGF0Y2gobWVzc2FnZSk7CiB9CiAKIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cjo6cmVzdW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGRlODE0ODBkMDgzYzUwY2Q4MGRjMjdmYTQxNjFkY2Yw
MzVmNWJlMWEuLjViZGUxZTFiNzk2N2U1YjZjZWU1YWE5ZmE3Nzk3ZTBkNWI5MDEzZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIuaApAQCAtNDEsNiArNDEsMTAgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEZyb250ZW5k
Um91dGVyOworfTsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb247CkBAIC03OCw5ICs4MiwxMCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwog
ICAgIFdvcmtlclJ1bnRpbWVBZ2VudCogbV9ydW50aW1lQWdlbnQgeyBudWxscHRyIH07CiAgICAg
SW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbD4gbV9mcm9udGVuZENoYW5uZWw7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsPiBtX2ZvcndhcmRpbmdDaGFubmVs
OwogICAgIFJlZjxXVEY6OlN0b3B3YXRjaD4gbV9leGVjdXRpb25TdG9wd2F0Y2g7Ci0gICAgUmVm
UHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Cisg
ICAgUmVmPEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI+IG1fZnJvbnRlbmRSb3V0ZXI7CisgICAg
UmVmPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAg
ICAgVmVjdG9yPEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSwgMj4gbV9pbmplY3RlZFNj
cmlwdEluc3RydW1lbnRhdGlvbkNvb2tpZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURl
YnVnZ2FibGUuY3BwCmluZGV4IGZlN2IyOTQ4NmFkZThiNGZhM2YzZjQ5YTBlZmFkOWNkNzAwOTdk
ZGQuLjI0OTgzYmVjNGE3OWNlNzM4YjQzZTkwZTI4ZGMwMDVlMzhhNmI0YWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwCkBAIC04MCwxMCArODAsMTAgQEAgdm9pZCBQYWdl
RGVidWdnYWJsZTo6Y29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCwg
Ym9vbCBpc0F1dG9tYXQKICAgICBpbnNwZWN0b3JDb250cm9sbGVyLmNvbm5lY3RGcm9udGVuZChj
aGFubmVsLCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pOwogfQogCi12b2lkIFBhZ2VEZWJ1Z2dhYmxl
OjpkaXNjb25uZWN0KCkKK3ZvaWQgUGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3QoSW5zcGVjdG9y
OjpGcm9udGVuZENoYW5uZWwqIGNoYW5uZWwpCiB7CiAgICAgSW5zcGVjdG9yQ29udHJvbGxlciYg
aW5zcGVjdG9yQ29udHJvbGxlciA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCk7Ci0gICAg
aW5zcGVjdG9yQ29udHJvbGxlci5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpEaXNjb25u
ZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOworICAgIGluc3BlY3RvckNvbnRyb2xsZXIu
ZGlzY29ubmVjdEZyb250ZW5kKGNoYW5uZWwpOwogCiAgICAgaWYgKG1fZm9yY2VkRGV2ZWxvcGVy
RXh0cmFzRW5hYmxlZCkgewogICAgICAgICBtX2ZvcmNlZERldmVsb3BlckV4dHJhc0VuYWJsZWQg
PSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuaAppbmRleCA2YWVmY2MzY2I0
NWI5MjAxNzBlOTc5NDU4YmU1YWIwNjBiMzZhNGQzLi5iMjkwOTRmNTk5YzFhYzFkZDNmNWRkMjM3
NDFiNWZkYjFiNmFjNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1
Z2dhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5oCkBAIC00
OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzTG9jYWxEZWJ1Z2dlcigp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yOjpG
cm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCopIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kaWNhdGluZyhib29s
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDMxYmY1
MTc0M2E4ODFjZmNiODI1YTU3OGI0NmFiMmNjMmNjZjU1NTcuLjBlZjdjZjcyNjExYmRjZjJlZWM4
OWJlNjg3ODUzOWJjOTdjZWM0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
QEAgLTE3MzQsOSArMTczNCw4IEBAIFBhc3NSZWZQdHI8RE9NV2luZG93PiBJbnRlcm5hbHM6Om9w
ZW5EdW1teUluc3BlY3RvckZyb250ZW5kKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIG1fZnJvbnRl
bmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kQ2xpZW50RHVtbXk+
KCZwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGZyb250ZW5kUGFnZSk7CiAgICAgZnJvbnRl
bmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQo
bV9mcm9udGVuZENsaWVudC5nZXQoKSk7CiAKLSAgICBib29sIGlzQXV0b21hdGljSW5zcGVjdGlv
biA9IGZhbHNlOwogICAgIG1fZnJvbnRlbmRDaGFubmVsID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teT4oZnJvbnRlbmRQYWdlKTsKLSAgICBwYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKG1fZnJvbnRlbmRDaGFubmVsLmdldCgp
LCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pOworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KS5jb25uZWN0RnJvbnRlbmQobV9mcm9udGVuZENoYW5uZWwuZ2V0KCkpOwogCiAgICAgcmV0dXJu
IG1fZnJvbnRlbmRXaW5kb3c7CiB9CkBAIC0xNzQ3LDkgKzE3NDYsMTMgQEAgdm9pZCBJbnRlcm5h
bHM6OmNsb3NlRHVtbXlJbnNwZWN0b3JGcm9udGVuZCgpCiAgICAgQVNTRVJUKHBhZ2UpOwogICAg
IEFTU0VSVChtX2Zyb250ZW5kV2luZG93KTsKIAotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uOjpJbnNw
ZWN0b3JEZXN0cm95ZWQpOworICAgIFBhZ2UqIGZyb250ZW5kUGFnZSA9IG1fZnJvbnRlbmRXaW5k
b3ctPmRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBBU1NFUlQoZnJvbnRlbmRQYWdlKTsKIAorICAg
IGZyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5k
Q2xpZW50KG51bGxwdHIpOwogICAgIG1fZnJvbnRlbmRDbGllbnQgPSBudWxscHRyOworCisgICAg
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChtX2Zyb250ZW5k
Q2hhbm5lbC5nZXQoKSk7CiAgICAgbV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOwogCiAgICAg
bV9mcm9udGVuZFdpbmRvdy0+Y2xvc2UobV9mcm9udGVuZFdpbmRvdy0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggYzUwZGJiN2E1OGQ4YjY0MzYwMDZhNWY5YzBjZDhl
ZGQ5NzRkN2I2ZS4uMDFiNGJjOTA0YzczNTcxY2RiNmEzYzkxMzkyMmYzNDhiZTVhZWU2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmgKQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
YnJpbmdUb0Zyb250KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlV2luZG93KCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RGcm9tQmFja2VuZCgpOworICAg
IHZvaWQgZGlzY29ubmVjdEZyb21CYWNrZW5kKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNo
V2luZG93KERvY2tTaWRlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93
KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggODA2MDAzYTYyNDU0MDU3MjljYWVmOGE2NzEy
M2M2MzE1YmFlNGU4ZS4uNmU1NDU2YjMxMDM1YzEyMjk1MjgyMTJmOWU0ZGQ4YzdjZDcyZDRmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5tbQpAQCAtODcsNyArODcsNyBAQCAtICh2b2lkKXNldEluc3BlY3RvckNsaWVu
dDooV2ViSW5zcGVjdG9yQ2xpZW50KilpbnNwZWN0b3JDbGllbnQ7CiAtIChXZWJJbnNwZWN0b3JD
bGllbnQqKWluc3BlY3RvckNsaWVudDsKIC0gKHZvaWQpc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQ6
KHVuc2lnbmVkKWhlaWdodDsKIC0gKHZvaWQpc2V0RG9ja2luZ1VuYXZhaWxhYmxlOihCT09MKXVu
YXZhaWxhYmxlOwotLSAodm9pZClkZXN0cm95SW5zcGVjdG9yVmlldzooYm9vbClub3RpZnlJbnNw
ZWN0b3JDb250cm9sbGVyOworLSAodm9pZClkZXN0cm95SW5zcGVjdG9yVmlldzsKIEBlbmQKIAog
CkBAIC0xMzAsNiArMTMwLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVj
dG9yRnJvbnRlbmQoKQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6YnJpbmdGcm9udGVuZFRv
RnJvbnQoKQogeworICAgIEFTU0VSVChtX2Zyb250ZW5kQ2xpZW50KTsKICAgICBtX2Zyb250ZW5k
Q2xpZW50LT5icmluZ1RvRnJvbnQoKTsKIH0KIApAQCAtMjUyLDEyICsyNTMsMTIgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YnJpbmdUb0Zyb250KCkKIAogdm9pZCBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6Y2xvc2VXaW5kb3coKQogewotICAgIFttX3dpbmRvd0NvbnRy
b2xsZXIuZ2V0KCkgZGVzdHJveUluc3BlY3RvclZpZXc6dHJ1ZV07CisgICAgW21fd2luZG93Q29u
dHJvbGxlci5nZXQoKSBkZXN0cm95SW5zcGVjdG9yVmlld107CiB9CiAKIHZvaWQgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OmRpc2Nvbm5lY3RGcm9tQmFja2VuZCgpCiB7Ci0gICAgW21fd2lu
ZG93Q29udHJvbGxlci5nZXQoKSBkZXN0cm95SW5zcGVjdG9yVmlldzpmYWxzZV07CisgICAgW21f
d2luZG93Q29udHJvbGxlci5nZXQoKSBkZXN0cm95SW5zcGVjdG9yVmlld107CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmF0dGFjaFdpbmRvdyhEb2NrU2lkZSkKQEAgLTUy
Miw3ICs1MjMsNyBAQCAtIChOU1JlY3Qpd2luZG93OihOU1dpbmRvdyAqKXdpbmRvdyB3aWxsUG9z
aXRpb25TaGVldDooTlNXaW5kb3cgKilzaGVldCB1c2luZ1JlYwogCiAtIChCT09MKXdpbmRvd1No
b3VsZENsb3NlOihpZClzZW5kZXIKIHsKLSAgICBbc2VsZiBkZXN0cm95SW5zcGVjdG9yVmlldzp0
cnVlXTsKKyAgICBbc2VsZiBkZXN0cm95SW5zcGVjdG9yVmlld107CiAKICAgICByZXR1cm4gWUVT
OwogfQpAQCAtNjc2LDcgKzY3Nyw3IEBAIC0gKHZvaWQpc2V0RG9ja2luZ1VuYXZhaWxhYmxlOihC
T09MKXVuYXZhaWxhYmxlCiAgICAgLy8gRG8gbm90aGluZy4KIH0KIAotLSAodm9pZClkZXN0cm95
SW5zcGVjdG9yVmlldzooYm9vbClub3RpZnlJbnNwZWN0b3JDb250cm9sbGVyCistICh2b2lkKWRl
c3Ryb3lJbnNwZWN0b3JWaWV3CiB7CiAgICAgUmV0YWluUHRyPFdlYkluc3BlY3RvcldpbmRvd0Nv
bnRyb2xsZXI+IHByb3RlY3Qoc2VsZik7CiAKQEAgLTY5Miw5ICs2OTMsOSBAQCAtICh2b2lkKWRl
c3Ryb3lJbnNwZWN0b3JWaWV3Oihib29sKW5vdGlmeUluc3BlY3RvckNvbnRyb2xsZXIKIAogICAg
IF92aXNpYmxlID0gTk87CiAKLSAgICBpZiAobm90aWZ5SW5zcGVjdG9yQ29udHJvbGxlcikgewot
ICAgICAgICBpZiAoUGFnZSogaW5zcGVjdGVkUGFnZSA9IFtfaW5zcGVjdGVkV2ViVmlldy5nZXQo
KSBwYWdlXSkKLSAgICAgICAgICAgIGluc3BlY3RlZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0
b3JEZXN0cm95ZWQpOworICAgIGlmIChQYWdlKiBpbnNwZWN0ZWRQYWdlID0gW19pbnNwZWN0ZWRX
ZWJWaWV3LmdldCgpIHBhZ2VdKSB7CisgICAgICAgIGluc3BlY3RlZFBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChudWxscHRyKTsKKyAgICAgICAg
aW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChf
aW5zcGVjdG9yQ2xpZW50KTsKICAgICB9CiAKICAgICBbX3dlYlZpZXcgY2xvc2VdOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5jcHAKaW5kZXggNDVkNGFiMGRhMTYwNzRjNzZiMDhiYjYzNGQxM2FkYWJkNmQ2YmFjYS4uZjg0
NWUyNWJhODhjZWU3Y2NmYjAxZjFjNjUzODcxZDYwZTExMTM1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBA
IC0xNzQsNyArMTc0LDcgQEAgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBXZWJJ
bnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnMKIHZvaWQgV2ViSW5zcGVj
dG9yQ2xpZW50OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKCkKIHsKICAgICBpZiAobV9mcm9udGVu
ZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+ZGVzdHJveUluc3BlY3RvclZpZXco
ZmFsc2UpOworICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5kZXN0cm95SW5zcGVjdG9yVmlldygp
OwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6YnJpbmdGcm9udGVuZFRvRnJvbnQoKQpA
QCAtMjM3LDcgKzIzNyw3IEBAIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudChXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3CiAKIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50Ojp+V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKQogewotICAgIGRl
c3Ryb3lJbnNwZWN0b3JWaWV3KHRydWUpOworICAgIGRlc3Ryb3lJbnNwZWN0b3JWaWV3KCk7CiB9
CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmZyb250ZW5kTG9hZGVkKCkKQEAg
LTI2OSw3ICsyNjksNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpicmluZ1Rv
RnJvbnQoKQogCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjbG9zZVdpbmRvdygp
CiB7Ci0gICAgZGVzdHJveUluc3BlY3RvclZpZXcodHJ1ZSk7CisgICAgZGVzdHJveUluc3BlY3Rv
clZpZXcoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNoV2lu
ZG93KERvY2tTaWRlKQpAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OnNob3dXaW5kb3dXaXRob3V0Tm90aWZpY2F0aW9ucygpCiAgICAgbV9pbnNwZWN0
b3JDbGllbnQtPnVwZGF0ZUhpZ2hsaWdodCgpOwogfQogCi12b2lkIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpkZXN0cm95SW5zcGVjdG9yVmlldyhib29sIG5vdGlmeUluc3BlY3RvckNvbnRy
b2xsZXIpCit2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkZXN0cm95SW5zcGVjdG9y
VmlldygpCiB7CiAgICAgbV9pbnNwZWN0b3JDbGllbnQtPnJlbGVhc2VGcm9udGVuZCgpOwogCkBA
IC00MzEsMTAgKzQzMSwxMCBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkZXN0
cm95SW5zcGVjdG9yVmlldyhib29sIG5vdGlmeUluc3BlY3RvckNvbnRybwogCiAgICAgY2xvc2VX
aW5kb3dXaXRob3V0Tm90aWZpY2F0aW9ucygpOwogCi0gICAgaWYgKG5vdGlmeUluc3BlY3RvckNv
bnRyb2xsZXIpIHsKLSAgICAgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCktPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVh
c29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwotICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+dXBk
YXRlSGlnaGxpZ2h0KCk7Ci0gICAgfQorICAgIG1faW5zcGVjdGVkV2ViVmlldy0+cGFnZSgpLT5p
bnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobnVsbHB0cik7
CisgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5k
aXNjb25uZWN0RnJvbnRlbmQobV9pbnNwZWN0b3JDbGllbnQpOworICAgIG1faW5zcGVjdG9yQ2xp
ZW50LT51cGRhdGVIaWdobGlnaHQoKTsKKwogICAgIDo6RGVzdHJveVdpbmRvdyhtX2Zyb250ZW5k
SHduZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggOWZiMzg2ZTMxY2Q5NGRhMDdiNjhmMmM1MWY4NTYz
YjM5NTVlYzcyNC4uOTU2OGRhMDMzZmU0NjQ3N2FmZjEzY2I3MzQ4NzFhNjNlMDMwMjJjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmgKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBXVEY6OlN0cmluZyYgbmV3VVJMKTsKIAotICAgIHZv
aWQgZGVzdHJveUluc3BlY3RvclZpZXcoYm9vbCBub3RpZnlJbnNwZWN0b3JDb250cm9sbGVyKTsK
KyAgICB2b2lkIGRlc3Ryb3lJbnNwZWN0b3JWaWV3KCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBj
bG9zZVdpbmRvd1dpdGhvdXROb3RpZmljYXRpb25zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5jcHAKaW5kZXggNWE3ZjE3MDBiZDE5YWJjYWE3Zjc4NTZkYTJhMDNlYjZjZTI2ZjFiMC4uNjZl
OWJjNzBkYWMwNDQ4NzY5NDNmYjVkZDM5Y2RiMmE3NGQyMzZmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmNwcApAQCAtODIsMTcgKzgyLDE5IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50
OjppbnNwZWN0b3JEZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0aGlzOwogfQogCi1XZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3Rv
ckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitJbnNwZWN0b3I6OkZy
b250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQo
SW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlcikKIHsKLSAgICBtX3BhZ2UtPmluc3BlY3Rv
cigpLT5jcmVhdGVJbnNwZWN0b3JQYWdlKGNvbnRyb2xsZXItPmlzVW5kZXJUZXN0KCkpOworICAg
IG1fcGFnZS0+aW5zcGVjdG9yKCktPm9wZW5Gcm9udGVuZENvbm5lY3Rpb24oY29udHJvbGxlci0+
aXNVbmRlclRlc3QoKSk7CiAKICAgICByZXR1cm4gbV9wYWdlLT5pbnNwZWN0b3IoKTsKIH0KIAog
dm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQogewotICAg
IGlmIChtX3BhZ2UtPmluc3BlY3RvcigpKQotICAgICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5j
bG9zZUZyb250ZW5kKCk7CisgICAgaWYgKG1fcGFnZS0+aW5zcGVjdG9yKCkpIHsKKyAgICAgICAg
bV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250
ZW5kKG1fcGFnZS0+aW5zcGVjdG9yKCkpOworICAgICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5j
bG9zZUZyb250ZW5kQ29ubmVjdGlvbigpOworICAgIH0KIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JD
bGllbnQ6OmJyaW5nRnJvbnRlbmRUb0Zyb250KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmlu
ZGV4IDlhNDQwMGJlNWFiYTZiOTk1MTVmNmQ4OTFmNmU5YTgxNTY3OGE0MTUuLmI4MzgwYjFiODhi
MTc2MTQxZmZjNGE4NDU3Mzg4NDBkN2JkOThkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
aApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBXZWJJbnNwZWN0b3JDbGllbnRfaAogCiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0luc3Bl
Y3RvckZvcndhcmRpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VPdmVybGF5Lmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KIApAQCAtNTMsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIC8v
IFdlYkNvcmU6Okluc3BlY3RvckNsaWVudAogICAgIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkg
b3ZlcnJpZGU7CiAKLSAgICBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5J
bnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGU7
CisgICAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbG9zZUlu
c3BlY3RvckZyb250ZW5kKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9u
dCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVzaXplTWFpbkZyYW1lKFdlYkNvcmU6OkZyYW1l
Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3IuY3BwCmluZGV4IGUwYWQ3NTQ0NDU4NWQ4YTllN2EyZTcxNjMxNWExNTE5Zjk1
ZWZmYjkuLjU5NjlhYTIyZjM2ZGY5NDExZDVkYTEwNTZmMWQyNmQzMDIwZWQ1MjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBA
IC03MCw3ICs3MCw3IEBAIFdlYkluc3BlY3Rvcjo6fldlYkluc3BlY3RvcigpCiB9CiAKIC8vIENh
bGxlZCBmcm9tIFdlYkluc3BlY3RvckNsaWVudAotdm9pZCBXZWJJbnNwZWN0b3I6OmNyZWF0ZUlu
c3BlY3RvclBhZ2UoYm9vbCB1bmRlclRlc3QpCit2b2lkIFdlYkluc3BlY3Rvcjo6b3BlbkZyb250
ZW5kQ29ubmVjdGlvbihib29sIHVuZGVyVGVzdCkKIHsKICNpZiBPUyhEQVJXSU4pCiAgICAgbWFj
aF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBXZWJJbnNwZWN0
b3I6OmNyZWF0ZUluc3BlY3RvclBhZ2UoYm9vbCB1bmRlclRlc3QpCiAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2UoY29ubmVjdGlvbkNsaWVudFBvcnQs
IGNhbkF0dGFjaFdpbmRvdygpLCB1bmRlclRlc3QpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAot
dm9pZCBXZWJJbnNwZWN0b3I6OmNsb3NlRnJvbnRlbmQoKQordm9pZCBXZWJJbnNwZWN0b3I6OmNs
b3NlRnJvbnRlbmRDb25uZWN0aW9uKCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6RGlkQ2xvc2UoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiAKQEAgLTI2Miw4ICsyNjIsNyBAQCB2
b2lkIFdlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKQogewogICAgIGlmICht
X3BhZ2UtPmNvcmVQYWdlKCkpIHsKICAgICAgICAgbV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCA9
IHRydWU7Ci0gICAgICAgIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2U7Ci0gICAg
ICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9u
dGVuZCh0aGlzLCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pOworICAgICAgICBtX3BhZ2UtPmNvcmVQ
YWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQodGhpcyk7CiAgICAg
fQogfQogCkBAIC0yNzIsNyArMjcxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250
ZW5kRGlzY29ubmVjdGVkKCkKICAgICBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkID0gZmFsc2U7
CiAKICAgICBpZiAobV9wYWdlLT5jb3JlUGFnZSgpKQotICAgICAgICBtX3BhZ2UtPmNvcmVQYWdl
KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpE
aXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOworICAgICAgICBtX3BhZ2UtPmNv
cmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQodGhpcyk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvci5oCmluZGV4IDA0MDA4ZTE1ZGM3YTI2ZmZiYTM3N2FjYjA2NzE1NjI4NjYxMWRl
YTkuLjAwMTI4NzljZmE5YzZkMWI0NWQyMzA4ODBjZTIyZDk4ZGRiOGFkMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKQEAgLTk3LDkg
Kzk3LDkgQEAgcHJpdmF0ZToKICAgICBib29sIGNhbkF0dGFjaFdpbmRvdygpOwogCiAgICAgLy8g
Q2FsbGVkIGZyb20gV2ViSW5zcGVjdG9yQ2xpZW50Ci0gICAgdm9pZCBjcmVhdGVJbnNwZWN0b3JQ
YWdlKGJvb2wgdW5kZXJUZXN0KTsKKyAgICB2b2lkIG9wZW5Gcm9udGVuZENvbm5lY3Rpb24oYm9v
bCB1bmRlclRlc3QpOworICAgIHZvaWQgY2xvc2VGcm9udGVuZENvbm5lY3Rpb24oKTsKIAotICAg
IHZvaWQgY2xvc2VGcm9udGVuZCgpOwogICAgIHZvaWQgYnJpbmdUb0Zyb250KCk7CiAKICAgICBX
ZWJQYWdlKiBtX3BhZ2U7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggMmE3ODIxYTc2YzM0YWZiNGQ2MjcyY2Q4NTBhYTcyMjc3MTljMWUyYS4uNzU0
NmY2MGFlYmQwZTk0Y2IzMmQ0MzY1YmY0ZDFhNGQ4NDAxMWFlMyAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTA5
LTA0ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEluc3BlY3RvckNvbnRyb2xsZXIgc2hvdWxkIHN1cHBvcnQgbXVsdGlwbGUgZnJvbnRlbmQg
Y2hhbm5lbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0ODUzOAorCisgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4KKworICAgICAg
ICBJbnNwZWN0b3JDbGllbnRzIG11c3QgZXhwbGljaXRseSBkaXNjb25uZWN0IHRoZWlyIGZyb250
ZW5kIGNoYW5uZWwocykgZnJvbSB0aGUKKyAgICAgICAgaW5zcGVjdGVkIHBhZ2UncyBJbnNwZWN0
b3JDb250cm9sbGVyLgorCisgICAgICAgIFRvIG1ha2UgdGhpcyBwb3NzaWJsZSwgRHVtcFJlbmRl
clRyZWUgc2hvdWxkIG5vdCBkZXN0cm95IG5vbi1wcmltYXJ5IHZpZXdzIHVudGlsCisgICAgICAg
IGl0IGhhcyB0cmllZCB0byBjbG9zZSBhbnkgYWJhbmRvbmVkIFdlYiBJbnNwZWN0b3IgaW5zdGFu
Y2VzLiBQZXJmb3JtaW5nIHRlYXJkb3duCisgICAgICAgIGluIHRoZSByZXZlcnNlIG9yZGVyIHBy
ZXZlbnRzIGRpc2Nvbm5lY3Rpb24gb2YgdGhlIGZyb250ZW5kIGNoYW5uZWwgYmVjYXVzZSB0aGF0
CisgICAgICAgIHByZW1hdHVyZWx5IGRlc3Ryb3lzIHRoZSBpbnNwZWN0b3IgZnJvbnRlbmQgY2xp
ZW50LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgor
ICAgICAgICAocnVuVGVzdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5k
ZXJUcmVlLmNwcDoKKyAgICAgICAgKHJ1blRlc3QpOgorCiAyMDE1LTA5LTA0ICBKYXNvbiBNYXJj
ZWxsICA8am1hcmNlbGxAYXBwbGUuY29tPgogCiAgICAgICAgIHByZXBhcmUtQ2hhbmdlTG9nIG5l
ZWRzIHRvIGtub3cgaG93IHRvIHBhcnNlIFN3aWZ0IGZpbGVzLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDQ5MjYyMmU0YTJkNDQ1ZmM0YjRiOGJkMzM5
ZGJjMmY0NzhiZTMxOTQuLjAyYTkxYmNiMjc3ODEyZTFjNDVjYzlhZTc2MTE5MjI1ZDY4MjY5NjYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTIwMzks
NiArMjAzOSwxMyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMaW5l
KQogCiAgICAgd29ya1F1ZXVlLmNsZWFyKCk7CiAKKyAgICAvLyBJZiB0aGUgdGVzdCBwYWdlIGNv
dWxkIGhhdmUgcG9zc2libHkgb3BlbmVkIHRoZSBXZWIgSW5zcGVjdG9yIGZyb250ZW5kLAorICAg
IC8vIHRoZW4gdHJ5IHRvIGNsb3NlIGl0IGluIGNhc2UgaXQgd2FzIGFjY2lkZW50YWxseSBsZWZ0
IG9wZW4uCisgICAgaWYgKHNob3VsZEVuYWJsZURldmVsb3BlckV4dHJhcyhwYXRoT3JVUkwuY19z
dHIoKSkpIHsKKyAgICAgICAgZ1Rlc3RSdW5uZXItPmNsb3NlV2ViSW5zcGVjdG9yKCk7CisgICAg
ICAgIGdUZXN0UnVubmVyLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGZhbHNlKTsKKyAgICB9
CisKICAgICBpZiAoZ1Rlc3RSdW5uZXItPmNsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0
ZSgpKSB7CiAgICAgICAgIE5TQXJyYXkqIGFycmF5ID0gW0R1bXBSZW5kZXJUcmVlV2luZG93IG9w
ZW5XaW5kb3dzXTsKIApAQCAtMjA2MiwxMiArMjA2OSw2IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3Qo
Y29uc3Qgc3RyaW5nJiBpbnB1dExpbmUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBJZiBk
ZXZlbG9wZXIgZXh0cmFzIGVuYWJsZWQgV2ViIEluc3BlY3RvciBtYXkgaGF2ZSBiZWVuIG9wZW4g
YnkgdGhlIHRlc3QuCi0gICAgaWYgKHNob3VsZEVuYWJsZURldmVsb3BlckV4dHJhcyhwYXRoT3JV
UkwuY19zdHIoKSkpIHsKLSAgICAgICAgZ1Rlc3RSdW5uZXItPmNsb3NlV2ViSW5zcGVjdG9yKCk7
Ci0gICAgICAgIGdUZXN0UnVubmVyLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGZhbHNlKTsK
LSAgICB9Ci0KICAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmco
KTsKIAogICAgIC8vIExvYWRpbmcgYW4gZW1wdHkgcmVxdWVzdCBzeW5jaHJvbm91c2x5IHJlcGxh
Y2VzIHRoZSBkb2N1bWVudCB3aXRoIGEgYmxhbmsgb25lLCB3aGljaCBpcyBuZWNlc3NhcnkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGU1NmViMWY1
MzdiOTQwM2Y1NWM2ZWQwM2M5ZDE3Yjg3OTA4MDlkNTYuLmQwMmNmZWM1ODgyNTQ0NTc5NGJkYTBi
OTVmZDBmZWMwMzg5MTc0MDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5k
ZXJUcmVlLmNwcApAQCAtMTE0Nyw2ICsxMTQ3LDEzIEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29u
c3Qgc3RyaW5nJiBpbnB1dExpbmUpCiAgICAgLy8gRXZlbnRTZW5kaW5nQ29udHJvbGxlciBjbGVh
clNhdmVkRXZlbnRzCiAgICAgd29ya1F1ZXVlLmNsZWFyKCk7CiAKKyAgICAvLyBJZiB0aGUgdGVz
dCBwYWdlIGNvdWxkIGhhdmUgcG9zc2libHkgb3BlbmVkIHRoZSBXZWIgSW5zcGVjdG9yIGZyb250
ZW5kLAorICAgIC8vIHRoZW4gdHJ5IHRvIGNsb3NlIGl0IGluIGNhc2UgaXQgd2FzIGFjY2lkZW50
YWxseSBsZWZ0IG9wZW4uCisgICAgaWYgKHNob3VsZEVuYWJsZURldmVsb3BlckV4dHJhcyhwYXRo
T3JVUkwuY19zdHIoKSkpIHsKKyAgICAgICAgOjpnVGVzdFJ1bm5lci0+Y2xvc2VXZWJJbnNwZWN0
b3IoKTsKKyAgICAgICAgOjpnVGVzdFJ1bm5lci0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChm
YWxzZSk7CisgICAgfQorCiAgICAgaWYgKDo6Z1Rlc3RSdW5uZXItPmNsb3NlUmVtYWluaW5nV2lu
ZG93c1doZW5Db21wbGV0ZSgpKSB7CiAgICAgICAgIFZlY3RvcjxIV05EPiB3aW5kb3dzID0gb3Bl
bldpbmRvd3MoKTsKICAgICAgICAgdW5zaWduZWQgc2l6ZSA9IHdpbmRvd3Muc2l6ZSgpOwpAQCAt
MTE2MSwxMSArMTE2OCw2IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1
dExpbmUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoc2hvdWxkRW5hYmxlRGV2ZWxvcGVy
RXh0cmFzKHBhdGhPclVSTC5jX3N0cigpKSkgewotICAgICAgICA6OmdUZXN0UnVubmVyLT5jbG9z
ZVdlYkluc3BlY3RvcigpOwotICAgICAgICA6OmdUZXN0UnVubmVyLT5zZXREZXZlbG9wZXJFeHRy
YXNFbmFibGVkKGZhbHNlKTsKLSAgICB9Ci0KICAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRT
dGF0ZUJlZm9yZVRlc3RpbmcoKTsKIAogICAgIC8vIExvYWRpbmcgYW4gZW1wdHkgcmVxdWVzdCBz
eW5jaHJvbm91c2x5IHJlcGxhY2VzIHRoZSBkb2N1bWVudCB3aXRoIGEgYmxhbmsgb25lLCB3aGlj
aCBpcyBuZWNlc3NhcnkK
</data>

          </attachment>
      

    </bug>

</bugzilla>