<?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>137901</bug_id>
          
          <creation_ts>2014-10-20 17:25:45 -0700</creation_ts>
          <short_desc>Web Inspector: Provide a way to have alternate inspector agents</short_desc>
          <delta_ts>2014-10-23 16:43:42 -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>528+ (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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>benjamin</cc>
    
    <cc>burg</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1043021</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-10-20 17:25:45 -0700</bug_when>
    <thetext>Provide a way to have an alternate inspector agents for a debuggable.

The ultimate goal for this would be to let a JSContext owner provide its own set of domain agents, like a DOMAgent / CSSAgent. We should never allow replacing an existing agent, e.g. Runtime / Debugger, they should only be additional/augmentative. That would mean nothing needs to be done for a WebCore::Page, only JSContext inspection would be affected.

The approach I&apos;m thinking of taking is:

  - Expose an interface that an external client could use to
    - know when an inspector connects/disconnects (would be useful for someone with their own agents)
    - add an Agent with an alternate backend dispatcher (to provide new agents)
    - frontend channel (useful for events, or arbitrary backend -&gt; frontend messages)

  - Give each typed InspectorFooBackendDispatcher an AlternateInspectorFooBackendDispatcher
    - During backend dispatch, if there is an alternate, use the alternate, otherwise do normal dispatch
    - this lets the generic backend dispatcher continue to do the per-method dispatching / input message type validation

This will be behind a feature guard so there is no impact at all on those that do not have it enabled. As mentioned above only JSContext debugging is affected and such debugging is only currently available on Mac/iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043025</commentid>
    <comment_count>1</comment_count>
      <attachid>240163</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-10-20 17:33:10 -0700</bug_when>
    <thetext>Created attachment 240163
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043026</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-10-20 17:34:19 -0700</bug_when>
    <thetext>Everything is up for naming suggestions. Feature guard, new file names, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043027</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-20 17:35:45 -0700</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043028</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-20 17:35:58 -0700</bug_when>
    <thetext>Attachment 240163 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py:38:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py:87:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py:56:  [AlternateBackendDispatcherHeaderGenerator.generate_output] Instance of &apos;AlternateBackendDispatcherHeaderGenerator&apos; has no &apos;domains_to_generate&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py:58:  [AlternateBackendDispatcherHeaderGenerator.generate_output] Instance of &apos;AlternateBackendDispatcherHeaderGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_backend_dispatcher_implementation.py:192:  trailing whitespace  [pep8/W291] [5]
Total errors found: 5 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043248</commentid>
    <comment_count>5</comment_count>
      <attachid>240215</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-10-21 12:06:01 -0700</bug_when>
    <thetext>Created attachment 240215
[PATCH] Proposed Fix

Some minor fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043249</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-21 12:08:15 -0700</bug_when>
    <thetext>Attachment 240215 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py:57:  [AlternateBackendDispatcherHeaderGenerator.generate_output] Instance of &apos;AlternateBackendDispatcherHeaderGenerator&apos; has no &apos;domains_to_generate&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py:59:  [AlternateBackendDispatcherHeaderGenerator.generate_output] Instance of &apos;AlternateBackendDispatcherHeaderGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
Total errors found: 2 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043258</commentid>
    <comment_count>7</comment_count>
      <attachid>240217</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-10-21 12:44:49 -0700</bug_when>
    <thetext>Created attachment 240217
[PATCH] Proposed Fix

Missed a minor change to a template and had to rebaseline tests with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043260</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-21 12:45:56 -0700</bug_when>
    <thetext>Attachment 240217 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py:57:  [AlternateBackendDispatcherHeaderGenerator.generate_output] Instance of &apos;AlternateBackendDispatcherHeaderGenerator&apos; has no &apos;domains_to_generate&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py:59:  [AlternateBackendDispatcherHeaderGenerator.generate_output] Instance of &apos;AlternateBackendDispatcherHeaderGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
Total errors found: 2 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043512</commentid>
    <comment_count>9</comment_count>
      <attachid>240217</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-10-22 11:38:47 -0700</bug_when>
    <thetext>Comment on attachment 240217
[PATCH] Proposed Fix

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

Looks okay to me. I&apos;d like Brian to review this.

&gt; Source/JavaScriptCore/inspector/augmentable/InspectorAugmentingAgent.h:60
&gt; +        m_backendDispatcher.clear();

= nullptr?

&gt; Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result:53
&gt; +};
&gt; +
&gt; +
&gt; +
&gt; +
&gt; +} // namespace Inspector

Why the huge number of empty lines? I know it is generated but still...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043785</commentid>
    <comment_count>10</comment_count>
      <attachid>240217</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-23 11:34:31 -0700</bug_when>
    <thetext>Comment on attachment 240217
[PATCH] Proposed Fix

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

I am not keen on Augmentable as the new adjective here, since using a different backend dispatcher doesn&apos;t augment the protocol with new messages. As far as I can tell, it just allows a client to redirect callbacks.

&gt; Source/JavaScriptCore/ChangeLog:34
&gt; +        Provide the private APIs a client could use to add alternate agents.

nit (here and in bug title): alternate backend dispatchers?

&gt; Source/JavaScriptCore/inspector/augmentable/InspectorAugmentingAgent.h:40
&gt; +class InspectorAugmentingAgent : public InspectorAgentBase {

AugmentableAgent?

&gt; Source/JavaScriptCore/inspector/augmentable/InspectorAugmentingAgent.h:45
&gt; +        , m_alternateDispatcher(WTF::move(alternateDispatcher))

This is a weird difference from existing frontend and backend dispatchers, which only attach/detach the dispatchers in the callbacks below (didCreate/willDestroyFrontendAndBackend). 

How is this AugmentingAgent used? Is it a hardcoded new base class for some of the JSC agents, or..?

More generally, why can&apos;t the alternate dispatcher be passed as the InspectorBackendDispatcher instance to didCreateFrontendAndBackend? With the current setup, it is hardcoded per Agent instance. If it is actually hardcoded, then maybe this subclass can have virtual frontendDispatcher() and backendDispatcher() methods and setters instead of overriding didCreateFrontendAndBackend and having special code paths for the alternate dispatcher.

&gt; Source/JavaScriptCore/inspector/scripts/codegen/generate_backend_dispatcher_implementation.py:242
&gt;          }

AFAICT, the generated alternate dispatchers only take the callId. Is there any reason we shouldn&apos;t use the same parameters as the backend dispatcher methods and mark them as UNUSED_PARAM? I&apos;m confused why alternate and backend dispatchers can&apos;t be combined, since there&apos;s no ObjC-specific types or anything that would prevent that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043786</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-10-23 11:34:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/18753142&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043798</commentid>
    <comment_count>12</comment_count>
      <attachid>240217</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-10-23 12:25:29 -0700</bug_when>
    <thetext>Comment on attachment 240217
[PATCH] Proposed Fix

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

&gt;&gt; Source/JavaScriptCore/inspector/augmentable/InspectorAugmentingAgent.h:45
&gt;&gt; +        , m_alternateDispatcher(WTF::move(alternateDispatcher))
&gt; 
&gt; This is a weird difference from existing frontend and backend dispatchers, which only attach/detach the dispatchers in the callbacks below (didCreate/willDestroyFrontendAndBackend). 
&gt; 
&gt; How is this AugmentingAgent used? Is it a hardcoded new base class for some of the JSC agents, or..?
&gt; 
&gt; More generally, why can&apos;t the alternate dispatcher be passed as the InspectorBackendDispatcher instance to didCreateFrontendAndBackend? With the current setup, it is hardcoded per Agent instance. If it is actually hardcoded, then maybe this subclass can have virtual frontendDispatcher() and backendDispatcher() methods and setters instead of overriding didCreateFrontendAndBackend and having special code paths for the alternate dispatcher.

This template agent here just holds onto the AlternateDispatcher. It doesn&apos;t use it until a frontend and backend are created. When didCreateFrontendAndBackend happens, it creates the strongly typed frontend/backend objects for the domain, then adds the typed AlternateDispatcher to the backend. This seemed the simplest way to create a strongly typed InspectorFooBackendDispatcher with a strongly typed AlternateFooDispatcher.

- &quot;why can&apos;t the alternate dispatcher be passed as the InspectorBackendDispatcher instance to didCreateFrontendAndBackend?&quot;
By reusing the current InspectorFooBackendDispatchers we get to share two useful blocks. (1) The Foo::dispatch which routes the incoming message to the different Foo::commandName methods. (2) The protocol type checking of incoming arguments in each Foo::commandName.

Nit: Now that I see this again, I think we can just remove m_frontendDispatcher entirely from this template. It only cares about backend dispatch on the domain.

&gt;&gt; Source/JavaScriptCore/inspector/scripts/codegen/generate_backend_dispatcher_implementation.py:242
&gt;&gt;          }
&gt; 
&gt; AFAICT, the generated alternate dispatchers only take the callId. Is there any reason we shouldn&apos;t use the same parameters as the backend dispatcher methods and mark them as UNUSED_PARAM? I&apos;m confused why alternate and backend dispatchers can&apos;t be combined, since there&apos;s no ObjC-specific types or anything that would prevent that.

The generated alternate dispatchers takes the callId and all the in params. They are very similar to the abstract interfaces our own agents have to implement.

Our current BackendDispatcher abstract interface which we implement in WebKit:

    class JS_EXPORT_PRIVATE InspectorApplicationCacheBackendDispatcherHandler {
    public:
        virtual void getFramesWithManifests(ErrorString&amp;, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::ApplicationCache::FrameWithManifest&gt;&gt;&amp; out_frameIds) = 0;
        virtual void enable(ErrorString&amp;) = 0;
        virtual void getManifestForFrame(ErrorString&amp;, const String&amp; in_frameId, String* out_manifestURL) = 0;
        virtual void getApplicationCacheForFrame(ErrorString&amp;, const String&amp; in_frameId, RefPtr&lt;Inspector::Protocol::ApplicationCache::ApplicationCache&gt;&amp; out_applicationCache) = 0;
    protected:
        virtual ~InspectorApplicationCacheBackendDispatcherHandler();
    };

The new AlternateBackendDispatcher abstract interface:

    class AlternateInspectorApplicationCacheBackendDispatcher : public AlternateInspectorBackendDispatcher {
    public:
        virtual ~AlternateInspectorApplicationCacheBackendDispatcher() { }
        virtual void getFramesWithManifests(long callId) = 0;
        virtual void enable(long callId) = 0;
        virtual void getManifestForFrame(long callId, const String&amp; in_frameId) = 0;
        virtual void getApplicationCacheForFrame(long callId, const String&amp; in_frameId) = 0;
    };

The next phase in these patches is generating an ObjC++ concrete implementation of an AlternateBackendDispatcher which exposes an ObjC @protocol for these commands. The out parameters are not specified here since I did not want to enforce synchronous message handling. Although that is the case today, I don&apos;t think we rely on it.

&gt;&gt; Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result:53
&gt;&gt; +} // namespace Inspector
&gt; 
&gt; Why the huge number of empty lines? I know it is generated but still...

In the actual case, there are always domains with commands so there won&apos;t be blank lines. I didn&apos;t want to both with handling these special cases that don&apos;t exist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043799</commentid>
    <comment_count>13</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-10-23 12:32:00 -0700</bug_when>
    <thetext>&gt; How is this AugmentingAgent used?

It is only used as a shim to stick an agent in the registry for a domain name with a concrete implementation of an alternate backend dispatcher.

Ultimately in the patches I have we will have an ObjC protocol for say a DOM handler:

    @protocol DOMDomainHandler
    // ObjC set of commands to implement to handle DOM Commands
    @end

We will have a concrete ObjC++ implementation of the AlternateBackendDispatchers which call out to the ObjC protocol:

    class ObjCInspectorDOMBackendDispatcher final : public AlternateInspectorDOMBackendDispatcher {
    public:
        ObjCInspectorDOMBackendDispatcher(id&lt;DOMDomainHandler&gt; handler) { m_delegate = handler; }
        virtual void getDocument(long callId) override;
        virtual void requestChildNodes(long callId, int in_nodeId, const int* in_depth) override;
        ...
    private:
        RetainPtr&lt;id&lt;RWIProtocolDOMDomainHandler&gt;&gt; m_delegate;
    };

Then when a client supplies their ObjC implementation we just slot in an AugmentingAgent for the &quot;DOM&quot; domain.

    - (void)setDOMHandler:(id&lt;DOMDomainHandler&gt;)handler
    {
        ...
        auto alternateDispatcher = std::make_unique&lt;ObjCInspectorDOMBackendDispatcher&gt;(handler);
        auto alternateAgent = std::make_unique&lt;InspectorAugmentingAgent&lt;InspectorDOMFrontendDispatcher, InspectorDOMBackendDispatcher, AlternateInspectorDOMBackendDispatcher&gt;&gt;(ASCIILiteral(&quot;DOM&quot;), WTF::move(alternateDispatcher));
        _controller-&gt;agentRegistry().append(WTF::move(alternateAgent));
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043828</commentid>
    <comment_count>14</comment_count>
      <attachid>240217</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-23 14:02:52 -0700</bug_when>
    <thetext>Comment on attachment 240217
[PATCH] Proposed Fix

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

&gt; Source/JavaScriptCore/inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py:84
&gt; +            parameters.append(&apos;%s in_%s&apos; % (Generator.type_string_for_unchecked_formal_in_parameter(_parameter), _parameter.parameter_name))

Does this use the same signature as the same methods with the &quot;async&quot; flag? I don&apos;t see any reason why it should differ, if all alternate dispatchers use async message handling.

&gt;&gt;&gt; Source/JavaScriptCore/inspector/scripts/codegen/generate_backend_dispatcher_implementation.py:242
&gt;&gt;&gt;          }
&gt;&gt; 
&gt;&gt; AFAICT, the generated alternate dispatchers only take the callId. Is there any reason we shouldn&apos;t use the same parameters as the backend dispatcher methods and mark them as UNUSED_PARAM? I&apos;m confused why alternate and backend dispatchers can&apos;t be combined, since there&apos;s no ObjC-specific types or anything that would prevent that.
&gt; 
&gt; The generated alternate dispatchers takes the callId and all the in params. They are very similar to the abstract interfaces our own agents have to implement.
&gt; 
&gt; Our current BackendDispatcher abstract interface which we implement in WebKit:
&gt; 
&gt;     class JS_EXPORT_PRIVATE InspectorApplicationCacheBackendDispatcherHandler {
&gt;     public:
&gt;         virtual void getFramesWithManifests(ErrorString&amp;, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::ApplicationCache::FrameWithManifest&gt;&gt;&amp; out_frameIds) = 0;
&gt;         virtual void enable(ErrorString&amp;) = 0;
&gt;         virtual void getManifestForFrame(ErrorString&amp;, const String&amp; in_frameId, String* out_manifestURL) = 0;
&gt;         virtual void getApplicationCacheForFrame(ErrorString&amp;, const String&amp; in_frameId, RefPtr&lt;Inspector::Protocol::ApplicationCache::ApplicationCache&gt;&amp; out_applicationCache) = 0;
&gt;     protected:
&gt;         virtual ~InspectorApplicationCacheBackendDispatcherHandler();
&gt;     };
&gt; 
&gt; The new AlternateBackendDispatcher abstract interface:
&gt; 
&gt;     class AlternateInspectorApplicationCacheBackendDispatcher : public AlternateInspectorBackendDispatcher {
&gt;     public:
&gt;         virtual ~AlternateInspectorApplicationCacheBackendDispatcher() { }
&gt;         virtual void getFramesWithManifests(long callId) = 0;
&gt;         virtual void enable(long callId) = 0;
&gt;         virtual void getManifestForFrame(long callId, const String&amp; in_frameId) = 0;
&gt;         virtual void getApplicationCacheForFrame(long callId, const String&amp; in_frameId) = 0;
&gt;     };
&gt; 
&gt; The next phase in these patches is generating an ObjC++ concrete implementation of an AlternateBackendDispatcher which exposes an ObjC @protocol for these commands. The out parameters are not specified here since I did not want to enforce synchronous message handling. Although that is the case today, I don&apos;t think we rely on it.

Oh, that clears up a lot. I guess this is the best way to do that right now.

Do you think we should make all message handling asynchronous (in the long term)? That would allow us to unify dispatchers.

Re: &quot;we probably don&apos;t rely on sync handling&quot;, until the separate inspector process I would have guessed &quot;no&quot;. But now I would wager &quot;yes&quot; since messages are synchronously handled through async IPC. So, it probably works but we may have subtle races already in trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043868</commentid>
    <comment_count>15</comment_count>
      <attachid>240217</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-10-23 16:17:56 -0700</bug_when>
    <thetext>Comment on attachment 240217
[PATCH] Proposed Fix

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

&gt;&gt; Source/JavaScriptCore/inspector/augmentable/InspectorAugmentingAgent.h:40
&gt;&gt; +class InspectorAugmentingAgent : public InspectorAgentBase {
&gt; 
&gt; AugmentableAgent?

Going with AlternateDispatchableAgent.

&gt;&gt; Source/JavaScriptCore/inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py:84
&gt;&gt; +            parameters.append(&apos;%s in_%s&apos; % (Generator.type_string_for_unchecked_formal_in_parameter(_parameter), _parameter.parameter_name))
&gt; 
&gt; Does this use the same signature as the same methods with the &quot;async&quot; flag? I don&apos;t see any reason why it should differ, if all alternate dispatchers use async message handling.

They are close. Async interfaces still take an error string (probably should be removed) and a callback param. The callback allows for success/failure and holds the callId.

&gt;&gt;&gt;&gt; Source/JavaScriptCore/inspector/scripts/codegen/generate_backend_dispatcher_implementation.py:242
&gt;&gt;&gt;&gt;          }
&gt;&gt;&gt; 
&gt;&gt;&gt; AFAICT, the generated alternate dispatchers only take the callId. Is there any reason we shouldn&apos;t use the same parameters as the backend dispatcher methods and mark them as UNUSED_PARAM? I&apos;m confused why alternate and backend dispatchers can&apos;t be combined, since there&apos;s no ObjC-specific types or anything that would prevent that.
&gt;&gt; 
&gt;&gt; The generated alternate dispatchers takes the callId and all the in params. They are very similar to the abstract interfaces our own agents have to implement.
&gt;&gt; 
&gt;&gt; Our current BackendDispatcher abstract interface which we implement in WebKit:
&gt;&gt; 
&gt;&gt;     class JS_EXPORT_PRIVATE InspectorApplicationCacheBackendDispatcherHandler {
&gt;&gt;     public:
&gt;&gt;         virtual void getFramesWithManifests(ErrorString&amp;, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::ApplicationCache::FrameWithManifest&gt;&gt;&amp; out_frameIds) = 0;
&gt;&gt;         virtual void enable(ErrorString&amp;) = 0;
&gt;&gt;         virtual void getManifestForFrame(ErrorString&amp;, const String&amp; in_frameId, String* out_manifestURL) = 0;
&gt;&gt;         virtual void getApplicationCacheForFrame(ErrorString&amp;, const String&amp; in_frameId, RefPtr&lt;Inspector::Protocol::ApplicationCache::ApplicationCache&gt;&amp; out_applicationCache) = 0;
&gt;&gt;     protected:
&gt;&gt;         virtual ~InspectorApplicationCacheBackendDispatcherHandler();
&gt;&gt;     };
&gt;&gt; 
&gt;&gt; The new AlternateBackendDispatcher abstract interface:
&gt;&gt; 
&gt;&gt;     class AlternateInspectorApplicationCacheBackendDispatcher : public AlternateInspectorBackendDispatcher {
&gt;&gt;     public:
&gt;&gt;         virtual ~AlternateInspectorApplicationCacheBackendDispatcher() { }
&gt;&gt;         virtual void getFramesWithManifests(long callId) = 0;
&gt;&gt;         virtual void enable(long callId) = 0;
&gt;&gt;         virtual void getManifestForFrame(long callId, const String&amp; in_frameId) = 0;
&gt;&gt;         virtual void getApplicationCacheForFrame(long callId, const String&amp; in_frameId) = 0;
&gt;&gt;     };
&gt;&gt; 
&gt;&gt; The next phase in these patches is generating an ObjC++ concrete implementation of an AlternateBackendDispatcher which exposes an ObjC @protocol for these commands. The out parameters are not specified here since I did not want to enforce synchronous message handling. Although that is the case today, I don&apos;t think we rely on it.
&gt; 
&gt; Oh, that clears up a lot. I guess this is the best way to do that right now.
&gt; 
&gt; Do you think we should make all message handling asynchronous (in the long term)? That would allow us to unify dispatchers.
&gt; 
&gt; Re: &quot;we probably don&apos;t rely on sync handling&quot;, until the separate inspector process I would have guessed &quot;no&quot;. But now I would wager &quot;yes&quot; since messages are synchronously handled through async IPC. So, it probably works but we may have subtle races already in trunk.

I like the simplicity of our synchronous handling of most messages. It allows for the in and out parameters at the call site and guarantees request/response semantics by not &quot;forgetting&quot; to call a callback function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043879</commentid>
    <comment_count>16</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-10-23 16:43:42 -0700</bug_when>
    <thetext>&lt;http://trac.webkit.org/changeset/175151&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240163</attachid>
            <date>2014-10-20 17:33:10 -0700</date>
            <delta_ts>2014-10-21 12:06:01 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>take1.patch</filename>
            <type>text/plain</type>
            <size>112032</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCAwMmUyYjVh
Li45ZDJiMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4
dFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3Bw
CkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQ
QVRDSEVSUykKKyNpbmNsdWRlICJKU0NvbnRleHRSZWZJbnNwZWN0b3JTdXBwb3J0LmgiCisjZW5k
aWYKKwogI2lmIE9TKERBUldJTikKICNpbmNsdWRlIDxtYWNoLW8vZHlsZC5oPgogCkBAIC00MTAs
NCArNDE0LDE5IEBAIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0RGVidWdnZXJSdW5Mb29wKEpTR2xv
YmFsQ29udGV4dFJlZiBjdHgsIENGUnVuTG9vcFJlZiBydW5MCiAgICAgVU5VU0VEX1BBUkFNKHJ1
bkxvb3ApOwogI2VuZGlmCiB9CisjZW5kaWYgLy8gVVNFKENGKQorCisjaWYgRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCitJbnNwZWN0b3I6OkF1Z21lbnRhYmxlSW5zcGVj
dG9yQ29udHJvbGxlciogSlNHbG9iYWxDb250ZXh0R2V0QXVnbWVudGFibGVJbnNwZWN0b3JDb250
cm9sbGVyKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9j
ayhleGVjKTsKKworICAgIHJldHVybiAmZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCk7Cit9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmSW5zcGVjdG9yU3VwcG9ydC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZJbnNwZWN0b3JTdXBwb3J0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA5ZDgyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmSW5zcGVjdG9yU3VwcG9ydC5oCkBAIC0w
LDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEpTQ29udGV4dFJlZkluc3BlY3RvclN1cHBvcnRfaAorI2RlZmluZSBKU0NvbnRl
eHRSZWZJbnNwZWN0b3JTdXBwb3J0X2gKKworI2lmbmRlZiBfX2NwbHVzcGx1cworI2Vycm9yIFJl
cXVpcmVzIEMrKyBTdXBwb3J0LgorI2VuZGlmCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NvbnRleHRSZWZQcml2YXRlLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgQXVn
bWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyOworfQorCitleHRlcm4gIkMiIHsKK0pTX0VYUE9S
VCBJbnNwZWN0b3I6OkF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlciogSlNHbG9iYWxDb250
ZXh0R2V0QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyKEpTR2xvYmFsQ29udGV4dFJlZik7
Cit9CisKKyNlbmRpZiAvLyBKU0NvbnRleHRSZWZJbnNwZWN0b3JTdXBwb3J0X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCmluZGV4IDUxNGU2YTkuLmI1ZTRiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDg0IEBACiAyMDE0LTEwLTIwICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdmlkZSBhIHdheSB0
byBoYXZlIGFsdGVybmF0ZSBpbnNwZWN0b3IgYWdlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc5MDEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRlIGEgd2F5IHRvIHVzZSBhbHRlcm5hdGUg
aW5zcGVjdG9yIGFnZW50cyBkZWJ1Z2dpbmcgYSBKU0NvbnRleHQuCisgICAgICAgIEV4cG9zZSBh
IHZlcnkgc2xpbSBwcml2YXRlIEFQSSB0aGF0IGEgY2xpZW50IGNvdWxkIHVzZSB0byBrbm93IHdo
ZW4KKyAgICAgICAgYW4gaW5zcGVjdG9yIGhhcyBjb25uZWN0ZWQvZGlzY29ubmVjdGVkLCBhbmQg
YSB3YXkgdG8gcmVnaXN0ZXIgaXRzCisgICAgICAgIGF1Z21lbnRhdGl2ZSBhZ2VudHMuCisKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBOZXcg
ZmVhdHVyZSBndWFyZC4gTmV3IGZpbGVzLgorCisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5j
cHA6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRHZXRBdWdtZW50YWJsZUluc3BlY3RvckNvbnRy
b2xsZXIpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWZJbnNwZWN0b3JTdXBwb3J0Lmg6IEFk
ZGVkLgorICAgICAgICBBY2Nlc3MgdG8gdGhlIHByaXZhdGUgaW50ZXJmYWNlIGZyb20gYSBKU0Nv
bnRleHQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9u
dGVuZCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL2F1Z21lbnRh
YmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKElu
c3BlY3Rvcjo6QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyOjp+QXVnbWVudGFibGVJbnNw
ZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QXVnbWVudGFibGVJbnNwZWN0
b3JDb250cm9sbGVyOjpjb25uZWN0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9hdWdtZW50YWJs
ZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAg
IChJbnNwZWN0b3I6OkF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudDo6fkF1Z21l
bnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2F1
Z21lbnRhYmxlL0luc3BlY3RvckF1Z21lbnRpbmdBZ2VudC5oOiBBZGRlZC4KKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yQXVnbWVudGluZ0FnZW50OjpJbnNwZWN0b3JBdWdtZW50aW5nQWdl
bnQpOgorICAgICAgICBQcm92aWRlIHRoZSBwcml2YXRlIEFQSXMgYSBjbGllbnQgY291bGQgdXNl
IHRvIGFkZCBhbHRlcm5hdGUgYWdlbnRzLgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9fX2luaXRfXy5weToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0
ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHk6CisgICAgICAgIChnZW5lcmF0ZV9mcm9t
X3NwZWNpZmljYXRpb24pOgorICAgICAgICBOZXcgaW5jbHVkZXMsIGFuZCB1c2UgdGhlIG5ldyBn
ZW5lcmF0b3IuCisgICAgICAgIAorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHk6IEFkZGVkLgor
ICAgICAgICAoQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IpOgorICAg
ICAgICAoQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IuX19pbml0X18p
OgorICAgICAgICAoQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3Iub3V0
cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgKEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVySGVhZGVy
R2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgIChBbHRlcm5hdGVCYWNrZW5kRGlz
cGF0Y2hlckhlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfaGFuZGxlcl9kZWNsYXJhdGlvbnNfZm9y
X2RvbWFpbik6CisgICAgICAgIChBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdlbmVy
YXRvci5fZ2VuZXJhdGVfaGFuZGxlcl9kZWNsYXJhdGlvbl9mb3JfY29tbWFuZCk6CisgICAgICAg
IEdlbmVyYXRlIHRoZSBhYnN0cmFjdCBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciBpbnRlcmZhY2VzLgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5OgorICAgICAgICAoQmFja2VuZERpc3Bh
dGNoZXJIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgKEJhY2tlbmRE
aXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yLl9nZW5lcmF0ZV9hbHRlcm5hdGVfaGFuZGxlcl9mb3J3
YXJkX2RlY2xhcmF0aW9uc19mb3JfZG9tYWlucyk6CisgICAgICAgIChCYWNrZW5kRGlzcGF0Y2hl
ckhlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfYWx0ZXJuYXRlX2hhbmRsZXJfZm9yd2FyZF9kZWNs
YXJhdGlvbnNfZm9yX2RvbWFpbnMuQWx0ZXJuYXRlSW5zcGVjdG9yKToKKyAgICAgICAgRm9yd2Fy
ZCBkZWNsYXJlIGFsdGVybmF0ZSBkaXNwYXRjaGVycywgYW5kIGFsbG93IHNldHRpbmcgYW4gYWx0
ZXJuYXRlIGRpc3BhdGNoZXIgb24gYSBkb21haW4gZGlzcGF0Y2hlci4KKworICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxl
bWVudGF0aW9uLnB5OgorICAgICAgICAoQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdl
bmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAoQmFja2VuZERpc3BhdGNoZXJJbXBs
ZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbl9m
b3JfY29tbWFuZCk6CisgICAgICAgIENoZWNrIGZvciBhbmQgZGlzcGF0Y2ggb24gYW4gQWx0ZXJu
YXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgaWYgdGhlcmUgaXMgb25lIGZvciB0aGlzIGRv
bWFpbi4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yX3Rl
bXBsYXRlcy5weToKKyAgICAgICAgKEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KToKKyAgICAgICAgKEFsdGVybmF0ZUluc3BlY3Rvcik6CisgICAgICAgIFRlbXBsYXRlIGJvaWxl
cnBsYXRlIGZvciBwcmVsdWRlIGFuZCBwb3N0bHVkZS4KKworICAgICAgICAqIGluc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24t
cmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1h
bmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdDoKKyAg
ICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFy
eWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1y
ZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJh
dGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9t
YWluLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFz
ZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0
OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFy
YXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQ6
CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJp
bmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdDoKKyAgICAgICAgUmViYXNlbGluZSB0ZXN0cy4K
KworMjAxNC0xMC0yMCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCiAg
ICAgICAgIFVucmV2aWV3ZWQgYWRkIGJhY2sgY29weXJpZ2h0IGxpbmUgdGhhdCB3YXMgYWNjaWRl
bnRhbGx5IHJlbW92ZWQuCiAKICAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRvcl90ZW1wbGF0ZXMucHk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggYmE5Y2Zl
Zi4uZmFmZjliMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMTIxLDYgKzEyMSwxNSBA
QCBFTkFCTEVfSU5QVVRfVFlQRV9XRUVLID0gJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLXyQoUExB
VEZPUk1fTkFNRSkpOwogRU5BQkxFX0lOUFVUX1RZUEVfV0VFS19pcGhvbmVvcyA9IEVOQUJMRV9J
TlBVVF9UWVBFX1dFRUs7CiBFTkFCTEVfSU5QVVRfVFlQRV9XRUVLX2lwaG9uZXNpbXVsYXRvciA9
ICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFS19pcGhvbmVvcyk7CiBFTkFCTEVfSU5TUEVDVE9SID0g
RU5BQkxFX0lOU1BFQ1RPUjsKKworRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hF
UlMgPSAkKEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTXyQoUExBVEZPUk1f
TkFNRSkpOworRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfaXBob25lb3Mg
PSBFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUzsKK0VOQUJMRV9JTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX2lwaG9uZXNpbXVsYXRvciA9ICQoRU5BQkxFX0lOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfaXBob25lb3MpOworRU5BQkxFX0lOU1BFQ1RPUl9B
TFRFUk5BVEVfRElTUEFUQ0hFUlNfbWFjb3N4ID0gJChFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFU
RV9ESVNQQVRDSEVSU19tYWNvc3hfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpCitF
TkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19tYWNvc3hfMTA4MCA9IDsKK0VO
QUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX21hY29zeF8xMDkwID0gOworRU5B
QkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfbWFjb3N4XzEwMTAwMCA9IEVOQUJM
RV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTOworCiBFTkFCTEVfSU9TX0FJUlBMQVkg
PSAkKEVOQUJMRV9JT1NfQUlSUExBWV8kKFBMQVRGT1JNX05BTUUpKTsKIEVOQUJMRV9JT1NfQUlS
UExBWV9pcGhvbmVvcyA9IEVOQUJMRV9JT1NfQUlSUExBWTsKIEVOQUJMRV9JT1NfQUlSUExBWV9p
cGhvbmVzaW11bGF0b3IgPSAkKEVOQUJMRV9JT1NfQUlSUExBWV9pcGhvbmVvcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJkOWJhNTcuLjI2YzY3OWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMTg1LDYgKzExODUsMTIgQEAKIAkJQTVDRUVFMTQxODdGM0JB
RDAwRTU1Qzk5IC8qIEluc3BlY3RvckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1Q0VFRTEyMTg3RjNCQUQwMEU1NUM5OSAvKiBJbnNwZWN0
b3JBZ2VudC5jcHAgKi87IH07CiAJCUE1RDBBMUJCMTg2MjMwMUIwMEM3QjQ5NiAvKiBJbnNwZWN0
b3JFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTVEMEExQkExODYyMzAxQjAwQzdCNDk2IC8qIEluc3BlY3RvckVudmlyb25tZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTVEMkU2
NjUxOTVFMTc0MDAwQTUxOEU3IC8qIEpTQ29udGV4dFJlZkludGVybmFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUQyRTY2NDE5NUUxNzM4MDBBNTE4
RTcgLyogSlNDb250ZXh0UmVmSW50ZXJuYWwuaCAqLzsgfTsKKwkJQTVFQTcwRTcxOUY1QjEwMTAw
OThGNUVDIC8qIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVFQTcwRTQxOUY1QjEwMTAwOThGNUVD
IC8qIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1RUE3MEU4MTlGNUIxMDEwMDk4RjVFQyAv
KiBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RUE3MEU1MTlGNUIxMDEwMDk4RjVFQyAv
KiBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNUVBNzBFOTE5RjVCMTAxMDA5OEY1
RUMgLyogSW5zcGVjdG9yQXVnbWVudGluZ0FnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUVBNzBFNjE5RjVCMTAxMDA5OEY1RUMgLyogSW5zcGVj
dG9yQXVnbWVudGluZ0FnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQTVFQTcwRUIxOUY1QjNENTAwOThGNUVDIC8qIGdlbmVyYXRlX2FsdGVy
bmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5IGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUVBNzBFQTE5RjVCM0Q1MDA5OEY1RUMgLyogZ2Vu
ZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgKi87IH07CisJCUE1
RUE3MEVDMTlGNUIzRUEwMDk4RjVFQyAvKiBnZW5lcmF0ZV9hbHRlcm5hdGVfYmFja2VuZF9kaXNw
YXRjaGVyX2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1RUE3MEVBMTlGNUIzRDUwMDk4RjVFQyAvKiBnZW5lcmF0ZV9hbHRlcm5hdGVfYmFj
a2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlBNUVBNzBFRTE5RjVCNUM0MDA5OEY1RUMgLyogSlNDb250ZXh0
UmVmSW5zcGVjdG9yU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTVFQTcwRUQxOUY1QjVDNDAwOThGNUVDIC8qIEpTQ29udGV4dFJlZkluc3Bl
Y3RvclN1cHBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlBNUZEMDA2NzE4OUFGRTlDMDA2MzMyMzEgLyogU2NyaXB0QXJndW1lbnRzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RkQwMDY1MTg5
QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuY3BwICovOyB9OwogCQlBNUZEMDA2ODE4
OUFGRTlDMDA2MzMyMzEgLyogU2NyaXB0QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUZEMDA2NjE4OUFGRTlDMDA2MzMyMzEgLyogU2Ny
aXB0QXJndW1lbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTVGRDAwNkQxODlCMDBBQTAwNjMzMjMxIC8qIFNjcmlwdENhbGxGcmFtZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUZEMDA2OTE4
OUIwMEE5MDA2MzMyMzEgLyogU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLzsgfTsKQEAgLTI4NTQsNiAr
Mjg2MCwxMSBAQAogCQlBNUNFRUUxMzE4N0YzQkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdlbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQWdlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVEMEExQkExODYyMzAxQjAwQzdCNDk2IC8qIElu
c3BlY3RvckVudmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
c3BlY3RvckVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1RDJF
NjY0MTk1RTE3MzgwMEE1MThFNyAvKiBKU0NvbnRleHRSZWZJbnRlcm5hbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0NvbnRleHRSZWZJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBNUVBNzBFNDE5RjVCMTAxMDA5OEY1RUMgLyogQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9s
bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1Z21lbnRhYmxlSW5zcGVj
dG9yQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUVBNzBFNTE5
RjVCMTAxMDA5OEY1RUMgLyogQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29u
dHJvbGxlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUVBNzBFNjE5
RjVCMTAxMDA5OEY1RUMgLyogSW5zcGVjdG9yQXVnbWVudGluZ0FnZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckF1Z21lbnRpbmdBZ2VudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNUVBNzBFQTE5RjVCM0Q1MDA5OEY1RUMgLyogZ2VuZXJh
dGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnNjcmlwdC5weXRob247IHBhdGggPSBnZW5lcmF0ZV9hbHRlcm5hdGVfYmFja2VuZF9kaXNwYXRj
aGVyX2hlYWRlci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVFQTcwRUQxOUY1
QjVDNDAwOThGNUVDIC8qIEpTQ29udGV4dFJlZkluc3BlY3RvclN1cHBvcnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDb250ZXh0UmVmSW5zcGVjdG9yU3VwcG9ydC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUZEMDA2NTE4OUFGRTlDMDA2MzMyMzEgLyog
U2NyaXB0QXJndW1lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNjcmlwdEFyZ3VtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1RkQw
MDY2MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0QXJndW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE1RkQwMDY5MTg5QjAwQTkwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q2FsbEZyYW1lLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM5MDQsNiArMzkxNSw3IEBACiAJCQkJ
ODZFM0M2MDkxNjdCQUI4NzAwNkQ3NjBBIC8qIEpTQ29udGV4dEludGVybmFsLmggKi8sCiAJCQkJ
MTRCRDVBMjkwQTNFOTFGNjAwQkFGNTlDIC8qIEpTQ29udGV4dFJlZi5jcHAgKi8sCiAJCQkJMTRC
RDVBMkEwQTNFOTFGNjAwQkFGNTlDIC8qIEpTQ29udGV4dFJlZi5oICovLAorCQkJCUE1RUE3MEVE
MTlGNUI1QzQwMDk4RjVFQyAvKiBKU0NvbnRleHRSZWZJbnNwZWN0b3JTdXBwb3J0LmggKi8sCiAJ
CQkJQTVEMkU2NjQxOTVFMTczODAwQTUxOEU3IC8qIEpTQ29udGV4dFJlZkludGVybmFsLmggKi8s
CiAJCQkJMTQ4Q0QxRDcxMDhDRjkwMjAwODE2M0M2IC8qIEpTQ29udGV4dFJlZlByaXZhdGUuaCAq
LywKIAkJCQlBNzIwMjhCNDE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNw
cCAqLywKQEAgLTUxNDMsNiArNTE1NSw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAogCQkJCUE1MTNFNUNDMTg1RkI5OTIwMDdFOTVBRCAvKiBhZ2VudHMgKi8sCisJCQkJ
QTVFQTcwRTMxOUY1QjBFMjAwOThGNUVDIC8qIGF1Z21lbnRhYmxlICovLAogCQkJCUE1MzI0MzhE
MTg1Njk2Q0EwMDJFRDY5MiAvKiBwcm90b2NvbCAqLywKIAkJCQlBNUJBMTVFMDE4MjM0MDlEMDBB
ODJFNjkgLyogcmVtb3RlICovLAogCQkJCUE1MzI0MzhFMTg1Njk2Q0UwMDJFRDY5MiAvKiBzY3Jp
cHRzICovLApAQCAtNTIyMyw2ICs1MjM2LDE2IEBACiAJCQlwYXRoID0gcmVtb3RlOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTVFQTcwRTMxOUY1QjBFMjAwOThGNUVDIC8q
IGF1Z21lbnRhYmxlICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQlBNUVBNzBFNDE5RjVCMTAxMDA5OEY1RUMgLyogQXVnbWVudGFibGVJbnNwZWN0b3JDb250
cm9sbGVyLmggKi8sCisJCQkJQTVFQTcwRTUxOUY1QjEwMTAwOThGNUVDIC8qIEF1Z21lbnRhYmxl
SW5zcGVjdG9yQ29udHJvbGxlckNsaWVudC5oICovLAorCQkJCUE1RUE3MEU2MTlGNUIxMDEwMDk4
RjVFQyAvKiBJbnNwZWN0b3JBdWdtZW50aW5nQWdlbnQuaCAqLywKKwkJCSk7CisJCQlwYXRoID0g
YXVnbWVudGFibGU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlBN0Q4MDE5
RjE4ODBENjZFMDAyNkMzOUIgLyogYnVpbHRpbnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKApAQCAtNTI0MCw2ICs1MjYzLDcgQEAKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQzQ3MDNDQzIxOTI4NDRDQzAwMTNGQkVBIC8qIF9faW5p
dF9fLnB5ICovLAorCQkJCUE1RUE3MEVBMTlGNUIzRDUwMDk4RjVFQyAvKiBnZW5lcmF0ZV9hbHRl
cm5hdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weSAqLywKIAkJCQlDNDcwM0NDMzE5Mjg0
NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfYmFja2VuZF9jb21tYW5kcy5weSAqLywKIAkJCQlDNDcw
M0NDNDE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRl
ci5weSAqLywKIAkJCQlDNDcwM0NDNTE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfYmFja2Vu
ZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5ICovLApAQCAtNTI5OSw2ICs1MzIzLDcgQEAK
IAkJCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg2RDNCMkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUM0OUZFNEFCMTlBQUM4NjEwMEY0MENFOSAvKiBnZW5lcmF0ZV9w
cm90b2NvbF90eXBlc19oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKKwkJCQlBNUVBNzBFQzE5RjVC
M0VBMDA5OEY1RUMgLyogZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFk
ZXIucHkgaW4gSGVhZGVycyAqLywKIAkJCQk2QUQyQ0I0RDE5QjkxNDAxMDAwNjU3MTkgLyogRGVi
dWdnZXJFdmFsRW5hYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzQ5RkU0QUMxOUFBQzg2MTAw
RjQwQ0U5IC8qIGdlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5IGluIEhl
YWRlcnMgKi8sCiAJCQkJNjU4RDNBNTYxOTYzODI2ODAwM0M0NUQ2IC8qIFZNRW50cnlSZWNvcmQu
aCBpbiBIZWFkZXJzICovLApAQCAtNTQyNyw2ICs1NDUyLDcgQEAKIAkJCQkwRkM3MTJERjE3Q0Q4
NzdDMDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyQTI4MjVEMDE4MzQxRjJEMDA4N0ZCQTkgLyogRGVsYXllZFJlbGVhc2VTY29wZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3Ry
YWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVFQTcwRTgxOUY1QjEwMTAwOThGNUVDIC8q
IEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTcwNEQ5MDMxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3MDREOTA0MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjAxNzcxNDNGQ0Qz
RjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICovLApAQCAtNTUzMCw2
ICs1NTU2LDcgQEAKIAkJCQkwRjRDRUQ1RjE4Q0VBN0FCMDA4MDJGRTAgLyogUG9seW1vcnBoaWNH
ZXRCeUlkTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRUUxNzE3OEU3MzAwNjkwQzdG
IC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUMx
NEVGOTBBRjAwQzcyNTMyIC8qIERGR1BoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUVBNzBF
RTE5RjVCNUM0MDA5OEY1RUMgLyogSlNDb250ZXh0UmVmSW5zcGVjdG9yU3VwcG9ydC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTc4QTk3N0IxNzk3MzhCODAwOURGNzQ0IC8qIERGR1BsYW4uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQkUwRjc1MTZDMURCMEIwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9u
SW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVFMTRFRjkwQjcwMEM3
MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC01NzMxLDYgKzU3NTgsNyBAQAogCQkJCUJDMThDNDE0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZh
U2NyaXB0Q29yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTUwRTE2RjVDRDAwQjM0NDYw
IC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDI5RDkzMDBF
RDIyRDcwMDBCODk2MTkgLyogSklULmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUVBNzBFOTE5RjVC
MTAxMDA5OEY1RUMgLyogSW5zcGVjdG9yQXVnbWVudGluZ0FnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NkNDRUZERTBGNDEzRjg5MDBGRDdGOUUgLyogSklUQ29kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYwNzc2QkYxNEZGMDAyQjAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9uRWZmb3J0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkFGN0VGRTE2NUJBOTFGMDAwQzg0NTUgLyogSklURGlzYXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTU5NzksNiArNjAwNyw3IEBACiAJCQkJMEY5RkM4
QzQxNEUxQjYwMDAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGOTgyMDYxMTZCRkUzODMwMDI0MEQwMiAvKiBQcmVjaXNlSnVtcFRhcmdldHMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRl
TmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVFQTcwRTcxOUY1QjEwMTAwOThGNUVDIC8qIEF1
Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0
NTAwRTE2RjVDRDAwQjM0NDYwIC8qIFByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk1Q0Q0
NTc3MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQ1MTBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvZmlsZU5vZGUuaCBpbiBIZWFkZXJz
ICovLApAQCAtNjM1Myw2ICs2MzgyLDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQlDNDlGRTRBOTE5QUFDODNFMDBGNDBDRTkgLyogZ2VuZXJh
dGVfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5IGluIFJlc291cmNlcyAqLywKKwkJCQlBNUVBNzBF
QjE5RjVCM0Q1MDA5OEY1RUMgLyogZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hl
cl9oZWFkZXIucHkgaW4gUmVzb3VyY2VzICovLAogCQkJCUE1M0YxQUMwMThDOTBGOEYwMDcyRUI2
RCAvKiBmcmFtZXdvcmsuc2IgaW4gUmVzb3VyY2VzICovLAogCQkJCUM0OUZFNEFBMTlBQUM4M0Uw
MEY0MENFOSAvKiBnZW5lcmF0ZV9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCmluZGV4IDM0M2Y2NGEuLjlmNWViNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKQEAgLTYxLDYgKzYxLDkgQEAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxPYmoK
ICAgICAsIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKG51bGxwdHIpCiAgICAgLCBtX2luY2x1
ZGVOYXRpdmVDYWxsU3RhY2tXaXRoRXhjZXB0aW9ucyh0cnVlKQogICAgICwgbV9pc0F1dG9tYXRp
Y0luc3BlY3Rpb24oZmFsc2UpCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFU
Q0hFUlMpCisgICAgLCBtX2F1Z21lbnRpbmdDbGllbnQobnVsbHB0cikKKyNlbmRpZgogewogICAg
IGF1dG8gcnVudGltZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdFJ1bnRp
bWVBZ2VudD4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIG1fZ2xvYmFsT2JqZWN0KTsK
ICAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RD
b25zb2xlQWdlbnQ+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKTsKQEAgLTEwMSw2ICsx
MDQsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RG
cm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwKICAgICBtX2luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShmcm9udGVuZENo
YW5uZWwpOwogCiAgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250
ZW5kQ2hhbm5lbCwgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyAgICBpZiAobV9hdWdtZW50
aW5nQ2xpZW50KQorICAgICAgICBtX2F1Z21lbnRpbmdDbGllbnQtPmluc3BlY3RvckNvbm5lY3Rl
ZCgpOworI2VuZGlmCiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
OjpkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCkBA
IC0xMTUsNiArMTIzLDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
OjpkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlCiAgICAgbV9pbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwgPSBudWxscHRyOwogCiAgICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rp
b24gPSBmYWxzZTsKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJT
KQorICAgIGlmIChtX2F1Z21lbnRpbmdDbGllbnQpCisgICAgICAgIG1fYXVnbWVudGluZ0NsaWVu
dC0+aW5zcGVjdG9yRGlzY29ubmVjdGVkKCk7CisjZW5kaWYKIH0KIAogdm9pZCBKU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaApp
bmRleCA1ZDljZjhjLi5jMjVlNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyLmgKQEAgLTM0LDYgKzM0LDEwIEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSUykKKyNpbmNsdWRlICJBdWdtZW50YWJsZUluc3BlY3RvckNvbnRy
b2xsZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIENvbnNvbGVDbGllbnQ7
CiBjbGFzcyBFeGVjU3RhdGU7CkBAIC01Miw3ICs1NiwxMiBAQCBjbGFzcyBJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWw7CiBjbGFzcyBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ7CiBjbGFzcyBT
Y3JpcHRDYWxsU3RhY2s7CiAKLWNsYXNzIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
ciBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JFbnZpcm9ubWVudCB7CitjbGFzcyBKU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXIgZmluYWwKKyAgICA6IHB1YmxpYyBJbnNwZWN0b3JFbnZp
cm9ubWVudAorI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorICAg
ICwgcHVibGljIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlcgorI2VuZGlmCit7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKTsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTcxLDYgKzgwLDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVwb3J0QVBJRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlIGV4Y2VwdGlvbik7CiAKICAgICBKU0M6OkNvbnNvbGVDbGllbnQqIGNvbnNvbGVD
bGllbnQoKSBjb25zdDsKKyAgICBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5JiBpbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9hZ2VudHM7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBkZXZl
bG9wZXJFeHRyYXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRTY3JpcHRTdGF0ZShKU0M6OkV4ZWNTdGF0
ZSopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTgwLDYgKzkwLDE0IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FsbEluamVjdGVkU2NyaXB0RnVuY3Rpb24oSlND
OjpFeGVjU3RhdGUqKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZnJvbnRlbmRJbml0
aWFsaXplZCgpIG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElT
UEFUQ0hFUlMpCisgICAgdmlydHVhbCBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGll
bnQqIGF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fYXVnbWVudGluZ0NsaWVudDsgfSAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXVn
bWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29u
dHJvbGxlckNsaWVudCogY2xpZW50KSBvdmVycmlkZSB7IG1fYXVnbWVudGluZ0NsaWVudCA9IGNs
aWVudDsgfQorCisgICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsOyB9CisgICAgdmlydHVhbCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5JiBhZ2VudFJlZ2lzdHJ5
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9hZ2VudHM7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IHZvaWQgYXBwZW5kQVBJQmFja3RyYWNlKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKTsKIApA
QCAtOTMsNiArMTExLDEwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyPiBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwogICAgIGJvb2wgbV9pbmNs
dWRlTmF0aXZlQ2FsbFN0YWNrV2l0aEV4Y2VwdGlvbnM7CiAgICAgYm9vbCBtX2lzQXV0b21hdGlj
SW5zcGVjdGlvbjsKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJT
KQorICAgIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCogbV9hdWdtZW50aW5n
Q2xpZW50OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQXVnbWVudGFi
bGVJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZDMxNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVj
dG9yQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJv
bGxlcl9oCisjZGVmaW5lIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlcl9oCisKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudC5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KKworbmFtZXNwYWNlIElu
c3BlY3RvciB7CisKK2NsYXNzIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlciB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyKCkgeyB9CisK
KyAgICB2aXJ0dWFsIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCogYXVnbWVu
dGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQoQXVnbWVudGFibGVJ
bnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KikgPSAwOworCisgICAgdmlydHVhbCBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IEluc3BlY3RvckFnZW50UmVnaXN0cnkmIGFnZW50UmVnaXN0cnkoKSA9IDA7CisKKyAgICBib29s
IGNvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuICEhZnJvbnRlbmRDaGFubmVsKCk7IH0KK307CisK
K30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9B
TFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNlbmRpZiAvLyAhZGVmaW5lZChBdWdtZW50YWJsZUlu
c3BlY3RvckNvbnRyb2xsZXJfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYXVnbWVudGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRh
YmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmZlZjFjZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNs
aWVudC5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVu
dF9oCisjZGVmaW5lIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudF9oCisKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworbmFtZXNwYWNlIElu
c3BlY3RvciB7CisKK2NsYXNzIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xp
ZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckNvbm5lY3RlZCgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGlzY29ubmVjdGVkKCkgPSAwOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFU
RV9ESVNQQVRDSEVSUykKKworI2VuZGlmIC8vICFkZWZpbmVkKEF1Z21lbnRhYmxlSW5zcGVjdG9y
Q29udHJvbGxlckNsaWVudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hdWdtZW50YWJsZS9JbnNwZWN0b3JBdWdtZW50aW5nQWdlbnQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvSW5zcGVjdG9yQXVnbWVudGluZ0Fn
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc2NzM0ZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUv
SW5zcGVjdG9yQXVnbWVudGluZ0FnZW50LmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5zcGVjdG9yQXVnbWVu
dGluZ0FnZW50X2gKKyNkZWZpbmUgSW5zcGVjdG9yQXVnbWVudGluZ0FnZW50X2gKKworI2lmIEVO
QUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjaW5jbHVkZSAiSW5zcGVj
dG9ySlNBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JK
U0JhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckpTRnJvbnRlbmREaXNw
YXRjaGVycy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFnZW50QmFzZS5o
PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBGcm9udGVuZERpc3BhdGNoZXIsIHR5cGVuYW1lIEJhY2tlbmREaXNw
YXRjaGVyLCB0eXBlbmFtZSBBbHRlcm5hdGVEaXNwYXRjaGVyPgorY2xhc3MgSW5zcGVjdG9yQXVn
bWVudGluZ0FnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSW5zcGVjdG9yQXVnbWVudGluZ0FnZW50KGNv
bnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjp1bmlxdWVfcHRyPEFsdGVybmF0ZURpc3BhdGNo
ZXI+IGFsdGVybmF0ZURpc3BhdGNoZXIpCisgICAgICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKGRv
bWFpbk5hbWUpCisgICAgICAgICwgbV9hbHRlcm5hdGVEaXNwYXRjaGVyKFdURjo6bW92ZShhbHRl
cm5hdGVEaXNwYXRjaGVyKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3Bh
dGNoZXIsIG51bGxwdHIpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZXRBbHRlcm5h
dGVEaXNwYXRjaGVyKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgICAgIG1fYWx0
ZXJuYXRlRGlzcGF0Y2hlci0+c2V0QmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIp
OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV9m
cm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVy
LmNsZWFyKCk7CisgICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+c2V0QmFja2VuZERpc3Bh
dGNoZXIobnVsbHB0cik7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxB
bHRlcm5hdGVEaXNwYXRjaGVyPiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVm
UHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFU
RV9ESVNQQVRDSEVSUykKKworI2VuZGlmIC8vIEluc3BlY3RvckF1Z21lbnRpbmdBZ2VudF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9fX2luaXRfXy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL19faW5pdF9fLnB5CmluZGV4IGJiNWY5N2UuLjg4OWUyOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL19faW5pdF9fLnB5
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL19f
aW5pdF9fLnB5CkBAIC0zLDYgKzMsNyBAQAogZnJvbSBtb2RlbHMgaW1wb3J0ICoKIGZyb20gZ2Vu
ZXJhdG9yIGltcG9ydCAqCiAKK2Zyb20gZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0
Y2hlcl9oZWFkZXIgaW1wb3J0ICoKIGZyb20gZ2VuZXJhdGVfYmFja2VuZF9jb21tYW5kcyBpbXBv
cnQgKgogZnJvbSBnZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyIGltcG9ydCAqCiBm
cm9tIGdlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbiBpbXBvcnQgKgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9hbHRl
cm5hdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwLi5kNTgxYzYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tl
bmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKQEAgLTAsMCArMSw5MCBAQAorIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgc3RyaW5nCitpbXBvcnQgcmUKK2Zyb20gc3Ry
aW5nIGltcG9ydCBUZW1wbGF0ZQorCitmcm9tIGdlbmVyYXRvciBpbXBvcnQgR2VuZXJhdG9yCitm
cm9tIGdlbmVyYXRvcl90ZW1wbGF0ZXMgaW1wb3J0IEdlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1w
bGF0ZXMKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKK2NsYXNzIEFsdGVy
bmF0ZUJhY2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yKEdlbmVyYXRvcik6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG1vZGVsLCBpbnB1dF9maWxlcGF0aCk6CisgICAgICAgIEdlbmVyYXRv
ci5fX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5wdXRfZmlsZXBhdGgpCisKKyAgICBkZWYgb3V0cHV0
X2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gJ0luc3BlY3RvckFsdGVybmF0ZUJhY2tl
bmREaXNwYXRjaGVycy5oJworCisgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAgICAg
ICAgaGVhZGVycyA9IFsKKyAgICAgICAgICAgICciSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIics
CisgICAgICAgICAgICAnPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
Lmg+JywKKyAgICAgICAgXQorCisgICAgICAgIGhlYWRlcl9hcmdzID0geworICAgICAgICAgICAg
J2hlYWRlckd1YXJkU3RyaW5nJzogcmUuc3ViKCdcVysnLCAnXycsIHNlbGYub3V0cHV0X2ZpbGVu
YW1lKCkpLAorICAgICAgICAgICAgJ2luY2x1ZGVzJzogJ1xuJy5qb2luKFsnI2luY2x1ZGUgJyAr
IGhlYWRlciBmb3IgaGVhZGVyIGluIGhlYWRlcnNdKSwKKyAgICAgICAgfQorCisgICAgICAgIGRv
bWFpbnMgPSBzZWxmLmRvbWFpbnNfdG9fZ2VuZXJhdGUoKQorICAgICAgICBzZWN0aW9ucyA9IFtd
CisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkKKyAgICAg
ICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5BbHRlcm5hdGVEaXNwYXRjaGVy
c0hlYWRlclByZWx1ZGUpLnN1YnN0aXR1dGUoTm9uZSwgKipoZWFkZXJfYXJncykpCisgICAgICAg
IHNlY3Rpb25zLmFwcGVuZCgnXG4nLmpvaW4oZmlsdGVyKE5vbmUsIG1hcChzZWxmLl9nZW5lcmF0
ZV9oYW5kbGVyX2RlY2xhcmF0aW9uc19mb3JfZG9tYWluLCBkb21haW5zKSkpKQorICAgICAgICBz
ZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkFsdGVybmF0ZURpc3BhdGNoZXJzSGVh
ZGVyUG9zdGx1ZGUpLnN1YnN0aXR1dGUoTm9uZSwgKipoZWFkZXJfYXJncykpCisgICAgICAgIHJl
dHVybiAnXG5cbicuam9pbihzZWN0aW9ucykKKworICAgIGRlZiBfZ2VuZXJhdGVfaGFuZGxlcl9k
ZWNsYXJhdGlvbnNfZm9yX2RvbWFpbihzZWxmLCBkb21haW4pOgorICAgICAgICBpZiBub3QgZG9t
YWluLmNvbW1hbmRzOgorICAgICAgICAgICAgcmV0dXJuICcnCisKKyAgICAgICAgY29tbWFuZF9k
ZWNsYXJhdGlvbnMgPSBbXQorICAgICAgICBmb3IgY29tbWFuZCBpbiBkb21haW4uY29tbWFuZHM6
CisgICAgICAgICAgICBjb21tYW5kX2RlY2xhcmF0aW9ucy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVf
aGFuZGxlcl9kZWNsYXJhdGlvbl9mb3JfY29tbWFuZChjb21tYW5kKSkKKworICAgICAgICBoYW5k
bGVyX2FyZ3MgPSB7CisgICAgICAgICAgICAnZG9tYWluTmFtZSc6IGRvbWFpbi5kb21haW5fbmFt
ZSwKKyAgICAgICAgICAgICdjb21tYW5kRGVjbGFyYXRpb25zJzogJ1xuJy5qb2luKGNvbW1hbmRf
ZGVjbGFyYXRpb25zKSwKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBHZW5lcmF0b3Iud3Jh
cF93aXRoX2d1YXJkX2Zvcl9kb21haW4oZG9tYWluLCBUZW1wbGF0ZShUZW1wbGF0ZXMuQWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXJIZWFkZXJEb21haW5IYW5kbGVySW50ZXJmYWNlRGVjbGFyYXRp
b24pLnN1YnN0aXR1dGUoTm9uZSwgKipoYW5kbGVyX2FyZ3MpKQorCisgICAgZGVmIF9nZW5lcmF0
ZV9oYW5kbGVyX2RlY2xhcmF0aW9uX2Zvcl9jb21tYW5kKHNlbGYsIGNvbW1hbmQpOgorICAgICAg
ICBsaW5lcyA9IFtdCisgICAgICAgIHBhcmFtZXRlcnMgPSBbJ2xvbmcgY2FsbElkJ10KKyAgICAg
ICAgZm9yIF9wYXJhbWV0ZXIgaW4gY29tbWFuZC5jYWxsX3BhcmFtZXRlcnM6CisgICAgICAgICAg
ICBwYXJhbWV0ZXJzLmFwcGVuZCgnJXMgaW5fJXMnICUgKEdlbmVyYXRvci50eXBlX3N0cmluZ19m
b3JfdW5jaGVja2VkX2Zvcm1hbF9pbl9wYXJhbWV0ZXIoX3BhcmFtZXRlciksIF9wYXJhbWV0ZXIu
cGFyYW1ldGVyX25hbWUpKQorCisgICAgICAgIGNvbW1hbmRfYXJncyA9IHsKKyAgICAgICAgICAg
ICdjb21tYW5kTmFtZSc6IGNvbW1hbmQuY29tbWFuZF9uYW1lLAorICAgICAgICAgICAgJ3BhcmFt
ZXRlcnMnOiAnLCAnLmpvaW4ocGFyYW1ldGVycykKKyAgICAgICAgfQorICAgICAgICBsaW5lcy5h
cHBlbmQoJyAgICB2aXJ0dWFsIHZvaWQgJShjb21tYW5kTmFtZSlzKCUocGFyYW1ldGVycylzKSA9
IDA7JyAlIGNvbW1hbmRfYXJncykKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNo
ZXJfaGVhZGVyLnB5CmluZGV4IGIyZmIwNmMuLmQ4MjE4MzAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2JhY2tlbmRf
ZGlzcGF0Y2hlcl9oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weQpA
QCAtNjIsMTYgKzYyLDMwIEBAIGNsYXNzIEJhY2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9y
KEdlbmVyYXRvcik6CiAgICAgICAgICAgICAndHlwZWRlZnMnOiAnXG4nLmpvaW4oWyd0eXBlZGVm
ICVzICVzOycgJSB0eXBlZGVmIGZvciB0eXBlZGVmIGluIHR5cGVkZWZzXSksCiAgICAgICAgIH0K
IAorICAgICAgICBkb21haW5zID0gc2VsZi5kb21haW5zX3RvX2dlbmVyYXRlKCkKKwogICAgICAg
ICBzZWN0aW9ucyA9IFtdCiAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xp
Y2Vuc2UoKSkKICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5DcHBI
ZWFkZXJQcmVsdWRlKS5zdWJzdGl0dXRlKE5vbmUsICoqaGVhZGVyX2FyZ3MpKQotICAgICAgICBz
ZWN0aW9ucy5leHRlbmQobWFwKHNlbGYuX2dlbmVyYXRlX2hhbmRsZXJfZGVjbGFyYXRpb25zX2Zv
cl9kb21haW4sIHNlbGYuZG9tYWluc190b19nZW5lcmF0ZSgpKSkKLSAgICAgICAgc2VjdGlvbnMu
ZXh0ZW5kKG1hcChzZWxmLl9nZW5lcmF0ZV9kaXNwYXRjaGVyX2RlY2xhcmF0aW9uc19mb3JfZG9t
YWluLCBzZWxmLmRvbWFpbnNfdG9fZ2VuZXJhdGUoKSkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVu
ZChzZWxmLl9nZW5lcmF0ZV9hbHRlcm5hdGVfaGFuZGxlcl9mb3J3YXJkX2RlY2xhcmF0aW9uc19m
b3JfZG9tYWlucyhkb21haW5zKSkKKyAgICAgICAgc2VjdGlvbnMuZXh0ZW5kKG1hcChzZWxmLl9n
ZW5lcmF0ZV9oYW5kbGVyX2RlY2xhcmF0aW9uc19mb3JfZG9tYWluLCBkb21haW5zKSkKKyAgICAg
ICAgc2VjdGlvbnMuZXh0ZW5kKG1hcChzZWxmLl9nZW5lcmF0ZV9kaXNwYXRjaGVyX2RlY2xhcmF0
aW9uc19mb3JfZG9tYWluLCBkb21haW5zKSkKICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBs
YXRlKFRlbXBsYXRlcy5DcHBIZWFkZXJQb3N0bHVkZSkuc3Vic3RpdHV0ZShOb25lLCAqKmhlYWRl
cl9hcmdzKSkKICAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQogCiAgICAgIyBQ
cml2YXRlIG1ldGhvZHMuCiAKKyAgICBkZWYgX2dlbmVyYXRlX2FsdGVybmF0ZV9oYW5kbGVyX2Zv
cndhcmRfZGVjbGFyYXRpb25zX2Zvcl9kb21haW5zKHNlbGYsIGRvbWFpbnMpOgorICAgICAgICBp
ZiBub3QgZG9tYWluczoKKyAgICAgICAgICAgIHJldHVybiAnJworCisgICAgICAgIGxpbmVzID0g
W10KKyAgICAgICAgbGluZXMuYXBwZW5kKCcjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVf
RElTUEFUQ0hFUlMpJykKKyAgICAgICAgZm9yIGRvbWFpbiBpbiBkb21haW5zOgorICAgICAgICAg
ICAgbGluZXMuYXBwZW5kKEdlbmVyYXRvci53cmFwX3dpdGhfZ3VhcmRfZm9yX2RvbWFpbihkb21h
aW4sICdjbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3Ilc0JhY2tlbmREaXNwYXRjaGVyOycgJSBkb21h
aW4uZG9tYWluX25hbWUpKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUyknKQorICAgICAgICByZXR1cm4gJ1xuJy5q
b2luKGxpbmVzKQorCiAgICAgZGVmIF9nZW5lcmF0ZV9oYW5kbGVyX2RlY2xhcmF0aW9uc19mb3Jf
ZG9tYWluKHNlbGYsIGRvbWFpbik6CiAgICAgICAgIGNsYXNzQ29tcG9uZW50cyA9IFsnY2xhc3Mn
XQogICAgICAgICBleHBvcnRNYWNybyA9IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygn
ZXhwb3J0X21hY3JvJywgTm9uZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBs
ZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRl
eCBiZTQ5YTgyLi5kZjY3NmExIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVt
ZW50YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CkBA
IC01Miw5ICs1MiwxNSBAQCBjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2Vu
ZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICAnPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1
ZXMuaD4nLAogICAgICAgICAgICAgJzx3dGYvdGV4dC9DU3RyaW5nLmg+J10KIAorICAgICAgICBz
ZWNvbmRhcnlfaW5jbHVkZXMgPSBbJyNpbmNsdWRlICVzJyAlIGhlYWRlciBmb3IgaGVhZGVyIGlu
IHNlY29uZGFyeV9oZWFkZXJzXQorICAgICAgICBzZWNvbmRhcnlfaW5jbHVkZXMuYXBwZW5kKCcn
KQorICAgICAgICBzZWNvbmRhcnlfaW5jbHVkZXMuYXBwZW5kKCcjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpJykKKyAgICAgICAgc2Vjb25kYXJ5X2luY2x1ZGVzLmFw
cGVuZCgnI2luY2x1ZGUgIkluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oIicp
CisgICAgICAgIHNlY29uZGFyeV9pbmNsdWRlcy5hcHBlbmQoJyNlbmRpZicpCisKICAgICAgICAg
aGVhZGVyX2FyZ3MgPSB7CiAgICAgICAgICAgICAncHJpbWFyeUluY2x1ZGUnOiAnIkluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVycy5oIicsCi0gICAgICAgICAgICAnc2Vjb25kYXJ5SW5jbHVkZXMn
OiAiXG4iLmpvaW4oWycjaW5jbHVkZSAlcycgJSBoZWFkZXIgZm9yIGhlYWRlciBpbiBzZWNvbmRh
cnlfaGVhZGVyc10pLAorICAgICAgICAgICAgJ3NlY29uZGFyeUluY2x1ZGVzJzogJ1xuJy5qb2lu
KHNlY29uZGFyeV9pbmNsdWRlcyksCiAgICAgICAgIH0KIAogICAgICAgICBzZWN0aW9ucyA9IFtd
CkBAIC0xNjIsNiArMTY4LDcgQEAgY2xhc3MgQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBpbl9wYXJhbWV0ZXJfZGVjbGFyYXRpb25z
ID0gW10KICAgICAgICAgb3V0X3BhcmFtZXRlcl9kZWNsYXJhdGlvbnMgPSBbXQogICAgICAgICBv
dXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzID0gW10KKyAgICAgICAgYWx0ZXJuYXRlX2Rpc3BhdGNo
ZXJfbWV0aG9kX3BhcmFtZXRlcnMgPSBbJ2NhbGxJZCddCiAgICAgICAgIG1ldGhvZF9wYXJhbWV0
ZXJzID0gWydlcnJvciddCiAKICAgICAgICAgZm9yIHBhcmFtZXRlciBpbiBjb21tYW5kLmNhbGxf
cGFyYW1ldGVyczoKQEAgLTE4MCw4ICsxODcsMTEgQEAgY2xhc3MgQmFja2VuZERpc3BhdGNoZXJJ
bXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAgICAgaW5fcGFyYW1l
dGVyX2RlY2xhcmF0aW9ucy5hcHBlbmQoJyAgICAlKHBhcmFtZXRlclR5cGUpcyBpbl8lKHBhcmFt
ZXRlck5hbWUpcyA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjolKGtleWVkR2V0TWV0aG9k
KXMocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyTmFtZSlzIiks
ICUoc3VjY2Vzc091dFBhcmFtKXMsIHByb3RvY29sRXJyb3JzUHRyKTsnICUgcGFyYW1fYXJncykK
IAogICAgICAgICAgICAgaWYgcGFyYW1ldGVyLmlzX29wdGlvbmFsOgotICAgICAgICAgICAgICAg
IG1ldGhvZF9wYXJhbWV0ZXJzLmFwcGVuZCgnJShwYXJhbWV0ZXJOYW1lKXNfdmFsdWVGb3VuZCA/
ICZpbl8lKHBhcmFtZXRlck5hbWUpcyA6IG51bGxwdHInICUgcGFyYW1fYXJncykKKyAgICAgICAg
ICAgICAgICBvcHRpb25hbF9pbl9wYXJhbWV0ZXJfc3RyaW5nID0gJyUocGFyYW1ldGVyTmFtZSlz
X3ZhbHVlRm91bmQgPyAmaW5fJShwYXJhbWV0ZXJOYW1lKXMgOiBudWxscHRyJyAlIHBhcmFtX2Fy
Z3MKKyAgICAgICAgICAgICAgICBhbHRlcm5hdGVfZGlzcGF0Y2hlcl9tZXRob2RfcGFyYW1ldGVy
cy5hcHBlbmQob3B0aW9uYWxfaW5fcGFyYW1ldGVyX3N0cmluZykKKyAgICAgICAgICAgICAgICBt
ZXRob2RfcGFyYW1ldGVycy5hcHBlbmQob3B0aW9uYWxfaW5fcGFyYW1ldGVyX3N0cmluZykgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFsdGVybmF0
ZV9kaXNwYXRjaGVyX21ldGhvZF9wYXJhbWV0ZXJzLmFwcGVuZCgnaW5fJyArIHBhcmFtZXRlci5w
YXJhbWV0ZXJfbmFtZSkKICAgICAgICAgICAgICAgICBtZXRob2RfcGFyYW1ldGVycy5hcHBlbmQo
J2luXycgKyBwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUpCiAKICAgICAgICAgaWYgY29tbWFuZC5p
c19hc3luYzoKQEAgLTIyNiw4ICsyMzYsOSBAQCBjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlckltcGxl
bWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICAnZG9tYWluTmFtZSc6
IGRvbWFpbi5kb21haW5fbmFtZSwKICAgICAgICAgICAgICdjYWxsYmFja05hbWUnOiAnJXNDYWxs
YmFjaycgJSB1Y2ZpcnN0KGNvbW1hbmQuY29tbWFuZF9uYW1lKSwKICAgICAgICAgICAgICdjb21t
YW5kTmFtZSc6IGNvbW1hbmQuY29tbWFuZF9uYW1lLAotICAgICAgICAgICAgJ2luUGFyYW1ldGVy
RGVjbGFyYXRpb25zJzogIlxuIi5qb2luKGluX3BhcmFtZXRlcl9kZWNsYXJhdGlvbnMpLAotICAg
ICAgICAgICAgJ2ludm9jYXRpb25QYXJhbWV0ZXJzJzogIiwgIi5qb2luKG1ldGhvZF9wYXJhbWV0
ZXJzKQorICAgICAgICAgICAgJ2luUGFyYW1ldGVyRGVjbGFyYXRpb25zJzogJ1xuJy5qb2luKGlu
X3BhcmFtZXRlcl9kZWNsYXJhdGlvbnMpLAorICAgICAgICAgICAgJ2ludm9jYXRpb25QYXJhbWV0
ZXJzJzogJywgJy5qb2luKG1ldGhvZF9wYXJhbWV0ZXJzKSwKKyAgICAgICAgICAgICdhbHRlcm5h
dGVJbnZvY2F0aW9uUGFyYW1ldGVycyc6ICcsICcuam9pbihhbHRlcm5hdGVfZGlzcGF0Y2hlcl9t
ZXRob2RfcGFyYW1ldGVycyksCiAgICAgICAgIH0KIAogICAgICAgICBsaW5lcyA9IFtdCkBAIC0y
NDAsNiArMjUxLDE0IEBAIGNsYXNzIEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5l
cmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgaWYgbGVuKGNvbW1hbmQuY2FsbF9wYXJhbWV0ZXJz
KSA+IDA6CiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkJhY2tl
bmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25QcmVwYXJlQ29tbWFuZEFyZ3VtZW50cykuc3Vic3Rp
dHV0ZShOb25lLCAqKmNvbW1hbmRfYXJncykpCiAKKyAgICAgICAgbGluZXMuYXBwZW5kKCcjaWYg
RU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpJykKKyAgICAgICAgbGluZXMu
YXBwZW5kKCcgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeycpCisgICAgICAgIGxpbmVz
LmFwcGVuZCgnICAgICAgICBtX2FsdGVybmF0ZURpc3BhdGNoZXItPiUoY29tbWFuZE5hbWUpcygl
KGFsdGVybmF0ZUludm9jYXRpb25QYXJhbWV0ZXJzKXMpOycgJSBjb21tYW5kX2FyZ3MpCisgICAg
ICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICByZXR1cm47JykKKyAgICAgICAgbGluZXMuYXBwZW5k
KCcgICAgfScpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnI2VuZGlmJykKKyAgICAgICAgbGluZXMu
YXBwZW5kKCcnKQorCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIEVycm9yU3RyaW5nIGVycm9y
OycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJl
c3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7JykKICAgICAgICAgaWYgY29tbWFuZC5p
c19hc3luYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CmluZGV4
IDc3MDZjMmIuLjU0ZGIyMzUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yX3RlbXBs
YXRlcy5weQpAQCAtOTUsNiArOTUsMzkgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7IiIiKQogI2Vu
ZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAiIiIpCiAKKyAgICBBbHRlcm5hdGVEaXNwYXRjaGVy
c0hlYWRlclByZWx1ZGUgPSAoCisgICAgIiIiI2lmbmRlZiAke2hlYWRlckd1YXJkU3RyaW5nfQor
I2RlZmluZSAke2hlYWRlckd1YXJkU3RyaW5nfQorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRF
Uk5BVEVfRElTUEFUQ0hFUlMpCisKKyR7aW5jbHVkZXN9CisKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworCitjbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitwdWJsaWM6
CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyPiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBkaXNwYXRj
aGVyOyB9CisgICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorcHJpdmF0ZToK
KyAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNo
ZXI7Cit9OworIiIiKQorCisgICAgQWx0ZXJuYXRlRGlzcGF0Y2hlcnNIZWFkZXJQb3N0bHVkZSA9
ICgKKyAgICAiIiJ9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShJ
TlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjZW5kaWYgLy8gIWRlZmluZWQoJHto
ZWFkZXJHdWFyZFN0cmluZ30pIiIiKQorCisgICAgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJI
ZWFkZXJEb21haW5IYW5kbGVySW50ZXJmYWNlRGVjbGFyYXRpb24gPSAoCisgICAgIiIiY2xhc3Mg
QWx0ZXJuYXRlSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGlj
IEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5BbHRlcm5hdGVJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoKSB7
IH0KKyR7Y29tbWFuZERlY2xhcmF0aW9uc30KK307IiIiKQorCiAgICAgQmFja2VuZERpc3BhdGNo
ZXJIZWFkZXJEb21haW5IYW5kbGVyRGVjbGFyYXRpb24gPSAoCiAgICAgIiIiJHtjbGFzc0FuZEV4
cG9ydE1hY3JvfSBJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKIHB1YmxpYzoKQEAgLTExMiw2ICsxNDUsMTIgQEAgJHtjb21tYW5kRGVjbGFyYXRpb25zfQog
cHJpdmF0ZToKICAgICBJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoSW5z
cGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosIEluc3BlY3RvciR7ZG9tYWluTmFt
ZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKICAgICBJbnNwZWN0b3Ike2RvbWFpbk5hbWV9
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50OworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
QUxURVJOQVRFX0RJU1BBVENIRVJTKQorcHVibGljOgorICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlz
cGF0Y2hlcihBbHRlcm5hdGVJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIq
IGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJuYXRl
RGlzcGF0Y2hlcjsgfQorcHJpdmF0ZToKKyAgICBBbHRlcm5hdGVJbnNwZWN0b3Ike2RvbWFpbk5h
bWV9QmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcjsKKyNlbmRpZgogfTsi
IiIpCiAKICAgICBCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckFzeW5jQ29tbWFuZERlY2xhcmF0aW9u
ID0gKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmlu
ZGluZ3MucHkKaW5kZXggMTdjZGZhMS4uNTc1ODY1MiAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1i
aW5kaW5ncy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Z2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CkBAIC01MCw2ICs1MCw3IEBA
IGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBmcm9tIG1vZGVscyBpbXBvcnQgKgogICAgIGZyb20g
Z2VuZXJhdG9yIGltcG9ydCAqCiAKKyAgICBmcm9tIGdlbmVyYXRlX2FsdGVybmF0ZV9iYWNrZW5k
X2Rpc3BhdGNoZXJfaGVhZGVyIGltcG9ydCAqCiAgICAgZnJvbSBnZW5lcmF0ZV9iYWNrZW5kX2Nv
bW1hbmRzIGltcG9ydCAqCiAgICAgZnJvbSBnZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVh
ZGVyIGltcG9ydCAqCiAgICAgZnJvbSBnZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVt
ZW50YXRpb24gaW1wb3J0ICoKQEAgLTExOCw2ICsxMTksNyBAQCBkZWYgZ2VuZXJhdGVfZnJvbV9z
cGVjaWZpY2F0aW9uKHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aD1Ob25lLAogICAgIHBy
b3RvY29sLnJlc29sdmVfdHlwZXMoKQogCiAgICAgZ2VuZXJhdG9ycyA9IFtdCisgICAgZ2VuZXJh
dG9ycy5hcHBlbmQoQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IocHJv
dG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCiAgICAgZ2VuZXJhdG9ycy5h
cHBlbmQoQmFja2VuZENvbW1hbmRzR2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmlj
YXRpb25fZmlsZXBhdGgpKQogICAgIGdlbmVyYXRvcnMuYXBwZW5kKEJhY2tlbmREaXNwYXRjaGVy
SGVhZGVyR2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgp
KQogICAgIGdlbmVyYXRvcnMuYXBwZW5kKEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25H
ZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMt
d2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKaW5kZXggZjA5MWY5ZS4uY2JmMzBkZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9j
b21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdApAQCAtMSwzICsxLDY5IEBA
CisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUu
IEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gY29tbWFuZHMtd2l0aC1hc3luYy1h
dHRyaWJ1dGUuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQor
CisjaWZuZGVmIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisjZGVmaW5l
IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2luY2x1ZGUgIkluc3BlY3RvclByb3Rv
Y29sVHlwZXMuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgQWx0ZXJuYXRlSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworcHVibGljOgorICAgIHZvaWQgc2V0QmFja2VuZERp
c3BhdGNoZXIoUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gZGlzcGF0Y2hl
cikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjsgfQorICAgIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAgUmVmUHRyPEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworfTsKKworCitjbGFzcyBBbHRl
cm5hdGVJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0
ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BbHRl
cm5hdGVJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIGV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGlu
dCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5KSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcgY2FsbElkLCBp
bnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBleGVjdXRlU1FMU3luYyhsb25nIGNhbGxJZCwgaW50IGluX2RhdGFiYXNlSWQsIGNv
bnN0IFN0cmluZyYgaW5fcXVlcnkpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTEFz
eW5jKGxvbmcgY2FsbElkLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVy
eSkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2VuZGlmIC8vICFkZWZpbmVk
KEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQorIyMjIEVuZCBGaWxlOiBJ
bnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorCiAjIyMgQmVnaW4gRmlsZTog
SW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC04NCw2ICsxNTAsMTAgQEAgbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCisjaWYgRU5B
QkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCitjbGFzcyBBbHRlcm5hdGVJbnNw
ZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCiBjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6CiAgICAgLy8gTmFtZWQgYWZ0ZXIgcGFyYW1l
dGVyICdzY3JlZW5Db2xvcicgd2hpbGUgZ2VuZXJhdGluZyBjb21tYW5kL2V2ZW50IGV4ZWN1dGVT
UUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMuCkBAIC0xMjksNiArMTk5LDEyIEBAIHByaXZhdGU6
CiBwcml2YXRlOgogICAgIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosIEluc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyKik7CiAgICAgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElT
UEFUQ0hFUlMpCitwdWJsaWM6CisgICAgdm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVy
bmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIqIGFsdGVybmF0ZURpc3BhdGNo
ZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJuYXRlRGlzcGF0Y2hlcjsgfQorcHJp
dmF0ZToKKyAgICBBbHRlcm5hdGVJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKiBt
X2FsdGVybmF0ZURpc3BhdGNoZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3Bl
Y3RvcgpAQCAtMTc4LDYgKzI1NCwxMCBAQCBwcml2YXRlOgogI2luY2x1ZGUgPGluc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyNpbmNsdWRlICJJbnNwZWN0
b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAogSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5J
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQpAQCAtMjI0LDYg
KzMwNCwxMyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1
dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZwogICAgICAgICByZXR1cm47CiAgICAg
fQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisgICAgaWYg
KG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeworICAgICAgICBtX2FsdGVybmF0ZURpc3BhdGNoZXIt
PmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoY2FsbElkLCBpbl9kYXRhYmFzZUlk
LCBpbl9xdWVyeSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIEVycm9y
U3RyaW5nIGVycm9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PFN0cmluZz4+IG91dF9jb2x1bW5OYW1lczsKQEAgLTMwMCw2ICszODcsMTMgQEAgdm9pZCBJ
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMQXN5bmNPcHRpb25h
bFJldHVyblZhbHVlcyhsb24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIEVOQUJMRShJ
TlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorICAgIGlmIChtX2FsdGVybmF0ZURpc3Bh
dGNoZXIpIHsKKyAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5leGVjdXRlU1FMQXN5bmNP
cHRpb25hbFJldHVyblZhbHVlcyhjYWxsSWQsIGluX2RhdGFiYXNlSWQsIGluX3F1ZXJ5KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2s+IGNhbGxiYWNr
ID0gYWRvcHRSZWYobmV3IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
OjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrKG1fYmFja2VuZERp
c3BhdGNoZXIsY2FsbElkKSk7CkBAIC0zMjYsNiArNDIwLDEzIEBAIHZvaWQgSW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSUykKKyAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7Cisg
ICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+ZXhlY3V0ZVNRTFN5bmMoY2FsbElkLCBpbl9k
YXRhYmFzZUlkLCBpbl9xdWVyeSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwog
ICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3Vs
dCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PFN0cmluZz4+IG91dF9jb2x1bW5OYW1lczsKQEAgLTM4NCw2ICs0ODUsMTMg
QEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMQXN5
bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3AKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lm
IEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorICAgIGlmIChtX2FsdGVy
bmF0ZURpc3BhdGNoZXIpIHsKKyAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5leGVjdXRl
U1FMQXN5bmMoY2FsbElkLCBpbl9kYXRhYmFzZUlkLCBpbl9xdWVyeSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZW5kaWYKKwogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
UmVmUHRyPEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRl
U1FMQXN5bmNDYWxsYmFjaz4gY2FsbGJhY2sgPSBhZG9wdFJlZihuZXcgSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrKG1fYmFj
a2VuZERpc3BhdGNoZXIsY2FsbElkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25h
bC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9u
YWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCBiMTBjNjA3Li5lNjMy
YzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0
ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBh
cmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTEsMyArMSw2NyBAQAorIyMjIEJlZ2luIEZpbGU6IElu
c3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5
IGdlbmVyYXRlZCBmcm9tIGNvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1l
dGVycy5qc29uCisvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisKKyNp
Zm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUgSW5z
cGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKworI2lmIEVOQUJMRShJTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjaW5jbHVkZSAiSW5zcGVjdG9yUHJvdG9jb2xU
eXBlcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBBbHRlcm5hdGVJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitwdWJsaWM6CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0
Y2hlcihQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBkaXNwYXRjaGVyKSB7
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBkaXNwYXRjaGVyOyB9CisgICAgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5k
RGlzcGF0Y2hlci5nZXQoKTsgfQorcHJpdmF0ZToKKyAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Cit9OworCisKK2NsYXNzIEFsdGVybmF0
ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkFsdGVybmF0
ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+KiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5n
KiBpbl9ub3RlcywgY29uc3QgZG91YmxlKiBpbl90aW1lc3RhbXAsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGluX3ZhbHVlcywgY29uc3QgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JWYWx1ZSogaW5fcGF5bG9hZCwgY29uc3QgaW50KiBpbl9kYXRhYmFzZUlkLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBpbl9zcWxFcnJvciwgY29uc3QgU3Ry
aW5nKiBpbl9zY3JlZW5Db2xvciwgY29uc3QgU3RyaW5nKiBpbl9wcmludENvbG9yKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiBpbl9jb2x1bW5OYW1lcywg
Y29uc3QgU3RyaW5nJiBpbl9ub3RlcywgZG91YmxlIGluX3RpbWVzdGFtcCwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgaW5fdmFsdWVzLCBJbnNwZWN0b3I6Okluc3Bl
Y3RvclZhbHVlIGluX3BheWxvYWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBpbl9z
Y3JlZW5Db2xvciwgY29uc3QgU3RyaW5nJiBpbl9wcmludENvbG9yKSA9IDA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJO
QVRFX0RJU1BBVENIRVJTKQorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJzX2gpCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJh
Y2tlbmREaXNwYXRjaGVycy5oCisKICMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29t
bWFuZHMuanMKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KQEAgLTgxLDYgKzE0NSwxMCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAog
dHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSUykKK2NsYXNzIEFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXI7CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFU
Q0hFUlMpCisKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKIHB1YmxpYzoKICAgICAvLyBOYW1lZCBhZnRlciBwYXJhbWV0ZXIgJ3NjcmVlbkNvbG9yJyB3
aGlsZSBnZW5lcmF0aW5nIGNvbW1hbmQvZXZlbnQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVy
cy4KQEAgLTExMiw2ICsxODAsMTIgQEAgcHJpdmF0ZToKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKICAg
ICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9hZ2VudDsKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKK3B1YmxpYzoKKyAgICB2
b2lkIHNldEFsdGVybmF0ZURpc3BhdGNoZXIoQWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNo
ZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9Citwcml2YXRlOgorICAgIEFsdGVybmF0ZUluc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcjsKKyNl
bmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCkBAIC0xNjEsNiArMjM1LDEwIEBA
IHByaXZhdGU6CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRF
X0RJU1BBVENIRVJTKQorI2luY2x1ZGUgIkluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRj
aGVycy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6fkluc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyKCkgeyB9CkBAIC0yMTksNiArMjk3LDEzIEBAIHZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhs
b25nIGNhbGxJCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
X0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7
CisgICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1l
dGVycyhjYWxsSWQsIGNvbHVtbk5hbWVzX3ZhbHVlRm91bmQgPyAmaW5fY29sdW1uTmFtZXMgOiBu
dWxscHRyLCBub3Rlc192YWx1ZUZvdW5kID8gJmluX25vdGVzIDogbnVsbHB0ciwgdGltZXN0YW1w
X3ZhbHVlRm91bmQgPyAmaW5fdGltZXN0YW1wIDogbnVsbHB0ciwgdmFsdWVzX3ZhbHVlRm91bmQg
PyAmaW5fdmFsdWVzIDogbnVsbHB0ciwgcGF5bG9hZF92YWx1ZUZvdW5kID8gJmluX3BheWxvYWQg
OiBudWxscHRyLCBkYXRhYmFzZUlkX3ZhbHVlRm91bmQgPyAmaW5fZGF0YWJhc2VJZCA6IG51bGxw
dHIsIHNxbEVycm9yX3ZhbHVlRm91bmQgPyAmaW5fc3FsRXJyb3IgOiBudWxscHRyLCBzY3JlZW5D
b2xvcl92YWx1ZUZvdW5kID8gJmluX3NjcmVlbkNvbG9yIDogbnVsbHB0ciwgcHJpbnRDb2xvcl92
YWx1ZUZvdW5kID8gJmluX3ByaW50Q29sb3IgOiBudWxscHRyKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gb3V0X2NvbHVtbk5hbWVzOwpA
QCAtMjc2LDYgKzM2MSwxMyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXI6OmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZAogICAgICAgICByZXR1
cm47CiAgICAgfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMp
CisgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeworICAgICAgICBtX2FsdGVybmF0ZURp
c3BhdGNoZXItPmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhjYWxsSWQsIGluX2NvbHVtbk5h
bWVzLCBpbl9ub3RlcywgaW5fdGltZXN0YW1wLCBpbl92YWx1ZXMsIGluX3BheWxvYWQsIGluX2Rh
dGFiYXNlSWQsIGluX3NxbEVycm9yLCBpbl9zY3JlZW5Db2xvciwgaW5fcHJpbnRDb2xvcik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIEVycm9yU3RyaW5nIGVycm9yOwog
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IG91
dF9jb2x1bW5OYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNp
emVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1y
ZXN1bHQKaW5kZXggZTA3NjFkOS4uZDIyNzE2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5
aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNv
bW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKQEAgLTEsMyArMSw3NyBAQAorIyMjIEJlZ2luIEZpbGU6
IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNh
bGx5IGdlbmVyYXRlZCBmcm9tIGRvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNv
bgorLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQorCisjaWZuZGVmIElu
c3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisjZGVmaW5lIEluc3BlY3RvckFs
dGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSUykKKworI2luY2x1ZGUgIkluc3BlY3RvclByb3RvY29sVHlwZXMuaCIK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgor
CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIgeworcHVibGljOgorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUGFz
c1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gZGlzcGF0Y2hlcikgeyBtX2JhY2tl
bmREaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjsgfQorICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNo
ZXIuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworfTsKKworCitjbGFzcyBBbHRlcm5hdGVJbnNwZWN0
b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BbHRlcm5hdGVJbnNwZWN0
b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGxvYWRS
ZXNvdXJjZTEobG9uZyBjYWxsSWQpID0gMDsKK307CitjbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BbHRlcm5hdGVJbnNwZWN0b3JO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNv
dXJjZTEobG9uZyBjYWxsSWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlMihs
b25nIGNhbGxJZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UzKGxvbmcgY2Fs
bElkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTQobG9uZyBjYWxsSWQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlNShsb25nIGNhbGxJZCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2U2KGxvbmcgY2FsbElkKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGxvYWRSZXNvdXJjZTcobG9uZyBjYWxsSWQpID0gMDsKK307CisKK30gLy8gbmFtZXNw
YWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElT
UEFUQ0hFUlMpCisKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5k
RGlzcGF0Y2hlcnNfaCkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzLmgKKwogIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5q
cwogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgpAQCAtODksNiArMTYzLDExIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0eXBlZGVm
IFN0cmluZyBFcnJvclN0cmluZzsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQorY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0
Y2hlcjsKK2NsYXNzIEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI7
CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKIGNs
YXNzIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlMShFcnJvclN0cmluZyYpID0gMDsKQEAgLTEx
OCw2ICsxOTcsMTIgQEAgcHJpdmF0ZToKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiwg
SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKICAgICBJbnNwZWN0
b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9hZ2VudDsKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKK3B1YmxpYzoKKyAgICB2b2lkIHNldEFs
dGVybmF0ZURpc3BhdGNoZXIoQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0
Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRl
cm5hdGVEaXNwYXRjaGVyOyB9Citwcml2YXRlOgorICAgIEFsdGVybmF0ZUluc3BlY3Rvck5ldHdv
cmsxQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcjsKKyNlbmRpZgogfTsK
IAogY2xhc3MgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1Ymxp
YyBJbnNwZWN0b3I6Okluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKQEAg
LTEzNSw2ICsyMjAsMTIgQEAgcHJpdmF0ZToKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yTmV0d29y
azNCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KiwgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKICAgICBJbnNw
ZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9hZ2VudDsKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKK3B1YmxpYzoKKyAgICB2b2lkIHNl
dEFsdGVybmF0ZURpc3BhdGNoZXIoQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlz
cGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBh
bHRlcm5hdGVEaXNwYXRjaGVyOyB9Citwcml2YXRlOgorICAgIEFsdGVybmF0ZUluc3BlY3Rvck5l
dHdvcmszQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcjsKKyNlbmRpZgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCkBAIC0xODQsNiArMjc1LDEwIEBAIHByaXZh
dGU6CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BB
VENIRVJTKQorI2luY2x1ZGUgIkluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5o
IgorI2VuZGlmCisKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBJbnNwZWN0b3JOZXR3b3JrMUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcjo6fkluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyKCkgeyB9CkBAIC0yMTMsNiArMzA4LDEzIEBAIHZvaWQgSW5zcGVjdG9yTmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYg
bWV0CiAKIHZvaWQgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291
cmNlMShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKIHsKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyAgICBpZiAobV9hbHRlcm5hdGVEaXNw
YXRjaGVyKSB7CisgICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+bG9hZFJlc291cmNlMShj
YWxsSWQpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBFcnJvclN0cmlu
ZyBlcnJvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpOwogICAgIG1fYWdlbnQtPmxvYWRSZXNvdXJjZTEoZXJyb3IpOwpAQCAt
MjY4LDYgKzM3MCwxMyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6
OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldAogCiB2b2lkIEluc3BlY3Rv
ck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTEobG9uZyBjYWxsSWQsIGNv
bnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVf
RElTUEFUQ0hFUlMpCisgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeworICAgICAgICBt
X2FsdGVybmF0ZURpc3BhdGNoZXItPmxvYWRSZXNvdXJjZTEoY2FsbElkKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAg
ICBtX2FnZW50LT5sb2FkUmVzb3VyY2UxKGVycm9yKTsKQEAgLTI3Nyw2ICszODYsMTMgQEAgdm9p
ZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UxKGxvbmcg
Y2FsbElkLCBjb25zdCBJbnNwZWMKIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVyOjpsb2FkUmVzb3VyY2UyKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3Qm
KQogeworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorICAgIGlm
IChtX2FsdGVybmF0ZURpc3BhdGNoZXIpIHsKKyAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVy
LT5sb2FkUmVzb3VyY2UyKGNhbGxJZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYK
KwogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJl
c3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgbV9hZ2VudC0+bG9hZFJlc291
cmNlMihlcnJvcik7CkBAIC0yODYsNiArNDAyLDEzIEBAIHZvaWQgSW5zcGVjdG9yTmV0d29yazNC
YWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMihsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVj
CiAKIHZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNl
Myhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKIHsKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRj
aGVyKSB7CisgICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+bG9hZFJlc291cmNlMyhjYWxs
SWQpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBFcnJvclN0cmluZyBl
cnJvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBJbnNwZWN0b3JPYmpl
Y3Q6OmNyZWF0ZSgpOwogICAgIG1fYWdlbnQtPmxvYWRSZXNvdXJjZTMoZXJyb3IpOwpAQCAtMjk1
LDYgKzQxOCwxMyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6Omxv
YWRSZXNvdXJjZTMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlYwogCiB2b2lkIEluc3BlY3Rvck5l
dHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTQobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlY3Rvck9iamVjdCYpCiB7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElT
UEFUQ0hFUlMpCisgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeworICAgICAgICBtX2Fs
dGVybmF0ZURpc3BhdGNoZXItPmxvYWRSZXNvdXJjZTQoY2FsbElkKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyNlbmRpZgorCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBt
X2FnZW50LT5sb2FkUmVzb3VyY2U0KGVycm9yKTsKQEAgLTMwNCw2ICs0MzQsMTMgQEAgdm9pZCBJ
bnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U0KGxvbmcgY2Fs
bElkLCBjb25zdCBJbnNwZWMKIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRj
aGVyOjpsb2FkUmVzb3VyY2U1KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQog
eworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorICAgIGlmICht
X2FsdGVybmF0ZURpc3BhdGNoZXIpIHsKKyAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5s
b2FkUmVzb3VyY2U1KGNhbGxJZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwog
ICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3Vs
dCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgbV9hZ2VudC0+bG9hZFJlc291cmNl
NShlcnJvcik7CkBAIC0zMTMsNiArNDUwLDEzIEBAIHZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNr
ZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjCiAK
IHZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNihs
b25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKIHsKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVy
KSB7CisgICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+bG9hZFJlc291cmNlNihjYWxsSWQp
OworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBFcnJvclN0cmluZyBlcnJv
cjsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpOwogICAgIG1fYWdlbnQtPmxvYWRSZXNvdXJjZTYoZXJyb3IpOwpAQCAtMzIyLDYg
KzQ2NiwxMyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRS
ZXNvdXJjZTYobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlYwogCiB2b2lkIEluc3BlY3Rvck5ldHdv
cmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTcobG9uZyBjYWxsSWQsIGNvbnN0IElu
c3BlY3Rvck9iamVjdCYpCiB7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFU
Q0hFUlMpCisgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeworICAgICAgICBtX2FsdGVy
bmF0ZURpc3BhdGNoZXItPmxvYWRSZXNvdXJjZTcoY2FsbElkKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBtX2Fn
ZW50LT5sb2FkUmVzb3VyY2U3KGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25h
bC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMu
anNvbi1yZXN1bHQKaW5kZXggY2EzOTJmZC4uODNhMGQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRo
LW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFs
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTEsMyArMSw2MiBAQAorIyMjIEJlZ2luIEZpbGU6
IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNh
bGx5IGdlbmVyYXRlZCBmcm9tIGV2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbgor
Ly8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQorCisjaWZuZGVmIEluc3Bl
Y3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisjZGVmaW5lIEluc3BlY3RvckFsdGVy
bmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFU
RV9ESVNQQVRDSEVSUykKKworI2luY2x1ZGUgIkluc3BlY3RvclByb3RvY29sVHlwZXMuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgorCitu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIgeworcHVibGljOgorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gZGlzcGF0Y2hlcjsgfQorICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIu
Z2V0KCk7IH0KK3ByaXZhdGU6CisgICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
PiBtX2JhY2tlbmREaXNwYXRjaGVyOworfTsKKworCisKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVj
dG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykK
KworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVy
c19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMu
aAorCiAjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC04
MSw2ICsxNDAsOCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdHlwZWRlZiBTdHJpbmcgRXJy
b3JTdHJpbmc7CiAKKworCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1IpCkBAIC0xMjgsNiArMTg5LDEwIEBAIHR5cGVkZWYgU3RyaW5nIEVycm9y
U3RyaW5nOwogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9E
SVNQQVRDSEVSUykKKyNpbmNsdWRlICJJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2Vu
ZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRv
bWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdAppbmRleCA4YTZhMjY1Li5mODkz
ODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1
bHQKQEAgLTEsMyArMSw2OCBAQAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJh
Y2tlbmREaXNwYXRjaGVycy5oCisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNp
dHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8g
Tk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGdl
bmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uCisvLyBieSB0aGUgc2NyaXB0
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVj
dG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisKKyNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3Bh
dGNoZXJzX2gKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQor
CisjaW5jbHVkZSAiSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0
b3IgeworCitjbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitwdWJs
aWM6CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihQYXNzUmVmUHRyPEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyPiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBkaXNw
YXRjaGVyOyB9CisgICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorcHJpdmF0
ZToKKyAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7Cit9OworCisKKyNpZiBQTEFURk9STShXRUJfQ09NTUFORFMpCitjbGFzcyBBbHRlcm5h
dGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUlu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BbHRlcm5h
dGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIGxvYWRSZXNvdXJjZShsb25nIGNhbGxJZCkgPSAwOworfTsKKyNlbmRpZiAvLyBQTEFURk9S
TShXRUJfQ09NTUFORFMpCisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNlbmRpZiAvLyAhZGVm
aW5lZChJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKKyMjIyBFbmQgRmls
ZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKKwogIyMjIEJlZ2luIEZp
bGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtODQsNiArMTQ5LDEyIEBAIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAorI2lm
IEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorI2lmIFBMQVRGT1JNKFdF
Ql9DT01NQU5EUykKK2NsYXNzIEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3Bh
dGNoZXI7CisjZW5kaWYgLy8gUExBVEZPUk0oV0VCX0NPTU1BTkRTKQorI2VuZGlmIC8vIEVOQUJM
RShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCiAjaWYgUExBVEZPUk0oV0VCX0NP
TU1BTkRTKQogY2xhc3MgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIg
ewogcHVibGljOgpAQCAtMTAzLDYgKzE3NCwxMiBAQCBwcml2YXRlOgogcHJpdmF0ZToKICAgICBJ
bnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqLCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciopOwogICAgIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBtX2Fn
ZW50OworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorcHVibGlj
OgorICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihBbHRlcm5hdGVJbnNwZWN0b3JOZXR3
b3JrMUJhY2tlbmREaXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRjaGVyKSB7IG1fYWx0ZXJuYXRl
RGlzcGF0Y2hlciA9IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0KK3ByaXZhdGU6CisgICAgQWx0ZXJu
YXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRj
aGVyOworI2VuZGlmCiB9OwogI2VuZGlmIC8vIFBMQVRGT1JNKFdFQl9DT01NQU5EUykKIApAQCAt
MTUzLDYgKzIzMCwxMCBAQCBwcml2YXRlOgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyNpbmNsdWRlICJJbnNwZWN0b3JBbHRlcm5h
dGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IAogI2lmIFBMQVRGT1JNKFdFQl9DT01NQU5EUykKQEAgLTE4NCw2ICsyNjUsMTMgQEAgdm9pZCBJ
bnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwg
Y29uc3QgU3RyaW5nJiBtZXQKIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVyOjpsb2FkUmVzb3VyY2UobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisgICAgaWYgKG1f
YWx0ZXJuYXRlRGlzcGF0Y2hlcikgeworICAgICAgICBtX2FsdGVybmF0ZURpc3BhdGNoZXItPmxv
YWRSZXNvdXJjZShjYWxsSWQpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAg
ICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQg
PSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIG1fYWdlbnQtPmxvYWRSZXNvdXJjZShl
cnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQKaW5kZXggNWQ5MGY1
Yi4uODc0ZTg2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdApAQCAt
MSwzICsxLDYyIEBACisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzLmgKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBX
YXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBETyBOT1QgRURJ
VCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gc2FtZS10eXBl
LWlkLWRpZmZlcmVudC1kb21haW4uanNvbgorLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1i
aW5kaW5ncy5weQorCisjaWZuZGVmIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVy
c19oCisjZGVmaW5lIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2luY2x1ZGUgIklu
c3BlY3RvclByb3RvY29sVHlwZXMuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3Mg
QWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworcHVibGljOgorICAgIHZvaWQg
c2V0QmFja2VuZERpc3BhdGNoZXIoUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cj4gZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjsgfQorICAg
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAgUmVmUHRy
PEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworfTsKKwor
CisKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3Rv
ckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JB
bHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorCiAjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9y
QmFja2VuZENvbW1hbmRzLmpzCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC03NSw2ICsxMzQsOCBAQCBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKKworCiB9IC8vIG5hbWVzcGFj
ZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCkBAIC0xMjIsNiArMTgz
LDEwIEBAIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogI2luY2x1ZGUgPGluc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyNpbmNsdWRlICJJbnNwZWN0
b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpz
b24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdAppbmRl
eCA4Y2VmNmE5Li44NDQ4OGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0
ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1y
ZXN1bHQKQEAgLTEsMyArMSw2MiBAQAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0
ZUJhY2tlbmREaXNwYXRjaGVycy5oCisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZl
cnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8g
RE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9t
IHNoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uCisvLyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9y
LXByb3RvY29sLWJpbmRpbmdzLnB5CisKKyNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2Vu
ZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNo
ZXJzX2gKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisj
aW5jbHVkZSAiSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworCitjbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitwdWJsaWM6
CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyPiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBkaXNwYXRj
aGVyOyB9CisgICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorcHJpdmF0ZToK
KyAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNo
ZXI7Cit9OworCisKKworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjZW5kaWYgLy8gIWRlZmlu
ZWQoSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCisjIyMgRW5kIEZpbGU6
IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisKICMjIyBCZWdpbiBGaWxl
OiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTc1LDYgKzEzNCw4IEBAIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAorCisKIH0g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKQEAg
LTEyMiw2ICsxODMsMTAgQEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAjaW5jbHVkZSA8
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorI2luY2x1
ZGUgIkluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFz
ZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXBy
aW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0CmluZGV4IDQ2MGFlZGYuLjRhZjVjMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdApAQCAt
MSwzICsxLDYyIEBACisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzLmgKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBX
YXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBETyBOT1QgRURJ
VCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNs
YXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3It
cHJvdG9jb2wtYmluZGluZ3MucHkKKworI2lmbmRlZiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5k
RGlzcGF0Y2hlcnNfaAorI2RlZmluZSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnNfaAorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNp
bmNsdWRlICJJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7
CisKK2NsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK3B1YmxpYzoK
KyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI+IGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IGRpc3BhdGNo
ZXI7IH0KKyAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIo
KSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9Citwcml2YXRlOgor
ICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hl
cjsKK307CisKKworCisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNlbmRpZiAvLyAhZGVmaW5l
ZChJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKKyMjIyBFbmQgRmlsZTog
SW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKKwogIyMjIEJlZ2luIEZpbGU6
IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNzUsNiArMTM0LDggQEAgbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCisKKwogfSAv
LyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpAQCAt
MTIyLDYgKzE4MywxMCBAQCB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKICNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisjaW5jbHVk
ZSAiSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXkt
dHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQK
aW5kZXggMTEzNzlmZS4uYTY2MGQzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXkt
dHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVz
dWx0CkBAIC0xLDMgKzEsNjIgQEAKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVC
YWNrZW5kRGlzcGF0Y2hlcnMuaAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJz
aXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIERP
IE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0
eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90
b2NvbC1iaW5kaW5ncy5weQorCisjaWZuZGVmIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVyc19oCisjZGVmaW5lIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19o
CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2luY2x1
ZGUgIkluc3BlY3RvclByb3RvY29sVHlwZXMuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKwor
Y2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworcHVibGljOgorICAg
IHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcj4gZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjsg
fQorICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAg
UmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwor
fTsKKworCisKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2VuZGlmIC8vICFkZWZpbmVkKElu
c3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQorIyMjIEVuZCBGaWxlOiBJbnNw
ZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorCiAjIyMgQmVnaW4gRmlsZTogSW5z
cGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC03OCw2ICsxMzcsOCBAQCBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKKworCiB9IC8vIG5h
bWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCkBAIC0xMjUs
NiArMTg2LDEwIEBAIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogI2luY2x1ZGUgPGluc3Bl
Y3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyNpbmNsdWRlICJJ
bnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUu
anNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQKaW5kZXgg
ODI3MTg4Ni4uODhkYzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpz
b24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdApAQCAt
MSwzICsxLDYyIEBACisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzLmgKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBX
YXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBETyBOT1QgRURJ
VCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNs
YXJhdGlvbi1lbnVtLXR5cGUuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5k
aW5ncy5weQorCisjaWZuZGVmIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19o
CisjZGVmaW5lIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2luY2x1ZGUgIkluc3Bl
Y3RvclByb3RvY29sVHlwZXMuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgQWx0
ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworcHVibGljOgorICAgIHZvaWQgc2V0
QmFja2VuZERpc3BhdGNoZXIoUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4g
ZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjsgfQorICAgIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAgUmVmUHRyPElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworfTsKKworCisK
KworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9S
X0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckFs
dGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JBbHRl
cm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorCiAjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQmFj
a2VuZENvbW1hbmRzLmpzCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCkBAIC03OSw2ICsxMzgsOCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKKworCiB9IC8vIG5hbWVzcGFjZSBJ
bnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCkBAIC0xMjYsNiArMTg3LDEw
IEBAIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyNpbmNsdWRlICJJbnNwZWN0b3JB
bHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJl
c3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CmluZGV4IDZlZTMz
MzUuLmE1NTVkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CkBAIC0x
LDMgKzEsNjIgQEAKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlz
cGF0Y2hlcnMuaAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdh
c2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBFRElU
IFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLWRlY2xh
cmF0aW9uLW9iamVjdC10eXBlLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmlu
ZGluZ3MucHkKKworI2lmbmRlZiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNf
aAorI2RlZmluZSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorCisjaWYg
RU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNpbmNsdWRlICJJbnNw
ZWN0b3JQcm90b2NvbFR5cGVzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIEFs
dGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICB2b2lkIHNl
dEJhY2tlbmREaXNwYXRjaGVyKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+
IGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7IH0KKyAgICBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9Citwcml2YXRlOgorICAgIFJlZlB0cjxJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKK307CisKKwor
CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RP
Ul9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JB
bHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQWx0
ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKKwogIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckJh
Y2tlbmRDb21tYW5kcy5qcwogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNzUsNiArMTM0LDggQEAgbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCisKKwogfSAvLyBuYW1lc3BhY2Ug
SW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtMTIyLDYgKzE4Mywx
MCBAQCB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCisjaWYgRU5B
QkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisjaW5jbHVkZSAiSW5zcGVjdG9y
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1y
ZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdAppbmRleCA3ODBh
NmFlLi5lMDllNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29u
LXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdApAQCAt
MSwzICsxLDYyIEBACisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzLmgKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBX
YXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBETyBOT1QgRURJ
VCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1yZXF1
aXJpbmctcnVudGltZS1jYXN0cy5qc29uCisvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJp
bmRpbmdzLnB5CisKKyNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJz
X2gKKyNkZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKworI2lm
IEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjaW5jbHVkZSAiSW5z
cGVjdG9yUHJvdG9jb2xUeXBlcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBB
bHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitwdWJsaWM6CisgICAgdm9pZCBz
ZXRCYWNrZW5kRGlzcGF0Y2hlcihQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
PiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBkaXNwYXRjaGVyOyB9CisgICAg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorcHJpdmF0ZToKKyAgICBSZWZQdHI8
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Cit9OworCisK
KworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9y
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvckFs
dGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisKICMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JC
YWNrZW5kQ29tbWFuZHMuanMKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTc5LDYgKzEzOCw4IEBAIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAorCisKIH0gLy8gbmFtZXNwYWNl
IEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKQEAgLTEyNiw2ICsxODcs
MTAgQEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIEVO
QUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorI2luY2x1ZGUgIkluc3BlY3Rv
ckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggNzBmN2JlOC4uNDM1ODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxNC0xMC0yMCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFByb3ZpZGUgYSB3YXkgdG8gaGF2ZSBhbHRlcm5hdGUgaW5zcGVj
dG9yIGFnZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTM3OTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3dGYvRmVhdHVyZURlZmluZXMuaDoKKwogMjAxNC0xMC0yMCAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9y
IEFjY2Vzc2liaWxpdHkgb2JqZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVy
ZURlZmluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggZTg3Mzhm
Mi4uZjEzMDUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBAIC04Miw2ICs4MiwxMCBAQAog
I2RlZmluZSBFTkFCTEVfSUNPTkRBVEFCQVNFIDAKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5B
QkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisjZGVmaW5lIEVOQUJMRV9JTlNQ
RUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTIDEKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5B
QkxFX0xFVFRFUlBSRVNTKQogI2RlZmluZSBFTkFCTEVfTEVUVEVSUFJFU1MgMQogI2VuZGlmCkBA
IC0xOTIsNiArMTk2LDEwIEBAIHRoZSBwdWJsaWMgaU9TIFNESy4gV2Ugd2lsbCBhbHNvIG5lZWQg
dG8gdXBkYXRlIHRoZSBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBmaWxlCiAjaWYgIWRlZmluZWQo
RU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpCiAjZGVmaW5lIEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9S
IDEKICNlbmRpZgorCisjaWYgIWRlZmluZWQoRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElT
UEFUQ0hFUlMpCisjZGVmaW5lIEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJT
IDEKKyNlbmRpZgogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfU01PT1RIX1NDUk9MTElO
RykKQEAgLTQ5NSw2ICs1MDMsMTAgQEAgdGhlIHB1YmxpYyBpT1MgU0RLLiBXZSB3aWxsIGFsc28g
bmVlZCB0byB1cGRhdGUgdGhlIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGZpbGUKICNkZWZpbmUg
RU5BQkxFX0lOU1BFQ1RPUiAxCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9JTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorI2RlZmluZSBFTkFCTEVfSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSUyAwCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9KQVZBU0NS
SVBUX0kxOE5fQVBJKQogI2RlZmluZSBFTkFCTEVfSkFWQVNDUklQVF9JMThOX0FQSSAwCiAjZW5k
aWYKQEAgLTc2Myw2ICs3NzUsMTAgQEAgdGhlIHB1YmxpYyBpT1MgU0RLLiBXZSB3aWxsIGFsc28g
bmVlZCB0byB1cGRhdGUgdGhlIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGZpbGUKICNlcnJvciAi
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpIHJlcXVpcmVzIEVOQUJMRShJTlNQRUNUT1IpIgogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykgJiYgIUVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQorI2Vycm9yICJFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFU
RV9ESVNQQVRDSEVSUykgcmVxdWlyZXMgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpIgorI2VuZGlm
CisKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykgJiYgIUVOQUJMRShUT1VDSF9FVkVOVFMp
CiAjZXJyb3IgIkVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKSByZXF1aXJlcyBFTkFCTEUoVE9VQ0hf
RVZFTlRTKSIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQzNDMxNjEuLmEyMzA1YjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNC0xMC0yMCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFByb3ZpZGUgYSB3YXkgdG8g
aGF2ZSBhbHRlcm5hdGUgaW5zcGVjdG9yIGFnZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3OTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZzoKKwogMjAxNC0xMC0yMCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFVzZSBzdGQ6OnVuaXF1ZV9wdHI8PnxtYWtlX3VuaXF1ZTw+IGlu
IFBsdWdpblZpZXc6OnNjaGVkdWxlUmVxdWVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3Jl
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGJhOWNmZWYuLmZh
ZmY5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xMjEsNiArMTIxLDE1IEBAIEVOQUJMRV9JTlBVVF9UWVBF
X1dFRUsgPSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUtfJChQTEFURk9STV9OQU1FKSk7CiBFTkFC
TEVfSU5QVVRfVFlQRV9XRUVLX2lwaG9uZW9zID0gRU5BQkxFX0lOUFVUX1RZUEVfV0VFSzsKIEVO
QUJMRV9JTlBVVF9UWVBFX1dFRUtfaXBob25lc2ltdWxhdG9yID0gJChFTkFCTEVfSU5QVVRfVFlQ
RV9XRUVLX2lwaG9uZW9zKTsKIEVOQUJMRV9JTlNQRUNUT1IgPSBFTkFCTEVfSU5TUEVDVE9SOwor
CitFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUyA9ICQoRU5BQkxFX0lOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfJChQTEFURk9STV9OQU1FKSk7CitFTkFCTEVfSU5T
UEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19pcGhvbmVvcyA9IEVOQUJMRV9JTlNQRUNUT1Jf
QUxURVJOQVRFX0RJU1BBVENIRVJTOworRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFU
Q0hFUlNfaXBob25lc2ltdWxhdG9yID0gJChFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQ
QVRDSEVSU19pcGhvbmVvcyk7CitFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVS
U19tYWNvc3ggPSAkKEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX21hY29z
eF8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSkKK0VOQUJMRV9JTlNQRUNUT1JfQUxU
RVJOQVRFX0RJU1BBVENIRVJTX21hY29zeF8xMDgwID0gOworRU5BQkxFX0lOU1BFQ1RPUl9BTFRF
Uk5BVEVfRElTUEFUQ0hFUlNfbWFjb3N4XzEwOTAgPSA7CitFTkFCTEVfSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSU19tYWNvc3hfMTAxMDAwID0gRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5B
VEVfRElTUEFUQ0hFUlM7CisKIEVOQUJMRV9JT1NfQUlSUExBWSA9ICQoRU5BQkxFX0lPU19BSVJQ
TEFZXyQoUExBVEZPUk1fTkFNRSkpOwogRU5BQkxFX0lPU19BSVJQTEFZX2lwaG9uZW9zID0gRU5B
QkxFX0lPU19BSVJQTEFZOwogRU5BQkxFX0lPU19BSVJQTEFZX2lwaG9uZXNpbXVsYXRvciA9ICQo
RU5BQkxFX0lPU19BSVJQTEFZX2lwaG9uZW9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBlODUxYTA4
Li5mYTRjMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMTAtMjAg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBQcm92aWRlIGEgd2F5IHRvIGhhdmUgYWx0ZXJuYXRlIGluc3BlY3RvciBhZ2VudHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzkwMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTQtMTAtMjAgIEFuZHkgRXN0
ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgaU9TIGJ1aWxkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwppbmRleCBiYTljZmVmLi5mYWZmOWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAt
MTIxLDYgKzEyMSwxNSBAQCBFTkFCTEVfSU5QVVRfVFlQRV9XRUVLID0gJChFTkFCTEVfSU5QVVRf
VFlQRV9XRUVLXyQoUExBVEZPUk1fTkFNRSkpOwogRU5BQkxFX0lOUFVUX1RZUEVfV0VFS19pcGhv
bmVvcyA9IEVOQUJMRV9JTlBVVF9UWVBFX1dFRUs7CiBFTkFCTEVfSU5QVVRfVFlQRV9XRUVLX2lw
aG9uZXNpbXVsYXRvciA9ICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFS19pcGhvbmVvcyk7CiBFTkFC
TEVfSU5TUEVDVE9SID0gRU5BQkxFX0lOU1BFQ1RPUjsKKworRU5BQkxFX0lOU1BFQ1RPUl9BTFRF
Uk5BVEVfRElTUEFUQ0hFUlMgPSAkKEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENI
RVJTXyQoUExBVEZPUk1fTkFNRSkpOworRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFU
Q0hFUlNfaXBob25lb3MgPSBFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUzsK
K0VOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX2lwaG9uZXNpbXVsYXRvciA9
ICQoRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfaXBob25lb3MpOworRU5B
QkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfbWFjb3N4ID0gJChFTkFCTEVfSU5T
UEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19tYWNvc3hfJChUQVJHRVRfTUFDX09TX1hfVkVS
U0lPTl9NQUpPUikpCitFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19tYWNv
c3hfMTA4MCA9IDsKK0VOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX21hY29z
eF8xMDkwID0gOworRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfbWFjb3N4
XzEwMTAwMCA9IEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTOworCiBFTkFC
TEVfSU9TX0FJUlBMQVkgPSAkKEVOQUJMRV9JT1NfQUlSUExBWV8kKFBMQVRGT1JNX05BTUUpKTsK
IEVOQUJMRV9JT1NfQUlSUExBWV9pcGhvbmVvcyA9IEVOQUJMRV9JT1NfQUlSUExBWTsKIEVOQUJM
RV9JT1NfQUlSUExBWV9pcGhvbmVzaW11bGF0b3IgPSAkKEVOQUJMRV9JT1NfQUlSUExBWV9pcGhv
bmVvcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDU4ZDViMy4uMTQxMDliYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDE0LTEwLTIwICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdmlkZSBhIHdheSB0byBoYXZlIGFsdGVy
bmF0ZSBpbnNwZWN0b3IgYWdlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzc5MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgor
CiAyMDE0LTEwLTIwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgc3VwcG9ydCBmb3IgYWN0aW9uIG1lbnVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQyL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGJhOWNmZWYuLmZhZmY5
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCkBAIC0xMjEsNiArMTIxLDE1IEBAIEVOQUJMRV9JTlBVVF9UWVBFX1dF
RUsgPSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUtfJChQTEFURk9STV9OQU1FKSk7CiBFTkFCTEVf
SU5QVVRfVFlQRV9XRUVLX2lwaG9uZW9zID0gRU5BQkxFX0lOUFVUX1RZUEVfV0VFSzsKIEVOQUJM
RV9JTlBVVF9UWVBFX1dFRUtfaXBob25lc2ltdWxhdG9yID0gJChFTkFCTEVfSU5QVVRfVFlQRV9X
RUVLX2lwaG9uZW9zKTsKIEVOQUJMRV9JTlNQRUNUT1IgPSBFTkFCTEVfSU5TUEVDVE9SOworCitF
TkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUyA9ICQoRU5BQkxFX0lOU1BFQ1RP
Ul9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfJChQTEFURk9STV9OQU1FKSk7CitFTkFCTEVfSU5TUEVD
VE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19pcGhvbmVvcyA9IEVOQUJMRV9JTlNQRUNUT1JfQUxU
RVJOQVRFX0RJU1BBVENIRVJTOworRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hF
UlNfaXBob25lc2ltdWxhdG9yID0gJChFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRD
SEVSU19pcGhvbmVvcyk7CitFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19t
YWNvc3ggPSAkKEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX21hY29zeF8k
KFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSkKK0VOQUJMRV9JTlNQRUNUT1JfQUxURVJO
QVRFX0RJU1BBVENIRVJTX21hY29zeF8xMDgwID0gOworRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5B
VEVfRElTUEFUQ0hFUlNfbWFjb3N4XzEwOTAgPSA7CitFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFU
RV9ESVNQQVRDSEVSU19tYWNvc3hfMTAxMDAwID0gRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVf
RElTUEFUQ0hFUlM7CisKIEVOQUJMRV9JT1NfQUlSUExBWSA9ICQoRU5BQkxFX0lPU19BSVJQTEFZ
XyQoUExBVEZPUk1fTkFNRSkpOwogRU5BQkxFX0lPU19BSVJQTEFZX2lwaG9uZW9zID0gRU5BQkxF
X0lPU19BSVJQTEFZOwogRU5BQkxFX0lPU19BSVJQTEFZX2lwaG9uZXNpbXVsYXRvciA9ICQoRU5B
QkxFX0lPU19BSVJQTEFZX2lwaG9uZW9zKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240215</attachid>
            <date>2014-10-21 12:06:01 -0700</date>
            <delta_ts>2014-10-21 12:44:49 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>another.patch</filename>
            <type>text/plain</type>
            <size>113096</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCAwMmUyYjVh
Li45ZDJiMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4
dFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3Bw
CkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQ
QVRDSEVSUykKKyNpbmNsdWRlICJKU0NvbnRleHRSZWZJbnNwZWN0b3JTdXBwb3J0LmgiCisjZW5k
aWYKKwogI2lmIE9TKERBUldJTikKICNpbmNsdWRlIDxtYWNoLW8vZHlsZC5oPgogCkBAIC00MTAs
NCArNDE0LDE5IEBAIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0RGVidWdnZXJSdW5Mb29wKEpTR2xv
YmFsQ29udGV4dFJlZiBjdHgsIENGUnVuTG9vcFJlZiBydW5MCiAgICAgVU5VU0VEX1BBUkFNKHJ1
bkxvb3ApOwogI2VuZGlmCiB9CisjZW5kaWYgLy8gVVNFKENGKQorCisjaWYgRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCitJbnNwZWN0b3I6OkF1Z21lbnRhYmxlSW5zcGVj
dG9yQ29udHJvbGxlciogSlNHbG9iYWxDb250ZXh0R2V0QXVnbWVudGFibGVJbnNwZWN0b3JDb250
cm9sbGVyKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9j
ayhleGVjKTsKKworICAgIHJldHVybiAmZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCk7Cit9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmSW5zcGVjdG9yU3VwcG9ydC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZJbnNwZWN0b3JTdXBwb3J0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA5ZDgyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmSW5zcGVjdG9yU3VwcG9ydC5oCkBAIC0w
LDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEpTQ29udGV4dFJlZkluc3BlY3RvclN1cHBvcnRfaAorI2RlZmluZSBKU0NvbnRl
eHRSZWZJbnNwZWN0b3JTdXBwb3J0X2gKKworI2lmbmRlZiBfX2NwbHVzcGx1cworI2Vycm9yIFJl
cXVpcmVzIEMrKyBTdXBwb3J0LgorI2VuZGlmCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NvbnRleHRSZWZQcml2YXRlLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgQXVn
bWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyOworfQorCitleHRlcm4gIkMiIHsKK0pTX0VYUE9S
VCBJbnNwZWN0b3I6OkF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlciogSlNHbG9iYWxDb250
ZXh0R2V0QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyKEpTR2xvYmFsQ29udGV4dFJlZik7
Cit9CisKKyNlbmRpZiAvLyBKU0NvbnRleHRSZWZJbnNwZWN0b3JTdXBwb3J0X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCmluZGV4IDUxNGU2YTkuLmI1ZTRiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDg0IEBACiAyMDE0LTEwLTIwICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdmlkZSBhIHdheSB0
byBoYXZlIGFsdGVybmF0ZSBpbnNwZWN0b3IgYWdlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc5MDEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRlIGEgd2F5IHRvIHVzZSBhbHRlcm5hdGUg
aW5zcGVjdG9yIGFnZW50cyBkZWJ1Z2dpbmcgYSBKU0NvbnRleHQuCisgICAgICAgIEV4cG9zZSBh
IHZlcnkgc2xpbSBwcml2YXRlIEFQSSB0aGF0IGEgY2xpZW50IGNvdWxkIHVzZSB0byBrbm93IHdo
ZW4KKyAgICAgICAgYW4gaW5zcGVjdG9yIGhhcyBjb25uZWN0ZWQvZGlzY29ubmVjdGVkLCBhbmQg
YSB3YXkgdG8gcmVnaXN0ZXIgaXRzCisgICAgICAgIGF1Z21lbnRhdGl2ZSBhZ2VudHMuCisKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBOZXcg
ZmVhdHVyZSBndWFyZC4gTmV3IGZpbGVzLgorCisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5j
cHA6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRHZXRBdWdtZW50YWJsZUluc3BlY3RvckNvbnRy
b2xsZXIpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWZJbnNwZWN0b3JTdXBwb3J0Lmg6IEFk
ZGVkLgorICAgICAgICBBY2Nlc3MgdG8gdGhlIHByaXZhdGUgaW50ZXJmYWNlIGZyb20gYSBKU0Nv
bnRleHQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9u
dGVuZCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL2F1Z21lbnRh
YmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKElu
c3BlY3Rvcjo6QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyOjp+QXVnbWVudGFibGVJbnNw
ZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QXVnbWVudGFibGVJbnNwZWN0
b3JDb250cm9sbGVyOjpjb25uZWN0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9hdWdtZW50YWJs
ZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAg
IChJbnNwZWN0b3I6OkF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudDo6fkF1Z21l
bnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2F1
Z21lbnRhYmxlL0luc3BlY3RvckF1Z21lbnRpbmdBZ2VudC5oOiBBZGRlZC4KKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yQXVnbWVudGluZ0FnZW50OjpJbnNwZWN0b3JBdWdtZW50aW5nQWdl
bnQpOgorICAgICAgICBQcm92aWRlIHRoZSBwcml2YXRlIEFQSXMgYSBjbGllbnQgY291bGQgdXNl
IHRvIGFkZCBhbHRlcm5hdGUgYWdlbnRzLgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9fX2luaXRfXy5weToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0
ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHk6CisgICAgICAgIChnZW5lcmF0ZV9mcm9t
X3NwZWNpZmljYXRpb24pOgorICAgICAgICBOZXcgaW5jbHVkZXMsIGFuZCB1c2UgdGhlIG5ldyBn
ZW5lcmF0b3IuCisgICAgICAgIAorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHk6IEFkZGVkLgor
ICAgICAgICAoQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IpOgorICAg
ICAgICAoQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IuX19pbml0X18p
OgorICAgICAgICAoQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3Iub3V0
cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgKEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVySGVhZGVy
R2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgIChBbHRlcm5hdGVCYWNrZW5kRGlz
cGF0Y2hlckhlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfaGFuZGxlcl9kZWNsYXJhdGlvbnNfZm9y
X2RvbWFpbik6CisgICAgICAgIChBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdlbmVy
YXRvci5fZ2VuZXJhdGVfaGFuZGxlcl9kZWNsYXJhdGlvbl9mb3JfY29tbWFuZCk6CisgICAgICAg
IEdlbmVyYXRlIHRoZSBhYnN0cmFjdCBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciBpbnRlcmZhY2VzLgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5OgorICAgICAgICAoQmFja2VuZERpc3Bh
dGNoZXJIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgKEJhY2tlbmRE
aXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yLl9nZW5lcmF0ZV9hbHRlcm5hdGVfaGFuZGxlcl9mb3J3
YXJkX2RlY2xhcmF0aW9uc19mb3JfZG9tYWlucyk6CisgICAgICAgIChCYWNrZW5kRGlzcGF0Y2hl
ckhlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfYWx0ZXJuYXRlX2hhbmRsZXJfZm9yd2FyZF9kZWNs
YXJhdGlvbnNfZm9yX2RvbWFpbnMuQWx0ZXJuYXRlSW5zcGVjdG9yKToKKyAgICAgICAgRm9yd2Fy
ZCBkZWNsYXJlIGFsdGVybmF0ZSBkaXNwYXRjaGVycywgYW5kIGFsbG93IHNldHRpbmcgYW4gYWx0
ZXJuYXRlIGRpc3BhdGNoZXIgb24gYSBkb21haW4gZGlzcGF0Y2hlci4KKworICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxl
bWVudGF0aW9uLnB5OgorICAgICAgICAoQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdl
bmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAoQmFja2VuZERpc3BhdGNoZXJJbXBs
ZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbl9m
b3JfY29tbWFuZCk6CisgICAgICAgIENoZWNrIGZvciBhbmQgZGlzcGF0Y2ggb24gYW4gQWx0ZXJu
YXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgaWYgdGhlcmUgaXMgb25lIGZvciB0aGlzIGRv
bWFpbi4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yX3Rl
bXBsYXRlcy5weToKKyAgICAgICAgKEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KToKKyAgICAgICAgKEFsdGVybmF0ZUluc3BlY3Rvcik6CisgICAgICAgIFRlbXBsYXRlIGJvaWxl
cnBsYXRlIGZvciBwcmVsdWRlIGFuZCBwb3N0bHVkZS4KKworICAgICAgICAqIGluc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24t
cmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1h
bmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdDoKKyAg
ICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFy
eWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1y
ZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJh
dGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9t
YWluLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFz
ZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0
OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFy
YXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQ6
CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJp
bmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdDoKKyAgICAgICAgUmViYXNlbGluZSB0ZXN0cy4K
KworMjAxNC0xMC0yMCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCiAg
ICAgICAgIFVucmV2aWV3ZWQgYWRkIGJhY2sgY29weXJpZ2h0IGxpbmUgdGhhdCB3YXMgYWNjaWRl
bnRhbGx5IHJlbW92ZWQuCiAKICAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRvcl90ZW1wbGF0ZXMucHk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggYmE5Y2Zl
Zi4uZmFmZjliMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMTIxLDYgKzEyMSwxNSBA
QCBFTkFCTEVfSU5QVVRfVFlQRV9XRUVLID0gJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLXyQoUExB
VEZPUk1fTkFNRSkpOwogRU5BQkxFX0lOUFVUX1RZUEVfV0VFS19pcGhvbmVvcyA9IEVOQUJMRV9J
TlBVVF9UWVBFX1dFRUs7CiBFTkFCTEVfSU5QVVRfVFlQRV9XRUVLX2lwaG9uZXNpbXVsYXRvciA9
ICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFS19pcGhvbmVvcyk7CiBFTkFCTEVfSU5TUEVDVE9SID0g
RU5BQkxFX0lOU1BFQ1RPUjsKKworRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hF
UlMgPSAkKEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTXyQoUExBVEZPUk1f
TkFNRSkpOworRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfaXBob25lb3Mg
PSBFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUzsKK0VOQUJMRV9JTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX2lwaG9uZXNpbXVsYXRvciA9ICQoRU5BQkxFX0lOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfaXBob25lb3MpOworRU5BQkxFX0lOU1BFQ1RPUl9B
TFRFUk5BVEVfRElTUEFUQ0hFUlNfbWFjb3N4ID0gJChFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFU
RV9ESVNQQVRDSEVSU19tYWNvc3hfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpCitF
TkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19tYWNvc3hfMTA4MCA9IDsKK0VO
QUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX21hY29zeF8xMDkwID0gOworRU5B
QkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfbWFjb3N4XzEwMTAwMCA9IEVOQUJM
RV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTOworCiBFTkFCTEVfSU9TX0FJUlBMQVkg
PSAkKEVOQUJMRV9JT1NfQUlSUExBWV8kKFBMQVRGT1JNX05BTUUpKTsKIEVOQUJMRV9JT1NfQUlS
UExBWV9pcGhvbmVvcyA9IEVOQUJMRV9JT1NfQUlSUExBWTsKIEVOQUJMRV9JT1NfQUlSUExBWV9p
cGhvbmVzaW11bGF0b3IgPSAkKEVOQUJMRV9JT1NfQUlSUExBWV9pcGhvbmVvcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJkOWJhNTcuLjYzY2E5OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMTg1LDYgKzExODUsMTMgQEAKIAkJQTVDRUVFMTQxODdGM0JB
RDAwRTU1Qzk5IC8qIEluc3BlY3RvckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1Q0VFRTEyMTg3RjNCQUQwMEU1NUM5OSAvKiBJbnNwZWN0
b3JBZ2VudC5jcHAgKi87IH07CiAJCUE1RDBBMUJCMTg2MjMwMUIwMEM3QjQ5NiAvKiBJbnNwZWN0
b3JFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTVEMEExQkExODYyMzAxQjAwQzdCNDk2IC8qIEluc3BlY3RvckVudmlyb25tZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTVEMkU2
NjUxOTVFMTc0MDAwQTUxOEU3IC8qIEpTQ29udGV4dFJlZkludGVybmFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUQyRTY2NDE5NUUxNzM4MDBBNTE4
RTcgLyogSlNDb250ZXh0UmVmSW50ZXJuYWwuaCAqLzsgfTsKKwkJQTVFQTcwRTcxOUY1QjEwMTAw
OThGNUVDIC8qIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVFQTcwRTQxOUY1QjEwMTAwOThGNUVD
IC8qIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1RUE3MEU4MTlGNUIxMDEwMDk4RjVFQyAv
KiBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RUE3MEU1MTlGNUIxMDEwMDk4RjVFQyAv
KiBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNUVBNzBFOTE5RjVCMTAxMDA5OEY1
RUMgLyogSW5zcGVjdG9yQXVnbWVudGluZ0FnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUVBNzBFNjE5RjVCMTAxMDA5OEY1RUMgLyogSW5zcGVj
dG9yQXVnbWVudGluZ0FnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQTVFQTcwRUIxOUY1QjNENTAwOThGNUVDIC8qIGdlbmVyYXRlX2FsdGVy
bmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5IGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUVBNzBFQTE5RjVCM0Q1MDA5OEY1RUMgLyogZ2Vu
ZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgKi87IH07CisJCUE1
RUE3MEVDMTlGNUIzRUEwMDk4RjVFQyAvKiBnZW5lcmF0ZV9hbHRlcm5hdGVfYmFja2VuZF9kaXNw
YXRjaGVyX2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1RUE3MEVBMTlGNUIzRDUwMDk4RjVFQyAvKiBnZW5lcmF0ZV9hbHRlcm5hdGVfYmFj
a2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlBNUVBNzBFRTE5RjVCNUM0MDA5OEY1RUMgLyogSlNDb250ZXh0
UmVmSW5zcGVjdG9yU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTVFQTcwRUQxOUY1QjVDNDAwOThGNUVDIC8qIEpTQ29udGV4dFJlZkluc3Bl
Y3RvclN1cHBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlBNUVBNzEwRTE5RjZERjgxMDA5OEY1RUMgLyogSW5zcGVjdG9yQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNUVBNzEwRDE5RjZERjgxMDA5OEY1RUMgLyogSW5zcGVjdG9yQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTVGRDAwNjcxODlBRkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUZEMDA2
NTE4OUFGRTlDMDA2MzMyMzEgLyogU2NyaXB0QXJndW1lbnRzLmNwcCAqLzsgfTsKIAkJQTVGRDAw
NjgxODlBRkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVGRDAwNjYxODlBRkU5QzAwNjMzMjMxIC8q
IFNjcmlwdEFyZ3VtZW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUE1RkQwMDZEMTg5QjAwQUEwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVGRDAw
NjkxODlCMDBBOTAwNjMzMjMxIC8qIFNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07CkBAIC0yODU0
LDYgKzI4NjEsMTIgQEAKIAkJQTVDRUVFMTMxODdGM0JBRDAwRTU1Qzk5IC8qIEluc3BlY3RvckFn
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckFnZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1RDBBMUJBMTg2MjMwMUIwMEM3QjQ5NiAv
KiBJbnNwZWN0b3JFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnNwZWN0b3JFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NUQyRTY2NDE5NUUxNzM4MDBBNTE4RTcgLyogSlNDb250ZXh0UmVmSW50ZXJuYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNDb250ZXh0UmVmSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTVFQTcwRTQxOUY1QjEwMTAwOThGNUVDIC8qIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWdtZW50YWJsZUlu
c3BlY3RvckNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVFQTcw
RTUxOUY1QjEwMTAwOThGNUVDIC8qIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWdtZW50YWJsZUluc3BlY3Rv
ckNvbnRyb2xsZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVFQTcw
RTYxOUY1QjEwMTAwOThGNUVDIC8qIEluc3BlY3RvckF1Z21lbnRpbmdBZ2VudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JBdWdtZW50aW5nQWdlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVFQTcwRUExOUY1QjNENTAwOThGNUVDIC8qIGdl
bmVyYXRlX2FsdGVybmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlz
cGF0Y2hlcl9oZWFkZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1RUE3MEVE
MTlGNUI1QzQwMDk4RjVFQyAvKiBKU0NvbnRleHRSZWZJbnNwZWN0b3JTdXBwb3J0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ29udGV4dFJlZkluc3BlY3RvclN1cHBvcnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVFQTcxMEQxOUY2REY4MTAwOThGNUVD
IC8qIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVGRDAwNjUxODlBRkU5QzAwNjMzMjMx
IC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTY3JpcHRBcmd1bWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NUZEMDA2NjE4OUFGRTlDMDA2MzMyMzEgLyogU2NyaXB0QXJndW1lbnRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEFyZ3VtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNUZEMDA2OTE4OUIwMEE5MDA2MzMyMzEgLyogU2NyaXB0Q2FsbEZyYW1l
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdENhbGxGcmFt
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zOTA0LDYgKzM5MTcsNyBAQAog
CQkJCTg2RTNDNjA5MTY3QkFCODcwMDZENzYwQSAvKiBKU0NvbnRleHRJbnRlcm5hbC5oICovLAog
CQkJCTE0QkQ1QTI5MEEzRTkxRjYwMEJBRjU5QyAvKiBKU0NvbnRleHRSZWYuY3BwICovLAogCQkJ
CTE0QkQ1QTJBMEEzRTkxRjYwMEJBRjU5QyAvKiBKU0NvbnRleHRSZWYuaCAqLywKKwkJCQlBNUVB
NzBFRDE5RjVCNUM0MDA5OEY1RUMgLyogSlNDb250ZXh0UmVmSW5zcGVjdG9yU3VwcG9ydC5oICov
LAogCQkJCUE1RDJFNjY0MTk1RTE3MzgwMEE1MThFNyAvKiBKU0NvbnRleHRSZWZJbnRlcm5hbC5o
ICovLAogCQkJCTE0OENEMUQ3MTA4Q0Y5MDIwMDgxNjNDNiAvKiBKU0NvbnRleHRSZWZQcml2YXRl
LmggKi8sCiAJCQkJQTcyMDI4QjQxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGls
cy5jcHAgKi8sCkBAIC00MDExLDYgKzQwMjUsNyBAQAogCQkJCUJDRDIwM0U3MEUxNzE4RjQwMDJD
N0U4MiAvKiBEYXRlUHJvdG90eXBlLmx1dC5oICovLAogCQkJCTY1MTRGMjE4MThCM0UxNjcwMDk4
RkY4QiAvKiBJbml0Qnl0ZWNvZGVzLmFzbSAqLywKIAkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1
QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLywKKwkJCQlBNUVBNzEwRDE5RjZERjgxMDA5
OEY1RUMgLyogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmggKi8sCiAJCQkJ
QTUzMjQzOTYxODU2QTQ3NTAwMkVENjkyIC8qIEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyAq
LywKIAkJCQlBNTMyNDM4MTE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJzLmNwcCAqLywKIAkJCQlBNTMyNDM4MjE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXJzLmggKi8sCkBAIC01MTQzLDYgKzUxNTgsNyBAQAogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBNTEzRTVDQzE4NUZCOTkyMDA3RTk1QUQg
LyogYWdlbnRzICovLAorCQkJCUE1RUE3MEUzMTlGNUIwRTIwMDk4RjVFQyAvKiBhdWdtZW50YWJs
ZSAqLywKIAkJCQlBNTMyNDM4RDE4NTY5NkNBMDAyRUQ2OTIgLyogcHJvdG9jb2wgKi8sCiAJCQkJ
QTVCQTE1RTAxODIzNDA5RDAwQTgyRTY5IC8qIHJlbW90ZSAqLywKIAkJCQlBNTMyNDM4RTE4NTY5
NkNFMDAyRUQ2OTIgLyogc2NyaXB0cyAqLywKQEAgLTUyMjMsNiArNTIzOSwxNiBAQAogCQkJcGF0
aCA9IHJlbW90ZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUE1RUE3MEUz
MTlGNUIwRTIwMDk4RjVFQyAvKiBhdWdtZW50YWJsZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTVFQTcwRTQxOUY1QjEwMTAwOThGNUVDIC8qIEF1Z21l
bnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oICovLAorCQkJCUE1RUE3MEU1MTlGNUIxMDEwMDk4
RjVFQyAvKiBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQuaCAqLywKKwkJCQlB
NUVBNzBFNjE5RjVCMTAxMDA5OEY1RUMgLyogSW5zcGVjdG9yQXVnbWVudGluZ0FnZW50LmggKi8s
CisJCQkpOworCQkJcGF0aCA9IGF1Z21lbnRhYmxlOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKIAkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5zICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTUyNDAsNiArNTI2Niw3IEBA
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUM0NzAzQ0MyMTkyODQ0
Q0MwMDEzRkJFQSAvKiBfX2luaXRfXy5weSAqLywKKwkJCQlBNUVBNzBFQTE5RjVCM0Q1MDA5OEY1
RUMgLyogZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgKi8s
CiAJCQkJQzQ3MDNDQzMxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX2JhY2tlbmRfY29tbWFu
ZHMucHkgKi8sCiAJCQkJQzQ3MDNDQzQxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX2JhY2tl
bmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgKi8sCiAJCQkJQzQ3MDNDQzUxOTI4NDRDQzAwMTNGQkVB
IC8qIGdlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSAqLywKQEAg
LTUyOTgsNyArNTMyNSw5IEBACiAJCQkJMEY2QjFDQjkxODYxMjQ0QzAwODQ1RDk3IC8qIEFyaXR5
Q2hlY2tNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEg
LyogQVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RDNCMkM0MTAxNTZCREUw
MDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1RUE3MTBFMTlG
NkRGODEwMDk4RjVFQyAvKiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCUM0OUZFNEFCMTlBQUM4NjEwMEY0MENFOSAvKiBnZW5lcmF0ZV9w
cm90b2NvbF90eXBlc19oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKKwkJCQlBNUVBNzBFQzE5RjVC
M0VBMDA5OEY1RUMgLyogZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFk
ZXIucHkgaW4gSGVhZGVycyAqLywKIAkJCQk2QUQyQ0I0RDE5QjkxNDAxMDAwNjU3MTkgLyogRGVi
dWdnZXJFdmFsRW5hYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzQ5RkU0QUMxOUFBQzg2MTAw
RjQwQ0U5IC8qIGdlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5IGluIEhl
YWRlcnMgKi8sCiAJCQkJNjU4RDNBNTYxOTYzODI2ODAwM0M0NUQ2IC8qIFZNRW50cnlSZWNvcmQu
aCBpbiBIZWFkZXJzICovLApAQCAtNTQyNyw2ICs1NDU2LDcgQEAKIAkJCQkwRkM3MTJERjE3Q0Q4
NzdDMDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyQTI4MjVEMDE4MzQxRjJEMDA4N0ZCQTkgLyogRGVsYXllZFJlbGVhc2VTY29wZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3Ry
YWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVFQTcwRTgxOUY1QjEwMTAwOThGNUVDIC8q
IEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTcwNEQ5MDMxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3MDREOTA0MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjAxNzcxNDNGQ0Qz
RjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICovLApAQCAtNTUzMCw2
ICs1NTYwLDcgQEAKIAkJCQkwRjRDRUQ1RjE4Q0VBN0FCMDA4MDJGRTAgLyogUG9seW1vcnBoaWNH
ZXRCeUlkTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRUUxNzE3OEU3MzAwNjkwQzdG
IC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUMx
NEVGOTBBRjAwQzcyNTMyIC8qIERGR1BoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUVBNzBF
RTE5RjVCNUM0MDA5OEY1RUMgLyogSlNDb250ZXh0UmVmSW5zcGVjdG9yU3VwcG9ydC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTc4QTk3N0IxNzk3MzhCODAwOURGNzQ0IC8qIERGR1BsYW4uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQkUwRjc1MTZDMURCMEIwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9u
SW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVFMTRFRjkwQjcwMEM3
MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC01NzMxLDYgKzU3NjIsNyBAQAogCQkJCUJDMThDNDE0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZh
U2NyaXB0Q29yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTUwRTE2RjVDRDAwQjM0NDYw
IC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDI5RDkzMDBF
RDIyRDcwMDBCODk2MTkgLyogSklULmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUVBNzBFOTE5RjVC
MTAxMDA5OEY1RUMgLyogSW5zcGVjdG9yQXVnbWVudGluZ0FnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NkNDRUZERTBGNDEzRjg5MDBGRDdGOUUgLyogSklUQ29kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYwNzc2QkYxNEZGMDAyQjAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9uRWZmb3J0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkFGN0VGRTE2NUJBOTFGMDAwQzg0NTUgLyogSklURGlzYXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTU5NzksNiArNjAxMSw3IEBACiAJCQkJMEY5RkM4
QzQxNEUxQjYwMDAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGOTgyMDYxMTZCRkUzODMwMDI0MEQwMiAvKiBQcmVjaXNlSnVtcFRhcmdldHMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRl
TmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVFQTcwRTcxOUY1QjEwMTAwOThGNUVDIC8qIEF1
Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0
NTAwRTE2RjVDRDAwQjM0NDYwIC8qIFByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk1Q0Q0
NTc3MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQ1MTBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvZmlsZU5vZGUuaCBpbiBIZWFkZXJz
ICovLApAQCAtNjM1Myw2ICs2Mzg2LDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQlDNDlGRTRBOTE5QUFDODNFMDBGNDBDRTkgLyogZ2VuZXJh
dGVfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5IGluIFJlc291cmNlcyAqLywKKwkJCQlBNUVBNzBF
QjE5RjVCM0Q1MDA5OEY1RUMgLyogZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hl
cl9oZWFkZXIucHkgaW4gUmVzb3VyY2VzICovLAogCQkJCUE1M0YxQUMwMThDOTBGOEYwMDcyRUI2
RCAvKiBmcmFtZXdvcmsuc2IgaW4gUmVzb3VyY2VzICovLAogCQkJCUM0OUZFNEFBMTlBQUM4M0Uw
MEY0MENFOSAvKiBnZW5lcmF0ZV9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCmluZGV4IDM0M2Y2NGEuLjlmNWViNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKQEAgLTYxLDYgKzYxLDkgQEAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxPYmoK
ICAgICAsIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKG51bGxwdHIpCiAgICAgLCBtX2luY2x1
ZGVOYXRpdmVDYWxsU3RhY2tXaXRoRXhjZXB0aW9ucyh0cnVlKQogICAgICwgbV9pc0F1dG9tYXRp
Y0luc3BlY3Rpb24oZmFsc2UpCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFU
Q0hFUlMpCisgICAgLCBtX2F1Z21lbnRpbmdDbGllbnQobnVsbHB0cikKKyNlbmRpZgogewogICAg
IGF1dG8gcnVudGltZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdFJ1bnRp
bWVBZ2VudD4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIG1fZ2xvYmFsT2JqZWN0KTsK
ICAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RD
b25zb2xlQWdlbnQ+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKTsKQEAgLTEwMSw2ICsx
MDQsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RG
cm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwKICAgICBtX2luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShmcm9udGVuZENo
YW5uZWwpOwogCiAgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250
ZW5kQ2hhbm5lbCwgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyAgICBpZiAobV9hdWdtZW50
aW5nQ2xpZW50KQorICAgICAgICBtX2F1Z21lbnRpbmdDbGllbnQtPmluc3BlY3RvckNvbm5lY3Rl
ZCgpOworI2VuZGlmCiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
OjpkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCkBA
IC0xMTUsNiArMTIzLDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
OjpkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlCiAgICAgbV9pbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwgPSBudWxscHRyOwogCiAgICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rp
b24gPSBmYWxzZTsKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJT
KQorICAgIGlmIChtX2F1Z21lbnRpbmdDbGllbnQpCisgICAgICAgIG1fYXVnbWVudGluZ0NsaWVu
dC0+aW5zcGVjdG9yRGlzY29ubmVjdGVkKCk7CisjZW5kaWYKIH0KIAogdm9pZCBKU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaApp
bmRleCA1ZDljZjhjLi5jMjVlNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyLmgKQEAgLTM0LDYgKzM0LDEwIEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSUykKKyNpbmNsdWRlICJBdWdtZW50YWJsZUluc3BlY3RvckNvbnRy
b2xsZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIENvbnNvbGVDbGllbnQ7
CiBjbGFzcyBFeGVjU3RhdGU7CkBAIC01Miw3ICs1NiwxMiBAQCBjbGFzcyBJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWw7CiBjbGFzcyBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ7CiBjbGFzcyBT
Y3JpcHRDYWxsU3RhY2s7CiAKLWNsYXNzIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
ciBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JFbnZpcm9ubWVudCB7CitjbGFzcyBKU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXIgZmluYWwKKyAgICA6IHB1YmxpYyBJbnNwZWN0b3JFbnZp
cm9ubWVudAorI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorICAg
ICwgcHVibGljIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlcgorI2VuZGlmCit7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKTsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTcxLDYgKzgwLDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVwb3J0QVBJRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlIGV4Y2VwdGlvbik7CiAKICAgICBKU0M6OkNvbnNvbGVDbGllbnQqIGNvbnNvbGVD
bGllbnQoKSBjb25zdDsKKyAgICBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5JiBpbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9hZ2VudHM7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBkZXZl
bG9wZXJFeHRyYXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRTY3JpcHRTdGF0ZShKU0M6OkV4ZWNTdGF0
ZSopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTgwLDYgKzkwLDE0IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FsbEluamVjdGVkU2NyaXB0RnVuY3Rpb24oSlND
OjpFeGVjU3RhdGUqKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZnJvbnRlbmRJbml0
aWFsaXplZCgpIG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElT
UEFUQ0hFUlMpCisgICAgdmlydHVhbCBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGll
bnQqIGF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fYXVnbWVudGluZ0NsaWVudDsgfSAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXVn
bWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29u
dHJvbGxlckNsaWVudCogY2xpZW50KSBvdmVycmlkZSB7IG1fYXVnbWVudGluZ0NsaWVudCA9IGNs
aWVudDsgfQorCisgICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsOyB9CisgICAgdmlydHVhbCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5JiBhZ2VudFJlZ2lzdHJ5
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9hZ2VudHM7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IHZvaWQgYXBwZW5kQVBJQmFja3RyYWNlKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKTsKIApA
QCAtOTMsNiArMTExLDEwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyPiBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwogICAgIGJvb2wgbV9pbmNs
dWRlTmF0aXZlQ2FsbFN0YWNrV2l0aEV4Y2VwdGlvbnM7CiAgICAgYm9vbCBtX2lzQXV0b21hdGlj
SW5zcGVjdGlvbjsKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJT
KQorICAgIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCogbV9hdWdtZW50aW5n
Q2xpZW50OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQXVnbWVudGFi
bGVJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZDMxNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVj
dG9yQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJv
bGxlcl9oCisjZGVmaW5lIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlcl9oCisKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudC5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KKworbmFtZXNwYWNlIElu
c3BlY3RvciB7CisKK2NsYXNzIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlciB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyKCkgeyB9CisK
KyAgICB2aXJ0dWFsIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCogYXVnbWVu
dGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQoQXVnbWVudGFibGVJ
bnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KikgPSAwOworCisgICAgdmlydHVhbCBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IEluc3BlY3RvckFnZW50UmVnaXN0cnkmIGFnZW50UmVnaXN0cnkoKSA9IDA7CisKKyAgICBib29s
IGNvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuICEhZnJvbnRlbmRDaGFubmVsKCk7IH0KK307CisK
K30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9B
TFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNlbmRpZiAvLyAhZGVmaW5lZChBdWdtZW50YWJsZUlu
c3BlY3RvckNvbnRyb2xsZXJfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYXVnbWVudGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRh
YmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmZlZjFjZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNs
aWVudC5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVu
dF9oCisjZGVmaW5lIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudF9oCisKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworbmFtZXNwYWNlIElu
c3BlY3RvciB7CisKK2NsYXNzIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xp
ZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckNvbm5lY3RlZCgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGlzY29ubmVjdGVkKCkgPSAwOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFU
RV9ESVNQQVRDSEVSUykKKworI2VuZGlmIC8vICFkZWZpbmVkKEF1Z21lbnRhYmxlSW5zcGVjdG9y
Q29udHJvbGxlckNsaWVudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hdWdtZW50YWJsZS9JbnNwZWN0b3JBdWdtZW50aW5nQWdlbnQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvSW5zcGVjdG9yQXVnbWVudGluZ0Fn
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTAyMDA4YQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUv
SW5zcGVjdG9yQXVnbWVudGluZ0FnZW50LmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5zcGVjdG9yQXVnbWVu
dGluZ0FnZW50X2gKKyNkZWZpbmUgSW5zcGVjdG9yQXVnbWVudGluZ0FnZW50X2gKKworI2lmIEVO
QUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjaW5jbHVkZSAiSW5zcGVj
dG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVy
cy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFnZW50QmFzZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBGcm9udGVuZERpc3BhdGNoZXIsIHR5cGVuYW1lIEJhY2tlbmREaXNwYXRjaGVy
LCB0eXBlbmFtZSBBbHRlcm5hdGVEaXNwYXRjaGVyPgorY2xhc3MgSW5zcGVjdG9yQXVnbWVudGlu
Z0FnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgSW5zcGVjdG9yQXVnbWVudGluZ0FnZW50KGNvbnN0IFN0
cmluZyYgZG9tYWluTmFtZSwgc3RkOjp1bmlxdWVfcHRyPEFsdGVybmF0ZURpc3BhdGNoZXI+IGFs
dGVybmF0ZURpc3BhdGNoZXIpCisgICAgICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKGRvbWFpbk5h
bWUpCisgICAgICAgICwgbV9hbHRlcm5hdGVEaXNwYXRjaGVyKFdURjo6bW92ZShhbHRlcm5hdGVE
aXNwYXRjaGVyKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5l
bCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIs
IG51bGxwdHIpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZXRBbHRlcm5hdGVEaXNw
YXRjaGVyKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgICAgIG1fYWx0ZXJuYXRl
RGlzcGF0Y2hlci0+c2V0QmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpOworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBudWxscHRyOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFy
KCk7CisgICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+c2V0QmFja2VuZERpc3BhdGNoZXIo
bnVsbHB0cik7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxBbHRlcm5h
dGVEaXNwYXRjaGVyPiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRy
PEZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEJh
Y2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQ
QVRDSEVSUykKKworI2VuZGlmIC8vIEluc3BlY3RvckF1Z21lbnRpbmdBZ2VudF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9fX2lu
aXRfXy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L19faW5pdF9fLnB5CmluZGV4IGJiNWY5N2UuLjg4OWUyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL19faW5pdF9fLnB5CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL19faW5pdF9f
LnB5CkBAIC0zLDYgKzMsNyBAQAogZnJvbSBtb2RlbHMgaW1wb3J0ICoKIGZyb20gZ2VuZXJhdG9y
IGltcG9ydCAqCiAKK2Zyb20gZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9o
ZWFkZXIgaW1wb3J0ICoKIGZyb20gZ2VuZXJhdGVfYmFja2VuZF9jb21tYW5kcyBpbXBvcnQgKgog
ZnJvbSBnZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyIGltcG9ydCAqCiBmcm9tIGdl
bmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbiBpbXBvcnQgKgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2Vu
ZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9hbHRlcm5hdGVf
YmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAw
MDAwMDAwLi4wYWY2M2QzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlz
cGF0Y2hlcl9oZWFkZXIucHkKQEAgLTAsMCArMSw5MSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
CisjCisjIENvcHlyaWdodCAoYykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisK
K2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgc3RyaW5nCitpbXBvcnQgcmUKK2Zyb20gc3RyaW5nIGlt
cG9ydCBUZW1wbGF0ZQorCitmcm9tIGdlbmVyYXRvciBpbXBvcnQgR2VuZXJhdG9yCitmcm9tIGdl
bmVyYXRvcl90ZW1wbGF0ZXMgaW1wb3J0IEdlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMK
KworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKKworY2xhc3MgQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IoR2VuZXJhdG9yKToKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgbW9kZWwsIGlucHV0X2ZpbGVwYXRoKToKKyAgICAgICAgR2VuZXJhdG9yLl9f
aW5pdF9fKHNlbGYsIG1vZGVsLCBpbnB1dF9maWxlcGF0aCkKKworICAgIGRlZiBvdXRwdXRfZmls
ZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAnSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzLmgnCisKKyAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgorICAgICAgICBo
ZWFkZXJzID0gWworICAgICAgICAgICAgJyJJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgiJywKKyAg
ICAgICAgICAgICc8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4n
LAorICAgICAgICBdCisKKyAgICAgICAgaGVhZGVyX2FyZ3MgPSB7CisgICAgICAgICAgICAnaGVh
ZGVyR3VhcmRTdHJpbmcnOiByZS5zdWIoJ1xXKycsICdfJywgc2VsZi5vdXRwdXRfZmlsZW5hbWUo
KSksCisgICAgICAgICAgICAnaW5jbHVkZXMnOiAnXG4nLmpvaW4oWycjaW5jbHVkZSAnICsgaGVh
ZGVyIGZvciBoZWFkZXIgaW4gaGVhZGVyc10pLAorICAgICAgICB9CisKKyAgICAgICAgZG9tYWlu
cyA9IHNlbGYuZG9tYWluc190b19nZW5lcmF0ZSgpCisgICAgICAgIHNlY3Rpb25zID0gW10KKyAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgpKQorICAgICAgICBz
ZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkFsdGVybmF0ZURpc3BhdGNoZXJzSGVh
ZGVyUHJlbHVkZSkuc3Vic3RpdHV0ZShOb25lLCAqKmhlYWRlcl9hcmdzKSkKKyAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKCdcbicuam9pbihmaWx0ZXIoTm9uZSwgbWFwKHNlbGYuX2dlbmVyYXRlX2hh
bmRsZXJfZGVjbGFyYXRpb25zX2Zvcl9kb21haW4sIGRvbWFpbnMpKSkpCisgICAgICAgIHNlY3Rp
b25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuQWx0ZXJuYXRlRGlzcGF0Y2hlcnNIZWFkZXJQ
b3N0bHVkZSkuc3Vic3RpdHV0ZShOb25lLCAqKmhlYWRlcl9hcmdzKSkKKyAgICAgICAgcmV0dXJu
ICdcblxuJy5qb2luKHNlY3Rpb25zKQorCisgICAgZGVmIF9nZW5lcmF0ZV9oYW5kbGVyX2RlY2xh
cmF0aW9uc19mb3JfZG9tYWluKHNlbGYsIGRvbWFpbik6CisgICAgICAgIGlmIG5vdCBkb21haW4u
Y29tbWFuZHM6CisgICAgICAgICAgICByZXR1cm4gJycKKworICAgICAgICBjb21tYW5kX2RlY2xh
cmF0aW9ucyA9IFtdCisgICAgICAgIGZvciBjb21tYW5kIGluIGRvbWFpbi5jb21tYW5kczoKKyAg
ICAgICAgICAgIGNvbW1hbmRfZGVjbGFyYXRpb25zLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9oYW5k
bGVyX2RlY2xhcmF0aW9uX2Zvcl9jb21tYW5kKGNvbW1hbmQpKQorCisgICAgICAgIGhhbmRsZXJf
YXJncyA9IHsKKyAgICAgICAgICAgICdkb21haW5OYW1lJzogZG9tYWluLmRvbWFpbl9uYW1lLAor
ICAgICAgICAgICAgJ2NvbW1hbmREZWNsYXJhdGlvbnMnOiAnXG4nLmpvaW4oY29tbWFuZF9kZWNs
YXJhdGlvbnMpLAorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEdlbmVyYXRvci53cmFwX3dp
dGhfZ3VhcmRfZm9yX2RvbWFpbihkb21haW4sIFRlbXBsYXRlKFRlbXBsYXRlcy5BbHRlcm5hdGVC
YWNrZW5kRGlzcGF0Y2hlckhlYWRlckRvbWFpbkhhbmRsZXJJbnRlcmZhY2VEZWNsYXJhdGlvbiku
c3Vic3RpdHV0ZShOb25lLCAqKmhhbmRsZXJfYXJncykpCisKKyAgICBkZWYgX2dlbmVyYXRlX2hh
bmRsZXJfZGVjbGFyYXRpb25fZm9yX2NvbW1hbmQoc2VsZiwgY29tbWFuZCk6CisgICAgICAgIGxp
bmVzID0gW10KKyAgICAgICAgcGFyYW1ldGVycyA9IFsnbG9uZyBjYWxsSWQnXQorICAgICAgICBm
b3IgX3BhcmFtZXRlciBpbiBjb21tYW5kLmNhbGxfcGFyYW1ldGVyczoKKyAgICAgICAgICAgIHBh
cmFtZXRlcnMuYXBwZW5kKCclcyBpbl8lcycgJSAoR2VuZXJhdG9yLnR5cGVfc3RyaW5nX2Zvcl91
bmNoZWNrZWRfZm9ybWFsX2luX3BhcmFtZXRlcihfcGFyYW1ldGVyKSwgX3BhcmFtZXRlci5wYXJh
bWV0ZXJfbmFtZSkpCisKKyAgICAgICAgY29tbWFuZF9hcmdzID0geworICAgICAgICAgICAgJ2Nv
bW1hbmROYW1lJzogY29tbWFuZC5jb21tYW5kX25hbWUsCisgICAgICAgICAgICAncGFyYW1ldGVy
cyc6ICcsICcuam9pbihwYXJhbWV0ZXJzKSwKKyAgICAgICAgfQorICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICB2aXJ0dWFsIHZvaWQgJShjb21tYW5kTmFtZSlzKCUocGFyYW1ldGVycylzKSA9IDA7
JyAlIGNvbW1hbmRfYXJncykKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJf
aGVhZGVyLnB5CmluZGV4IGIyZmIwNmMuLmQ4MjE4MzAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2JhY2tlbmRfZGlz
cGF0Y2hlcl9oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weQpAQCAt
NjIsMTYgKzYyLDMwIEBAIGNsYXNzIEJhY2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yKEdl
bmVyYXRvcik6CiAgICAgICAgICAgICAndHlwZWRlZnMnOiAnXG4nLmpvaW4oWyd0eXBlZGVmICVz
ICVzOycgJSB0eXBlZGVmIGZvciB0eXBlZGVmIGluIHR5cGVkZWZzXSksCiAgICAgICAgIH0KIAor
ICAgICAgICBkb21haW5zID0gc2VsZi5kb21haW5zX3RvX2dlbmVyYXRlKCkKKwogICAgICAgICBz
ZWN0aW9ucyA9IFtdCiAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vu
c2UoKSkKICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5DcHBIZWFk
ZXJQcmVsdWRlKS5zdWJzdGl0dXRlKE5vbmUsICoqaGVhZGVyX2FyZ3MpKQotICAgICAgICBzZWN0
aW9ucy5leHRlbmQobWFwKHNlbGYuX2dlbmVyYXRlX2hhbmRsZXJfZGVjbGFyYXRpb25zX2Zvcl9k
b21haW4sIHNlbGYuZG9tYWluc190b19nZW5lcmF0ZSgpKSkKLSAgICAgICAgc2VjdGlvbnMuZXh0
ZW5kKG1hcChzZWxmLl9nZW5lcmF0ZV9kaXNwYXRjaGVyX2RlY2xhcmF0aW9uc19mb3JfZG9tYWlu
LCBzZWxmLmRvbWFpbnNfdG9fZ2VuZXJhdGUoKSkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChz
ZWxmLl9nZW5lcmF0ZV9hbHRlcm5hdGVfaGFuZGxlcl9mb3J3YXJkX2RlY2xhcmF0aW9uc19mb3Jf
ZG9tYWlucyhkb21haW5zKSkKKyAgICAgICAgc2VjdGlvbnMuZXh0ZW5kKG1hcChzZWxmLl9nZW5l
cmF0ZV9oYW5kbGVyX2RlY2xhcmF0aW9uc19mb3JfZG9tYWluLCBkb21haW5zKSkKKyAgICAgICAg
c2VjdGlvbnMuZXh0ZW5kKG1hcChzZWxmLl9nZW5lcmF0ZV9kaXNwYXRjaGVyX2RlY2xhcmF0aW9u
c19mb3JfZG9tYWluLCBkb21haW5zKSkKICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRl
KFRlbXBsYXRlcy5DcHBIZWFkZXJQb3N0bHVkZSkuc3Vic3RpdHV0ZShOb25lLCAqKmhlYWRlcl9h
cmdzKSkKICAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQogCiAgICAgIyBQcml2
YXRlIG1ldGhvZHMuCiAKKyAgICBkZWYgX2dlbmVyYXRlX2FsdGVybmF0ZV9oYW5kbGVyX2Zvcndh
cmRfZGVjbGFyYXRpb25zX2Zvcl9kb21haW5zKHNlbGYsIGRvbWFpbnMpOgorICAgICAgICBpZiBu
b3QgZG9tYWluczoKKyAgICAgICAgICAgIHJldHVybiAnJworCisgICAgICAgIGxpbmVzID0gW10K
KyAgICAgICAgbGluZXMuYXBwZW5kKCcjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElT
UEFUQ0hFUlMpJykKKyAgICAgICAgZm9yIGRvbWFpbiBpbiBkb21haW5zOgorICAgICAgICAgICAg
bGluZXMuYXBwZW5kKEdlbmVyYXRvci53cmFwX3dpdGhfZ3VhcmRfZm9yX2RvbWFpbihkb21haW4s
ICdjbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3Ilc0JhY2tlbmREaXNwYXRjaGVyOycgJSBkb21haW4u
ZG9tYWluX25hbWUpKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyNlbmRpZiAvLyBFTkFCTEUoSU5T
UEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUyknKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2lu
KGxpbmVzKQorCiAgICAgZGVmIF9nZW5lcmF0ZV9oYW5kbGVyX2RlY2xhcmF0aW9uc19mb3JfZG9t
YWluKHNlbGYsIGRvbWFpbik6CiAgICAgICAgIGNsYXNzQ29tcG9uZW50cyA9IFsnY2xhc3MnXQog
ICAgICAgICBleHBvcnRNYWNybyA9IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnZXhw
b3J0X21hY3JvJywgTm9uZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1l
bnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCBi
ZTQ5YTgyLi45N2M3Y2ZlIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50
YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CkBAIC01
Miw5ICs1MiwxNSBAQCBjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJh
dG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICAnPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
aD4nLAogICAgICAgICAgICAgJzx3dGYvdGV4dC9DU3RyaW5nLmg+J10KIAorICAgICAgICBzZWNv
bmRhcnlfaW5jbHVkZXMgPSBbJyNpbmNsdWRlICVzJyAlIGhlYWRlciBmb3IgaGVhZGVyIGluIHNl
Y29uZGFyeV9oZWFkZXJzXQorICAgICAgICBzZWNvbmRhcnlfaW5jbHVkZXMuYXBwZW5kKCcnKQor
ICAgICAgICBzZWNvbmRhcnlfaW5jbHVkZXMuYXBwZW5kKCcjaWYgRU5BQkxFKElOU1BFQ1RPUl9B
TFRFUk5BVEVfRElTUEFUQ0hFUlMpJykKKyAgICAgICAgc2Vjb25kYXJ5X2luY2x1ZGVzLmFwcGVu
ZCgnI2luY2x1ZGUgIkluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oIicpCisg
ICAgICAgIHNlY29uZGFyeV9pbmNsdWRlcy5hcHBlbmQoJyNlbmRpZicpCisKICAgICAgICAgaGVh
ZGVyX2FyZ3MgPSB7CiAgICAgICAgICAgICAncHJpbWFyeUluY2x1ZGUnOiAnIkluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVycy5oIicsCi0gICAgICAgICAgICAnc2Vjb25kYXJ5SW5jbHVkZXMnOiAi
XG4iLmpvaW4oWycjaW5jbHVkZSAlcycgJSBoZWFkZXIgZm9yIGhlYWRlciBpbiBzZWNvbmRhcnlf
aGVhZGVyc10pLAorICAgICAgICAgICAgJ3NlY29uZGFyeUluY2x1ZGVzJzogJ1xuJy5qb2luKHNl
Y29uZGFyeV9pbmNsdWRlcyksCiAgICAgICAgIH0KIAogICAgICAgICBzZWN0aW9ucyA9IFtdCkBA
IC0xNjIsNiArMTY4LDcgQEAgY2xhc3MgQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdl
bmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBpbl9wYXJhbWV0ZXJfZGVjbGFyYXRpb25zID0g
W10KICAgICAgICAgb3V0X3BhcmFtZXRlcl9kZWNsYXJhdGlvbnMgPSBbXQogICAgICAgICBvdXRf
cGFyYW1ldGVyX2Fzc2lnbm1lbnRzID0gW10KKyAgICAgICAgYWx0ZXJuYXRlX2Rpc3BhdGNoZXJf
bWV0aG9kX3BhcmFtZXRlcnMgPSBbJ2NhbGxJZCddCiAgICAgICAgIG1ldGhvZF9wYXJhbWV0ZXJz
ID0gWydlcnJvciddCiAKICAgICAgICAgZm9yIHBhcmFtZXRlciBpbiBjb21tYW5kLmNhbGxfcGFy
YW1ldGVyczoKQEAgLTE4MCw4ICsxODcsMTEgQEAgY2xhc3MgQmFja2VuZERpc3BhdGNoZXJJbXBs
ZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAgICAgaW5fcGFyYW1ldGVy
X2RlY2xhcmF0aW9ucy5hcHBlbmQoJyAgICAlKHBhcmFtZXRlclR5cGUpcyBpbl8lKHBhcmFtZXRl
ck5hbWUpcyA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjolKGtleWVkR2V0TWV0aG9kKXMo
cGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyTmFtZSlzIiksICUo
c3VjY2Vzc091dFBhcmFtKXMsIHByb3RvY29sRXJyb3JzUHRyKTsnICUgcGFyYW1fYXJncykKIAog
ICAgICAgICAgICAgaWYgcGFyYW1ldGVyLmlzX29wdGlvbmFsOgotICAgICAgICAgICAgICAgIG1l
dGhvZF9wYXJhbWV0ZXJzLmFwcGVuZCgnJShwYXJhbWV0ZXJOYW1lKXNfdmFsdWVGb3VuZCA/ICZp
bl8lKHBhcmFtZXRlck5hbWUpcyA6IG51bGxwdHInICUgcGFyYW1fYXJncykKKyAgICAgICAgICAg
ICAgICBvcHRpb25hbF9pbl9wYXJhbWV0ZXJfc3RyaW5nID0gJyUocGFyYW1ldGVyTmFtZSlzX3Zh
bHVlRm91bmQgPyAmaW5fJShwYXJhbWV0ZXJOYW1lKXMgOiBudWxscHRyJyAlIHBhcmFtX2FyZ3MK
KyAgICAgICAgICAgICAgICBhbHRlcm5hdGVfZGlzcGF0Y2hlcl9tZXRob2RfcGFyYW1ldGVycy5h
cHBlbmQob3B0aW9uYWxfaW5fcGFyYW1ldGVyX3N0cmluZykKKyAgICAgICAgICAgICAgICBtZXRo
b2RfcGFyYW1ldGVycy5hcHBlbmQob3B0aW9uYWxfaW5fcGFyYW1ldGVyX3N0cmluZykKICAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYWx0ZXJuYXRlX2Rpc3BhdGNoZXJfbWV0aG9k
X3BhcmFtZXRlcnMuYXBwZW5kKCdpbl8nICsgcGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lKQogICAg
ICAgICAgICAgICAgIG1ldGhvZF9wYXJhbWV0ZXJzLmFwcGVuZCgnaW5fJyArIHBhcmFtZXRlci5w
YXJhbWV0ZXJfbmFtZSkKIAogICAgICAgICBpZiBjb21tYW5kLmlzX2FzeW5jOgpAQCAtMjI2LDgg
KzIzNiw5IEBAIGNsYXNzIEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3Io
R2VuZXJhdG9yKToKICAgICAgICAgICAgICdkb21haW5OYW1lJzogZG9tYWluLmRvbWFpbl9uYW1l
LAogICAgICAgICAgICAgJ2NhbGxiYWNrTmFtZSc6ICclc0NhbGxiYWNrJyAlIHVjZmlyc3QoY29t
bWFuZC5jb21tYW5kX25hbWUpLAogICAgICAgICAgICAgJ2NvbW1hbmROYW1lJzogY29tbWFuZC5j
b21tYW5kX25hbWUsCi0gICAgICAgICAgICAnaW5QYXJhbWV0ZXJEZWNsYXJhdGlvbnMnOiAiXG4i
LmpvaW4oaW5fcGFyYW1ldGVyX2RlY2xhcmF0aW9ucyksCi0gICAgICAgICAgICAnaW52b2NhdGlv
blBhcmFtZXRlcnMnOiAiLCAiLmpvaW4obWV0aG9kX3BhcmFtZXRlcnMpCisgICAgICAgICAgICAn
aW5QYXJhbWV0ZXJEZWNsYXJhdGlvbnMnOiAnXG4nLmpvaW4oaW5fcGFyYW1ldGVyX2RlY2xhcmF0
aW9ucyksCisgICAgICAgICAgICAnaW52b2NhdGlvblBhcmFtZXRlcnMnOiAnLCAnLmpvaW4obWV0
aG9kX3BhcmFtZXRlcnMpLAorICAgICAgICAgICAgJ2FsdGVybmF0ZUludm9jYXRpb25QYXJhbWV0
ZXJzJzogJywgJy5qb2luKGFsdGVybmF0ZV9kaXNwYXRjaGVyX21ldGhvZF9wYXJhbWV0ZXJzKSwK
ICAgICAgICAgfQogCiAgICAgICAgIGxpbmVzID0gW10KQEAgLTI0MCw2ICsyNTEsMTQgQEAgY2xh
c3MgQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgog
ICAgICAgICBpZiBsZW4oY29tbWFuZC5jYWxsX3BhcmFtZXRlcnMpID4gMDoKICAgICAgICAgICAg
IGxpbmVzLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuQmFja2VuZERpc3BhdGNoZXJJbXBsZW1l
bnRhdGlvblByZXBhcmVDb21tYW5kQXJndW1lbnRzKS5zdWJzdGl0dXRlKE5vbmUsICoqY29tbWFu
ZF9hcmdzKSkKIAorICAgICAgICBsaW5lcy5hcHBlbmQoJyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSUyknKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBpZiAobV9h
bHRlcm5hdGVEaXNwYXRjaGVyKSB7JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIG1f
YWx0ZXJuYXRlRGlzcGF0Y2hlci0+JShjb21tYW5kTmFtZSlzKCUoYWx0ZXJuYXRlSW52b2NhdGlv
blBhcmFtZXRlcnMpcyk7JyAlIGNvbW1hbmRfYXJncykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcg
ICAgICAgIHJldHVybjsnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICB9JykKKyAgICAgICAg
bGluZXMuYXBwZW5kKCcjZW5kaWYnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJycpCisKICAgICAg
ICAgbGluZXMuYXBwZW5kKCcgICAgRXJyb3JTdHJpbmcgZXJyb3I7JykKICAgICAgICAgbGluZXMu
YXBwZW5kKCcgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKTsnKQogICAgICAgICBpZiBjb21tYW5kLmlzX2FzeW5jOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dG9yX3RlbXBsYXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKaW5kZXggNzcwNmMyYi4uNTRkYjIzNSAx
MDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CkBAIC05NSw2ICs5
NSwzOSBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsiIiIpCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUikKICIiIikKIAorICAgIEFsdGVybmF0ZURpc3BhdGNoZXJzSGVhZGVyUHJlbHVkZSA9ICgK
KyAgICAiIiIjaWZuZGVmICR7aGVhZGVyR3VhcmRTdHJpbmd9CisjZGVmaW5lICR7aGVhZGVyR3Vh
cmRTdHJpbmd9CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykK
KworJHtpbmNsdWRlc30KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIEFsdGVybmF0
ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldEJhY2tl
bmREaXNwYXRjaGVyKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IGRpc3Bh
dGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7IH0KKyAgICBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9Citwcml2YXRlOgorICAgIFJlZlB0cjxJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKK307CisiIiIpCisKKyAg
ICBBbHRlcm5hdGVEaXNwYXRjaGVyc0hlYWRlclBvc3RsdWRlID0gKAorICAgICIiIn0gLy8gbmFt
ZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVf
RElTUEFUQ0hFUlMpCisKKyNlbmRpZiAvLyAhZGVmaW5lZCgke2hlYWRlckd1YXJkU3RyaW5nfSki
IiIpCisKKyAgICBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckRvbWFpbkhhbmRsZXJJ
bnRlcmZhY2VEZWNsYXJhdGlvbiA9ICgKKyAgICAiIiJjbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3Ik
e2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkFsdGVybmF0ZUluc3Bl
Y3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQorJHtjb21tYW5kRGVjbGFy
YXRpb25zfQorfTsiIiIpCisKICAgICBCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckRvbWFpbkhhbmRs
ZXJEZWNsYXJhdGlvbiA9ICgKICAgICAiIiIke2NsYXNzQW5kRXhwb3J0TWFjcm99IEluc3BlY3Rv
ciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgpAQCAtMTEy
LDYgKzE0NSwxMiBAQCAke2NvbW1hbmREZWNsYXJhdGlvbnN9CiBwcml2YXRlOgogICAgIEluc3Bl
Y3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiwgSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciopOwogICAgIEluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIqIG1fYWdlbnQ7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hF
UlMpCitwdWJsaWM6CisgICAgdm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0ZUlu
c3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hl
cikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9Citwcml2
YXRlOgorICAgIEFsdGVybmF0ZUluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hl
ciogbV9hbHRlcm5hdGVEaXNwYXRjaGVyOworI2VuZGlmCiB9OyIiIikKIAogICAgIEJhY2tlbmRE
aXNwYXRjaGVySGVhZGVyQXN5bmNDb21tYW5kRGVjbGFyYXRpb24gPSAoCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9y
LXByb3RvY29sLWJpbmRpbmdzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQppbmRleCAxN2Nk
ZmExLi41NzU4NjUyIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3It
cHJvdG9jb2wtYmluZGluZ3MucHkKQEAgLTUwLDYgKzUwLDcgQEAgZXhjZXB0IEltcG9ydEVycm9y
OgogICAgIGZyb20gbW9kZWxzIGltcG9ydCAqCiAgICAgZnJvbSBnZW5lcmF0b3IgaW1wb3J0ICoK
IAorICAgIGZyb20gZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIg
aW1wb3J0ICoKICAgICBmcm9tIGdlbmVyYXRlX2JhY2tlbmRfY29tbWFuZHMgaW1wb3J0ICoKICAg
ICBmcm9tIGdlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIgaW1wb3J0ICoKICAgICBm
cm9tIGdlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbiBpbXBvcnQgKgpA
QCAtMTE4LDYgKzExOSw3IEBAIGRlZiBnZW5lcmF0ZV9mcm9tX3NwZWNpZmljYXRpb24ocHJpbWFy
eV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoPU5vbmUsCiAgICAgcHJvdG9jb2wucmVzb2x2ZV90eXBl
cygpCiAKICAgICBnZW5lcmF0b3JzID0gW10KKyAgICBnZW5lcmF0b3JzLmFwcGVuZChBbHRlcm5h
dGVCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdlbmVyYXRvcihwcm90b2NvbCwgcHJpbWFyeV9zcGVj
aWZpY2F0aW9uX2ZpbGVwYXRoKSkKICAgICBnZW5lcmF0b3JzLmFwcGVuZChCYWNrZW5kQ29tbWFu
ZHNHZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCiAg
ICAgZ2VuZXJhdG9ycy5hcHBlbmQoQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IocHJv
dG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCiAgICAgZ2VuZXJhdG9ycy5h
cHBlbmQoQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihwcm90b2NvbCwg
cHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRo
LWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0
ZS5qc29uLXJlc3VsdAppbmRleCBmMDkxZjllLi5jYmYzMGRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMt
d2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMt
YXR0cmlidXRlLmpzb24tcmVzdWx0CkBAIC0xLDMgKzEsNjkgQEAKKyMjIyBCZWdpbiBGaWxlOiBJ
bnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxs
eSBnZW5lcmF0ZWQgZnJvbSBjb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uCisvLyBi
eSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2Vu
ZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisKKyNpZm5kZWYgSW5zcGVjdG9y
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJzX2gKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQorCisjaW5jbHVkZSAiSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CisKK25hbWVz
cGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciB7CitwdWJsaWM6CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihQYXNzUmVmUHRy
PEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBkaXNwYXRjaGVyOyB9CisgICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQo
KTsgfQorcHJpdmF0ZToKKyAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1f
YmFja2VuZERpc3BhdGNoZXI7Cit9OworCisKK2NsYXNzIEFsdGVybmF0ZUluc3BlY3RvckRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkFsdGVybmF0ZUluc3BlY3RvckRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTFN5
bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIGNhbGxJZCwgaW50IGluX2RhdGFiYXNlSWQsIGNv
bnN0IFN0cmluZyYgaW5fcXVlcnkpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTEFz
eW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGludCBpbl9kYXRhYmFzZUlkLCBj
b25zdCBTdHJpbmcmIGluX3F1ZXJ5KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxT
eW5jKGxvbmcgY2FsbElkLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVy
eSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMQXN5bmMobG9uZyBjYWxsSWQsIGlu
dCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5KSA9IDA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJO
QVRFX0RJU1BBVENIRVJTKQorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJzX2gpCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJh
Y2tlbmREaXNwYXRjaGVycy5oCisKICMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29t
bWFuZHMuanMKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KQEAgLTg0LDYgKzE1MCwxMCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAog
dHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSUykKK2NsYXNzIEFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXI7CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFU
Q0hFUlMpCisKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKIHB1YmxpYzoKICAgICAvLyBOYW1lZCBhZnRlciBwYXJhbWV0ZXIgJ3NjcmVlbkNvbG9yJyB3
aGlsZSBnZW5lcmF0aW5nIGNvbW1hbmQvZXZlbnQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVy
blZhbHVlcy4KQEAgLTEyOSw2ICsxOTksMTIgQEAgcHJpdmF0ZToKIHByaXZhdGU6CiAgICAgSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIq
KTsKICAgICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9hZ2Vu
dDsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKK3B1YmxpYzoK
KyAgICB2b2lkIHNldEFsdGVybmF0ZURpc3BhdGNoZXIoQWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0ZURp
c3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9Citwcml2YXRlOgorICAgIEFsdGVybmF0
ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJuYXRlRGlzcGF0Y2hl
cjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCkBAIC0xNzgsNiArMjU0
LDEwIEBAIHByaXZhdGU6CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxU
RVJOQVRFX0RJU1BBVENIRVJTKQorI2luY2x1ZGUgIkluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVycy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBJbnNwZWN0
b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6fkluc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyKCkgeyB9CkBAIC0yMjQsNiArMzA0LDEzIEBAIHZvaWQgSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJl
dHVyblZhbHVlcyhsb25nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRj
aGVyKSB7CisgICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+ZXhlY3V0ZVNRTFN5bmNPcHRp
b25hbFJldHVyblZhbHVlcyhjYWxsSWQsIGluX2RhdGFiYXNlSWQsIGluX3F1ZXJ5KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gb3V0X2Nv
bHVtbk5hbWVzOwpAQCAtMzAwLDYgKzM4NywxMyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbgog
ICAgICAgICByZXR1cm47CiAgICAgfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVf
RElTUEFUQ0hFUlMpCisgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeworICAgICAgICBt
X2FsdGVybmF0ZURpc3BhdGNoZXItPmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVz
KGNhbGxJZCwgaW5fZGF0YWJhc2VJZCwgaW5fcXVlcnkpOworICAgICAgICByZXR1cm47CisgICAg
fQorI2VuZGlmCisKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiByZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxJ
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5j
T3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjaz4gY2FsbGJhY2sgPSBhZG9wdFJlZihuZXcgSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09w
dGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2sobV9iYWNrZW5kRGlzcGF0Y2hlcixjYWxsSWQpKTsK
QEAgLTMyNiw2ICs0MjAsMTMgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVyOjpleGVjdXRlU1FMU3luYyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGUKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJT
KQorICAgIGlmIChtX2FsdGVybmF0ZURpc3BhdGNoZXIpIHsKKyAgICAgICAgbV9hbHRlcm5hdGVE
aXNwYXRjaGVyLT5leGVjdXRlU1FMU3luYyhjYWxsSWQsIGluX2RhdGFiYXNlSWQsIGluX3F1ZXJ5
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgRXJyb3JTdHJpbmcgZXJy
b3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0
OjpjcmVhdGUoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5n
Pj4gb3V0X2NvbHVtbk5hbWVzOwpAQCAtMzg0LDYgKzQ4NSwxMyBAQCB2b2lkIEluc3BlY3RvckRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luYyhsb25nIGNhbGxJZCwgY29u
c3QgSW5zcAogICAgICAgICByZXR1cm47CiAgICAgfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9B
TFRFUk5BVEVfRElTUEFUQ0hFUlMpCisgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgewor
ICAgICAgICBtX2FsdGVybmF0ZURpc3BhdGNoZXItPmV4ZWN1dGVTUUxBc3luYyhjYWxsSWQsIGlu
X2RhdGFiYXNlSWQsIGluX3F1ZXJ5KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgor
CiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVz
dWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrPiBj
YWxsYmFjayA9IGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2sobV9iYWNrZW5kRGlzcGF0Y2hlcixjYWxs
SWQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFt
ZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJh
bWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IGIxMGM2MDcuLmU2MzJjMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21t
YW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3Vs
dApAQCAtMSwzICsxLDY3IEBACisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJzLmgKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0
eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBETyBO
T1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gY29t
bWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24KKy8vIGJ5IHRo
ZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0
ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKKworI2lmbmRlZiBJbnNwZWN0b3JBbHRl
cm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorI2RlZmluZSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNr
ZW5kRGlzcGF0Y2hlcnNfaAorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFU
Q0hFUlMpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgiCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4KKworbmFtZXNwYWNl
IEluc3BlY3RvciB7CisKK2NsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
IHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFBhc3NSZWZQdHI8SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hl
ciA9IGRpc3BhdGNoZXI7IH0KKyAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9
Citwcml2YXRlOgorICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKK307CisKKworY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQWxsT3B0aW9u
YWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JBcnJheT4qIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGluX25vdGVzLCBjb25zdCBk
b3VibGUqIGluX3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiogaW5fdmFsdWVzLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiBpbl9wYXls
b2FkLCBjb25zdCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4qIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGluX3NjcmVlbkNvbG9y
LCBjb25zdCBTdHJpbmcqIGluX3ByaW50Q29sb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhl
Y3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JBcnJheT4mIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIGluX25v
dGVzLCBkb3VibGUgaW5fdGltZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+JiBpbl92YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUgaW5fcGF5bG9h
ZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4mIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcmIGluX3NjcmVlbkNvbG9yLCBjb25zdCBT
dHJpbmcmIGluX3ByaW50Q29sb3IpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3Rv
cgorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisK
KyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNf
aCkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgK
KwogIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtODEs
NiArMTQ1LDEwIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0eXBlZGVmIFN0cmluZyBFcnJv
clN0cmluZzsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQor
Y2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjsKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKwogY2xhc3MgSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIC8v
IE5hbWVkIGFmdGVyIHBhcmFtZXRlciAnc2NyZWVuQ29sb3InIHdoaWxlIGdlbmVyYXRpbmcgY29t
bWFuZC9ldmVudCBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzLgpAQCAtMTEyLDYgKzE4MCwx
MiBAQCBwcml2YXRlOgogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVyKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqLCBJbnNwZWN0b3JE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwogICAgIEluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50OworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
QUxURVJOQVRFX0RJU1BBVENIRVJTKQorcHVibGljOgorICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlz
cGF0Y2hlcihBbHRlcm5hdGVJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKiBhbHRl
cm5hdGVEaXNwYXRjaGVyKSB7IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IGFsdGVybmF0ZURpc3Bh
dGNoZXI7IH0KK3ByaXZhdGU6CisgICAgQWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRjaGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBJbnNwZWN0b3IKQEAgLTE2MSw2ICsyMzUsMTAgQEAgcHJpdmF0ZToKICNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisjaW5j
bHVkZSAiSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCisjZW5kaWYKKwog
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyOjp+SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKSB7
IH0KQEAgLTIxOSw2ICsyOTcsMTMgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbEkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENI
RVJTKQorICAgIGlmIChtX2FsdGVybmF0ZURpc3BhdGNoZXIpIHsKKyAgICAgICAgbV9hbHRlcm5h
dGVEaXNwYXRjaGVyLT5leGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGNhbGxJZCwgY29sdW1u
TmFtZXNfdmFsdWVGb3VuZCA/ICZpbl9jb2x1bW5OYW1lcyA6IG51bGxwdHIsIG5vdGVzX3ZhbHVl
Rm91bmQgPyAmaW5fbm90ZXMgOiBudWxscHRyLCB0aW1lc3RhbXBfdmFsdWVGb3VuZCA/ICZpbl90
aW1lc3RhbXAgOiBudWxscHRyLCB2YWx1ZXNfdmFsdWVGb3VuZCA/ICZpbl92YWx1ZXMgOiBudWxs
cHRyLCBwYXlsb2FkX3ZhbHVlRm91bmQgPyAmaW5fcGF5bG9hZCA6IG51bGxwdHIsIGRhdGFiYXNl
SWRfdmFsdWVGb3VuZCA/ICZpbl9kYXRhYmFzZUlkIDogbnVsbHB0ciwgc3FsRXJyb3JfdmFsdWVG
b3VuZCA/ICZpbl9zcWxFcnJvciA6IG51bGxwdHIsIHNjcmVlbkNvbG9yX3ZhbHVlRm91bmQgPyAm
aW5fc2NyZWVuQ29sb3IgOiBudWxscHRyLCBwcmludENvbG9yX3ZhbHVlRm91bmQgPyAmaW5fcHJp
bnRDb2xvciA6IG51bGxwdHIpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAg
ICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQg
PSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+PiBvdXRfY29sdW1uTmFtZXM7CkBAIC0yNzYsNiArMzYxLDEzIEBA
IHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZU5vT3B0aW9u
YWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyAgICBpZiAobV9hbHRlcm5h
dGVEaXNwYXRjaGVyKSB7CisgICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+ZXhlY3V0ZU5v
T3B0aW9uYWxQYXJhbWV0ZXJzKGNhbGxJZCwgaW5fY29sdW1uTmFtZXMsIGluX25vdGVzLCBpbl90
aW1lc3RhbXAsIGluX3ZhbHVlcywgaW5fcGF5bG9hZCwgaW5fZGF0YWJhc2VJZCwgaW5fc3FsRXJy
b3IsIGluX3NjcmVlbkNvbG9yLCBpbl9wcmludENvbG9yKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbmRpZgorCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gb3V0X2NvbHVtbk5hbWVzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9t
YWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAppbmRleCBlMDc2MWQ5
Li5kMjI3MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5q
c29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJl
c3VsdApAQCAtMSwzICsxLDc3IEBACisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJzLmgKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVy
c2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBE
TyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20g
ZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uCisvLyBieSB0aGUgc2NyaXB0
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVj
dG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisKKyNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3Bh
dGNoZXJzX2gKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQor
CisjaW5jbHVkZSAiSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0
b3IgeworCitjbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitwdWJs
aWM6CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihQYXNzUmVmUHRyPEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyPiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBkaXNw
YXRjaGVyOyB9CisgICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorcHJpdmF0
ZToKKyAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7Cit9OworCisKK2NsYXNzIEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgewor
cHVibGljOgorICAgIHZpcnR1YWwgfkFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlMShsb25nIGNhbGxJ
ZCkgPSAwOworfTsKK2NsYXNzIEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3Bh
dGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfkFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3Bh
dGNoZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlMShsb25nIGNhbGxJZCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UyKGxvbmcgY2FsbElkKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTMobG9uZyBjYWxsSWQpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgbG9hZFJlc291cmNlNChsb25nIGNhbGxJZCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBsb2FkUmVzb3VyY2U1KGxvbmcgY2FsbElkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGxvYWRS
ZXNvdXJjZTYobG9uZyBjYWxsSWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNl
Nyhsb25nIGNhbGxJZCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNl
bmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2VuZGlm
IC8vICFkZWZpbmVkKEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQorIyMj
IEVuZCBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorCiAjIyMg
QmVnaW4gRmlsZTogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC04OSw2ICsxNjMs
MTEgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5n
OwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCitjbGFzcyBB
bHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOworY2xhc3MgQWx0ZXJu
YXRlSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjsKKyNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKwogY2xhc3MgSW5zcGVjdG9yTmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBs
b2FkUmVzb3VyY2UxKEVycm9yU3RyaW5nJikgPSAwOwpAQCAtMTE4LDYgKzE5NywxMiBAQCBwcml2
YXRlOgogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKElu
c3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqLCBJbnNwZWN0b3JOZXR3b3JrMUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlciopOwogICAgIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50OworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRF
X0RJU1BBVENIRVJTKQorcHVibGljOgorICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihB
bHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNw
YXRjaGVyKSB7IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0K
K3ByaXZhdGU6CisgICAgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hl
ciogbV9hbHRlcm5hdGVEaXNwYXRjaGVyOworI2VuZGlmCiB9OwogCiBjbGFzcyBJbnNwZWN0b3JO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVj
dG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIgewpAQCAtMTM1LDYgKzIyMCwxMiBAQCBw
cml2YXRlOgogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVy
KEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqLCBJbnNwZWN0b3JOZXR3b3Jr
M0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwogICAgIEluc3BlY3Rvck5ldHdvcmszQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50OworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJO
QVRFX0RJU1BBVENIRVJTKQorcHVibGljOgorICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hl
cihBbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyKiBhbHRlcm5hdGVE
aXNwYXRjaGVyKSB7IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IGFsdGVybmF0ZURpc3BhdGNoZXI7
IH0KK3ByaXZhdGU6CisgICAgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0
Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRjaGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBJbnNwZWN0b3IKQEAgLTE4NCw2ICsyNzUsMTAgQEAgcHJpdmF0ZToKICNpbmNsdWRlIDxpbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisjaW5jbHVkZSAi
SW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCisjZW5kaWYKKwogbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyOjp+SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKSB7IH0KQEAg
LTIxMyw2ICszMDgsMTMgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVy
OjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXQKIAogdm9pZCBJbnNwZWN0
b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UxKGxvbmcgY2FsbElkLCBj
b25zdCBJbnNwZWN0b3JPYmplY3QmKQogeworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRF
X0RJU1BBVENIRVJTKQorICAgIGlmIChtX2FsdGVybmF0ZURpc3BhdGNoZXIpIHsKKyAgICAgICAg
bV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5sb2FkUmVzb3VyY2UxKGNhbGxJZCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAg
ICAgbV9hZ2VudC0+bG9hZFJlc291cmNlMShlcnJvcik7CkBAIC0yNjgsNiArMzcwLDEzIEBAIHZv
aWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxs
SWQsIGNvbnN0IFN0cmluZyYgbWV0CiAKIHZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlz
cGF0Y2hlcjo6bG9hZFJlc291cmNlMShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0
JikKIHsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyAgICBp
ZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7CisgICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hl
ci0+bG9hZFJlc291cmNlMShjYWxsSWQpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlm
CisKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBy
ZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIG1fYWdlbnQtPmxvYWRSZXNv
dXJjZTEoZXJyb3IpOwpAQCAtMjc3LDYgKzM4NiwxMyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmsz
QmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTEobG9uZyBjYWxsSWQsIGNvbnN0IEluc3Bl
YwogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJj
ZTIobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CisjaWYgRU5BQkxFKElO
U1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0
Y2hlcikgeworICAgICAgICBtX2FsdGVybmF0ZURpc3BhdGNoZXItPmxvYWRSZXNvdXJjZTIoY2Fs
bElkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgRXJyb3JTdHJpbmcg
ZXJyb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBtX2FnZW50LT5sb2FkUmVzb3VyY2UyKGVycm9yKTsKQEAgLTI4
Niw2ICs0MDIsMTMgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjps
b2FkUmVzb3VyY2UyKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWMKIAogdm9pZCBJbnNwZWN0b3JO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UzKGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QmKQogeworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQorICAgIGlmIChtX2FsdGVybmF0ZURpc3BhdGNoZXIpIHsKKyAgICAgICAgbV9h
bHRlcm5hdGVEaXNwYXRjaGVyLT5sb2FkUmVzb3VyY2UzKGNhbGxJZCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZW5kaWYKKwogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
bV9hZ2VudC0+bG9hZFJlc291cmNlMyhlcnJvcik7CkBAIC0yOTUsNiArNDE4LDEzIEBAIHZvaWQg
SW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMyhsb25nIGNh
bGxJZCwgY29uc3QgSW5zcGVjCiAKIHZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0
Y2hlcjo6bG9hZFJlc291cmNlNChsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikK
IHsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyAgICBpZiAo
bV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7CisgICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+
bG9hZFJlc291cmNlNChjYWxsSWQpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisK
ICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1
bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIG1fYWdlbnQtPmxvYWRSZXNvdXJj
ZTQoZXJyb3IpOwpAQCAtMzA0LDYgKzQzNCwxMyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFj
a2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTQobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlYwog
CiB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTUo
bG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CisjaWYgRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hl
cikgeworICAgICAgICBtX2FsdGVybmF0ZURpc3BhdGNoZXItPmxvYWRSZXNvdXJjZTUoY2FsbElk
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgRXJyb3JTdHJpbmcgZXJy
b3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0
OjpjcmVhdGUoKTsKICAgICBtX2FnZW50LT5sb2FkUmVzb3VyY2U1KGVycm9yKTsKQEAgLTMxMyw2
ICs0NTAsMTMgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2Fk
UmVzb3VyY2U1KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWMKIAogdm9pZCBJbnNwZWN0b3JOZXR3
b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U2KGxvbmcgY2FsbElkLCBjb25zdCBJ
bnNwZWN0b3JPYmplY3QmKQogeworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BB
VENIRVJTKQorICAgIGlmIChtX2FsdGVybmF0ZURpc3BhdGNoZXIpIHsKKyAgICAgICAgbV9hbHRl
cm5hdGVEaXNwYXRjaGVyLT5sb2FkUmVzb3VyY2U2KGNhbGxJZCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisjZW5kaWYKKwogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgbV9h
Z2VudC0+bG9hZFJlc291cmNlNihlcnJvcik7CkBAIC0zMjIsNiArNDY2LDEzIEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNihsb25nIGNhbGxJ
ZCwgY29uc3QgSW5zcGVjCiAKIHZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hl
cjo6bG9hZFJlc291cmNlNyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKIHsK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyAgICBpZiAobV9h
bHRlcm5hdGVEaXNwYXRjaGVyKSB7CisgICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+bG9h
ZFJlc291cmNlNyhjYWxsSWQpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAg
ICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQg
PSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIG1fYWdlbnQtPmxvYWRSZXNvdXJjZTco
ZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1y
ZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCBj
YTM5MmZkLi44M2EwZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVy
cy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJl
c3VsdApAQCAtMSwzICsxLDYyIEBACisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJzLmgKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVy
c2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBE
TyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20g
ZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uCisvLyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9y
LXByb3RvY29sLWJpbmRpbmdzLnB5CisKKyNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2Vu
ZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNo
ZXJzX2gKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisj
aW5jbHVkZSAiSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworCitjbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitwdWJsaWM6
CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyPiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBkaXNwYXRj
aGVyOyB9CisgICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorcHJpdmF0ZToK
KyAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNo
ZXI7Cit9OworCisKKworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjZW5kaWYgLy8gIWRlZmlu
ZWQoSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCisjIyMgRW5kIEZpbGU6
IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisKICMjIyBCZWdpbiBGaWxl
OiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTgxLDYgKzE0MCw4IEBAIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAorCisKIH0g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKQEAg
LTEyOCw2ICsxODksMTAgQEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAjaW5jbHVkZSA8
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorI2luY2x1
ZGUgIkluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgt
ZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUt
Z3VhcmRzLmpzb24tcmVzdWx0CmluZGV4IDhhNmEyNjUuLmY4OTM4OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5l
cmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRl
LWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdApAQCAtMSwzICsxLDY4IEBA
CisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUu
IEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gZ2VuZXJhdGUtZG9tYWlucy13aXRo
LWZlYXR1cmUtZ3VhcmRzLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGlu
Z3MucHkKKworI2lmbmRlZiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAor
I2RlZmluZSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorCisjaWYgRU5B
QkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNpbmNsdWRlICJJbnNwZWN0
b3JQcm90b2NvbFR5cGVzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIEFsdGVy
bmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldEJh
Y2tlbmREaXNwYXRjaGVyKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IGRp
c3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7IH0KKyAgICBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9Citwcml2YXRlOgorICAgIFJlZlB0cjxJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKK307CisKKworI2lm
IFBMQVRGT1JNKFdFQl9DT01NQU5EUykKK2NsYXNzIEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmsx
QmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmsx
QmFja2VuZERpc3BhdGNoZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlKGxv
bmcgY2FsbElkKSA9IDA7Cit9OworI2VuZGlmIC8vIFBMQVRGT1JNKFdFQl9DT01NQU5EUykKKwor
fSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSUykKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckFsdGVy
bmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JBbHRlcm5h
dGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorCiAjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQmFja2Vu
ZENvbW1hbmRzLmpzCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCkBAIC04NCw2ICsxNDksMTIgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9B
TFRFUk5BVEVfRElTUEFUQ0hFUlMpCisjaWYgUExBVEZPUk0oV0VCX0NPTU1BTkRTKQorY2xhc3Mg
QWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjsKKyNlbmRpZiAvLyBQ
TEFURk9STShXRUJfQ09NTUFORFMpCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5B
VEVfRElTUEFUQ0hFUlMpCisKICNpZiBQTEFURk9STShXRUJfQ09NTUFORFMpCiBjbGFzcyBJbnNw
ZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6CkBAIC0xMDMs
NiArMTc0LDEyIEBAIHByaXZhdGU6CiBwcml2YXRlOgogICAgIEluc3BlY3Rvck5ldHdvcmsxQmFj
a2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosIElu
c3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7CiAgICAgSW5zcGVjdG9y
TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CisjaWYgRU5BQkxFKElO
U1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCitwdWJsaWM6CisgICAgdm9pZCBzZXRBbHRl
cm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJu
YXRlRGlzcGF0Y2hlcjsgfQorcHJpdmF0ZToKKyAgICBBbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3Jr
MUJhY2tlbmREaXNwYXRjaGVyKiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7CisjZW5kaWYKIH07CiAj
ZW5kaWYgLy8gUExBVEZPUk0oV0VCX0NPTU1BTkRTKQogCkBAIC0xNTMsNiArMjMwLDEwIEBAIHBy
aXZhdGU6CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQorI2luY2x1ZGUgIkluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVy
cy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAjaWYgUExBVEZPUk0oV0VC
X0NPTU1BTkRTKQpAQCAtMTg0LDYgKzI2NSwxMyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmsxQmFj
a2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldAog
CiB2b2lkIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZShs
b25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKIHsKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVy
KSB7CisgICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+bG9hZFJlc291cmNlKGNhbGxJZCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIEVycm9yU3RyaW5nIGVycm9y
OwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgbV9hZ2VudC0+bG9hZFJlc291cmNlKGVycm9yKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9z
YW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlm
ZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdAppbmRleCA1ZDkwZjViLi44NzRlODZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlw
ZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0CkBAIC0xLDMgKzEsNjIgQEAKKyMjIyBC
ZWdpbiBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMg
YXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBzYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFp
bi5qc29uCisvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisKKyNpZm5k
ZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUgSW5zcGVj
dG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
QUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjaW5jbHVkZSAiSW5zcGVjdG9yUHJvdG9jb2xUeXBl
cy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
Lmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciB7CitwdWJsaWM6CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hl
cihQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBkaXNwYXRjaGVyKSB7IG1f
YmFja2VuZERpc3BhdGNoZXIgPSBkaXNwYXRjaGVyOyB9CisgICAgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlz
cGF0Y2hlci5nZXQoKTsgfQorcHJpdmF0ZToKKyAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Cit9OworCisKKworCit9IC8vIG5hbWVzcGFj
ZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BB
VENIRVJTKQorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzX2gpCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVycy5oCisKICMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KQEAgLTc1LDYgKzEzNCw4IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0eXBlZGVmIFN0
cmluZyBFcnJvclN0cmluZzsKIAorCisKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5k
aWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKQEAgLTEyMiw2ICsxODMsMTAgQEAgdHlwZWRlZiBTdHJp
bmcgRXJyb3JTdHJpbmc7CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxU
RVJOQVRFX0RJU1BBVENIRVJTKQorI2luY2x1ZGUgIkluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVycy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQt
b3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CmluZGV4IDhjZWY2YTkuLjg0NDg4YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdApAQCAtMSwzICsxLDYy
IEBACisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJz
LmgKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJ
TEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gc2hhZG93ZWQtb3B0aW9uYWwt
dHlwZS1zZXR0ZXJzLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3Mu
cHkKKworI2lmbmRlZiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorI2Rl
ZmluZSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorCisjaWYgRU5BQkxF
KElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JQ
cm90b2NvbFR5cGVzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIEFsdGVybmF0
ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldEJhY2tl
bmREaXNwYXRjaGVyKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IGRpc3Bh
dGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7IH0KKyAgICBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9Citwcml2YXRlOgorICAgIFJlZlB0cjxJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKK307CisKKworCisKK30g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRF
Uk5BVEVfRElTUEFUQ0hFUlMpCisKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBbHRlcm5h
dGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJzLmgKKwogIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckJhY2tlbmRD
b21tYW5kcy5qcwogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgpAQCAtNzUsNiArMTM0LDggQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
IHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCisKKwogfSAvLyBuYW1lc3BhY2UgSW5zcGVj
dG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtMTIyLDYgKzE4MywxMCBAQCB0
eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCisjaWYgRU5BQkxFKElO
U1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisjaW5jbHVkZSAiSW5zcGVjdG9yQWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5q
c29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1y
ZXN1bHQKaW5kZXggNDYwYWVkZi4uNGFmNWMyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24t
YWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1h
bGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0CkBAIC0xLDMgKzEsNjIgQEAKKyMjIyBC
ZWdpbiBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMg
YXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJp
bWl0aXZlLXR5cGUuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5w
eQorCisjaWZuZGVmIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisjZGVm
aW5lIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2luY2x1ZGUgIkluc3BlY3RvclBy
b3RvY29sVHlwZXMuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgQWx0ZXJuYXRl
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworcHVibGljOgorICAgIHZvaWQgc2V0QmFja2Vu
ZERpc3BhdGNoZXIoUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gZGlzcGF0
Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjsgfQorICAgIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAgUmVmUHRyPEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworfTsKKworCisKKworfSAv
LyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSUykKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckFsdGVybmF0
ZUJhY2tlbmREaXNwYXRjaGVyc19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVC
YWNrZW5kRGlzcGF0Y2hlcnMuaAorCiAjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQmFja2VuZENv
bW1hbmRzLmpzCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCkBAIC03NSw2ICsxMzQsOCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAog
dHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKKworCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0
b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCkBAIC0xMjIsNiArMTgzLDEwIEBAIHR5
cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyNpbmNsdWRlICJJbnNwZWN0b3JBbHRlcm5h
dGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5
cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdAppbmRleCAxMTM3OWZlLi5hNjYw
ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKQEAgLTEsMyArMSw2MiBA
QAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5o
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxF
LiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtZGVjbGFyYXRpb24tYXJy
YXktdHlwZS5qc29uCisvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisK
KyNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUg
SW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKworI2lmIEVOQUJMRShJTlNQ
RUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjaW5jbHVkZSAiSW5zcGVjdG9yUHJvdG9j
b2xUeXBlcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBBbHRlcm5hdGVJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitwdWJsaWM6CisgICAgdm9pZCBzZXRCYWNrZW5kRGlz
cGF0Y2hlcihQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBkaXNwYXRjaGVy
KSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBkaXNwYXRjaGVyOyB9CisgICAgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
ZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorcHJpdmF0ZToKKyAgICBSZWZQdHI8SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Cit9OworCisKKworCit9IC8vIG5h
bWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRF
X0RJU1BBVENIRVJTKQorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJzX2gpCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tl
bmREaXNwYXRjaGVycy5oCisKICMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFu
ZHMuanMKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KQEAgLTc4LDYgKzEzNyw4IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0eXBl
ZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAorCisKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3Rvcgog
CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKQEAgLTEyNSw2ICsxODYsMTAgQEAgdHlwZWRl
ZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVl
cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShJTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorI2luY2x1ZGUgIkluc3BlY3RvckFsdGVybmF0ZUJh
Y2tlbmREaXNwYXRjaGVycy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRl
Y2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdAppbmRleCA4MjcxODg2Li44OGRjMDQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUt
ZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0CkBAIC0xLDMgKzEsNjIgQEAKKyMjIyBC
ZWdpbiBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMg
YXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5q
c29uCisvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisKKyNpZm5kZWYg
SW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUgSW5zcGVjdG9y
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxU
RVJOQVRFX0RJU1BBVENIRVJTKQorCisjaW5jbHVkZSAiSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5o
IgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+
CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciB7CitwdWJsaWM6CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihQ
YXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBkaXNwYXRjaGVyKSB7IG1fYmFj
a2VuZERpc3BhdGNoZXIgPSBkaXNwYXRjaGVyOyB9CisgICAgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0
Y2hlci5nZXQoKTsgfQorcHJpdmF0ZToKKyAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Cit9OworCisKKworCit9IC8vIG5hbWVzcGFjZSBJ
bnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENI
RVJTKQorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3Bh
dGNoZXJzX2gpCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRj
aGVycy5oCisKICMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
QEAgLTc5LDYgKzEzOCw4IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0eXBlZGVmIFN0cmlu
ZyBFcnJvclN0cmluZzsKIAorCisKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYg
Ly8gRU5BQkxFKElOU1BFQ1RPUikKQEAgLTEyNiw2ICsxODcsMTAgQEAgdHlwZWRlZiBTdHJpbmcg
RXJyb3JTdHJpbmc7CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJO
QVRFX0RJU1BBVENIRVJTKQorI2luY2x1ZGUgIkluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVycy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRp
b24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKaW5kZXggNmVlMzMzNS4uYTU1NWQ4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVj
bGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKQEAgLTEsMyArMSw2MiBAQAorIyMjIEJl
Z2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBh
dXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUu
anNvbgorLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQorCisjaWZuZGVm
IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisjZGVmaW5lIEluc3BlY3Rv
ckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSUykKKworI2luY2x1ZGUgIkluc3BlY3RvclByb3RvY29sVHlwZXMu
aCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
PgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIgeworcHVibGljOgorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIo
UGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gZGlzcGF0Y2hlcikgeyBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjsgfQorICAgIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3Bh
dGNoZXIuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworfTsKKworCisKKworfSAvLyBuYW1lc3BhY2Ug
SW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRD
SEVSUykKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVyc19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0
Y2hlcnMuaAorCiAjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CkBAIC03NSw2ICsxMzQsOCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdHlwZWRlZiBTdHJp
bmcgRXJyb3JTdHJpbmc7CiAKKworCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlm
IC8vIEVOQUJMRShJTlNQRUNUT1IpCkBAIC0xMjIsNiArMTgzLDEwIEBAIHR5cGVkZWYgU3RyaW5n
IEVycm9yU3RyaW5nOwogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSUykKKyNpbmNsdWRlICJJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlz
cGF0Y2hlcnMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmlu
Zy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CmluZGV4IDc4MGE2YWUuLmUwOWU1NWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJl
cXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CkBAIC0xLDMgKzEsNjIgQEAKKyMjIyBC
ZWdpbiBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMg
YXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3Rz
Lmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKKworI2lmbmRl
ZiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorI2RlZmluZSBJbnNwZWN0
b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9B
TFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JQcm90b2NvbFR5cGVz
LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVy
KFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IGRpc3BhdGNoZXIpIHsgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7IH0KKyAgICBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNw
YXRjaGVyLmdldCgpOyB9Citwcml2YXRlOgorICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKK307CisKKworCisKK30gLy8gbmFtZXNwYWNl
IEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFU
Q0hFUlMpCisKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlz
cGF0Y2hlcnNfaCkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3Bh
dGNoZXJzLmgKKwogIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgpAQCAtNzksNiArMTM4LDggQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHR5cGVkZWYgU3Ry
aW5nIEVycm9yU3RyaW5nOwogCisKKwogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRp
ZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtMTI2LDYgKzE4NywxMCBAQCB0eXBlZGVmIFN0cmlu
ZyBFcnJvclN0cmluZzsKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRF
Uk5BVEVfRElTUEFUQ0hFUlMpCisjaW5jbHVkZSAiSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA3
MGY3YmU4Li40MzU4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE0LTEwLTIwICBKb3NlcGgg
UGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
UHJvdmlkZSBhIHdheSB0byBoYXZlIGFsdGVybmF0ZSBpbnNwZWN0b3IgYWdlbnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc5MDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GZWF0dXJlRGVm
aW5lcy5oOgorCiAyMDE0LTEwLTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgQWNjZXNzaWJpbGl0eSBvYmpl
Y3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oIGIvU291cmNl
L1dURi93dGYvRmVhdHVyZURlZmluZXMuaAppbmRleCBlODczOGYyLi5mMTMwNTI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0ZlYXR1cmVEZWZpbmVzLmgKQEAgLTgyLDYgKzgyLDEwIEBACiAjZGVmaW5lIEVOQUJMRV9JQ09O
REFUQUJBU0UgMAogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSUykKKyNkZWZpbmUgRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElT
UEFUQ0hFUlMgMQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfTEVUVEVSUFJFU1MpCiAj
ZGVmaW5lIEVOQUJMRV9MRVRURVJQUkVTUyAxCiAjZW5kaWYKQEAgLTE5Miw2ICsxOTYsMTAgQEAg
dGhlIHB1YmxpYyBpT1MgU0RLLiBXZSB3aWxsIGFsc28gbmVlZCB0byB1cGRhdGUgdGhlIEZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnIGZpbGUKICNpZiAhZGVmaW5lZChFTkFCTEVfUkVNT1RFX0lOU1BF
Q1RPUikKICNkZWZpbmUgRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IgMQogI2VuZGlmCisKKyNpZiAh
ZGVmaW5lZChFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyNkZWZpbmUg
RU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMgMQorI2VuZGlmCiAjZW5kaWYK
IAogI2lmICFkZWZpbmVkKEVOQUJMRV9TTU9PVEhfU0NST0xMSU5HKQpAQCAtNDk1LDYgKzUwMywx
MCBAQCB0aGUgcHVibGljIGlPUyBTREsuIFdlIHdpbGwgYWxzbyBuZWVkIHRvIHVwZGF0ZSB0aGUg
RmVhdHVyZURlZmluZXMueGNjb25maWcgZmlsZQogI2RlZmluZSBFTkFCTEVfSU5TUEVDVE9SIDEK
ICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFU
Q0hFUlMpCisjZGVmaW5lIEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTIDAK
KyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0pBVkFTQ1JJUFRfSTE4Tl9BUEkpCiAjZGVm
aW5lIEVOQUJMRV9KQVZBU0NSSVBUX0kxOE5fQVBJIDAKICNlbmRpZgpAQCAtNzYzLDYgKzc3NSwx
MCBAQCB0aGUgcHVibGljIGlPUyBTREsuIFdlIHdpbGwgYWxzbyBuZWVkIHRvIHVwZGF0ZSB0aGUg
RmVhdHVyZURlZmluZXMueGNjb25maWcgZmlsZQogI2Vycm9yICJFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikgcmVxdWlyZXMgRU5BQkxFKElOU1BFQ1RPUikiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShJ
TlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKSAmJiAhRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCisjZXJyb3IgIkVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKSByZXF1
aXJlcyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikiCisjZW5kaWYKKwogI2lmIEVOQUJMRShJT1Nf
VE9VQ0hfRVZFTlRTKSAmJiAhRU5BQkxFKFRPVUNIX0VWRU5UUykKICNlcnJvciAiRU5BQkxFKElP
U19UT1VDSF9FVkVOVFMpIHJlcXVpcmVzIEVOQUJMRShUT1VDSF9FVkVOVFMpIgogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZDM0MzE2MS4uYTIzMDViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDE0LTEwLTIwICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogUHJvdmlkZSBhIHdheSB0byBoYXZlIGFsdGVybmF0ZSBpbnNw
ZWN0b3IgYWdlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzc5MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDE0LTEw
LTIwICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAg
VXNlIHN0ZDo6dW5pcXVlX3B0cjw+fG1ha2VfdW5pcXVlPD4gaW4gUGx1Z2luVmlldzo6c2NoZWR1
bGVSZXF1ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcKaW5kZXggYmE5Y2ZlZi4uZmFmZjliMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysr
IGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcK
QEAgLTEyMSw2ICsxMjEsMTUgQEAgRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyA9ICQoRU5BQkxFX0lO
UFVUX1RZUEVfV0VFS18kKFBMQVRGT1JNX05BTUUpKTsKIEVOQUJMRV9JTlBVVF9UWVBFX1dFRUtf
aXBob25lb3MgPSBFTkFCTEVfSU5QVVRfVFlQRV9XRUVLOwogRU5BQkxFX0lOUFVUX1RZUEVfV0VF
S19pcGhvbmVzaW11bGF0b3IgPSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUtfaXBob25lb3MpOwog
RU5BQkxFX0lOU1BFQ1RPUiA9IEVOQUJMRV9JTlNQRUNUT1I7CisKK0VOQUJMRV9JTlNQRUNUT1Jf
QUxURVJOQVRFX0RJU1BBVENIRVJTID0gJChFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQ
QVRDSEVSU18kKFBMQVRGT1JNX05BTUUpKTsKK0VOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTX2lwaG9uZW9zID0gRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hF
UlM7CitFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19pcGhvbmVzaW11bGF0
b3IgPSAkKEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX2lwaG9uZW9zKTsK
K0VOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX21hY29zeCA9ICQoRU5BQkxF
X0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfbWFjb3N4XyQoVEFSR0VUX01BQ19PU19Y
X1ZFUlNJT05fTUFKT1IpKQorRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNf
bWFjb3N4XzEwODAgPSA7CitFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19t
YWNvc3hfMTA5MCA9IDsKK0VOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX21h
Y29zeF8xMDEwMDAgPSBFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUzsKKwog
RU5BQkxFX0lPU19BSVJQTEFZID0gJChFTkFCTEVfSU9TX0FJUlBMQVlfJChQTEFURk9STV9OQU1F
KSk7CiBFTkFCTEVfSU9TX0FJUlBMQVlfaXBob25lb3MgPSBFTkFCTEVfSU9TX0FJUlBMQVk7CiBF
TkFCTEVfSU9TX0FJUlBMQVlfaXBob25lc2ltdWxhdG9yID0gJChFTkFCTEVfSU9TX0FJUlBMQVlf
aXBob25lb3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGU4NTFhMDguLmZhNGMyNGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNC0xMC0yMCAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFByb3ZpZGUgYSB3
YXkgdG8gaGF2ZSBhbHRlcm5hdGUgaW5zcGVjdG9yIGFnZW50cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3OTAxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZzoKKwogMjAxNC0xMC0yMCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IHRoZSBpT1MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGJh
OWNmZWYuLmZhZmY5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xMjEsNiArMTIxLDE1IEBAIEVO
QUJMRV9JTlBVVF9UWVBFX1dFRUsgPSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUtfJChQTEFURk9S
TV9OQU1FKSk7CiBFTkFCTEVfSU5QVVRfVFlQRV9XRUVLX2lwaG9uZW9zID0gRU5BQkxFX0lOUFVU
X1RZUEVfV0VFSzsKIEVOQUJMRV9JTlBVVF9UWVBFX1dFRUtfaXBob25lc2ltdWxhdG9yID0gJChF
TkFCTEVfSU5QVVRfVFlQRV9XRUVLX2lwaG9uZW9zKTsKIEVOQUJMRV9JTlNQRUNUT1IgPSBFTkFC
TEVfSU5TUEVDVE9SOworCitFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUyA9
ICQoRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfJChQTEFURk9STV9OQU1F
KSk7CitFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19pcGhvbmVvcyA9IEVO
QUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTOworRU5BQkxFX0lOU1BFQ1RPUl9B
TFRFUk5BVEVfRElTUEFUQ0hFUlNfaXBob25lc2ltdWxhdG9yID0gJChFTkFCTEVfSU5TUEVDVE9S
X0FMVEVSTkFURV9ESVNQQVRDSEVSU19pcGhvbmVvcyk7CitFTkFCTEVfSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSU19tYWNvc3ggPSAkKEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTX21hY29zeF8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSkKK0VOQUJM
RV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX21hY29zeF8xMDgwID0gOworRU5BQkxF
X0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfbWFjb3N4XzEwOTAgPSA7CitFTkFCTEVf
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19tYWNvc3hfMTAxMDAwID0gRU5BQkxFX0lO
U1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlM7CisKIEVOQUJMRV9JT1NfQUlSUExBWSA9ICQo
RU5BQkxFX0lPU19BSVJQTEFZXyQoUExBVEZPUk1fTkFNRSkpOwogRU5BQkxFX0lPU19BSVJQTEFZ
X2lwaG9uZW9zID0gRU5BQkxFX0lPU19BSVJQTEFZOwogRU5BQkxFX0lPU19BSVJQTEFZX2lwaG9u
ZXNpbXVsYXRvciA9ICQoRU5BQkxFX0lPU19BSVJQTEFZX2lwaG9uZW9zKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCA0NThkNWIzLi4xNDEwOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMTAt
MjAgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBQcm92aWRlIGEgd2F5IHRvIGhhdmUgYWx0ZXJuYXRlIGluc3BlY3RvciBhZ2Vu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzkw
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTQtMTAtMjAgIEJldGgg
RGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBhY3Rp
b24gbWVudXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKaW5kZXggYmE5Y2ZlZi4uZmFmZjliMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIv
U291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAg
LTEyMSw2ICsxMjEsMTUgQEAgRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyA9ICQoRU5BQkxFX0lOUFVU
X1RZUEVfV0VFS18kKFBMQVRGT1JNX05BTUUpKTsKIEVOQUJMRV9JTlBVVF9UWVBFX1dFRUtfaXBo
b25lb3MgPSBFTkFCTEVfSU5QVVRfVFlQRV9XRUVLOwogRU5BQkxFX0lOUFVUX1RZUEVfV0VFS19p
cGhvbmVzaW11bGF0b3IgPSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUtfaXBob25lb3MpOwogRU5B
QkxFX0lOU1BFQ1RPUiA9IEVOQUJMRV9JTlNQRUNUT1I7CisKK0VOQUJMRV9JTlNQRUNUT1JfQUxU
RVJOQVRFX0RJU1BBVENIRVJTID0gJChFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRD
SEVSU18kKFBMQVRGT1JNX05BTUUpKTsKK0VOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BB
VENIRVJTX2lwaG9uZW9zID0gRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlM7
CitFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19pcGhvbmVzaW11bGF0b3Ig
PSAkKEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX2lwaG9uZW9zKTsKK0VO
QUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX21hY29zeCA9ICQoRU5BQkxFX0lO
U1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfbWFjb3N4XyQoVEFSR0VUX01BQ19PU19YX1ZF
UlNJT05fTUFKT1IpKQorRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfbWFj
b3N4XzEwODAgPSA7CitFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19tYWNv
c3hfMTA5MCA9IDsKK0VOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX21hY29z
eF8xMDEwMDAgPSBFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUzsKKwogRU5B
QkxFX0lPU19BSVJQTEFZID0gJChFTkFCTEVfSU9TX0FJUlBMQVlfJChQTEFURk9STV9OQU1FKSk7
CiBFTkFCTEVfSU9TX0FJUlBMQVlfaXBob25lb3MgPSBFTkFCTEVfSU9TX0FJUlBMQVk7CiBFTkFC
TEVfSU9TX0FJUlBMQVlfaXBob25lc2ltdWxhdG9yID0gJChFTkFCTEVfSU9TX0FJUlBMQVlfaXBo
b25lb3MpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240217</attachid>
            <date>2014-10-21 12:44:49 -0700</date>
            <delta_ts>2014-10-23 14:02:52 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>even-better.patch</filename>
            <type>text/plain</type>
            <size>116251</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCAwMmUyYjVh
Li45ZDJiMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4
dFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3Bw
CkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQ
QVRDSEVSUykKKyNpbmNsdWRlICJKU0NvbnRleHRSZWZJbnNwZWN0b3JTdXBwb3J0LmgiCisjZW5k
aWYKKwogI2lmIE9TKERBUldJTikKICNpbmNsdWRlIDxtYWNoLW8vZHlsZC5oPgogCkBAIC00MTAs
NCArNDE0LDE5IEBAIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0RGVidWdnZXJSdW5Mb29wKEpTR2xv
YmFsQ29udGV4dFJlZiBjdHgsIENGUnVuTG9vcFJlZiBydW5MCiAgICAgVU5VU0VEX1BBUkFNKHJ1
bkxvb3ApOwogI2VuZGlmCiB9CisjZW5kaWYgLy8gVVNFKENGKQorCisjaWYgRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCitJbnNwZWN0b3I6OkF1Z21lbnRhYmxlSW5zcGVj
dG9yQ29udHJvbGxlciogSlNHbG9iYWxDb250ZXh0R2V0QXVnbWVudGFibGVJbnNwZWN0b3JDb250
cm9sbGVyKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9j
ayhleGVjKTsKKworICAgIHJldHVybiAmZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCk7Cit9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmSW5zcGVjdG9yU3VwcG9ydC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZJbnNwZWN0b3JTdXBwb3J0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA5ZDgyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmSW5zcGVjdG9yU3VwcG9ydC5oCkBAIC0w
LDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEpTQ29udGV4dFJlZkluc3BlY3RvclN1cHBvcnRfaAorI2RlZmluZSBKU0NvbnRl
eHRSZWZJbnNwZWN0b3JTdXBwb3J0X2gKKworI2lmbmRlZiBfX2NwbHVzcGx1cworI2Vycm9yIFJl
cXVpcmVzIEMrKyBTdXBwb3J0LgorI2VuZGlmCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NvbnRleHRSZWZQcml2YXRlLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgQXVn
bWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyOworfQorCitleHRlcm4gIkMiIHsKK0pTX0VYUE9S
VCBJbnNwZWN0b3I6OkF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlciogSlNHbG9iYWxDb250
ZXh0R2V0QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyKEpTR2xvYmFsQ29udGV4dFJlZik7
Cit9CisKKyNlbmRpZiAvLyBKU0NvbnRleHRSZWZJbnNwZWN0b3JTdXBwb3J0X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCmluZGV4IDYyNjhjYjAuLmJmNTI4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE0LTEwLTIwICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdmlkZSBhIHdheSB0
byBoYXZlIGFsdGVybmF0ZSBpbnNwZWN0b3IgYWdlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc5MDEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRlIGEgd2F5IHRvIHVzZSBhbHRlcm5hdGUg
aW5zcGVjdG9yIGFnZW50cyBkZWJ1Z2dpbmcgYSBKU0NvbnRleHQuCisgICAgICAgIEV4cG9zZSBh
IHZlcnkgc2xpbSBwcml2YXRlIEFQSSB0aGF0IGEgY2xpZW50IGNvdWxkIHVzZSB0byBrbm93IHdo
ZW4KKyAgICAgICAgYW4gaW5zcGVjdG9yIGhhcyBjb25uZWN0ZWQvZGlzY29ubmVjdGVkLCBhbmQg
YSB3YXkgdG8gcmVnaXN0ZXIgaXRzCisgICAgICAgIGF1Z21lbnRhdGl2ZSBhZ2VudHMuCisKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBOZXcg
ZmVhdHVyZSBndWFyZC4gTmV3IGZpbGVzLgorCisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5j
cHA6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRHZXRBdWdtZW50YWJsZUluc3BlY3RvckNvbnRy
b2xsZXIpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWZJbnNwZWN0b3JTdXBwb3J0Lmg6IEFk
ZGVkLgorICAgICAgICBBY2Nlc3MgdG8gdGhlIHByaXZhdGUgaW50ZXJmYWNlIGZyb20gYSBKU0Nv
bnRleHQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9u
dGVuZCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL2F1Z21lbnRh
YmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKElu
c3BlY3Rvcjo6QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyOjp+QXVnbWVudGFibGVJbnNw
ZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QXVnbWVudGFibGVJbnNwZWN0
b3JDb250cm9sbGVyOjpjb25uZWN0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9hdWdtZW50YWJs
ZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAg
IChJbnNwZWN0b3I6OkF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudDo6fkF1Z21l
bnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2F1
Z21lbnRhYmxlL0luc3BlY3RvckF1Z21lbnRpbmdBZ2VudC5oOiBBZGRlZC4KKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yQXVnbWVudGluZ0FnZW50OjpJbnNwZWN0b3JBdWdtZW50aW5nQWdl
bnQpOgorICAgICAgICBQcm92aWRlIHRoZSBwcml2YXRlIEFQSXMgYSBjbGllbnQgY291bGQgdXNl
IHRvIGFkZCBhbHRlcm5hdGUgYWdlbnRzLgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9fX2luaXRfXy5weToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0
ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHk6CisgICAgICAgIChnZW5lcmF0ZV9mcm9t
X3NwZWNpZmljYXRpb24pOgorICAgICAgICBOZXcgaW5jbHVkZXMsIGFuZCB1c2UgdGhlIG5ldyBn
ZW5lcmF0b3IuCisgICAgICAgIAorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHk6IEFkZGVkLgor
ICAgICAgICAoQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IpOgorICAg
ICAgICAoQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IuX19pbml0X18p
OgorICAgICAgICAoQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3Iub3V0
cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgKEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVySGVhZGVy
R2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgIChBbHRlcm5hdGVCYWNrZW5kRGlz
cGF0Y2hlckhlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfaGFuZGxlcl9kZWNsYXJhdGlvbnNfZm9y
X2RvbWFpbik6CisgICAgICAgIChBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdlbmVy
YXRvci5fZ2VuZXJhdGVfaGFuZGxlcl9kZWNsYXJhdGlvbl9mb3JfY29tbWFuZCk6CisgICAgICAg
IEdlbmVyYXRlIHRoZSBhYnN0cmFjdCBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciBpbnRlcmZhY2VzLgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5OgorICAgICAgICAoQmFja2VuZERpc3Bh
dGNoZXJIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgKEJhY2tlbmRE
aXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yLl9nZW5lcmF0ZV9hbHRlcm5hdGVfaGFuZGxlcl9mb3J3
YXJkX2RlY2xhcmF0aW9uc19mb3JfZG9tYWlucyk6CisgICAgICAgIChCYWNrZW5kRGlzcGF0Y2hl
ckhlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfYWx0ZXJuYXRlX2hhbmRsZXJfZm9yd2FyZF9kZWNs
YXJhdGlvbnNfZm9yX2RvbWFpbnMuQWx0ZXJuYXRlSW5zcGVjdG9yKToKKyAgICAgICAgRm9yd2Fy
ZCBkZWNsYXJlIGFsdGVybmF0ZSBkaXNwYXRjaGVycywgYW5kIGFsbG93IHNldHRpbmcgYW4gYWx0
ZXJuYXRlIGRpc3BhdGNoZXIgb24gYSBkb21haW4gZGlzcGF0Y2hlci4KKworICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxl
bWVudGF0aW9uLnB5OgorICAgICAgICAoQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdl
bmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAoQmFja2VuZERpc3BhdGNoZXJJbXBs
ZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbl9m
b3JfY29tbWFuZCk6CisgICAgICAgIENoZWNrIGZvciBhbmQgZGlzcGF0Y2ggb24gYW4gQWx0ZXJu
YXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgaWYgdGhlcmUgaXMgb25lIGZvciB0aGlzIGRv
bWFpbi4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yX3Rl
bXBsYXRlcy5weToKKyAgICAgICAgKEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KToKKyAgICAgICAgKEFsdGVybmF0ZUluc3BlY3Rvcik6CisgICAgICAgIFRlbXBsYXRlIGJvaWxl
cnBsYXRlIGZvciBwcmVsdWRlIGFuZCBwb3N0bHVkZS4KKworICAgICAgICAqIGluc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24t
cmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1h
bmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdDoKKyAg
ICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFy
eWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1y
ZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJh
dGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9t
YWluLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFz
ZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0
OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFy
YXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQ6
CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJp
bmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdDoKKyAgICAgICAgUmViYXNlbGluZSB0ZXN0cy4K
KwogMjAxNC0xMC0yMSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEZpeCBnZW5lcmF0b3IgaW1wb3J0aW5nIG9mIHByb3RvY29s
IHR5cGUgImFueSIsIHRyZWF0IGFzIHZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXgg
YmE5Y2ZlZi4uZmFmZjliMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMTIxLDYgKzEy
MSwxNSBAQCBFTkFCTEVfSU5QVVRfVFlQRV9XRUVLID0gJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVL
XyQoUExBVEZPUk1fTkFNRSkpOwogRU5BQkxFX0lOUFVUX1RZUEVfV0VFS19pcGhvbmVvcyA9IEVO
QUJMRV9JTlBVVF9UWVBFX1dFRUs7CiBFTkFCTEVfSU5QVVRfVFlQRV9XRUVLX2lwaG9uZXNpbXVs
YXRvciA9ICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFS19pcGhvbmVvcyk7CiBFTkFCTEVfSU5TUEVD
VE9SID0gRU5BQkxFX0lOU1BFQ1RPUjsKKworRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElT
UEFUQ0hFUlMgPSAkKEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTXyQoUExB
VEZPUk1fTkFNRSkpOworRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfaXBo
b25lb3MgPSBFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUzsKK0VOQUJMRV9J
TlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX2lwaG9uZXNpbXVsYXRvciA9ICQoRU5BQkxF
X0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfaXBob25lb3MpOworRU5BQkxFX0lOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfbWFjb3N4ID0gJChFTkFCTEVfSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSU19tYWNvc3hfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpP
UikpCitFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19tYWNvc3hfMTA4MCA9
IDsKK0VOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX21hY29zeF8xMDkwID0g
OworRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfbWFjb3N4XzEwMTAwMCA9
IEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTOworCiBFTkFCTEVfSU9TX0FJ
UlBMQVkgPSAkKEVOQUJMRV9JT1NfQUlSUExBWV8kKFBMQVRGT1JNX05BTUUpKTsKIEVOQUJMRV9J
T1NfQUlSUExBWV9pcGhvbmVvcyA9IEVOQUJMRV9JT1NfQUlSUExBWTsKIEVOQUJMRV9JT1NfQUlS
UExBWV9pcGhvbmVzaW11bGF0b3IgPSAkKEVOQUJMRV9JT1NfQUlSUExBWV9pcGhvbmVvcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJkOWJhNTcuLjYzY2E5OTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTg1LDYgKzExODUsMTMgQEAKIAkJQTVDRUVFMTQx
ODdGM0JBRDAwRTU1Qzk5IC8qIEluc3BlY3RvckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1Q0VFRTEyMTg3RjNCQUQwMEU1NUM5OSAvKiBJ
bnNwZWN0b3JBZ2VudC5jcHAgKi87IH07CiAJCUE1RDBBMUJCMTg2MjMwMUIwMEM3QjQ5NiAvKiBJ
bnNwZWN0b3JFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTVEMEExQkExODYyMzAxQjAwQzdCNDk2IC8qIEluc3BlY3RvckVudmlyb25t
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTVEMkU2NjUxOTVFMTc0MDAwQTUxOEU3IC8qIEpTQ29udGV4dFJlZkludGVybmFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUQyRTY2NDE5NUUxNzM4
MDBBNTE4RTcgLyogSlNDb250ZXh0UmVmSW50ZXJuYWwuaCAqLzsgfTsKKwkJQTVFQTcwRTcxOUY1
QjEwMTAwOThGNUVDIC8qIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVFQTcwRTQxOUY1QjEwMTAw
OThGNUVDIC8qIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1RUE3MEU4MTlGNUIxMDEwMDk4
RjVFQyAvKiBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RUE3MEU1MTlGNUIxMDEwMDk4
RjVFQyAvKiBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNUVBNzBFOTE5RjVCMTAx
MDA5OEY1RUMgLyogSW5zcGVjdG9yQXVnbWVudGluZ0FnZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUVBNzBFNjE5RjVCMTAxMDA5OEY1RUMgLyog
SW5zcGVjdG9yQXVnbWVudGluZ0FnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVFQTcwRUIxOUY1QjNENTAwOThGNUVDIC8qIGdlbmVyYXRl
X2FsdGVybmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5IGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUVBNzBFQTE5RjVCM0Q1MDA5OEY1RUMg
LyogZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgKi87IH07
CisJCUE1RUE3MEVDMTlGNUIzRUEwMDk4RjVFQyAvKiBnZW5lcmF0ZV9hbHRlcm5hdGVfYmFja2Vu
ZF9kaXNwYXRjaGVyX2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1RUE3MEVBMTlGNUIzRDUwMDk4RjVFQyAvKiBnZW5lcmF0ZV9hbHRlcm5h
dGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNUVBNzBFRTE5RjVCNUM0MDA5OEY1RUMgLyogSlND
b250ZXh0UmVmSW5zcGVjdG9yU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTVFQTcwRUQxOUY1QjVDNDAwOThGNUVDIC8qIEpTQ29udGV4dFJl
Zkluc3BlY3RvclN1cHBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlBNUVBNzEwRTE5RjZERjgxMDA5OEY1RUMgLyogSW5zcGVjdG9yQWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNUVBNzEwRDE5RjZERjgxMDA5OEY1RUMgLyogSW5zcGVjdG9yQWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTVGRDAwNjcxODlBRkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3Vt
ZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NUZEMDA2NTE4OUFGRTlDMDA2MzMyMzEgLyogU2NyaXB0QXJndW1lbnRzLmNwcCAqLzsgfTsKIAkJ
QTVGRDAwNjgxODlBRkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVGRDAwNjYxODlBRkU5QzAwNjMz
MjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE1RkQwMDZEMTg5QjAwQUEwMDYzMzIzMSAvKiBTY3JpcHRDYWxs
RnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTVGRDAwNjkxODlCMDBBOTAwNjMzMjMxIC8qIFNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07CkBA
IC0yODU0LDYgKzI4NjEsMTIgQEAKIAkJQTVDRUVFMTMxODdGM0JBRDAwRTU1Qzk5IC8qIEluc3Bl
Y3RvckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckFn
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1RDBBMUJBMTg2MjMwMUIwMEM3
QjQ5NiAvKiBJbnNwZWN0b3JFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnNwZWN0b3JFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNUQyRTY2NDE5NUUxNzM4MDBBNTE4RTcgLyogSlNDb250ZXh0UmVmSW50ZXJuYWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNDb250ZXh0UmVmSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTVFQTcwRTQxOUY1QjEwMTAwOThGNUVDIC8qIEF1Z21lbnRhYmxlSW5zcGVj
dG9yQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWdtZW50
YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTVFQTcwRTUxOUY1QjEwMTAwOThGNUVDIC8qIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxl
ckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWdtZW50YWJsZUlu
c3BlY3RvckNvbnRyb2xsZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTVFQTcwRTYxOUY1QjEwMTAwOThGNUVDIC8qIEluc3BlY3RvckF1Z21lbnRpbmdBZ2VudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JBdWdtZW50aW5nQWdlbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVFQTcwRUExOUY1QjNENTAwOThGNUVD
IC8qIGdlbmVyYXRlX2FsdGVybmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5ICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tl
bmRfZGlzcGF0Y2hlcl9oZWFkZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1
RUE3MEVEMTlGNUI1QzQwMDk4RjVFQyAvKiBKU0NvbnRleHRSZWZJbnNwZWN0b3JTdXBwb3J0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ29udGV4dFJlZkluc3BlY3RvclN1
cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVFQTcxMEQxOUY2REY4MTAw
OThGNUVDIC8qIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0
Y2hlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVGRDAwNjUxODlBRkU5QzAw
NjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTY3JpcHRBcmd1bWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNUZEMDA2NjE4OUFGRTlDMDA2MzMyMzEgLyogU2NyaXB0QXJndW1lbnRzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEFyZ3VtZW50cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNUZEMDA2OTE4OUIwMEE5MDA2MzMyMzEgLyogU2NyaXB0Q2Fs
bEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdENh
bGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zOTA0LDYgKzM5MTcs
NyBAQAogCQkJCTg2RTNDNjA5MTY3QkFCODcwMDZENzYwQSAvKiBKU0NvbnRleHRJbnRlcm5hbC5o
ICovLAogCQkJCTE0QkQ1QTI5MEEzRTkxRjYwMEJBRjU5QyAvKiBKU0NvbnRleHRSZWYuY3BwICov
LAogCQkJCTE0QkQ1QTJBMEEzRTkxRjYwMEJBRjU5QyAvKiBKU0NvbnRleHRSZWYuaCAqLywKKwkJ
CQlBNUVBNzBFRDE5RjVCNUM0MDA5OEY1RUMgLyogSlNDb250ZXh0UmVmSW5zcGVjdG9yU3VwcG9y
dC5oICovLAogCQkJCUE1RDJFNjY0MTk1RTE3MzgwMEE1MThFNyAvKiBKU0NvbnRleHRSZWZJbnRl
cm5hbC5oICovLAogCQkJCTE0OENEMUQ3MTA4Q0Y5MDIwMDgxNjNDNiAvKiBKU0NvbnRleHRSZWZQ
cml2YXRlLmggKi8sCiAJCQkJQTcyMDI4QjQxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5u
ZXJVdGlscy5jcHAgKi8sCkBAIC00MDExLDYgKzQwMjUsNyBAQAogCQkJCUJDRDIwM0U3MEUxNzE4
RjQwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmx1dC5oICovLAogCQkJCTY1MTRGMjE4MThCM0Ux
NjcwMDk4RkY4QiAvKiBJbml0Qnl0ZWNvZGVzLmFzbSAqLywKIAkJCQlBNTEzRTVDNjE4NUY5NDM2
MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLywKKwkJCQlBNUVBNzEwRDE5RjZE
RjgxMDA5OEY1RUMgLyogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmggKi8s
CiAJCQkJQTUzMjQzOTYxODU2QTQ3NTAwMkVENjkyIC8qIEluc3BlY3RvckJhY2tlbmRDb21tYW5k
cy5qcyAqLywKIAkJCQlBNTMyNDM4MTE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXJzLmNwcCAqLywKIAkJCQlBNTMyNDM4MjE4NTY4MzE3MDAyRUQ2OTIgLyogSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmggKi8sCkBAIC01MTQzLDYgKzUxNTgsNyBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBNTEzRTVDQzE4NUZCOTkyMDA3
RTk1QUQgLyogYWdlbnRzICovLAorCQkJCUE1RUE3MEUzMTlGNUIwRTIwMDk4RjVFQyAvKiBhdWdt
ZW50YWJsZSAqLywKIAkJCQlBNTMyNDM4RDE4NTY5NkNBMDAyRUQ2OTIgLyogcHJvdG9jb2wgKi8s
CiAJCQkJQTVCQTE1RTAxODIzNDA5RDAwQTgyRTY5IC8qIHJlbW90ZSAqLywKIAkJCQlBNTMyNDM4
RTE4NTY5NkNFMDAyRUQ2OTIgLyogc2NyaXB0cyAqLywKQEAgLTUyMjMsNiArNTIzOSwxNiBAQAog
CQkJcGF0aCA9IHJlbW90ZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUE1
RUE3MEUzMTlGNUIwRTIwMDk4RjVFQyAvKiBhdWdtZW50YWJsZSAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTVFQTcwRTQxOUY1QjEwMTAwOThGNUVDIC8q
IEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oICovLAorCQkJCUE1RUE3MEU1MTlGNUIx
MDEwMDk4RjVFQyAvKiBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQuaCAqLywK
KwkJCQlBNUVBNzBFNjE5RjVCMTAxMDA5OEY1RUMgLyogSW5zcGVjdG9yQXVnbWVudGluZ0FnZW50
LmggKi8sCisJCQkpOworCQkJcGF0aCA9IGF1Z21lbnRhYmxlOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIAkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5zICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTUyNDAsNiArNTI2
Niw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUM0NzAzQ0My
MTkyODQ0Q0MwMDEzRkJFQSAvKiBfX2luaXRfXy5weSAqLywKKwkJCQlBNUVBNzBFQTE5RjVCM0Q1
MDA5OEY1RUMgLyogZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIu
cHkgKi8sCiAJCQkJQzQ3MDNDQzMxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX2JhY2tlbmRf
Y29tbWFuZHMucHkgKi8sCiAJCQkJQzQ3MDNDQzQxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRl
X2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgKi8sCiAJCQkJQzQ3MDNDQzUxOTI4NDRDQzAw
MTNGQkVBIC8qIGdlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSAq
LywKQEAgLTUyOTgsNyArNTMyNSw5IEBACiAJCQkJMEY2QjFDQjkxODYxMjQ0QzAwODQ1RDk3IC8q
IEFyaXR5Q2hlY2tNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUEwMDlDMTE4MzFBMjZFMDBD
Rjg3MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RDNCMkM0MTAx
NTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1RUE3
MTBFMTlGNkRGODEwMDk4RjVFQyAvKiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUM0OUZFNEFCMTlBQUM4NjEwMEY0MENFOSAvKiBnZW5l
cmF0ZV9wcm90b2NvbF90eXBlc19oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKKwkJCQlBNUVBNzBF
QzE5RjVCM0VBMDA5OEY1RUMgLyogZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hl
cl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKIAkJCQk2QUQyQ0I0RDE5QjkxNDAxMDAwNjU3MTkg
LyogRGVidWdnZXJFdmFsRW5hYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzQ5RkU0QUMxOUFB
Qzg2MTAwRjQwQ0U5IC8qIGdlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjU4RDNBNTYxOTYzODI2ODAwM0M0NUQ2IC8qIFZNRW50cnlS
ZWNvcmQuaCBpbiBIZWFkZXJzICovLApAQCAtNTQyNyw2ICs1NDU2LDcgQEAKIAkJCQkwRkM3MTJE
RjE3Q0Q4NzdDMDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyQTI4MjVEMDE4MzQxRjJEMDA4N0ZCQTkgLyogRGVsYXllZFJlbGVhc2VT
Y29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERG
R0Fic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVFQTcwRTgxOUY1QjEwMTAwOThG
NUVDIC8qIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTcwNEQ5MDMxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDREOTA0MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjAxNzcx
NDNGQ0QzRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICovLApAQCAt
NTUzMCw2ICs1NTYwLDcgQEAKIAkJCQkwRjRDRUQ1RjE4Q0VBN0FCMDA4MDJGRTAgLyogUG9seW1v
cnBoaWNHZXRCeUlkTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRUUxNzE3OEU3MzAw
NjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZG
RkM5NUMxNEVGOTBBRjAwQzcyNTMyIC8qIERGR1BoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
NUVBNzBFRTE5RjVCNUM0MDA5OEY1RUMgLyogSlNDb250ZXh0UmVmSW5zcGVjdG9yU3VwcG9ydC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4QTk3N0IxNzk3MzhCODAwOURGNzQ0IC8qIERGR1BsYW4u
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkUwRjc1MTZDMURCMEIwMDgyQzVFOCAvKiBERkdQcmVk
aWN0aW9uSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVFMTRFRjkw
QjcwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC01NzMxLDYgKzU3NjIsNyBAQAogCQkJCUJDMThDNDE0MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBKYXZhU2NyaXB0Q29yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTUwRTE2RjVDRDAw
QjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDI5
RDkzMDBFRDIyRDcwMDBCODk2MTkgLyogSklULmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUVBNzBF
OTE5RjVCMTAxMDA5OEY1RUMgLyogSW5zcGVjdG9yQXVnbWVudGluZ0FnZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NkNDRUZERTBGNDEzRjg5MDBGRDdGOUUgLyogSklUQ29kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYwNzc2QkYxNEZGMDAyQjAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9uRWZm
b3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkFGN0VGRTE2NUJBOTFGMDAwQzg0NTUgLyogSklU
RGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTU5NzksNiArNjAxMSw3IEBACiAJCQkJ
MEY5RkM4QzQxNEUxQjYwMDAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGOTgyMDYxMTZCRkUzODMwMDI0MEQwMiAvKiBQcmVjaXNlSnVtcFRh
cmdldHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQ
cml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVFQTcwRTcxOUY1QjEwMTAwOThGNUVD
IC8qIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxOEM0NTAwRTE2RjVDRDAwQjM0NDYwIC8qIFByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk1Q0Q0NTc3MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzQ1MTBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvZmlsZU5vZGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtNjM1Myw2ICs2Mzg2LDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQlDNDlGRTRBOTE5QUFDODNFMDBGNDBDRTkgLyog
Z2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5IGluIFJlc291cmNlcyAqLywKKwkJCQlB
NUVBNzBFQjE5RjVCM0Q1MDA5OEY1RUMgLyogZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlz
cGF0Y2hlcl9oZWFkZXIucHkgaW4gUmVzb3VyY2VzICovLAogCQkJCUE1M0YxQUMwMThDOTBGOEYw
MDcyRUI2RCAvKiBmcmFtZXdvcmsuc2IgaW4gUmVzb3VyY2VzICovLAogCQkJCUM0OUZFNEFBMTlB
QUM4M0UwMEY0MENFOSAvKiBnZW5lcmF0ZV9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5w
eSBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXIuY3BwCmluZGV4IDM0M2Y2NGEuLjlmNWViNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTYxLDYgKzYxLDkgQEAgSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9i
YWxPYmoKICAgICAsIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKG51bGxwdHIpCiAgICAgLCBt
X2luY2x1ZGVOYXRpdmVDYWxsU3RhY2tXaXRoRXhjZXB0aW9ucyh0cnVlKQogICAgICwgbV9pc0F1
dG9tYXRpY0luc3BlY3Rpb24oZmFsc2UpCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVf
RElTUEFUQ0hFUlMpCisgICAgLCBtX2F1Z21lbnRpbmdDbGllbnQobnVsbHB0cikKKyNlbmRpZgog
ewogICAgIGF1dG8gcnVudGltZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVj
dFJ1bnRpbWVBZ2VudD4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIG1fZ2xvYmFsT2Jq
ZWN0KTsKICAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxP
YmplY3RDb25zb2xlQWdlbnQ+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKTsKQEAgLTEw
MSw2ICsxMDQsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNv
bm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwKICAgICBtX2luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShmcm9u
dGVuZENoYW5uZWwpOwogCiAgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KGZyb250ZW5kQ2hhbm5lbCwgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyAgICBpZiAobV9h
dWdtZW50aW5nQ2xpZW50KQorICAgICAgICBtX2F1Z21lbnRpbmdDbGllbnQtPmluc3BlY3RvckNv
bm5lY3RlZCgpOworI2VuZGlmCiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFz
b24pCkBAIC0xMTUsNiArMTIzLDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlCiAgICAgbV9p
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwgPSBudWxscHRyOwogCiAgICAgbV9pc0F1dG9tYXRpY0lu
c3BlY3Rpb24gPSBmYWxzZTsKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BB
VENIRVJTKQorICAgIGlmIChtX2F1Z21lbnRpbmdDbGllbnQpCisgICAgICAgIG1fYXVnbWVudGlu
Z0NsaWVudC0+aW5zcGVjdG9yRGlzY29ubmVjdGVkKCk7CisjZW5kaWYKIH0KIAogdm9pZCBKU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVu
ZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXIuaAppbmRleCA1ZDljZjhjLi5jMjVlNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmgKQEAgLTM0LDYgKzM0LDEwIEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyNpbmNsdWRlICJBdWdtZW50YWJsZUluc3BlY3Rv
ckNvbnRyb2xsZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIENvbnNvbGVD
bGllbnQ7CiBjbGFzcyBFeGVjU3RhdGU7CkBAIC01Miw3ICs1NiwxMiBAQCBjbGFzcyBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWw7CiBjbGFzcyBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ7CiBj
bGFzcyBTY3JpcHRDYWxsU3RhY2s7CiAKLWNsYXNzIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlciBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JFbnZpcm9ubWVudCB7CitjbGFzcyBKU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIgZmluYWwKKyAgICA6IHB1YmxpYyBJbnNwZWN0
b3JFbnZpcm9ubWVudAorI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJT
KQorICAgICwgcHVibGljIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlcgorI2VuZGlmCit7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTcxLDYgKzgw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVwb3J0QVBJRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU1ZhbHVlIGV4Y2VwdGlvbik7CiAKICAgICBKU0M6OkNvbnNvbGVDbGllbnQqIGNv
bnNvbGVDbGllbnQoKSBjb25zdDsKKyAgICBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5JiBpbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9hZ2VudHM7IH0KIAogICAgIHZpcnR1YWwgYm9v
bCBkZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRTY3JpcHRTdGF0ZShKU0M6OkV4
ZWNTdGF0ZSopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTgwLDYgKzkwLDE0
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FsbEluamVjdGVkU2NyaXB0RnVuY3Rp
b24oSlNDOjpFeGVjU3RhdGUqKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZnJvbnRl
bmRJbml0aWFsaXplZCgpIG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5B
VEVfRElTUEFUQ0hFUlMpCisgICAgdmlydHVhbCBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xs
ZXJDbGllbnQqIGF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fYXVnbWVudGluZ0NsaWVudDsgfSAKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KEF1Z21lbnRhYmxlSW5zcGVj
dG9yQ29udHJvbGxlckNsaWVudCogY2xpZW50KSBvdmVycmlkZSB7IG1fYXVnbWVudGluZ0NsaWVu
dCA9IGNsaWVudDsgfQorCisgICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZy
b250ZW5kQ2hhbm5lbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsOyB9CisgICAgdmlydHVhbCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5JiBhZ2VudFJl
Z2lzdHJ5KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9hZ2VudHM7IH0KKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIHZvaWQgYXBwZW5kQVBJQmFja3RyYWNlKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNr
KTsKIApAQCAtOTMsNiArMTExLDEwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyPiBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwogICAgIGJvb2wg
bV9pbmNsdWRlTmF0aXZlQ2FsbFN0YWNrV2l0aEV4Y2VwdGlvbnM7CiAgICAgYm9vbCBtX2lzQXV0
b21hdGljSW5zcGVjdGlvbjsKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BB
VENIRVJTKQorICAgIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCogbV9hdWdt
ZW50aW5nQ2xpZW50OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQXVn
bWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZDMxNTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxl
SW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEF1Z21lbnRhYmxlSW5zcGVjdG9y
Q29udHJvbGxlcl9oCisjZGVmaW5lIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlcl9oCisK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudC5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KKworbmFtZXNw
YWNlIEluc3BlY3RvciB7CisKK2NsYXNzIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlciB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyKCkg
eyB9CisKKyAgICB2aXJ0dWFsIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCog
YXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQoQXVnbWVu
dGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KikgPSAwOworCisgICAgdmlydHVhbCBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIEluc3BlY3RvckFnZW50UmVnaXN0cnkmIGFnZW50UmVnaXN0cnkoKSA9IDA7CisKKyAg
ICBib29sIGNvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuICEhZnJvbnRlbmRDaGFubmVsKCk7IH0K
K307CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNlbmRpZiAvLyAhZGVmaW5lZChBdWdtZW50
YWJsZUluc3BlY3RvckNvbnRyb2xsZXJfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVy
Q2xpZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1
Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmZlZjFjZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJv
bGxlckNsaWVudC5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxl
ckNsaWVudF9oCisjZGVmaW5lIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudF9o
CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworbmFtZXNw
YWNlIEluc3BlY3RvciB7CisKK2NsYXNzIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNs
aWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9s
bGVyQ2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckNvbm5lY3RlZCgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGlzY29ubmVjdGVkKCkgPSAwOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSUykKKworI2VuZGlmIC8vICFkZWZpbmVkKEF1Z21lbnRhYmxlSW5z
cGVjdG9yQ29udHJvbGxlckNsaWVudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9JbnNwZWN0b3JBdWdtZW50aW5nQWdlbnQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvSW5zcGVjdG9yQXVnbWVu
dGluZ0FnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTAyMDA4YQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVu
dGFibGUvSW5zcGVjdG9yQXVnbWVudGluZ0FnZW50LmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5zcGVjdG9y
QXVnbWVudGluZ0FnZW50X2gKKyNkZWZpbmUgSW5zcGVjdG9yQXVnbWVudGluZ0FnZW50X2gKKwor
I2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjaW5jbHVkZSAi
SW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmREaXNw
YXRjaGVycy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFnZW50QmFzZS5o
PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBGcm9udGVuZERpc3BhdGNoZXIsIHR5cGVuYW1lIEJhY2tlbmREaXNw
YXRjaGVyLCB0eXBlbmFtZSBBbHRlcm5hdGVEaXNwYXRjaGVyPgorY2xhc3MgSW5zcGVjdG9yQXVn
bWVudGluZ0FnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSW5zcGVjdG9yQXVnbWVudGluZ0FnZW50KGNv
bnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjp1bmlxdWVfcHRyPEFsdGVybmF0ZURpc3BhdGNo
ZXI+IGFsdGVybmF0ZURpc3BhdGNoZXIpCisgICAgICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKGRv
bWFpbk5hbWUpCisgICAgICAgICwgbV9hbHRlcm5hdGVEaXNwYXRjaGVyKFdURjo6bW92ZShhbHRl
cm5hdGVEaXNwYXRjaGVyKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3Bh
dGNoZXIsIG51bGxwdHIpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZXRBbHRlcm5h
dGVEaXNwYXRjaGVyKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgICAgIG1fYWx0
ZXJuYXRlRGlzcGF0Y2hlci0+c2V0QmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIp
OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV9m
cm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVy
LmNsZWFyKCk7CisgICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+c2V0QmFja2VuZERpc3Bh
dGNoZXIobnVsbHB0cik7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxB
bHRlcm5hdGVEaXNwYXRjaGVyPiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVm
UHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFU
RV9ESVNQQVRDSEVSUykKKworI2VuZGlmIC8vIEluc3BlY3RvckF1Z21lbnRpbmdBZ2VudF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9fX2luaXRfXy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL19faW5pdF9fLnB5CmluZGV4IGJiNWY5N2UuLjg4OWUyOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL19faW5pdF9fLnB5
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL19f
aW5pdF9fLnB5CkBAIC0zLDYgKzMsNyBAQAogZnJvbSBtb2RlbHMgaW1wb3J0ICoKIGZyb20gZ2Vu
ZXJhdG9yIGltcG9ydCAqCiAKK2Zyb20gZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0
Y2hlcl9oZWFkZXIgaW1wb3J0ICoKIGZyb20gZ2VuZXJhdGVfYmFja2VuZF9jb21tYW5kcyBpbXBv
cnQgKgogZnJvbSBnZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyIGltcG9ydCAqCiBm
cm9tIGdlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbiBpbXBvcnQgKgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9hbHRl
cm5hdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwLi4wYWY2M2QzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tl
bmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKQEAgLTAsMCArMSw5MSBAQAorIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgc3RyaW5nCitpbXBvcnQgcmUKK2Zyb20gc3Ry
aW5nIGltcG9ydCBUZW1wbGF0ZQorCitmcm9tIGdlbmVyYXRvciBpbXBvcnQgR2VuZXJhdG9yCitm
cm9tIGdlbmVyYXRvcl90ZW1wbGF0ZXMgaW1wb3J0IEdlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1w
bGF0ZXMKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKKworY2xhc3MgQWx0
ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IoR2VuZXJhdG9yKToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgbW9kZWwsIGlucHV0X2ZpbGVwYXRoKToKKyAgICAgICAgR2VuZXJh
dG9yLl9faW5pdF9fKHNlbGYsIG1vZGVsLCBpbnB1dF9maWxlcGF0aCkKKworICAgIGRlZiBvdXRw
dXRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAnSW5zcGVjdG9yQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJzLmgnCisKKyAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgorICAg
ICAgICBoZWFkZXJzID0gWworICAgICAgICAgICAgJyJJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgi
JywKKyAgICAgICAgICAgICc8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuaD4nLAorICAgICAgICBdCisKKyAgICAgICAgaGVhZGVyX2FyZ3MgPSB7CisgICAgICAgICAg
ICAnaGVhZGVyR3VhcmRTdHJpbmcnOiByZS5zdWIoJ1xXKycsICdfJywgc2VsZi5vdXRwdXRfZmls
ZW5hbWUoKSksCisgICAgICAgICAgICAnaW5jbHVkZXMnOiAnXG4nLmpvaW4oWycjaW5jbHVkZSAn
ICsgaGVhZGVyIGZvciBoZWFkZXIgaW4gaGVhZGVyc10pLAorICAgICAgICB9CisKKyAgICAgICAg
ZG9tYWlucyA9IHNlbGYuZG9tYWluc190b19nZW5lcmF0ZSgpCisgICAgICAgIHNlY3Rpb25zID0g
W10KKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgpKQorICAg
ICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkFsdGVybmF0ZURpc3BhdGNo
ZXJzSGVhZGVyUHJlbHVkZSkuc3Vic3RpdHV0ZShOb25lLCAqKmhlYWRlcl9hcmdzKSkKKyAgICAg
ICAgc2VjdGlvbnMuYXBwZW5kKCdcbicuam9pbihmaWx0ZXIoTm9uZSwgbWFwKHNlbGYuX2dlbmVy
YXRlX2hhbmRsZXJfZGVjbGFyYXRpb25zX2Zvcl9kb21haW4sIGRvbWFpbnMpKSkpCisgICAgICAg
IHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuQWx0ZXJuYXRlRGlzcGF0Y2hlcnNI
ZWFkZXJQb3N0bHVkZSkuc3Vic3RpdHV0ZShOb25lLCAqKmhlYWRlcl9hcmdzKSkKKyAgICAgICAg
cmV0dXJuICdcblxuJy5qb2luKHNlY3Rpb25zKQorCisgICAgZGVmIF9nZW5lcmF0ZV9oYW5kbGVy
X2RlY2xhcmF0aW9uc19mb3JfZG9tYWluKHNlbGYsIGRvbWFpbik6CisgICAgICAgIGlmIG5vdCBk
b21haW4uY29tbWFuZHM6CisgICAgICAgICAgICByZXR1cm4gJycKKworICAgICAgICBjb21tYW5k
X2RlY2xhcmF0aW9ucyA9IFtdCisgICAgICAgIGZvciBjb21tYW5kIGluIGRvbWFpbi5jb21tYW5k
czoKKyAgICAgICAgICAgIGNvbW1hbmRfZGVjbGFyYXRpb25zLmFwcGVuZChzZWxmLl9nZW5lcmF0
ZV9oYW5kbGVyX2RlY2xhcmF0aW9uX2Zvcl9jb21tYW5kKGNvbW1hbmQpKQorCisgICAgICAgIGhh
bmRsZXJfYXJncyA9IHsKKyAgICAgICAgICAgICdkb21haW5OYW1lJzogZG9tYWluLmRvbWFpbl9u
YW1lLAorICAgICAgICAgICAgJ2NvbW1hbmREZWNsYXJhdGlvbnMnOiAnXG4nLmpvaW4oY29tbWFu
ZF9kZWNsYXJhdGlvbnMpLAorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEdlbmVyYXRvci53
cmFwX3dpdGhfZ3VhcmRfZm9yX2RvbWFpbihkb21haW4sIFRlbXBsYXRlKFRlbXBsYXRlcy5BbHRl
cm5hdGVCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckRvbWFpbkhhbmRsZXJJbnRlcmZhY2VEZWNsYXJh
dGlvbikuc3Vic3RpdHV0ZShOb25lLCAqKmhhbmRsZXJfYXJncykpCisKKyAgICBkZWYgX2dlbmVy
YXRlX2hhbmRsZXJfZGVjbGFyYXRpb25fZm9yX2NvbW1hbmQoc2VsZiwgY29tbWFuZCk6CisgICAg
ICAgIGxpbmVzID0gW10KKyAgICAgICAgcGFyYW1ldGVycyA9IFsnbG9uZyBjYWxsSWQnXQorICAg
ICAgICBmb3IgX3BhcmFtZXRlciBpbiBjb21tYW5kLmNhbGxfcGFyYW1ldGVyczoKKyAgICAgICAg
ICAgIHBhcmFtZXRlcnMuYXBwZW5kKCclcyBpbl8lcycgJSAoR2VuZXJhdG9yLnR5cGVfc3RyaW5n
X2Zvcl91bmNoZWNrZWRfZm9ybWFsX2luX3BhcmFtZXRlcihfcGFyYW1ldGVyKSwgX3BhcmFtZXRl
ci5wYXJhbWV0ZXJfbmFtZSkpCisKKyAgICAgICAgY29tbWFuZF9hcmdzID0geworICAgICAgICAg
ICAgJ2NvbW1hbmROYW1lJzogY29tbWFuZC5jb21tYW5kX25hbWUsCisgICAgICAgICAgICAncGFy
YW1ldGVycyc6ICcsICcuam9pbihwYXJhbWV0ZXJzKSwKKyAgICAgICAgfQorICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICB2aXJ0dWFsIHZvaWQgJShjb21tYW5kTmFtZSlzKCUocGFyYW1ldGVycylz
KSA9IDA7JyAlIGNvbW1hbmRfYXJncykKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9iYWNrZW5kX2Rpc3Bh
dGNoZXJfaGVhZGVyLnB5CmluZGV4IGIyZmIwNmMuLmQ4MjE4MzAgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2JhY2tl
bmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5w
eQpAQCAtNjIsMTYgKzYyLDMwIEBAIGNsYXNzIEJhY2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJh
dG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICAndHlwZWRlZnMnOiAnXG4nLmpvaW4oWyd0eXBl
ZGVmICVzICVzOycgJSB0eXBlZGVmIGZvciB0eXBlZGVmIGluIHR5cGVkZWZzXSksCiAgICAgICAg
IH0KIAorICAgICAgICBkb21haW5zID0gc2VsZi5kb21haW5zX3RvX2dlbmVyYXRlKCkKKwogICAg
ICAgICBzZWN0aW9ucyA9IFtdCiAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRl
X2xpY2Vuc2UoKSkKICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5D
cHBIZWFkZXJQcmVsdWRlKS5zdWJzdGl0dXRlKE5vbmUsICoqaGVhZGVyX2FyZ3MpKQotICAgICAg
ICBzZWN0aW9ucy5leHRlbmQobWFwKHNlbGYuX2dlbmVyYXRlX2hhbmRsZXJfZGVjbGFyYXRpb25z
X2Zvcl9kb21haW4sIHNlbGYuZG9tYWluc190b19nZW5lcmF0ZSgpKSkKLSAgICAgICAgc2VjdGlv
bnMuZXh0ZW5kKG1hcChzZWxmLl9nZW5lcmF0ZV9kaXNwYXRjaGVyX2RlY2xhcmF0aW9uc19mb3Jf
ZG9tYWluLCBzZWxmLmRvbWFpbnNfdG9fZ2VuZXJhdGUoKSkpCisgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChzZWxmLl9nZW5lcmF0ZV9hbHRlcm5hdGVfaGFuZGxlcl9mb3J3YXJkX2RlY2xhcmF0aW9u
c19mb3JfZG9tYWlucyhkb21haW5zKSkKKyAgICAgICAgc2VjdGlvbnMuZXh0ZW5kKG1hcChzZWxm
Ll9nZW5lcmF0ZV9oYW5kbGVyX2RlY2xhcmF0aW9uc19mb3JfZG9tYWluLCBkb21haW5zKSkKKyAg
ICAgICAgc2VjdGlvbnMuZXh0ZW5kKG1hcChzZWxmLl9nZW5lcmF0ZV9kaXNwYXRjaGVyX2RlY2xh
cmF0aW9uc19mb3JfZG9tYWluLCBkb21haW5zKSkKICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRl
bXBsYXRlKFRlbXBsYXRlcy5DcHBIZWFkZXJQb3N0bHVkZSkuc3Vic3RpdHV0ZShOb25lLCAqKmhl
YWRlcl9hcmdzKSkKICAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQogCiAgICAg
IyBQcml2YXRlIG1ldGhvZHMuCiAKKyAgICBkZWYgX2dlbmVyYXRlX2FsdGVybmF0ZV9oYW5kbGVy
X2ZvcndhcmRfZGVjbGFyYXRpb25zX2Zvcl9kb21haW5zKHNlbGYsIGRvbWFpbnMpOgorICAgICAg
ICBpZiBub3QgZG9tYWluczoKKyAgICAgICAgICAgIHJldHVybiAnJworCisgICAgICAgIGxpbmVz
ID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCcjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5B
VEVfRElTUEFUQ0hFUlMpJykKKyAgICAgICAgZm9yIGRvbWFpbiBpbiBkb21haW5zOgorICAgICAg
ICAgICAgbGluZXMuYXBwZW5kKEdlbmVyYXRvci53cmFwX3dpdGhfZ3VhcmRfZm9yX2RvbWFpbihk
b21haW4sICdjbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3Ilc0JhY2tlbmREaXNwYXRjaGVyOycgJSBk
b21haW4uZG9tYWluX25hbWUpKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUyknKQorICAgICAgICByZXR1cm4gJ1xu
Jy5qb2luKGxpbmVzKQorCiAgICAgZGVmIF9nZW5lcmF0ZV9oYW5kbGVyX2RlY2xhcmF0aW9uc19m
b3JfZG9tYWluKHNlbGYsIGRvbWFpbik6CiAgICAgICAgIGNsYXNzQ29tcG9uZW50cyA9IFsnY2xh
c3MnXQogICAgICAgICBleHBvcnRNYWNybyA9IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGlu
ZygnZXhwb3J0X21hY3JvJywgTm9uZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9p
bXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2dlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQpp
bmRleCBiZTQ5YTgyLi45N2M3Y2ZlIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1w
bGVtZW50YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5
CkBAIC01Miw5ICs1MiwxNSBAQCBjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9u
R2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICAnPGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaD4nLAogICAgICAgICAgICAgJzx3dGYvdGV4dC9DU3RyaW5nLmg+J10KIAorICAgICAg
ICBzZWNvbmRhcnlfaW5jbHVkZXMgPSBbJyNpbmNsdWRlICVzJyAlIGhlYWRlciBmb3IgaGVhZGVy
IGluIHNlY29uZGFyeV9oZWFkZXJzXQorICAgICAgICBzZWNvbmRhcnlfaW5jbHVkZXMuYXBwZW5k
KCcnKQorICAgICAgICBzZWNvbmRhcnlfaW5jbHVkZXMuYXBwZW5kKCcjaWYgRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpJykKKyAgICAgICAgc2Vjb25kYXJ5X2luY2x1ZGVz
LmFwcGVuZCgnI2luY2x1ZGUgIkluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5o
IicpCisgICAgICAgIHNlY29uZGFyeV9pbmNsdWRlcy5hcHBlbmQoJyNlbmRpZicpCisKICAgICAg
ICAgaGVhZGVyX2FyZ3MgPSB7CiAgICAgICAgICAgICAncHJpbWFyeUluY2x1ZGUnOiAnIkluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVycy5oIicsCi0gICAgICAgICAgICAnc2Vjb25kYXJ5SW5jbHVk
ZXMnOiAiXG4iLmpvaW4oWycjaW5jbHVkZSAlcycgJSBoZWFkZXIgZm9yIGhlYWRlciBpbiBzZWNv
bmRhcnlfaGVhZGVyc10pLAorICAgICAgICAgICAgJ3NlY29uZGFyeUluY2x1ZGVzJzogJ1xuJy5q
b2luKHNlY29uZGFyeV9pbmNsdWRlcyksCiAgICAgICAgIH0KIAogICAgICAgICBzZWN0aW9ucyA9
IFtdCkBAIC0xNjIsNiArMTY4LDcgQEAgY2xhc3MgQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRh
dGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBpbl9wYXJhbWV0ZXJfZGVjbGFyYXRp
b25zID0gW10KICAgICAgICAgb3V0X3BhcmFtZXRlcl9kZWNsYXJhdGlvbnMgPSBbXQogICAgICAg
ICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzID0gW10KKyAgICAgICAgYWx0ZXJuYXRlX2Rpc3Bh
dGNoZXJfbWV0aG9kX3BhcmFtZXRlcnMgPSBbJ2NhbGxJZCddCiAgICAgICAgIG1ldGhvZF9wYXJh
bWV0ZXJzID0gWydlcnJvciddCiAKICAgICAgICAgZm9yIHBhcmFtZXRlciBpbiBjb21tYW5kLmNh
bGxfcGFyYW1ldGVyczoKQEAgLTE4MCw4ICsxODcsMTEgQEAgY2xhc3MgQmFja2VuZERpc3BhdGNo
ZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAgICAgaW5fcGFy
YW1ldGVyX2RlY2xhcmF0aW9ucy5hcHBlbmQoJyAgICAlKHBhcmFtZXRlclR5cGUpcyBpbl8lKHBh
cmFtZXRlck5hbWUpcyA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjolKGtleWVkR2V0TWV0
aG9kKXMocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyTmFtZSlz
IiksICUoc3VjY2Vzc091dFBhcmFtKXMsIHByb3RvY29sRXJyb3JzUHRyKTsnICUgcGFyYW1fYXJn
cykKIAogICAgICAgICAgICAgaWYgcGFyYW1ldGVyLmlzX29wdGlvbmFsOgotICAgICAgICAgICAg
ICAgIG1ldGhvZF9wYXJhbWV0ZXJzLmFwcGVuZCgnJShwYXJhbWV0ZXJOYW1lKXNfdmFsdWVGb3Vu
ZCA/ICZpbl8lKHBhcmFtZXRlck5hbWUpcyA6IG51bGxwdHInICUgcGFyYW1fYXJncykKKyAgICAg
ICAgICAgICAgICBvcHRpb25hbF9pbl9wYXJhbWV0ZXJfc3RyaW5nID0gJyUocGFyYW1ldGVyTmFt
ZSlzX3ZhbHVlRm91bmQgPyAmaW5fJShwYXJhbWV0ZXJOYW1lKXMgOiBudWxscHRyJyAlIHBhcmFt
X2FyZ3MKKyAgICAgICAgICAgICAgICBhbHRlcm5hdGVfZGlzcGF0Y2hlcl9tZXRob2RfcGFyYW1l
dGVycy5hcHBlbmQob3B0aW9uYWxfaW5fcGFyYW1ldGVyX3N0cmluZykKKyAgICAgICAgICAgICAg
ICBtZXRob2RfcGFyYW1ldGVycy5hcHBlbmQob3B0aW9uYWxfaW5fcGFyYW1ldGVyX3N0cmluZykK
ICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYWx0ZXJuYXRlX2Rpc3BhdGNoZXJf
bWV0aG9kX3BhcmFtZXRlcnMuYXBwZW5kKCdpbl8nICsgcGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1l
KQogICAgICAgICAgICAgICAgIG1ldGhvZF9wYXJhbWV0ZXJzLmFwcGVuZCgnaW5fJyArIHBhcmFt
ZXRlci5wYXJhbWV0ZXJfbmFtZSkKIAogICAgICAgICBpZiBjb21tYW5kLmlzX2FzeW5jOgpAQCAt
MjI2LDggKzIzNiw5IEBAIGNsYXNzIEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5l
cmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgICAgICdkb21haW5OYW1lJzogZG9tYWluLmRvbWFp
bl9uYW1lLAogICAgICAgICAgICAgJ2NhbGxiYWNrTmFtZSc6ICclc0NhbGxiYWNrJyAlIHVjZmly
c3QoY29tbWFuZC5jb21tYW5kX25hbWUpLAogICAgICAgICAgICAgJ2NvbW1hbmROYW1lJzogY29t
bWFuZC5jb21tYW5kX25hbWUsCi0gICAgICAgICAgICAnaW5QYXJhbWV0ZXJEZWNsYXJhdGlvbnMn
OiAiXG4iLmpvaW4oaW5fcGFyYW1ldGVyX2RlY2xhcmF0aW9ucyksCi0gICAgICAgICAgICAnaW52
b2NhdGlvblBhcmFtZXRlcnMnOiAiLCAiLmpvaW4obWV0aG9kX3BhcmFtZXRlcnMpCisgICAgICAg
ICAgICAnaW5QYXJhbWV0ZXJEZWNsYXJhdGlvbnMnOiAnXG4nLmpvaW4oaW5fcGFyYW1ldGVyX2Rl
Y2xhcmF0aW9ucyksCisgICAgICAgICAgICAnaW52b2NhdGlvblBhcmFtZXRlcnMnOiAnLCAnLmpv
aW4obWV0aG9kX3BhcmFtZXRlcnMpLAorICAgICAgICAgICAgJ2FsdGVybmF0ZUludm9jYXRpb25Q
YXJhbWV0ZXJzJzogJywgJy5qb2luKGFsdGVybmF0ZV9kaXNwYXRjaGVyX21ldGhvZF9wYXJhbWV0
ZXJzKSwKICAgICAgICAgfQogCiAgICAgICAgIGxpbmVzID0gW10KQEAgLTI0MCw2ICsyNTEsMTQg
QEAgY2xhc3MgQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0
b3IpOgogICAgICAgICBpZiBsZW4oY29tbWFuZC5jYWxsX3BhcmFtZXRlcnMpID4gMDoKICAgICAg
ICAgICAgIGxpbmVzLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuQmFja2VuZERpc3BhdGNoZXJJ
bXBsZW1lbnRhdGlvblByZXBhcmVDb21tYW5kQXJndW1lbnRzKS5zdWJzdGl0dXRlKE5vbmUsICoq
Y29tbWFuZF9hcmdzKSkKIAorICAgICAgICBsaW5lcy5hcHBlbmQoJyNpZiBFTkFCTEUoSU5TUEVD
VE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUyknKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBp
ZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAg
ICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+JShjb21tYW5kTmFtZSlzKCUoYWx0ZXJuYXRlSW52
b2NhdGlvblBhcmFtZXRlcnMpcyk7JyAlIGNvbW1hbmRfYXJncykKKyAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAgICAgIHJldHVybjsnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICB9JykKKyAg
ICAgICAgbGluZXMuYXBwZW5kKCcjZW5kaWYnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJycpCisK
ICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgRXJyb3JTdHJpbmcgZXJyb3I7JykKICAgICAgICAg
bGluZXMuYXBwZW5kKCcgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVj
dG9yT2JqZWN0OjpjcmVhdGUoKTsnKQogICAgICAgICBpZiBjb21tYW5kLmlzX2FzeW5jOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdG9yX3RlbXBsYXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKaW5kZXggNzcwNmMyYi4uZjky
ZDcyNCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CkBAIC05
NSw2ICs5NSwzOSBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsiIiIpCiAjZW5kaWYgLy8gRU5BQkxF
KElOU1BFQ1RPUikKICIiIikKIAorICAgIEFsdGVybmF0ZURpc3BhdGNoZXJzSGVhZGVyUHJlbHVk
ZSA9ICgKKyAgICAiIiIjaWZuZGVmICR7aGVhZGVyR3VhcmRTdHJpbmd9CisjZGVmaW5lICR7aGVh
ZGVyR3VhcmRTdHJpbmd9CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRD
SEVSUykKKworJHtpbmNsdWRlc30KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIEFs
dGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICB2b2lkIHNl
dEJhY2tlbmREaXNwYXRjaGVyKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+
IGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7IH0KKyAgICBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9Citwcml2YXRlOgorICAgIFJlZlB0cjxJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKK307CisiIiIp
CisKKyAgICBBbHRlcm5hdGVEaXNwYXRjaGVyc0hlYWRlclBvc3RsdWRlID0gKAorICAgICIiIn0g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRF
Uk5BVEVfRElTUEFUQ0hFUlMpCisKKyNlbmRpZiAvLyAhZGVmaW5lZCgke2hlYWRlckd1YXJkU3Ry
aW5nfSkiIiIpCisKKyAgICBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckRvbWFpbkhh
bmRsZXJJbnRlcmZhY2VEZWNsYXJhdGlvbiA9ICgKKyAgICAiIiJjbGFzcyBBbHRlcm5hdGVJbnNw
ZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkFsdGVybmF0
ZUluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQorJHtjb21tYW5k
RGVjbGFyYXRpb25zfQorfTsiIiIpCisKICAgICBCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckRvbWFp
bkhhbmRsZXJEZWNsYXJhdGlvbiA9ICgKICAgICAiIiIke2NsYXNzQW5kRXhwb3J0TWFjcm99IElu
c3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgpA
QCAtMTEyLDYgKzE0NSwxMiBAQCAke2NvbW1hbmREZWNsYXJhdGlvbnN9CiBwcml2YXRlOgogICAg
IEluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Okluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiwgSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciopOwogICAgIEluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElT
UEFUQ0hFUlMpCitwdWJsaWM6CisgICAgdm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVy
bmF0ZUluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlz
cGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9
Citwcml2YXRlOgorICAgIEFsdGVybmF0ZUluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlz
cGF0Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRjaGVyOworI2VuZGlmCiB9OyIiIikKIAogICAgIEJh
Y2tlbmREaXNwYXRjaGVySGVhZGVyQXN5bmNDb21tYW5kRGVjbGFyYXRpb24gPSAoCkBAIC0xNzAs
NiArMjA5LDkgQEAgJHtkaXNwYXRjaENhc2VzfQogSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tl
bmREaXNwYXRjaGVyOjpJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3Ike2Rv
bWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKICAgICA6IEluc3BlY3Rv
clN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKQogICAgICwg
bV9hZ2VudChhZ2VudCkKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVS
UykKKyAgICAsIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcihudWxscHRyKQorI2VuZGlmCiB7CiAgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWluKEFTQ0lJTGl0
ZXJhbCgiJHtkb21haW5OYW1lfSIpLCB0aGlzKTsKIH0iIiIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3Rv
Y29sLWJpbmRpbmdzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQppbmRleCAxN2NkZmExLi41
NzU4NjUyIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9j
b2wtYmluZGluZ3MucHkKQEAgLTUwLDYgKzUwLDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogICAg
IGZyb20gbW9kZWxzIGltcG9ydCAqCiAgICAgZnJvbSBnZW5lcmF0b3IgaW1wb3J0ICoKIAorICAg
IGZyb20gZ2VuZXJhdGVfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIgaW1wb3J0
ICoKICAgICBmcm9tIGdlbmVyYXRlX2JhY2tlbmRfY29tbWFuZHMgaW1wb3J0ICoKICAgICBmcm9t
IGdlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIgaW1wb3J0ICoKICAgICBmcm9tIGdl
bmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbiBpbXBvcnQgKgpAQCAtMTE4
LDYgKzExOSw3IEBAIGRlZiBnZW5lcmF0ZV9mcm9tX3NwZWNpZmljYXRpb24ocHJpbWFyeV9zcGVj
aWZpY2F0aW9uX2ZpbGVwYXRoPU5vbmUsCiAgICAgcHJvdG9jb2wucmVzb2x2ZV90eXBlcygpCiAK
ICAgICBnZW5lcmF0b3JzID0gW10KKyAgICBnZW5lcmF0b3JzLmFwcGVuZChBbHRlcm5hdGVCYWNr
ZW5kRGlzcGF0Y2hlckhlYWRlckdlbmVyYXRvcihwcm90b2NvbCwgcHJpbWFyeV9zcGVjaWZpY2F0
aW9uX2ZpbGVwYXRoKSkKICAgICBnZW5lcmF0b3JzLmFwcGVuZChCYWNrZW5kQ29tbWFuZHNHZW5l
cmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCiAgICAgZ2Vu
ZXJhdG9ycy5hcHBlbmQoQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IocHJvdG9jb2ws
IHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCiAgICAgZ2VuZXJhdG9ycy5hcHBlbmQo
QmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihwcm90b2NvbCwgcHJpbWFy
eV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5j
LWF0dHJpYnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29u
LXJlc3VsdAppbmRleCBmMDkxZjllLi5iYTViNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1h
c3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmli
dXRlLmpzb24tcmVzdWx0CkBAIC0xLDMgKzEsNjkgQEAKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0
b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5l
cmF0ZWQgZnJvbSBjb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uCisvLyBieSB0aGUg
c2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUt
aW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisKKyNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2Vu
ZERpc3BhdGNoZXJzX2gKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENI
RVJTKQorCisjaW5jbHVkZSAiSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CisKK25hbWVzcGFjZSBJ
bnNwZWN0b3IgeworCitjbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7
CitwdWJsaWM6CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihQYXNzUmVmUHRyPEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyPiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIg
PSBkaXNwYXRjaGVyOyB9CisgICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQor
cHJpdmF0ZToKKyAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2Vu
ZERpc3BhdGNoZXI7Cit9OworCisKK2NsYXNzIEFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTFN5bmNPcHRp
b25hbFJldHVyblZhbHVlcyhsb25nIGNhbGxJZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0
cmluZyYgaW5fcXVlcnkpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTEFzeW5jT3B0
aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBT
dHJpbmcmIGluX3F1ZXJ5KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxTeW5jKGxv
bmcgY2FsbElkLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMQXN5bmMobG9uZyBjYWxsSWQsIGludCBpbl9k
YXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5KSA9IDA7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2Vu
ZERpc3BhdGNoZXJzX2gpCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVycy5oCisKICMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMu
anMKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KQEAgLTg0LDYgKzE1MCwxMCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdHlwZWRl
ZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9E
SVNQQVRDSEVSUykKK2NsYXNzIEFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI7CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMp
CisKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1
YmxpYzoKICAgICAvLyBOYW1lZCBhZnRlciBwYXJhbWV0ZXIgJ3NjcmVlbkNvbG9yJyB3aGlsZSBn
ZW5lcmF0aW5nIGNvbW1hbmQvZXZlbnQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVl
cy4KQEAgLTEyOSw2ICsxOTksMTIgQEAgcHJpdmF0ZToKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKICAg
ICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9hZ2VudDsKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKK3B1YmxpYzoKKyAgICB2
b2lkIHNldEFsdGVybmF0ZURpc3BhdGNoZXIoQWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNo
ZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9Citwcml2YXRlOgorICAgIEFsdGVybmF0ZUluc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcjsKKyNl
bmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCkBAIC0xNzgsNiArMjU0LDEwIEBA
IHByaXZhdGU6CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRF
X0RJU1BBVENIRVJTKQorI2luY2x1ZGUgIkluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRj
aGVycy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6fkluc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyKCkgeyB9CkBAIC0xOTAsNiArMjcwLDkgQEAgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGUKIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6Okluc3BlY3RvckRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciog
YWdlbnQpCiAgICAgOiBJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcihiYWNr
ZW5kRGlzcGF0Y2hlcikKICAgICAsIG1fYWdlbnQoYWdlbnQpCisjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisgICAgLCBtX2FsdGVybmF0ZURpc3BhdGNoZXIobnVs
bHB0cikKKyNlbmRpZgogewogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlZ2lzdGVyRGlzcGF0
Y2hlckZvckRvbWFpbihBU0NJSUxpdGVyYWwoIkRhdGFiYXNlIiksIHRoaXMpOwogfQpAQCAtMjI0
LDYgKzMwNywxMyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4
ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisgICAg
aWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeworICAgICAgICBtX2FsdGVybmF0ZURpc3BhdGNo
ZXItPmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoY2FsbElkLCBpbl9kYXRhYmFz
ZUlkLCBpbl9xdWVyeSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIEVy
cm9yU3RyaW5nIGVycm9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PFN0cmluZz4+IG91dF9jb2x1bW5OYW1lczsKQEAgLTMwMCw2ICszOTAsMTMgQEAgdm9p
ZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMQXN5bmNPcHRp
b25hbFJldHVyblZhbHVlcyhsb24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIEVOQUJM
RShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorICAgIGlmIChtX2FsdGVybmF0ZURp
c3BhdGNoZXIpIHsKKyAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5leGVjdXRlU1FMQXN5
bmNPcHRpb25hbFJldHVyblZhbHVlcyhjYWxsSWQsIGluX2RhdGFiYXNlSWQsIGluX3F1ZXJ5KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7
CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2s+IGNhbGxi
YWNrID0gYWRvcHRSZWYobmV3IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrKG1fYmFja2Vu
ZERpc3BhdGNoZXIsY2FsbElkKSk7CkBAIC0zMjYsNiArNDIzLDEzIEBAIHZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGNv
bnN0IEluc3BlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
X0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7
CisgICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+ZXhlY3V0ZVNRTFN5bmMoY2FsbElkLCBp
bl9kYXRhYmFzZUlkLCBpbl9xdWVyeSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYK
KwogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJl
c3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IG91dF9jb2x1bW5OYW1lczsKQEAgLTM4NCw2ICs0ODgs
MTMgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FM
QXN5bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3AKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
I2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorICAgIGlmIChtX2Fs
dGVybmF0ZURpc3BhdGNoZXIpIHsKKyAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5leGVj
dXRlU1FMQXN5bmMoY2FsbElkLCBpbl9kYXRhYmFzZUlkLCBpbl9xdWVyeSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAg
ICAgUmVmUHRyPEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVj
dXRlU1FMQXN5bmNDYWxsYmFjaz4gY2FsbGJhY2sgPSBhZG9wdFJlZihuZXcgSW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrKG1f
YmFja2VuZERpc3BhdGNoZXIsY2FsbElkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0
aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCBiYzFlNWY4Li5l
YjY3NjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJh
bWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJu
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTEsMyArMSw2NyBAQAorIyMjIEJlZ2luIEZpbGU6
IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNh
bGx5IGdlbmVyYXRlZCBmcm9tIGNvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFy
YW1ldGVycy5qc29uCisvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisK
KyNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUg
SW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKworI2lmIEVOQUJMRShJTlNQ
RUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjaW5jbHVkZSAiSW5zcGVjdG9yUHJvdG9j
b2xUeXBlcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBBbHRlcm5hdGVJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitwdWJsaWM6CisgICAgdm9pZCBzZXRCYWNrZW5kRGlz
cGF0Y2hlcihQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBkaXNwYXRjaGVy
KSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBkaXNwYXRjaGVyOyB9CisgICAgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
ZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorcHJpdmF0ZToKKyAgICBSZWZQdHI8SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Cit9OworCisKK2NsYXNzIEFsdGVy
bmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRl
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkFsdGVy
bmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+KiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3Ry
aW5nKiBpbl9ub3RlcywgY29uc3QgZG91YmxlKiBpbl90aW1lc3RhbXAsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGluX3ZhbHVlcywgY29uc3QgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JWYWx1ZSogaW5fcGF5bG9hZCwgY29uc3QgaW50KiBpbl9kYXRhYmFzZUlkLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBpbl9zcWxFcnJvciwgY29uc3Qg
U3RyaW5nKiBpbl9zY3JlZW5Db2xvciwgY29uc3QgU3RyaW5nKiBpbl9wcmludENvbG9yKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJ
ZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiBpbl9jb2x1bW5OYW1l
cywgY29uc3QgU3RyaW5nJiBpbl9ub3RlcywgZG91YmxlIGluX3RpbWVzdGFtcCwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgaW5fdmFsdWVzLCBJbnNwZWN0b3I6Oklu
c3BlY3RvclZhbHVlIGluX3BheWxvYWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBp
bl9zY3JlZW5Db2xvciwgY29uc3QgU3RyaW5nJiBpbl9wcmludENvbG9yKSA9IDA7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxU
RVJOQVRFX0RJU1BBVENIRVJTKQorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvckFsdGVybmF0
ZUJhY2tlbmREaXNwYXRjaGVycy5oCisKICMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JCYWNrZW5k
Q29tbWFuZHMuanMKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KQEAgLTgxLDYgKzE0NSwxMCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSUykKK2NsYXNzIEFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXI7CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElT
UEFUQ0hFUlMpCisKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyIHsKIHB1YmxpYzoKICAgICAvLyBOYW1lZCBhZnRlciBwYXJhbWV0ZXIgJ3NjcmVlbkNvbG9y
JyB3aGlsZSBnZW5lcmF0aW5nIGNvbW1hbmQvZXZlbnQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1l
dGVycy4KQEAgLTExMiw2ICsxODAsMTIgQEAgcHJpdmF0ZToKIHByaXZhdGU6CiAgICAgSW5zcGVj
dG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKiwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsK
ICAgICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9hZ2VudDsK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKK3B1YmxpYzoKKyAg
ICB2b2lkIHNldEFsdGVybmF0ZURpc3BhdGNoZXIoQWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3Bh
dGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9Citwcml2YXRlOgorICAgIEFsdGVybmF0ZUlu
c3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcjsK
KyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCkBAIC0xNjEsNiArMjM1LDEw
IEBAIHByaXZhdGU6CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJO
QVRFX0RJU1BBVENIRVJTKQorI2luY2x1ZGUgIkluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVycy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBJbnNwZWN0b3JE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6fkluc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyKCkgeyB9CkBAIC0xNzMsNiArMjUxLDkgQEAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBJbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGUKIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6Okluc3BlY3Rv
ckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciogYWdlbnQpCiAgICAgOiBJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcihi
YWNrZW5kRGlzcGF0Y2hlcikKICAgICAsIG1fYWdlbnQoYWdlbnQpCisjaWYgRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisgICAgLCBtX2FsdGVybmF0ZURpc3BhdGNoZXIo
bnVsbHB0cikKKyNlbmRpZgogewogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlZ2lzdGVyRGlz
cGF0Y2hlckZvckRvbWFpbihBU0NJSUxpdGVyYWwoIkRhdGFiYXNlIiksIHRoaXMpOwogfQpAQCAt
MjE5LDYgKzMwMCwxMyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6
OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSQogICAgICAgICByZXR1cm47
CiAgICAgfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisg
ICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeworICAgICAgICBtX2FsdGVybmF0ZURpc3Bh
dGNoZXItPmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMoY2FsbElkLCBjb2x1bW5OYW1lc192
YWx1ZUZvdW5kID8gJmluX2NvbHVtbk5hbWVzIDogbnVsbHB0ciwgbm90ZXNfdmFsdWVGb3VuZCA/
ICZpbl9ub3RlcyA6IG51bGxwdHIsIHRpbWVzdGFtcF92YWx1ZUZvdW5kID8gJmluX3RpbWVzdGFt
cCA6IG51bGxwdHIsIHZhbHVlc192YWx1ZUZvdW5kID8gJmluX3ZhbHVlcyA6IG51bGxwdHIsIHBh
eWxvYWRfdmFsdWVGb3VuZCA/ICZpbl9wYXlsb2FkIDogbnVsbHB0ciwgZGF0YWJhc2VJZF92YWx1
ZUZvdW5kID8gJmluX2RhdGFiYXNlSWQgOiBudWxscHRyLCBzcWxFcnJvcl92YWx1ZUZvdW5kID8g
JmluX3NxbEVycm9yIDogbnVsbHB0ciwgc2NyZWVuQ29sb3JfdmFsdWVGb3VuZCA/ICZpbl9zY3Jl
ZW5Db2xvciA6IG51bGxwdHIsIHByaW50Q29sb3JfdmFsdWVGb3VuZCA/ICZpbl9wcmludENvbG9y
IDogbnVsbHB0cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIEVycm9y
U3RyaW5nIGVycm9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PFN0cmluZz4+IG91dF9jb2x1bW5OYW1lczsKQEAgLTI3Niw2ICszNjQsMTMgQEAgdm9pZCBJ
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlTm9PcHRpb25hbFBhcmFt
ZXRlcnMobG9uZyBjYWxsSWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIEVOQUJMRShJ
TlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorICAgIGlmIChtX2FsdGVybmF0ZURpc3Bh
dGNoZXIpIHsKKyAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5leGVjdXRlTm9PcHRpb25h
bFBhcmFtZXRlcnMoY2FsbElkLCBpbl9jb2x1bW5OYW1lcywgaW5fbm90ZXMsIGluX3RpbWVzdGFt
cCwgaW5fdmFsdWVzLCBpbl9wYXlsb2FkLCBpbl9kYXRhYmFzZUlkLCBpbl9zcWxFcnJvciwgaW5f
c2NyZWVuQ29sb3IsIGluX3ByaW50Q29sb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmCisKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiByZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBvdXRfY29sdW1uTmFtZXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
ZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdp
dGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CmluZGV4IGUwNzYxZDkuLmM3YTZh
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVz
dWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CkBA
IC0xLDMgKzEsNzcgQEAKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5k
RGlzcGF0Y2hlcnMuaAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9m
IFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBF
RElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBkb21haW5z
LXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJv
dG9jb2wtYmluZGluZ3MucHkKKworI2lmbmRlZiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlz
cGF0Y2hlcnNfaAorI2RlZmluZSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNf
aAorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNpbmNs
dWRlICJJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisK
K2NsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAg
ICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI+IGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7
IH0KKyAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBj
b25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9Citwcml2YXRlOgorICAg
IFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsK
K307CisKKworY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hl
ciA6IHB1YmxpYyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+QWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hl
cigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UxKGxvbmcgY2FsbElkKSA9IDA7
Cit9OworY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciA6
IHB1YmxpYyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+QWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcigp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UxKGxvbmcgY2FsbElkKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTIobG9uZyBjYWxsSWQpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgbG9hZFJlc291cmNlMyhsb25nIGNhbGxJZCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBsb2FkUmVzb3VyY2U0KGxvbmcgY2FsbElkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGxvYWRS
ZXNvdXJjZTUobG9uZyBjYWxsSWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNl
Nihsb25nIGNhbGxJZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2U3KGxvbmcg
Y2FsbElkKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8v
IEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjZW5kaWYgLy8gIWRl
ZmluZWQoSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCisjIyMgRW5kIEZp
bGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisKICMjIyBCZWdpbiBG
aWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTg5LDYgKzE2MywxMSBAQCBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKK2NsYXNzIEFsdGVybmF0
ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBBbHRlcm5hdGVJbnNw
ZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCiBjbGFzcyBJbnNwZWN0b3JOZXR3b3JrMUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNv
dXJjZTEoRXJyb3JTdHJpbmcmKSA9IDA7CkBAIC0xMTgsNiArMTk3LDEyIEBAIHByaXZhdGU6CiBw
cml2YXRlOgogICAgIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9y
OjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyKik7CiAgICAgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIqIG1fYWdlbnQ7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFU
Q0hFUlMpCitwdWJsaWM6CisgICAgdm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0
ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIp
IHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJuYXRlRGlzcGF0Y2hlcjsgfQorcHJpdmF0
ZToKKyAgICBBbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKiBtX2Fs
dGVybmF0ZURpc3BhdGNoZXI7CisjZW5kaWYKIH07CiAKIGNsYXNzIEluc3BlY3Rvck5ldHdvcmsz
QmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JTdXBw
bGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7CkBAIC0xMzUsNiArMjIwLDEyIEBAIHByaXZhdGU6
CiBwcml2YXRlOgogICAgIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIoSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosIEluc3BlY3Rvck5ldHdvcmszQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyKik7CiAgICAgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElT
UEFUQ0hFUlMpCitwdWJsaWM6CisgICAgdm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVy
bmF0ZUluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIqIGFsdGVybmF0ZURpc3BhdGNo
ZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJuYXRlRGlzcGF0Y2hlcjsgfQorcHJp
dmF0ZToKKyAgICBBbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyKiBt
X2FsdGVybmF0ZURpc3BhdGNoZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3Bl
Y3RvcgpAQCAtMTg0LDYgKzI3NSwxMCBAQCBwcml2YXRlOgogI2luY2x1ZGUgPGluc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyNpbmNsdWRlICJJbnNwZWN0
b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAogSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5J
bnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQpAQCAtMTk3LDYg
KzI5Miw5IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4g
SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlCiBJbnNwZWN0b3JOZXR3b3JrMUJhY2tl
bmREaXNwYXRjaGVyOjpJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQogICAgIDogSW5zcGVjdG9yU3VwcGxlbWVu
dGFsQmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCiAgICAgLCBtX2FnZW50KGFn
ZW50KQorI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorICAgICwg
bV9hbHRlcm5hdGVEaXNwYXRjaGVyKG51bGxwdHIpCisjZW5kaWYKIHsKICAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyLT5yZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oQVNDSUlMaXRlcmFsKCJOZXR3
b3JrMSIpLCB0aGlzKTsKIH0KQEAgLTIxMyw2ICszMTEsMTMgQEAgdm9pZCBJbnNwZWN0b3JOZXR3
b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5n
JiBtZXQKIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVz
b3VyY2UxKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQogeworI2lmIEVOQUJM
RShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorICAgIGlmIChtX2FsdGVybmF0ZURp
c3BhdGNoZXIpIHsKKyAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5sb2FkUmVzb3VyY2Ux
KGNhbGxJZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIEVycm9yU3Ry
aW5nIGVycm9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rv
ck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgbV9hZ2VudC0+bG9hZFJlc291cmNlMShlcnJvcik7CkBA
IC0yMjgsNiArMzMzLDkgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVyPiBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGUKIEluc3BlY3Rvck5ldHdv
cmszQmFja2VuZERpc3BhdGNoZXI6Okluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIo
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3JO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCiAgICAgOiBJbnNwZWN0b3JT
dXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKICAgICAsIG1f
YWdlbnQoYWdlbnQpCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMp
CisgICAgLCBtX2FsdGVybmF0ZURpc3BhdGNoZXIobnVsbHB0cikKKyNlbmRpZgogewogICAgIG1f
YmFja2VuZERpc3BhdGNoZXItPnJlZ2lzdGVyRGlzcGF0Y2hlckZvckRvbWFpbihBU0NJSUxpdGVy
YWwoIk5ldHdvcmszIiksIHRoaXMpOwogfQpAQCAtMjY4LDYgKzM3NiwxMyBAQCB2b2lkIEluc3Bl
Y3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25z
dCBTdHJpbmcmIG1ldAogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6
OmxvYWRSZXNvdXJjZTEobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7Cisj
aWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisgICAgaWYgKG1fYWx0
ZXJuYXRlRGlzcGF0Y2hlcikgeworICAgICAgICBtX2FsdGVybmF0ZURpc3BhdGNoZXItPmxvYWRS
ZXNvdXJjZTEoY2FsbElkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAg
RXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0g
SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBtX2FnZW50LT5sb2FkUmVzb3VyY2UxKGVy
cm9yKTsKQEAgLTI3Nyw2ICszOTIsMTMgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmRE
aXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UxKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWMKIAogdm9p
ZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UyKGxvbmcg
Y2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQogeworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
QUxURVJOQVRFX0RJU1BBVENIRVJTKQorICAgIGlmIChtX2FsdGVybmF0ZURpc3BhdGNoZXIpIHsK
KyAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5sb2FkUmVzb3VyY2UyKGNhbGxJZCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIEVycm9yU3RyaW5nIGVycm9yOwog
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCk7CiAgICAgbV9hZ2VudC0+bG9hZFJlc291cmNlMihlcnJvcik7CkBAIC0yODYsNiArNDA4
LDEzIEBAIHZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291
cmNlMihsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjCiAKIHZvaWQgSW5zcGVjdG9yTmV0d29yazNC
YWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVj
dG9yT2JqZWN0JikKIHsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVS
UykKKyAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7CisgICAgICAgIG1fYWx0ZXJuYXRl
RGlzcGF0Y2hlci0+bG9hZFJlc291cmNlMyhjYWxsSWQpOworICAgICAgICByZXR1cm47CisgICAg
fQorI2VuZGlmCisKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiByZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIG1fYWdlbnQt
PmxvYWRSZXNvdXJjZTMoZXJyb3IpOwpAQCAtMjk1LDYgKzQyNCwxMyBAQCB2b2lkIEluc3BlY3Rv
ck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTMobG9uZyBjYWxsSWQsIGNv
bnN0IEluc3BlYwogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6Omxv
YWRSZXNvdXJjZTQobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CisjaWYg
RU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisgICAgaWYgKG1fYWx0ZXJu
YXRlRGlzcGF0Y2hlcikgeworICAgICAgICBtX2FsdGVybmF0ZURpc3BhdGNoZXItPmxvYWRSZXNv
dXJjZTQoY2FsbElkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgRXJy
b3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBtX2FnZW50LT5sb2FkUmVzb3VyY2U0KGVycm9y
KTsKQEAgLTMwNCw2ICs0NDAsMTMgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVyOjpsb2FkUmVzb3VyY2U0KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWMKIAogdm9pZCBJ
bnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U1KGxvbmcgY2Fs
bElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQogeworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxU
RVJOQVRFX0RJU1BBVENIRVJTKQorICAgIGlmIChtX2FsdGVybmF0ZURpc3BhdGNoZXIpIHsKKyAg
ICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5sb2FkUmVzb3VyY2U1KGNhbGxJZCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7CiAgICAgbV9hZ2VudC0+bG9hZFJlc291cmNlNShlcnJvcik7CkBAIC0zMTMsNiArNDU2LDEz
IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNl
NShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjCiAKIHZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNr
ZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNihsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9y
T2JqZWN0JikKIHsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykK
KyAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7CisgICAgICAgIG1fYWx0ZXJuYXRlRGlz
cGF0Y2hlci0+bG9hZFJlc291cmNlNihjYWxsSWQpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2VuZGlmCisKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiByZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIG1fYWdlbnQtPmxv
YWRSZXNvdXJjZTYoZXJyb3IpOwpAQCAtMzIyLDYgKzQ3MiwxMyBAQCB2b2lkIEluc3BlY3Rvck5l
dHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTYobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlYwogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRS
ZXNvdXJjZTcobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CisjaWYgRU5B
QkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisgICAgaWYgKG1fYWx0ZXJuYXRl
RGlzcGF0Y2hlcikgeworICAgICAgICBtX2FsdGVybmF0ZURpc3BhdGNoZXItPmxvYWRSZXNvdXJj
ZTcoY2FsbElkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgRXJyb3JT
dHJpbmcgZXJyb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVj
dG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBtX2FnZW50LT5sb2FkUmVzb3VyY2U3KGVycm9yKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2
ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggY2EzOTJmZC4u
ODNhMGQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1y
ZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAg
LTEsMyArMSw2MiBAQAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVycy5oCisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2Yg
V2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVE
SVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGV2ZW50cy13
aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2Nv
bC1iaW5kaW5ncy5weQorCisjaWZuZGVmIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRj
aGVyc19oCisjZGVmaW5lIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2luY2x1ZGUg
Ikluc3BlY3RvclByb3RvY29sVHlwZXMuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xh
c3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworcHVibGljOgorICAgIHZv
aWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcj4gZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjsgfQor
ICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAgUmVm
UHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworfTsK
KworCisKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5T
UEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3Bl
Y3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0
b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorCiAjIyMgQmVnaW4gRmlsZTogSW5zcGVj
dG9yQmFja2VuZENvbW1hbmRzLmpzCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC04MSw2ICsxNDAsOCBAQCBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKKworCiB9IC8vIG5hbWVz
cGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCkBAIC0xMjgsNiAr
MTg5LDEwIEBAIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyNpbmNsdWRlICJJbnNw
ZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUt
Z3VhcmRzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5q
c29uLXJlc3VsdAppbmRleCA4YTZhMjY1Li5hZTczMDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9t
YWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5z
LXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKQEAgLTEsMyArMSw2OCBAQAorIyMjIEJl
Z2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBh
dXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGdlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJl
LWd1YXJkcy5qc29uCisvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisK
KyNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUg
SW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKworI2lmIEVOQUJMRShJTlNQ
RUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjaW5jbHVkZSAiSW5zcGVjdG9yUHJvdG9j
b2xUeXBlcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBBbHRlcm5hdGVJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitwdWJsaWM6CisgICAgdm9pZCBzZXRCYWNrZW5kRGlz
cGF0Y2hlcihQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBkaXNwYXRjaGVy
KSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBkaXNwYXRjaGVyOyB9CisgICAgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
ZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorcHJpdmF0ZToKKyAgICBSZWZQdHI8SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Cit9OworCisKKyNpZiBQTEFURk9S
TShXRUJfQ09NTUFORFMpCitjbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZShsb25nIGNhbGxJ
ZCkgPSAwOworfTsKKyNlbmRpZiAvLyBQTEFURk9STShXRUJfQ09NTUFORFMpCisKK30gLy8gbmFt
ZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVf
RElTUEFUQ0hFUlMpCisKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBbHRlcm5hdGVCYWNr
ZW5kRGlzcGF0Y2hlcnNfaCkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2Vu
ZERpc3BhdGNoZXJzLmgKKwogIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5k
cy5qcwogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgpAQCAtODQsNiArMTQ5LDEyIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0eXBl
ZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRF
X0RJU1BBVENIRVJTKQorI2lmIFBMQVRGT1JNKFdFQl9DT01NQU5EUykKK2NsYXNzIEFsdGVybmF0
ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI7CisjZW5kaWYgLy8gUExBVEZPUk0o
V0VCX0NPTU1BTkRTKQorI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BB
VENIRVJTKQorCiAjaWYgUExBVEZPUk0oV0VCX0NPTU1BTkRTKQogY2xhc3MgSW5zcGVjdG9yTmV0
d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgpAQCAtMTAzLDYgKzE3NCwx
MiBAQCBwcml2YXRlOgogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVyKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqLCBJbnNwZWN0b3JO
ZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwogICAgIEluc3BlY3Rvck5ldHdvcmsx
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50OworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
QUxURVJOQVRFX0RJU1BBVENIRVJTKQorcHVibGljOgorICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlz
cGF0Y2hlcihBbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKiBhbHRl
cm5hdGVEaXNwYXRjaGVyKSB7IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IGFsdGVybmF0ZURpc3Bh
dGNoZXI7IH0KK3ByaXZhdGU6CisgICAgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRjaGVyOworI2VuZGlmCiB9OwogI2VuZGlmIC8v
IFBMQVRGT1JNKFdFQl9DT01NQU5EUykKIApAQCAtMTUzLDYgKzIzMCwxMCBAQCBwcml2YXRlOgog
I2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVS
UykKKyNpbmNsdWRlICJJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogI2lmIFBMQVRGT1JNKFdFQl9DT01NQU5E
UykKQEAgLTE2OCw2ICsyNDksOSBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXI+IEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZQogSW5zcGVjdG9y
TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0
Y2hlcihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIsIEluc3Bl
Y3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKICAgICA6IEluc3Bl
Y3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKQogICAg
ICwgbV9hZ2VudChhZ2VudCkKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRD
SEVSUykKKyAgICAsIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcihudWxscHRyKQorI2VuZGlmCiB7CiAg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWluKEFTQ0lJ
TGl0ZXJhbCgiTmV0d29yazEiKSwgdGhpcyk7CiB9CkBAIC0xODQsNiArMjY4LDEzIEBAIHZvaWQg
SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQs
IGNvbnN0IFN0cmluZyYgbWV0CiAKIHZvaWQgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0
Y2hlcjo6bG9hZFJlc291cmNlKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQog
eworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorICAgIGlmICht
X2FsdGVybmF0ZURpc3BhdGNoZXIpIHsKKyAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5s
b2FkUmVzb3VyY2UoY2FsbElkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAg
ICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0
ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBtX2FnZW50LT5sb2FkUmVzb3VyY2Uo
ZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVz
dWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0CmluZGV4IDVkOTBm
NWIuLjg3NGU4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29u
LXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQKQEAg
LTEsMyArMSw2MiBAQAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVycy5oCisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2Yg
V2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVE
SVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHNhbWUtdHlw
ZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wt
YmluZGluZ3MucHkKKworI2lmbmRlZiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnNfaAorI2RlZmluZSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorCisj
aWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNpbmNsdWRlICJJ
bnNwZWN0b3JQcm90b2NvbFR5cGVzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNz
IEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICB2b2lk
IHNldEJhY2tlbmREaXNwYXRjaGVyKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI+IGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7IH0KKyAg
ICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9Citwcml2YXRlOgorICAgIFJlZlB0
cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKK307CisK
KworCisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0
b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9y
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKKwogIyMjIEJlZ2luIEZpbGU6IEluc3BlY3Rv
ckJhY2tlbmRDb21tYW5kcy5qcwogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNzUsNiArMTM0LDggQEAgbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCisKKwogfSAvLyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtMTIyLDYgKzE4
MywxMCBAQCB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKICNpbmNsdWRlIDxpbnNwZWN0b3Iv
SW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCisjaWYg
RU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisjaW5jbHVkZSAiSW5zcGVj
dG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5q
c29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKaW5k
ZXggOGNlZjZhOS4uODQ0ODhjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0
dGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24t
cmVzdWx0CkBAIC0xLDMgKzEsNjIgQEAKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JBbHRlcm5h
dGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2
ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8v
IERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJv
bSBzaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbgorLy8gYnkgdGhlIHNjcmlwdDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rv
ci1wcm90b2NvbC1iaW5kaW5ncy5weQorCisjaWZuZGVmIEluc3BlY3RvckFsdGVybmF0ZUJhY2tl
bmREaXNwYXRjaGVyc19oCisjZGVmaW5lIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRj
aGVyc19oCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKwor
I2luY2x1ZGUgIkluc3BlY3RvclByb3RvY29sVHlwZXMuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9y
IHsKKworY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworcHVibGlj
OgorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcj4gZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gZGlzcGF0
Y2hlcjsgfQorICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KK3ByaXZhdGU6
CisgICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOworfTsKKworCisKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2VuZGlmIC8vICFkZWZp
bmVkKEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQorIyMjIEVuZCBGaWxl
OiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorCiAjIyMgQmVnaW4gRmls
ZTogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC03NSw2ICsxMzQsOCBAQCBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKKworCiB9
IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCkBA
IC0xMjIsNiArMTgzLDEwIEBAIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyNpbmNs
dWRlICJJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlh
c2VkLXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1w
cmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdAppbmRleCA0NjBhZWRmLi40YWY1YzJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQKQEAg
LTEsMyArMSw2MiBAQAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVycy5oCisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2Yg
V2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVE
SVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtZGVj
bGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uCisvLyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9y
LXByb3RvY29sLWJpbmRpbmdzLnB5CisKKyNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2Vu
ZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNo
ZXJzX2gKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisj
aW5jbHVkZSAiSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworCitjbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitwdWJsaWM6
CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyPiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBkaXNwYXRj
aGVyOyB9CisgICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorcHJpdmF0ZToK
KyAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNo
ZXI7Cit9OworCisKKworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjZW5kaWYgLy8gIWRlZmlu
ZWQoSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCisjIyMgRW5kIEZpbGU6
IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisKICMjIyBCZWdpbiBGaWxl
OiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTc1LDYgKzEzNCw4IEBAIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAorCisKIH0g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKQEAg
LTEyMiw2ICsxODMsMTAgQEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAjaW5jbHVkZSA8
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorI2luY2x1
ZGUgIkluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5
LXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0
CmluZGV4IDExMzc5ZmUuLmE2NjBkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5
LXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJl
c3VsdApAQCAtMSwzICsxLDYyIEBACisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJzLmgKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVy
c2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBE
TyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20g
dHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJv
dG9jb2wtYmluZGluZ3MucHkKKworI2lmbmRlZiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlz
cGF0Y2hlcnNfaAorI2RlZmluZSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNf
aAorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNpbmNs
dWRlICJJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisK
K2NsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAg
ICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI+IGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7
IH0KKyAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBj
b25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9Citwcml2YXRlOgorICAg
IFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsK
K307CisKKworCisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxF
KElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNlbmRpZiAvLyAhZGVmaW5lZChJ
bnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKKyMjIyBFbmQgRmlsZTogSW5z
cGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKKwogIyMjIEJlZ2luIEZpbGU6IElu
c3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNzgsNiArMTM3LDggQEAgbmFtZXNwYWNl
IEluc3BlY3RvciB7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCisKKwogfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtMTI1
LDYgKzE4NiwxMCBAQCB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKICNpbmNsdWRlIDxpbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisjaW5jbHVkZSAi
SW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCisjZW5kaWYKKwogbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBl
Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0CmluZGV4
IDgyNzE4ODYuLjg4ZGMwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5q
c29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQKQEAg
LTEsMyArMSw2MiBAQAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVycy5oCisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2Yg
V2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVE
SVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtZGVj
bGFyYXRpb24tZW51bS10eXBlLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmlu
ZGluZ3MucHkKKworI2lmbmRlZiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNf
aAorI2RlZmluZSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorCisjaWYg
RU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNpbmNsdWRlICJJbnNw
ZWN0b3JQcm90b2NvbFR5cGVzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIEFs
dGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICB2b2lkIHNl
dEJhY2tlbmREaXNwYXRjaGVyKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+
IGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7IH0KKyAgICBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9Citwcml2YXRlOgorICAgIFJlZlB0cjxJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKK307CisKKwor
CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RP
Ul9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JB
bHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQWx0
ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKKwogIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckJh
Y2tlbmRDb21tYW5kcy5qcwogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNzksNiArMTM4LDggQEAgbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCisKKwogfSAvLyBuYW1lc3BhY2Ug
SW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtMTI2LDYgKzE4Nywx
MCBAQCB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCisjaWYgRU5B
QkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisjaW5jbHVkZSAiSW5zcGVjdG9y
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1y
ZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdAppbmRleCA2ZWUz
MzM1Li5hNTU1ZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29u
LXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdApAQCAt
MSwzICsxLDYyIEBACisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzLmgKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBX
YXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBETyBOT1QgRURJ
VCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNs
YXJhdGlvbi1vYmplY3QtdHlwZS5qc29uCisvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJp
bmRpbmdzLnB5CisKKyNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJz
X2gKKyNkZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKworI2lm
IEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjaW5jbHVkZSAiSW5z
cGVjdG9yUHJvdG9jb2xUeXBlcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBB
bHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitwdWJsaWM6CisgICAgdm9pZCBz
ZXRCYWNrZW5kRGlzcGF0Y2hlcihQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
PiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBkaXNwYXRjaGVyOyB9CisgICAg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorcHJpdmF0ZToKKyAgICBSZWZQdHI8
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Cit9OworCisK
KworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9y
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvckFs
dGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisKICMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JC
YWNrZW5kQ29tbWFuZHMuanMKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTc1LDYgKzEzNCw4IEBAIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAorCisKIH0gLy8gbmFtZXNwYWNl
IEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKQEAgLTEyMiw2ICsxODMs
MTAgQEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIEVO
QUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorI2luY2x1ZGUgIkluc3BlY3Rv
ckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24t
cmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKaW5kZXggNzgw
YTZhZS4uZTA5ZTU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNv
bi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKQEAg
LTEsMyArMSw2MiBAQAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVycy5oCisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2Yg
V2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVE
SVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtcmVx
dWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1i
aW5kaW5ncy5weQorCisjaWZuZGVmIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVy
c19oCisjZGVmaW5lIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2luY2x1ZGUgIklu
c3BlY3RvclByb3RvY29sVHlwZXMuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3Mg
QWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworcHVibGljOgorICAgIHZvaWQg
c2V0QmFja2VuZERpc3BhdGNoZXIoUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cj4gZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjsgfQorICAg
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAgUmVmUHRy
PEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworfTsKKwor
CisKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3Rv
ckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JB
bHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorCiAjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9y
QmFja2VuZENvbW1hbmRzLmpzCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC03OSw2ICsxMzgsOCBAQCBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKKworCiB9IC8vIG5hbWVzcGFj
ZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCkBAIC0xMjYsNiArMTg3
LDEwIEBAIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogI2luY2x1ZGUgPGluc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyNpbmNsdWRlICJJbnNwZWN0
b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IDcwZjdiZTguLjQzNTg3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTQtMTAtMjAgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBQcm92aWRlIGEgd2F5IHRvIGhhdmUgYWx0ZXJuYXRlIGluc3Bl
Y3RvciBhZ2VudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNzkwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIwMTQtMTAtMjAgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZv
ciBBY2Nlc3NpYmlsaXR5IG9iamVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZlYXR1
cmVEZWZpbmVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCmluZGV4IGU4NzM4
ZjIuLmYxMzA1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgK
KysrIGIvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaApAQCAtODIsNiArODIsMTAgQEAK
ICNkZWZpbmUgRU5BQkxFX0lDT05EQVRBQkFTRSAwCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVO
QUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorI2RlZmluZSBFTkFCTEVfSU5T
UEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUyAxCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVO
QUJMRV9MRVRURVJQUkVTUykKICNkZWZpbmUgRU5BQkxFX0xFVFRFUlBSRVNTIDEKICNlbmRpZgpA
QCAtMTkyLDYgKzE5NiwxMCBAQCB0aGUgcHVibGljIGlPUyBTREsuIFdlIHdpbGwgYWxzbyBuZWVk
IHRvIHVwZGF0ZSB0aGUgRmVhdHVyZURlZmluZXMueGNjb25maWcgZmlsZQogI2lmICFkZWZpbmVk
KEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKQogI2RlZmluZSBFTkFCTEVfUkVNT1RFX0lOU1BFQ1RP
UiAxCiAjZW5kaWYKKworI2lmICFkZWZpbmVkKEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQorI2RlZmluZSBFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVS
UyAxCisjZW5kaWYKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX1NNT09USF9TQ1JPTExJ
TkcpCkBAIC00OTUsNiArNTAzLDEwIEBAIHRoZSBwdWJsaWMgaU9TIFNESy4gV2Ugd2lsbCBhbHNv
IG5lZWQgdG8gdXBkYXRlIHRoZSBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBmaWxlCiAjZGVmaW5l
IEVOQUJMRV9JTlNQRUNUT1IgMQogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfSU5TUEVD
VE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKyNkZWZpbmUgRU5BQkxFX0lOU1BFQ1RPUl9BTFRF
Uk5BVEVfRElTUEFUQ0hFUlMgMAorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfSkFWQVND
UklQVF9JMThOX0FQSSkKICNkZWZpbmUgRU5BQkxFX0pBVkFTQ1JJUFRfSTE4Tl9BUEkgMAogI2Vu
ZGlmCkBAIC03NjMsNiArNzc1LDEwIEBAIHRoZSBwdWJsaWMgaU9TIFNESy4gV2Ugd2lsbCBhbHNv
IG5lZWQgdG8gdXBkYXRlIHRoZSBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBmaWxlCiAjZXJyb3Ig
IkVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSByZXF1aXJlcyBFTkFCTEUoSU5TUEVDVE9SKSIKICNl
bmRpZgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpICYmICFF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyNlcnJvciAiRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5B
VEVfRElTUEFUQ0hFUlMpIHJlcXVpcmVzIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSIKKyNlbmRp
ZgorCiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpICYmICFFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogI2Vycm9yICJFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykgcmVxdWlyZXMgRU5BQkxFKFRPVUNI
X0VWRU5UUykiCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkMzQzMTYxLi5hMjMwNWIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMTAtMjAgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29y
YXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQcm92aWRlIGEgd2F5IHRv
IGhhdmUgYWx0ZXJuYXRlIGluc3BlY3RvciBhZ2VudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzkwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWc6CisKIDIwMTQtMTAtMjAgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBVc2Ugc3RkOjp1bmlxdWVfcHRyPD58bWFrZV91bmlxdWU8PiBp
biBQbHVnaW5WaWV3OjpzY2hlZHVsZVJlcXVlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBiYTljZmVmLi5m
YWZmOWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMTIxLDYgKzEyMSwxNSBAQCBFTkFCTEVfSU5QVVRfVFlQ
RV9XRUVLID0gJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLXyQoUExBVEZPUk1fTkFNRSkpOwogRU5B
QkxFX0lOUFVUX1RZUEVfV0VFS19pcGhvbmVvcyA9IEVOQUJMRV9JTlBVVF9UWVBFX1dFRUs7CiBF
TkFCTEVfSU5QVVRfVFlQRV9XRUVLX2lwaG9uZXNpbXVsYXRvciA9ICQoRU5BQkxFX0lOUFVUX1RZ
UEVfV0VFS19pcGhvbmVvcyk7CiBFTkFCTEVfSU5TUEVDVE9SID0gRU5BQkxFX0lOU1BFQ1RPUjsK
KworRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMgPSAkKEVOQUJMRV9JTlNQ
RUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTXyQoUExBVEZPUk1fTkFNRSkpOworRU5BQkxFX0lO
U1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfaXBob25lb3MgPSBFTkFCTEVfSU5TUEVDVE9S
X0FMVEVSTkFURV9ESVNQQVRDSEVSUzsKK0VOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BB
VENIRVJTX2lwaG9uZXNpbXVsYXRvciA9ICQoRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElT
UEFUQ0hFUlNfaXBob25lb3MpOworRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hF
UlNfbWFjb3N4ID0gJChFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19tYWNv
c3hfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpCitFTkFCTEVfSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSU19tYWNvc3hfMTA4MCA9IDsKK0VOQUJMRV9JTlNQRUNUT1JfQUxU
RVJOQVRFX0RJU1BBVENIRVJTX21hY29zeF8xMDkwID0gOworRU5BQkxFX0lOU1BFQ1RPUl9BTFRF
Uk5BVEVfRElTUEFUQ0hFUlNfbWFjb3N4XzEwMTAwMCA9IEVOQUJMRV9JTlNQRUNUT1JfQUxURVJO
QVRFX0RJU1BBVENIRVJTOworCiBFTkFCTEVfSU9TX0FJUlBMQVkgPSAkKEVOQUJMRV9JT1NfQUlS
UExBWV8kKFBMQVRGT1JNX05BTUUpKTsKIEVOQUJMRV9JT1NfQUlSUExBWV9pcGhvbmVvcyA9IEVO
QUJMRV9JT1NfQUlSUExBWTsKIEVOQUJMRV9JT1NfQUlSUExBWV9pcGhvbmVzaW11bGF0b3IgPSAk
KEVOQUJMRV9JT1NfQUlSUExBWV9pcGhvbmVvcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZTg1MWEw
OC4uZmE0YzI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE0LTEwLTIw
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdmlkZSBhIHdheSB0byBoYXZlIGFsdGVybmF0ZSBpbnNwZWN0b3IgYWdlbnRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc5MDEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDE0LTEwLTIwICBBbmR5IEVz
dGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhlIGlPUyBidWlsZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWcKaW5kZXggYmE5Y2ZlZi4uZmFmZjliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAg
LTEyMSw2ICsxMjEsMTUgQEAgRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyA9ICQoRU5BQkxFX0lOUFVU
X1RZUEVfV0VFS18kKFBMQVRGT1JNX05BTUUpKTsKIEVOQUJMRV9JTlBVVF9UWVBFX1dFRUtfaXBo
b25lb3MgPSBFTkFCTEVfSU5QVVRfVFlQRV9XRUVLOwogRU5BQkxFX0lOUFVUX1RZUEVfV0VFS19p
cGhvbmVzaW11bGF0b3IgPSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUtfaXBob25lb3MpOwogRU5B
QkxFX0lOU1BFQ1RPUiA9IEVOQUJMRV9JTlNQRUNUT1I7CisKK0VOQUJMRV9JTlNQRUNUT1JfQUxU
RVJOQVRFX0RJU1BBVENIRVJTID0gJChFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRD
SEVSU18kKFBMQVRGT1JNX05BTUUpKTsKK0VOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BB
VENIRVJTX2lwaG9uZW9zID0gRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlM7
CitFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19pcGhvbmVzaW11bGF0b3Ig
PSAkKEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX2lwaG9uZW9zKTsKK0VO
QUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX21hY29zeCA9ICQoRU5BQkxFX0lO
U1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfbWFjb3N4XyQoVEFSR0VUX01BQ19PU19YX1ZF
UlNJT05fTUFKT1IpKQorRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfbWFj
b3N4XzEwODAgPSA7CitFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19tYWNv
c3hfMTA5MCA9IDsKK0VOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX21hY29z
eF8xMDEwMDAgPSBFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUzsKKwogRU5B
QkxFX0lPU19BSVJQTEFZID0gJChFTkFCTEVfSU9TX0FJUlBMQVlfJChQTEFURk9STV9OQU1FKSk7
CiBFTkFCTEVfSU9TX0FJUlBMQVlfaXBob25lb3MgPSBFTkFCTEVfSU9TX0FJUlBMQVk7CiBFTkFC
TEVfSU9TX0FJUlBMQVlfaXBob25lc2ltdWxhdG9yID0gJChFTkFCTEVfSU9TX0FJUlBMQVlfaXBo
b25lb3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IDQ1OGQ1YjMuLjE0MTA5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxNC0xMC0yMCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFByb3ZpZGUgYSB3YXkgdG8gaGF2ZSBhbHRl
cm5hdGUgaW5zcGVjdG9yIGFnZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM3OTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoK
KwogMjAxNC0xMC0yMCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIHN1cHBvcnQgZm9yIGFjdGlvbiBtZW51cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0Mi9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBiYTljZmVmLi5mYWZm
OWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwpAQCAtMTIxLDYgKzEyMSwxNSBAQCBFTkFCTEVfSU5QVVRfVFlQRV9X
RUVLID0gJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLXyQoUExBVEZPUk1fTkFNRSkpOwogRU5BQkxF
X0lOUFVUX1RZUEVfV0VFS19pcGhvbmVvcyA9IEVOQUJMRV9JTlBVVF9UWVBFX1dFRUs7CiBFTkFC
TEVfSU5QVVRfVFlQRV9XRUVLX2lwaG9uZXNpbXVsYXRvciA9ICQoRU5BQkxFX0lOUFVUX1RZUEVf
V0VFS19pcGhvbmVvcyk7CiBFTkFCTEVfSU5TUEVDVE9SID0gRU5BQkxFX0lOU1BFQ1RPUjsKKwor
RU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMgPSAkKEVOQUJMRV9JTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTXyQoUExBVEZPUk1fTkFNRSkpOworRU5BQkxFX0lOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfaXBob25lb3MgPSBFTkFCTEVfSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSUzsKK0VOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENI
RVJTX2lwaG9uZXNpbXVsYXRvciA9ICQoRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFU
Q0hFUlNfaXBob25lb3MpOworRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNf
bWFjb3N4ID0gJChFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19tYWNvc3hf
JChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpCitFTkFCTEVfSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSU19tYWNvc3hfMTA4MCA9IDsKK0VOQUJMRV9JTlNQRUNUT1JfQUxURVJO
QVRFX0RJU1BBVENIRVJTX21hY29zeF8xMDkwID0gOworRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5B
VEVfRElTUEFUQ0hFUlNfbWFjb3N4XzEwMTAwMCA9IEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRF
X0RJU1BBVENIRVJTOworCiBFTkFCTEVfSU9TX0FJUlBMQVkgPSAkKEVOQUJMRV9JT1NfQUlSUExB
WV8kKFBMQVRGT1JNX05BTUUpKTsKIEVOQUJMRV9JT1NfQUlSUExBWV9pcGhvbmVvcyA9IEVOQUJM
RV9JT1NfQUlSUExBWTsKIEVOQUJMRV9JT1NfQUlSUExBWV9pcGhvbmVzaW11bGF0b3IgPSAkKEVO
QUJMRV9JT1NfQUlSUExBWV9pcGhvbmVvcyk7Cg==
</data>
<flag name="review"
          id="264989"
          type_id="1"
          status="+"
          setter="burg"
    />
          </attachment>
      

    </bug>

</bugzilla>